qtool(8) sendmail のキューを操作する

書式

qtool.pl [options] target_directory source [source ...]

qtool.pl [-d|-b] [options] source [source ...]

説明

qtool は sendmail が使用するキューファイルをキューディレクトリ間で移動する。 sendmail と同じロック機構を使うので、 sendmail が稼働している間も安全に使用できる。

オプションが指定されていない場合、 qtoolsource で指定された全てのキューファイルを ディレクトリ target_directory に移動する。 source は、キュー制御ファイル・キューファイルの ID・ キューディレクトリのどれでもよい。

-d オプションが指定された場合、qtool は source で指定されたメッセージを 移動ではなく削除する。

-b オプションが指定された場合、選択されたメッセージは -OTimeout.queuereturn=now オプションをつけた sendmail を実行することにより バウンスされる (送信者に送り返される)。

オプション

-b
source で指定された全てのメッセージをバウンスする。 メッセージはすぐにバウンスされる。 メッセージの配送を試みない。
-C configfile
sendmail の設定ファイルを指定する。 デフォルトは /etc/mail/sendmail.cf である。
-d
source で指定された全てのメッセージを削除する。
-e perl_expression
source で指定されたキューファイルについて、 perl_expression を評価する。 perl_expression が真と評価された場合、そのキューファイルは移動される。 perl_expression の詳細については、下記を参照すること。
-s seconds
source で指定されたキューファイルのうち 修正時刻が seconds 秒より前のものだけを移動する。

Perl 表現

このプログラムでは Perl 表現を使うことができる。 Perl 表現の中では、キューに入れられたメッセージのデータだけでなく、 制御ファイルのフィールドの内容を含むハッシュにもアクセスできる。 ハッシュは %msg という名前である。 フィールドに複数の値がある ('Recipient' のような) 場合、 値は配列として返される。 値が 1 つの場合、値はスカラーで返される。 ハッシュ %msg を使って、以下の値にアクセスすることができる。
auth
AUTH= パラメータ。
body_type
ボディタイプ (8BITMIME, 7BIT, または未定義)。
body_last_mod_time
ボディが最後に修正された時刻。紀元年 (epoch) から秒数で表す。
body_size
ボディファイルのサイズ (バイト単位)。
charset
文字セット (将来使用するためにある)。
content-length
Content-Length: ヘッダー値 (Solaris の sendmail のみ)。
controlling_user
制御しているユーザー。
control_last_mod_time
制御ファイルが最後に修正された時刻。紀元年 (epoch) から秒数で表す。
control_size
制御ファイルのサイズ (バイト単位)。
creation_time
制御ファイルが生成された時刻。
data_file_name
データファイル名 (使わない方が良い)。
envid
ESMTP で送られてきたオリジナルのエンベロープの ID。
error_recipient
エラーの場合の受信者 (使わない方が良い)。
flags
以下の値を持つことできる文字配列。
w
警告メッセージが送信された。
r
エラー応答、または DSN。
8
ボディに 8 ビットのデータがある。
b
Bcc: ヘッダーを削除する。
d
エンベロープに DSN RET= パラメータがある。
n
ボディを返さない。
headers
これは Perl のハッシュで、rfc822 フィールド名をキー、 rfc822 フィールド値を値にしている。 フィールドに 1 つしか値がない場合、値は文字列として返される。 ('Received' のように) フィールドに 2 つ以上の値がある場合、 値は文字列のリストとして返される。
inode_number
データ (ボディ) ファイルの i ノード番号。
next_delivery_time
次の配送が試みられる最も早い時刻。
num_delivery_attempts
配送を試みた回数。
macro
定義されたマクロ。
message
エンベロープ状態のメッセージ。
original_recipient
本来の受信者 (ORCPT= パラメータ)。
priority
変更されたメッセージの優先度。
recipient
コロンと受信者名が後に続く文字フラグの配列。フラグを以下に示す。
N
NOTIFY= パラメータがある。
S
要求した DSN が成功した。
F
要求した DSN が失敗した。
D
要求した DSN が遅れている。
P
(alias または forward で展開される前の) 元々のアドレス。
sender
送信者。
version
制御ファイルのバージョン。

qtool.pl q2 q1
キューディレクトリ q1 にあるキューファイルを キューディレクトリ q2 に移動する。
qtool.pl q2 q1/d6CLQh100847
キューディレクトリ q1 にある ID が d6CLQh100847 のメッセージを キューディレクトリ q2 に移動する。
qtool.pl q2 q1/qfd6CLQh100847
キューディレクトリ q1 にある ID が d6CLQh100847 のメッセージを キューディレクトリ q2 に移動する。
qtool.pl -e '$msg{num_delivery_attempts} == 3' /q2 /q1
今までに 3 回配送が試みられた全てのキューファイルを キューディレクトリ q1 から q2 に移動する。

バグ

sendmail 8.12 では、メッセージの qf ファイルと df ファイルを 別々のキューに格納することができる。 この場合、qtool には df ファイルのパス名ではなく、 qf ファイルのパス名を指定しなければならない。 安全のため、絶対に qtool に df ファイルのパス名を指定してはならない。

履歴

qtool コマンドは sendmail 8.10 で登場した。