Cette page présente une façon de configurer [:Postfix:] afin d'y activer le chiffrement (et accessoirement l'authentification) des connexions via TLS.
Création d'une clé privée et d'un certificat auto-signé pour le serveur
La création correcte d'un certificat n'étant pas le sujet de cette page, je vous indique simplement une façon d'en produire un rapidement :
$ cd ~ $ openssl req -new -x509 -nodes -days 1825 -text -out smtpd.pem -keyout smtpd.pem (...) Country Name (2 letter code) [AU]:SN State or Province Name (full name) [Some-State]:Region-de-Dakar Locality Name (eg, city) []:Dakar Organization Name (eg, company) [Internet Widgits Pty Ltd]:Agence universitaire de la Francophonie Organizational Unit Name (eg, section) []:BAO/CNFD Common Name (eg, YOUR name) []:smtp.sn.auf.org ### ATTENTION A METTRE LE NOM EXACT DU SERVEUR ICI Email Address []:ressources-informatiques@auf.org
Note : le fichier smtpd.pem produit contient à la fois la clé privée (non protégée par un mot de passe) et le certificat public (auto-signé).
On place le fichier où il faut, en le protégeant :
# mkdir /etc/postfix/ssl # cd /etc/postfix/ssl # mv ~/smtpd.pem . # chmod 0600 smtpd.pem <--- très important car il y a une clé privée non protégée dans ce fichier
Configuration de Postfix pour utiliser TLS
Pour les connexions entrantes, voici les lignes à placer dans /etc/postfix/main.cf :
- {{{# extrait de /etc/postfix/main.cf
# on active TLS pour les connexions entrantes : smtpd_use_tls = yes smtpd_tls_key_file = $config_directory/ssl/smtpd.pem smtpd_tls_cert_file = $config_directory/ssl/smtpd.pem # on prépare l'avenir : les authentification ne seront possibles # QUE si TLS est activé sur le canal de communication : smtpd_tls_auth_only = yes }}}
- Pour les connexion sortantes (quand le serveur envoie ces mails à un autre serveur qui connait TLS) :
- {{{# extrait de /etc/postfix/main.cf
# on active TLS pour les connexions sortantes smtp_use_tls = yes smtp_tls_key_file = $config_directory/ssl/smtpd.pem smtp_tls_cert_file = $config_directory/ssl/smtpd.pem smtp_tls_note_starttls_offer = yes smtp_tls_enforce_peername = no # ne s'authentifier *que* si on est sécurisé via TLS smtp_tls_auth_only = yes }}}
Quelques autres options qui peuvent être utiles (voir man 5 postconf pour les détails) :
- {{{# quelques options possibles (voir man 5 postconf)
# optimisation vias des cache de session TLS : smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache # demander le certificat au client qui se connecte smtpd_tls_ask_ccert = yes # logs smtp_tls_loglevel = 2 smtpd_tls_loglevel = 2 # divers ... smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s }}}
Il faut bien évidement penser à redémarrer (et non recharger) Postfix :
# invoke-rc.d postfix restart
Documentations
[http://www.aet.tu-cottbus.de/personen/jaenicke/postfix_tls/doc/ A TLS extension for POSTFIX]