Files
vps-docs/08-sni-mail.md
2026-04-08 16:15:11 +02:00

2.1 KiB

8. SNI Mail Multi-Domaines

Probleme

Par defaut, Dovecot/Postfix servent un seul certificat SSL pour tous les domaines mail. Les clients (iPhone, Gmail app) refusent la connexion si le certificat ne correspond pas au serveur configure.

Solution : SNI (Server Name Indication)

Dovecot SNI

Editer /etc/dovecot/dovecot.conf, apres la ligne ssl_prefer_server_ciphers = no ajouter :

# SNI per domain
local_name mail.<DOMAINE1> {
  ssl_cert = </chemin/vers/mail.<DOMAINE1>-le.crt
  ssl_key = </chemin/vers/mail.<DOMAINE1>-le.key
}

local_name mail.<DOMAINE2> {
  ssl_cert = </chemin/vers/mail.<DOMAINE2>-le.crt
  ssl_key = </chemin/vers/mail.<DOMAINE2>-le.key
}

Piege : Ne pas mettre le SNI dans conf.d/10-ssl.conf — ISPConfig ou le dovecot.conf principal ecrase les valeurs. Toujours ajouter directement dans dovecot.conf.

Trouver les certificats

ISPConfig stocke les certificats LE dans le dossier SSL du site :

find /var/www/clients/ -name "mail.<DOMAINE>-le.*"

Format : /var/www/clients/clientX/webY/ssl/mail.<DOMAINE>-le.crt et .key

Postfix SNI

Creer /etc/postfix/sni_map :

mail.<DOMAINE1> /chemin/vers/mail.<DOMAINE1>-le.key /chemin/vers/mail.<DOMAINE1>-le.crt
mail.<DOMAINE2> /chemin/vers/mail.<DOMAINE2>-le.key /chemin/vers/mail.<DOMAINE2>-le.crt
postmap -F hash:/etc/postfix/sni_map

Ajouter dans /etc/postfix/main.cf :

tls_server_sni_maps = hash:/etc/postfix/sni_map

Redemarrer

systemctl restart dovecot
systemctl restart postfix

Verification

echo | openssl s_client -connect <IP>:993 -servername mail.<DOMAINE1> 2>&1 | grep "subject="
# Doit afficher : subject=CN = mail.<DOMAINE1>

echo | openssl s_client -connect <IP>:993 -servername mail.<DOMAINE2> 2>&1 | grep "subject="
# Doit afficher : subject=CN = mail.<DOMAINE2>

Certificat par defaut ISPConfig

Le certificat dans /usr/local/ispconfig/interface/ssl/ispserver.crt est utilise pour :

  • ISPConfig panel (port 8080)
  • Dovecot/Postfix par defaut (quand SNI ne match pas)

Garder le certificat du domaine principal du serveur (<DOMAINE>) comme defaut.