SPF参考

1. SPF是什么

SPF, Sender Policy Framework, 是一种用于确认邮件来源的手段.

SMTP 服务器之间进行交互时, 对于请求来源是无法直接确认的, 因为邮件交互是公开的行为, 就像你不能阻止有人往你的门缝里塞小卡片一样. 作为收信服务器, 你收到一个请求, 声称它来自于gmail.com, 你如何能确认这个请求就是来源于 google 的服务器呢?

于是, 对域名的确认, 自然解决方案就落在了域名的配置上. 比如你可以看看来源 IP 是否和域名的 A 记录一致, 或者和 MX 记录一致. 但是很显然, 这并不是一个好方法, 因为 A 记录和 MX 记录, 其本来的用途本来和发信服务就不相关. 简单来说, 一个域下的发信服务和收信服务在不同的服务器上完成太正常不过了.

所以, 在域名的 TXT 记录中, 就有了一个专门的 SPF 来完成上面所述的工作.

gmail.com 这个域名, 配置其对应的 SPF 规则, 来描述我的投信请求, 可能来源于哪些 IP 地址. 这个信息是可以通过公开的 DNS 服务查询到的. 那么收信服务器收到 gmail.com 的投信请求时, 就根据查询到的 SPF 规则来检查来源 IP .

dig gmail.com -ttxt

得到:

;; ANSWER SECTION:
gmail.com. 300 IN TXT "v=spf1 redirect=_spf.google.com"

继续:

dig _spf.google.com -ttxt

得到:

;; ANSWER SECTION:
_spf.google.com. 300 IN TXT "v=spf1 include:_netblocks.google.com \
                                    include:_netblocks2.google.com \
                                    include:_netblocks3.google.com ~all"

我们取一个看看:

dig _netblocks.google.com -ttxt

结果有:

_netblocks.google.com. 2158 IN TXT "v=spf1 ip4:216.239.32.0/19 ip4:64.233.160.0/19 \
                                           ip4:66.249.80.0/20 ip4:72.14.192.0/18 \
                                           ip4:209.85.128.0/17 ip4:66.102.0.0/20 \
                                           ip4:74.125.0.0/16 ip4:64.18.0.0/20 \
                                           ip4:207.126.144.0/20 ip4:173.194.0.0/16 ~all"

根据这些规则所描述的 IP 段, 收信服务器就可以判断请求来源是不是 gmail.com 这个域. 或者说得准确点, 对于声称是 gmail.com 的请求来源, 根据它的来源 IP 的不同, 而应该采取什么样的处理策略, 是拒绝, 标记, 还是通过.

2. SPF语法

从前面查询 gmail.com 的过程, 看几个例子:

"v=spf1 redirect=_spf.google.com"
"v=spf1 include:_netblocks.google.com ~all"
"v=spf1 ip4:216.239.32.0/19 ~all"

形式上, SPF 记录分成四个部分, 用 双引号 括起来.

  1. v=spf1 .
  2. 可能出现的 Modifiers , 比如 redirect .
  3. 一个或多个 Mechanisms , 比如 include , ip4 .
  4. 最后用一个 all 结尾.

所有的规则, 从左往右开始匹配.

3. Modifiers

SPF 记录中可以包括两种可选的 Modifiers , 其只能出现一次:

redirect
用指定域名的 SPF 记录替换当前记录, 如 redirect=_spf.google.com

exp
(没见用过)

4. 前缀

Mechanisms 可以带 4 种前缀:

  • + Pass
  • - Fail
  • ~ Soft Fail
  • ? Neutral

默认是 + Pass .

四种前缀表示对应规则匹配时, 建议的服务器处理策略:

结果 含义 建议处理
Pass IP 合法 收信
Fail IP 非法 退信
Soft Fail IP 非法 收信, 但标记
Neutral 不清楚 收信
None 无 SPF 记录 收信
PermError 严重错误(SPF 格式错误) 无规定
TempError 临时错误(DNS 查询失败) 随便

5. Mechanisms

mechanisms 有下面这些:

  • all , 所有 IP , 一般放在最后.
  • ip4 , 指定 ipv4 的地址段.
  • ip6 , 指定 ipv6 的地址段.
  • a , 指定域名的 A 记录.
  • mx , 指定域名的 MX 记录.
  • include , 引入指定域名的 SPF 记录.
  • exists , 检查指定域名的 A 记录.
  • ptr , 指定域名的反查记录.
all 一般放最后, 定义未匹配时的处理.
"v=spf1 ip4:216.239.32.0/19 ~all"
ip4 指定一个 IPv4 地址, 或地址段.
"v=spf1 ip4:216.239.32.0 ~all"
"v=spf1 ip4:216.239.32.0/19 ~all"
ip6 指定一个 IPv6 地址, 或地址段.
"v=spf1 ip6:2001:4860:4000:: ~all"
"v=spf1 ip6:2001:4860:4000::/36 ~all"
a 指定一个域名(或默认本域名)的 A 记录, 可以添加段范围.
"v=spf1 a ~all"
"v=spf1 a:mail.google.com ~all"
"v=spf1 a/12 ~all"
"v=spf1 a:mail.google.com/18 ~all"
mx 指定一个域名(或默认本域名)的 MX 记录, 可以添加段范围.
"v=spf1 mx ~all"
"v=spf1 mx:mail.google.com ~all"
"v=spf1 mx/12 ~all"
"v=spf1 mx:mail.google.com/18 ~all"
include 引入指定域名的 SPF 记录.
"v=spf1 include:mail.google.com ~all"
exists 检查指定域名的 A 记录, 有结果则为命中.
"v=spf1 exists:google.com ~all"
ptr 反查指定域名的 IP 地址.
"v=spf1 ptr:google.com ~all"

多个 mechanisms 规则以空格分开, 比如上面的某个规则和最后的 all.

6. 参考资料

时间: 2024-08-14 21:31:39

SPF参考的相关文章

《IS-IS网络设计解决方案》一第6章 最短路径优先算法6.1 SPF算法概述

第6章 最短路径优先算法 IS-IS网络设计解决方案 路由选择协议的本质是收集网络环境中的路由选择信息,并选择到所有已知目的的最优路径.如第2章中提到的,在IS-IS协议的体系结构中,这些功能是由两个进程实现的:更新进程与决策进程.更新进程主要负责建立IS-IS数据库并维护其稳定性:决策进程使用最短路径优先(Shortest Path First,SPF)算法基于链路状态数据库中的信息计算到所有已知目的的最优路径.SPF算法通过计算区域内一个特定的节点到其他所有节点的最短路径树从而得出从这个特定

《OSPF网络设计解决方案(第2版)》一2.3 SPF概述

2.3 SPF概述 OSPF网络设计解决方案(第2版) OSPF是一个链路状态路由协议,此类协议在一些技术文档及文献中也被称为基于SPF的协议,或者是分布式数据库协议.本节讨论链路状态算法的发展,以及该算法对OSPF协议产生的影响. 什么是链路状态协议? OSPF是一个链路状态协议.那什么是链路状态呢?你可以将链路看作是路由器上的一个接口,而链路的状态也就是对该接口的描述.这种描述包括了接口的IP地址和掩码,以及接口所连接网络的类型和状态.OSPF将网络中所有路由器的链路状态信息汇总于链路状态数

邮件服务器方案参考

国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为"中国PE第一股",市值超1000亿元.    ----------------------------------------------------------------------------

Mysql字段长度,供出血者参考,呵呵!

mysql|参考 列类型  需要的存储量  TINYINT  1 字节 SMALLINT  2 个字节 MEDIUMINT  3 个字节 INT  4 个字节 INTEGER  4 个字节 BIGINT  8 个字节 FLOAT(X)  4 如果 X < = 24 或 8 如果 25 < = X < = 53 FLOAT  4 个字节 DOUBLE  8 个字节 DOUBLE PRECISION  8 个字节 REAL  8 个字节 DECIMAL(M,D)  M字节(D+2 , 如果M

IE浏览器滚动条的参数总结参考

参考|浏览器 有朋友常提关于IE滚动条的问题,特总结该贴.简单地介绍一下涉及浏览器滚动条的样式表内容(某些样式需ie5.5+才能支持): 1.overflow内容溢出时的设置(设定被设定对象是否显示滚动条)    overflow-x水平方向内容溢出时的设置    overflow-y垂直方向内容溢出时的设置    以上三个属性设置的值为visible(默认值).scroll.hidden.auto. 2.scrollbar-3d-light-color立体滚动条亮边的颜色(设置滚动条的颜色) 

Global.asa 参考(五) - TypeLibrary 声明

参考 ActiveX 组件常常要描述类型库中该组件支持的常量.类型库是一个文件,其中包含有关 ActiveX 组件所支持的对象和类型的信息.如果用户的 Web 应用程序依赖于已在类型库中声明了类型的 ActiveX 对象,就可以在 Global.asa 文件中声明其类型.这样做以后,就可以在应用程序范围内从任何脚本引用已在类型库中声明了的数据类型. 有关在 ASP 中使用常量的详细信息,请参阅"使用变量和常量". 语法<!--METADATA TYPE="TypeLib

Mysql学习积累之一[网摘收藏 个人学习参考]

之前主要使用Oracle,对MySQL不熟悉.以为两者差不多,但发现其实还是有点区别,现在开始学习Mysql. 任何时候,技术没有早晚,看到自己缺少的,就只能自己主动补钙.:) 收藏一篇文章如下,参考:http://www.centos.bz/2011/07/mysql-frequently-used-commands/.所有权归原作者. ============================================ 登录MySQL,如果连接远程数据库,需要用-h指定hostname.

mfc求助-求MFC程序制作,本人初学者,很多都不懂,希望能有大神提供样本参考。

问题描述 求MFC程序制作,本人初学者,很多都不懂,希望能有大神提供样本参考. 摇杆 主动快带动从动块 键盘WD能控制主动块左右移动菜单里面有"绘制轨迹"选项 和 "消除轨迹" 选项 绘制连杆中点的轨迹 消除轨迹 求大神给个样本参考 T.T

这种倒计时的的效果,有图片素材,可以实现么?有没有例子参考一下

问题描述 这种倒计时的的效果,有图片素材,可以实现么?有没有例子参考一下 解决方案 有图片那不就是更新下img的src加载不同的图片就行了 var d=new Date(); var hour=d.getHours() var minute=d.getMinutes(); var second=d.getSeconds() //......