GMail 不允许“以...身份发送邮件”,提示服务器返回错误:“TLS 协商失败,证书与主机不匹配,代码:0”

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 重新编码。

所有这些都与 Google 服务器连接时 Postfix 在初始 220 响应中所宣布的内容相符。

  1. 220回复中的名称:mail2.example.com
  2. 证书名称:mail2.example.com
  3. IPv4 和 IPv6 的反向 DNS 解析:mail2.example.com
  4. 凭证工作

这应该足以完成这项工作了,对吧?我的谷歌搜索没有找到所有步骤吗?

我使用自己创建的根 CA 来签署该签名有关系吗?由于这些只是我玩的东西,我从未觉得有必要购买可用于签署其他证书的非常昂贵的证书。

答案1

谷歌似乎已经开始执行更严格的条件,而且自签名证书似乎不太受欢迎。如果价格是你唯一的痛点,你可以从 Let's Encrypt 获得一个免费的。

供参考,Google 要求发送完整的证书链。很难说你是否也这样。

讨论 Google TLS 严格性的链接: Google 主题 堆栈溢出帖子

相关内容