假设我的Postfix服务器提供域example.com ,我希望它接受example.com的所有子域的邮件,除了mail.example.com和in.example.com 。
起初,我试过使用排除这两个子域的正则expression式:
(?(?!mail|in).+\.example.com)
但它没有工作。 我不确定问题是否与正则expression式或Postfix的正则expression式引擎是否不支持条件,所以我决定尝试使用表文件的条件。 在这一点上,我的桌子看起来像这样:
/等/后缀/ 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支持构build的,请尝试使用负面外观:
(?<!(mail|in)).+\.example\.com