指南
DMARC 檢查:逐一解讀 DMARC 記錄的標籤
DMARC 告訴收件郵件伺服器,該如何處理那些聲稱來自你的網域、卻沒有通過 SPF 和 DKIM 的郵件。記錄設錯,偽冒郵件就會送達收件匣,或是你自己的郵件被丟進垃圾郵件。以下說明怎麼檢查。
DMARC 記錄放在哪裡
DMARC 是一筆 TXT 記錄,位在網域前面加上 _dmarc. 的名稱。以 example.com 為例,要查詢 _dmarc.example.com 的 TXT 記錄:
_dmarc.example.com. TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; pct=100"
這種記錄必須剛好只有一筆。有兩筆 DMARC 記錄時,收件端會兩筆都忽略。
重要的標籤
| 標籤 | 意義 | 範例 |
|---|---|---|
v | 版本。必須放在最前面,值必須是 DMARC1。 | v=DMARC1 |
p | 網域政策:none(只回報)、quarantine(視為可疑,通常進垃圾郵件匣)或 reject(拒收郵件)。 | p=reject |
sp | 子網域政策。預設與 p 相同。 | sp=quarantine |
pct | 未通過驗證的郵件中套用政策的比例,0–100。預設為 100。 | pct=25 |
rua | 彙總報告的寄送地址。 | rua=mailto:dmarc@example.com |
ruf | 失敗報告的寄送地址。許多郵件服務商不會寄送。 | ruf=mailto:forensic@example.com |
adkim, aspf | DKIM 和 SPF 的對齊模式:r 寬鬆(子網域也算相符,預設)或 s 嚴格。 | adkim=s |
p=none、quarantine 還是 reject?
- p=none 什麼都不保護,收件端只會寄報告。先用幾週,看看有誰以你的網域名義寄信。
- p=quarantine 會把未通過驗證的郵件送進垃圾郵件匣。等你所有的服務都通過後,這是安全的下一步。
- p=reject 完全擋下偽冒郵件,是大多數網域的目標。
設定 p=none 又沒有 rua 的記錄,既沒有保護也收不到報告,等於完全沒作用。
DMARC 如何判定:對齊
當 SPF 或 DKIM 通過,而且所檢查的網域與 From 標頭中的網域相符時,郵件就通過 DMARC。SPF 檢查信封寄件者(Return-Path);DKIM 檢查簽章中的 d= 網域。用自己網域簽章的電子報服務能通過 DKIM,但在你於該服務為自己的網域設定 DKIM 之前,DMARC 對齊都不會通過。
常見錯誤
- 記錄放在網域本身,而不是
_dmarc. - 有兩筆 DMARC 記錄,或把 DMARC 寫進 SPF 記錄裡。
- 測試後
pct仍低於 100,導致大部分偽冒郵件依然送達。 - 在所有寄信服務(CRM、客服系統、電子報)都以對齊方式通過 SPF 或 DKIM 之前,就改成
p=reject。 - 報告寄到其他網域的地址,但該網域沒有授權記錄。
也要檢查 SPF 和 DKIM
DMARC 依賴另外兩者。SPF 記錄的 DNS 查詢次數(包含巢狀的 include)不能超過 10 次,否則會產生永久錯誤(permerror)。DKIM 金鑰位在選擇器名稱之下(例如 google._domainkey),而 DNS 無法列出所有選擇器,所以你需要知道郵件服務商使用的選擇器。