プロが教えるわが家の防犯対策術!

phpスクリプトのテスト用としてubuntu8.10で自宅サーバを構築しています。

自作のphpスクリプト内でメール送信処理(mail関数を使用)を行ったところ、画面上にエラーは表示されないものの、実際にはメールが送信されていないことに気がつきました。

ちなみに、Windows上からThunderbird等のメールクライアントソフトを使って、SMTPサーバを自宅サーバに指定した場合には問題なく送信可能な状態です。

サーバ構築については素人で、様々な関連サイトを見ながら何とか構築したレベルです。mail.logの中身からしてpostfixからの配信でコケているという所までは理解できたのですが、どう対処して良いのかが判りません。

どなたか詳しい方がいらっしゃいましたら、ご教授頂ければ幸いです。

■自宅サーバの環境
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.10
DISTRIB_CODENAME=intrepid
DISTRIB_DESCRIPTION="Ubuntu 8.10"
PHP 5.2.6-2ubuntu4.1 with Suhosin-Patch 0.9.6.2 (cli) (built: Feb 11 2009 20:38:24)
Postfix mail_version = 2.5.5

■/var/log/mail.logの中身
Mar 23 18:10:17 ubuntu postfix/pickup[13358]: 7F5CD13F91: uid=33 from=<​www-data>​
Mar 23 18:10:17 ubuntu postfix/cleanup[14285]: 7F5CD13F91: message-id=<20090323091017.7F5CD13F91@ubuntu>
Mar 23 18:10:17 ubuntu postfix/qmgr[4582]: 7F5CD13F91: from=<​www-data@localdomain>,​ size=342, nrcpt=1 (queue active)
Mar 23 18:10:17 ubuntu postfix/smtp[14287]: 7F5CD13F91: enabling PIX workarounds: disable_esmtp delay_dotcrlf for mx2.ISPのドメイン[***.***.***.**]:25
Mar 23 18:10:17 ubuntu postfix/smtp[14287]: 7F5CD13F91: to=<送信先メルアド>, relay=mx2.ISPのドメイン[***.***.***.**]:25, delay=0.18, delays=0.04/0.01/0.09/0.04, dsn=5.1.8, status=bounced (host mx2.ISPのドメイン[***.***.***.**] said: 553 5.1.8 Domain of sender address <localdomain> does not exist. (in reply to MAIL FROM command))
Mar 23 18:10:17 ubuntu postfix/cleanup[14285]: ACCC413F98: message-id=<20090323091017.ACCC413F98@ubuntu>
Mar 23 18:10:17 ubuntu postfix/qmgr[4582]: ACCC413F98: from=<>, size=2146, nrcpt=1 (queue active)
Mar 23 18:10:17 ubuntu postfix/bounce[14288]: 7F5CD13F91: sender non-delivery notification: ACCC413F98
Mar 23 18:10:17 ubuntu postfix/qmgr[4582]: 7F5CD13F91: removed
Mar 23 18:10:17 ubuntu postfix/smtp[14287]: ACCC413F98: to=<​www-data@localdomain>,​ relay=none, delay=0.04, delays=0.02/0/0.02/0, dsn=5.4.4, status=bounced (Host or domain name not found. Name service error for name=localdomain type=A: Host not found)
Mar 23 18:10:17 ubuntu postfix/qmgr[4582]: ACCC413F98: removed

A 回答 (2件)

エラーメッセージは、


53 5.1.8 Domain of sender address <localdomain> does not exist. (in reply to MAIL FROM command))

smtpコマンドのMAIL FROM:で指定する送り元のメールアドレスのホスト名がlocaldomainになっているのが原因です。
mail() の第五パラメータのadditional_parametersで、MAIL FROM:コマンドのパラメータを指定できるので、例えば、あなたのプロバイダメールアドレスが、abcdef@foo.example.ne.jp なら、第五パラメータに"-fabcdef@foo.example.ne.jp" を指定してみてください。

プロバイダメールアドレス以外のyahoo.co.jpやgmail.comなどのメールアドレスが使えるかどうかはプロバイダのメールサーバーの設定次第です。今のエラーメッセージからすると出来そう。

この回答への補足

新しい情報もないみたいなので、一旦〆とさせて頂きます。お返事頂いたお二方、本当に有難うございました。

補足日時:2009/03/27 02:06
    • good
    • 0
この回答へのお礼

レスありがとうございます。

>> mail() の第五パラメータのadditional_parametersで
仰る通り、第五引数を設定する事で無事にメールを送信することができました。mail関数に第五引数があること自体を知らなかったので勉強になりました。ありがとうございます。

ちなみに、この方法で送信できるということは、サーバの設定自体に問題はないという認識で良いのでしょうか。自作スクリプトのテスト用サーバなのでドメインは取得していませんが、仮にドメインを取得したとして、そのドメインを正しくPostfixに設定してやれば第五引数なしでも送信できる環境になるということなのでしょうか。

PHPマニュアルのmail()に関する部分を見てみると「この方法でエンベロープのsenderヘッダ(-f)を設定する際は、'X-Warning'ヘッダが付加されないようにWebサーバの実行ユーザをsendmail設定に追加しておく必要があるかもしれません。」とありますが、一般的なレンタルサーバではこの様な設定が標準になっているのかも疑問が残るところです。

追加質問みたいになってしまいましたが、もう少し理解を深めたいと思いますので、更なる情報をお待ち致しております。

お礼日時:2009/03/25 01:21

とりあえずphpからメールを送るのであれば


PEARのMailを利用するのが早道。
smtpに外部サーバーを指定できます
    • good
    • 0
この回答へのお礼

レスありがとうございます。
メールを送る方法が別にある事は知っていますが、今回はサーバ構築に関する質問となります。
私が作成しているスクリプトは不特定多数が使用する可能性のあるもの(フリースクリプトとして公開するもの)ですので、様々な処理をテストできる環境が欲しいと思っております。
上記を踏まえた上で、何か参考になりそうな情報がありましたら宜しくお願い致します。

お礼日時:2009/03/24 19:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!