我已经sender_dependent_default_transport_maps
为发送邮件设置了所有具有自己 IP 的虚拟域 - 它们可以正常工作。
然而,当 postfixsendmail
将电子邮件添加到队列时,显然它仍会通过主机域传递电子邮件并在电子邮件中添加标题!
Received: by hostname.blah
在将其传递到正确的虚拟主机名和 IP 以进行邮件发送之前
(请注意,电子邮件中的返回路径和发件人 IP 都是正确的)
为什么 Postfix 这么愚蠢,尽管有发件人传输图,但还是通过主机服务器传递电子邮件?
我是否必须寻找另一个 MTA?
也许还有其他选项可以与它的sendmail
mta 一起使用吗(我已经在使用了-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