SPF、DKIM、DMARC 防垃圾郵件三件套
High Contrast
Dark Mode
Light Mode
Sepia
Forest
3 min read697 words

SPF、DKIM、DMARC 防垃圾郵件三件套

這三個 DNS 記錄是現代 Email 系統的安全基礎。設置好了,你的郵件不進垃圾箱;沒設置,你的域名可能被他人偽造發送詐騙郵件。

三者的關係

graph TD SPF[SPF
誰有權代表你發信?] 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:

  1. Google Workspace 管理控制台 → Apps → Google Workspace → Gmail → 驗證電子郵件
  2. 生成 DKIM 密鑰
  3. 添加到 DNS:
CNAME    google._domainkey    google._domainkey.googlehosted.com.

或 TXT 格式:

TXT    google._domainkey    "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBA..."

注意: DKIM 的名稱格式是 selector._domainkeyselector 由服務商決定(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 進收件箱而非垃圾箱。