介紹
電子郵件驗證對於防止網域欺騙、網路釣魚和垃圾郵件資料夾拒絕至關重要。三個基於 DNS 的標準 — SPF、DKIM 和 DMARC — 共同驗證聲稱來自您的網域的電子郵件是否合法。如果沒有這些記錄,攻擊者就可以代表您發送偽造的電子郵件,而合法電子郵件可能會進入收件者的垃圾郵件資料夾。本指南解釋了每個標準並展示如何在 Cloudflare 或您的 DNS 提供者上配置它們。
SPF:寄件者策略框架
SPF 發布授權為您的網域發送電子郵件的 IP 位址清單。收件者郵件伺服器根據 SPF 記錄檢查 Return-Path 網域。
SPF 記錄格式
SPF 記錄是 DNS TXT 記錄:
example.com TXT "v=spf1 include:_spf.google.com include:spf.mailgun.org ~all"
| 機制 | 意義 |
|---|---|
| 佔位符_0 | SPF 版本標識符 |
| 佔位符_0 | 將授權委託給另一個域 |
ip4:/ip6: | 授權特定 IP 範圍 |
| 佔位符_0 | 授權網域的A記錄 |
| 佔位符_0 | 授權網域的 MX 伺服器 |
| 佔位符_0 | 不符合寄件者的預設操作 |
預選賽
| 預選賽 | 行動 |
|---|---|
| 佔位符_0 | 通過(預設) |
| 佔位符_0 | SoftFail(已標記但已接受) |
| 佔位符_0 | 失敗(應該被拒絕) |
| 佔位符_0 | 中立(無斷言) |
在初始設定期間使用 ~all,然後在驗證後遷移到 -all。
DKIM:網域金鑰識別郵件
DKIM 為每封發出的電子郵件附加加密數位簽章。接收伺服器從 DNS 檢索寄件者的公鑰,以驗證電子郵件沒有被竄改。
DKIM 記錄
DKIM 記錄是特定選擇器名稱下的 DNS TXT 記錄:
default._domainkey.example.com TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC..."
| 標籤 | 意義 |
|---|---|
| 佔位符_0 | 版本(永遠為 DKIM1) |
| 佔位符_0 | 鍵類型(rsa 或 ed25519) |
| 佔位符_0 | Base64 編碼的公鑰 |
Google 工作空間、Mailgun 或 SendGrid 等電子郵件服務會自動產生 DKIM 金鑰。您只需將公鑰作為 DNS TXT 記錄發布。
DMARC:基於網域的訊息驗證、報告和一致性
DMARC 定義了收件者應如何處理未通過 SPF 和/或 DKIM 檢查的電子郵件的策略。它還提供報告來幫助您監控身份驗證結果。
DMARC 記錄格式
DMARC 記錄是 DNS TXT 記錄:
_dmarc.example.com TXT "v=DMARC1; p=quarantine; rua=mailto:[email protected]; pct=100"
| 標籤 | 意義 | 共同價值 |
|---|---|---|
| 佔位符_0 | 版本(永遠為 DMARC1) | 佔位符_2 |
| 佔位符_0 | 未經驗證的電子郵件的政策 | none、quarantine、reject |
| 佔位符_0 | 受政策約束的電子郵件百分比 | 1–100 |
| 佔位符_0 | 總報告電子郵件地址 | mailto: URI |
| 佔位符_0 | 取證故障報告位址 | mailto: URI |
| 佔位符_0 | 子域策略(若設定則覆寫 p) | 與 p 相同 |
DMARC 策略級別
p=none— 僅螢幕,不採取任何動作(先使用此進行驗證)p=quarantine— 將失敗標記為垃圾郵件p=reject— 完全拒絕失敗(最嚴格)
他們如何合作
Sender sends email → Receiver checks SPF (is IP authorized?)
→ Receiver checks DKIM (is signature valid?)
→ Receiver checks DMARC policy
→ p=none: no action
→ p=quarantine: move to spam
→ p=reject: reject delivery
要使電子郵件通過 DMARC,它必須通過**SPF(帶對齊)或DKIM(帶對齊)。 對齊 表示 From 標頭中的域與用於 SPF 或 DKIM 的域匹配。
Cloudflare 上的配置
- 新增 SPF 記錄:為
@建立一筆TXT記錄,其值為v=spf1 include:_spf.google.com ~all - 新增 DKIM 記錄:使用提供者的公鑰為
default._domainkey建立TXT記錄 - 新增 DMARC 記錄:為
_dmarc建立一筆TXT記錄,其值為v=DMARC1; p=none; rua=mailto:[email protected] - 從
p=none開始,審核報告一周,然後升級到p=quarantine或p=reject
檢查工具
- MXToolbox — 檢查 SPF、DKIM 和 DMARC 記錄
- Google 管理工具箱 — 驗證 DMARC 政策和報告
- DMARC 分析器 — 解析與視覺化 DMARC 聚合報告
dig指令:
dig TXT example.com
dig TXT default._domainkey.example.com
dig TXT _dmarc.example.com
結論
SPF、DKIM 和 DMARC 構成了分層的電子郵件驗證策略。 SPF 授權傳送 IP,DKIM 提供加密完整性,DMARC 規定執行策略。從監控模式 (p=none) 開始,以確保合法郵件正確進行身份驗證,查看 DMARC 報告,然後逐步實施更嚴格的策略。如果配置正確,這些記錄可以顯著減少垃圾郵件分類並防止網域欺騙。

