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 がマッチした場合にのみ if..endif の間の行を
              調べます。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)