![Postfix 虚拟域:如何接受除两个之外的所有子域?](https://linux22.com/image/563409/Postfix%20%E8%99%9A%E6%8B%9F%E5%9F%9F%EF%BC%9A%E5%A6%82%E4%BD%95%E6%8E%A5%E5%8F%97%E9%99%A4%E4%B8%A4%E4%B8%AA%E4%B9%8B%E5%A4%96%E7%9A%84%E6%89%80%E6%9C%89%E5%AD%90%E5%9F%9F%EF%BC%9F.png)
假设我的 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