51mobile 發表於 2022-4-7 12:26:59

SPF, DKIM, DMARC Email 驗證問題

SPF 、DKIM 與 DMARC 的 Email 驗證問題

本篇請參考 https://bit.ly/3Kmi0Qi

雖然說的是 G Suite,但 SPF、DKIM、DMARC 等相關知識與驗證方式,是都通用的,也偶而可以借助 Google 的工具來驗證一下。


有時候會透過 Google SMTP Server 發信,一直以來都有個問題,就是收信者在 Gmail 看到的發信者會出現「未經驗證網域...」等等警告,運氣不好還會跑進廣告信箱。這時候如果打開信件的原始內容,可以發現以下資訊:

ARC-Authentication-Results: i=1; mx.google.com;
spf=softfail (google.com: domain of transitioning [email protected] does not designate {Server IP Address} as permitted sender) [email protected];
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









51mobile 發表於 2022-4-7 12:29:06

設定 DKIM 公鑰

本文原始來源請參考 https://bit.ly/3Kmi0Qi

DKIM 大概是這三個設定裡面最麻煩的,好在我用了 Google (這不是業配文!!) 可以省點力氣,透過管理介面就可以自動產生 Domain Key。讓我們來手把手教學一下吧:

先登入 Google Admin Console 然後點選「應用程式」



然後選擇「G Suite 核心應用程式」



然後選擇「Gmail」



進入後往下拉有一個「驗證電子郵件」功能,點選後展開:



選擇你想要驗證的網域後按下「產生新記錄」,如下:



金鑰長度我習慣選 2048, 但是其實還是有一些比較舊的 Email 主機只支援 1024 驗證,然後按下「產生」



畫面就會出現 Public Key,這時候到你的 DNS 設定一筆 TXT Record (如下),設定好以後回來下「開始驗證」按鈕

TXT google._domainkey


[*]Type: TXT
[*]Host: google._domainkey
[*]Value: v=DKIM1; k=ras; ......{產生的 Public Key}





如果驗證順利,就會出現綠色的「驗證電子郵件」



檢查 Email 驗證設定與驗證工具

以上全部設定完成後,我們最後確認一下 DNS 應該會有哪些設定:


[*]MX Record
[*]SPF Record (如果您的 DNS 有支援)
[*]TXT Record for DMARC (_dmarc)
[*]TXT Record for DKIM (google._domainkey)
[*]TXT Record for SPF (@)


CloudFlare 設定畫面如下:




這些 DNS Recore 都加上以後,最後我們透過 Google 大神提供的「Mail Check MX」檢查工具,輸入你的網址就可以看到檢查結果如下:



如果都設定完成後,一天後 (DNS 有時候需要 24HR 同步) Mail 還是被退信或無法順利寄達,也有可能你的 Server 已經被列入黑名單了,可以透過以下網址查詢 IP Address:

https://toolbox.googleapps.com/apps/checkmx/check

我會的就這幾招了,剩下只好 Good Luck 囉~今天先到這裡了,你都學會了嗎?啊掰~

本文原始來源請參考 https://bit.ly/3Kmi0Qi



頁: [1]
檢視完整版本: SPF, DKIM, DMARC Email 驗證問題