※環境はFreeBSD 4.6.2
メールを使えるようにしたいのでqmailをいれてみた。
以下、いろんなものの盗用(^_^;
◆ディレクトリの作成
$ su
# mkdir /var/qmail
◆ユーザの追加
# pw groupadd nofiles -g 81
# pw useradd alias -g nofiles -d /var/qmail/alias -s /nonexistent -u 81
# pw useradd qmaild -g nofiles -d /var/qmail -s /nonexistent -u 82
# pw useradd qmaill -g nofiles -d /var/qmail -s /nonexistent -u 83
# pw useradd qmailp -g nofiles -d /var/qmail -s /nonexistent -u 84
# pw groupadd qmail
# pw useradd qmailq -g qmail -d /var/qmail -s /nonexistent -u 85
# pw useradd qmailr -g qmail -d /var/qmail -s /nonexistent -u 86
# pw useradd qmails -g qmail -d /var/qmail -s /nonexistent -u 87
◆ダウンロードと解凍
本家サイトを見てみたらqmailは1998年からアップデートされていないみたい。
ううむ。如何にセキュアなツールとはいえそれでいいのだろうか・・・。
# cd /usr/local/src/
# wget ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz
# tar zxvf qmail-1.03.tar.gz
localtimeパッチも落とす
# wget ftp://ftp.nlc.net.au/pub/unix/mail/qmail/qmail-date-localtime.patch
パッチを当てる
# cd qmail-1.03
# patch -p1 < ../qmail-date-localtime.patch
◆インストール
# make setup check
◆メールサーバのFQDNを設定。
/var/qmail/control/meファイル等が作られる。
/var/qmail/control/rcpthostsとかも作ってくれるので便利。
# ./config-fast sakaki.info
Your fully qualified host name is mail.sakaki.info.
Putting mail.sakaki.info into control/me...
Putting sakaki.info into control/defaultdomain...
Putting sakaki.info into control/plusdomain...
Putting mail.sakaki.info into control/locals...
Putting mail.sakaki.info into control/rcpthosts...
Now qmail will refuse to accept SMTP messages except to mail.sakaki.info.
Make sure to change rcpthosts if you add hosts to locals or virtualdomains!
※rcpthostsとlocalsにはlocalhostも追加しておく。
# vi /var/qmail/control/rcpthosts
# vi /var/qmail/control/locals
◆qmailで必要なユーザを作成する。
エラーメールの戻り先等の、必要なメールアドレスを作る。
# cd /var/qmail/alias/
# echo "admin@sakaki.info" > .qmail-postmaster
# echo "admin@sakaki.info" > .qmail-mailer-daemon
# echo "admin@sakaki.info" > .qmail-root
◆sendmailを落とす
下記に変更
# vi /etc/rc.conf
sendmail_enable="NONE"
◆sendmailのプロセスを探して落とす。
# ps -auxw | grep sendmail
# kill PID
◆sendmailを運用している場合はキューを吐き出す。
# /usr/sbin/sendmail -q
◆CGI用にqmailのsendmailラッパーへのシンボリックリンクを作る。
# cd /usr/sbin/
# mv sendmail sendmail.orig
# ln -s /var/qmail/bin/sendmail sendmail
# chmod 000 sendmail.orig
◆qmailを起動する
起動スクリプトをコピーする。
# cd /usr/local/src/qmail-1.03
# cp home /var/qmail/rc
デフォルトだとユーザのホームディレクトリの下に
Mailboxファイルが蓄積される形式なので、
これをMaildir形式に変更する。最後のスラッシュを忘れずに。
# less /var/qmail/rc
#!/bin/sh
# Using splogger to send the log through syslog.
# Using qmail-local to deliver messages to ~/Mailbox by default.
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ./Maildir/ splogger qmail
起動する。
# csh /var/qmail/rc &
◆起動確認
正常に起動したのを確認。
# ps -auxw | grep qmail
qmails 587 0.0 0.7 936 428 p0 S 1:38AM 0:00.11 qmail-send
qmaill 588 0.0 0.8 900 448 p0 S 1:38AM 0:00.01 splogger qmail
root 589 0.0 0.6 900 340 p0 S 1:38AM 0:00.01 qmail-lspawn ./Mailbox
qmailr 590 0.0 0.6 900 348 p0 S 1:38AM 0:00.01 qmail-rspawn
qmailq 591 0.0 0.6 888 376 p0 S 1:38AM 0:00.01 qmail-clean
# less /var/log/maillog
Sep 1 00:00:00 home newsyslog[356]: logfile turned over
Sep 1 01:38:16 home qmail: 1062347896.961267 status: local 0/10 remote 0/20
Sep 1 01:42:27 home qmail: 1062348147.942333 status: exiting
Sep 1 02:13:19 home qmail: 1062349999.320758 status: local 0/10 remote 0/20
※終了するときはqmail-sendをkillすればよい。
◆Maildirディレクトリを作成する。
# su - admin
$ cd
$ /var/qmail/bin/maildirmake ./Maildir/
◆配信テスト
実在しないアドレスにメールを送信して、はね返ってくるのを確認する。
この場合、Fromフィールドは、実行したユーザ名@ドメインとなる。
$ echo To: hogehoge | /var/qmail/bin/qmail-inject
確認
# less /var/log/maillog
ローカルユーザに送信して確認。
Toフィールドにドメイン名は含めない。
$ echo To: admin | /var/qmail/bin/qmail-inject
# less /var/log/maillog
外部に送信して確認。
$ echo To: webmaster@teachat.org | /var/qmail/bin/qmail-inject
# less /var/log/maillog
取りあえずここまでスムーズに完了。
次はtcpserverとdaemontoolsですな・・。
参考サイト
http://www.y-min.or.jp/~nob/qmail/install.html