私のPostfixサーバーがドメインexample.comにサービスを提供していると仮定すると、mail.exampleを除くexample.comのすべてのサブドメインのメールを受け入れるようにします。 comおよびin.example.com。
最初は、次の2つのサブドメインを除外する正規表現を使用してみました。
(?(?!mail|in).+\.example.com)
しかし、それはうまくいきませんでした。問題が正規表現にあるのか、Postfixの正規表現エンジンが条件をサポートしていないのかわからなかったので、テーブルファイルの条件を使用することにしました。この時点で、私のテーブルは次のようになりました。
/ etc/postfix/virtual_domains:
if !/(in|mail)\.example\.com/
/.+\.example\.com/ OK
endif
/etc/postfix/main.cf:
virtual_alias_domains = regexp:/etc/postfix/virtual_domains
しかし、それも機能しませんでした。私は何が間違っているのですか?
これをmain.cf
で変更します。
virtual_alias_domains = !/etc/postfix/not_these_domains.txt regexp:/etc/postfix/virtual_domains
/etc/postfix/not_these_domains.txt
:
in.example.com mail.example.com
そして、/etc/postfix/virtual_domains
をシンプルに保ちます:
/.+@.+\.example\.com/ OK
ただし注意:これはPostfix> 2.4でのみ機能します
PostfixがPCREサポート付きで構築されている場合は、ネガティブルックビハインドを使用してみてください。
(?<!(mail|in)).+\.example\.com