2012年1月20日金曜日

phpのMail関数で送信エラーになる

phpで作成された単純なメール送信フォームからメールを送信しようとしたところ
ある特定の条件で送信エラーになるという現象に悩まされました。

その条件というのは以下の通りです。
・送信フォームの設置されているドメインと同一のドメイン宛のメールのみ送信されない

どういうことかと言うと、例えばメール送信フォームの設置されている
Webサイトのドメインが「sample.com」だったとして、
メールの宛先が「xxx@sample.jp」の場合はちゃんと届くけれど、
「xxx@sample.com」の場合には届かないというものです。

もう少し環境・状況を詳しく説明しますと、
1. WebサーバーはWindows 2003 server IIS 6.0 (恐らくあまり関係ない)
2. PHP 5.12
3. Classic ASP (basp利用) だと同一ドメインでも送信可能
4. WebサーバーのローカルにSMTPサーバーを展開
5. MailサーバーはWebサーバーとは別のサーバー上に設置
調べてみたところ、5(4も?)が原因だったと思われます。

IISのSMTPログを見てみたところPHPから同一ドメイン宛にメールを送信した際には全くログに記録がなく、
どうも
php「xxx@sample.com宛のメール?それなら今ボクの設置されてるサーバの所でしょ。
勝手に送信しておくね。あれ?」
てな具合でDNS参照もせず、ローカルのSMTPも使わずに送信しようとしてエラーになってしまうようです。




似たような現象にあっている人がいたので参考になりました。 
さくらインターネットのPHPでMail関数を使うとInternal Server Errorになってしまう


phpの問題のような気がしますがどうでしょうか。
私はあまり深くは検証していませんが・・・

今回はサブドメインにしても良いとのことだったので宛先を「xxx@zzz.sample.com」に
変更することで回避できました。

0 件のコメント:

コメントを投稿