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

高瀬 裕介 211views 更新:2015年2月10日

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の部分は別途 指定できるので送信元はシステム管理者的なアドレスがよさそうです。

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません