返回由后缀重写的路径头


Return-Path header rewritten by postfix

我在ubuntu:上使用后缀从PHP发送邮件

mail($to, $subject, $body, "Return-Path: <test@mail.com>");

试图设置Return-Path标头,但似乎后缀将其重写为user@serverdomain

在修补程序文档中找到默认值为bcc, content-length, resent-bcc, return-pathmessage_drop_headers变量

尝试更改postfix/main.cf中的值,但在启动时发出警告:

/usr/sbin/postconf: warning: /etc/postfix/main.cf: unused parameter: message_drop_headers=bcc content-length resent-bcc

原因可能是什么?如何配置后缀不重写返回路径头?

在出站电子邮件上设置Return-Path:标头毫无意义,因为它将被收件人的MTA替换。如果您想控制写在那里的内容,请设置信封发件人(传统上为sendmail -f address@example.com

更详细地说,当您发送消息时,有两层:信封,它指定实际收件人,以及消息本身,它通常包含具有相同信息的标头。。。但有时情况并非如此,有时这些标题公然撒谎。

当邮件传递给收件人时,接收MTA(Sendmail或Postfix或Exchange或其他什么)会将信封发件人信息复制到Return-Path:标头中,如果缺少,则添加一个,如果已经存在,则通常只需覆盖它。

因此,如何在传出服务器上配置Return-Path:并不重要;为了正确控制这一点,您需要控制将消息传递给收件人的每台服务器上的接收行为。

作为一个微不足道的例子,订阅一个公共邮件列表,观察邮件头通常会说这样的话:

From: Popular mailing list <popular-list@example.com>
To: Popular mailing list <popular-list@example.com>

然而它却出现在了你的收件箱里。这是怎么发生的?为什么,通过信封收件人的信息。列表软件基本上为每个订阅者添加一个Bcc:,但也会说服服务器忽略标头中的实际To:地址这是令人惊讶的,直到你意识到报头实际上并不重要,只有信封地址才能真正控制消息最终传递的位置。

简言之,信封由RFC5321(最初为822)中定义的SMTP MAIL FROM:RCPT TO:谓词指定,实际消息(包括所有标头)在SMTP DATA部分中通信,就SMTP而言,这实际上只是纯数据。它们的规范是RFC5322(née 822),一旦消息被实际传递,接收服务器实际上会添加一些自己的报头,但From:To:报头基本上仍然被忽略。

解决方案是在Postfix main.cf中声明一个smtp_generic_maps表,并在其中列出本地用户和相应的电子邮件。

例如:www数据test@mail.com

看看https://www.postfix.org/generic.5.html了解更多信息。

当然,只使用您管理的真实域,并且至少有允许从该服务器发送邮件的SPF记录。