CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
DevOps 网络与邮件/课时/邮件认证
RawBlame
课时目录12 节

DevOps 网络与邮件

  1. 01网络与运维基础
  2. 02OSI 与分层
  3. 03SSH 远程管理
  4. 04FTP 与 SFTP
  5. 05SMTP 发信
  6. 06IMAP 与 POP3
  7. 07邮件认证
  8. 08编辑器与文本处理
  9. 09版本控制回顾
  10. 10编程语言选型
  11. 11邮件运维排障
  12. 12综合练习

邮件认证

spf、dmarc、domain-keys、white-grey-listing。

30 分钟

邮件认证:SPF、DKIM 与 DMARC

邮件能发出去不等于能 进收件箱。Gmail、Outlook 等会检查 SPF、DKIM、DMARC 验证发件人身份,失败则进垃圾箱或直接拒收。运维部署 Postfix/SES 后必须配置 DNS 记录。本课深度依赖 dns-essentials 的 TXT 记录,发信见 dnm-smtp,服务器操作见 linux-essentials,网络排查见 networking-essentials,配置版本化见 git-essentials。

学习目标

  • 解释 SPF、DKIM、DMARC 各自验证什么、记录放哪
  • 为 example.com 编写三条 DNS 记录(示意)
  • 用 dig、mail-tester.com 等工具验证配置

三件套概览

机制类型验证内容DNS 位置
SPFTXT哪些 IP/主机 允许 代发本域邮件@ 或根域 TXT
DKIMTXT邮件头/正文 数字签名,公钥在 DNSselector._domainkey
DMARCTXT验证失败时 策略(none/quarantine/reject)_dmarc
收件方 Gmail 验证流程
  1. 查 SPF: 发信 IP 是否在 SPF 记录内?
  2. 查 DKIM: 签名是否用 DNS 公钥验证通过?
  3. 查 DMARC: SPF/DKIM 对齐?按策略处理

SPF 记录示例

; DNS TXT @ example.com
v=spf1 ip4:203.0.113.10 include:_spf.google.com include:sendgrid.net ~all
机制含义
ip4:x.x.x.x允许该 IPv4 发信
include:xxx引用第三方 SPF(如 SendGrid)
-all严格拒绝未列出者
~all软失败(常见过渡策略)
dig TXT example.com +short
dig TXT example.com @8.8.8.8 +short   # 指定 resolver 查传播

SPF 只能有一条有效 TXT(多 TXT 需合并),详见 dns-records。

DKIM 记录示例

Postfix + OpenDKIM 生成 selector mail:

; DNS TXT mail._domainkey.example.com
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...
# 服务器生成密钥
sudo opendkim-genkey -s mail -d example.com
sudo cat mail.private   # 配进 OpenDKIM
sudo cat mail.txt       # 粘贴到 DNS

发信时 MTA 用私钥签名 DKIM-Signature 头;收件方用 DNS 公钥验证。

DMARC 记录示例

; DNS TXT _dmarc.example.com
v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; pct=100; adkim=s; aspf=s
字段含义
p=none仅监控,不干预
p=quarantine失败进垃圾箱
p=reject失败直接拒收
rua=聚合报告收件地址

上线顺序:SPF → DKIM → DMARC(先 p=none 观察报告,再收紧)。

验证工具

# 检查 SPF
dig TXT example.com +short | grep spf

# 检查 DKIM
dig TXT mail._domainkey.example.com +short

# 检查 DMARC
dig TXT _dmarc.example.com +short

# 发测试信到 mail-tester.com,查看得分
swaks --to test-xxxxx@mail-tester.com --from noreply@example.com ...

常见踩坑

  1. SPF 超过 10 次 DNS lookup(include 嵌套)→ 验证失败
  2. From 域与 SPF/DKIM 不对齐 → DMARC 失败
  3. relay 服务商未加入 SPF include → 代发被拒
  4. DNS 传播延迟 → 改记录后等 TTL(dns-essentials)

配置变更建议纳入 git-essentials 的 Infrastructure 文档。

练习

  • 用 dig 查一个真实域名的 SPF、DKIM、DMARC 记录并解读
  • 为 example.com 写一条 SPF(含 include 你的 relay 服务商)
  • 说明 DMARC p=none 到 p=reject 的推荐过渡步骤

小结

邮件认证 = SPF(谁可以发)+ DKIM(签名真伪)+ DMARC(失败策略)。 缺任何一环都可能导致进垃圾箱。下一课转工具链——运维必备编辑器。

加载本节练习…
← 上一课IMAP 与 POP3下一课 →编辑器与文本处理