Chiffrement entre serveurs avec starttls et postfix

Depuis quelques temps, la question du chiffrement des mails en transit (de serveurs à serveurs) revient d’actualité. On peut voir google qui diffuse des statistiques dans son report “Safer email”,

En effet dans l’état actuel, si vous avez suivi le setup d’un serveur mail, les connexions sont chiffrées entre le client (thunderbird par exemple) et votre serveur mail, mais pas lors de l’envoi d’un mail vers un domaine distant (de serveur à serveur donc).

Par exemple, quand j’envoi un mail vers example.com depuis mondomaine.org :

client mail ===> smtp.mondomaine.org ---> smtp.example.com ===> client mail

===> : chiffré
---> : non chiffré

On voit bien que le mail transite en clair sur l’internet à un moment. Dommage de chiffrer aux deux bouts si le transit sur le net se fait en clair !

Pour remédier à cela, c’est assez simple avec postfix (et encore plus avec opensmtpd), il suffit de modifier quelques options dans la configuration de postfix pour que starttls soit actif, fichier /etc/postfix/main.cf :

smtpd_tls_security_level = may # Cette directive remplace smtpd_use_tls=yes
smtp_tls_security_level = may # "may" pour autoriser l'envoi de mail si le serveur distant ne supporte pas STARTTLS (ce qui est encore relativement courant).
smtpd_tls_exclude_ciphers = aNULL, MD5, DES, ADH # On desactive certains ciphers pour des raisons de sécurité...
smtpd_tls_loglevel = 1 # Et on ajoute quelques logs pour voir si tout se passe bien 
smtp_tls_loglevel = 1

Il est possible d’être bien plus stricte sur la directive smtp_tls_security_level, voir http://www.postfix.org/postconf.5.html#smtp_tls_security_level, à vous de tester selon vos besoins.

Vous pouvez ensuite tester votre configuration sur https://starttls.info/, ou via sslyze (merci Puckel pour l’info) :

Starttls alteroot

Note : Postfix supporte DANE depuis la version 2.11, qui permet une validation des certificats via DNSSEC. Ayant du DNSSEC sur alteroot.org, cela sera surement l’objet d’un prochain article :)

Sources :

http://www.postfix.org/postconf.5.html#smtpd_tls_exclude_ciphers
http://www.postfix.org/postconf.5.html#smtp_tls_security_level