首页 文章 精选 留言 我的

精选列表

搜索[安全],共10000篇文章
优秀的个人博客,低调大师

邮件安全之SPF记录详解

什么是SPF 就是Sender Policy Framework。SPF可以防止别人伪造你来发邮件,是一个反伪造性邮件的解决方案。当你定义了你的domain name的SPF记录之后,接收邮件方会根据你的SPF记录来确定连接过来的IP地址是否被包含在SPF记录里面,如果在,则认为是一封正确的邮件,否则 则认为是一封伪造的邮件。 下面为SPF的详细介绍, 一 句型 在一条SPF记录中,按照排列的先后顺序,对所给出的机制进行验证.如果在SPF记录中,没有机制或修改符,默认结果是中性(Neutral);如果域没有SPF记录,结果是:”无”(None);如果在DNS解析期间,有一个临时错误,会报”临时错误”(TempError)(以前的规划中称作”错误”(error));如果SPF记录句型错误,比如写法错误或者使用了未知句型,会报”永久错误”(PermError)(以前称作”unknown”) 1 机制 1.1 机制表示 1.1.1 all 这个机制总是匹配的,通常用在记录的结尾.例: “v=spf1 mx –all” 允许所有该域的MX邮件服务器发送邮件,禁止所有其他的. “v=spf1 –all” 该域根本不能发送邮件 “v=spf1 +all” 任何服务器都可以发送邮件 1.1.2 ip4 “v=spf1 ip4:192.168.0.1/16 –all” 允许192.168.0.1到192.168.255.255的服务器发送邮件 “v=spf1 ip4:192.168.0.1 –all” 允许192.168.0.1发送邮件,与“v=spf1 ip4:192.168.0.1/32 –all”同意 1.1.3 ip6 单个IP,于ip4不同,/128为默认前缀 例: "v=spf1 ip6:1080::8:800:200C:417A/96 -all" 允许1080::8:800:0000:0000 和 1080::8:800:FFFF:FFFF之间的主机发送 "v=spf1 ip6:1080::8:800:68.0.3.1/96 -all" 允许 1080::8:800:0000:0000 和1080::8:800:FFFF:FFFF之间的主机发送 1.1.4 a 例:假设当前域为example.com "v=spf1 a -all" 当前域被使用 "v=spf1 a:example.com -all"当前域被使用 Equivalent if the current-domain is 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子网,作为可外发邮件IP地址. 1.1.5 mx 所有域的MX记录对应的A记录,按照MX记录的优先级进行验证.如果发送IP在这些记录中,则机制匹配.如果域未指定,默认为当前域. A记录需要精确匹配发送邮件的IP地址.如果有CIDR前缀,则需要逐个对应IP地址验证. 例: v=spf1 mx mx:deferrals.domain.com -all" Perhaps a domain sends mail through its MX servers plus another set of servers whose job is to retry mail for deferring domains. 也许一个域可以通过他的MX服务器发送邮件,而另外也可以通过deferrals.domain.com的MX服务器发送邮件. "v=spf1 mx/24 mx:offsite.domain.com/24 -all" 也许一个域的MX服务器在一个IP接收邮件,而用临近的另一IP发送邮件. 1.1.7 prt 发送IP的PTR记录至少有一个和给定域相匹配.尽量避免使用这种机制,因耗费大量的DNS查询 例子: "v=spf1 ptr -all" "v=spf1 ptr:otherdomain.com -all" 1.1.8 exists 对被提供的域进行A记录查询,如果有结果,则匹配.如果结果是”-“,会被当作127.0.0.2对待. 在下面的例子中,发件IP地址为1.2.3.4,当前域为example.com "v=spf1 exists:example.net -all" 如果example.net不能解析,结果失败.如果可以解析.机制匹配. 1.1.10 include 句型:include:<domain> 指定的域被查询后匹配.如果查询无匹配或者有错误,接着开始下一个机制处理.警告:如果指定域不是合法有效的SPF记录,返回”永久性错误”结果.某些邮件接收者会基于此错误,拒绝接受邮件. 例: 在下面的例子中,发信IP是1.2.3.4,当前域是example.com “v=spf1 include:example.net –all” 如果example.net没有SPF记录,结果是”永久错误”(PermError) 假设example.net的SPF记录是”v=spf1 a –all” 查询exapmle.net的A记录,如果匹配1.2.3.4,结果是”通过”(Pass);如果不匹配,,则include整体匹配失败,后面的-all将不再验证,最后总的结果还是”失败”(Fail). 这个机制会涉及信任关系,可能会有越权行为,可能被人假冒.因此可以设置为中性,在include前加上标识符? “v=spf1 ?include:example.net –all” 该机制一般不宜选择. 1.2 标识符 作为机制的前缀,表明机制的状态.机制的默认标识符为”+” "+" Pass (通过) "-" Fail (失败) "~" SoftFail (软失败) "?" Neutral (中性) 2修改符 在一个SPF记录中,每个修改符只能使用一次,不能重复使用.未知修改符将会在验证时忽略。 1.2.1 redirect 句型: redirect=<domain> 将会用指定域代替当前域 在下面的例子里:当前域为example.com,发信IP是1.2.3.4 “v=spf1 redirect=example.net” 如果example.net没有SPF记录,返回”unknown”的错误 假设example.net的SPF记录是”v=spf1 a –all” 查询example.net的A记录,如果匹配1.2.3.4,则”通过”(Pass);如果不匹配,该行为失败,接着开始执行-all机制. 1.2.2 exp 句型: exp=<domain> 提供解释性的语句.如果SMTP接收者拒绝一个信息,它可以包含一个返回给发信者的解释信息.SPF记录里可以包含一个解释字符串给发送者,告之相关的错误信息或需要访问的帮助页面等. 二 处理过程 三 错误代码 验证SPF记录的结果只能有如下几在种: 结果 解释 可做行为 Pass SPF记录指定,主机被允许发送 接受 Fail SPF记录指定,主机不被允许发送 拒绝 SoftFail SPF记录指定,主机不被允许发送,但可以再发送 接受但做标记 Neutral SPF记录详尽,但不能确认其有效性 接受 None 无SPF记录或SPF记录验证无结果 接受 PermError 永久错误(例如不正确的格式记录) 未指明 TempError 临时错误发生 接受或拒绝 设置SPF记录 SPF记录类似类似这样: v=spf1 a mx mx:mail.jefflei.com ip4:202.96.88.88 ~all 这条SPF记录具体的说明了允许发送 @yourdomain.com 的IP地址是: a (这个a是指 yourdomain.com 解析出来的IP地址,若没有配置应取消) mx (yourdomain.com 对应的mx,即 mail.yourdomain.com的A记录所对应的ip) mx:mail.jefflei.com (如果没有配置过mail.jefflei.com这条MX记录也应取消) ip4:202.96.88.88 (直接就是 202.152.186.85 这个IP地址) 其他还有些语法如下: - Fail, 表示没有其他任何匹配发生 ~ 代表软失败,通常用于测试中 ? 代表忽略 如果外发的ip不止一个,那么必须要包含多个 可以通过这个网站的向导自动生成SPF记录:http://www.openspf.org/ ,Godaddy域名解析面板的TXT记录也提供了设置SPF记录的向导,设置很方便。 检测SPF记录设置是否正确 发信到 check-auth@verifier.port25.com ,如果收到的信息是 :SPF check: pass 就说明设置成功了。 查看域名的SPF记录 Windows下,开始菜单—>运行—>输入cmd ,然后回车,在命令行下输入: nslookup -type=txt 域名 就可以看到域名设置的TXT记录了。 Unix操作系统下用: dig -t txt 域名

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册