79 lines
2.1 KiB
Markdown
79 lines
2.1 KiB
Markdown
# 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 :
|
|
```bash
|
|
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
|
|
```
|
|
|
|
```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 <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.
|