教えて!gooで回答が得られなかったため、こちらで質問させていただきます。


Ubuntuに
・apache2
・mysql-server
・libapache2-mod-php5
などを入れて、PHPのプログラミングを勉強しています。

そこで、PHPでメール送信をしようとしたのですが、うまくいきません。

コードはこんなかんじです。

<?php
$to = 'hogehoge@sample.com';
$subject = 'test';
$message = 'test';
$add_headers = 'From: fugafuga@sample.com';

if (mail($to, $subject, $message, $add_headers)) {
echo 'OK';
} else {
echo 'Error!';
}
?>

画面にはOKと表示されるのですが、メールは届きません。

ほかに
・sendmail
・mailx
・postfix
なども入れてみましたが、だめでした。

また、入れる順番が悪いのかと思い、
これらを先に入れてからPHPを入れたりもしましたが同じでした。

PHPのsendmail_path は
/usr/sbin/sendmail -t -i
になっています。

また、mb_send_mailを使えるようにするには、なにか設定が必要でしょうか?

わかる方がいましたら、どうか教えてください!

回答の条件
  • 1人2回まで
  • 登録:2009/02/03 23:24:59
  • 終了:2009/02/04 23:07:24

回答(3件)

id:shintabo No.1

shintabo回答回数45ベストアンサー獲得回数102009/02/04 00:15:54

ポイント27pt

# サブミッションポートとか調べられましたか?

# sendmailでは、

mailq

# で、現在キューに入っているメールが見れるのですが、もしかしたら、

# php上は完了しているけど、メールが送れてないとか?かもしれません

# また、mb_send_mailですが、phpのconfigure時に

--enable-mbstring

# って入ってますか??

id:amphisbaena

恥ずかしながらサブミッションポートというのを知らなかったので、調べてみました。

ためしに、postfixを導入し、

/etc/postfix/master.cfの

submission関係のところのコメントをはずして、リロードしてみましが、だめでした。

教えていただいたmailqコマンドでキューを確認してみたところ、

「Connection timed out」と書かれていました。

また、connect to xx.xx.xxxx.ne.jp[xxx.xxx.xx.xxx]:25と書かれていました。

これはサブミッションポートの設定がうまくいっていないのでしょうか?

また、nmapというので確認してみたところ、

25番587番ともに開いているようでした。

いろいろと間違っていると思いますが、アドバイスお願いします。

2009/02/04 08:24:23
id:eternie No.2

Kuropen回答回数10ベストアンサー獲得回数12009/02/04 10:08:34

ポイント27pt

Outbound Port 25 Blocking (OP25B) というメール送信制御を導入しているプロバイダの場合,プロバイダ公認のSMTPサーバーでないとメールが送信できないことがあります。

(詳細については http://ja.wikipedia.org/wiki/Outbound_Port_25_Blocking をご覧下さい。)

それを回避するためのリレーサーバーをプロバイダが導入している場合は,Postfixなどの設定でそのサーバーを介するよう設定する必要があります。

例えば,私は au one net で自宅サーバーを設置していますが,OP25Bが導入されていて,リレーサーバーとして relay-mta.auone-net.jp が指定されているので

relayhost = relay-mta.auone-net.jp:25

という設定を, /etc/postfix/main.cf に加えています。

この辺の設定はプロバイダによって異なりますから,プロバイダのウェブサイトをよく読み,不明な点はプロバイダに問い合わせることをおすすめします。

id:amphisbaena

回答ありがとうございます。

当方のプロバイダはJcomで、やはりOP25Bを実施しているようです。

教えていただいたとおり、

relayhost にプロバイダ指定のメールサーバを指定したのですが、やはり送信できません;

mailqを見ると

ちゃんとそのメールサーバに接続しにいっているのですが、Connection timed outになっています。

2009/02/04 12:43:08
id:eternie No.3

Kuropen回答回数10ベストアンサー獲得回数12009/02/04 22:59:51

ポイント26pt

参考になりそうなサイトを見つけましたのでご覧下さい。

http://fedorasrv.com/op25b.shtml

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

  • 鍛錬記 - 一段落 2009-02-04 23:17:28
    一段落 とりあえず線型の再試験に向けたハードルであるレポートは終わり。明日は微積分の再試験がありますが,確実に取れるところから取らないとという感じです。 4月からはいままで
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません