Postfixをソースからインストール

Postfixで、taRgreyな感じのサーバを立ててみたところ、はまった箇所をメモしておく。

qmail+vpopmailからの移行を考えているので、qmail+vpopmailを残しつつ、Postfixを導入して、SMTPサーバを置換する。

  • ソースコードMakefile作成時、sasl関連のライブラリの場所を指定する必要有り。最初何もせずに-lsasl2と-DUSE_SASL_AUTH -DUSE_CYRUS_SASLだけでコンパイルしたら、SMTP-AUTHでsaslが見つからないようでエラーになった。原因が分からなかったのでCentOSSRPMを持ってきて、中の.specファイルを調べると、ヘッダとライブラリフォルダが指定されてた。
  • '-DDEF_MAILQ_PATH=\"/usr/bin/mailq.postfix\"'系の定義を使うとき、外側のクォートをダブルクォートにしていたが、それだとコンパイルでエラーになる。シングルクォートを使うとOK。

最終的に使ったのは以下。(TLSサポートと、SASLサポートを組み込む)

make makefiles CCARGS='-DDEF_MAILQ_PATH=\"/usr/bin/mailq.postfix\"
 -DDEF_NEWALIAS_PATH=\"/usr/bin/newaliases.postfix\"
 -DDEF_SENDMAIL_PATH=\"/usr/sbin/sendmail.postfix\"
 -DUSE_TLS
 -I/usr/include/sasl
 -DUSE_SASL_AUTH
 -DUSE_CYRUS_SASL' \
AUXLIBS='-lssl
 -lcrypto
 -L/usr/lib64/sasl2
 -lsasl2'
(実際には一行で入力)


TLSでバーチャルホスト向けに、複数の証明書を使いたい場合。master.cfで以下のように。

# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
127.0.0.1:smtp     inet  n       -       y       -       -       smtpd
127.0.0.2:smtp     inet  n       -       y       -       -       smtpd
    -o smtpd_tls_cert_file=/etc/ssl/certs/hogehoge.crt
    -o smtpd_tls_key_file=/etc/ssl/certs/hogehoge.key

面倒なのは、バーチャルホストに割り当てるIPごとに証明書を指定してやる必要があるのと、SMTPサービスが設定したIPごとになるので、新しくIPを増やした場合(かつTLS不要な場合)に、設定を増やす必要がある点。

(デフォルトで使う証明書はmain.cfで指定してるけど、master.cfに持ってきてもいいかも、と思った。)