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épertoireslib
etinclude
via les variablesCPPFLAGS
etLDFLAGS
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 (mettreyes
au lieu derequired
pour la rendre facultative pour les authentifications non en clair)ssl_cert
: chemin du certificatssl_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 SSLauth_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
Leave a Reply