我想重写所有发件人地址@example.com 至[电子邮件保护](到一个静态的传出地址)但我还想将原始地址添加为reply-to
。我可以分别使用通用文件和 header_checks 文件执行上述操作,但由于通用文件似乎首先被使用,我失去了原始发件人。我是否遗漏了Postfix 重写文档?
如果信封发件人有类似的东西[电子邮件保护]只要From:
标题是[电子邮件保护]。 有任何想法吗?
如果 Qmail 中有一个简单的解决方案那么这也是一个选择!
答案1
经过几个小时的搜索和几篇帖子(这里和其他地方)说没有混合器或按照对我来说不起作用的说明(如上所述)就不可能实现,成功了!
至少在我的设置上进行测试时,你不能使用 smtp_generic_maps,因为它似乎被执行了前其他检查/重写。但是,如果您使用 sender_canonical_maps,那么它似乎会执行后检查 header_checks 之类的内容。因此,您只需在 中添加以下内容main.cf
:
sender_canonical_maps = hash:/etc/postfix/sender_canonical_maps
header_checks = regexp:/etc/postfix/header_checks
文件内容
在/etc/postfix/sender_canonical_maps中:
@example.com [email protected]
在 /etc/postfix/header_checks 中:
/^From:(.*)$/ PREPEND Reply-To:$1
然后运行postmap /etc/postfix/sender_canonical_maps
重启 postfixservice postfix restart
答案2
显然这里有两个目标:
- 将原始发件人附加到
Reply-To
标题栏。 - 将发送者重写为静态值。
对于第一个目标,使用smtpd_sender_restriction+访问地图应该可以解决问题。在main.cf
smtpd_sender_restriction = check_sender_access pcre:/etc/postfix/append_replyto.pcre
的内容/etc/postfix/append_replyto.pcre
/(.*)/ PREPEND Reply-To:$1
映射文件将匹配所有发件人并将其附加到 Reply-To 标头中。
第二个目标是通过smtp_通用_映射。哎呀...我好像错过了一点通用的行为。它将重写所有标题(发件人/回复人/其他)和信封。
generic(5) 映射同时影响 邮件头地址(即邮件内部出现的地址)和邮件信封地址(例如,SMTP 协议命令中使用的地址)。
对于可行的解决方案,请参阅 OP 的解决方案:)