因此,我尝试设置我的 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 响应中所宣布的内容相符。
- 220回复中的名称:mail2.example.com
- 证书名称:mail2.example.com
- IPv4 和 IPv6 的反向 DNS 解析:mail2.example.com
- 凭证工作
这应该足以完成这项工作了,对吧?我的谷歌搜索没有找到所有步骤吗?
我使用自己创建的根 CA 来签署该签名有关系吗?由于这些只是我玩的东西,我从未觉得有必要购买可用于签署其他证书的非常昂贵的证书。