Spring Boot通過企業郵箱發郵件被Gmail退回的問題解決方法

2023-08-23 18:00:32

這兩天給我們開發的Chrome外掛:Youtube中文配音增加了賬戶註冊和登入功能,其中有一步是郵箱驗證,所以這邊會在Spring Boot後臺給使用者的郵箱發個驗證資訊。如果發郵件,之前的文章教學裡就有,這裡就不說了,著重說說這兩天發現所有用Gmail註冊的使用者都被退件的問題。

報錯現象

先來看看具體報錯(如果您也碰到這種情況,那麼可以看看後面的內容):

退信原因:發件人([email protected])域名的DNS記錄未設定或設定錯誤導致對方拒收此郵件。
host gmail-smtp-in.l.google.com[142.251.10.26] said: 550-5.7.26 This mail is unauthenticated, which poses a security risk to the sender and Gmail users, and has been blocked. The sender must authenticate with at least one of SPF or DKIM. For this message, DKIM checks did not pass and SPF check for [mail.spring4all.com] did not pass with ip: [54.204.34.130]. The sender should visit https://support.google.com/mail/answer/81126 for instructions on setting up authentication. k191-20020a636fc8000000b00565bcd33890si6279798pgc.848 - gsmtp (in reply to end of DATA command)
解決方案:請通知你的郵箱管理員為郵箱域名設定正確的DNS(SPF、DKIM、DMARC)記錄。詳細請見 http://service.exmail.qq.com/cgi-bin/help?subtype=1&&no=1000580&&id=20012

問題分析

從退信原因中Google給的連結內容非常多,大致內容就是Google針對垃圾郵件濫用郵箱等行為做的防護機制。所以,如果您要支援Gmail的話,就必須符合它所制定的身份設定要求,裡面包含了:SPF設定、DKIM設定、ARC設定以及DMARC設定。

Google官方提供了一個工具:https://toolbox.googleapps.com/apps/checkmx/,可以用來檢測你的一些列設定是否符合要求。您只需要輸入你的郵箱域名,就可以看到如下的診斷結果:

那麼多警告,顯然是要慢慢解決才能不被拒收吧。。。不過那麼多設定,是不是一下就暈了?

如果你懶得深入看的話,下面DD就講一下比較快速的解決不被拒收的設定。

解決方案

不要看有那麼多警告和設定內容,其實只需要把SPF設定完成,Gmail的傳送就不成問題了。設定方法也很簡單,就是在域名解析里加一條記錄即可。

Gmail官網也給出了介紹:

但第一次也許你會跟我犯一樣的錯,就是直接用v=spf1 include:_spf.google.com ~all這個value了。。。其實應該要修改成你所用企業郵箱服務商的spf域名。

比如,DD這邊用的是騰訊的企業郵箱,所以值要設定成:v=spf1 include:spf.mail.qq.com ~all。直觀的講,你的域名解析裡需要有這樣一條TXT記錄:

SPF彙總

這邊彙總一下,國內比較常用的企業郵箱SPF設定,如果您正好碰到類似問題,可以直接選取使用:

  • 騰訊企業郵箱:v=spf1 include:spf.mail.qq.com ~all
  • 阿里企業郵箱:v=spf1 include:spf.mxhichina.com -all
  • 網易企業郵箱:v=spf1 include:spf.163.com -all

今天的分享就到這裡,希望對您有所收穫!碼字不易,歡迎關注、收藏、分享,支援一下。本文可以任意轉載,但請註明原文連結 _

歡迎關注我的公眾號:程式猿DD。第一時間瞭解前沿行業訊息、分享深度技術乾貨、獲取優質學習資源