ftp://ring.aist.go.jp/pub/net/mail/postfix/index.html
ここいら辺からダウンロード。
基本的には、


tar xfzv postfix-2.3.2.tar.gz
cd postfix-2.3.2
make
make install
で良い。
SMTP AUTH (cyrus-sasl) 対応をするには、Makefile の修正が必要になる。
README_FILES/SASL_README を読むと、こう書いてある。

(for Cyrus SASL version 2.1.1):

% make tidy # if you have left-over files from a previous build
% make makefiles CCARGS="-DUSE_SASL_AUTH -DUSE_CYRUS_SASL \
-I/usr/local/include/sasl" AUXLIBS="-L/usr/local/lib -lsasl2"

  • DUSE_CYRUS_SASL ってのが重要で、これを忘れると Postfix がちゃんと動いてくれない。


Aug 11 12:12:33 postfix/smtpd[32152]: warning: unsupported SASL server implementation: cyrus
Aug 11 12:12:33 postfix/smtpd[32152]: fatal: SASL per-process initialization failed
Aug 11 12:12:34 postfix/master[32148]: warning: process /usr/local/libexec/postfix/smtpd pid 32152 exit status 1
横着して、古いバージョンの SASL_README を参照したばっかりに、思いっきりハマった。横着スンナって事ですね。あ、SASL のインクルードファイルやライブラリへのパスは、ちゃんと修正しましょう。
RPM とか使ってると、パスが当然違ってきたりもする。

make makefiles CCARGS="-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl" AUXLIBS="-L/usr/lib/sasl2 -lsasl2"
make
groupadd postfix
groupadd postdrop
useradd -g postfix -d /var/spool/postfix -m -k /dev/null -s /sbin/nologin postfix
make install
make install すると、ファイルのインストール先やなんかをいくつか質問される。個人的には、ソースコードからのインストールでは、/usr/local/sbin 以下とかにインストールするのが好みなので、そのようにした。
master.cf を編集して、 25番を封じて、submission ポートを使うようにした。SMTP AUTH も有効に。
main.cf で SMTP AUTH に関する設定も行う。

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destination
こんな感じのを追加。
telnet を使った動作中、PLAIN 形式の認証に蹴られて困り果てたが、調べてみるとパスワードが数字から始まる場合、

printf 'USERNAME\0USERNAME\0PASSWORD' | mmencode
なアレの際に問題があるらしい。\0とパスワード一文字目の数字が連なるからか。