Activer TLS dans postfix
Par Dju » 24 avril 2010 (02:15) - Serveur
Le petit postfix trick du mois: faire en sorte que postfix puisse communiquer en TLS. C'est à dire chiffrer les communications afin que les données de la session SMTP ne soient plus en clair, et donc lisibles de l'extérieur.
De plus, avec le contexte "hadopi" actuel, ça ne peut pas faire de mal si vous n'aimez pas big brother :D
Tout d'abord, à quoi sert le TLS ? à authentifier le client et le serveur avec des certificats, et surtout chiffrer les communications SMTP en SSL de manière à ne plus faire passer les données en clair.
la clé et le certificats seront installés dans /etc/postfix/tls
mkdir /etc/postfix/tls
cd /etc/postfix/tls
Commençons par générer notre clé :
openssl genrsa -rand /etc/hosts -out smtpd.key 1024
Puis le certificat :
openssl req -new -key smtpd.key -out smtpd.csr
openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
openssl rsa -in smtpd.key -out smtpd.key.unencrypted
mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650
Attention, lorsque vous générez les certificat, openssl va vous demander des informations comme votre pays, ville, nom d'organisation... vous pouvez mettre ce que vous voulez (mais c'est mieux d'être honnète et d'indiquer des vraies informations).
Par contre, lorsqu'il vous demande le "common name", il faut absolument renseigner le nom de votre serveur mail (par exemple mail.domaine.com).
C'est grâce à ce nom que le certificat est valide. On le retrouve normalement dans /etc/postfix/main.cf à la ligne "myhostname = mail.domaine.fr"
Et on édite le fichier /etc/postfix/main.cf pour y mettre ceci :
smtpd_use_tls=yes smtpd_tls_security = may smtpd_tls_key_file = /etc/postfix/tls/smtpd.key smtpd_tls_cert_file = /etc/postfix/tls/smtpd.crt smtpd_tls_CAfile = /etc/postfix/tls/cacert.pem smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtp_use_tls = yes smtp_tls_security_level = may smtp_tls_loglevel = 1
Les lignes "log_level" servent surtout à afficher plus d'information sur les communications chiffrées... Donc pas obligatoire. A laisser activé au début pour vérifier que tout marche bien et à commenter ensuite.
la ligne "smtpd_tls_received_header = yes" sert à rajouter un header dans le mail afin d'indiquer que la session smtp s'est faite en TLS. donc pas obligatoire non plus.
Enfin on valide en relancant postfix :
/etc/init.d/postfix restart
Maintenant que notre postfix est configuré, il ne va pas forcément crypter toutes les communications. Pour que ça fonctionne, il faut que le serveur mail en face soit aussi configuré pour accepter le TLS.
Inversement, si quelqu'un vous envoie un email, et que son serveur mail supporte le TLS, alors il causera TLS à votre serveur
Merci, c'est juste ce qu'il me fallait !
ps : C'est marrant je me croirais sur mon blog =D
Fil des commentaires de ce billet
URL de rétrolien : https://blog.crifo.org/trackback/50