September 01, 2003

qmailのインストール


※環境は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