Dovecot : utilisation de SSL pour l’IMAP

Le but de cette note est de sécuriser une connexion IMAP à un serveur Dovecot via l’utilisation du protocole SSL/TLS.

Pour l’installation de Dovecot, on se reportera à cette note : installer un serveur de mail sous Linux avec Dovecot

Article écrit avec les versions Dovecot 2.2.13 et OpenSSL 1.0.1t.

Article mis à jour le 11/10/2016

Créer un certificat

Pour pouvoir utiliser SSL/TLS, le pré-requis est d’avoir un certificat. Soit vous possédez déjà d’un certificat utilisable, soit vous pouvez créer un certificat auto-signé.

Pour créer un certificat auto-signé, on se reportera à cette autre note : créer un certificat auto-signé avec OpenSSL

Compiler Dovecot avec SSL

Le support n’est pas présent par défaut si Dovecot a été compilé sans option particulière.

Pour compiler Dovecot avec SSL il faut utiliser :

  • l’option --with-ssl=openssl
  • si les chemins des librairies OpenSSL ne sont pas dans le PATH il faut spécifier l’emplacement des répertoires lib et include via les variables CPPFLAGS et LDFLAGS

Exemple :

$ CPPFLAGS="-I/usr/local/ssl/include" LDFLAGS="-L/usr/local/ssl/lib -ldl" ./configure --prefix=/usr/local/dovecot --datarootdir=/usr/share --with-ssl=openssl
$ make
$ make install

Configurer Dovecot

La configuration Dovecot se fait à deux niveaux : l’activation et la configuration SSL (obligatoire) et la configuration de l’authentification (facultatif).

Activer SSL

La configuration de SSL dans Dovecot se fait via 3 directives du fichier 10-ssl.conf du répertoire de configuration (sous RedHat dans /etc/dovecot/conf.d) :

ssl = required
...
ssl_cert = </usr/local/ssl/certs/dovecot.cert
ssl_key = </usr/local/ssl/private/dovecot.key

Les directives parlent d’elles-mêmes pour la signification :

  • ssl = required : activation obligatoire de la prise en charge SSL (mettre yes au lieu de required pour la rendre facultative pour les authentifications non en clair)
  • ssl_cert : chemin du certificat
  • ssl_key : chemin de la clé privée

Ne pas oublier le caractère < devant les chemins des clés !

Configurer l’authentification

Pour plus d’informations sur l’authentification IMAP avec Dovecot, c’est par ici : Authentification IMAP avec Dovecot

L’utilisation de SSL nous permet d’utiliser un mécanisme d’authentification en clair, puisque rendu non en clair par SSL. On va donc configurer ici une authentification de type PLAIN.

Dans le fichier 10-auth.conf du répertoire de configuration, deux directives sont à configurer :

  • disable_plaintext_auth = yes : on désactive l’authentification en clair, sauf si elle est utilisée avec SSL
  • auth_mechanisms = plain : on utilise le mécanisme d’authentification PLAIN

Prendre en compte la configuration

La prise en compte de la configuration se fait par un rechargement de Dovecot :

$ doveadm reload

Tester

Deux moyens pour tester la connexion au serveur IMAP avec SSL/TLS : en ligne de commande depuis la machine ou depuis un client de messagerie classique. On peut ensuite vérifier les logs.

Sur la machine

Contrairement à l’article sur l’installation Dovecot, on ne peut pas se connecter directement au port IMAP (tcp/143) puisqu’on ne peut plus faire de communication en clair.

Pour effectuer une connexion sur le port IMAPs (tcp/993) nous allons donc le faire grâce au client SSL d’OpenSSL :

$ openssl s_client -connect 192.168.0.1:993

CONNECTED(00000003)
depth=...
verify error:num=18:self signed certificate
verify return:1
depth=...
verify return:1
---
Certificate chain
...
---
Server certificate
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
...
---
No client certificate CA names sent
---
SSL handshake has read 526 bytes and written 26 bytes
---
...
---
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE AUTH=PLAIN] Dovecot ready.

On se connecte avec un utilisateur/mot de passe :

a login test secret
a OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in

Et on sélectionne le dossier INBOX :

b select inbox
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted.
* 1 EXISTS
* 1 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1272908161] UIDs valid
* OK [UIDNEXT 2] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
b OK [READ-WRITE] Select completed.

Pour finir, on se déconnecte :

c logout

On voit ici que l’on peut se connecter avec le compte nommé test (à adapter selon votre login) et sélectionner la boite inbox : la connexion SSL/TLS au serveur IMAP est donc OK !

Logiciel de messagerie

Pour faire un test il faut bien penser à configurer son logiciel de messagerie pour qu’il prenne en compte l’utilisation de SSL/TLS.

Par exemple pour Thunderbird : Outils > Paramètres des comptes > Paramètres serveur > Sécurité de la connexion

Fichier de log

Une connexion via SSL/TLS se voit également dans le fichier de log. C’est la même ligne qu’une connexion classique mais le mot TLS est ajouté à la fin de la ligne de log :

$ tail /var/log/mail.log
...
Jun 16 13:21:46 pouet dovecot: imap-login: Login: user=<test>, method=PLAIN, rip=192.168.0.2, lip=192.168.0.1, mpid=12596, TLS

Et voilà, la connexion IMAP au serveur Dovecot est maintenant plus sécurisée grâce à l’utilisation de SSL/TLS !

Problèmes rencontrés :

Problème : message lors du démarrage de Dovecot :

$ /etc/init.d/dovecot start
doveconf: Fatal: Error in configuration file /usr/local/dovecot/etc/dovecot.conf: SSL support not compiled in but ssl=yes

Solution : installer Dovecot avec le support SSL :

$ CPPFLAGS="-I/usr/local/ssl/include" LDFLAGS="-L/usr/local/ssl/lib -ldl" ./configure --prefix=/usr/local/dovecot --datarootdir=/usr/share --with-ssl=openssl
$ make
$ make install

Laisser un commentaire