qmailのインストール
バージョン | qmail 1.03 | |
OS | RedHat 6.2J (Linux 2.2.14-5.0) | |
ホームページ | http://www.qmail.org/
(公式ページ) http://www.jp.qmail.org/ (日本語ページ) |
|
ダウンロード | http://cr.yp.to/qmail.html
(qmail) http://cr.yp.to/ucspi-tcp.html (ucspi-tcp) http://cr.yp.to/checkpwd.html (checkpassword) http://www.geocities.co.jp/SiliconValley/4777/qmail/checkpw/ (checkpw) |
複雑で性能が低くセキュリティホールがなくならないsendmailの代替として使用できるMTAです。シンプル軽量かつ非常に高性能です。
周辺ソフトのインストール
ucspi-tcpをインストールします。
$ tar xvfz ucspi-tcp-0.88.tar.gz $ cd ucspi-tcp-0.88 $ make $ su # make setup check # exit
checkpasswordをインストールします。
$ tar xvfz checkpassword-0.81.tar.gz $ cd checkpassword-0.81 $ make $ su # make setup check # exit
qmailのインストール
$ tar xvfz qmail-1.03.tar.gz $ cd qmail $ su -
インストールディレクトリを作成します。
# mkdir /var/qmail
INSTALL.idsに従ってアカウントを設定します。
# 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
コンパイル・インストールします。
# make setup check
configを実行して設定ファイルをセットします。
# ./config
上のコマンドでうまくいかない場合は以下のように./config-fastコマンドを使用して明示的にFQDNを指定します。
# ./config-fast ark.bitarts.co.jp
qmailでは/etc/aliasesを使いません。
qmail用に最低限のエイリアスを設定します。
# (cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root) # chmod 644 ~alias/.qmail*
こうやって作ったエイリアスファイルに転送先などを書いておきます。転送の場合は頭に&をつけて、&miyamaeなどと書きます。
/var/qmail/boot/homeを/var/qmail/rcにコピーします。
# cp /var/qmail/boot/home /var/qmail/rc
/var/qmail/control/localsにはローカルに配信するドメイン名/ホスト名を記述します。configコマンドでは、メールサーバのホスト名が登録されているので(ここではark.bitarts.co.jp)、必要なものを追加します。(ここではbitarts.co.jpを追加)/var/qmail/control/rcphostsには配送を受け入れるドメイン名/ホスト名を記述します。通常はlocalsと同じ内容になっていれば良いでしょう。
rcphostsに記述された宛先以外へは配送されない設定ですので、このままでは外部にメールを送ることができません。そこで自サイト内からのSMTP接続の時は許可するように設定します。
/var/qmail/control/tcprules.txtを編集します。
127.0.0.1:allow,RELAYCLIENT="" 192.168.1.:allow,RELAYCLIENT="" :allow
このファイルを元にtcprules.datを生成します。
# cd /var/qmail/control/ # tcprules tcprules.dat tcprules.tmp < tcprules.txt
この場合、192.168.1.*のネットワークからの中継は許可し、その他のネットワークからはSMTP接続のみを許可し、中継は禁止します。
sendmail、binmailをシステムから削除する
sendmailをシステムから削除します。まずブートスクリプトから削除します。
# rm /etc/rc.d/rc*/*sendmail
次にsendmailデーモンを停止します。
# kill -STOP プロセスID
sendmailのキュー(/var/spool/mqueue)にメッセージが残っていたら、sendmailのキューをフラッシュします。なくなるまで繰り返します。
# /usr/lib/sendmail -q
sendmailバイナリのsetuidビットを削ります。
# chmod 0 /usr/sbin/sendmail
sendmailのバイナリを移動します。
# mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
sendmailコマンドのラッパーを設定します。
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
binmailをシステムから削除します。
# chmod 0 /bin/mail
maildir形式メールボックスの設定
rcスクリプトはデフォルトでsendmail互換であるmbox形式のメールボックスを使用するようになっていますが、qmailを使うのであればmaildir形式に移行したほうがメリットが大きいです。
/var/qmail/rcのqmail-startの行を以下のように書き換えます。
qmail-start ./Maildir/ splogger qmail
新規にアカウントを作ったときにmaildir形式のメールボックスができるようにします。
# /var/qmail/bin/maildirmake /etc/skel/Maildir # echo ./Maildir/ > /etc/skel/.qmail
qmailを起動するようにする
ブートスクリプト(/etc/rc.d/rc.local)に以下の行を追加します。
# Start qmail csh -cf '/var/qmail/rc &' # Start smtpd /usr/local/bin/tcpserver -x /var/qmail/control/tcprules.dat \ -v -u 7770 -g 2108 0 smtp /var/qmail/bin/qmail-smtpd \ 2>&1 | /var/qmail/bin/splogger smtpd 3 & # Start pop3d /usr/local/bin/tcpserver 0 110 \ /var/qmail/bin/qmail-popup ark.bitarts.co.jp \ /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir &
リブートします。
# reboot
テスト
Telnetで直接SMTPポートに接続してメールを送ってみます。
$ telnet 127.0.0.1 25 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 220 ark.bitarts.co.jp ESMTP helo dude 250 ark.bitarts.co.jp mail <[email protected]> 250 ok rcpt <[email protected]> 250 ok data 354 go ahead Subject: testing This is a test. . 250 ok 966330065 qp 709 quit 221 ark.bitarts.co.jp Connection closed by foreign host.
Telnetで直接POP3ポートに接続してメールを受け取ってみます。
$ telnet 127.0.0.1 110 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. +OK <[email protected]> USER miyamae +OK PASS ****** +OK LIST +OK 1 298 . RETR 1 +OK Return-Path: <[email protected]> Delivered-To: [email protected] Received: (qmail 841 invoked from network); 15 Aug 2000 09:21:05 -0000 Received: from unknown (HELO dude) ([email protected]) by 127.0.0.1 with SMTP; 15 Aug 2000 09:21:05 -0000 Subject: testing This is a test. . QUIT +OK Connection closed by foreign host.
APOP対応にする
ノーマルのPOP3はパスワードを平文で流すので、インターネット上にサーバを置くのであれば、パスワードを暗号化するAPOP対応にするべきです。
qmailのPOP3サーバで使われているcheckpasswordはAPOPに対応していないので、他の認証プログラムを使用します。ここでは「checkpw」というプログラムを使用します。
$ tar xvfz checkpw-0.51.tar.gz $ cd checkpw-0.50 $ su # make setup check
ブートスクリプト(/etc/rc.d/rc.local)を以下のように変更します。
# Start pop3d /usr/local/bin/tcpserver 0 110 \ /var/qmail/bin/qmail-popup ark.bitarts.co.jp \ /bin/checkapoppw /var/qmail/bin/qmail-pop3d Maildir &
リブートします。
# reboot
~/Maildir/.passwordというファイルにパスワードを書いておきます。この時他のユーザーにパスワードファイルを読まれないようにパーミッションに注意します。
$ cd ~/Maildir $ echo YOUR_PASSWORD > .password $ chmod 600 .password