
Postfix
仕事では実は使ったことはないけど、何度も検証・評価した経験があるPostfix。sendmailはわかるとして、意外とqmailの経験も長い。
そんなほげおのMTAに対するイメージ↓
sendmail → 堅物、シンプル(単体のbinaryとconfig)、sendmail.cfを直接(ry

qmail → 変わり者、軽快(軽いbinaryとconfig)、The big qmail picturesとのにらめっこ

postfix → 優等生、基本設定が意外と難解(今回はココではまった・・・)

さて、Postfixの基本設定をまとめておく。ちなみに環境はUbuntu
$ sudo apt-get install postfix qpopper
$ cd /etc/postfix
$ sudo cp -p main.cf main.cf.default
$ sudo vim main.cf
--
mynetworksにSMTPクライアントのアドレスを追記
(例)mynetworks = 127.0.0.0/8, 172.20.0.0/24
home_mailboxにMailboxかMaildirを追記
inet_interfacesにallなどと記入。loopback-onlyとかだとNG。
main.cfの各設定は、このサイトを参考にしました。
注意事項としては、main.cfの設定変更後にpostfixに、設定の再読み込みか再起動をさせるのだが、inet_interfacesの設定変更後は、postfixを再起動させなければならない点に注意。私はこれにはまりました。
▼設定の再読み込み
$ sudo postfix reload
▼再起動
$ sudo postfix stop && sudo postfix start
▼設定変更後の再起動/再読み込み/送受信テストを行うときは、ログを参照しておきましょう。
$ tail -f /var/log/mail.log
▼また、postfixがTCP25番ポートで待ち受けているかどうかも、必ず確認すること。
$ netstat -ant | grep :25
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
(2008.7.31追記)
Postfixのmain.cfのhome_mailboxと、qpopperが取りにいくMailboxのPathがマッチしていなかったために、POP3でメールが取れないという状況でしたので、修正します。
正しくは、以下の2点をマッチングさせる必要があります。
- qpopperは各ユーザのメールボックスは、/var/mail/以下にあるユーザ名のファイルを取りにいく
- Postfixで受信したメールも、/var/mail/以下に保存する必要がある
したがって、main.cfはdefault(何も指定しない)という状態でマッチさせます。
ちなみに、stringsコマンドでqpopperが/var/mail/を見ているんだなということがわかります。/var/spool/mailは/var/mailへのシンボリックリンクです。
$ strings `which in.qpopper` | grep "/var/"
/var/spool/popbull
/var/mail
/var/spoolpop
イメージはこんな感じ。/var/mail/usernameが一致している必要がある▼