SEEDS Creator's Blog

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

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

原因はスパム、ループ、メール送信テスト、とかでキューがあほほどたまってしまう事があります。 そんな時のキュー削除方法。

一般的なキュー削除方法

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

・qmHandle http://qmhandle.sourceforge.net/

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

上記のツールは特定のToやFromのキューを削除するなどができて大変便利です、が、 実は単にすべてのキューを削除したい場合は以下のコマンドでOKです。

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

大量にキューがある時

あるサーバーにキューが120万件たまっていました。 キュー全削除の為に上記コマンドを実行しようとしたらこのエラーです。

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

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

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

ただ、上記でも多すぎるとエラーになる時があって以下のシェルスクリプトを作ってみました。 さすがにこんだけ細かくしてやれば削除できるだろうと・・・。(120万件はうまくいきました)

queue_del.sh https://gist.github.com/4653448

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