Eu tenho uma única máquina com uma única instância do Postfix que hospeda diferentes domínios de correio virtual.
É possível configurar o Postfix de forma que use diferentes certificados de servidor TLS (com nomes de domínio diferentes) com base no domínio que o cliente SMTP usou para se conectar ao servidor?
Estou procurando um recurso semelhante à hospedagem virtual do Apache baseada em SNI (indicação de nome de servidor).
Minha configuração DNS (fictícia) se parece com
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.
Minha configuração (fictícia) do Postfix se parece com
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
Como adiciono certificados TLS diferentes ao Postfix de forma que ele use my-cert-chain-for-1st-domain.pem
ou my-cert-chain-for-2n-domain.pem
dependendo se o cliente usou mail.my-1st-domain.tld
ou mail.my-2nd-domain.tld
para resolver 203.0.113.1?
Não. O SMTP não contém nenhum mecanismo para SNI.Conforme apontado por Steffen Ulrich nos comentários, é realmente possível fazer isso, pois o STARTTLS permite o SNI e o DANE (RFC7672) exige isso.O Postfix suporta isso em versões recentes, usando a
tls_server_sni_maps
diretiva de configuração.O arquivo de mapeamento é simplesmente um arquivo com nomes de domínio seguidos de um ou mais certificados para esse domínio.
Além disso, você deve usar um certificado que corresponda ao seu HELO/nome do host, e isso deve corresponder ao DNS direto/reverso, portanto, não há uma maneira fácil de fazer com que o HELO/EHLO corresponda a algo personalizado.Nem isso importa, porque nenhum ser humano deveria ter que se relacionar com registros MX; não é relevante se o servidor de correio forfoo.example.org
ougmail-smtp-in.l.google.com.
. Mas o certificado deve corresponder ao nome DNS e o nome DNS deve ter entrada reversa funcional.