postfix mta 标头“已接收”虚拟域的服务器主机名

postfix mta 标头“已接收”虚拟域的服务器主机名

我已经sender_dependent_default_transport_maps为发送邮件设置了所有具有自己 IP 的虚拟域 - 它们可以正常工作。

然而,当 postfixsendmail将电子邮件添加到队列时,显然它仍会通过主机域传递电子邮件并在电子邮件中添加标题!

Received: by hostname.blah

在将其传递到正确的虚拟主机名和 IP 以进行邮件发送之前

(请注意,电子邮件中的返回路径和发件人 IP 都是正确的)

为什么 Postfix 这么愚蠢,尽管有发件人传输图,但还是通过主机服务器传递电子邮件?

我是否必须寻找另一个 MTA?

也许还有其他选项可以与它的sendmailmta 一起使用吗(我已经在使用了-f

另一种问法是

Can postfix's sendmail change "received: by" based on sender envelope ?

或者

Can I tell postfix's sendmail where the message is coming from on the command line?

我突然想到,如果 postfix 在本地监听端口 25,我可能能够从正确的虚拟主机 IP 启动,它可能会解决这个问题。但这太复杂了。

答案1

一些澄清:

在上述情况下,后缀只是信使. 该电子邮件的来源是调用 postfix 的程序发送邮件二进制。电子邮件信使的职责之一是Received:每次收到电子邮件时给每封电子邮件加上标题. 它记录在RFC 5231 部分“网关中的接收行”

现在,当 postfix sendmail 二进制文件将电子邮件添加到 postfix 队列时,它会将电子邮件放入 maildrop 二进制文件中Received标题。放标题的人Received捡起守护进程。添加Received标题时,它基本上告诉我们,“嗨,我有已收到来自 sendmail 二进制用户 ID xxx 的电子邮件。”

sender_dependent_default_transport_maps将在路由阶段调用。Postfix 不会在接收阶段对其进行评估。


现在的主要问题是:我们可以禁用这个行为吗?

你可以随时使用以下方式操作后缀头:header_checks功能。这个想法来自这篇文章:使用 postfix 从电子邮件标题中删除敏感信息,您可以使用此 pcre 行来删除不需要的标题。

/^Received: by hostname.blah.*from userid/ IGNORE

相关内容