SakamonWeb
New
Tools
Index
Edit
_Mail/qmail
<<qmail の導入>> セキュアで高速なMTAであるqmailのインストールを行う。qmailにはいくつかのパッチが提供されているが、推奨パッチを適用するのであれば、[qmail-1.03|ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz]にrecommended patchを追加した [netqmail-1.06|http://www.qmail.org/netqmail-1.06.tar.gz]を用いるとインストールの手間を軽減できる。 qmalが提供する機能はMTAの基本機能に限られる。実運用ではPOPサービスでのユーザ認証やSMTPサービスの接続制限は必要となってくるため、それぞれ [checkpassword|http://cr.yp.to/checkpwd/checkpassword-0.90.tar.gz]と、[ucspi-tcp(tcpserver)|http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz]を導入して対応する。 <<<事前作業>>> 実行アカウントの作成を行う。安全なMTA運用のために qmail関連のプロセスには root権限を持たない専用のアカウントを用意する。作成するグループ、アカウントは netqmail-1.06/INSTALL.idsで説明されている通りに準備する。 <pre> # groupadd nofiles # useradd -g nofiles -d /var/qmail/alias alias …alias user # useradd -g nofiles -d /var/qmail qmaild …daemon user # useradd -g nofiles -d /var/qmail qmaill …log user # useradd -g nofiles -d /var/qmail qmailp …passwd user # groupadd qmail # useradd -g qmail -d /var/qmail qmailq …queue user # useradd -g qmail -d /var/qmail qmailr …remote user # useradd -g qmail -d /var/qmail qmails …send user </pre> <<<インストール>>> パッケージを取得・展開して、環境に応じてヘッダファイルの修正を行う。パッケージに含まれる error.hは古い glibc向けに作成されているため、必要に応じて修正を行う。ucspi-tcp は提供されているパッチを適用してもよい。インストール先をデフォルトから変更する場合は conf-homeファイルの設定内容を変更する。 <pre> netqmail-1.06 > tar xfz netqmail-1.06.tar.gz > cd netqmail-1.06 > vi conf-qmail …インストール先を変更する場合に修正するファイル。(非推奨) > tar xfz qmail-smtpd-auth-0510.tgz …SMTP AUTH > ./install_smtpd-auth.sh > make # make setup check checkpassword > tar xfz checkpassword-0.90.tar.gz > cd checkpassword-0.90 > vi error.h - extern int errno; + #include <errno.h> > vi conf-home …/var/qmail/bin をインストール先にする - / + /var/qmail > make # make setup check ucspi-tcp > tar xfz ucspi-tcp-0.88.tar.gz > cd ucspi-tcp-0.88 > patch < ../ucspi-tcp-ssl-20050405.patch …ssl通信パッチ patching file error.h > vi conf-home - /usr/local + /usr/local/ucspi-tcp …/usr/local/ucspi-tcp をインストール先にする > make # make setup check </pre> <<<設定>>> 各種制御ファイルの設定を行う。基本設定は パッケージで一緒に提供される config-fastを利用するのが便利。メールドメインを引数にして実行すると、必要最小限の設定ファイルを自動生成してくれる。 <pre> > cd netqmail-1.06 # config-fast mail.domain.name Your fully qualified host name is mail.domain.name Putting mail.domain into control/me... Putting domain.name into control/defaultdomain... Putting domain.name into control/plusdomain... Putting mail.domain.name into control/locals... Putting mail.domain.name into control/rcpthosts... Now qmail will refuse to accept SMTP messages except to mail.domain.name Make sure to change rcpthosts if you add hosts to locals or virtualdomains! </pre> 外部へのメール転送を行うときに、ISPから中継サーバを指定されている場合は smtproutesファイルを生成する。 <pre> # cat > /var/qmail/control/smtproutes cat > smtproutes ... ISPから指定されたSMTPフォワード先(xxx.xxx.xx)を設定 :xxx.xxx.xx </pre> エイリアスの設定を行う。root@、mailer-daemon@、postmaster@宛のメールを管理者メールアドレス(user-accout@)へ転送されるようにしておく。その他転送が必要なアドレスがあればここで一緒に追加しておく。 <pre> # cd /var/qmail/alias # echo "&user-account" > .qmail-root # echo "&root" > .qmail-mailer-daemon # echo "&root" > .qmail-postmaster # echo "&root@ > .qmail-webmaster </pre> ucspi-tcp(tcpserver)の接続制限設定を行う。ローカルホストと、ローカルセグメント(10.0.0.0/24)にある端末からの外部サーバへのメール送信要求を許可(環境変数RELAYCLIENTをクリア)する。 <pre> > cd /var/qmail/smtpd/ # cat > smtp.cfg 127.0.0.1:allow,RELAYCLIENT="" 10.0.0.:allow,RELAYCLIENT="" :allow # /usr/local/bin/tcprules smtp.cdb smtp.tmp < smtp.cfg </pre> ***** 以下、編集素材(メモ)**************** <<パッケージ入手>> 必要なパッケージを入手する |||No.|パッケージ|URL|説明 ||[1|../pkg/qmail/qmail-1.03.tar.gz] |[qmail-1.03.tar.gz|ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz] |http://cr.yp.to/qmail.html|MTA ||[2|../pkg/qmail/netqmail-1.06.tar.gz] |[netqmail-1.06.tar.gz|http://www.qmail.org/netqmail-1.06.tar.gz] |http://qmail.org/|qmailにセキュリティパッチを充てたもの ||[3|../pkg/qmail/ucspi-tcp-0.88.tar.gz] |[ucspi-tcp-0.88.tar.gz|http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz] |http://cr.yp.to/ucspi-tcp.html|tcpserver ||[3a|../pkg/qmail/ucspi-tcp-glibc.patch] |[ucspi-tcp-glibc.patch|http://www.itheart.com/phpgw/ucspi-tcp-glibc.patch] |--|tcpserver のglibcパッチ ||[3b|../pkg/qmail/ucspi-tcp-ssl-20050405.patch.gz] |[uscpi-tcp-ssl.patch|http://www.nrg4u.com/qmail/ucspi-tcp-ssl-20050405.patch.gz] |--|tcpserver のsslパッチ ||[4|../pkg/qmail/checkpassword-0.90.tar.gz] |[checkpassword-0.90.tar.gz|http://cr.yp.to/checkpwd/checkpassword-0.90.tar.gz] |http://cr.yp.to/checkpwd.html|popパスワード認証 ||[5|../pkg/qmail/qmail-vida-0.51.tar.gz] |[qmail-vida-0.51.tar.gz|http://www.emaillab.org/djb/qmail-vida/software/qmail-vida-0.51.tar.gz] |http://qmail-vida.sourceforge.jp/|checkpasswordをAPOP対応化 ||[6|../pkg/qmail/relay-ctrl-3.1.1.tar.gz] |[relay-ctrl-3.1.1.tar.gz|http://untroubled.org/relay-ctrl/relay-ctrl-3.1.1.tar.gz] |http://untroubled.org/relay-ctrl/|POP before SMTP ||[7|../pkg/qmail/daemontools-0.76.tar.gz] |[daemontools-0.76.tar.gz|http://cr.yp.to/daemontools/daemontools-0.76.tar.gz] |http://cr.yp.to/daemontools/install.html|POP before SMTPで利用 ||[8|../pkg/qmail/qmail-smtpd-auth-0510.tgz] |[qmail-smtpd-auth-0510_tgz_bin|http://www.fehcom.de/qmail/auth/qmail-smtpd-auth-0510_tgz.bin] |http://www.fehcom.de/qmail/smtpauth.html|SMTP Auth パッチ <<アカウント作成>> <pre> # groupadd nofiles # useradd -g nofiles -d /var/qmail/alias alias # useradd -g nofiles -d /var/qmail qmaild # useradd -g nofiles -d /var/qmail qmaill # useradd -g nofiles -d /var/qmail qmailp # groupadd qmail # useradd -g qmail -d /var/qmail qmailq # useradd -g qmail -d /var/qmail qmailr # useradd -g qmail -d /var/qmail qmails # groupadd vida # useradd -g vida -d /var/qmail qmailu # useradd -g vida -d /var/qmail authdb # usermod -g vida -d /var/qmail/pop pop # mkdir /var/qmail/pop # chown pop.vida /var/qmail/pop </pre> <<事前準備>> <pre> > tar xfz netqmail-1.06.tar.gz > tar xfz checkpassword-0.90.tar.gz > tar xfz ucspi-tcp-0.88.tar.gz > tar xfz qmail-vida-0.51.tar.gz </pre> <pre> > cd checkpassword-0.90 > vi error.h - extern int errno; + #include <errno.h> </pre> <pre> > cd ucspi-tcp-0.88 > patch -p1 < ../ucspi-tcp-glibc.patch patching file error.h </pre> <pre> // パッケージの展開先の調整 > cd qmail-vida-0.51 > vi Makefile QMAILSRC = ../netqmail-1.06 CHECKPASSWORDSRC = ../checkpassword-0.90 UCSPITCPSRC = ../ucspi-tcp-0.88 // checkpassword が /etc/passwd も確認するようにする > vi src/checkpassword/conf-withpasswd -0 +1 // netqmail 用にパッチを微修正 > vi patch/qmail.patch * 337行目 - void err_authoriz() { err("authorization first"); } + void err_authoriz(arg) char *arg; { err("authorization first"); } * 339行目 - void okay() { puts("+OK \r\n"); flush(); } + void okay(arg) *arg; { puts("+OK \r\n"); flush(); } * 345行目 - okay(); + okay(0); // パッチ > cd qmail-vida-0.51 > make patch > make copy </pre> <<コンパイル&インストール>> <pre> // qmail > cd netqmail-1.06 > make # make setup check // checkpassword > cd checkpassword-0.90 > make # make setup check // tcpserver > cd ucspi-tcp-0.88 > make # make setup check // qmail-vida > cd qmail-vida-0.51/src/vida > make # make setup check </pre> <<設定>> <pre> > cd netqmail-1.06 # config-fast mail.domain.name cat rcpthosts ... SMTPを許可するFROM ドメイン xxxx.xxx.xx yyyy.yyy.yy cat > smtproutes ... 外部のSMTPフォワード先 :xxx.xxx.xxx # cd /var/qmail/alias # echo "&root-user-account" > .qmail-root # echo "&root" > .qmail-mailer-daemon # echo "&root" > .qmail-postmaster # echo "&root" > .qmail-webmaster </pre> <pre> > cd /var/qmail/smtpd/ # cat > smtp.cfg 127.0.0.1:allow,RELAYCLIENT="" nnn.nnn.nnn.:allow,RELAYCLIENT="" :allow # /usr/local/bin/tcprules smtp.cdb smtp.tmp < smtp.cfg </pre> <pre> # /var/qmail/bin/vida-pwdbinit </pre> <<起動>> qmail 起動スクリプト [rc.qmail|../pkg/qmail/rc.qmail] <pre> /var/qmail/boot/home /usr/local/bin/tcpserver -R # IDENTを行わない 0 # ホストを指定しない pop3 # pop3 ポート /var/qmail/bin/qmail-popup # 起動プログラム mail.domain.name # メールドメイン /var/qmail/bin/checkpassword # PWチェック /var/qmail/bin/qmail-pop3d Maildir & # /usr/local/bin/tcpserver -R # IDENTを行わない -u qmaild -g nofiles # qmaild/nofiles 権限で起動 -x /var/qmail/smtpd/smtp.cdb # 接続制御データベース 0 # ホストを指定しない smtp # smtp ポート /var/qmail/bin/qmail-smtpd 2>&1 # 起動プログラム |/var/qmail/bin/splogger smtpd 3 & # ロガー </pre> <<ユーザ環境>> <pre> > cd ~ > /var/qmail/bin/maildirmake Maildir > echo ./Maildir/ > .qmail </pre> <<POP Before SMTP>> <pre> > tar xfz daemontools-0.76.tar.gz > cd admin/daemontools-0.76/ </pre> ヘッダファイルの修正 <pre> > vi src/error.h - extern int errno; + #include <errno.h> </pre> コンパイル&インストール 必要なenvdirコマンドのみをコンパイル&インストールする <pre> > package/compile ... # cp command/envdir /usr/local/bin # chown root.root /usr/local/bin/envdir </pre> <pre> > tar xvfz relay-ctrl-3.1.1.tar.gz > cd relay-ctrl-3.1.1 </pre> インストールパラメータの調整 <pre> > vi conf-bin - /usr/local/bin + /usr/local/relay-ctrl/bin > vi conf-man - /usr/local/man + /usr/local/relay-ctrl/man </pre> <pre> > make # mkdir /usr/local/relay-ctrl/bin # mkdir /usr/local/relay-ctrl/man # ./installer </pre> <pre> # mkdir -p /var/spool/relay-ctrl/allow # chmod 700 /var/spool/relay-ctrl # chmod 777 /var/spool/relay-ctrl/allow # # mkdir /etc/relay-ctrl # echo "/var/spool/relay-ctrl/allow" > /etc/relay-ctrl/RELAY_CTRL_DIR # echo 900 > /etc/relay-ctrl/RELAY_CTRL_EXPIRY # crontab -e */5 * * * * envdir /etc/relay-ctrl relay-ctrl-age </pre> /etc/rc.d/rc.qmail <pre> # POP3 (APOP) echo -n "Starting qmail pop daemon: qmail-pop3d" # if you need to use POP3, set environment 'ALLOWPLAIN' to '' env - ALLOWPLAIN='' PATH='/var/qmail/bin:/usr/local/bin:/usr/bin:/bin' \ envdir /etc/relay-ctrl relay-ctrl-chdir \ tcpserver -R 0 pop3 qmail-popup sakamoto.fam.cx \ checkpassword relay-ctrl-allow qmail-pop3d Maildir & echo # SMTP echo -n "Starting qmail smtp daemon: qmail-smtpd" envdir /etc/relay-ctrl relay-ctrl-chdir \ tcpserver -R -u qmaild -g nofiles 0 smtp \ relay-ctrl-check /var/qmail/bin/qmail-smtpd \ 2>&1 | /var/qmail/bin/splogger smtpd 3 & echo </pre> /usr/local/courier-imap/bin/imapd-relay-ctrl-allow <pre> #!/bin/sh export USER=${AUTHENTICATED} /usr/local/bin/relay-ctrl-allow /usr/local/courier-imap/bin/imapd $1 </pre> /usr/local/courier-imap/sbin/imapd <pre> ... /usr/local/courier-imap/sbin/courierlogger -pid=$PIDFILE -start $LOGGEROPTS \ /usr/local/bin/envdir /etc/relay-ctrl /usr/local/bin/relay-ctrl-chdir \ ★追加 ${exec_prefix}/sbin/couriertcpd -address=$ADDRESS \ -maxprocs=$MAXDAEMONS -maxperip=$MAXPERIP \ $TCPDOPTS \ $PORT ${exec_prefix}/libexec/courier/imaplogin \ /usr/local/courier-imap/bin/imapd-relay-ctrl-allow ${MAILDIRPATH}" ★修正 </pre> <<SMTP Auth>> <pre> > tar xfz netqmail-1.06.tar.gz > cd netqmail-1.06/ > tar xfz qmail-smtpd-auth-0510.tgz > ./install_smtpd-auth.sh > make # make setup check </pre>
Sign:
freeze
sage
Attachment
New:
Sign:
Rename
Title:
Sign: