3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

postfixのキューから特定条件のメールを1行コマンドで削除する(postque,postsuper,xargs)

Last updated at Posted at 2020-01-19

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運用もエンジョイしていきましょう。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?