SPF 、DKIM 與 DMARC 的 Email 驗證問題
本篇請參考 https://bit.ly/3Kmi0Qi
雖然說的是 G Suite,但 SPF、DKIM、DMARC 等相關知識與驗證方式,是都通用的,也偶而可以借助 Google 的工具來驗證一下。
有時候會透過 Google SMTP Server 發信,一直以來都有個問題,就是收信者在 Gmail 看到的發信者會出現「未經驗證網域...」等等警告,運氣不好還會跑進廣告信箱。這時候如果打開信件的原始內容,可以發現以下資訊:
[Plain Text] 純文本查看 複制代碼 ARC-Authentication-Results: i=1; mx.google.com;
spf=softfail (google.com: domain of transitioning [url=mailto:support@domain.com]support@domain.com[/url] does not designate {Server IP Address} as permitted sender) smtp.mailfrom=support@domain.com;
dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=domain.com
測試SPF的方法DKIM、DomainKey 都適用
https://www.appmaildev.com/hk/spf
上述紅色字就是無法驗證的結果,相關的 DNS 設定方法,分享給各位。
CloudFlare 設定 Email 相關的 DNS Record
由於我也是 CloudFlare 的愛用者,他們的 DNS 管理介面就只有好用而已,因此這裡也會用 CloudFlare 進行教學。其他的 DNS Manager 其實也是大同小異,找一下設定對應即可。開始之前,建議先設定好正確的 Email MX Record,而且您必須在 G Suite 先驗證您的網域所有權,這樣才能產生 Domain Key。我們接下來一共要設定 SPF, DMARC, DKIM 這三種機制,我們就來一個一個說明吧:
設定 SPF 發信驗證
SPF 記錄是一種網域名稱服務 DNS 記錄,用來宣告某一網域允許哪些郵件伺服器以您網域的名義傳送電子郵件,協助防止電子郵件詐騙或網路釣魚之機制,並確保郵件正確傳送。收件端伺服器可以根據寄件者 Email Address 的網域名稱,向 DNS 查詢該網域的 TXT 紀錄,來確認是否授權給某郵件伺服器發信傳送,如果接收 Email 的主機找不到信件網域的 SPF 記錄,在無法驗證的情況下退信機率就會容易被對方拒收或者直接放入垃圾信件夾。
加入 SPF 很簡單,請在 DNS 新增一筆記錄如下:
- Type: TXT
- Host: @
- Value: v=spf1 include:_spf.google.com ~all
以上端看你的DNS伺服器的不同而略有差異,其中 Host 的 @ 也可能是留白,Value的 v=spf1.....也可能要用 引號框住,如"v=spf1 include:_spf.google.com ~all"。
如果您的 DNS 主機有支援 SPF 設定,也可以另外加入 SPF Type,但是原本的 TXT Record 還是一定要新增會比較保險。如果您除了使用 GMail 還有在其他主機透過程式發信,也一定要加入發信主機的 IP Address,SPF Record 如下:
- Type: SPF
- Host: @
- Value: v=spf1 include:_spf.google.com ip4:1.0.0.2 ip4:1.0.0.1 ~all
如果你用的是 GoDaddy 的 DNS 服務,可參考這一篇
https://tw.godaddy.com/help/add-an-spf-record-19218
若是 Office 365,則可參考這篇
https://docs.microsoft.com/zh-tw/microsoft-365/security/office-365-security/set-up-spf-in-office-365-to-help-prevent-spoofing?view=o365-worldwide
測試SPF的方法DKIM、DomainKey 都適用
https://www.appmaildev.com/hk/spf
設定 DMARC 處理策略
設定好 SPF 之後我們先設定 DMARC,因為這個比較簡單,但是實際上 DMARC 驗證機制是基於 SPF 與 DKIM 兩個驗證方法。
DMARC 直接在 DNS Server 設定即可,請加入以下 TXT Record:
- Type: TXT
- Host: _dmarc
- Value: v=DMARC1; p=none; rua=mailto:postmaster@<您的網域>.com
|