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 : http://blog.moncoindunet.fr/linux/installer-un-serveur-de-mail-sous-linux-23-dovecot/
Logiciels utilisés : Dovecot 2.0.8, OpenSSL 1.0.0
1 – 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 : http://blog.moncoindunet.fr/linux/openssl-creer-un-certificat-auto-signe/
2 – 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
3 – Configurer Dovecot
La configuration se fait à deux niveaux : la configuration purement SSL (obligatoire) et la configuration de l'authentification (facultatif).
3.1 – Configurer SSL
La configuration de SSL dans Dovecot se fait via 3 directives du fichier 10-ssl.conf :
$ cd /usr/local/dovecot/etc/
$ vim conf.d/10-ssl.conf
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 !
3.2 – Configurer l'authentification
Pour plus d'informations sur l'authentification IMAP avec Dovecot, c'est par ici : http://blog.moncoindunet.fr/linux/dovecot-authentification-imap/
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 PLAIN avec utilisation de PAM comme base de données.
Dans le fichier 10-auth.conf, deux directives :
- 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
$ cd /usr/local/dovecot/etc/
$ vim conf.d/10-auth.conf
disable_plaintext_auth = yes ... auth_mechanisms = plain
Dans le fichier auth-system.conf.ext, on configure les bases de données pour utiliser PAM et /etc/passwd :
$ vim conf.d/auth-system.conf.ext
passdb {
driver = pam
}
userdb {
driver = passwd
}
3.3 – Prendre en compte la configuration
La prise en compte de la configuration se fait par un rechargement de Dovecot :
$ doveadm reload
4 – 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.
4.1 – 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 (en jaune, les commandes IMAP à taper) :
$ 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. 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 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.
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 OK !
4.2 – 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
4.3 – 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 :
$ 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