发送电子邮件时重写邮件头“收件人:”字段

发送电子邮件时重写邮件头“收件人:”字段

我正在使用 Postfix(v3.7.3)配置 SMTP 服务器,用于在 openSUSE 15.5 Leap 上发送本地(即仅限主机)邮件。

我想要的是将消息发送给本地“用户”(该主机上没有真正的用户)比如 root,将这些邮件重定向到某个或某些真实地址,并在To:消息头字段中看到正确的地址(即真正的收件人)。


main.cf配置为:

...
myorigin = $myhostname
virtual_alias_maps = lmdb:/etc/postfix/virtual
smtp_header_checks = pcre:/etc/postfix/smtp_header_checks
...

在中/etc/postfix/virtual,我已经设置了重定向:

root    [email protected], [email protected]

我可能应该alias_maps使用来做到这一点/etc/aliases,但默认情况下,local被注释/禁用,master.cf所以我使用虚拟。


在 中smtp_headers_checks,我有:

/^To:.*[email protected].*/  REPLACE To: [email protected], [email protected]

现在,我发现这很容易出错,而且我觉得自己做的方式不对。容易出错是因为我必须手动保持virtual同步smtp_headers_check。因此,当有人修改一个文件时,他还应该记得修改另一个文件。
经验告诉我:这种情况不会发生。

答案1

您是否正在寻找canonical_maps

消息的可选地址映射查找表标题和信封。映射适用于发件人和收件人的地址,在信封和标题中,由canonical_classes参数。这通常用于清理旧邮件系统中的脏地址,或用 替换登录名Firstname.Lastname。表格格式和查找记录在规范(5)有关 Postfix 地址操作的概述,请参阅地址重写自述文件文档。

由于的格式与的格式canonical_maps相同virtual_alias_maps,因此您可以使用相同的文件,例如,

canonical_maps = hash:/etc/postfix/virtual

如果您只想重写To:标题中的地址,则可以用以下方法限制它:

canonical_classes = header_recipient

相关内容