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。

前へ

Redisのインストールとちょっと使ったメモなど

次へ

PHPでIRCのログ収集を行うbotを作成

1 Comment

  1. […] 以前、qmailの大量キューをすべて削除するという記事でqmailのキューをすべて削除する方法を書きましたが、実際の運用では削除すべき大量のメールキューの中に、削除してはいけないキ […]

コメントは停止中です。

© SEEDS Co.,Ltd.