与 FastMail 技术人员讨论 SMTP 邮件代发问题

2015-10-29

近日,Zoho 的免费邮件托管服务再次出现延迟故障——今年以来这类问题已经出现了多次了。我终于决定换一家邮件托管服务。中、美、俄主要的几家免费邮件托管服务我均试用过,多多少少都有点不满意之处。这次打算尝试一下久闻大名的 FastMail——尽管是收费服务,但价格相对合理。在试用过程中,我遇到一些与 SMTP 邮件代发相关的小问题,与 FastMail 的技术人员进行了沟通。通过这次沟通,我一方面了解了相关知识,另一方面也对 FastMail 公司有了一定的认识。现将有关内容分享如下。

我希望使用 FastMail 的 SMTP 服务代发另一个邮箱的邮件。之所以要这样做,是因为那个邮箱不提供免费的 SMTP。经测试,我发现 FastMail 代发的邮件中不包含 Sender 字段。这样做的好处是接收方不会看到邮件是由第三方服务器代发的提示,但我注意到这些邮件在接收方无法通过 SPF 检查。我此前使用 Gmail 和 Zoho 的 SMTP 服务进行代发时,邮件中都包含 Sender 字段,接收方检查 SPF 记录也都能通过。我以为这个 Sender 字段是关键,于是向 FastMail 提交了 ticket,询问 FastMail 为什么没有在 SMTP 代发的邮件中添加 Sender 字段以显示真实邮件来源。

我的 ticket 很快得到了客服的回复。在简单交流之后,客服认为我的问题涉及一些技术细节,可以同技术人员直接沟通。我的 ticket 被转给了一名技术人员。这位技术人员在了解了我的需求和疑问之后,回复了一封详细的邮件。他告诉我,根据 RFC 规定,SPF 检查不依赖于邮件中的 Sender 字段,而取决于 SMTP 消息中的 Mail from 或其他等效命令。Gmail 和 Zoho 代发的邮件之所以能通过 SPF 检查,与 Sender 字段无关,关键在于它们在 Mail from 命令中使用了自己服务器上的邮件地址,而 FastMail 没有这样做。Gmail、Zoho 和 FastMail 的做法均不违反 SMTP 和邮件格式的 RFC 规定。FastMail 之所以不像 Gmail 和 Zoho 那样处理 Mail from 与 Sender,是出于其核心理念之一的隐私保护——一些用户不希望自己的真实邮件地址泄露。该技术人员同时指出,即使像 Gmail 和 Zoho 那样处理,SMTP 邮件代发也不尽完美,因为一些邮件服务商还采用了 DMARC 认证。DMARC 检查基于邮件中的 From 字段,需要效验邮件是否经过 From 所在域的服务器签名。如果没有相关签名,并且 From 所在域的服务器在 DNS 记录中设置了 DMARC 拒绝策略,则接收方的服务器会拒收此类邮件。这是反欺诈邮件的需要,SMTP 代发机制无法绕过。我查询发现 Yahoo! 邮箱的域名设置了 DMARC 拒绝策略,而 Gmail 会执行 DMARC 检查。经测试,如果使用 FastMail 或 Zoho 的 SMTP 服务代发 Yahoo! 地址的邮件,Gmail 服务器就会拒收。

此前就听说过,FastMail 是由一群真正懂邮件的人做的一家走技术路线的公司。看到这封详细的回复,我算是有了切身体会。同时,在处理邮件字段的问题上,也可以看出 FastMail 的核心理念在细节中有所落实。良好的第一印象使得我愿意进一步试用 FastMail 的服务,期待它能够给我带来出色的用户体验。