HEADER_CHECKS(5)                                              HEADER_CHECKS(5)



名前
       header_checks - Postfix ビルトインヘッダ・本体検査

書式
       header_checks = pcre:/etc/postfix/header_checks
       mime_header_checks = pcre:/etc/postfix/mime_header_checks
       nested_header_checks = pcre:/etc/postfix/nested_header_checks
       body_checks = pcre:/etc/postfix/body_checks

       postmap -fq "string" pcre:/etc/postfix/filename
       postmap -fq - pcre:/etc/postfix/filename <inputfile

解説
       Postfix  は、入ってきたメールのメッセージヘッダ1行またはメッセージ本体1
       行を同時に検査する、単純なビルトインコンテンツ検査メカニズムを提供し ま
       す 。それぞれの入力はパターンのリストと比較され、マッチが見つかると、対
       応するアクションが実行されます。この機能は Postfix cleanup(8) サーバ に
       よって実装されています。

       例はこのマニュアルページの "例" セクションを参照してください。

       Postfix header_checks または body_checks はワームやウィルスからのメール
       の氾濫を止めるように設計されています; 添付ファイルをデコードしたりア ー
       カイブを unzip したりしません。より高度なコンテンツ分析が必要であれば、
       以下の README ファイルのセクションで参照されているドキュメントを参照 し
       てください。

       Postfix は4つのビルトインコンテンツ検査クラスをサポートしています:

       header_checks
              こ れらは最初のメッセージヘッダ (mime_header_checks で処理される
              ヘッダは除きます) に適用されます。

       mime_header_checks (デフォルト: $header_checks)
              これらは MIME 関連のメッセージヘッダのみに適用されます。

              この機能は Postfix 2.0 以降で使えます。

       nested_header_checks (default: $header_checks)
              これらは添付されたEメールメッセージのメッセー ジ ヘッ ダ  (mime_
              header_checksで処理されるヘッダは除きます) に適用されます。

              この機能は Postfix 2.0 以降で使えます。

       body_checks
              これらはマルチパートメッセージ境界を含む、その他全てのコンテンツ
              に適用されます。

              バージョン 2.0 以前の Postfix では、最初のメッセージヘッダの後の
              コンテンツは全て body コンテンツとして扱われます。

       注 意: メッセージヘッダは、一つのメッセージヘッダが複数行にわたる場合で
       あっても、同時に一つの論理的ヘッダが検査されます。本体行は常に同時に1行
       ずつ検査されます。

テーブルの書式
       このドキュメントは header_checks および body_checks ルールが Postfix 正
       規表現検索テーブルの形式で指定されることを想定しています。 通 常 、pcre
       (Perl   互 換正規表現) テーブルでもっともよいパフォーマンスが得られます
       が、遅い regexp (POSIX 正規表現) テーブルサポートの方がより広く得られま
       す。あなたの Postfix システムがサポートしている検索テーブル形式を知るに
       は、"postconf -m" コマンドを使います。

       Postfix 正規表現テーブルの一般的な書式は以下で得られます。特定のパタ ー
       ン やフラグの文法の議論はそれぞれ pcre_table(5)regexp_table(5) を参
       照してください。

       /pattern/flags action
              pattern が入力文字列にマッチすると、対応する action を実行します
              。有効なアクションは下のリストを参照してください。

       !/pattern/flags action
              pattern が入力文字列にマッチしなかった場合、対応する action を実
              行します。

       if /pattern/flags

       endif  入力文字列が pattern にもマッチする場合に限り、入力文字列 を  ifendif の間にあるパターンにマッチさせます。 if..endif はネスト
              することができます。

              注意: if..endif の中のパターンの前に空白を付けないでください。

       if !/pattern/flags

       endif  入力文字列が pattern にもマッチしなかった場合に限り、入力文字 列
              を  ifendif の間にあるパターンにマッチさせます。if..endif は
              ネストすることができます。

       空行とコメント
              空行や空白のみの行は無視され、行頭の非空白文字が `#' で始まる 行
              も同様です。

       複数行テキスト
              パ ターン/アクション行は非空白文字で始まります。空白で始まる行は
              前の論理行を継続します。

テーブルの検索順序
       メッセージ入力のそれぞれの行に対して、パターンはテーブルに指定された 順
       に 適用されます。入力行にパターンがマッチすると、対応するアクションが実
       行され、次の入力行が検査されます。

テキスト置換
       action 文字列にマッチした正規表現の部分文字列の置換は、慣習的な Perl 文
       法  ($1, $2, etc.) を使うことで可能です。結果文字列のマクロの後に空白が
       続かない場合、${n}$(n) のように書く必要があるかもしれません。

       注意: 否定パターン (! が前につくもの) は表現がマッチしなかった時に結 果
       を返し、その否定パターンに対しては置換は使えません。

アクション
       アクション名は大文字・小文字の区別をしません。他の Postfix ドキュメント
       では一貫して大文字で示されます。

       DISCARD optional text...
              配送に成功したと主張して、メッセージを静 か に 破 棄 し ま す 。
              optional text が指定されていればそれをログに記録し、指定がなけれ
              ば一般的なメッセージをログに記録します。

              注意: このアクションは現在のメ ッ セ ー ジ の  header   ま た は
              body_checks 検査をこれ以上おこなわないようにします。また、受信者
              全 てに影響を与えます。メッセージ全体を消さず、受信者1人だけを破
              棄するには、 transport(5) テーブルを使って discard(8) サービスに
              メールを向けてください。

              この機能は Postfix 2.0 以降で使えます。

       DUNNO  このテーブルに検索キーが見つからなかったように見せ、次の入力行を
              検査します。このアクションはテーブル検索を短くするのに使われます
              。

              後方互換性のため、Postfix は OK も受け付けますが、これは (これま
              でもそうでしたが) DUNNO として扱われます。

              この機能は Postfix 2.1 以降で使えます。

       FILTER transport:destination
              キューファイルにコンテンツフィルタ要求を書き込み、次の入力行を検
              査します。メッセージ全体が受信された後で、メッセージは指定された
              外部コンテンツフィルタを通して送られます。外部コンテンツフィルタ
              に関するさらなる情報は Postfix FILTER_README ファイルにありま す
              。

              注意: このアクションは main.cf content_filter 設定を上書きし、そ
              のメッセージの全ての受信者に影響を与えます。複数の FILTER アクシ
              ョンが起こると、最後のものだけが実行されます。

              この機能は Postfix 2.0 以降で使えます。

       HOLD optional text...
              メッセージを hold キューに置くように手配し、次の入力行を検査しま
              す。誰かが削除するか配送のために解放するまで、メッセージは  hold
              キューに置かれたままになります。optional text が指定されていれば
              それをログに記録し、指定がなければ一般的なメッセージをログに記録
              します。

              hold  に置かれたメールは postcat(1) コマンドで調べることができ、
              postsuper(1) コマンドで破棄したり解放できます。

              注意: $maximal_queue_lifetime$bounce_queue_lifetime のかなり
              の割合、もしくはそれ以上の間 hold に留め置かれたメールを解放する
              には "postsuper -r" を使ってください。

              注意: この action はメッセージの全ての受信者に影響を与えます。

              この機能は Postfix 2.0 以降で使えます。

       IGNORE 現在の行を入力から削除し、次の入力行を検査します。

       PREPEND text...
              指定された text を持つ行を前に付加して、次の入力行を検査します。
              付 加された text 行は PREPEND パターンを引き起こした入力行の前に
              出力されます。

              注意:
	      
	      o      前に付けられる text は PREPEND アクションを引き起こした入
              力のすぐ前に1行で出力されます。

	      o      付 加 されたtextは入力ストリームの一部とは見なされません:
                     これはheader/bodyチェックやアドレス書き換え を 受 け ず、
                     Postfixが足りないメッセージヘッダを付加する方法に影響は与
                     えません。

	      o      メッ セー ジ ヘッダ行の前に text を付加する際、付加される
                     text は有効なメッセージヘッダラベルで始まっていなければい
                     けません。

	      o      こ のアクションは複数行 text を付加するために使うことはで
                     きません。

              この機能は Postfix 2.1 以降で使えます。

       REDIRECT user@domain
              キューファイルにメッセージのアドレス書き換え要求を書き、次の入力
              行を検査します。メッセージがキューに入った後で、意図された受信者
              の代わりに指定されたアドレスに送られます。

              注意: このアクションは FILTER アクションを上書きし、メッセージの
              全ての受信者に影響を与えます。複数の REDIRECT アクションが指定さ
              れると、最後のものだけが実行されます。

              この機能は Postfix 2.1 以降で使えます。

       REPLACE text...
              カレント行を指定された text で置き換え、次の入力行を検査します。

              注 意: メッセージヘッダ行を置き換える場合は、text は有効なヘッダ
              ラベルで始まっていなければいけません。

              この機能はPostfix 2.2以降で使えます。以下の記述はPostfix 2.2.2以
              降に適用されます。

              注意:

              o      メッセージヘッダ行を置き換える場合は、text は有効なヘッダ
                     ラベルで始まっていなければいけません。

              o      置き換えられたtextは入力ストリームの部分に残っていま す。
                     PREPEND  アクションの結果と違い、置き換えられたメッセージ
                     ヘッダはアドレス書き換えを受けたり、Postfixが不足したメッ
                     セージヘッダを追加する方法に影響を与えます。

       REJECT optional text...
              メ ッ セ ー ジ全体を拒否します。optional text が指定されていれば
              optional text... を付けて応答し、指定がなければ一般的なエラー メ
              ッセージで応答します。

              注意: このアクションは現在のメッセージの検査をこれ以上おこなわな
              いようにします。また、受信者全てに影響を与えます。

              Postfix バー ジョン2.3以降は拡張状態コードをサポートしています。
              optional text... のはじめにコードが指定されていないと、  Postfix
              は "5.7.1" というデフォルトの拡張状態コードを挿入します。

       WARN optional text...
              optional text... を付けた警告をログに記録します (または一般的 な
              メ ッセージをログに記録します)。このアクションはより徹底的なアク
              ションを適用する前に、デバッグやパターンのテストをするために使わ
              れます。

バグ
       多くの人が header および body_checks ルールの主な制限を見落とします。こ
       れらのルールは同時に論理メッセージヘッダ1行または本体の1行を操作し、 そ
       の1行に対してなされた決定は次の行には持ち越されません。メッセージ本体の
       text がエンコードされている場合 (RFC2045)、ルールはエンコードされた形で
       指定する必要があります。

       cleanup(8) デーモン自身によって付加されたメッセージヘッダは検査から除外
       さ れ ま す。 そ の よ う なメッセージヘッダには From:To:Message-
       ID:Date: があります。

       cleanup(8) デーモンによって削除されたメッセージヘッダは削除される前に調
       べられます。例: Bcc:, Content-Length:, Return-Path:.

設定パラメータ
       body_checks
              メッセージ本体行に対するコンテンツフィルタルールを持つ検索テーブ
              ル。これらのフィルタは同時に最大 $line_length_limit バイトの一つ
              の物理行を見ます。

       body_checks_size_limit
              $body_checks フィルタリングを受けるメッセージ本体セグメント ( 添
              付) ごとの内容量。

       header_checks

       mime_header_checks (デフォルト: $header_checks)

       nested_header_checks (デフォルト: $header_checks)
              メッセージヘッダ行に対するコンテンツフィルタルールを持つ検索テー
              ブル: これらはそれぞれ最初のメッセージヘッダ (MIME ヘッダを含 み
              ません)、メッセージのどこかにある MIME ヘッダ、そして添 付 メ ッ
              セージの最初のヘッダに対して適用されます。

              注意: これらのフィルタは、メッセージヘッダが複数行にわたっている
              場 合 で も 同 時 に 一 つ の 論 理 メ ッ セージヘッダを見ます。
              $header_size_limit 文字より長いメッセージヘッダは切りつめられ ま
              す。論理ヘッダを見ます。

       disable_mime_input_processing
              メールを受け取っている間、MIME 関連のメッセージヘッダを特別扱 い
              し ま せん; 最初のメッセージヘッダの後にある全てのテキストはメッ
              セージ本体の一部と見なされます。このことは header_checks は全 て
              の最初のメッセージヘッダに適用され、body_checks はメッセージの残
              りの部分に適用されることを意味します。

              注意: この方法で使われると、body_checks は複数行メッセージヘッダ
              を同時に1行処理します。


       悪い拡張子名を持つ添付をブロックするヘッダパターン。

       /etc/postfix/main.cf:
           header_checks = regexp:/etc/postfix/header_checks

       /etc/postfix/header_checks:
           /^content-(type|disposition):.*name[[:space:]]*=.*\.(exe|vbs)/
               REJECT Bad attachment file name extension: $2

       特定の HTML ブラウザ脆弱性問題を止めるための本体パターン。

       /etc/postfix/main.cf:
           body_checks = regexp:/etc/postfix/header_checks

       /etc/postfix/body_checks:
           /^<iframe src=(3D)?cid:.* height=(3D)?0 width=(3D)?0>$/
               REJECT IFRAME vulnerability exploit

関連項目
       cleanup(8), Postfix メッセージの正規化とキュー投入
       pcre_table(5), PCRE テーブルの書式
       regexp_table(5), POSIX 正規表現テーブルの書式
       postconf(1), Postfix 設定ユーティリティ
       postmap(1), Postfix 検索テーブル管理
       postsuper(1), Postfix 管理
       postcat(1), Postfix キューファイルの内容を表示
       RFC 2045, base64 および quoted-printable エンコードルール
       RFC 2047, 非 ASCII 文のメッセージヘッダエンコード

README ファイル
       DATABASE_README, Postfix 検索テーブルの概要
       CONTENT_INSPECTION_README, Postfix コンテンツ検査の概要
       BUILTIN_FILTER_README, Postfix ビルトインコンテンツ検査
       BACKSCATTER_README, 返送された偽装メールのブロック

ライセンス
       The  Secure Mailer license はこのソフトウェアと一緒に配布されなければい
       けません。

作者
       Wietse Venema
       IBM T.J. Watson Research
       P.O. Box 704
       Yorktown Heights, NY 10598, USA



                                                              HEADER_CHECKS(5)