メールキューが大量にたまった際に、特定のアドレスのメールを削除するコマンドを下記にメモします。
まずメールキューの確認
[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コマンドを利用するとすきなように文字列を扱えるので、色々な方法で特定のメールを指定することができます。