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
表現の中では、キューに入れられたメッセージのデータだけでなく、
制御ファイルのフィールドの内容を含むハッシュにもアクセスできる。
ハッシュは
%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
ファイルのパス名を指定してはならない。
sendmail(8)
qtool コマンドは sendmail 8.10
で登場した。