DMARC 如何判定
SPF 和 DKIM 各自證明與網域有關的資訊,但兩者都不會檢查 From 欄位中的地址,而那才是人們會看到的地址。DMARC 將兩者與該地址連結起來。當 SPF 或 DKIM 對與 From 網域相符的網域驗證通過時,郵件就會通過 DMARC,而紀錄會告訴接收端如何處理未通過的郵件。
這項紀錄以 TXT 紀錄的形式存放在 DNS 中,位置是 _dmarc 後接你的網域。當該名稱沒有紀錄時,接收端會改為查詢組織網域,也就是註冊網域,例如 news.example.com 的組織網域是 example.com。因此,子網域即使沒有自己的紀錄,也能受到保護。
如何解讀政策
p=none 要求接收端不採取任何處置,只寄送報告。所有人都應從這裡開始,但太多網域多年來一直停留在這個設定。使用這項政策時,任何人都能用你的網域作為 From 欄位寄信,而接收端已被指示放行。
p=quarantine 會將驗證失敗的郵件送進垃圾郵件,p=reject 則會直接拒收。自 2024 年 2 月起,Gmail 和 Yahoo 要求大量寄件者發布 DMARC 紀錄。含有 p=none 的紀錄在形式上符合這項要求,但檢查工具仍會將它標示為警告。
始終收不到的報告
每個看到你郵件的接收端,預設每天會向 rua 地址寄送一份彙總報告。如果地址位於與該紀錄所屬網域不同的網域,RFC 7489 要求另一個網域發布授權紀錄,表明它接受你網域的報告。檢查工具會查詢每個外部地址的這項紀錄。若沒有授權紀錄,接收端就會捨棄報告。
常見問題
如何新增 DMARC 紀錄?
在 _dmarc 後接你的網域的位置發布 TXT 紀錄,內容包含 v=DMARC1 和一項政策,例如 v=DMARC1; p=none; rua=mailto:dmarc@example.com。先從 p=none 開始,閱讀數週的報告,再改為 quarantine,之後改為 reject。DNS 可查到該紀錄後,請在這裡檢查。
p=none 不好嗎?
作為第一步,它能完成任務:在不影響郵件投遞的情況下收集報告,藉此找出尚未完成驗證、但正代表該網域寄信的服務。如果一直維持 p=none,就會成為問題,因為這些報告的目的是協助逐步改用隔離政策,最後改為拒收。
每個子網域都需要個別記錄嗎?
沒有自己記錄的子網域會套用組織網域的記錄,而該記錄中的 sp 標籤會設定子網域政策。因此,一筆記錄通常就能涵蓋所有子網域。
寬鬆對齊還是嚴格對齊?
除非有特定理由,否則請使用寬鬆對齊。採用寬鬆對齊時,來自 mail.example.com 的 DKIM 簽章可與 example.com 的寄件者地址對齊。嚴格對齊則不允許這種情況,也會導致許多由服務供應商使用子網域簽署的設定失效。
「DMARC policy not enabled」是什麼意思?
這表示網域的 DMARC 記錄設為 p=none,或網域完全沒有 DMARC 記錄。使用 p=none 時,接收端會照常投遞驗證失敗的郵件,只將報告傳送至 rua 地址,因此目前仍不會阻止任何人冒用你的網域寄信。
完整指南: DMARC policy not enabled
一個網域可以有多筆 DMARC 記錄嗎?
不可以。當 _dmarc 有兩筆以 v=DMARC1 開頭的 TXT 記錄時,接收端會捨棄兩筆記錄,並將該網域視為沒有 DMARC 記錄。請保留一筆記錄,並將另一筆記錄中需要的標籤移入其中。
隔離還是拒收?
先使用 quarantine。接收端會將驗證失敗的郵件視為可疑郵件,通常會放入垃圾郵件匣,因此即使漏掉某個合法服務,也只是郵件進入垃圾郵件匣,而不是直接遺失。當報告顯示你的郵件已連續幾週沒有驗證失敗後,再改用 reject。