postfixのキューをフィルタリングするやつ

たくさんメールサーバを管理してると、様々な理由でダメな感じの滞留キューを調べたり消したりしたくなることがあるわけですよ。

postfixだとmailqってコマンドでキューのサマリが取得できるんだけど、こいつは1レコード複数行なので、特定FromであったりToであったりでフィルタリングするのが結構きつい。

例えばawkで特定ToなキューIDを得ようとするとこんな事になってしまう。

mailq | awk 'BEGIN{FS="\n"; RS=""} /\n *todokanai@gmail.com\n?/{print $1}'| awk '{print $1}' | sed 's/\*//'

こんなもん覚えてられないし、覚えたとしても毎回こんなにタイプしたくない。

というわけで、perlでちゃちゃっと作ったのがこれ。

https://github.com/lamanotrama/mailq-filter

例えば上のawkでやってる例だと

mailq-filter -t todokanai@gmail.com

でいけるし、パイプで続けて

mailq-filter -t todokanai@gmail.com | postsuper -d -

とかやると、とても晴れやかな気分になると思います。なりました。