我总是将所有邮件服务器放在 SPF 声明中,但我不确定这是否是实现 SPF 的正确方法。
我的所有邮件都通过邮件网关发送。所有邮件都先发送到该服务器,然后转发到互联网。
问题是:考虑到邮件网关是我的 DNS 中的 MX 记录,并且使用此架构,我是否应该按如下方式编写 SPF 设置:
example.com. 86400 IN TXT "v=spf1 mx -all"
或者我应该A
为内部服务器添加额外的记录?
答案1
这应该足够了。互联网上的任何服务器都只会将您的网关视为电子邮件的发起者,而不会关心邮件来自的任何内部服务器。
答案2
没有办法说,因为你无法控制别人是否决定接受你的电子邮件他们可以(有时确实会)以违反 RFC 且愚蠢的理由拒绝您的邮件。
正如 proteus 所说,你所展示的记录应该足以证明该电子邮件来自您;这当然令人满意RFC 7208据我所知。但我知道一些大型组织会拒绝电子邮件,因为它在离开我客户的网络时经过了服务器。他们本不应该对Received: from
除导致最终连接的标头之外的标头进行任何类型的检查,但他们却这样做了。在那个特定案例中,其中一个内部服务器有一个不合格的主机名,而标头中留下的痕迹导致收件人拒绝它。当有人指出这一点时,他们非常抱歉,但(如今这种情况非常普遍,令人沮丧)他们已经将电子邮件外包,因此无法控制这一决定。我们最终不得不设置完整的内部 DNS 以使电子邮件能够发送给他们。
这个故事的重点是,他们完全可以决定在最终交付之前对所有中继应用 SPF 测试。你不知道某个白痴会耍什么愚蠢的花招。你只能遵守 RFC(就像你一样),希望得到最好的结果,并在最坏的情况发生时处理它。