postfix 使用 generic & header_check 重写发件人

postfix 使用 generic & header_check 重写发件人

我想重写所有发件人地址@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

显然这里有两个目标:

  1. 将原始发件人附加到Reply-To标题栏。
  2. 将发送者重写为静态值。

对于第一个目标,使用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 的解决方案:)

相关内容