hero_picture

qmailの大量キューをすべて削除する

qmailのキューを削除する方法。

原因はスパム、ループ、メール送信テスト、とかでキューがあほほどたまってしまう事があります。

そんな時のキュー削除方法。

一般的なキュー削除方法

一般的には以下の方法でキューを削除します

・qmHandle

http://qmhandle.sourceforge.net/

・queue-fast

http://www.kawa.net/works/qmail/queue-fast.html

上記のツールは特定のToやFromのキューを削除するなどができて大変便利です、が、

実は単にすべてのキューを削除したい場合は以下のコマンドでOKです。

1qmailを停止してから
2# rm -f /var/qmail/queue/*/*/*
3

大量にキューがある時

あるサーバーにキューが120万件たまっていました。

キュー全削除の為に上記コマンドを実行しようとしたらこのエラーです。

1# rm -f /var/qmail/queue/*/*/*
2/bin/rm: 引数リストが長すぎます
3もしくは
4-bash: /bin/rm: Argument list too long
5

こういう時はxargsというコマンドを行うとよい。

1echo /var/qmail/queue/*/*/* | xargs rm
2

ただ、上記でも多すぎるとエラーになる時があって以下のシェルスクリプトを作ってみました。

さすがにこんだけ細かくしてやれば削除できるだろうと・・・。(120万件はうまくいきました)

queue_del.sh

https://gist.github.com/4653448

すごい力技。。

forくらい使わないとって感じだけど検証も面倒なのでこれでOK。