理想未来ってなんやねん

娘可愛い。お父さん頑張る。

postfixでキューに溜まった特定の送信元、送信先のメールを一括削除する方法

テストなどの際にメールを大量に送ることが稀にありますが、送ったメールがキューに溜まってしまうことがあります。

キューに溜まったメールはmailqコマンドで確認できます。
又、削除するにはpostsuperコマンドで行えます。

特定のメールを削除する場合

特定のメールを削除する場合はキューIDを指定します。

postsuper -d キューID

1件ずつ指定しなければならないため面倒です。

全てのメールを削除する場合

全てのメールを削除する場合はALLを指定します。

postsuper -d ALL

まとめて全て削除してくれますので非常に楽ですが、必要なメールも削除してしまう可能性があります。

本題:特定の送信元、送信先のメールを一括削除する方法

特定の送信元、送信先のメールを一括削除するには下記のコマンドで行えます。
送信元アドレス、送信先アドレスは状況に応じて適当に書き換えて下さい。

mailq | tail -n '+2'  | grep -v '^ *(' | awk 'BEGIN { RS = "" } { if ( $7 == "送信元アドレス" && $8 == "送信先アドレス" && $9 == "") print $1 }'| tr -d '*!' | postsuper -d -

mailqコマンドで調べたキューの内容をawkで条件比較し加工して、postsuperに渡しています。
簡単ですね。

P.S.

上記のコマンドですが、実はman postsuperに載っている例を加工しただけだったりします。
マニュアルを読むといろんな事が分かりますね。