事前確認事項 †キューを勝手に触っても大丈夫? 削除する前に考慮する事 †.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 † |