REGEXP_TABLE(5)                                                REGEXP_TABLE(5)



名前
       regexp_table - Postfix 正規表現テーブルの書式

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

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

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

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

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

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

テーブルの書式
       Postfix 正規表現テーブルの一般的な形式は:

       /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 はネ
              ストできます。

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

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

       それぞれのパターンはペアのデリミタで括られた POSIX 正規表現です。正規表
       現 の文法は 4.4BSD では re_format(7) に、Solaris では regex(5) に、そし
       て Linux では regex(7) に記述されています。他のシステムではそれ以外のド
       キ ュメント名かもしれません。表現のデリミタは空白や特別な意味を持つ文字
       を除いてどの文字も使えます (伝統的にスラッシュが使われます)。正規表現は
       空白を含むことができます。

       デ フォルトではマッチは大文字・小文字の区別をせず、また改行は特別な文字
       として扱われません。この動作はフラグによって制御され、これは一つ以上 の
       文字をパターンの後に付けることで切り替わるトグルになっています:

       i (デフォルト: on)
              大文字・小文字の区別をするかどうかを切り替えます。デフォルトでは
              大文字・小文字を区別しません。

       x (デフォルト: on)
              拡張表現文法フラグを切り替えます。デフォルトでは、拡張表現文法の
              サポートは有効です。

       m (デフォルト: off)
              複数行モードフラグを切り替えます。このフラグが on になっていると
              、 ^ および $ メタキャラクタは、それぞれ入力文字列の最初と最後に
              加えて、直後および直前の改行文字にマッチします。

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

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

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

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

SMTPD ACCESS マップの例
       # 送信者が指定するルーティングを使えなくします。これは他のドメインに
       # メールをリレーするのであれば必須です。
       /[%!@].*[%!@]/       550 Sender-specified routing rejected

       # postmaster は OK、こうすることで彼らの問題を直す方法について
       # 我々に話すことができます。
       /^postmaster@/       OK

       # 外行きの majordomo 爆発の防止
       if !/^owner-/
       /^(.*)-outgoing@(.*)$/   550 Use ${1}@${2} instead
       endif

ヘッダフィルタマップの例
       # これらはかつてジャンクメールに共通でした。
       /^Subject: make money fast/     REJECT
       /^To: friend@public\.com/       REJECT

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

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

関連項目
       postmap(1), Postfix 検索テーブルマネージャ
       pcre_table(5) PCRE テーブルの書式
       cidr_table(5) CIDR テーブルの書式

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

作者
       regexp テーブル検索コードは元々次の人によって書かれました:
       LaMont Jones
       lamont@hp.com

       コードは次の人により貢献された 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



                                                               REGEXP_TABLE(5)