当有人发布新内容时,我们的 Web 应用程序会向人们发送电子邮件。发件人和收件人都已选择从我们的应用程序接收电子邮件。在准备这样的消息时,我们设置了以下 SMTP 标头:
发件人:author@example.com 收件人:收件人@example.com 发件人:webapp@mycompany.com
我们选择在 FROM 标头中使用作者的电子邮件地址,以尝试为收件人提供最佳体验;当他们在邮件客户端中看到消息时,作者很清楚。为了避免欺骗的出现,我们添加了 SENDER 标头(使用我们自己的公司电子邮件地址)以明确我们代表作者发送了邮件。阅读 RFC 822 和 2822 后,这似乎是发送方标头的预期用途。
大多数接收邮件的服务器似乎都能很好地处理这个问题;电子邮件消息正常传递(假设收件人邮箱存在,未超过配额等)。但是,当从域中的地址向同一域中的地址发送消息时,某些接收域会拒绝消息并给出如下响应:
571 不正确的 IP - psmtp(回复 RCPT TO 命令)
我认为这意味着接收服务器只看到 FROM 标头地址在它自己的域中,并且消息来自它认为没有授权为该域发送消息的服务器。换句话说,接收服务器忽略了 SENDER 标头。
我们有一个解决方法:webapp 保留了一个列表,这些域似乎忽略了 SENDER 标头,当 FROM 和 TO 标头都在这样的域中时,它会将 FROM 标头设置为我们自己的电子邮件地址。但是这个列表需要维护。
有没有更好的方法来实现所需的体验?我们希望成为网络的“好公民”,所有相关方——发送者和接收者——都希望参与并接收这些消息。一种替代方法是始终在 FROM 标题中使用我们公司的电子邮件地址,并将作者的姓名/地址放在主题前面,但这似乎有点笨拙。
Jde*_*eBP 16
你看错了。这些是消息头。您应该查看 SMTP信封。(如何指定信封取决于您的应用程序向邮件系统提交邮件的确切方式。在许多系统上,信封由邮件提交实用程序的命令行参数指定。)具体取决于协议事务中的时间它决定发出 571 响应,SMTP 中继服务器甚至可能根本没有看到邮件头。
响应文本是说您正在与之交谈的那个特定 SMTP 中继服务器的管理员限制了您可以放入 SMTP 信封中的内容。它似乎在抱怨信封的收件人部分。但是它可能会推迟对信封发件人的验证,直到指定第一个收件人,因此它可能会抱怨发件人。
请注意,信封发件人是发送传递状态消息的地方,您不会希望将这些消息定向到世界各地的随机人员。(除了许多人不喜欢这一点之外,将您的邮件的传递状态消息返回给除您之外的任何人是没有意义的。)将您自己指定为信封发件人。
MX顺便说一下,要求资源记录是错误的。SMTP中继服务器可以通过位于A并且AAAA在没有任何资源记录MX资源记录。请参阅 RFC 5321 § 5.1。
我可能是错的,但上述错误的最可能原因,尤其是在 Postini 的情况下,是您被拒绝的域有严格的 SPF 政策。大多数带有 SPF 检查的邮件服务器只会检查 From: 标头,它们不会关心 Sender 标头。
要检查是否是这种情况,请运行“dig +short TXT domain.com”,其中 domain.com 是向您提供错误消息的原因。你应该得到类似的东西:
“v=spf1 mx -all”
重要的部分是 -all。这意味着域所有者已声明他们只会从充当其邮件服务器的服务器发送电子邮件,所有其他邮件都将被拒绝。
幸运的是,如果是这种情况,您可以在发送电子邮件之前主动检查!当用户输入他们的电子邮件地址时,让 WebApp 进行 SPF 检查。如果有严格的政策,请将域添加到您的列表中。可以进行 SPF 检查的所有语言的库都不乏。
| 归档时间: |
|
| 查看次数: |
25623 次 |
| 最近记录: |