# Implementing Dmarc Dkim Spf Email Security

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

- Skill: `killvxk/implementing-dmarc-dkim-spf-email-security` (Agent Skill, multi-file: 8 files)
- Install (CLI): `npx skillmds@latest add killvxk/implementing-dmarc-dkim-spf-email-security`
- Raw SKILL.md: https://api.skillmd.com/api/skills/killvxk/implementing-dmarc-dkim-spf-email-security/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Security
- License: Apache-2.0
- Author: killvxk (https://skillmd.com/u/killvxk)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/killvxk/implementing-dmarc-dkim-spf-email-security

---

# 实施 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），并提供监控伪造尝试的报告机制。

## 实施步骤

### 步骤一：审计当前状态

```bash
# 检查现有 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

```bash
# 生成 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 报告，识别认证失败、未授权发件人和伪造尝试。

## 工具与资源

- **MXToolbox**: https://mxtoolbox.com/SuperTool.aspx
- **DMARC Analyzer（dmarcian）**: https://dmarcian.com/
- **Google Postmaster Tools**: https://postmaster.google.com/
- **Valimail DMARC Monitor**: https://www.valimail.com/
- **DMARC Report Analyzer**: https://dmarc.postmarkapp.com/

## 验证

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

