Sendmail に代わる次世代の MTA と言われる qmail を導入してみましょう。qmail は sendmail ほどポピュラーではないため、資料なども少ないのですが、マニュアルを読めば何とかなりそうではあります。日本語のホームページもあります。
1.ソースファイルのダウンロードと展開
まず、qmail用のホームディレクトリを作ります。
# mkdir /var/qmail
そして、qmail 用の group と users を作ります。
# 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
最新のソースファイル(2001年8月現在1.03)をダウンロードして、適当なディレクトリ(/usr/local/srcなど)に置いて展開します。また、ローカルタイム表示用のpatchもダウンロードしておきます。そしてソースディレクトリにpatchを移動してpatchを当てます。同時に .frowardをそのまま使うためのdot-forwardもダウンロードしてしておきましょう。
# cd /usr/local/src # tar zxvf qmail-1.03.tar.gz # cp qmail-date-localtime.patch ./qmail-1.03 # cd qmail-1.03 # patch -s -p1 < qmail-date-localtime.patch
そして、make
# make setup check # ./config
さらに次のコマンドを入力します。
# cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root # chmod 644 ~alias/.qmail*
sendmail を削除します。
# rpm -e --nodeps sendmail
mailはデフォルトでは、~/Mailbox に貯まります。そこで、いままでのPOP3と互換性を保つために、リンクを張ります。
例: # ln -s /home/masao/Mailbox /var/spool/mail/masao
これで今までと同じメーラーからPOP3としてメールを受けることができます。また、ホスト名を省略した、ユーザー名@ドメイン名で受信できるように、localsとrcpthostsファイルにドメイン名を書き加えます。
# vi /var/qmail/control/locals ----- . . . fujie.org ----- # cp /var/qmail/control/locals /var/qmail/control/rcpthosts
2.Mail directory
qmail はデフォルトでは、メール形式は従来のMailbox形式で配送されます。しかし、作者も書いているようにセキュリティの面からもMaildir形式が推奨されています。これだとメールが一通毎のファイルになりより安全です。Maildir形式に変えるには2つの方法があります。まず、起動ファイル(後述)を変更する方法で例えば、
# vi /var/qmail/boot/home として ----- qmail-start ./Mailbox splogger qmail を qmail-start ./Maildir/ splogger qmail に変更する。 これを、後述のように、/var/qmail/rc にコピーする。 ----- # cp /var/qmail/boot/home /var/qmail/rc
もうひとつの方法としては、ホームディレクトリに次のような配送ファイルを置きます。
$ cd ~ $ vi .qmail ----- ./Maildir/
いずれにせよ、ホームディレクトリにMaildir(他の名前でも構いません)を置かなくてはなりません。maildirmakeコマンドを利用します。
$ cd ~ $ /var/qmail/bin/maildirmake Maildir
これで、~/Maildir/new にメールが貯まります。
3.Relayの制御
このままだと、host以外から、メールを出そうとすると、reject されてしまいます。そこで、tcpserver を使って、Relayを制御してみます。もちろん、/var/qmail/control/rcpthosts を消去すればどこからでも送信できるようになりますが、spam の踏み台にされてしまい、ORBS にも登録されてしまいます。tcpserverはqmailの作者と同じ人が作ったソフトで、inetdに代わるべきものと言われています。確かにinetdより速く安全のようです。詳しくは http://cr.yp.to/ucspi-tcp.html を参照してください。まずucspi-tcpをダウンロードして、/usr/local/src/に起きます。そしてmakeします。
# cd /usr/local/src # tar zxvf ucspi-tcp-0.88.tar.gz # cd ucspi-tcp-0.88 # make # make setup check
これで、/usr/local/binにtcp*がインストールされます。次に、smtpのアクセスをコントロールする /etc/tcp.smtp.cdb を作成します。最初にルールを/etc/tcp.smtpに記述します。
# cd /etc # vi tcp.smtp ----- 192.168.:allow,RELAYCLIENT="" 210.250.4.:allow,RELAYCLIENT="" 127.0.0.:allow,RELAYCLIENT="" =.wind.ne.jp:allow,RELAYCLIENT="" =.uncle.or.jp:allow,RELAYCLIENT="" =.fujie.org:allow,RELAYCLIENT="" :allow
これは、192.168.*.* と 210.250.4.* さらに、*.wind.ne.jp、*.uncle.or.jp、*.fujie.org からのみ Relay を受け入れるという意味です。これでclientからのメールも受け付けるはずです。さらに、
# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
として /etc/tcp.smtp.cdb を作成します。/etc/tcp.smtpを変更したときは、必ずこのコマンドを実行して、/etc/tcp.smtp.cdbを作り直す必要があります。次に、inetd.conf のsmtpに関する行をコメントアウトします(行頭に#を付けて無効にする)。これは、RedHat Linux 7.1J では不要です(ファイルがない)。最後にtcserverでqmail-smtpを起動できるように、次のような起動スクリプトを /etc/rc.d/rc などに記載します。
# vi /etc/rc.d/rc ----- # tcpserver smtp /usr/local/bin/tcpserver -hp -u 503 -g 502 -x /etc/tcp.smtp.cdb 0 smtp /var/qmail/bin/qmail-smtpd & -----
この場合、503 と 502 は qmaild の UID と GID です。これで次回起動時から有効になります。
4.qmail-pop3d
sendmail + qpopper で動かしていた pop3d も qmail-pop3d に変更し、Maildir に対応させます。まず、checkpassword をインストールします。ここからソースをダウンロードして展開して make します。
# cd /usr/local/src # tar zxvf checkpassword-0.90.tar.gz # cd checkpassword-0.90 # make # make setup check
tcpserver で qmail-pop3d を起動するために、inetd.conf の pop3dの部分をコメントアウトして(なければ不要)、次のようなスクリプトを起動ファイル( /etc/rc.d/rc など)に追加します。
# tcpserver qmail-pop3d /usr/local/bin/tcpserver 0 110 /var/qmail/bin/qmail-popup ns.fujie.org /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir &
5.起動スクリプト
次に、/var/qmail/boot/home (procmail と dot-forward を併用するなら proc+df)を /var/qmail/rc にコピーします。
# cp /var/qmail/boot/home /var/qmail/rc
次に起動スクリプト(RHLなら/etc/rc.d/rc)に次の1行を加えます。
# vi /etc/rc.d/rc ----- csh -cf '/var/qmail/rc &' -----
これで reboot すれば起動されているはずです。ps ax コマンドで確かめられます。