SPF,全称为 Sender Policy Framework,即发件人策略框架。
SPF记录检测工具 https://www.kitterman.com/spf/validate.html?
当前 Email 通信,还是在使用 SMTP 这个协议。SMTP 的全称为 Simple Mail Transfer Protocol,即「简单邮件传输协议」。正如它的名字锁暗示的,SMTP 实际上是一个非常简单(甚至简陋)的传输协议,本身并没有很好的安全措施。根据 SMTP 的规则,发件人的邮箱地址是可以由发信方任意声明的。
SPF 出现的目的,就是为了防止随意伪造发件人。
SPF 记录实际上是服务器的一个 DNS 记录,原理:
假设邮件服务器收到了一封邮件,来自主机的 IP 是185.125.79.101,并且声称发件人为email@example.com。为了确认发件人不是伪造的,邮件服务器会去查询example.com的 SPF 记录。如果该域的 SPF 记录设置允许 IP 为185.125.79.101的主机发送邮件,则服务器就认为这封邮件是合法的;如果不允许,则通常会退信,或将其标记为垃圾/仿冒邮件。
因为不怀好心的人虽然可以「声称」他的邮件来自example.com,但是他却无权操作example.com的 DNS 记录;同时他也无法伪造自己的 IP 地址。因此 SPF 是很有效的,当前基本上所有的邮件服务提供商(例如 Gmail、QQ 邮箱等)都会验证它。
SPF 记录的语法
举例:
"v=spf1 mx -all"
表示允许所有该域的MX邮件服务器发送邮件,禁止其他的。
"v=spf1 -all"
表示该域不会发送任何邮件。
"v=spf1 +all"
表示任何服务器都可使用该域名发送邮件
"v=spf1 ip4:192.168.0.1 -all"
表示只允许IP地址192.168.0.1。
"v=spf1 ip4:192.168.0.1/16 -all"
表示只允许192.168.0.1~192.168.255.255范围内的IP地址。
"v=spf1 ip6:1080::8:800:200C:417A -all"
表示只允许IP地址1080::8:800:200C:417A
"v=spf1 ip6:1080::8:800:68.0.3.1/96 -all"
表示只允许1080::8:800:0000:0000~1080::8:800:FFFF:FFFF范围内的IP地址
"v=spf1 a -all"
表示当前域所有a记录指向的ip均可以发件。
"v=spf1 a:example.com -all"
等价于当前域为example.com。
"v=spf1 a:mailers.example.com -all"
表示指定mailers.example.com的主机IP可以外发邮件。
"v=spf1 a/24 a:offsite.example.com/24 -all"
如果example.com解析到192.0.2.1,那么整个C类地址192.0.2.0/24将作为客户端IP地址外发邮件。同样,如果offsite.example.com返回多个A记录,每个IP地址将被扩展到CIDR子网。
"v=spf1 mx mx:deferrals.domain.com -all"
表示允许当前域通过其MX服务器发送邮件,并通过deferrals.domain.com的MX服务器重试延迟的邮件。
"v=spf1 mx/24 mx:offsite.domain.com/24 -all"
也许一个域的MX服务器使用一个IP地址接收邮件,使用另一个相邻IP地址发送邮件。
"v=spf1 include:example.com -all"
若example.com没有SPF记录,则拒绝任何发件
若example.com的SPF记录为“v=spf1 a -all”,查询example.com的A记录,匹配则允许发件
以上内容如果对你有用,请收藏。
评论列表: