這兩天給我們開發的Chrome插件:[Youtube中文配音](https://youtube-dubbing.com/)增加了賬戶註冊和登錄功能,其中有一步是郵箱驗證,所以這邊會在Spring Boot後臺給用戶的郵箱發個驗證信息。如果發郵件,之前的文章教程里就有,這裡就不說了,著重說說這兩天發現 ...
這兩天給我們開發的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#authentication 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。第一時間瞭解前沿行業消息、分享深度技術乾貨、獲取優質學習資源