FreeBSD 14.3 RELEASE - postfix - キュー操作


 クラウディア


1. 概要
2. 参照
3. 詳細
4. 再送
5. 削除
6. 参考サイト

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」くんを参考にさせていただきました。

AbemaTV 無料体験
【usus ウズウズ】