什么是SPF记录?
一、SPF记录的定义
SPF全称为Sender Policy Framework,即发件人策略框架,是一种以IP地址认证电子邮件发件人身份的技术,是非常高效的垃圾邮件解决方案。
二、SPF记录的原理
- 查询验证过程
- 当邮件服务器收到一封邮件时,比如邮件来自主机的IP是173.194.72.103,并且声称发件人为email@example.com。邮件服务器会去查询example.com的SPF记录。
- 如果该域的SPF记录设置允许IP为173.194.72.103的主机发送邮件,则服务器就认为这封邮件是合法的;如果不允许,则通常会退信,或将其标记为垃圾/仿冒邮件。
- 与DNS的关系
- SPF是跟DNS相关的一项技术,它的内容写在DNS的txt类型的记录里面。
三、SPF记录的作用
- 反垃圾邮件方面
- 主要针对那些发信人伪造域名的垃圾邮件。例如收到自称发件人是spam@mdaemon.com的邮件时,可以通过查询mdaemon.com的SPF记录来验证是否为真实的该域名的邮件服务器所发邮件。
- 对邮件服务器的作用
- 它向收信者表明,哪些邮件服务器是经过某个域名认可会发送邮件的,这一作用与mx记录相反,mx记录是给寄信者指明某个域名的邮件服务器有哪些。
四、SPF记录的语法
- mechanism相关
- 一条SPF记录定义了一个或者多个mechanism,而mechanism则定义了哪些IP是允许的,哪些IP是拒绝的。每个mechanism可以有四种前缀:+Pass(通过)、 -Fail(拒绝)、~SoftFail(软拒绝)。如果一个mechanism包含了要查询的IP地址(称为命中),则测试结果由相应mechanism的前缀决定,默认的前缀为+。如果测试完所有的mechanisms也没有命中,则结果为Neutral。
- 对于不同的结果,服务器有不同的处理办法: |结果|含义|服务器处理办法| |----|----|----| |Pass|发件IP是合法的|接受来信| |Fail|发件IP是非法的|退信| |Neutral|SPF记录中没有关于发件IP是否合法的信息|接受来信| |None|服务器没有设定SPF记录|接受来信| |PermError|发生了严重错误(例如SPF记录语法错误)|没有规定| |TempError|发生了临时错误(例如DNS查询失败)|接受或拒绝|
- 需要注意的是,上述“服务器处理办法”仅仅是SPF标准做出的建议,并非所有的邮件服务器都严格遵循这套规定。
- 具体mechanism示例
- all:表示所有IP,肯定会命中。通常把它放在SPF记录的结尾,表示处理剩下的所有情况。例如:v = spf1 + all,表示接受所有(域名所有者认为SPF是没有用的,或者根本不在乎它) 。
- ip4:格式为ip4:ip4 - address或者ip4:ip4 - network/prefix - length,指定一个IPv4地址或者地址段。如果prefix - length没有给出,则默认为/32。例如:v = spf1ip4:192.168.0.1/16 - all,只允许在192.168.0.1~192.168.255.255范围内的IP 。
- a和mx:这俩的格式是相同的,以a为例,格式为以下四种之一:a/prefix - length、a:domain,会命中相应域名的a记录(或mx记录)中包含的IP地址(或地址段)。如果没有提供域名,则使用当前域名。例如:v = spf1mx - all,v = spf1mxmx:deferrals.example.com - all,表示允许当前域名和deferrals.example.com的mx记录对应的IP地址。
- include:格式为include:domain,表示引入domain域名下的SPF记录。注意,如果该域名下不存在SPF记录,则会导致一个PermError结果。例如:v = spf1include:example.com - all,即采用和example.com完全一样的SPF记录。
- exists:格式为exists:domain。
本篇文章所含信息均从网络公开资源搜集整理,旨在为读者提供参考。尽管我们在编辑过程中力求信息的准确性和完整性,但无法对所有内容的时效性、真实性及全面性做出绝对保证。读者在阅读和使用这些信息时,应自行评估其适用性,并承担可能由此产生的风险。本网站/作者不对因信息使用不当或误解而造成的任何损失或损害承担责任。
