/var/postfix 以下にPostfix を全部入れる

メール系のパッケージは、普通に入れるとシステムに1つしか入らないようになってます。
少なくとも sendmail コマンドは上書きする(?)し。

Solaris/OpenSolaris はデフォルトで sendmail が入っているのですが、ちょっとだけ Postfixも試したい、でも/etc/mail とか /usr/lib/sendmail とか汚したくない。。。ということで、ソースから /var/postfixを指定してインストールしてみました。

普通なら configure --prefix=/var/postfix とかやればOKなものですが、Postfixには configureも prefix らしき指定もない。。。
で、INSTALLというドキュメントにやり方が書いてあります。


sendmail止めておく。


$ svcs -a |grep mail
disabled 7月_12 svc:/network/smtp:sendmail
disabled 22:51:55 svc:/network/sendmail-client:default

ユーザの追加。 (zfsのところは特にやらなくてもよいです。)


$ pfexec groupadd postfix
$ pfexec groupadd postdrop
$ pfexec useradd -g postfix -d /var/postfix -s /bin/true postfix
$ pfexec mkdir /var/postfix
$ pfexec zfs create -o mountpoint=/var/postfix rpool/postfix
$ pfexec chown postfix:postfix /var/postfix

インストール
makeコマンドのオプションがミソです。-D指定でヘッダーファイル(include/mail_params.h)内の #defined を上書きしてくれます。
これをやらないと、make install でいろいろとコピー先を変えても、バイナリ内のPATHがデフォルトのままになるので、各種コマンドがコケまくります。
(どのコマンドも /etc/mail/main.cf を見に行くので。。)


$ wget http://mirror.postfix.jp/postfix-release/official/postfix-2.6.2.tar.gz
$ gzip -cd postfix-2.6.2.tar.gz | tar xf -
$ cd postfix-2.6.2
$
$ make makefiles CC=/opt/SunStudioExpress/bin/cc \
CCARGS='-DDEF_COMMAND_DIR=\"/var/postfix/sbin\" \
-DDEF_CONFIG_DIR=\"/var/postfix/etc\" \
-DDEF_DAEMON_DIR=\"/var/postfix/libexec\" \
-DDEF_DATA_DIR=\"/var/postfix/lib\" \
-DDEF_MAILQ_PATH=\"/var/postfix/bin/mailq\" \
-DDEF_MANPAGE_DIR=\"/var/postfix/man\" \
-DDEF_NEWALIAS_PATH=\"/var/postfix/bin/newaliases\" \
-DDEF_QUEUE_DIR=\"/var/postfix/spool\" \
-DDEF_SENDMAIL_PATH=\"/var/postfix/sbin/sendmail\"'
$
$ make
$ make install
$ pfexec make install
install_root: [/]
config_directory: [/var/postfix/etc]
command_directory: [/var/postfix/sbin]
daemon_directory: [/var/postfix/libexec]
data_directory: [/var/postfix/lib]
html_directory: [no]
mail_owner: [postfix]
mailq_path: [/var/postfix/bin/mailq]
manpage_directory: [/var/postfix/man]
newaliases_path: [/var/postfix/bin/newaliases]
queue_directory: [/var/postfix/spool]
readme_directory: [no]
sendmail_path: [/var/postfix/sbin/sendmail]
setgid_group: [postdrop]
Updating /var/postfix/libexec/anvil...
Updating /var/postfix/libexec/bounce...
Updating /var/postfix/libexec/cleanup...
Updating /var/postfix/libexec/discard...
Updating /var/postfix/libexec/error...
...
$
$ pfexec /var/postfix/sbin/postfix check # 何も出力されなければ、OK。
$

後は、aliases回りをとりあえずで作って、main.cfを書き換えて start すればよいです。
(この辺りは、Postfixのドキュメント参照)


$ pfexec touch /var/postfix/etc/aliases.dir
$ pfexec chmod 666 /var/postfix/etc/aliases.dir
$ pfexec touch /var/postfix/etc/aliases.pag
$ pfexec chmod 666 /var/postfix/etc/aliases.pag
$ /var/postfix/bin/newaliases -C /var/postfix/etc -oA/var/postfix/etc/aliases
$ pfexec vi /var/postfix/etc/main.cf
...
$ pfexec /var/postfix/sbin/postfix start
postfix/postfix-script: warning: group or other writable: /var/postfix/etc/./aliases.pag
postfix/postfix-script: warning: group or other writable: /var/postfix/etc/./aliases.dir
postfix/postfix-script: starting the Postfix mail system
$

ちなみに、telnet localhost 25 とかでローカル配送させて一般ユーザのメールボックスに届くのだけ確認しました。
まぁ、大丈夫でしょう。 start時の warning は気になる人は直しましょう。