Featured image of post 域安全性:設定 SPF、DKIM 和 DMARC 設定Featured image of post 域安全性:設定 SPF、DKIM 和 DMARC 設定

域安全性:設定 SPF、DKIM 和 DMARC 設定

透過在 Cloudflare 或目標註冊商上建構驗證記錄,避免進入垃圾郵件目錄。

介紹

電子郵件驗證對於防止網域欺騙、網路釣魚和垃圾郵件資料夾拒絕至關重要。三個基於 DNS 的標準 — SPFDKIMDMARC — 共同驗證聲稱來自您的網域的電子郵件是否合法。如果沒有這些記錄,攻擊者就可以代表您發送偽造的電子郵件,而合法電子郵件可能會進入收件者的垃圾郵件資料夾。本指南解釋了每個標準並展示如何在 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"
機制意義
佔位符_0SPF 版本標識符
佔位符_0將授權委託給另一個域
ip4:/ip6:授權特定 IP 範圍
佔位符_0授權網域的A記錄
佔位符_0授權網域的 MX 伺服器
佔位符_0不符合寄件者的預設操作

預選賽

預選賽行動
佔位符_0通過(預設)
佔位符_0SoftFail(已標記但已接受)
佔位符_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鍵類型(rsaed25519
佔位符_0Base64 編碼的公鑰

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未經驗證的電子郵件的政策nonequarantinereject
佔位符_0受政策約束的電子郵件百分比1100
佔位符_0總報告電子郵件地址mailto: URI
佔位符_0取證故障報告位址mailto: URI
佔位符_0子域策略(若設定則覆寫 pp 相同

DMARC 策略級別

  1. p=none — 僅螢幕,不採取任何動作(先使用此進行驗證)
  2. p=quarantine — 將失敗標記為垃圾郵件
  3. 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 上的配置

  1. 新增 SPF 記錄:為 @ 建立一筆 TXT 記錄,其值為 v=spf1 include:_spf.google.com ~all
  2. 新增 DKIM 記錄:使用提供者的公鑰為 default._domainkey 建立 TXT 記錄
  3. 新增 DMARC 記錄:為 _dmarc 建立一筆 TXT 記錄,其值為 v=DMARC1; p=none; rua=mailto:[email protected]
  4. p=none 開始,審核報告一周,然後升級到 p=quarantinep=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 報告,然後逐步實施更嚴格的策略。如果配置正確,這些記錄可以顯著減少垃圾郵件分類並防止網域欺騙。