假设我的 Postfix 服务器为该域提供服务示例.com,我希望它接受 example.com 的所有子域的邮件,但mail.example.com和在.example.com。
起初我尝试使用排除这两个子域的正则表达式:
(?(?!mail|in).+\.example.com)
但它不起作用。我不确定问题是否出在正则表达式上,或者 Postfix 的正则表达式引擎是否不支持条件,所以我决定尝试使用表格文件的条件。此时我的表格如下所示:
在/etc/postfix/虚拟域中:
if !/(in|mail)\.example\.com/
/.+\.example\.com/ OK
endif
/etc/postfix/main.cf:
virtual_alias_domains = regexp:/etc/postfix/virtual_domains
但它也没有用。我做错了什么?
答案1
更改此内容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
答案2
如果你的 Postfix 是支持 PCRE 的,请尝试使用负向后视:
(?<!(mail|in)).+\.example\.com