オプションの "pcre" マップタイプを使うと、\s は空白で \S は非空白文字 といった、 PCRE 形式の表記法で正規表現が指定できるようになります。 それよりも大きな利点は、pcre 検索は regexp 検索よりも早いことが多いという 点です。これは多くのシステムに入っている POSIX 正規表現の実装よりも pcre 実装の方が効率がよいことが多いためです。
pcre テーブルの使い方については、例を含めて pcre_table(5) マニュアルページに記述 されています。PCRE 自身の情報は http://www.pcre.org/ で見つかるでしょう。
注意: Debian GNU/Linux の Postfix で pcre を使うには、postfix-pcre パッケージをインストールするだけで終わりです。Postfix を再コンパイルする 必要はありません。
今後いつか、Postfix はマップタイプを追加するためのプラグインインター フェースを持つようになる予定です。それまでは、Postfix に PCRE サポートを 組み込む必要があります。
まずはじめに、以下から得られる PCRE (Perl Compatible Regular Expressions; Perl 互換正規表現) ライブラリが必要です:
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/.
「注意」: pcre バージョン 2.06 以前を使うことはできません。
PCRE サポート付きで Postfix をビルドするには、-DHAS_PCRE と PCRE インクルードファイルに対する -I を CCARGS に加え、PCRE ライブラリのパスを AUXLIBS に加える必要があります。例えば:
make -f Makefile.init makefiles \ "CCARGS=-DHAS_PCRE -I/usr/local/include" \ "AUXLIBS=-L/usr/local/lib -lpcre"
Solarisにはランタイムパス情報も必要です:
make -f Makefile.init makefiles \ "CCARGS=-DHAS_PCRE -I/usr/local/include" \ "AUXLIBS=-L/usr/local/lib -R/usr/local/lib -lpcre"
Postfix が pcre: や regexp: 検索テーブルを検索する場合、 それぞれのパターンは入力文字列全体に適用されます。アプリケーションに よっては、その文字列はクライアントホスト名全体であったり、クライアントの IP アドレス全体であったり、メールアドレス全体であったりします。従って、 親ドメインや親ネットワークの検索はおこなわれず、"user@domain" メール アドレスは user と domain という構成要素に分割されたり、"user+foo" が user と foo に分割されることはありません。
pcre: や regexp: のような正規表現テーブルでは、 セキュリティに注意を払う必要がある検索結果で $number 置換をすることは 許されていません: 今のところこの制限はローカル aliases(5) データベースまたは virtual(8) 配送エージェントテーブルに適用 されています。