我正在寻找一个 postfix 配置,以便根据收件人域名创建收件人重写规则,包括捕获“不重写”列表中未找到的所有域。例如:
[email protected]
,不重写并投递到example.com的MX[email protected]
,重写为[email protected]
<user>@<domain>
,重写为<user>@spam.example.com
理想的情况是列出不应通过 Postfix 重写的域名。目前,我使用没有例外的设置,因此所有内容都会被重写:
recipient_canonical_maps = static:@spam.example.com
答案1
在 main.cf 中添加(删除现有的静态映射):
recipient_canonical_maps = pcre:/etc/postfix/rcpt_canonical_maps
在 /etc/postfix/rcpt_canonical_maps 中(将 domain1.com 等替换为您的“好”域名):
if !/^(.*)@(domain1.com|domain2.com|domain3.com)$/
/^(.*)@.*$/ REDIRECT ${1}@spam.example.com
endif
请不要,我没有测试过这个,但我很有信心这会满足你的要求。
话虽如此,我应该强调在非生产环境中进行测试这一点很重要。
答案2
谢谢 Aaron,你的回答对我帮助很大。我可以确认以下设置适用于我当前正在运行的 postfix 设置(稳定的 Ubuntu 14.04)。
我已将以下内容添加到main.cf
:
# Receive all emails and rewrite the destination because of testing.
recipient_canonical_maps = regexp:/etc/postfix/recipient_canonical_maps
我的recipient_canonical_maps
样子如下:
!/.*@example.com/ @spam.example.com