Pourquoi sécuriser pop3 et imap ?
Parce que les identifiants et mots de passe circulent en clair sur le réseau.
Cette seule sécurisation est insuffisante pour sécuriser tout le courrier, il faudrait aussi sécuriser smtp par "pop before smtp" et TLS, mais cette première mesure est facile à mettre en oeuvre et limite les éventuels dégâts dûs à un sniffer.
Accessoirement on notera que des mots de passe peuvent aussi circuler en clair lors de l’utilisation de formulaires / scripts CGI, ce qui devrait imposer l’utilisation de https (voir notre page sur l’installation de Apache - section mod_ssl).
Les tests ont été faits sous Linux avec une distribution Slackware (versions 7.1 et 8.0).
La recette
Commencer par récupérer stunnel sur le site officiel http://www.stunnel.org/
On suppose que OpenSSL est installé (sinon voir la page déjà citée sur l’installation de Apache).
cd /usr/src
tar -vzxf stunnel-3.22.tar.gz
chown -R root.root stunnel-3.22
export PATH=$PATH:/usr/local/ssl/bin/
cd stunnel-3.22
./configure
make
Il va falloir répondre à un questionnaire pour créer un certificat auto-signé :
(...)
Country Name (2 letter code) [PL]:FR
State or Province Name (full name) [Some-State]:Haut-Poitou
Locality Name (eg, city) []:Poitiers
Organization Name (eg, company) [Stunnel Developers Ltd]:Stunnels Happy users SA
Organizational Unit Name (eg, section) []::Stunnels Happy users
Common Name (FQDN of your server) [localhost]:ma.machine.eu.org
(...)
On installe :
make install
chmod 600 stunnel.pem
cp -p stunnel.pem /usr/local/ssl/certs
Le choix qui est fait ici est de remplacer complètement pop3 par pop3s et imap par imaps.
Il faudra adapter à votre distribution...
On édite /etc/inetd.conf pour commenter les lignes pop3 et imap (# en début de ligne). On relance inetd :
killall -HUP inetd
On rajoute si nécessaire dans /etc/services les lignes suivantes :
https 443/tcp # secure http
smtps 465/tcp # smtp protocol over TLS/SSL (was ssmtp)
nntps 563/tcp # nntp protocol over TLS/SSL (was snntp)
imaps 993/tcp # imap4 protocol over TLS/SSL
pop3s 995/tcp # pop3 protocol over TLS/SSL (was spop3)
(c’est essentiellement cosmétique, mais ça peut servir pour les logs et tests ).
On lance les démons stunnel :
/usr/local/sbin/stunnel -d 993 -p /usr/local/ssl/certs/stunnel.pem -l /usr/sbin/imapd -- imapd
/usr/local/sbin/stunnel -d 995 -p /usr/local/ssl/certs/stunnel.pem -l /usr/sbin/gnu-pop3d -- gnu-pop3d
On vérifie avec ps ax que les démons sont là.
Pour un démarrage automatique on inclut les deux lignes précédentes dans un des scripts de démarrage (/etc/rc.d/rc.inet2 ou /etc/rc.d/rc.local).
Il reste à configurer les clients de mail pour qu’ils se connectent avec le protocole TLS.
Le certificat auto-signé stunnel.pem pourra être remplacé par un certificat signé par une autorité de certification (CA).