## SPF
一、SPF的定义
SPF(Sender Policy Framework) 是一种通过IP地址认证电子邮件发件人身份的技术,通过认证发件IP与发件域名中的规则进行匹配,从而防止他人伪造邮件。
二、SPF验证过程
1. 接收端获取发件端IP
2. 接收端查询发件域名(mail from 字段,实际发件人;from为显示发件人;二者可能不同,不同时会有提示)的txt记录
3. 根据SPF记录的规则进行匹配,可按声明的策略进行处理
三、配置SPF
一条 SPF 记录定义了一个或者多个”机制”,而”机制”则定义了哪些 IP 发送的邮件可以接收,哪些 IP发送的邮件是进垃圾箱或者直接拒绝。机制由动作+配置规则 组成,类同防火墙规则。
匹配规则可以是一下几种:
匹配样式 | 样例 | 说明 |
all | +all | 匹配所有ip结果,一般放在SPF记录的结尾,表示处理(拒绝)剩下所有的结果 |
ip4 | ip4:10.1.2.2/24 | 允许接收10.1.2.2/24网段的来信 |
ip6 | ip6:1080::8:800:200C:417A/96 | 允许接收1080::8:800:200C:417A/96网段的来信 |
a | a/24 ; a:<domain> | 允许接收发件域名对应的a记录IP或者IP/24的来信 |
mx | mx ; mx:<domain> | 允许接收发件域名或指定域名中mx记录的IP的来信 |
ptr | ptr ; ptr:<domain> | |
exists | exists:<domain> | 将对<domain>执行一个 A 查询,如果有返回结果(无论结果是什么),都会认为匹配成功 |
include | include:<domain> | 表示引入<domain>域名下的 SPF 记录 |
匹配后执行的动作有以下几种:
动作 | 含义 | 服务器处理方案 | 缩写 |
Pass | 发件IP合法 | 接收来信 | + |
Fail | 发件IP非法 | 退信 | - |
Soft Fail | 发件IP非法,不采取强硬措施,软拒绝 | 接收来信并标记,如进垃圾箱 | ~ |
Neutral | SPF记录中没有关于发件IP是否合法的信息 | 接收来信 | ? |
None | 服务器没有设定SPF记录 | 接收来信 | |
PermError | 严重错误,例如SPF记录语法错误 | 没有规定 | |
TempError | 临时错误,例如DNS查询失败 | 接收或拒绝来信 |
注意,上面所说的「服务器处理方案」仅仅是 SPF 标准做出的建议,并非所有的邮件服务器都严格遵循这套规定
四、查看指定域名的SPF配置
Linux上执行 nslookup -q=txt <domain.com>
## DKIM
一、DKIM 定义
DKIM(DomainKeys Identified Mail) 是一种防范电子邮件被篡改的验证技术,通过消息加密认证的方式对邮件发送域名进行验证。
二、工作原理
1.邮件签名:DKIM使用私钥将加密签名插入到邮件头中。发件域的域名信息会插入到邮件头中d=字段,部分邮服系统将会在邮件原文中添加DKIM-Signature Header,并在其中的s=字段中配置要查询的域名。并且将公钥写入对应域名的txt记录中。
2.接收验证:当收件域会使用d=字段或者s=字段从发送方的DNS查找公钥并验证消息。如果消息验证通过,则DKIM检查通过。
## DMARC
DMARC(Domain-based Message Authentication Reporting&Conformance)是txt记录中的一种,是一种基于现有的SPN和DKIM协议的可扩展,其核心思想是邮件的发送方通过特定方式(DNS)公开表明自己会用到的发件服务器(SPF),并对发出的邮件内容进行签名(DKIM),而邮件的接收方则会检查收到的邮件是否来自发送方授权的服务器并核对签名是否有效。
参考链接:
http://www.renfei.org/blog/introduction-to-spf.html
https://mntn0x.github.io/2019/08/02/%E9%82%AE%E4%BB%B6%E6%AC%BA%E8%AF%88%E4%B9%8BSPF/#SPF
No Leanote account ? Sign up now.