2010年4月23日

[PHP-users 35154] Re:phpのmail関数がたまにfalseを返す

中出です。

レス、ありがとうございます。
また、レスが遅くなりすみません。

> ソースコードを提示してみてはどうでしょうか?

今回テストしたソースは以下となります。

hogehoge.jpサーバからfugofugo.jpあてに
test-1@xxxxxからtest-9999@xxxxxまで
9999通のメールを送信しています。

なお、fugofugo.jpのほうではアクセス制限はかけて
ませんし、test-xxx@xxxxxアドレスは利用できる
ものとなります。

※hogehoge.jp、fugofugo.jpはテストの際は正しいドメイン
 を設定しています。

<?php
ini_set('error_reporting', -1);
ini_set('display_errors', 0);
ini_set('log_errors', 1);
ini_set('error_log','/tmp/php_err.txt');
ini_set('max_execution_time','0');
ini_set('memory_limit', '128M');

if(function_exists('date_default_timezone_set')){
date_default_timezone_set('Asia/Tokyo');
}

$from='test@xxxxx';
$sender='postmaster@xxxxx';
$title='this is test mail';
$body='this is test mail';

writeLog('start');
for($i=1;$i<10000;$i++){
$to='test-'.$i.'@fugofugo.jp';
if(!mail($to,$title,$body,'From: '.$from,'-f '.$from)){
writeLog('NG: '.$to);
}
}
writeLog('end');


function writeLog($line){
$filename='/tmp/php_log.txt';
$line=date("Y/m/d H:i:s").' '.$line."\n";
$fp=fopen($filename,'a');
fwrite($fp,$line);
fclose($fp);
echo $line.'<br>';
}
?>

実行した結果、/tmp/php_log.txtには以下の
ようなログが記載されていました。

2010/04/23 11:41:37 start
2010/04/23 11:50:54 NG: test-5973@xxxxx
2010/04/23 11:53:12 NG: test-7394@xxxxx
2010/04/23 11:56:54 NG: test-9602@xxxxx
2010/04/23 11:57:26 NG: test-9971@xxxxx
2010/04/23 11:57:29 end

sendmailのログ(/var/log/maillog)にはこれらの
アドレスに関する記載はありませんでした。

mail関数の後に

if($i % 5 ==0) sleep(1);

のようなスクリプトを入れ、5通ごとに1秒休ませた
場合も、以下のように変わらずでした。

2010/04/23 15:49:19 start
2010/04/23 15:53:30 NG: test-882@xxxxx
2010/04/23 16:00:46 NG: test-2410@xxxxx
2010/04/23 16:20:34 NG: test-6547@xxxxx
2010/04/23 16:37:02 end


また、
phpソースの問題なのかサーバの問題なのか知りたくて
hogehoge.jpとは別のサーバに同じスクリプト(sleepなし)を
設置してテストした結果、こちらは問題なしでした。
なおサーバは
Redhat Enterprise Linux 4ES
Sendmail version 8.13.1, config V10/Berkeley
PHP Version 4.3.9
sendmail_path /usr/sbin/sendmail -t -i
となります。


上記の結果、PHPの問題ということでなく、このサーバの設定の
問題が濃厚なのかなぁと思います。


> たくさんの人が返信されていて、
> 「送信できない原因」を追及する方向で話が進んでいるようです。

はい、
いただいたレスを参考に調査をしているのですが、
力不足もあいまってなかなか進まずという状況です。

> ・[PHP-users 35127] [PHP-users 35135] とかぶりますが、
> falseになったときは、数秒sleepして、再送してみる。

についてですが、とりあえず原因を知りたいとおもっています。
どうやっても分からない場合は、再送でいこうかなぁと思いますが。

では、失礼します。

----

_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3


投稿者 xml-rpc : 2010年4月23日 16:59
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/95298
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。