postfix on Solaris10

メールサーバをいつも通り Postfix で構築。こちらは Sunfreeware.com にもパッケージが無いのでソースからビルド。ひっかかったのは二点。

  • ndbm.h
  • PCRE のオプション

前者はPostfix Frequently Asked Questionsにあるように、ndbm.h が原因で、エラーもここにあるものそのもの。こちらは svn を入れる時にインストールした、gdbm パッケージを入れると入る /usr/local/include/ndbm.h が原因。こちらは

# mv /usr/local/include/ndbm.h /usr/local/include/ndbm.h.org

として対処します。おそらく、svn を入れる前であれば問題はなかったかと。(未確認)

後者は、Companion でインストールした SFWpcre に対応するために Makefile 作成時にオプション指定をする必要があります。詳細はソースを展開した後の README_FILES/PCRE_README を参照 (翻訳はこちら→ http://www.kobitosan.net/postfix/trans-2.2/jhtml/PCRE_README.html)していただくとして、

# make -f Makefile.init makefiles \
> "CCARGS=-DHAS_PCRE -I/opt/sfw/include" \
> "AUXLIBS=-L/opt/sfw/lib -R/opt/sfw/lib -lpcre"
# make
# make install

です。味噌はビルドオプションでランパスまで指定すること。ちなみに build 自体は 1.6GHz マシンで 1 分 46 秒ほど。速いものです。インストールディレクトリは、基本的に postfix 自体が sendmail や mailq、newaliases 等を置き換えてしまうので、設定ファイル以外は /usr/local 以下に変更してインストール。この辺りは好みの世界ですが、ディレクトリ関係は以下のようにしました。ユーザやグループの作成はお約束通りに。

config_directory: [/etc/postfix] 
daemon_directory: [/usr/local/libexec/postfix] 
command_directory: [/usr/local/sbin] 
queue_directory: [/var/spool/postfix] 
sendmail_path: [/usr/local/lib/sendmail] 
newaliases_path: [/usr/local/bin/newaliases] 
mailq_path: [/usr/local/bin/mailq] 

後は、後述のサイトや /var/svc/manifest/network/smtp-sendmail.xml を参考にして、/var/svc/manifest/network/smtp-postfix.xml を作成し SMF に登録し、確認。

# svccfg -v import /var/svc/manifest/network/smtp-postfix.xml
# svcadm enable postfix
# svcs -l postfix

Linux でパッケージインストールで楽をしていると、たまにビルドするとはまりますね。。。