在过去一小时内,我一直在深入研究SPF,浏览RFC-4408,然后过another tutorial。
我拥有自己的域名,并在该域名后面的服务器上安装了postfix。除了我的正常地址,我还希望能够使用我自己的电子邮件地址作为发件人使用GMail发送电子邮件。
我确实收到了很多反弹垃圾邮件,垃圾邮件发送者使用我的电子邮件地址作为"来自" line :(根据我的理解,SPF用于检查是否允许给定的SMTP服务器发送带有某些发件人域名的邮件。这有助于所说的反弹。
很明显,如果我希望能够通过Gmail发送邮件,我必须允许gmail通过SPF记录发送我的名字。
在their help之后,我添加了以下TXT记录:
v=spf1 include:_spf.google.com ~all
他们具体建议不要使用-all
作为后果规则。
鉴于~all
是"软故障"仍然接受所有消息,启用SPF的重点是什么?
我尝试从外部主机发送一些邮件并且它们被接受,唯一的区别是我的邮件服务器假定没有SPF记录。
通过GMail发送时从日志中摘录:
May 8 15:15:58 h2150855 policyd-spf[6184]: None; identity=helo; client-ip=300.300.300.300; helo=mail-lf0-f52.google.com; envelope-from=mygmailaddress@gmail.com; receiver=mypersonaladdress@example.com
May 8 15:15:58 h2150855 policyd-spf[6184]: Pass; identity=mailfrom; client-ip=300.300.300.300; helo=mail-lf0-f52.google.com; envelope-from=mygmailaddress@gmail.com; receiver=mypersonaladdress@example.com
...并通过第三方服务器发送:
May 8 15:19:17 h2150855 policyd-spf[6554]: None; identity=helo; client-ip=301.300.300.300; helo=theserver.example.com; envelope-from=exhuma@theserver.example.com; receiver=mypersonaladdress@example.com
May 8 15:19:17 h2150855 policyd-spf[6554]: None; identity=mailfrom; client-ip=301.300.300.300; helo=theserver.example.com; envelope-from=exhuma@theserver.example.com; receiver=mypersonaladdress@example.com
我能看到的唯一区别是后缀SPF插件将gmail消息明确标记为Pass
,而另一个标记为None
。
我现在认为添加SPF并没有真正对我的邮件设置做任何事情,我正在考虑再次删除它。
答案 0 :(得分:1)
它推荐~all
超过-all
的原因是因为它与DMARC的互动方式;使用-all
的建议早于DMARC的存在。 -all
确实是一个有效(且正确)的设置如果你单独使用SPF ,但-all
通常会破坏DMARC,因为它的规则不会被评估。如果您设置~all
默认SPF操作,它会将决定权移交给DMARC层,此时您可以说“我们认为SPF软件故障是一种困难”,并继续获得其他好处DMARC。
因此,如果您使用DMARC ,简而言之~all
并非毫无意义。 (?all
总是毫无意义!)
答案 1 :(得分:0)
您最好的选择是〜所有仅用于测试和使用-all进行生产。甚至RFC也建议:
如果域所有者选择发布SPF记录,则推荐使用 它们以" -all"结尾,或重定向到其他记录,所以 可以做出明确的授权决定。
当遇到软故障时,某些网站实际上会拒绝该电子邮件或将其指向垃圾邮件文件夹,但只是强制执行硬故障会改善拒绝邮件的网站更改,这些邮件会尝试伪造您的域名作为发件人
答案 2 :(得分:0)
~all
在默认情况下会被解释为失败,尽管您可以更改标志以将其解释为通过。
类似地,?all
在OpenDMARC中默认解释为失败。
相反,无论部署了DMARC软件包如何,-all
始终被解释为失败。
我写了一篇有关该主题的文章:Why SPF Authentication Fails。
它还涵盖了其他相关概念,包括无,中立,临时错误,永久错误等。