メールキュートは取り込まれたメールを管理する場所です。
ここでは、メールキューの構造とqmHandleというツールを利用した管理方法を説明します。
メールキュートは取り込まれたメールを管理する場所です。
ここでは、メールキューの構造とqmHandleというツールを利用した管理方法を説明します。
qmailのメールキューは/var/qmail/queue以下に保存されます。メールキュー内部はいくつかのディレクトリに分かれて保存されています。
ディレクトリには以下のファイルが保存されます。
bounce/メール番号 | エラーメールの送信元及びエラーの内容 |
---|---|
info/分割ディレクトリ/メール番号 | メールの表書きの発信者 |
intd/メール番号 | qmail-queueが生成するヘッダ情報 |
local/分割ディレクトリ/メール番号 | ローカル配送先のメールアドレス |
mess/分割ディレクトリ/メール番号 | メールの本文 |
pid/メール番号 | メッセージIDを決定するためのディレクトリ |
remote/分割ディレクトリ/メール番号 | リモート配送先のメールアドレス |
todo/メール番号 | 表書き、発信者、配送先を集約したもの |
メール番号 : メールのメッセージ番号
分割ディレクトリ : qmailでは、キューを高速に配送するためにデフォルトで0~22までのディレクトリに分けて管理しています。
# コンパイル時にconf-splitによって分割するディレクトリが決定するそうです。デフォルトは23
分割ディレクトリは以下の書式で決定されるようです。
分割ディレクトリ = メール番号 % (conf-split)
つまり、メール番号をconf-splitで割った余り値が分割ディレクトリになります。
これでは、どのスプールがキューにたまっているのか分かりにくいですよね。次に紹介するqmHandleをつかって簡単にキューを管理することが出来ます。
qmHandleとはqmailのキューを閲覧したり、特定のキューを削除したりできるすばらしいツールです。
Perlで記述されていますので動作に置いてperlが必要になります。
以下のURLから最新のソースを入手してください。
http://qmhandle.sourceforge.net/
今回はqmhandle-1.2.0をダウンロードしました。
http://voxel.dl.sourceforge.net/sourceforge/qmhandle/qmhandle-1.2.0.tar.gz
ここでは、qmhandle-1.2.0.tar.gzをダウンロードしたものとして説明します。
インストールは単純に展開するだけで完了です。
# tar xvfz qmhandle-1.2.0.tar.gz
GPL
HISTORY
README
qmHandle
ここで利用するのはqmHandleだけです。Perlスクリプトになっていますのでまずは利用する環境に応じて
$stopqmail : qmailの終了方法
$startqmail : qmailの開始方法
vi等のエディッタで設定します。
(1) /etc/rc.d/init.d/qmailを利用の場合
# For instance, this is if you have DJB's daemontools
#my ($stopqmail) = '/usr/local/bin/svc -d /service/qmail-send';
#my ($startqmail) = '/usr/local/bin/svc -u /service/qmail-send';
# While this is if you have a Debian GNU/Linux with its qmail package
my ($stopqmail) = '/etc/rc.d/init.d/qmail stop';
my ($startqmail) = '/etc/rc.d/init.d/qmail start';
(2) daemontoolsを利用の場合 (daemontoolsからサービス起動方法参照)
# For instance, this is if you have DJB's daemontools my ($stopqmail) = '/usr/local/bin/svc -d /var/service/qmail'; my ($startqmail) = '/usr/local/bin/svc -u /var/service/qmail'; # While this is if you have a Debian GNU/Linux with its qmail package #my ($stopqmail) = '/etc/init.d/qmail stop'; #my ($startqmail) = '/etc/init.d/qmail start';
あとは、/usr/local/bin/以下にでもqmHandleを移動すればよいでしょう。
# install -o root -g qmail -m 0755 qmHandle /usr/local/bin
qmHandleのオプションは以下のとおりです。
-a | 再配送 |
---|---|
-l | キュー内のローカルキュー・リモートキューのヘッダーとサマリー情報を表示 |
-L | ローカルキューのヘッダーとサマリー情報を表示 |
-R | リモートキューのヘッダーとサマリー情報を表示 |
-s | キューの数を表示 |
-mN | メール番号Nの内容表示 |
-dN | メール番号Nの削除 |
-D | キュー内のすべてのメールを削除 |
(使用例)
(1) キュー内の情報を表示
# qmHandle -l
337680 (17, L)
Return-path:
From:
To:
Subject: testmail
Date: 21 Jun 2004 17:28:35 +0900
Size: 2640 bytes
338094 (17, L)
Return-path:
From:
To:
Subject: testmail2
Date: 26 Jun 2004 03:24:24 +0900
Size: 7134 bytes
337778 (0, R)
Return-path:
From:
To:
Subject: testmail
Date: 24 Jun 2004 15:25:12 +0900
Size: 4662 bytes
337710 (1, R)
Return-path:
From:
To:
Subject: testmail2
Date: 23 Jun 2004 21:37:02 +0900
Size: 1806 bytes
Messages in local queue: 2
Messages in remote queue: 2
これはローカルキューに
メール番号 337680,338094 のスプールがあり
リモートキューに
メール番号 337778,337710 のスプールがあることになります。
(2) キューの内容確認
メール番号337680のキューを確認します。
# qmHandle -m337680
--------------
MESSAGE NUMBER 337680
--------------
Received:
Received:
Received:
Date: 21 Jun 2004 17:28:35 +0900
From:
To:
Subject: failure notice
テストメールです。
(3) キューの削除
メール番号337680のキューを削除します。
消す際はqmHandleが停止をして削除したのち起動するようですが、タイミングによって起動最低な鋳物として判定されることもありますのでqmailを停止した後に以下のコマンドを実行することをお勧めします。
# qmHandle -d337680
Qmail isn't running... no need to stop it.
Deleting message 14/337677...
Qmail wasn't running when qmHandle was started, so it won't be restarted.
起動してなかったので再起動してくれってことですね。(^^;
数件だけ消すのであれば停止せず、利用しても問題ないと思います。
Q-Mail Oreilly & Associates Inc / John R. Levine, Russell Nelson ¥ 3,965 |
|
The Qmail Handbook Apress / Dave Sill ¥ 5,021 |
|
Running Qmail (Sams White Book Series) Sams / Richard Blum |