[PHP-users 35154] Re: phpのmail関数がたまにfalseを返す
choice
info @ choice-site.com
2010年 4月 23日 (金) 16:59:00 JST
中出です。
レス、ありがとうございます。
また、レスが遅くなりすみません。
> ソースコードを提示してみてはどうでしょうか?
今回テストしたソースは以下となります。
hogehoge.jpサーバからfugofugo.jpあてに
test-1 @ fugofugo.jpからtest-9999 @ fugofugo.jpまで
9999通のメールを送信しています。
なお、fugofugo.jpのほうではアクセス制限はかけて
ませんし、test-xxx @ fugofugo.jpアドレスは利用できる
ものとなります。
※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 @ hogehoge.jp';
$sender='postmaster @ hogehoge.jp';
$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 @ fugofugo.jp
2010/04/23 11:53:12 NG: test-7394 @ fugofugo.jp
2010/04/23 11:56:54 NG: test-9602 @ fugofugo.jp
2010/04/23 11:57:26 NG: test-9971 @ fugofugo.jp
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 @ fugofugo.jp
2010/04/23 16:00:46 NG: test-2410 @ fugofugo.jp
2010/04/23 16:20:34 NG: test-6547 @ fugofugo.jp
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 メーリングリストの案内