PCRE_TABLE(5)                                                    PCRE_TABLE(5)



名前
       pcre_table - Postfix PCRE テーブルの書式

書式
       postmap -fq "string" pcre:/etc/postfix/filename

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

解説
       Postfix  メールシステムはアドレスの書き換えやメールのルーティングをする
       ためのテーブルをオプションで使います。これらのテーブルは通常は dbm また
       は db 形式です。

       代 わりに検索テーブルに Perl 互換正規表現形式で指定することができます。
       この場合、それぞれの入力がパターンのリストと比較され、マッチしたもの が
       見つかると対応する結果が返されます。

       あなたの Postfix システムがサポートしている検索テーブル形式を知るには、
       "postconf -m" コマンドを使います。

       検索テーブルをテストするには、上の書式に記述したように "postmap -fq" コ
       マンドを使います。

テーブルの書式
       PCRE テーブルの一般的な形式は:

       /pattern/flags result
              pattern が入力文字列にマッチすると、対応する result の値を使いま
              す。

       !/pattern/flags result
              pattern が入力文字列にマッチしなかった場合、対応する result の値
              を使います。

       if /pattern/flags

       endif  入力文字列が pattern にマッチしたときのみ、 ifendif の間のパ
              ターンに対して入力文字列がマッチします。if..endif はネストできま
              す。

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

       if !/pattern/flags

       endif  入力文字列が pattern にマッチしなかったときのみ、 ifendif の
              間のパターンに対して入力文字列がマッチします。if..endif はネスト
              できます。

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

       複数行テキスト
              論理行は非空白字文字で始まります。空白で始まる行は前の論理行を継
              続します。

       それぞれのパターンは perl ライクな正規表現です。表現のデリミタは空白 や
       特 別な意味を持つ文字を除いてどの文字も使えます (伝統的にスラッシュが使
       われます)。正規表現は空白を含むことができます。

       デフォルトではマッチは大文字・小文字の区別をせず、改行は特別な文字と し
       て 扱われません。この振る舞いはフラグによって制御され、次の一つまたはそ
       れ以上をつけることでトグルスイッチが切り替わります:

       i (デフォルト: on)
              大文字・小文字の区別のフラグを切り替えます。デフォルトではマッチ
              ングは大文字・小文字を区別しません。

       m (デフォルト: off)
              PCRE_MULTILINE  フラグを切り替えます。このフラグが on の場合、 ^
              および $ メタキャラクタは目的の文字列の最初と最後に加えて、そ れ
              ぞれ直後および直前の改行文字にマッチします。

       s (デフォルト: on)
              PCRE_DOTALL  フラグを切り替えます。このフラグが on の場合、.  メ
              タキャラクタは改行文字にマッチします。Postfixバージョン 2.0よ り
              前 では、デフォルトではこのフラグは off であり、複数行のメッセー
              ジヘッダに対しては不便でした。

       x (default: off)
              pcre 拡張フラグを切り替えます。このフラグが on の場合、パター ン
              中 の (文字クラス以外の) 空白、および文字クラスの外の # と改行文
              字の間の文字は無視されます。パターンの一部として空白や # 文字 を
              含むために、バックスラッシュでエスケープすることができます。

       A (デフォルト: off)
              PCRE_ANCHORED フラグを切り替えます。このフラグが on の場合、パタ
              ーンの "anchored" が強制されます。つまり、検索される文字列 (" 目
              的 の文字列") の最初だけがマッチするように制限されます。この効果
              はパターン自身の適切な構成によっても得ることができます。

       E (default: off)
              PCRE_DOLLER_ENDONLY フラグを切り替えます。このフラグが on の場合
              、 パターンの $ メタキャラクタは目的の文字列の最後だけにマッチし
              ます。このフラグがなければ、最後の文字が改行文字の場合、 (他の改
              行文字の前ではなく) 最後の改行文字の直前にもマッチします。このフ
              ラグは PCRE_MULTILINE フラグがセットされていると無視されます。

       U (default: off)
              非貪欲 (ungreedy) マッチングフラグを切り替えます。このフラ グ が
              on  の場合、パターンマッチングエンジンは定量化の貪欲さを反転し、
              その結果デフォルトでは貪欲でないが、"?" が続くと貪欲になります。
              このフラグはパターン内で (?U) 修飾子をセットすることもできます。

       X (default: off)
              PCRE_EXTRA フラグを切り替えます。このフラグが on の場合、特別 な
              意味のない文字が後に続く、パターン内のバックスラッシュは全てエラ
              ーにして、将来の拡張のためにこれらの組み合わせを予約します。

検索順序
       入力文字列にマッチするパターンが見つかるまで、パターンはテーブルに指 定
       された順に適用されます。

       そ れぞれのパターンは入力文字列全体に適用されます。場合によって、文字列
       はクライアントのホスト名全体であったり、クライアントの IP アドレス全 体
       、 もしくはメールアドレス全体になったりします。従って、親ドメインや親ネ
       ットワーク検索は行なわれませんし、 user@domain メールアドレスは userdomain という構成要素に分割されたり、user+foouserfoo に分割され
       ることはありません。

テキスト置換
       慣例的な perl 文法 ($1, $2, etc.) を使って、マッチした表現の部分文字 列
       を  result の文字列で置き換えることも可能です。 result の文字列中のマク
       ロは、後に空白が続かない場合に ${n} や $(n) を必要とするかも知れませ ん
       。

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

SMTPD ACCESS マップの例
       # 外行きの majordomo 爆発の防止
       /^(?!owner-)(.*)-outgoing@(.*)/     550 Use ${1}@${2} instead

       # whatever が自ドメインである時以外(全ての friend@ メールをバウンス
       # する方がよいのですが - これは単なる例です)、friend@whatever を
       # バウンスする。
       /^(friend@(?!my\.domain$).*)$/  550 Stick this in your pipe $1

       # 複数行のエントリ。テキストは1行で送られます。
       #
       /^noddy@my\.domain$/
        550 This user is a funny one. You really don't want to send mail to
        them as it only makes their head spin.

ヘッダフィルタマップの例
       /^Subject: make money fast/     REJECT
       /^To: friend@public\.com/       REJECT

本体フィルタマップの例
       # CPU サイクル節約のために、最初に base 64 エンコードされたテキストを
       # スキップします。 PCRE version 3 が必要です。
       ~^[[:alnum:]+/]{60,}$~          OK

       # ここにあなた自身の body パターンを置いてください。

関連項目
       postmap(1), Postfix 検索テーブルマネージャ
       postconf(5), 設定パラメータ
       regexp_table(5) POSIX 正規表現テーブルの書式

README ファイル
       DATABASE_README, Postfix 検索テーブルの概要

作者
       PCRE テーブル検索コードは元々次の人によって書かれました:
       Andrew McNamara
       andrewm@connect.com.au
       connect.com.au Pty. Ltd.
       Level 3, 213 Miller St
       North Sydney, NSW, Australia

       次の人により採用され、適応されました:
       Wietse Venema
       IBM T.J. Watson Research
       P.O. Box 704
       Yorktown Heights, NY 10598, USA



                                                                 PCRE_TABLE(5)