# regexp SMTPD アクセス検索"テーブル"の例。文法の詳細は # regexp_table(5) や access(5) を参照してください。 # # 一般的なテーブルエントリの書式は PATTERN RESULT です。 # # pattern の書式は /regexp/flags または !/regexp/flags です。 # ここで regexp は re_format(7) に出てくる正規表現であり、flags は # i: トグルで大文字・小文字を無視(REG_ICASE - デフォルトは無視する) # x: トグルで表現を拡張(REG_EXTENDED - デフォルトは拡張する) # m: トグルで複数行モード(REG_NEWLINE - デフォルトは非複数行モード) # です。 # # 行をマッチさせるためには、正規表現がマッチしなければいけません。 # 正規表現の前に ! というプレフィックスがついていたら、マッチしては # いけません。最初にマッチした(しなかった)行が勝ち、ルールセットの # 処理が終ります。 # # テーブルエントリのブロックを `if /pattern/flags' または # `if !/pattern/flags' という行と `endif' という行で「囲む」ことが # できます。これにより、検索文字列のマッチが成功した(しなかった)とき # のみ、テーブルエントリのブロックが調べられるようになります。 # `if..endif' をネストすることもできます。現在のところ `else' # オペレータはありません。 # # access テーブルの result 部分の文法は access(5) マニュアルページに # 記述されています。 # 送信者が指定するルーティングを使えなくします。これは他のドメインに # メールをリレーするのであれば必須です。 /[%!@].*@/ 550 Sender-specified routing rejected # postmaster は OK、こうすることで彼らの問題を直す方法について # 我々に話すことができます。 /^postmaster@/ OK # 外行きの majordomo 爆発の防止 if !/^owner-.*/ /^(.*)-outgoing@(.*)$/ 550 Use ${1}@${2} instead endif