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 ledovecot.confprincipal ecrase les valeurs. Toujours ajouter directement dansdovecot.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.