PIPE(8) PIPE(8) 名前 pipe - Postfix 外部コマンドへの配送 書式 pipe [generic Postfix daemon options] command_attributes... 解説 pipe デーモンは Postfix キューマネージャから外部コマンドへのメッセージ 配送要求を処理します。このプログラムは master(8) プロセスマネージャから 起動されることを想定しています。 送 信者アドレスや受信者アドレス、次に渡すホスト名のようなメッセージの属 性は、外部コマンドが実行される前に展開されるコマンドラインマクロとし て 指定することができます。 pipe デーモンはキューファイルを更新し、受信者を終わったものとしてマーク するか、キューマネージャに後で再び試行するように通知します。配送状態 の レポートは 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 ファイルのサービスの定義の最後で与えられ ます。文法は次のとおりです: flags=BDFORhqu.> (オプション) オプションのメッセージ処理フラグ。デフォルトではメッセージは変更 せずにコピーされます。 B それぞれのメッセージの最後に空行を加えます。これは前に 空 行がある場合のみに "From " 行を認識するようなメールユーザ エージェントが必要とします。 D エンベロープ受信者アドレスを持つ "Delivered-To: recipi- ent" メッセージヘッダを前に付加します。注意: これが働くた めには transport_destination_recipient_limit が 1 でな け ればいけません。 F "From sender time_stamp" エンベロープヘッダをメッセージ本 体の前に付加します。これは、例えば UUCP ソフトウェアな ど により求められます。 O Postfix に与えられた受信者アドレスを持つ "X-Original-To: recipient" メッセージヘッダを前に付加します。注意: これが 働 く ためには transport_destination_recipient_limit が 1 でなければいけません。 R Return-Path: メッセージヘッダをエンベロープ送信者アドレス に付加します。 h コマンドライン $recipient ドメイン名や $nexthop ホスト名 を小文字に変換します。これは UUCP での配送に推奨されま す 。 q コマンドライン $sender や $recipient アドレスのローカル部 分 (最も右側の @ 文字の左側のテキスト) にある空白や他の特 殊 文字を RFC 822 の 8 ビット透過バージョンに従って引用符 が付けられます。これは UUCP や BSMTP での配送に推奨されま す。 結 果は Postfix sendmail メール投函コマンドによるコマンド ライン受信者のアドレスのパースと互換です。 q フラグはアドレス全体だけに影響をおよ ぼ し 、$user や $extension、$mailbox コマンドラインマクロといった部分アド レス情報には影響しません。 u コマンドライン $recipient ローカル部分 (最も右側の @ 文字 の 左側のテキスト) を小文字に変換します。これは UUCP での 配送に推奨されます。 . "." で始まる行の前に . を付けます。これは、例えば、 BSMTP ソフトウェアで必要です。 > > を "From " で始まる行の前に付加します。これは例えば UUCP ソフトウェアなどにより求められます。 user=username (必須) user=username:groupname 外部コマンドは username で指定された権限で実行されます。ソフトウ ェアは root 権限またはメールシステム所有者権限の外部コマンドを拒 否します。groupname が指定されると、対応するグループ ID が user- name のグループ ID のかわりに使われます。 eol=string (オプション、デフォルト: \n) 出力レコードのデリミタ。通常は \r\n または \n のどちらかを使いま す。通常の C 形式のバックスラッシュエスケープシークエンスが認 識 されます: \a \b \f \n \r \t \v \octal および \\. size=size_limit (オプション) この制限(バイト単位)より大きなサイズのメッセージは送信者へバウン スされます。 argv=command... (必須) 実行されるコマンド。これは最後のコマンド属性として指定されなけれ ばいけません。コマンドは直接実行されます。つまり、シェルのメタ文 字はシェルコマンドの解釈を受けません。 コマンド引数ベクトルでは、次のマクロが認識されて、Postfix キュー マネージャ配送要求から得た対応する情報に置き換えられます: ${extension} こ のマクロは受信者アドレスの拡張部分に展開されます。たと えば user+foo@domain というアドレスであれば、拡張部 分 は foo です。 ${extension} を含むコマンドライン引数は、コマンドライン引 数と同じ数の受信者に展開されます。 この情報は u フラグによって小文字に変換されます。 ${mailbox} このマクロは受信者アドレスのローカル部分全体に展開され ま す 。 たとえば user+foo@domain ならば mailbox は user+foo です。 ${mailbox} を含むコマンドライン引数はコマンドライン引数と 同じ数の受信者に展開されます。 この情報は u フラグによって小文字に変換されます。 ${nexthop} このマクロは次に渡すホスト名に展開されます。 この情報は h フラグによって小文字に変換されます。 ${recipient} このマクロは受信者アドレス全体に展開されます。 ${recipient} を含むコマンドライン引数はコマンドライン引数 と同じ数の受信者に展開されます。 この情報は hqu フラグによって引用符が付けられたり、小文字 に変換されます。 ${sender} このマクロはエンベロープの送信者アドレスに展開されます。 この情報は q フラグによって引用符が付けられます。 ${size} このマクロは Postfix から見たメッセージサイズに展開され、 これはほぼ配送されるメッセージのサイズになります。 ${user} このマクロは受信者アドレスのユーザ名部分に展開されます 。 た とえば、アドレス user+foo@domain のユーザ名部分は user です。 ${user} を含むコマンドライン引数はコマンドライン引数と 同 じ数の受信者に展開されます。 この情報は u フラグによって小文字に変換されます。 さらに ${name}、$name、$(name) のどの形式も認識されます。$ だけが必要な 場合は、$$ を指定します。 診断 コマンド終了状態コードは <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(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)