REGEXP_TABLE(5) REGEXP_TABLE(5) 名前 regexp_table - Postfix 正規表現テーブルの書式 書式 regexp:/etc/postfix/filename postmap -q "string" regexp:/etc/postfix/filename postmap -q - regexp:/etc/postfix/filename <inputfile 解説 Postfix メールシステムはアドレスの書き換えやメールのルー ティングをするためのテーブルをオプションで使います。これら の テーブルは通常は dbm または db 形式です。代わりに検索テ ーブルに POSIX 正規表現形式で指定することができます。 Postfix が サポートしているマップ形式を見るに は、postconf -m コマンドを使います。 検 索 テ ー ブルをテストするには、上の書式に記述したように postmap コマンドを使います。 Postfix 正規表現テーブルの一般的な形式は: /pattern/flags result !/pattern/flags result pattern が検索文字列にマッチすると (しないと)、対応 する result の値を使います。 空行とコメント 空 行 や 空白だけの行は無視され、行頭の非空白文字が `#' で始まる行も同様です。 複数行テキスト 論理行は非空白字文字で始まります。空白で始まる行 は 前の論理行を継続します。 if /pattern/flags if !/pattern/flags endif 検索文字列が pattern にマッチした (しなかった)とき のみ、 if と endif の間のパターンに対して検索文字列 がマッチします。if..endif はネストできます。 注 意: if..endif の内部のパターンの前に空白をつけな いでください。 それぞれのパターンはペアのデリミタで括られた正規表現です。 正規表現の文法は re_format(7) に記述されています。表現のデ リミタは空白や特別な意味を持つ文字を除いてどの文字も使えま す (伝統的にスラッシュが使われます)。正規表現は空白を含む ことができます。 デフォルトではマッチは大文字・小文字の区別をしません が、2 つ 目のスラッシュの後に `i' フラグをつけることでこの動作を 変えられます。他のフラグもサポートされていますが、他に便利 なのものとして `x' (拡張表現文法を使わない) と `m' (複数行 モードを有効にする、つまり改行文字を特別扱いする) がありま す。 それぞれのパターンは検索キーの文字列全体に適用される正規表 現です。場合によって、文字列はクライアントのホスト名全体で あったり、クライアントの IP アドレス全体、もしくはメールア ドレス全体になったりします。従って、親ドメインや親ネットワ ー ク検索は行なわれませんし、 user@domain メールアドレスは user と domain という構成要素に分割されたり、user+foo が user と foo に分割されることはありません。 パターンは検索文字列にマッチするまで、テーブルに指定された 順で適用されます。 $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 パターンを置いてください。 関連項目 pcre_table(5) PCRE テーブルの書式 作者 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)