Postfixのメールキューを確認・削除する方法

Postfixのメールキューを確認・削除

Postfixのメールキューを確認・削除する方法を解説

Postfixを運用していると、メールが届かない、配送が遅い、大量のメールが滞留しているといったトラブルに遭遇することがあります。

そのような場合に最初に確認すべきなのがメールキューです。

Postfixは送信待ちや配送失敗したメールをメールキューへ保存し、一定時間ごとに再送を試みます。

そのためメール障害の調査ではメールキューの確認が欠かせません。

本記事ではPostfixのメールキューの仕組みや確認方法、再送方法、削除方法について解説します。

メールキューとは

メールキュー(Mail Queue)とは、SMTPサーバが配送処理中のメールを一時的に保存する仕組みです。

配送先サーバへ接続できない場合や、一時的なエラーが発生した場合でもメールを失わないために利用されます。

Postfixではすべてのメールが一度キューへ登録されてから配送されます。

正常な環境ではすぐに配送されるため、キューにはほとんど残りません。

メール配送の流れ

Postfixでは以下のような流れでメール配送が行われます。

メール送信
    ↓
メールキュー
    ↓
配送処理
    ↓
配送成功

配送に失敗した場合はキューへ残り、後で再送されます。

Postfixのキューディレクトリ

Postfixのメールキューは通常以下の場所で管理されています。

/var/spool/postfix

内部的には複数のキューに分類されています。

Postfixの主なキュー

キュー役割
incoming受信直後のメール
active配送中メール
deferred配送失敗メール
hold保留メール
corrupt破損メール

特にdeferredキューは障害調査で頻繁に確認します。

メールキューを確認する方法

最もよく利用されるコマンドはmailqです。

# mailq

実行するとキューに残っているメール一覧が表示されます。
例えば以下のような表示になります。

-Queue ID- --Size-- ----Arrival Time----
A1B2C3D4E5     1024  Jul 10 10:00:00
user@example.com
admin@test.com

配送待ちメールの状態を確認できます。

postqueueコマンドを利用する

mailqと同じ情報を表示できます。

# postqueue -p

内部的にはmailqとほぼ同じ動作です。

Postfix管理ではこちらを利用する管理者も多くいます。

キュー件数を確認する

キューに何件メールがあるか確認する方法です。

# mailq | grep "^[A-F0-9]" | wc -l

大量滞留の監視にも利用できます。

キューIDとは

各メールにはQueue IDが割り当てられています。

例えば以下の部分です。

A1B2C3D4E5

このIDを利用して個別のメールを操作できます。

キューの詳細を確認する

特定メールの詳細を確認します。

# postcat -q A1B2C3D4E5

メールヘッダや本文を確認できます。

障害調査時に便利です。

配送失敗メールを確認する

deferredキューにメールが残っている場合は何らかの問題があります。

ログも合わせて確認します。

# tail -f /var/log/maillog

または
# journalctl -u postfix -f

配送失敗の原因を特定できます。

メールを再送する方法

キューに残っているメールを即座に再送する場合です。

# postqueue -f

または
# postfix flush

どちらもキューを強制的に配送します。

障害復旧後によく利用されます。

特定メールを削除する

Queue IDを指定して削除します。

# postsuper -d A1B2C3D4E5

不要なメールだけを削除できます。

すべてのキューを削除する

全メールを削除する場合です。

# postsuper -d ALL

非常に危険なコマンドです。

本番環境では十分注意して実行してください。

deferredキューだけ削除する

配送失敗メールのみ削除できます。

# postsuper -d ALL deferred

障害発生後の整理で利用されることがあります。

メールを保留する方法

特定メールをholdキューへ移動します。

# postsuper -h A1B2C3D4E5

配送を一時停止できます。

調査時に便利です。

保留解除する方法

holdキューから戻します。

# postsuper -H A1B2C3D4E5

再び配送対象になります。

よくあるキュー滞留の原因

大量のメールがキューへ残る場合は以下を確認します。

  • DNS障害
  • ネットワーク障害
  • SMTPサーバ停止
  • MXレコード設定ミス
  • ブラックリスト登録
  • ディスク容量不足

特にDNS関連は非常によく発生します。

Host not foundエラー

ログ例です。

Host not found

DNS名前解決に失敗しています。

MXレコードやresolv.confを確認します。

Connection refusedエラー

ログ例です。

Connection refused

相手SMTPサーバへ接続できません。

ネットワークやファイアウォールを確認します。

Relay access deniedエラー

ログ例です。

Relay access denied

SMTPリレー設定や認証設定を確認します。

メールキュー監視の重要性

企業環境ではメールキュー件数を監視対象にすることがあります。

以下のような状態は異常の可能性があります。

  • キュー件数急増
  • deferredキュー増加
  • 配送遅延発生
  • 大量スパム送信

早期発見に役立ちます。

実務でよく利用するコマンド一覧

コマンド用途
mailqキュー確認
postqueue -pキュー表示
postqueue -f再送
postsuper -d ID削除
postcat -q ID詳細表示

これらはメールサーバ管理者が頻繁に利用するコマンドです。

まとめ

Postfixのメールキューは配送待ちや配送失敗メールを管理する重要な仕組みです。

mailqやpostqueue -pで状態を確認し、必要に応じて再送や削除を行います。

特にdeferredキューは障害発生時の重要な調査ポイントとなります。

メールサーバ運用ではキューの状態を定期的に確認し、異常を早期発見することが重要です。