惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
P
Privacy International News Feed
Security Latest
Security Latest
Spread Privacy
Spread Privacy
NISL@THU
NISL@THU
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Last Watchdog
The Last Watchdog
S
Schneier on Security
Engineering at Meta
Engineering at Meta
Google Online Security Blog
Google Online Security Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Know Your Adversary
Know Your Adversary
Cyberwarzone
Cyberwarzone
C
Cyber Attacks, Cyber Crime and Cyber Security
G
GRAHAM CLULEY
A
Arctic Wolf
博客园 - 聂微东
I
Intezer
腾讯CDC
罗磊的独立博客
T
Tailwind CSS Blog
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享
L
Lohrmann on Cybersecurity
人人都是产品经理
人人都是产品经理
C
Cybersecurity and Infrastructure Security Agency CISA
博客园 - 【当耐特】
P
Palo Alto Networks Blog
Simon Willison's Weblog
Simon Willison's Weblog
W
WeLiveSecurity
N
News and Events Feed by Topic
SecWiki News
SecWiki News
S
Security Affairs
T
Threat Research - Cisco Blogs
The GitHub Blog
The GitHub Blog
F
Fortinet All Blogs
T
Troy Hunt's Blog
N
News and Events Feed by Topic
P
Proofpoint News Feed
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
酷 壳 – CoolShell
酷 壳 – CoolShell
M
MIT News - Artificial intelligence
I
InfoQ
Hacker News: Ask HN
Hacker News: Ask HN
T
The Blog of Author Tim Ferriss
Schneier on Security
Schneier on Security
Hacker News - Newest:
Hacker News - Newest: "LLM"
Vercel News
Vercel News
博客园 - 三生石上(FineUI控件)
D
Darknet – Hacking Tools, Hacker News & Cyber Security

好好学习的郝

ClawdBot(OpenClaw)试用记录 编程辅助工具 Codex 入门篇 编程辅助工具 Claude Code 入门篇 Claude API 中转服务 Claude Relay Service LLM 接口管理和分发系统 New API 好好学Git:Git Submodule详解 编程辅助工具Cursor入门篇 好好学Golang:Golang问题记录 One API配置自定义渠道 FastAPI入门篇 好好学Docker:使用Docker安装配置AList 好好学Docker:容器指标查看工具ctop 好好学Docker:自建RustDesk Server 好好学Linux:Ubuntu18 升级到 Ubuntu22 好好学Docker:使用Docker安装配置FileBrowser One API 开发环境配置 LLM 接口管理和分发系统 One API 好好学K8S:K8S中的Leader Election机制 好好学Golang:Viper库
邮箱配置中的SPF、DKIM、DMARC记录
本文作者: 好好学习的郝 · 2024-10-26 · via 好好学习的郝

1. 前言

在现代电子邮件系统中,确保邮件的安全性和可靠性至关重要。SPF、DKIM和DMARC是三种主要的电子邮件身份验证机制,它们共同工作以防止垃圾邮件、钓鱼攻击和其他形式的邮件欺诈。

SPF、DKIM和DMARC机制在配置DNS时,记录类型都是TXT类型,在配置记录值时请注意DNS平台是否需要双引号。

本文将学习这三种机制及其在邮箱配置中的作用。

参考文档:

2.1. SPF简介

SPF全称为发件人策略框架,SPF是一种用于验证发送电子邮件的服务器是否被授权代表域名发送邮件的机制。
通过在DNS中添加SPF记录,域名所有者可以指定哪些IP地址可以发送该域名的邮件。

2.2. SPF工作原理

当接收邮件服务器收到一封来自某个域名的邮件时,它会查找该域名的SPF记录,验证发件服务器的IP地址是否在授权列表中。如果匹配,邮件将被接受;如果不匹配,邮件可能会被标记为垃圾邮件或拒绝。

2.3. SPF记录示例

1
2
3
主机记录:@
记录类型:TXT
记录值:"v=spf1 ip4:192.0.2.0/24 include:_spf.example.com -all"

记录值字段说明:

  • v=spf1:表示使用SPF版本1。
  • ip4:192.0.2.0/24:允许该IP地址范围发送邮件。
  • include:_spf.example.com:允许其他域名的SPF记录。
  • -all:表示不允许其他IP地址发送邮件。

腾讯企业邮推荐记录值:"v=spf1 include:spf.mail.qq.com ~all"

参考文档:

2.4. SPF语法解释

SPF记录定义了多种不同的 mechanism,这些 mechanism 规定了哪些 IP 是被允许的,哪些 IP 是被禁止的。

这一些mechanism包含以下几类:

1
2
3
4
5
6
all | ip4 | ip6 | a | mx | ptr | exists | include
同时还支持以下四种前缀:
"+" -> Pass (通过/同时这也是默认值) -> 发件IP合法,接收
"-" -> Fail (拒绝) -> 发件IP非法,退信
"~" -> Soft Fail (软拒绝) -> 发件IP非法,接收
"?" -> Neutral (中立) -> SPF记录中没有该IP信息,接收

all 表示命中所有的 IP,通常放在 SPF 记录的尾部作为 fallback,结合上面提到的前缀举几个例子:

1
2
"v=spf1 -all" 拒绝所有
"v=spf1 +all" 接受所有

ip4/ip6 的格式相近,具体的配置举例如下:

1
2
3
4
5
"v=spf1 ip4:192.168.0.1/16 -all"
只允许在 192.168.0.1 ~ 192.168.255.255 范围内的 IP
"v=spf1 ip6:1080::8:800:200C:417A/96 -all"
只允许在 1080::8:800:0000:0000 ~ 1080::8:800:FFFF:FFFF 范围内的 IP
如果没有指定前缀长度,则默认只表示记录中所填写的IP(1个IP)

a/mx 这两个 mechanism 会命中相应域名的 a 记录和 mx 记录,a语法mx的语法一致,如果没有填写域名则默认值为当前域名:

1
2
3
"v=spf1 mx -all" 允许当前域名的 mx 记录对应的 IP 地址。
"v=spf1 mx mx:deferrals.example.com -all" 允许当前域名和 deferrals.example.com 的 mx 记录对应的 IP 地址。
"v=spf1 a/24 -all" 这个配置允许一个地址段

include 用于引入某个域名下的SPF记录,例如:

1
"v=spf1 include:example.com -all" 采用和 example.com 完全一样的 SPF 记录

3. DKIM

3.1. DKIM简介

DKIM全称为域名密钥识别邮件,DKIM是一种电子邮件身份验证方法,它通过数字签名确保邮件内容在传输过程中未被篡改。
发件人使用私钥对邮件进行签名,而接收方则使用公钥进行验证。

3.2. DKIM工作原理

当接收服务器收到一封带有DKIM签名的邮件时,它会提取签名并查找相应的公钥。如果公钥验证成功,表明邮件未被篡改且确实来自声称的发件人。

3.3. DKIM记录示例

1
2
3
4
主机记录:<selector>._domainkey
记录类型:TXT
记录值:"v=DKIM1; k=rsa; p=MIGfMA0GCS..."
记录值中的k=rsa

记录值字段说明:

  • v=DKIM1:表示使用DKIM版本1。
  • k=rsa:表示公钥是以RSA方式进行加密的。
  • p=MIGfMA0GCS...:公钥部分。

主机记录和记录值通常由电子邮件服务商提供,比如使用腾讯企业邮箱或网易企业邮箱,就登录管理员查看DKIM配置。

4. DMARC

4.1. DMARC简介

DMARC全称为基于域名的消息身份验证、报告和一致性,DMARC是建立在SPF和DKIM之上的一种机制,允许域名所有者指定如何处理未通过身份验证的邮件,并提供报告功能。

4.2. DMARC工作原理

接收服务器根据DMARC策略处理未通过SPF或DKIM验证的邮件。根据设置,它可以选择拒绝、隔离或无操作。同时,发送报告给域名所有者,以便他们监控和分析身份验证结果。

4.3. DMARC记录示例

1
2
3
主机记录:_dmarc
记录类型:TXT
记录值:"v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com"

记录字段说明:

  • v=DMARC1:表示使用DMARC版本1。
  • p=reject:指示接收方拒绝未通过身份验证的邮件。
  • rua=mailto:dmarc-reports@example.com:指定接收报告的电子邮件地址。

腾讯企业邮推荐记录值:"v=DMARC1; p=none; rua=mailto:mailauth-reports@qq.com"

参考文档:企业邮箱如何设置DMARC(TXT记录)

5. 发送邮件给Gmail报错问题

5.1. 问题描述

发送邮件给Gmail邮箱时,报错:

1
2
3
4
550-5.7.26 Your email has been blocked because the sender is unauthenticated. 
550-5.7.26 Gmail requires all senders to authenticate with either SPF or DKIM. 550-5.7.26
550-5.7.26 Authentication results: 550-5.7.26 DKIM = did not pass
550-5.7.26 SPF [fuzhi.ai] with ip: [128.x.x.x] = did not pass

5.2. 解决办法

报错很清晰,发送邮件的服务器被Gmail拒绝了,Gmail怀疑这是伪造的发件人,因为邮件没能通过SPF或DKIM验证。

解决办法:检查并配置SPF和DKIM。