发件人策略框架(SPF)——防止别人仿冒本域邮箱发件人
发件人策略框架(SPF)是一个开放标准用以识别邮件中伪造的发件人地址。它尤其保护 SMTP 信封发件人地址或返回路径中的域。它通过检查域中用于 SPF 策略的 DNS 记录以精确地查出哪台邮件主机可以代表域发送邮件,从而做到如上所述。如果域有 SPF 策略而发件主机并没有列于该策略下,那么您就可以知道该地址是伪造的。
假设邮件服务器收到了一封邮件,来自主机的 IP 是45.120.56.87
,并且声称发件人为test@example.com
。为了确认发件人不是伪造的,邮件服务器会去查询example.com
的 SPF 记录。如果该域的 SPF 记录设置允许 IP 为45.120.56.87
的主机发送邮件,则服务器就认为这封邮件是合法的;如果不允许,则通常会退信,或将其标记为垃圾/仿冒邮件。
下图说明了SPF是如何进行工作的:
SPF工作流程
说明:
1.用户需要先在域名解析后台添加SPF记录
2.收件人邮件服务器在收到邮件后,检查发件人域的SPF记录
3.如果域存在SPF记录,则会检查入站IP是否在SPF所列出的范围内,存在则通过,不存在则根据SPF设置进行处理
如何设置SPF记录
注意:因为SPF是和域相关的,所以SPF记录需要在域名解析后台设置而不是邮件服务器上设置。
设置方法:
登录域名解析后台,添加记录类型为TXT
的记录,主机记录填写@
,可以填写v=spf1 mx a ip4:x.x.x.x -all
,[x.x.x.x]替换成邮件服务器出口公网IP,如果有多个出口地址则添加多个ip4标签。
设置SPF记录
SPF记录的语法
SPF记录定义了一个或者多个mechanism,而mechanism则定义了哪些IP是允许的,哪些IP是拒绝的,这些mechanism包括以下几类:
all | ip4 | ip6 | a | mx | ptr | exists | include
每个mechanism可以有四种前缀:
- "+":Pass(通过)
- "-":Fail(拒绝)
- "~":Soft Fail(软拒绝)
- "?":Neutral(中立)
默认的前缀都为 +
,根据这些前缀,服务器通常的处理办法如下:
根据SPF记录的服务器处理办法
注意,上面所说的「服务器处理办法」仅仅是 SPF 标准做出的建议,并非所有的邮件服务器都严格遵循这套规定。
在邮件安全网关Securitygateway里支持SPF验证,管理员可以根据实际情况来调整策略:
Securitygateway上的SPF验证设置
Mechanisms
下面就介绍下常用的mechanism:
- all:因为添加的IP都会默认命中,所以通常把它放在SPF记录的结尾,表示处理剩下的所有情况。例如:
v=spf1 ip4:11.22.33.44 ip4:55.66.77.88 -all
(表示如果发件人的IP不是从11.22.33.44或者55.66.77.88的话,则按照Fail处理)
- ip4:格式为
ip4:<ip4-address>
或者ip4:<ip4-network>/<prefix-length>
,指定一个 IPv4 地址或者地址段。如果prefix-length
没有给出,则默认为/32
。
- ip6:格式和
ip4
的很类似,默认的prefix-length
是/128
。
- a和mx:这俩的格式是相同的,以
a
为例,格式为以下四种之一:
a
a/<prefix-length>
a:<domain>
a:<domain>/<prefix-length>
会命中相应域名的 a
记录(或 mx
记录)中包含的 IP 地址(或地址段)。如果没有提供域名,则使用当前域名。
- include:格式为
include:<domain>
,表示引入<domain>
域名下的 SPF 记录。注意,如果该域名下不存在 SPF 记录,则会导致一个PermError
结果。
- exists:格式为
exists:<domain>
,将对<domain>
执行一个 A 查询,如果有返回结果(无论结果是什么),都会看作命中。
SPF检测示例
在SecurityGateway中的邮件详情里,我们可以看到SPF检测过程,如果匹配则显示match
,并在最后spf结果中显示为pass
Thu 2020-12-03 00:26:16: --执行中: SPF --
Thu 2020-12-03 00:26:16: Performing SPF lookup (bounce.s7.exacttarget.com / 136.147.182.199)
Thu 2020-12-03 00:26:16: * Policy: v=spf1 include:cust-spf.exacttarget.com -all
Thu 2020-12-03 00:26:16: * Evaluating include:cust-spf.exacttarget.com: performing lookup
Thu 2020-12-03 00:26:16: * Policy: v=spf1 ip4:64.132.92.0/24 ip4:64.132.88.0/23 ip4:66.231.80.0/20 ip4:68.232.192.0/20 ip4:199.122.120.0/21 ip4:207.67.38.0/24 ip4:207.67.98.192/27 ip4:207.250.68.0/24 ip4:209.43.22.0/28 ip4:198.245.80.0/20 ip4:136.147.128.0/20 ip4:136.147.176.0/20 ip4:13.111.0.0/16 ip4:161.71.32.0/17 -all
Thu 2020-12-03 00:26:16: * Evaluating ip4:64.132.92.0/24: no match
Thu 2020-12-03 00:26:16: * Evaluating ip4:64.132.88.0/23: no match
Thu 2020-12-03 00:26:16: * Evaluating ip4:66.231.80.0/20: no match
Thu 2020-12-03 00:26:16: * Evaluating ip4:68.232.192.0/20: no match
Thu 2020-12-03 00:26:16: * Evaluating ip4:199.122.120.0/21: no match
Thu 2020-12-03 00:26:16: * Evaluating ip4:207.67.38.0/24: no match
Thu 2020-12-03 00:26:16: * Evaluating ip4:207.67.98.192/27: no match
Thu 2020-12-03 00:26:16: * Evaluating ip4:207.250.68.0/24: no match
Thu 2020-12-03 00:26:16: * Evaluating ip4:209.43.22.0/28: no match
Thu 2020-12-03 00:26:16: * Evaluating ip4:198.245.80.0/20: no match
Thu 2020-12-03 00:26:16: * Evaluating ip4:136.147.128.0/20: no match
Thu 2020-12-03 00:26:16: * Evaluating ip4:136.147.176.0/20: match
Thu 2020-12-03 00:26:16: * Evaluating include:cust-spf.exacttarget.com: match
Thu 2020-12-03 00:26:16: * 结果:pass
Thu 2020-12-03 00:26:16: --结束:SPF(0.074309 秒)--
验证SPF记录是否生效
1.通过命令行验证。在cmd中依次输入:
nslookup
set type=txt
<domain>
,这里直接输入@右面的域名
检测SPF
2.通过工具。
通过新窗口打开以下网站,帮助你验证域名是否存在 SPF 记录、记录的语法是否正确,以及输入 IP 和 host 来测试是不是真正管用。
https://www.kitterman.com/spf/validate.html
通过新窗口打开以下网站,可以查询所有能使用域名发送邮件的IP
http://tools.wordtothewise.com/spf
我们建议您始终为您的网域设置以下电子邮件身份验证方法:
- DKIM:会为每封邮件添加数字签名。这样可以让接收服务器验证邮件是否为假冒,以及在传输过程中是否被更改。
- DMARC:使用 SPF 和 DKIM 对邮件进行身份验证,并管理可疑的传入邮件。
发件人策略框架(SPF)——防止别人仿冒本域邮箱发件人相关推荐
- 激活策略 查询_5个提问,详细介绍北极星指标的策略框架
北极星指标(North Star Metric)已经逐渐成为许多公司指导产品发展的重要指标,本文通过五个设问和多个行业案例,系统性地介绍北极星指标这类产品策略框架. 如今有非常多的人在谈论和使用北极星 ...
- 商品期货策略 之 Python 精简多品种 MACD 趋势策略框架(注释版)
Python 精简多品种 MACD 趋势策略框架(注释版) Python超级精简的多品种MACD趋势策略框架, 代码超级精简, 注释超级详细啰嗦. >_<! 需要引用 python版CTP ...
- MPF模块化策略框架
MPF模块化策略框架 MPF(modular policy framework),模块化策略框架,类似于Qos里面的MQC(modular Qos command)模块化的QOS命令行.我们可以通过M ...
- 【学习笔记】优矿量化交易入门(一)策略框架编写
半自动化优矿 全自动化IB 面向对象 策略框架编写 start = '2017-01-01' # 回测起始时间 end = '2018-01-01' # 回测结束时间 universe = Dynam ...
- OUTLOOK 邮箱发件人请求已读回执
OUTLOOK 邮箱发件人请求已读回执 在发件页面如图所示选择"显示邮件选项" 发送邮件后,收件人点开邮件,若收件人设置"收到已读回执请求时总是发送已读回执", ...
- SpringBoot 动态配置邮箱发件人
SpringBoot 动态配置邮箱发件人 现在的消息模块少不了邮件发送.短信发送和手机推送的功能.邮件发送的功能历史最为悠久,也算的上烂大街的功能.一般在配置文件中设置好邮箱地址.账号.密码和发件服务 ...
- 【量化入门】通过几种常见的量化策略框架,学习量化炒股
阅读原文:http://club.jr.jd.com/quant/topic/1176040 量化选股,就是通过量化思想及配套的计算机程序化来实现选股(如何选择好的股票)和择时(如何在合适的时间进行合 ...
- 转:对冲基金交易策略框架
作者:flyerye 链接:https://www.zhihu.com/question/26594258/answer/271090168 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权, ...
- 如何在矩池云上运行FinRL-Libray股票交易策略框架
FinRL-Libray 项目:https://github.com/AI4Finance-LLC/FinRL-Library 选择FinRL镜像 在矩池云-主机市场选择合适的机器,并选择FinRL- ...
最新文章
- 直播APP开发:直播的广告效益和号召力分析
- python从零基础到项目实战怎么样-2018完整Python零基础到项目精通的学习书籍
- MySQL取字段注释
- 《紫茗红菱》:“80后”成长的欢乐、疼痛与代价
- 虚拟机安装Linux(vmware + ubuntu)
- 二级VB培训笔记06:窗体与常用控件综合案例【个人信息注册】
- oracle 返回hashmap,解决:oracle+myBatis ResultMap 类型为 map 时返回结果中存在 timestamp 时使用 jackson 转 json 报错...
- LeetCode 304. 二维区域和检索 - 矩阵不可变(动态规划)
- Moq -.NET的Mocking库
- Android开发之桌面快捷键使用细则(原创)
- C# MD5算法实现对文件校验
- Kafka集群搭建配置
- jieba.lcut()
- ios 操作通讯录联系人
- 什么是write-allocate policy?
- 常见的BlockingQueue有哪些
- 你眼里的交易基本功是什么?
- python黑色星期五_使用Python进行黑色星期五的相关性分析
- 分享88个企业政府PHP源码,总有一款适合你
- PS 画笔 取消 圆角
热门文章
- Html字母变大的代码,css鼠标选中字体变大 div css鼠标悬停超链接的文字变大
- 2022新版妹子写真网站源码+UI非常精美
- 知识管理:新时代企业竞争力核心
- JAVA可重入锁死锁
- 剑指offer——矩阵中的路径
- 巧妙利用标签TAG做长尾关键词上首页
- 外企, 私企和国企, 不同的软件开发流程感受
- JSON的在线分析工具jsoneditoronline.org
- MySQL与Python最详细的使用文档
- “font/woff“ and “font/woff2“ in file “mime.types“