我在ubuntu上使用postfix从PHP发送邮件:
mail($to, $subject, $body, "Return-Path: <test@mail.com>");
尝试设置Return-Path
标头,但似乎postfix将其重写为user @ serverdomain
在postfix文档message_drop_headers
变量中找到,默认情况下值为bcc, content-length, resent-bcc, return-path
试图在postfix/main.cf
中更改它的值,但它会在开始时发出警告:
/usr/sbin/postconf: warning: /etc/postfix/main.cf: unused parameter: message_drop_headers=bcc content-length resent-bcc
可能是什么原因?如何配置postfix不重写Return-Path标头?
答案 0 :(得分:0)
在出站电子邮件上设置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中定义的SMTP MAIL FROM:
和RCPT TO:
动词指定(最初为822),实际消息(包括所有标题)都是通信的SMTP DATA
部分就SMTP而言实际上只是纯数据。他们的规范是RFC5322(née822),一旦实际传递了消息,接收服务器实际上会添加一些自己的标头,但From:
和To:
标题仍然只是基本上忽略。