こんにちは!Linuxサーバーでメールサーバー(Postfix)の構築や運用保守、トラブル対応、日々お疲れ様です。
メールサーバーを運用していると、
-
「ループや大量送信テストの影響で、配信待ちのメール(キュー)が数千件も溜まってしまった!」
-
「エラーメールが配信キューに滞留し続けているので、一度すべて綺麗にリセットしたい」
という緊急事態に遭遇することがあります。
今回は、Postfixのキューを安全に、かつ一瞬で全削除する神コマンドと、合わせてよく使う設定確認用の便利コマンドをまとめました。
1. Postfixで溜まったメールキューを「全削除」するコマンド
Postfixに溜まっているすべての配信待ち・エラー滞留メールを完全に削除するには、postsuper コマンドを使用します。
➔ キューの全削除コマンド
$ sudo postsuper -d ALL
💡 コマンドの解説
-
-dオプションは「Delete(削除)」を意味します。 -
引数に
ALL(大文字)を指定することで、現在Postfixが保持しているすべてのキュー(incoming、active、deferred、holdなど)を対象に、一括で丸ごと削除してくれます。
⚠️ 実行前の注意点
このコマンドを実行すると、まだ相手に届いていない送信途中の重要なメールも含めてすべて消去されます。 「特定の宛先だけ消したい」「エラーメール(deferred)だけ消したい」という場合は、以下のように使い分けるのが安全です。
-
エラーで滞留しているメール(deferred)だけを削除する場合:
Bash$ sudo postsuper -d ALL deferred
2. 現在の設定(TLSの暗号化レベルなど)を確認するコマンド
Postfixの設定を変更したあとや、「現在の暗号化設定はどうなっていたっけ?」と確認したいときに重宝するのが postconf コマンドです。
通常、設定ファイル(main.cf)の中身を cat や grep で見に行く人が多いですが、postconf を使えば「デフォルト値も含めた、システムが実際に認識している現在の設定」をスマートに確認できます。
➔ TLSのセキュリティレベルを確認するコマンド
$ postconf | grep smtp_tls_security_level
💡 出力結果の読み方(例)
コマンドを実行すると、以下のような現在の設定値が表示されます。
smtp_tls_security_level = may
この値(セキュリティレベル)が何を意味しているかで、サーバーの挙動が変わります。
-
none:TLS暗号化を一切使用しない(平文通信のみ)。 -
may:相手のサーバーが対応していればTLSで暗号化し、非対応なら平文で送る(日和見暗号化・おすすめ設定)。 -
encrypt:強制的にTLS暗号化を使用する。相手が非対応ならメールを送信しない(強力なセキュリティ)。
「設定ファイルを書き換えたはずなのにうまく動かない」という時は、main.cf を直接見に行く前に、この postconf コマンドを叩いて Postfix側が本当にその設定値で動いているか を確認するのがトラブルシューティングの近道です。
まとめ
Postfixのトラブル対応や設定変更の際に、今回の2つのコマンドを覚えておくと作業がとてもスムーズになります。
-
キューを全消去してスッキリさせるなら:
postsuper -d ALL -
現在の設定(TLS設定など)を確実に見るなら:
postconf | grep [設定名]
特に postsuper -d ALL は一撃で全てのメールが消える強力なコマンドなので、実行する際は本番環境のコンテキストをしっかり確認した上で、安全に作業を行ってくださいね!
