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 foundDNS名前解決に失敗しています。
MXレコードやresolv.confを確認します。
Connection refusedエラー
ログ例です。
Connection refused相手SMTPサーバへ接続できません。
ネットワークやファイアウォールを確認します。
Relay access deniedエラー
ログ例です。
Relay access deniedSMTPリレー設定や認証設定を確認します。
メールキュー監視の重要性
企業環境ではメールキュー件数を監視対象にすることがあります。
以下のような状態は異常の可能性があります。
- キュー件数急増
- deferredキュー増加
- 配送遅延発生
- 大量スパム送信
早期発見に役立ちます。
実務でよく利用するコマンド一覧
| コマンド | 用途 |
|---|---|
| mailq | キュー確認 |
| postqueue -p | キュー表示 |
| postqueue -f | 再送 |
| postsuper -d ID | 削除 |
| postcat -q ID | 詳細表示 |
これらはメールサーバ管理者が頻繁に利用するコマンドです。
まとめ
Postfixのメールキューは配送待ちや配送失敗メールを管理する重要な仕組みです。
mailqやpostqueue -pで状態を確認し、必要に応じて再送や削除を行います。
特にdeferredキューは障害発生時の重要な調査ポイントとなります。
メールサーバ運用ではキューの状態を定期的に確認し、異常を早期発見することが重要です。





