SPF、DKIM、DMARC 防垃圾郵件三件套
這三個 DNS 記錄是現代 Email 系統的安全基礎。設置好了,你的郵件不進垃圾箱;沒設置,你的域名可能被他人偽造發送詐騙郵件。
三者的關係
誰有權代表你發信?] DKIM[DKIM
這封信真的是你發的嗎?] DMARC[DMARC
違規郵件該怎麼處理?] SPF --> DMARC DKIM --> DMARC DMARC --> ACTION[隔離 / 拒絕 / 放行]
SPF(Sender Policy Framework)
作用
SPF 告訴收信服務器:「只有這些服務器有權以我的域名發送 Email。」
記錄格式
TXT @ "v=spf1 [規則] [結果]"
規則示例:
| 規則 | 含義 |
|---|---|
include:_spf.google.com | Google 的服務器可以代表你發信 |
include:_spf.protection.outlook.com | Microsoft 的服務器可以代表你發信 |
ip4:93.184.216.34 | 特定 IP 可以代表你發信 |
a | 你域名的 A 記錄 IP 可以發信 |
結果標記(放在最後):
| 標記 | 含義 |
|---|---|
~all | SoftFail:不在列表的服務器,接收但標記可疑 |
-all | HardFail:不在列表的服務器,直接拒絕 |
?all | Neutral:不在列表的服務器,放行(等於沒有 SPF) |
常用 SPF 設置
Google Workspace:
TXT @ "v=spf1 include:_spf.google.com ~all"
Microsoft 365:
TXT @ "v=spf1 include:spf.protection.outlook.com ~all"
同時使用 Google + Mailchimp 發送:
TXT @ "v=spf1 include:_spf.google.com include:servers.mcsv.net ~all"
重要: 每個域名只能有一個 SPF TXT 記錄(多個 include 在同一條記錄中)。
DKIM(DomainKeys Identified Mail)
作用
DKIM 使用公私鑰加密,讓收信服務器驗證郵件在傳輸過程中沒有被篡改,且確實由你的服務器發出。
工作原理
發送方(你的郵件服務器):
1. 用私鑰對郵件內容簽名
2. 把簽名附在郵件頭部
DNS 中(公鑰):
CNAME/TXT 記錄存放公鑰
收信方:
1. 從 DNS 獲取公鑰
2. 用公鑰驗證郵件簽名
3. 簽名有效 → 郵件未被篡改
DKIM 設置(由服務商提供)
Google Workspace:
- Google Workspace 管理控制台 → Apps → Google Workspace → Gmail → 驗證電子郵件
- 生成 DKIM 密鑰
- 添加到 DNS:
CNAME google._domainkey google._domainkey.googlehosted.com.
或 TXT 格式:
TXT google._domainkey "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBA..."
注意: DKIM 的名稱格式是 selector._domainkey,selector 由服務商決定(Google 用 google,Mailchimp 用 k1 等)
DMARC(Domain-based Message Authentication)
作用
DMARC 告訴收信服務器,當 SPF 或 DKIM 驗證失敗時,如何處理那封郵件。同時提供報告功能,讓你知道誰在用你的域名發信。
記錄格式
TXT _dmarc "v=DMARC1; p=policy; rua=mailto:reports@yourdomain.com"
策略(policy)選項
| 策略 | 效果 |
|---|---|
p=none | 不採取行動,只報告(監控模式,先從這開始) |
p=quarantine | 把可疑郵件放入垃圾箱 |
p=reject | 直接拒絕可疑郵件(最嚴格) |
建議的部署步驟
第一週:監控模式
TXT _dmarc "v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com"
等 2-4 週,分析報告確認沒有合法郵件被誤判後:
第二階段:隔離模式
TXT _dmarc "v=DMARC1; p=quarantine; pct=25; rua=mailto:dmarc@yourdomain.com"
(pct=25 表示只對 25% 的可疑郵件執行策略,逐步擴大)
最終:完全執行
TXT _dmarc "v=DMARC1; p=reject; rua=mailto:dmarc@yourdomain.com"
完整配置示例(Google Workspace)
# SPF(誰可以代表你發信)
TXT @ "v=spf1 include:_spf.google.com ~all"
# DKIM(郵件簽名驗證)
CNAME google._domainkey google._domainkey.googlehosted.com.
# DMARC(失敗時的處理策略)
TXT _dmarc "v=DMARC1; p=quarantine; rua=mailto:dmarc@yourdomain.com"
驗證工具
設置完成後,使用這些工具驗證:
| 工具 | 網址 | 功能 |
|---|---|---|
| MXToolbox | mxtoolbox.com | SPF/DKIM/DMARC 全面檢查 |
| Google Admin Toolbox | toolbox.googleapps.com | Dig 和 Check MX |
| mail-tester.com | mail-tester.com | 發送測試郵件,獲得評分 |
| DMARC Analyzer | dmarcanalyzer.com | DMARC 報告分析 |
目標: 在 mail-tester.com 得到 10/10 分。
下一節:Email 送達率優化——確保你的 Email 進收件箱而非垃圾箱。