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)