postfix 特定のメールキューを一括削除する メモ

メールキューが大量にたまった際に、特定のアドレスのメールを削除するコマンドを下記にメモします。

まずメールキューの確認

[root@testhost~]# mailq
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
41D33101C0DC     305 Thu Dec 23 00:39:22  sousinmoto@example.com
                                         sousinsaki@example.com

A2388101C0DD     305 Thu Dec 23 00:40:37  ssousinmoto@example.com
                                         sousinsaki@example.com

-- 1 Kbytes in 2 Requests.

※41D33101C0DCの部分がキューID

メールキューが多すぎる場合は、mailq > hogehoge.txt などして確認する。

対象のメールキューの削除は、

# postsuper -d キューID

全部のメールキュー削除は、

# postsuper -d ALL

★実際に特定の送信元メールアドレスのキューID削除
※注意!ちゃんと理解して使わないと危険!自己責任で触ってね

mailq | tail -n '+2'  | grep -v '^ *(' | awk 'BEGIN { RS = "" } { if (
$7 == "sousinmoto@example.com" ) print $1 }'| tr -d '*!' | postsuper
-d -

awkコマンドを利用するとすきなように文字列を扱えるので、色々な方法で特定のメールを指定することができます。