事前確認事項 †キューを勝手に触っても大丈夫? 削除する前に考慮する事 †.qmail-defaultではbounceを返さない設定にする †/home/vpopmail/domains/mta.jp/.qmail-default | /home/vpopmail/bin/vdelivermail '' bounce-no-mailbox ↓ これに変えれるかどうか検討してみる | /home/vpopmail/bin/vdelivermail '' delete qmailの設定を強化する †/etc/qmail/badmailfrom @XXX.XXX.XXX #FROMに上記IPが入っていたら弾く設定 /etc/qmail/badmailfromnorelay #reject senders withouth @ !@ /etc/qmail/timeoutremote 120 #送り先がresponseしない場合は120秒でtimeoutする 設定箇所 †qmailを止める /etc/init.d/qmail stop まずどのくらいbounceメールが溜まっているか見てみる(ちょっとクラッとしてみる。) aya@mta:~$ sudo /var/qmail/bin/qmail-qstat messages in queue: 125021 messages in queue but not yet preprocessed: 0 queue-fast.plを取得する aya@mta:~$ sudo /var/qmail/bin/qmail-qread > /home/aya/qmail.txt qmail.txtの内容はこんな感じ 12 Mar 2010 17:08:55 GMT #2346574 2864 <vhrepqmkdxgmh@gmail.com>
remote keally0801@yahoo.com.tw
12 Mar 2010 18:41:37 GMT #2354072 2990 <caygoap@yahoo.com.tw>
remote 0920270091@yahoo.com.tw
15 Mar 2010 11:28:29 GMT #410227 3814 <>
remote zolqlktnf@gmail.com
12 Mar 2010 22:49:59 GMT #2373001 2953 <rtrcs@hotmail.com>
remote s101691@yahoo.com.tw
添付ファイルもしくは以下の内容をコピーしたファイルを作成する <?php
$startNum = 0;
$endNum = $startNum + 10000;
$filename = '/home/aya/qmail.txt';
$p[0] = '/\</';
$p[1] = '/\>/';
$r[0] = '';
$r[1] = '';
$lines = preg_replace($p, $r, file($filename));
$deleteEmail = array();
for($n = $startNum; $n <= $endNum; $n++) {
if($n%2 == 0) {
$m = $n + 1;
preg_match("/[-\+\w](\\.?[-\+\w])*@[-\+\w]+(\.[-\+\w]+)*(\.[a-zA-Z]{2,4})/",$lines[$m], $toEmail);
$deleteEmail[] = $toEmail[0];
}
}
$string_emails = implode(" ", $deleteEmail);
//echo $string_emails;
$output = system('perl /home/aya/queue-fast.pl -d ' . $string_emails);
echo count($lines);
echo count(' -> ' . $deleteEmail);
?>
必要であれば $m = $n + 1; の後に、 $pattern = '/\#\@\[\]/';
preg_match($pattern, $lines[$n], $match);
if($match) {
preg_match("/[-\+\w](\\.?[-\+\w])*@[-\+\w]+(\.[-\+\w]+)*(\.[a-zA-Z]{2,4})/",$lines[$m], $toEmail);
$deleteEmail[] = $toEmail[0];
}
という風におかしなメールだけを分岐して削除してもよいかもしれない。 確認方法 †エラー時には †参考URL † |