qmailにspamが来ちゃって、qmailがアップアップしてる。 /var/qmail/bin/qmail-qstatを見ると messages in queue: 14585 messages in queue but not yet preprocessed: 23 /var/qmail/bin/qmail-qreadで見ると 21 Nov 2009 11:41:30 GMT #13126261 1537 <ydhnsx@xxx.xxx.xxx.xxx> remote hellspaw@r-butler.net みたいなキューがたくさんある。xxx.xxx.xxx.xxxは対象サーバね。 /var/qmail/bin/qmail-qread | grep xxx.xxx.xxx.xxx | wc 12659 101236 861720 これは破棄しよう!ともってqueue-fast.plを使おうとダウンロード でもこれってTo指定しか出来ないの。From(@xxx.xxx.xxx.xxx)は出来ない。 なのでこうしてみた。本当はshellscriptとかで書けばよかったんだけど、時間なかったので汚いソースになっちゃった。 /etc/init.d/qmail stopしておく <?php $filename = '/home/hoge/queue.txt'; #ファイル場所 #これは/var/qmail/bin/qmail-qread > /home/hoge/queue.txtしたもの $p[0] = '/\</'; $p[1] = '/\>/'; $r[0] = ''; $r[1] = ''; $lines = preg_replace($p, $r, file($filename)); $pattern = '/XXX.XXX.XXX.XXX/'; #Fromにしたい文言、IP $deleteEmail = array(); for($n = 2; $n <= 10000; $n++) { if($n%2 == 0) { preg_match($pattern, $lines[$n], $match); if($match) { $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/hoge/queue-fast.pl -d ' . $string_emails); echo count($lines); echo count(' -> ' . $deleteEmail); ?> 上記のファイルをqueue-read.phpとか名前を付けて /usr/share/php5 /home/hoge/queue-read.php とするとよい その後/etc/init.d/qmail startする |