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に載っている例を加工しただけだったりします。
マニュアルを読むといろんな事が分かりますね。