发件人策略框架(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)——防止别人仿冒本域邮箱发件人相关推荐

  1. 激活策略 查询_5个提问,详细介绍北极星指标的策略框架

    北极星指标(North Star Metric)已经逐渐成为许多公司指导产品发展的重要指标,本文通过五个设问和多个行业案例,系统性地介绍北极星指标这类产品策略框架. 如今有非常多的人在谈论和使用北极星 ...

  2. 商品期货策略 之 Python 精简多品种 MACD 趋势策略框架(注释版)

    Python 精简多品种 MACD 趋势策略框架(注释版) Python超级精简的多品种MACD趋势策略框架, 代码超级精简, 注释超级详细啰嗦. >_<! 需要引用 python版CTP ...

  3. MPF模块化策略框架

    MPF模块化策略框架 MPF(modular policy framework),模块化策略框架,类似于Qos里面的MQC(modular Qos command)模块化的QOS命令行.我们可以通过M ...

  4. 【学习笔记】优矿量化交易入门(一)策略框架编写

    半自动化优矿 全自动化IB 面向对象 策略框架编写 start = '2017-01-01' # 回测起始时间 end = '2018-01-01' # 回测结束时间 universe = Dynam ...

  5. OUTLOOK 邮箱发件人请求已读回执

    OUTLOOK 邮箱发件人请求已读回执 在发件页面如图所示选择"显示邮件选项" 发送邮件后,收件人点开邮件,若收件人设置"收到已读回执请求时总是发送已读回执", ...

  6. SpringBoot 动态配置邮箱发件人

    SpringBoot 动态配置邮箱发件人 现在的消息模块少不了邮件发送.短信发送和手机推送的功能.邮件发送的功能历史最为悠久,也算的上烂大街的功能.一般在配置文件中设置好邮箱地址.账号.密码和发件服务 ...

  7. 【量化入门】通过几种常见的量化策略框架,学习量化炒股

    阅读原文:http://club.jr.jd.com/quant/topic/1176040 量化选股,就是通过量化思想及配套的计算机程序化来实现选股(如何选择好的股票)和择时(如何在合适的时间进行合 ...

  8. 转:对冲基金交易策略框架

    作者:flyerye 链接:https://www.zhihu.com/question/26594258/answer/271090168 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权, ...

  9. 如何在矩池云上运行FinRL-Libray股票交易策略框架

    FinRL-Libray 项目:https://github.com/AI4Finance-LLC/FinRL-Library 选择FinRL镜像 在矩池云-主机市场选择合适的机器,并选择FinRL- ...

最新文章

  1. 直播APP开发:直播的广告效益和号召力分析
  2. python从零基础到项目实战怎么样-2018完整Python零基础到项目精通的学习书籍
  3. MySQL取字段注释
  4. 《紫茗红菱》:“80后”成长的欢乐、疼痛与代价
  5. 虚拟机安装Linux(vmware + ubuntu)
  6. 二级VB培训笔记06:窗体与常用控件综合案例【个人信息注册】
  7. oracle 返回hashmap,解决:oracle+myBatis ResultMap 类型为 map 时返回结果中存在 timestamp 时使用 jackson 转 json 报错...
  8. LeetCode 304. 二维区域和检索 - 矩阵不可变(动态规划)
  9. Moq -.NET的Mocking库
  10. Android开发之桌面快捷键使用细则(原创)
  11. C# MD5算法实现对文件校验
  12. Kafka集群搭建配置
  13. jieba.lcut()
  14. ios 操作通讯录联系人
  15. 什么是write-allocate policy?
  16. 常见的BlockingQueue有哪些
  17. 你眼里的交易基本功是什么?
  18. python黑色星期五_使用Python进行黑色星期五的相关性分析
  19. 分享88个企业政府PHP源码,总有一款适合你
  20. PS 画笔 取消 圆角

热门文章

  1. Html字母变大的代码,css鼠标选中字体变大 div css鼠标悬停超链接的文字变大
  2. 2022新版妹子写真网站源码+UI非常精美
  3. 知识管理:新时代企业竞争力核心
  4. JAVA可重入锁死锁
  5. 剑指offer——矩阵中的路径
  6. 巧妙利用标签TAG做长尾关键词上首页
  7. 外企, 私企和国企, 不同的软件开发流程感受
  8. JSON的在线分析工具jsoneditoronline.org
  9. MySQL与Python最详细的使用文档
  10. “font/woff“ and “font/woff2“ in file “mime.types“