Depuis la dernière mise à jour de Dovecot qui s'est déroulée aux alentours du 1er Octobre 2019 sous Debian 10.1, Dovecot refusait la connexion en protocole imaps et plus généralement toute connexion SSL/TLS.
openssl s_client -connect imap.domaine.tld:993
Le serveur coupe aussitôt la connexion. Pas bon du tout !
On continue l'investigation:
systemctl status dovecot.service
Cette commande vous permet de consulter l'état du service dovecot sous Debian et vous renvoie également les messages de debug (si Dovecot est en mode debug).
Pour ma part, voici ce que renvoyait cette commande :
dovecot[10871]: imap-login: Error: Failed to initialize SSL server context: Can't load DH parameters: error:1408518A:SSL routines:ssl3_ctx_ctrl:dh key too small: user=<>, rip=xxx...
On note clairement l'impossibilité pour le service dovecot de charger le fichier de paramètres DH avec une précision "dh key too small".
À ce stade, on connaît l'origine du problème.
Vérifier que le fichier de paramètres DH existe et est bien chargé par le service Dovecot
ls -lisa /etc/dovecot/dh.pem 792947 4 -rw-r--r-- 1 root dovecot 1440 févr. 12 2014 /etc/dovecot/dh.pem
Le fichier existe bien, il date du 12 Février 2014 et les droits sont bons, donc quel est le problème ?
Assez récemment, je sais que d'importantes modifications ont été apportées à openssl sur le support v3 en particulier et nécessitant de regénérer les certificats pour les serveurs Web.
En toute logique, il faut donc regénérer le fichier DH pour chaque service utilisant TLS/SSL.
Pour se faire, voici la commande (en root):
openssl dhparam -out /etc/dovecot/dh.pem 4096
Bon, ça prend du temps. C'est le moment d'un bon café ;-)
Une fois terminée, on redémarre le service Dovecot :
systemctl restart dovecot.service
On vérifie la sortie de la commande :
systemctl status dovecot.service
Le service a bien redémarré et le message d'erreur a disparu, c'est bon signe ;-)
La dernière étape consiste à tester que la connexion au service Dovecot en IMAPS fonctionne :
openssl s_client -connect imap.domaine.tld:993
Voilà, les choses sont évidentes. La connexion est établie et nous pouvons exécuter des commandes IMAP ;-)