Postfix

GMail 不允許“發送郵件”,說伺服器返回錯誤:“TLS 協商失敗,證書與主機不匹配。,程式碼:0”

  • July 29, 2020

因此,我正在嘗試設置我的 GMail 帳戶,以便我可以發送電子郵件,使它們看起來來自我少數域中的不同地址。當我點擊“保存更改”按鈕時,出現以下錯誤:

身份驗證失敗。請檢查您的使用者名/密碼。伺服器返回錯誤:“TLS 協商失敗,證書與主機不匹配。,程式碼:0”

搜尋告訴我 Google 添加了一些額外的驗證步驟來執行此操作,涉及 IP 地址的反向解析,但即使我考慮到它仍然失敗。

我在 FreeBSD 12.1 上使用 Postfix 做這個。

當我查看 Postfix 日誌時,我看到了預期的 SMTP 對話:

Jul 18 13:10:09 authns2 postfix/submission/smtpd[65083]: > mail-io1-xd2b.google.com[2607:f8b0:4864:20::d2b]:41918: 220 mail2.example.com ESMTP Postfix
Jul 18 13:10:09 authns2 postfix/submission/smtpd[65083]: xsasl_cyrus_server_create: SASL service=smtp, realm=example.com
Jul 18 13:10:09 authns2 postfix/submission/smtpd[65083]: name_mask: noanonymous
Jul 18 13:10:09 authns2 postfix/submission/smtpd[65083]: < mail-io1-xd2b.google.com[2607:f8b0:4864:20::d2b]:41918: EHLO mail-io1-xd2b.google.com
Jul 18 13:10:09 authns2 postfix/submission/smtpd[65083]: match_list_match: mail-io1-xd2b.google.com: no match
Jul 18 13:10:09 authns2 postfix/submission/smtpd[65083]: match_list_match: 2607:f8b0:4864:20::d2b: no match
Jul 18 13:10:09 authns2 postfix/submission/smtpd[65083]: > mail-io1-xd2b.google.com[2607:f8b0:4864:20::d2b]:41918: 250-mail2.example.name
Jul 18 13:10:09 authns2 postfix/submission/smtpd[65083]: > mail-io1-xd2b.google.com[2607:f8b0:4864:20::d2b]:41918: 250-PIPELINING
Jul 18 13:10:09 authns2 postfix/submission/smtpd[65083]: > mail-io1-xd2b.google.com[2607:f8b0:4864:20::d2b]:41918: 250-SIZE 10240000
Jul 18 13:10:09 authns2 postfix/submission/smtpd[65083]: > mail-io1-xd2b.google.com[2607:f8b0:4864:20::d2b]:41918: 250-ETRN
Jul 18 13:10:09 authns2 postfix/submission/smtpd[65083]: > mail-io1-xd2b.google.com[2607:f8b0:4864:20::d2b]:41918: 250-STARTTLS
Jul 18 13:10:09 authns2 postfix/submission/smtpd[65083]: > mail-io1-xd2b.google.com[2607:f8b0:4864:20::d2b]:41918: 250-AUTH PLAIN LOGIN
Jul 18 13:10:09 authns2 postfix/submission/smtpd[65083]: > mail-io1-xd2b.google.com[2607:f8b0:4864:20::d2b]:41918: 250-ENHANCEDSTATUSCODES
Jul 18 13:10:09 authns2 postfix/submission/smtpd[65083]: > mail-io1-xd2b.google.com[2607:f8b0:4864:20::d2b]:41918: 250-8BITMIME
Jul 18 13:10:09 authns2 postfix/submission/smtpd[65083]: > mail-io1-xd2b.google.com[2607:f8b0:4864:20::d2b]:41918: 250-DSN
Jul 18 13:10:09 authns2 postfix/submission/smtpd[65083]: > mail-io1-xd2b.google.com[2607:f8b0:4864:20::d2b]:41918: 250-SMTPUTF8
Jul 18 13:10:09 authns2 postfix/submission/smtpd[65083]: > mail-io1-xd2b.google.com[2607:f8b0:4864:20::d2b]:41918: 250 CHUNKING
Jul 18 13:10:09 authns2 postfix/submission/smtpd[65083]: < mail-io1-xd2b.google.com[2607:f8b0:4864:20::d2b]:41918: STARTTLS
Jul 18 13:10:09 authns2 postfix/submission/smtpd[65083]: > mail-io1-xd2b.google.com[2607:f8b0:4864:20::d2b]:41918: 220 2.0.0 Ready to start TLS

它繼續設置一個成功的 TLS 會話,但隨後Google放棄了連接,而不像使用不安全的連接那樣嘗試進行身份驗證。(它是成功的,所以我知道不是 Postfix+SASL 配置錯誤導致問題)

該證書適用於 mail2.example.com,其主題 alt-name 屬性為

DNS:mail.example.com, DNS:mail2.example.com, DNS:mail2.example2.com, DNS:mail2.example3.com

mail2.example.com 的實際主機具有 IPv4 和 IPv6 地址,但它們都具有指向它的 DNS PTR 重新編碼。

所有這些都與 Postfix 在 Google 伺服器連接時在初始 220 響應中宣布的內容相匹配。

  1. 220 回復中的名稱:mail2.example.com
  2. 證書名稱:mail2.example.com
  3. IPv4 和 IPv6 的反向 DNS 解析:mail2.example.com
  4. 憑證工作

這應該足以完成這項工作,對吧?我的Google搜尋沒有發現所有步驟嗎?

我使用自己創建的根 CA 簽署該簽名是否重要?由於這些只是我玩的東西,我從來沒有看到需要購買一個非常昂貴的證書來簽署其他證書。

Google似乎已經開始執行更嚴格的條件,而且看起來自簽名證書沒有得到很好的查看。如果價格是您唯一的痛點,您可以從 Let’s Encrypt 免費獲得一個。

有關資訊,Google要求發送完整的證書鏈。很難說你是不是這樣。

談論 Google TLS 嚴格性的連結: Google thread Stack overflow post

引用自:https://serverfault.com/questions/1025980