web-dev-qa-db-ja.com

Postfix仮想ドメイン:2つを除くすべてのサブドメインを受け入れる方法は?

私の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

しかし、それも機能しませんでした。私は何が間違っているのですか?

4
arikfr

これを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でのみ機能します

5
mailq

PostfixがPCREサポート付きで構築されている場合は、ネガティブルックビハインドを使用してみてください。

(?<!(mail|in)).+\.example\.com
4
quanta