さくらインターネットのPHPでMail関数を使うとInternal Server Errorになってしまう

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

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

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

んで、試しに以下のファイルを置いて実行したら、やっぱろエラー。
mail('hoge@hogehoge.com', 'Subject', 'Body');
おいおい、これは辺だろってことで、別のさくらのサーバで試したら動いた。
謎。
で、問い合わせ。

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

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

って感じ。

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

WordPressの場合は、「Cimy Swift SMTP」ってプラグインを使えば幸せになれます。
↓参考サイトもたくさんあります。
Cimy Swift SMTP - Google 検索

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

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

コメント

  1. @sakurada_sb 2010/08/31 10:54:58
    参考になりました。ありがとうございます。同じ理由でハマってしまっていたので助かりました。

アーカイブ

2012

  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12

2011

2010

2009

2008

2007

コンタクト

longkey1[at]gmail[dot]com