July 28, 2008

Postfixの基本設定

postfix



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が一致している必要がある▼