PHP5から追加されたmail.force_extra_parametersを試してみる

AWSに限った話でもないのですが、WordPressなどのPHPから システムメールを送るとFromを指定しても sendmailのctladdrがapache@{イントラのホスト名}だったりして 送信先のMTAによってはSPAM扱いされてしまったりします。

sendmailコマンドでメールを送信するのであれば-fオプションで 送信者を強制的に変更できますが、PHPのコードを全部治すのは 現実的ではありません。

PHP5からはphp.iniでmail.force_extra_parametersという 強制的にパラメータを追加する機能が追加されたので、 こちらを使うとPHPの中でsendmailaを実行した時に 送信元アドレスを指定のメアドに設定できます。

mail.force_extra_parameters = -f webmaster@example.com

ただし、このままだとメールのヘッダにX-Authentication-Warningという 警告の行が追加されてしまいます。

回避するためには /etc/mail/trusted-usersというファイルを編集して apacheやnginxなどPHPを実行するユーザーを追加します。

上記の二点でメールホスティングをしていないサーバーからも PHPのSendMailで送信元を指定できます。

プログラムごとに変更できないのと、Fromの部分は別途 指定できるので送信元はシステム管理者的なアドレスがよさそうです。