我正在尝试设置 Gmail send-as 以通过 TLS 通过我的 SMTP 服务器发送电子邮件,自从我更新我的 lets encrypt 证书后,我就收到“tls 协商失败,证书与主机不匹配”的提示。
背景:我有一台服务器,它有一个专用 IP,共享几个域名。我正在使用 virutalmin/webmin。我在续订时遇到问题,因此我运行 certbot 通过 TXT 记录手动验证。我创建了 CN=domain.com 和 SANS=domain.com,www.domain.com,mail.domain.com 的证书。mail.domain.com 是一个 A 记录设置,cloudflare 直接指向 IP(无需代理)。请注意,之前一切正常。服务器共享多个域。主域没有电子邮件问题。它之前停止为 dovecot 和 postfix 工作,因为我的证书没有使用 SANS 列表中的 mail.domain.com 进行续订。修复该问题后,它恢复了工作。我有第二个域,它停止发送。不使用 POP3/IMAP,因为电子邮件只是转发的。
let's encrypt 生成了其文件。我设置了 postfix SNI 映射以指向证书文件。
当我在文件上运行 openssl x509 -text 时,我可以看到 CN 和 SANS。当我运行 openssl s_client -connect mail.domain.com:25 -starttls smtp 时,它只显示 CN 而不显示 SANS。
使用主域发送电子邮件可以正常工作。使用第二个域发送电子邮件会出现错误。openssl 给出相同的结果。读取文件显示 CN=domain.com 和 SANS=domain.com,www.domain.com,mail.domain.com。连接到 smtp 服务器只会显示相应域的 CN。
当 Gmail 显示“证书与主机不匹配”时,我不确定它在与什么进行比较,我认为它只是服务器名称的 CN 和 SANS,但也许是别的什么?