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 :

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

  1. 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 }}}

  1. 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 }}}

  1. 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