GMail 不允許“發送郵件”,說伺服器返回錯誤:“TLS 協商失敗,證書與主機不匹配。,程式碼:0”
因此,我正在嘗試設置我的 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 響應中宣布的內容相匹配。
- 220 回復中的名稱:mail2.example.com
- 證書名稱:mail2.example.com
- IPv4 和 IPv6 的反向 DNS 解析:mail2.example.com
- 憑證工作
這應該足以完成這項工作,對吧?我的Google搜尋沒有發現所有步驟嗎?
我使用自己創建的根 CA 簽署該簽名是否重要?由於這些只是我玩的東西,我從來沒有看到需要購買一個非常昂貴的證書來簽署其他證書。
Google似乎已經開始執行更嚴格的條件,而且看起來自簽名證書沒有得到很好的查看。如果價格是您唯一的痛點,您可以從 Let’s Encrypt 免費獲得一個。
有關資訊,Google要求發送完整的證書鏈。很難說你是不是這樣。
談論 Google TLS 嚴格性的連結: Google thread Stack overflow post