我已经使用以下方式设置了电子邮件服务器docker 邮件服务器。
DKIM
、、SPF
和DMARC
配置良好。
SSL 是使用 Let's Encrypt 设置的。服务器已启用 TLS 和 STARTTLS。
我运行了 TLS/SSL 测试https://www.checktls.com/TestReceiver,并且它说我的 SSL 工作正常:
我能够使用 Mozilla Thunderbird 通过服务器接收和发送电子邮件:
但是,当登录 Thunderbird 通过 IMAP 接收电子邮件,或者通过 SMTP 发送时,我会看到此警告(如果单击“确认安全例外”按钮,我仍然可以发送和接收电子邮件。)
我查看了其他几个电子邮件 TLS/SSL 测试网站(1和2),他们似乎认为我的证书设置不正确(“证书与主机名不匹配”)。
有什么想法吗?
更新: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.com
,smtp.example.com
除非您选择手动配置。
将这些地址添加到您的证书中
或者,您可以将这些地址添加到您的证书中。Torsten 已经提到了这种可能性,但建议只有使用付费通配符证书才有可能。这并不完全正确,因为:
Let´s Encrypt ACMEv2 支持通配符,尽管配置它需要一些经验。
没有必要使用通配符证书来覆盖这三个主机名,因为主题替代名称(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 中的电子邮件防护才能发送或接收电子邮件。