![dovecot 将站点证书与邮件证书混淆](https://linux22.com/image/110606/dovecot%20%E5%B0%86%E7%AB%99%E7%82%B9%E8%AF%81%E4%B9%A6%E4%B8%8E%E9%82%AE%E4%BB%B6%E8%AF%81%E4%B9%A6%E6%B7%B7%E6%B7%86.png)
我会尽量保持简短。我希望 beta.example.com 使用我的服务器作为邮件服务器。我看到 dovecot 和 postfix 只有一行用于证书。所以我为 mail.example.com 制作了一个完全有效的证书。我尝试使用 Thunderbird 连接到我的邮件服务器 (beta.example.com),但它给了我一个错误的域警告,指出该证书属于 mail.example.com。我哪里搞砸了? mx 记录显示 mail.example.com,那么它不应该知道该证书是针对 mail.example.com 的吗?我添加了一个例外,但它仍然失败(在提示我输入密码之后)。我查看了我的服务器,看来 dovecot 拒绝连接,因为 Thunderbird 给它提供了错误的证书数据。
答案1
您体验到证书的真正目的:防止意外连接到不是您期望的服务器(mail.example.com
而不是beta.example.com
)。您必须配置为您连接到的域颁发的证书,即。如果邮件客户端连接到beta.example.com
,您需要 的证书beta.example.com
。
要么获取另一个证书beta.example.com
(或将其作为主题备用名称),要么mail.example.com
指向 的 IP beta.example.com
。
答案2
客户端配置为连接到mail.example.com
.
它连接到的服务器声称(在证书中)是beta.example.com
.
因为mail.example.com
与 不是一回事beta.example.com
,客户抱怨不匹配。这完全是设计使然。
为了让它发挥作用,您需要配置邮件服务器以提供包含与客户端指向的主机名相匹配的主题备用名称的证书。主机名最终如何解析为 IP 地址不是重点。
过去,您会将主机名放在证书的“公用名”字段中,但这种做法已被弃用。如果您愿意,您仍然可以将主机名作为证书的 CN,但为了获得最佳兼容性,您需要还把它当作一个SAN。我相信,如果您自己不在 CSR 中这样做,大多数 CA 都会将 CN 作为 SAN 作为一项服务提供给您,但有些 CA 可能不会这样做;检查你的证书。
如果您必须使用相同的证书对于 Postfix 和 Dovecot,但出于某种原因你想要不同的主机名为两者(例如smtp.example.com
和pop.example.com
)发布,那么您需要一个对所涉及的两个主机名都有效的证书。这可以通过多主机名证书或通配符 ( *.example.com
) 证书来完成。
还,MX(邮件交换器)DNS RR 实际上仅与处理特定域邮件的邮件服务器的传入 SMTP 连接相关,其中远程邮件服务器最初只知道收件人域。例如,这是完全有效的
example.com. MX 0 mail.example.com.
mail.example.com. CNAME beta.example.com.
beta.example.com. A 192.0.2.123
尽管并不真正推荐,因为将 RR 指向非规范 RR 可能会使某些解析器阻塞。但是,如果远程系统的解析器接受它(大多数都接受),则上面的内容实际上与您有的相同
example.com. MX 0 mail.example.com.
mail.example.com. A 192.0.2.123
在这两种情况下,远程 MTA(邮件传输代理;在现代,邮件服务器与其他邮件服务器进行 SMTP 通信)将连接到 mail.example.com(因为这是 MX 中给定的 MX 主机名) RR),因此需要一个对 mail.example.com 有效的证书。
您的 MUA 不会查询 MX 记录无论如何都不知道;它将查询您指定为传入 (POP/IMAP) 或传出 (SMTP) 的任何主机名的地址(A
,AAAA
在极少数情况下也可能;A6 RR 已弃用,但在 IPv6 中使用了一段时间)记录A6
邮件服务器。