sedmail を qmail に変更

参考URL
http://www.fkimura.com/qmail0.html

まずは、patch をお好みでダウンロード。
qmail-date-localtime.patch と qmailqueue-patch は、ports を使ってインストールする際に指定可能であり
qmail-large-dns.patch は、ports を使ってインストールする際には、デフォルトで反映済み。
よって特別な理由が無ければ、qmail-smtpd-relay-reject のみダウンロードが一般的?

mkdir /tmp/qmail
cd /tmp/qmail
fetch http://www.qmail.org/qmail-smtpd-relay-reject

で、patch を反映して、インストールを行う。

cd /usr/ports/mail/qmail
make patch
cd work/qmail-1.03/
patch -p1 < /tmp/qmail/qmail-smtpd-relay-reject
cd ../..
make && make install && make clean

make patch を実行すると、patch 選択画面が表示されるので、qmail-date-localtime.patch と qmailqueue-patch を反映させる場合は、QMAILQUEUE_PATCH と LOCALTIME_PATCH を選択する。

/var/qmail/control 配下のファイルを作成する。

/var/qmail/configure/config-fast example.jp

make disable-sendmail と make enable-qmail は使えなくなったので、かわりに下記を実行する。

/var/qmail/scripts/enable-qmail

一応、/etc/rc.conf や /etc/mail/mailer.conf の中を確認しておく事。

/usr/local/etc/rc.d/qmail.sh が作成されており、/var/qmail/rc へのシンボリック・リンクとなっている事を確認し
/var/qmail/boot/maildir を /var/qmail/rc にコピーする。

cp /var/qmail/boot/maildir /var/qmail/rc

make buildkernel 時に、sendmailコンパイルされないように、make.conf を修正。

echo 'NO_SENDMAIL=true' >> /etc/make.conf

起動時に、qmail が起動するように、rc.conf を修正。

echo 'qmail_enable="YES"' >> /etc/rc.conf

sendmail を停止して、qmail を起動する。

/etc/rc.d/sendmail forcestop
/usr/local/etc/rc.d/qmail.sh start

rc.conf の設定が正しいか確認を行う為、reboot も行ってみる事。

これから新規に作成するユーザが、Maildir を使うよう修正する。

/var/qmail/bin/maildirmake /usr/share/skel/Maildir
echo './Maildir/' > /usr/share/skel/dot.qmail
chmod 600 /usr/share/skel/dot.qmail

login.conf を修正。

> diff /etc/login.conf.org /etc/login.conf
29c29
<       :setenv=MAIL=/var/mail/$,BLOCKSIZE=K,FTP_PASSIVE_MODE=YES:?
---
>       :setenv=MAIL=/home/$/Maildir/,BLOCKSIZE=K,FTP_PASSIVE_MODE=YES:?

既存ユーザが、Maildir を利用する場合、下記を各ユーザに su して実行。

/var/qmail/bin/maildirmake ~/Maildir
echo ./Maildir/ > ~/.qmail
chmod 600 ~/.qmail

portsqmail-contrib を導入すると、fastforward が使えるようになるので、便利。

cd /usr/ports/mail/qmail-contrib
make && make install && make clean
rm /var/qmail/alias/.qmail-mailer-daemon /var/qmail/alias/.qmail-postmaster /var/qmail/alias/.qmail-root
echo '| /var/qmail/bin/fastforward -p -d /etc/aliases.cdb' > /var/qmail/alias/.qmail-default

これで、root 宛のメールを全て、cooldaemon@gmail.com に転送する為には・・・下記の通り。

echo 'root: cooldaemon@gmail.com' >> /etc/mail/aliases
newaliases

newaliases で /etc/aliases.cdb が生成される。

daemontools で管理する場合

daemontools をインストール。

cd /usr/ports/sysutils/daemontools/
make && make install && make clean

service 用のデリレクトリを作成。

mkdir /var/service

/etc/rc.conf の qmail_enable="YES" を svscan_enable="YES" に書き換え、qmail を停止して svscan を起動。

/usr/local/etc/rc.d/qmail.sh stop
/usr/local/etc/rc.d/svscan.sh start

qmail の service 用のディレクトリを作成。

mkdir /var/qmail/service
mkdir /var/qmail/service/qmail
mkdir /var/qmail/service/qmail/log

起動スクリプトを作成。

> cat /var/qmail/service/qmail/run
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ./Maildir/
> cat /var/qmail/service/qmail/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmails \
/usr/local/bin/multilog t ./main

諸々設定。

chown -R qmails:qmail /var/qmail/service/qmail/log
chmod +t /var/qmail/service/qmail
chmod +x /var/qmail/service/qmail/run
chmod +x /var/qmail/service/qmail/log/run

qmaildaemontools の管理下に置く。

ln -s /var/qmail/service/qmail /var/service/qmail

smtpd も起動してみる

sedmail を qmail に変更すると言う観点では不要だが、仕事で使ったのでメモしておく。
pop3d は、気が向いたら、このエントリに追加するかも・・・今の所、予定なし。

tcpserver をインストールする。

cd /usr/ports/sysutils/ucspi-tcp/
make && make install && make clean

tcpserver が使う、アクセスデータベースを作成。

> cat /etc/tcp.smtp
192.168.XXX.:allow,RELAYCLIENT=""
127.:allow,RELAYCLIENT=""
:allow

IPアドレスは適宜変更する事。

tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

後は、先ほどと同じように・・・

mkdir /var/qmail/service/smtpd
mkdir /var/qmail/service/smtpd/log
> cat /var/qmail/service/smtpd/run
#!/bin/sh
PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin
tcpserver -v -R -H -u 82 -g 81 -x /etc/tcp.smtp.cdb \
0 smtp /var/qmail/bin/qmail-smtpd 2>&1
> cat /var/qmail/service/smtpd/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmails \
/usr/local/bin/multilog t ./main
chown -R qmails:qmail /var/qmail/service/smtpd/log
chmod +t /var/qmail/service/smtpd
chmod +x /var/qmail/service/smtpd/run
chmod +x /var/qmail/service/smtpd/log/run
ln -s /var/qmail/service/smtpd /var/service/smtpd

/var/qmail/service/smtpd/run 内の tcpserver の引数は・・・

-v 全てのメッセージを出力
-R ident プロトコルによる接続元ホスト情報を取得しない
-H 接続元ホスト名を調べない
-u サーバを起動する UID を指定(qmaild の UID を指定)
-g サーバを起動する GID を指定(qmaild のグループ qnofiles の GID を指定)
-x アクセスデータベースを指定