PCRE_TABLE(5)                                       PCRE_TABLE(5)



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

書式
       pcre:/etc/postfix/filename

       postmap -q "string" pcre:/etc/postfix/filename

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

解説
       Postfix   メールシステムはアドレスの書き換えやメールのルー
       ティングをするためのテーブルをオプションで使います。これら
       の テーブルは通常は dbm または db 形式です。代わりに検索テ
       ーブルに Perl 互換正規表現形式で指定することができます。

       Postfix がサポートしているマップ形式を見る に は、postconf
       -m コマンドを使います。

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

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

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

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

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

       if /pattern/flags

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

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

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

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

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

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

       s (デフォルト: on)
              PCRE_DOTALL フラグを切り替えます。このフラグ が  on
              の 場 合、.    メタキャラクタは改行文字にマッチしま
              す。Postfix バージョン 20020528 以前では、デフォ ル
              ト で はこのフラグは 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 $0

       # 複数行のエントリ。テキストは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

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

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

関連項目
       regexp_table(5) POSIX 正規表現テーブルの書式

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

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



                                                    PCRE_TABLE(5)