电子邮件服务器证书根据 CheckTLS 有效,根据 Thunderbird 无效

电子邮件服务器证书根据 CheckTLS 有效,根据 Thunderbird 无效

我已经使用以下方式设置了电子邮件服务器docker 邮件服务器

DKIM、、SPFDMARC配置良好。

SSL 是使用 Let's Encrypt 设置的。服务器已启用 TLS 和 STARTTLS。

我运行了 TLS/SSL 测试https://www.checktls.com/TestReceiver,并且它说我的 SSL 工作正常:

在此处输入图片描述

在此处输入图片描述

我能够使用 Mozilla Thunderbird 通过服务器接收和发送电子邮件:

在此处输入图片描述

但是,当登录 Thunderbird 通过 IMAP 接收电子邮件,或者通过 SMTP 发送时,我会看到此警告(如果单击“确认安全例外”按钮,我仍然可以发送和接收电子邮件。)

在此处输入图片描述

我查看了其他几个电子邮件 TLS/SSL 测试网站(12),他们似乎认为我的证书设置不正确(“证书与主机名不匹配”)。

有什么想法吗?


更新:imap.domainname.com我已经设法达到了被认可为Thunderbird具有有效证书的程度,但 不是imap.domainname.com:143。请问如何解决此问题?

在此处输入图片描述

答案1

错误消息与您的屏幕截图完全一致:证书中的主机名不匹配。您可以使用以下方式检查证书邮件.yourdomain.com,并且显示有效,因此您为该主机名创建了证书。您将 thunderbird 配置为使用映射.您的域名.com。

除非您将证书配置为包含主题备用名称并包含“imap.yourdomain.com”,否则错误消息是绝对正确的。

默认情况下,每个证书都只包含一个主机名,并且必须匹配。

另一种可能性是购买通配符证书 *.yourdomain.com。通配符证书通常更贵,而使用“lets encrypt”并每 90 天更新一次时,带有主题备用名称的普通证书甚至可以免费。

答案2

这是mail.example.com证书和imap.example.com客户smtp.example.com端配置不匹配造成的。您可以

  • 手动修复客户端配置,
  • 设置自动配置方法以使事情变得更容易,或者
  • 只需扩展证书即可覆盖所有必需的主机名。

使用 DNSSRV记录自动配置

标准方式(RFC 6186) 用于定位电子邮件提交和访问服务器将使用 DNSSRV记录。通过此操作,您可以指定 IMAP 和 SMTP 提交均由 提供mail.example.com

_imap._tcp.example.com.        SRV 0 1 143 mail.example.com.
_submission._tcp.example.com.  SRV 0 1 587 mail.example.com.

Thunderbird 的自动配置

不幸的是,Thunderbird 目前不支持SRV记录(并且,根据错误 342242,不太可能实现它)。但是,它有另一种实现自动配置:你可以提供XML 配置文件例如 ​http://autoconfig.example.com/mail/[email protected]

<?xml version="1.0"?>
<clientConfig version="1.1">
  <emailProvider id="example.com">
    <domain>example.com</domain>
    <displayName/>
    <incomingServer type="imap">
      <hostname>mail.example.com</hostname>
      <port>143</port>
      <socketType>STARTTLS</socketType>
      <authentication>password-encrypted</authentication>
      <username>[email protected]</username>
    </incomingServer>
    <outgoingServer type="smtp">
      <hostname>mail.example.com</hostname>
      <port>587</port>
      <socketType>STARTTLS</socketType>
      <authentication>password-encrypted</authentication>
      <username>[email protected]</username>
    </outgoingServer>
  </emailProvider>
</clientConfig>

如果 Thunderbird 没有从该位置找到这样的配置文件,它将默认使用地址imap.example.comsmtp.example.com除非您选择手动配置。

将这些地址添加到您的证书中

或者,您可以将这些地址添加到您的证书中。Torsten 已经提到了这种可能性,但建议只有使用付费通配符证书才有可能。这并不完全正确,因为:

  1. Let´s Encrypt ACMEv2 支持通配符,尽管配置它需要一些经验。

  2. 没有必要使用通配符证书来覆盖这三个主机名,因为主题替代名称(SAN). 有可能使用 Certbot 扩展现有证书例如

    certbot certonly --cert-name mail.example.com -d imap.example.com,smtp.example.com
    

答案3

就我而言,问题始于更新至 Thunderbird 78.5 之后。我按照以下说明解决了这些问题(但有限)。

https://stackoverflow.com/questions/63947262/thunderbird-78-how-to-add-security-exception

您必须添加端口值(如果有多个端口,请用逗号分隔)关于:配置 在 Thunderbird 中关键词

network.security.ports.banned.override

该解决方案并不完美:我必须停用 Avast 中的电子邮件防护才能发送或接收电子邮件。

相关内容