# # SMTPD アクセス制御のための pcre (PERL-compatible regular # expression; Perl 互換正規表現) マップファイルのサンプル。 # 文法の詳細は pcre_table(5) や access(5) を参照してください。 # # 第1フィールドは perl 的正規表現です。表現のデリミタ(区切り文字)は # 空白文字と regexp ライブラリの特殊な意味をもつ文字以外ならどの # 文字でも使えます(伝統的にはスラッシュが使われます)。正規表現には # 空白を含めることができます。 # # デフォルトではマッチングは大文字と小文字は区別しませんが、 # 2つめのスラッシュに 'i' をつけると区別します。その他のフラグは # サポートされますが、他に役に立つのは 'U' だけで、これは # どん欲でないマッチングになります(これ以上の情報は PCRE の # ドキュメントとソースを参照して下さい)。 # # テーブルエントリのブロックを `if /pattern/flags' という行と # `endif' という行で「囲む」ことができます。これにより、 # 検索文字列にパターンがマッチしたときのみ、テーブルエントリの # ブロックが調べられるようになります。`if..endif' をネストする # こともできます。現在のところ `else' オペレータはありません。 # # 2番目のフィールドは "replacement" 文です - マッチするとその # テキストが返されます。smtpd チェックに使う時は、これは間違えた # ユーザには役に立つメッセージ(そしてスパマーには攻撃的なメッセージ)に # なるでしょうし、これは transport や virtual、その他のマップとして # 使う時のドメイン名やその他のデータにもなります。 # # マッチした表現からサブストリングスへの置換は典型的な perl 文法を # 使えば可能です。文置換の際に空白が続かないのであれば、そのマクロは # curly braces {} で保護することが必要かも知れません(下の例を参照)。 # # 空白ではじまる行は継続行です - その行は前の行に追加されます(正規 # 表現の前に空白があってはいけません!)。 # # このコードはもともと SPAM 制御のために開発されました。しかし、 # virtual や canonical 検索によってアドレスの書き替えをするのにも # 同じようによく使えるように思われます。これをエイリアスにまで # 使うのはやりすぎかもしれませんが。 # # 外行きの majordomo 爆発の防止 # /^(?!owner-)(.*)-outgoing@(.*)/ 550 Use ${1}@${2} instead # whatever が自ドメインである時以外(全ての friend@ メールをバウンス # する方がよいのですが - これは単なる例です)、friend@whatever を # バウンスする。 # /^friend@(?!my\.domain)/ 550 Stick this in your pipe $0 # 複数行の応答 # /^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.