postfixを運用していて、アプリの不具合とかテストの設定漏れなどで送信されずにBlockされ続けるようなメールを、一発で削除するためのコマンドです。
注意:消す前に、必ず postqueue -p で確認して本当に消して良いメールかを3回くらい考えてください。消したものを再送するのは大変なはずです
具体的には以下。
postqueue -p | grep <消したいメールを絞り込む条件> | awk '{print $1}'| xargs -L 1 postsuper -d
私の場合は以下のように利用しています。アプリが不具合なのかテストなのかで時々変なメールを送ってしまうことがあってちょいちょい消すことが必要になりました。メールのエイリアス部に teiki_test_bounce
が必ず含まれるのでこうしています。
postqueue -p | grep teiki_test_bounce | awk '{print $1}'| xargs -L 1 postsuper -d
コマンド解説
簡単にコマンドの説明を。
コマンド | 説明 |
---|---|
postqueue -p | postfixのキューの情報を表示してくれます。削除するためのqueue_idや、送信元/先アドレスも確認ができます |
grep <消したいメールを絞り込む条件> | grepで絞り込みます。削除したい要件によってはここが複雑になるでしょう |
awk '{print $1}' | postqueue -p の結果から postsuper に渡すためのqueue_idを取得してます。良くある1列目だけ"射影"する使い方です |
xargs -L 1 | xargsはパイプで渡された値を連続実行できる便利コマンドです。 -L 1 で1行ずつ実行するとしています。理由はデフォだと一度に複数の値が渡されてしまい、postsuper -d がそれに対応していないためです |
postsuper -d | xargsから渡されたqueue_idを削除するコマンドです。実際は postsuper -d <queue_id> のように実行されています。 |
最近ではなかなか自前postfixも減ってきてる気がしますが、あるところにはあるのでpostfix運用もエンジョイしていきましょう。