最近さくらのレンタルサーバをごにょごにょしてて、いろいろノウハウっぽいものが溜まって来た気がするんだけど、今回はかなりさくらのサポートも巻き込んで、大騒ぎしてしまったので戒めも兼ねてメモを。

さくらのレンタルサーバでPHPのMail関数を使うと、Internal Server Errorになってしまうという現象に2日間も解決に時間がかかった(主にサポートの返信待ち)。
もうちょっと早いと助かるんだけど、結構突っ込んで調べてくれて助かったー!
凄いぞ!さくらインターネット!

現象

で、発見したのが設置しているWordPressで、メールアドレスの再発行を使用としたら「Internal Server Error」て出ちゃうわけ。
んで、ちまちまデバッグしていったら、mail()でエラーになっていることが判明。

んで、試しに以下のファイルを置いて実行したら、やっぱりエラー。

mail('hoge@hogehoge.com', 'Subject', 'Body');

おいおい、これは辺だろってことで、別のさくらのサーバで試したら動いた、謎。
で、問い合わせ。

原因

何度もやりとりした結果、Google Apps使っているのが悪いのが判明。

要は

  • さくらインターネットを独自ドメインで運用
  • ウェブだけさくら、メールはGoogle Apps
  • ウェブサーバから、PHPで同じドメインへメールを送ろうとすると、内部のドメインってことでDNSを見に行かずにメールを送ってしまう
  • 内部的にはそんなメアドがないので、sendmail側でエラー
  • Internal Server Error発生

って感じ。

解決策

  • 同じドメインへのメールなら、さくら上にも同じメールアドレスを作っといてやる
    (その代わり、さくらのメールサーバに送られるので、それを見る術を考えないといけない)
  • 外部のSMTPで送信

でした、やはり。

んー、ありがちとはいえ、ログが見えないとちょっとわかりづらいなー。

さくらインターネット&Google Appsを使う場合は、PHPのメール周り注意だなー。