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。