L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Productivité · SKILL.md

implementing-dmarc-dkim-spf-email-security

implementing-dmarc-dkim-spf-email-security

SPF、DKIM 和 DMARC 是邮件认证的三大支柱,共同防止域名伪造、验证消息完整性并定义处理未认证邮件的策略。正确实施可显著减少冒充组织域名的钓鱼攻击。

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: implementing-dmarc-dkim-spf-email-security description: SPF、DKIM 和 DMARC 是邮件认证的三大支柱,共同防止域名伪造、验证消息完整性并定义处理未认证邮件的策略。正确实施可显著减少冒充组织域名的钓鱼攻击。 domain: cybersecurity subdomain: phishing-defense tags: [phishing, email-security, social-engineering, dmarc, awareness, dkim, spf, dns] version: "1.0" author: mahipal license: Apache-2.0

实施 DMARC、DKIM 和 SPF 邮件安全

概述

SPF、DKIM 和 DMARC 是邮件认证的三大支柱。三者共同防止域名伪造、验证消息完整性并定义处理未认证邮件的策略。正确实施可显著减少冒充组织域名的钓鱼攻击。

前置条件

  • 域名的 DNS 管理访问权限
  • 邮件服务器/MTA 配置访问权限(Postfix、Exchange、Google Workspace、Microsoft 365)
  • 对 DNS TXT 记录的基本了解
  • Python 3.8+ 用于验证脚本

核心概念

SPF(发件人策略框架)

发布 DNS TXT 记录,列出被授权代表您的域名发送邮件的 IP 地址和邮件服务器。接收服务器根据此列表检查信封发件人的 IP。

DKIM(域名密钥识别邮件)

使用私钥向外发邮件添加加密签名。相应的公钥在 DNS 中发布。接收方验证签名以确保消息在传输过程中未被篡改。

DMARC(基于域名的消息认证、报告和一致性)

基于 SPF 和 DKIM 构建,为认证失败的消息指定策略(none/quarantine/reject),并提供监控伪造尝试的报告机制。

实施步骤

步骤一:审计当前状态

# 检查现有 SPF 记录
dig TXT example.com | grep spf

# 检查现有 DKIM 选择器
dig TXT selector1._domainkey.example.com

# 检查现有 DMARC 记录
dig TXT _dmarc.example.com

步骤二:实施 SPF

# example.com 的 DNS TXT 记录
v=spf1 ip4:203.0.113.0/24 include:_spf.google.com include:spf.protection.outlook.com -all

关键 SPF 机制:

  • ip4: / ip6: — 授权特定 IP 范围
  • include: — 包含另一个域的 SPF 记录
  • a — 授权域名的 A 记录 IP
  • mx — 授权域名的 MX 记录 IP
  • -all — 硬拒绝其他所有(推荐)
  • ~all — 软拒绝(监控阶段)

步骤三:实施 DKIM

# 生成 DKIM 密钥对(2048 位 RSA)
openssl genrsa -out dkim_private.pem 2048
openssl rsa -in dkim_private.pem -pubout -out dkim_public.pem

# 格式化公钥用于 DNS(删除头部,合并行)
grep -v "PUBLIC KEY" dkim_public.pem | tr -d '\n'

selector1._domainkey.example.com 的 DNS TXT 记录:

v=DKIM1; k=rsa; p=MIIBIjANBgkqhki...

步骤四:实施 DMARC

# _dmarc.example.com 的 DNS TXT 记录
# 阶段 1(监控):
v=DMARC1; p=none; rua=mailto:dmarc-aggregate@example.com; ruf=mailto:dmarc-forensic@example.com; pct=100

# 阶段 2(隔离):
v=DMARC1; p=quarantine; rua=mailto:dmarc-aggregate@example.com; pct=25

# 阶段 3(拒绝):
v=DMARC1; p=reject; rua=mailto:dmarc-aggregate@example.com; pct=100

步骤五:监控和分析 DMARC 报告

使用 scripts/process.py 解析 DMARC 聚合 XML 报告,识别认证失败、未授权发件人和伪造尝试。

工具与资源

验证

  • SPF 记录在 mxtoolbox.com 上通过验证
  • DKIM 签名在测试邮件上得到验证
  • DMARC 记录格式正确且已启用报告
  • 测试邮件在收件人的 Authentication-Results 标头中通过所有三项检查
Skills enregistrées