【sendmail】mailqの処理の備忘録
メールシステムの運用を行うと、メールキューが溜まったり、またそれらをメンテナンスしたりと
比較的に、メールキューに近いところでシステム管理業務をすることが多いので、その備忘録。
なお、下記はsendmailをベースとした内容を前提としている。
目次
- 目次
- メールキューとは
- メールキューの再送間隔とかキューの保持期間とか。
- キューに保存されるファイル
- qfファイル
- dfファイル
- mailqの表示
- mailqの削除
- 実行中のmailq
- mailqから、キューIDのみ抽出する。
- 参考文献
メールキューとは
sendmailは、メールメッセージをすぐに配信することができなければ、 後で配信するためにそのメールメッセージを一時的に保存される。
この一時的に保存される場所のことが「キュー」と呼ばれる。
メールキューの再送間隔とかキューの保持期間とか。
確か、キューに保存されるとsendmailには以下のデフォルトが適用されると思ったが、定かでない。
- 再送間隔:1時間
- キュー内の保持最大期間:5日(当該期間を超過すると削除だったはず
※今度、しっかり調べる・・
キューに保存されるファイル
キューに保存されるメールメッセージは、2つに分類される
- qfファイル:メッセージヘッダ(キュー制御ファイル)
- dfファイル:メッセージ本文
qfファイル
メッセージヘッダ(キュー制御ファイル)を制御するqfファイルは 下記のような内容を保持している。
- メッセージの配信。(発信アドレスと受信者アドレス)
- メッセージの処理順序
- メッセージの期限切れによる削除
- メッセージの説明
実際には、下記のような内容となる。(※補足説明のために追加)
[root@mx-ns mqueue]# cat qfu7S5iNCP018797 V8(※バージョン) T1472363064(※キューに生成された日時) K1472364785(※最後に処理された時間) N2(※施行した回数) P210451(※優先度) I253/2/131555 MDeferred: mx1.mail.yahoo.co.jp.: No route to host(※キューに入った原因) Fbs $_localhost [127.0.0.1] $rESMTP $smx-ns.simalab.com ${daemon_flags} ${if_addr}127.0.0.1 S<ment@mx-ns.simalab.com> MDeferred: mx1.mail.yahoo.co.jp.: No route to host rRFC822; test@yahoo.co.jp RPFD:<test@yahoo.co.jp> H?P?Return-Path: <g>※以降はメールヘッダ情報 H??Received: from mx-ns.simalab.com (localhost [127.0.0.1]) by mx-ns.simalab.com (8.14.4/8.14.4) with ESMTP id u7S5iNCP018797 for <test@yahoo.co.jp>; Sun, 28 Aug 2016 14:44:24 +0900 H??Received: (from ment@localhost) by mx-ns.simalab.com (8.14.4/8.14.4/Submit) id u7S5iN7L018796 for test@yahoo.co.jp; Sun, 28 Aug 2016 14:44:23 +0900 H??From: ment@mx-ns.simalab.com H??Message-Id: <201608280544.u7S5iN7L018796@mx-ns.simalab.com> H??Date: Sun, 28 Aug 2016 14:44:23 +0900 H??To: test@yahoo.co.jp H??Subject: test H??User-Agent: Heirloom mailx 12.4 7/29/08 H??MIME-Version: 1.0 H??Content-Type: text/plain; charset=us-ascii H??Content-Transfer-Encoding: 7bit . [root@mx-ns mqueue]#
dfファイル
メール本文は、dfファイルとして、保存される。 たとえば、「test」というメール本文となるメールのdfファイルは 下記の通りとなる。
[root@mx-ns mqueue]# cat dfu7S5iNCP018797 test [root@mx-ns mqueue]#
mailqの表示
実際にメールキューを表示する場合は、「mailq」コマンドを実施する。
[root@mx-ns mqueue]# mailq /var/spool/mqueue (1 request) -----Q-ID----- --Size-- -----Q-Time----- ------------Sender/Recipient----------- u7S5iNCP018797 5 Sun Aug 28 14:44 <ment@mx-ns.simalab.com> (Deferred: mx1.mail.yahoo.co.jp.: No route to host) <test@yahoo.co.jp> Total requests: 1 [root@mx-ns mqueue]#
mailqの削除
メールキューを削除する場合は、通常は/var/spool/mqueue/のディレクトリ上で、 下記のとおり、実行する。
rm -f [dq]f[キューID]
キューIDを「u81EtjjS018075」を削除したい場合、下記のとおり実施し、 qfファイルとdfファイルを一緒に実行する。
※[dq]の後のfを忘れずに付ける。
[root@mx-ns mqueue]# cd /var/spool/mqueue/ [root@mx-ns mqueue]# rm -f [dq]fu81EtjjS018075
実行中のmailq
mailqを確認したとき、メッセージIDの右側にアスタリスク(*)があるメールキューは そのメッセージがロックされていることを示す。
[root@mx-ns ~]# mailq /var/spool/mqueue (2 requests) -----Q-ID----- --Size-- -----Q-Time----- ------------Sender/Recipient----------- u7S7aDBu020301* 2 Sun Aug 28 16:36 <ment@mx-ns.simalab.com> <test@yahoo.co.jp> [root@mx-ns ~]#
ロックされているファイルを先述の削除方法で、実行した場合、
うまく削除できない場合がある。
その場合は、当該プロセスを強制的に削除してから、削除する。
ファイルをロックしているプロセスを確認する。
[root@mx-ns ~]# ps -ef | grep sendmail root 1360 1 0 Aug27 ? 00:00:02 sendmail: accepting connections smmsp 1369 1 0 Aug27 ? 00:00:00 sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue root 20394 1 0 16:41 ? 00:00:00 sendmail: ./u7S7f0FQ020391 mx3.mail.yahoo.co.jp.: user open root 20411 20396 0 16:41 pts/0 00:00:00 grep sendmail [root@mx-ns ~]#
上記で、u7S7f0FQ020391をロックしているプロセスID20394を強制停止する。
[root@mx-ns ~]# kill -9 20394 [root@mx-ns ~]# ps -ef | grep sendmail root 1360 1 0 Aug27 ? 00:00:02 sendmail: accepting connections smmsp 1369 1 0 Aug27 ? 00:00:00 sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue root 20415 20396 0 16:41 pts/0 00:00:00 grep sendmail [root@mx-ns ~]# [root@mx-ns mqueue]# service sendmail status sendmail (pid 1360) を実行中... sm-client (pid 1369) を実行中... [root@mx-ns mqueue]#
再度mailqを表示する。u7S7f0FQ020391のアスタリスク(*)が消えていることを確認。
[root@mx-ns ~]# mailq /var/spool/mqueue (1 request) -----Q-ID----- --Size-- -----Q-Time----- ------------Sender/Recipient----------- u7S7f0FQ020391 5 Sun Aug 28 16:41 <ment@mx-ns.simalab.com> <test@yahoo.co.jp> Total requests: 1 [root@mx-ns ~]#
ファイルのロックが消えたら、当該キューIDを削除する。
[root@mx-ns ~]# cd /var/spool/mqueue/ [root@mx-ns mqueue]# rm -f [dq]fu7S7f0FQ020391 [root@mx-ns mqueue]# mailq /var/spool/mqueue is empty Total requests: 0 [root@mx-ns mqueue]#
mailqから、キューIDのみ抽出する。
mailqに大量のキューが溜まった場合、キューIDのみ 抽出したい場合のコマンド。(うまいかどうかはさておいて)
[root@mx-ns mqueue]# mailq | sed -e 's/\s\+/ /g' | cut -d' ' -f1 | grep "^u" u81FU89g026804 u81GU8bU009083 u81JleD0025444 u819U8pe002487* u81GU8bS009083 u81DU8CX029519 u81NSj96014787 u816U88x022456* u818U8rP020157 u81AU8jW017518 u816U891022456 u817U8En005000 u816U890022456 u819U8pd002487* u81G7g8M003629 u81BU8OZ032246 u817U8Eo005000* u818U8rQ020157* u817U8El005000* u817U8Em005000 u815U8VB007800* u81EtjjS018075* u81F7MY1020895 u81AQsV3016687 u7VI79np032048 u7UJU8fS020724* u7U1U8Ub011452 u7TNIIGO011127 u7T16129005631* [root@mx-ns mqueue]#
参考文献
- 作者: ブライアンコステールス,エリックオールマン,Bryan Costales,Eric Allman,中村素典,林秀幸
- 出版社/メーカー: オライリージャパン
- 発売日: 2004/04
- メディア: 単行本
- 購入: 3人 クリック: 11回
- この商品を含むブログ (5件) を見る