2009年3月3日火曜日

CentOS(5.2)でPostfixを"/usr/local"にインストールすると...

スズキです。

表記、はまりました。具体的には下記が実現できずに、試行錯誤してしまいました。

(1) "/usr/local/sbin/sendmail"コマンドでめーるが送れない
(2) PHPのmb_send_mail関数(/usr/local/sbin/sendmail)でメールが送れない

原因は、設定ファイルのパスがインストール時に指定した"/usr/local/etc/postfix"ではなく、
"/etc/postfix"と認識されて、上記が実行されていたからです。

いろいろ調べていると、下記の環境変数を設定してから、上記の実行すると解決するようです。

# export MAIL_CONFIG=/usr/local/etc/postfix

これで(1)は解決しましたが、(2)では、まだ、下記エラーが発生してしまいます。
((2)のPHPはApacheの起動前に上記を実行して確認しています)

--------【/var/log/maillog】--------
Mar 3 09:34:58 ivanov-guest4 postfix/postdrop[4721]:
error: untrusted configuration directory name: /usr/local/etc/postfix
Mar 3 09:34:58 ivanov-guest4 postfix/postdrop[4721]:
fatal: specify "alternate_config_directories = /usr/local/etc/postfix"
in /etc/postfix/main.cf
Mar 3 18:34:59 ivanov-guest4 postfix/sendmail[4720]:
warning: command "/usr/local/sbin/postdrop -r" exited with status 1
Mar 3 18:34:59 ivanov-guest4 postfix/sendmail[4720]:
fatal: apache(48): unable to execute /usr/local/sbin/postdrop -r: Success
--------

これは、

【alternate_config_directories】
--------
> コマンドラインの "-c config_directory" で指定されたり MAIL_CONFIG 環境変数パラメータで
> 指定される、非デフォルトな Postfix 設定ディレクトリのリスト。このリストはデフォルトの
> Postfix 設定ディレクトリで指定されなければなりません。またこのリストは postqueue(1)
> や postdrop(1) のような set-gid された Postfix コマンドによって使われます。
--------
http://www.postfix-jp.info/trans-2.1/jhtml/postconf.5.html

ということなので、デフォルトのPostfix設定ディレクトリのmain.cfに下記内容を追加しました。
((1)もrootで実行してなかったら、同じ現象になったでしょう...)

--------【/etc/postfix/main.cf】--------
alternate_config_directories=/usr/local/etc/postfix
--------

これで、(2)のPHPでも、無事メールが送信されることが確認できました。

長かった...

--
http://suz-lab.blogspot.com/

0 コメント: