1. 概要
メールサーバでは、キューが溜まったままになることがあります。
「qmail」では、キューの操作をするには、「qmHandle」というパッケージが必要でしたが、「postfix」では、もともとパッケージの中に含まれているようです。
以下の操作は、すべて「root」ユーザ権限で。
2. 参照
キューを参照するには、下記のいずれかのコマンドを使用します。
mailq
postqueue -p
どちらも結果は同じようです。
例えば、下記のように表示されます。
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
ED3044C146 8233 Thu Jul 10 04:06:52 root
root
B56F632AD7B 685 Thu Jul 10 11:34:29 www
user@example.com
8C13A1D6974 89073 Tue Jul 15 08:03:41 techtarget@tt.itmedia.co.jp
(delivery temporarily suspended: conversation with 127.0.0.1[127.0.0.1] timed out while receiving the initial server greeting)
user@example.com
-- 12 Kbytes in 3 Requests.
溜まっている、キューの数だけ知りたい場合は。
mailq | grep -c '^[A-F0-9]'
キューの「ID」の行だけ抜き出して、数を数えているわけですな。
上記の状態で、実行すると。
3
ということになります。
3. 詳細
キューの詳細を調べたい場合は。
postcat -q queue_id
さらに詳しく調べたい場合は。
postcat -vq queue_id
例えば、上記の「8C13A1D6974」を見てみたら、下記のように表示されました。
*** ENVELOPE RECORDS deferred/8/8C13A1D6974 ***
message_size: 89073 825 1 0 89073 0
message_arrival_time: Tue Jul 15 08:03:41 2025
create_time: Tue Jul 15 08:03:41 2025
content_filter: smtp-amavis:[127.0.0.1]:10024
・・・ 略 ・・・
regular_text: </body>
regular_text:
regular_text: </html>
regular_text: --=_bffeff3da0c2711f57393cfa4934763c--
pointer_record: 0
*** HEADER EXTRACTED deferred/8/8C13A1D6974 ***
named_attribute: message_id=<20250715080341.255650@itmms-246251.itmedia.co.jp>
pointer_record: 0
*** MESSAGE FILE END deferred/8/8C13A1D6974 ***
ヘッダのみ読みたい場合は。
postcat -q -h queue_id
あるキューを見てみたら、こんな感じでした。
Received: from sub.example.com (sub.example.com [203.0.113.3])
by ns.example.com (Postfix) with ESMTP id 820DA1D6909
for <root@example.com>; Tue, 15 Jul 2025 00:58:25 +0900 (JST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=sub.example.com; s=mail;
t=1752508705; bh=2x64lU4/4nyKuBLCIknpcKaghrFoAJW3O7L8/F69s1E=;
h=From:To:Subject:Date;
b=Lrs+rTqBa6mF1ooBAWxRu+2+3/CHA7L4tVosSTwmjZ1KQRPSy3C81lgbq+jaJfMwx
GznUcpWOxw6+4S5s1kyBPWXjx3ymneOId3ftYSMg3CFzFuna1hJeVoNP/DEaxJpL7t
ZKKdivC5zcXNS5rTm9h9RH1OMNAFsa8lu3YAXTMU=
・・・ 略 ・・・
From: Cron Daemon <root@sub.example.com>
To: root@example.com
Subject: Cron <root@nt> /usr/local/bin/perl -e 'sleep int(rand(3600))'; /root/sh/certbot.sh
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin>
X-Cron-Env: <MAILTO=root@example.com>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Message-Id: <20250714155825.06053358D1D@sub.example.com>
Date: Tue, 15 Jul 2025 00:58:20 +0900 (JST)
4. 再送
キューの再送を試みるには。
postsuper -r queue_id
前々項の状態で。
postsuper -r B56F632AD7B
したら。
postsuper: Requeued: 0 messages
てなことになりまして。
やっぱ、再送してもうまくいかないもんは、うまくいかないようです。
一括で、全部再送するには。
postqueue -f
5. 削除
削除するには。
postsuper -d queue_id
前々項の状態で。
postsuper -d B56F632AD7B
したら。
postsuper: B56F632AD7B: removed
postsuper: Deleted: 1 message
となりまして、ログに。
Jul 10 18:31:34 nt postfix/postsuper[34659]: B56F632AD7B: removed
Jul 10 18:31:34 nt postfix/postsuper[34659]: Deleted: 1 message
と出力されました。
うまく消えたようです。
すべてのキューを削除するには。
postsuper -d ALL
6. 参考サイト
本ページは、「ChatGPT」くんを参考にさせていただきました。