PIPE(8) PIPE(8)
名前
pipe - Postfix 外部コマンドへの配送
書式
pipe [generic Postfix daemon options] command_attributes...
解説
pipe(8) デー モ ン は Postfix キューマネージャから外部コマンドへのメッ
セージ配送要求を処理します。このプログラムは master(8) プロセス マ ネー
ジャから起動されることを想定しています。
送 信者アドレスや受信者アドレス、次に渡すホスト名のようなメッセージの属
性は、外部コマンドが実行される前に展開されるコマンドラインマクロとし て
指定することができます。
pipe(8) デーモンはキューファイルを更新し、受信者を終わったものとしてマーク
するか、キューマネージャに後で再び試行するように通知します。配送状態 の
レポートは bounce(8)、defer(8) または trace(8) デーモンの適切なものに送
られます。
単一受信者への配送
外部コマンドには一つの配送要求につき一つ以上の受信者を扱えないものが あ
ります。このような配送方法の例は、ページャ(ポケットベル)、 FAX マシンな
どがあります。
Postfix が1つの配送につき複数の受信者に送らないようにするには、次のよう
に Postfix main.cf ファイルで指定します
transport_destination_recipient_limit = 1
こ こで transport は Postfix master.cf エントリの pipe ベースな配送方法
の1番目のカラムにある名前です。
コマンド属性の文法
外部コマンドの属性は master.cf ファイルのサービスの定義の最後で与えられ
ます。文法は次のとおりです:
directory=pathname (オプション、デフォルト: $queue_directory)
外部コマンドを実行する前に指定されたディレクトリに変更します。失
敗すると配送は遅延されます。
この機能はPostfix 2.2で使えます。
eol=string (オプション、デフォルト: \n)
出力レコードの区切り文字。たいていは \r\n または \n のどちらかを
使 います。普通のC形式のバックスラッシュエスケープシーケンスが認
識されます: \a \b \f \n \r \t \v \ddd (最大3つの8進数) お よ び
\\。
flags=BDFORhqu.> (オプション)
オプションのメッセージ処理フラグ。デフォルトではメッセージは変更
せずにコピーされます。
B それぞれのメッセージの最後に空行を加えます。これは前に 空
行がある場合のみに "From " 行を認識するようなメールユーザ
エージェントが必要とします。
D エンベロープ受信者アドレスを持つ "Delivered-To: recipi-
ent" メッセージヘッダを前に付加します。注意: これが働くた
めには transport_destination_recipient_limit が 1 でな け
ればいけません。
この機能はPostfix 2.0で使えます。
F "From sender time_stamp" エンベロープヘッダをメッセージ本
体の前に付加します。これは、例えば UUCP ソフトウェアな ど
により求められます。
O Postfix に与えられた受信者アドレスを持つ "X-Original-To:
recipient" メッセージヘッダを前に付加します。注意: これが
働 く ためには transport_destination_recipient_limit が 1
でなければいけません。
この機能はPostfix 2.0で使えます。
R Return-Path: メッセージヘッダをエンベロープ送信者アドレス
に付加します。
h コマンドライン $recipient ドメイン名や $nexthop ホスト名
を小文字に変換します。これは UUCP での配送に推奨されま す
。
q コマンドライン $sender や $recipient アドレスのローカル部
分 (最も右側の @ 文字の左側のテキスト) にある空白や他の特
殊 文字を RFC 822 の 8 ビット透過バージョンに従って引用符
が付けられます。これは UUCP や BSMTP での配送に推奨されま
す。
結果は Postfix sendmail(1) メール投函コマンドによるコマン
ドライン受信者のアドレスのパースと互換です。
q フラグはアドレス全体だけに影響をおよ ぼ し 、$user や
$extension、$mailbox コマンドラインマクロといった部分アド
レス情報には影響しません。
u コマンドライン $recipient ローカル部分 (最も右側の @ 文字
の 左側のテキスト) を小文字に変換します。これは UUCP での
配送に推奨されます。
. "." で始まる行の前に "." を付けます。これは例えば、 BSMTP
ソフトウェアで必要です。
> ">" を "From " で始まる行の前に付加します。これは例えば
UUCP ソフトウェアなどにより求められます。
size=size_limit (オプション)
この制限(バイト単位)よりも大きなサイズのメッセージは送信者にバウ
ンスされます。
user=username (必須)
user=username:groupname
外部コマンドは username で指定された権限で実行されます。ソフトウ
ェアは root 権限またはメールシステム所有者権限の外部コマンドを拒
否します。groupname が指定されると、対応するグループ ID が user-
name のグループ ID のかわりに使われます。
argv=command... (必須)
実行されるコマンド。これは最後のコマンド属性として指定されなけれ
ばいけません。コマンドは直接実行されます。つまり、シェルのメタ文
字はシェルコマンドの解釈を受けません。
コマンド引数ベクトルでは、次のマクロが認識されて、Postfix キュー
マネージャ配送要求から得た対応する情報に置き換えられます。
${name} の形式に加えて、$name や $(name) も認識されます。単一 の
$ がほしいときは $$ を指定します。
${client_address}
こ のマクロはリモートクライアントネットワークアドレスに展
開されます。
これはPostfix 2.2以降で使えます。
${client_helo}
このマクロはリモートクライアント HELO コマンドパラメー タ
に展開されます。
これはPostfix 2.2以降で使えます。
${client_hostname}
このマクロはリモートクライアントホスト名に展開されます。
これはPostfix 2.2以降で使えます。
${client_protocol}
こ の マ クロはリモートクライアントプロトコルに展開されま
す。
これはPostfix 2.2以降で使えます。
${extension}
こ のマクロは受信者アドレスの拡張部分に展開されます。たと
えば user+foo@domain というアドレスであれば、拡張部 分 は
foo です。
${extension} を含むコマンドライン引数は、コマンドライン引
数と同じ数の受信者に展開されます。
この情報は u フラグによって小文字に変換されます。
${mailbox}
このマクロは受信者アドレスのローカル部分全体に展開され ま
す 。 たとえば user+foo@domain ならば mailbox は user+foo
です。
${mailbox} を含むコマンドライン引数はコマンドライン引数と
同じ数の受信者に展開されます。
この情報は u フラグによって小文字に変換されます。
${nexthop}
このマクロは次に渡すホスト名に展開されます。
この情報は h フラグによって小文字に変換されます。
${recipient}
このマクロは受信者アドレス全体に展開されます。
${recipient} を含むコマンドライン引数はコマンドライン引数
と同じ数の受信者に展開されます。
この情報は hqu フラグによって引用符が付けられたり、小文字
に変換されます。
${sasl_method}
このマクロはメッセージの受信中に使われたSASL認証メカニ ズ
ムに展開されます。 SASL認証なしにメッセージが受け取られる
と空文字列が渡されます。
これはPostfix 2.2以降で使えます。
${sasl_sender}
このマクロはメッセージの受信中に使われたSASL送信者名 ( つ
まりRFC 2554でいう元の送信者) に展開されます。
これはPostfix 2.2以降で使えます。
${sasl_username}
こ のマクロはメッセージの受信中に使われたSASLユーザ名に展
開されます。 SASL認証なしにメッセージが受け取られると空文
字列が渡されます。
これはPostfix 2.2以降で使えます。
${sender}
このマクロはエンベロープの送信者アドレスに展開されます。
この情報は q フラグによって引用符が付けられます。
${size}
このマクロは Postfix から見たメッセージサイズに展開され、
これはほぼ配送されるメッセージのサイズになります。
${user}
このマクロは受信者アドレスのユーザ名部分に展開されます 。
た とえば、アドレス user+foo@domain のユーザ名部分は user
です。
${user} を含むコマンドライン引数はコマンドライン引数と 同
じ数の受信者に展開されます。
この情報は u フラグによって小文字に変換されます。
診断
コマンド終了状態コードは <sysexits.h> の定義の慣例に従うことが期待さ れ
ます。
問 題や処理は syslogd(8) に記録されます。不正なメッセージファイルはキュ
ーマネージャが詳細な検査をするために corrupt キューに移動できるようにマ
ークされます。
セキュリティ
このプログラムは2つの性格を必要とします。1) プライベート Postfix キュー
や IPC メカニズムへのアクセス と 2) 特定ユーザとしての外部コマンドの 実
行。それゆえ、セキュリティに注意を払う必要があります。
設定パラメータ
pipe(8) プロセスは限られた短時間しか動かないため、main.cf への変更は自
動的に拾われます。この変更を早くしたければ "postfix reload" コマンド を
使ってください。
以 下 の 文 章 はパラメータの概要のみを提供します。例を含む詳細は post-
conf(5) を参照してください。
リソースと速度の制御
下の文章で、transport は master.cf エントリの最初のフィールドです。
transport_destination_concurrency_limit ($default_destination_concur-
rency_limit)
指定された transport を使った、同じ配送先への並列配送の数を制 限
し ます。この制限は Postfix キューマネージャによって強制されます
。
transport_destination_recipient_limit ($default_destination_recipi-
ent_limit)
指定された transport を使った、メッセージ配送ごとの受信者数を 制
限 します。この制限は Postfix キューマネージャによって強制されま
す。
transport_time_limit ($command_time_limit)
指定された transport を使った、外部コマンドへの配送時間を制限 し
ます。この制限は pipe 配送エージェントによって強制されます。
その他の制御
config_directory ('postconf -d' の出力を参照)
Postfix main.cf および master.cf 設定ファイルのデフォルトの場所
。
daemon_timeout (18000s)
ビルトイン監視タイマーによって終了するまでの、Postfix デーモンプ
ロセスが要求を扱うことができる時間。
export_environment ('postconf -d' の出力を参照)
Postfix プロセスが非 Postfix プロセスに渡す環境変数のリスト。
ipc_timeout (3600s)
内部通信チャネルを使った情報の送受信の時間制限。
mail_owner (postfix)
Postfix キューおよびほとんどの Postfix デーモンプロセスを所有す
る UNIX システムアカウント。
max_idle (100s)
Postfix デーモンプロセスが終了するまでに次のサービス要求を待つ最
大時間。
max_use (100)
Postfix デーモンプロセスが終了するまでの接続要求の最大数。
process_id (read-only)
Postfix コマンドまたはデーモンプロセスのプロセス ID。
process_name (read-only)
Postfix コマンドまたはデーモンプロセスのプロセス名。
queue_directory ('postconf -d' の出力を参照)
Postfix トップレベルキューディレクトリの場所。
recipient_delimiter (empty)
ユーザ名と拡張アドレス (user+foo) の間の区切り。
syslog_facility (mail)
Postfix ロギングの syslog facility 名。
syslog_name (postfix)
例 えば "smtpd" が "postfix/smtpd" となるようにするために syslog
レコードのプロセス名の前に付けられるメールシステムの名前。
関連項目
qmgr(8), キューマネージャ
bounce(8), 配送状態レポート
postconf(5), 設定パラメータ
master(5), 一般的なデーモンオプション
master(8), プロセスマネージャ
syslogd(8), システムロギング
ライセンス
The Secure Mailer license はこのソフトウェアと一緒に配布されなければ い
けません。
作者
Wietse Venema
IBM T.J. Watson Research
P.O. Box 704
Yorktown Heights, NY 10598, USA
PIPE(8)