- ベストアンサー
メール送信プログラム
PHPで作成したpostfixを使ったメール送信プログラムが上手くいきません。 最下部の動作環境において下記のプログラムを実行したところ、trueが返ってきているためmb_send_mail()自体は成功しているようですが、yahooのウェブメールにメールが来ておらず、どうやら送信に失敗しているようです。(他のアドレスにも試しに送ってみましたがいずれも届きませんでした) postfixなどの設定が上手くいっていないのではないかと思い、一応ウェブで調べて自分なりに,/etc/postfix/main.cfを設定してみたのですが、うまく行きません。main.cfの設定では mydomain = example.comを加える myhostname = example.comを加える #inet_interfaces = all → inet_interfaces = all(コメントアウトをはずす) といったことを試みてみました。 他にどこに原因があるのか分かりません。php.iniなども特にいじっていません。どうすればメールの送信が出来るようになるのでしょうか? どうぞご教授お願いいたします。 <?php $to = "xxxxx@yahoo.co.jp"; $subject = "テストメール"; $body = "テスト"; mb_language("ja"); mb_internal_encoding("ISO-2022-JP"); if(mb_send_mail($to, $subject, $body)){ echo "true\n"; }else{ echo "false\n"; } ?> 動作環境 ----------------------- 本体:MacBook MB467J/A OS: Mac OS X PHP 5.2.8 Postfix 2.4.3 -----------------------
- みんなの回答 (5)
- 専門家の回答
お礼
ご回答ありがとうございます。 >SMTPの設定は間違いなくできていますか。 SMTPの設定と言うと具体的にどのようなことでしょうか?ローカルのメールクライアントを使用しておらず(ウェブメールのみ)、メールソフトからの送受信は確認出来ていないのですが他に確認方法はありますでしょうか? >Postfixにはsendmail互換プログラムが付いてますが、これが有効になっていますか。 有効になっているというのは具体的に何を確認すればよいでしょうか? /etc/postfix/main.cfにおいて、 sendmail_path = /usr/sbin/sendmail と設定してあるのですが、他に設定が必要でしょうか? >php.iniのデフォルトでは、sendmeilのパスが /usr/sbin/sendmail になっているはずですがここんとこはOKですか。 sendmail_path /usr/sbin/sendmail -t -i に設定されているので、大丈夫だと思います。 補足: mail.logには、下記のように記載されており、yahooのメールサーバにsmtpで接続出来ていないようですが、いまだにその原因が分かりません。 Aug 19 02:24:16 kendai-mac postfix/smtp[2328]: connect to mx2.mail.yahoo.co.jp[203.216.243.171]: Connection refused (port 25) Aug 19 02:24:21 kendai-mac postfix/smtp[2328]: connect to mx2.mail.yahoo.co.jp[124.147.39.208]: Connection refused (port 25) Aug 19 02:24:22 kendai-mac postfix/smtp[2327]: connect to mx1.mail.yahoo.co.jp[124.83.171.181]: Connection refused (port 25) Aug 19 02:24:26 kendai-mac postfix/smtp[2327]: connect to mx3.mail.yahoo.co.jp[203.216.247.183]: Connection refused (port 25) サーバ関連やプログラミング初心者なため、勉強のために上記のプログラムを作成したのですが上手くいっておりません。稚拙な質問が多いと思いますが、ご容赦下さい。
補足
自力で解決することが出来ました。 原因はyahooのメールサーバでスパム除けのために送信ドメインと送信IPアドレスが一致しないものは拒否しているためでした。そのためmain.cfでrelayhostの設定で下記のようにプロバイダのsmtpサーバを経由するようにし、送信元のアドレスのドメインを変更すると、上手く行きました。 relayhost = [smtp.xxx.ocn.ne.jp] myhostname = xxx.ocn.ne.jp 同様の問題で悩んでいる方のために、参考にしたURLを載せておきます。 http://blog.fkoji.com/2008/12291614.html ご回答くださった方、ありがとうございました。