RSS
 

Dovecot : utilisation de SSL pour l’IMAP

21 jan

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
 
 

Tags: , , , , , ,

Leave a Reply