我在运行 Raspbian 10(Buster)的 Raspberry Pi 上有一个 Dovecot/Postfix 服务器,我在同一台服务器上运行两个域名,为了保护隐私,我将其称为 DOMAIN 1 和 DOMAIN 2。两者都有与之关联的电子邮件地址,并且两个域都可以正常发送和接收电子邮件。
但是,每当我尝试使用 Outlook 检查电子邮件时,我都会收到域 2 的警告“您所连接的服务器正在使用无法验证的安全证书。目标主体名称不正确。”但域 1 没有收到警告。
当我“查看证书”时,该证书声称它是颁发给域 1。
我在 Dovecot 和 Postfix 中使用 SNI 设置了域,并将域 1 作为默认域,如下所示:
/etc/postfix/vmail_ssl.map
mail.DOMAIN1.com /etc/letsencrypt/live/DOMAIN1.com/privkey.pem /etc/letsencrypt/live/DOMAIN1.com/fullchain.pem
mail.DOMAIN2.com /etc/letsencrypt/live/DOMAIN2.com/privkey.pem /etc/letsencrypt/live/DOMAIN2.com/fullchain.pem
/etc/dovecot/ssl-sni.conf
local_name mail.DOMAIN1.com {
ssl_cert = </etc/letsencrypt/live/DOMAIN1.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/DOMAIN1.com/privkey.pem
}
local_name mail.DOMAIN2.com {
ssl_cert = </etc/letsencrypt/live/DOMAIN2.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/DOMAIN2.com/privkey.pem
}
在 Dovecot 的 SSL Conf 中如下
/etc/dovecot/conf.d/10-ssl.conf
# SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
ssl = yes
# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
# dropping root privileges, so keep the key file unreadable by anyone but
# root. Included doc/mkcert.sh can be used to easily generate self-signed
# certificate, just make sure to update the domains in dovecot-openssl.cnf
#ssl_cert = </etc/dovecot/private/dovecot.pem
#ssl_key = </etc/dovecot/private/dovecot.key
# default
ssl_cert = </etc/letsencrypt/live/DOMAIN1.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/DOMAIN1.com/privkey.pem
# DOMAIN2.com
local_name mail.DOMAIN2.com {
ssl_cert = </etc/letsencrypt/live/DOMAIN2.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/DOMAIN2.com/privkey.pem
}
我对设置这些东西没有太多经验,但在我看来,Dovecot 在所有情况下都默认为 DOMAIN1 提供 SSL 证书,而在建立连接检查该域的邮件时不为 DOMAIN2 提供证书...虽然我可能完全错了...有人能指出我做错了什么以及我需要做什么才能使 SNI 正常工作吗?我已经尽力了,但我的最好似乎还不够好...
谢谢!
答案1
SNI 对于邮件来说仍然不常见。虽然一些邮件服务器(如 dovecot)支持它,但许多邮件客户端并不支持。但是,如果客户端不使用 SNI,则服务器会发送一些默认证书。因此,它适用于一个域(默认),但不适用于另一个域。
答案2
我遇到了和你一样的问题。我删除了 letsencrypt 中所有以前的证书,但在通过以下方式测试证书时删除了最新的证书:
openssl s_client -connect localhost:25 -服务器名称 mail.mydomain.com -starttls smtp
我仍收到旧证书。我发现的解决方案是重建 vmail 数据库。
postmap -F hash:./vmail-ssl.map