[PHP-users 18956]550エラーメールの処理
A.Nishio
a-nishio @ m-3.co.jp
2003年 11月 16日 (日) 19:51:05 JST
はじめまして。
にしおと申します。
サイトより、メール配信を行っているのですが、その際に
550エラーで返送されたメールアドレスをスクリプトを利用し
自動的に停止せたく考えています。
下記のスクリプトを使用したのですが、停止になりません。
アドバイスを頂戴できればと思います。
よろしくお願いいたします。
$stdin = fopen("php://stdin", "r");
$flag = "no";
$flag2 = 0;
while (!feof ($stdin)) {
$buffer = fgets($stdin);
if (preg_match ("/^From: MAILER-DAEMON @ www.tenq.net/i", $buffer)) {
$flag = "local";
break;
} elseif (preg_match ("/^From: Postmaster @ ezweb.ne.jp/i", $buffer)) {
$flag = "ez1";
break;
} elseif (preg_match ("/^From: Mail Administrator
<Postmaster @ ezweb.ne.jp>/i"
, $buffer)) {
$flag = "ez2";
break;
} elseif (preg_match ("/^From: Postmaster @ docomo.ne.jp/i", $buffer)) {
$flag = "docomo1";
break;
} elseif (preg_match ("/^From: Mail Administrator
<Postmaster @ docomo.ne.jp>/i"
, $buffer)) {
$flag = "docomo2";
break;
} elseif (preg_match ("/^From: Postmaster @ jp-k.ne.jp/i", $buffer)) {
$flag = "jp1";
break;
} elseif (preg_match ("/^From: Mail Administrator
<Postmaster @ jp-k.ne.jp>/i"
, $buffer)) {
$flag = "jp2";
break;
// } elseif (preg_match ("/^From: /i", $buffer)) {
// $flag = "st1";
// break;
}
}
if ($flag != "no") {
while (!feof ($stdin)) {
$buffer = fgets($stdin);
switch ($flag) {
case 'local':
if ((preg_match ("/^Remote host said: 550/i", $buffer))) {
$flag2 = 1;
}
if ((preg_match ("/^Remote_host_said: 550/i", $buffer))) {
$flag2 = 1;
}
if (($flag2 == 1) && (preg_match ("/^To: /i", $buffer))) {
$pattern = array ("/^To: /i", "/\s$/i");
$replace = array ("", "");
$mail = preg_replace ($pattern, $replace, $buffer);
break 2;
}
// case 'st1':
// if (preg_match ("/^\sfor </i", $buffer)) {
// $pos1 = strpos ($buffer, "<") +1;
// $pos2 = strpos ($buffer, ">");
// $len = $pos2 - $pos1;
// $mail = substr ($buffer, $pos1, $len);
// break 2;
// }
case 'ez1':
if (preg_match ("/^\sfor </i", $buffer)) {
$pos1 = strpos ($buffer, "<") +1;
$pos2 = strpos ($buffer, ">");
$len = $pos2 - $pos1;
$mail = substr ($buffer, $pos1, $len);
break 2;
}
case 'ez2':
if (preg_match ("/^</i", $buffer)) {
$pos1 = 1;
$pos2 = strpos ($buffer, ">");
$len = $pos2 - $pos1;
$mail = substr ($buffer, $pos1, $len);
break 2;
}
case 'docomo1':
if (preg_match ("/^\sfor </i", $buffer)) {
$pos1 = strpos ($buffer, "<") +1;
$pos2 = strpos ($buffer, ">");
$len = $pos2 - $pos1;
$mail = substr ($buffer, $pos1, $len);
break 2;
}
case 'docomo2':
if (preg_match ("/^</i", $buffer)) {
$pos1 = 1;
$pos2 = strpos ($buffer, ">");
$len = $pos2 - $pos1;
$mail = substr ($buffer, $pos1, $len);
break 2;
}
case 'jp1':
if (preg_match ("/^\sfor </i", $buffer)) {
$pos1 = strpos ($buffer, "<") +1;
$pos2 = strpos ($buffer, ">");
$len = $pos2 - $pos1;
$mail = substr ($buffer, $pos1, $len);
break 2;
}
case 'jp2':
if (preg_match ("/^</i", $buffer)) {
$pos1 = 1;
$pos2 = strpos ($buffer, ">");
$len = $pos2 - $pos1;
$mail = substr ($buffer, $pos1, $len);
break 2;
}
}
}
}
fclose ($stdin);
// print ($mail . "\n");
PHP-users メーリングリストの案内