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