# 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. { ssl_cert = -le.crt ssl_key = -le.key } local_name mail. { ssl_cert = -le.crt ssl_key = -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 : ```bash find /var/www/clients/ -name "mail.-le.*" ``` Format : `/var/www/clients/clientX/webY/ssl/mail.-le.crt` et `.key` ### Postfix SNI Creer `/etc/postfix/sni_map` : ``` mail. /chemin/vers/mail.-le.key /chemin/vers/mail.-le.crt mail. /chemin/vers/mail.-le.key /chemin/vers/mail.-le.crt ``` ```bash postmap -F hash:/etc/postfix/sni_map ``` Ajouter dans `/etc/postfix/main.cf` : ``` tls_server_sni_maps = hash:/etc/postfix/sni_map ``` ### Redemarrer ```bash systemctl restart dovecot systemctl restart postfix ``` ### Verification ```bash echo | openssl s_client -connect :993 -servername mail. 2>&1 | grep "subject=" # Doit afficher : subject=CN = mail. echo | openssl s_client -connect :993 -servername mail. 2>&1 | grep "subject=" # Doit afficher : subject=CN = mail. ``` ## 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 (``) comme defaut.