PHP

さくらインターネットでPHPからsendmail

さくらインターネットの共有サーバ上で PHP の mb_send_mail() を使っていたら、ステータス 500 の Internal Server Error が出るようになりました。

メール自体は送れますが、その直後のプログラムは実行されずにエラーが発生します。

今回はこの原因の調査をしてみました。

エラーログの確認

共有サーバもエラーログの参照は提供されていますが、それほど詳細なログの入手はできません。

そこで独自にログをファイルに吐いたり、PHP 以外に参考になるログを探して解決に至りました。

さくらインターネットに問い合わせても、アプリ依存だと解決も難しいでしょうしね・・・。

エラーの原因

いくつか参照したファイルの中で、原因究明の材料となったのが dead.letter です。

dead.letter は sendmail のエラーが書き込まれるファイルなので、メール送信時の状況を検証してみました。

原因は、メールヘッダに定義する From や Reply_To に存在しないメールアカウントを使用していたこと。

まだ正式なメールアドレスを決めていたなかったので、取り急ぎダミーのアドレスを From や Reply_To に代用していたのですが、それが今回のエラーの原因になったようです。