名前
qtool - sendmail のキューを操作する
書式
qtool.pl [options] target_directory source [source ...]
qtool.pl [-d|-b] [options] source [source ...]
説明
qtool は sendmail が使用するキューファイルをキューディレクトリ間で移動する。 sendmail と同じロック機構を使うので、 sendmail が稼働している間も安全に使用できる。
オプションが指定されていない場合、 qtool は source で指定された全てのキューファイルを ディレクトリ 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 | 以下の値を持つことできる文字配列。
| ||||||||||||||
headers | |||||||||||||||
これは Perl のハッシュで、rfc822 フィールド名をキー、 rfc822 フィールド値を値にしている。 フィールドに 1 つしか値がない場合、値は文字列として返される。 (Received のように) フィールドに 2 つ以上の値がある場合、 値は文字列のリストとして返される。 | |||||||||||||||
inode_number | |||||||||||||||
データ (ボディ) ファイルの i ノード番号。 | |||||||||||||||
next_delivery_time | |||||||||||||||
次の配送が試みられる最も早い時刻。 | |||||||||||||||
num_delivery_attempts | |||||||||||||||
配送を試みた回数。 | |||||||||||||||
macro | 定義されたマクロ。 | ||||||||||||||
message | |||||||||||||||
エンベロープ状態のメッセージ。 | |||||||||||||||
original_recipient | |||||||||||||||
本来の受信者 (ORCPT= パラメータ)。 | |||||||||||||||
priority | |||||||||||||||
変更されたメッセージの優先度。 | |||||||||||||||
recipient | |||||||||||||||
コロンと受信者名が後に続く文字フラグの配列。フラグを以下に示す。
| |||||||||||||||
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 ファイルのパス名を指定してはならない。
関連項目
sendmail(8)
履歴
qtool コマンドは sendmail 8.10 で登場した。