Postfix:每个托管虚拟邮件域都有不同的 TLS 证书

Postfix:每个托管虚拟邮件域都有不同的 TLS 证书

我有一台带有单个 Postfix 实例的机器,它托管不同的虚拟邮件域。

是否可以根据 SMTP 客户端用于连接服务器的域配置 Postfix,使其使用不同的 TLS 服务器证书(具有不同的域名)?

我正在寻找类似于基于 SNI(服务器名称指示)的 Apache 虚拟主机的功能。

我的(虚构的)DNS配置如下

host12345678.my-hoster.tld.   IN  A           203.0.113.1
1.113.0.203.in-addr.arpa.     IN  PTR         host12345678.my-hoster.tld.

mail.my-1st-domain.tld.       IN  CNAME       host12345678.my-hoster.tld.
my-1st-domain.tld.            IN  MX     10   mail.my-1st-domain.tld.

mail.my-2nd-domain.tld.       IN  CNAME       host12345678.my-hoster.tld.
my-2nd-domain.tld.            IN  MX     10   mail.my-2nd-domain.tld.

我的(虚构的)Postfix 配置如下

myhostname              = host12345678.my-hoster.tld
mydomain                = host12345678.my-hoster.tld
myorigin                = $myhostname
mydestination           = $myhostname
virtual_mailbox_domains = my-1st-domain.tld my-2nd-domain.tld
virtual_mailbox_maps    = ldap:/etc/postfix/ldap-virtual-mailboxes.cf
virtual_transport       = lmtp:unix:/run/dovecot/dovecot-lmtp

如何向 Postfix 添加不同的 TLS 证书,以便它使用my-cert-chain-for-1st-domain.pemmy-cert-chain-for-2n-domain.pem取决于客户端是否使用mail.my-1st-domain.tldmail.my-2nd-domain.tld解析 203.0.113.1?

答案1

不。SMTP 不包含任何 SNI 机制。 正如 Steffen Ulrich 在评论中指出的那样,确实可以做到这一点,因为 STARTTLS 允许 SNI 和丹麦(RFC7672)需要这个。

Postfix 在最近的版本中支持此功能,使用tls_server_sni_maps配置指令。

映射文件只是一个带有域名的文件,后面跟着该域的一个或多个证书。

此外,您应该使用与您的 HELO/主机名匹配的证书,并且该证书必须与正向/反向 DNS 匹配,因此没有简单的方法可以让 HELO/EHLO 匹配任何自定义内容。

这也无关紧要,因为没有人应该与 MX 记录相关;邮件服务器是否是foo.example.org或并不重要gmail-smtp-in.l.google.com.。但证书应该与 DNS 名称匹配,并且 DNS 名称应该具有有效的反向条目。

相关内容