2004年05月31日 月曜日

自宅サーバ設置 その4

基本的なサービスで最後に残っている大物であるメールサーバを設置する。基本的には、qmailのドキュメント通りに進めればよろしい。

インストール前の準備

qmailのインストール前にqmailが使うアカウントを準備する。djbdnsに比べて多いので注意。 (僕も1カ所設定を間違えていたので。) /etc/passwdはvipwで編集すること!

qmail:*:9990:
nofiles:*:9991:
alias:*:9990:9991::0:0::/var/qmail/alias:/bin/true
qmaild:*:9991:9991::0:0::/var/qmail:/bin/true
qmaill:*:9992:9991::0:0::/var/qmail:/bin/true
qmailp:*:9993:9991::0:0::/var/qmail:/bin/true
qmailq:*:9994:9990::0:0::/var/qmail:/bin/true
qmailr:*:9995:9990::0:0::/var/qmail:/bin/true
qmails:*:9996:9990::0:0::/var/qmail:/bin/true

qmailのインストール

qmailのインストール自身は簡単で、DNSで運用したいサーバのMXレコードを設定してある状態にしてからやるといろいろ問題がなくて進めやすい。今回はdjbdns立ち上げ時にMXレコードを登録しておいたので、このまま作業を進める。
今回は広瀬さんが作成しているanti-badmailパッチとFujiwaraさんによるIPv6パッチがあたったものを使用する。
% cvs -d :pserver:anonymous@yatex.org:/qmail co -r v6-anti-badmail qmail
% cd qmail
% mkdir /r/var/qmail
% ln -s /r/var/qmail /var/qmail
% make setup check

各種設定

起動するまでしなければならない(した方がよい)設定を以下に列挙する。
アドレスエイリアスの作成
RFC2142で定義されているDNS/SMTP/HTTP等の問い合わせ用アドレスを生成する。/var/qmail/aliasに.qmail-postmaster、.qmail-hostmaster、.qmail-admin、.qmail-rootなどを作っておけばよい。これらのアドレスの設定は単純に適当なアドレスにforwadingでよい。
sendmailコマンドの置き換え
システム標準のsendmailコマンドをqmailのラッパーコマンドに置き換える。ついでにシステム側でsendmailが起動しないように設定しておくこと。FreeBSDの場合は/usr/sbin/sendmailを/var/qmail/bin/datemailに置き換える。(datemailのシンボリックリンクをsendmailにする訳だ。)
動作定義ファイルの設定
qmailの動作定義ファイル群(/var/qmail/control/*)の設定を行う。今回はその中のlocals、plusdomain、defaultdomain、me、rcpthosts、defaulthostを編集。設定すべき内容に関する説明は制御ファイルのドキュメントを参照。(基本的にはmeを設定すればとりあえず動く。)

起動スクリプトの作成

daemontool用のrunコマンドを作成。sendとsmtpdについてサービス起動スクリプトとログ収拾スクリプトを書く。こんな感じ。

#!/bin/sh
exec env - \
PATH="/var/qmail/bin:/usr/local/ucspi/bin:/usr/local/daemontools/bin:/usr/local/bin:$PATH" \
qmail-start ./Maildir/
#!/bin/sh
exec env - \
PATH="/var/qmail/bin:/usr/local/daemontools/bin:$PATH" \
setuidgid qmaill \
multilog t s1000000 ./main
```bash /var/qmail/smtpd/run
#!/bin/sh
exec env - \
PATH="/var/qmail/bin:/usr/local/bin/UCSPI:/usr/local/bin/DT:$PATH" \
envuidgid qmaild softlimit -d250000 \
tcpserver -vR -c40 -x /var/qmail/smtpd/smtp.cdb -U 0 smtp qmail-smtpd 2>&1
#!/bin/sh
exec  setuidgid qmaill \
multilog t ./main '-*' '+* * status: *' =status

起動

ここまで起動したら、qmailを起動できるようになる。daemontoolを使うので/var/qmai/sendと/var/qmail/smtpdのシンボリックリンクを/serviceに作ればメールサーバが起動する。あとはメールのやりとりをしてうまく動いているか確認してみれば良い。非常にざっくりとした説明で実際の自分の設定とも違うのだが、流れはこんな感じである。