Cette page présente une façon de configurer [:Postfix:] afin d'y activer le chiffrement (et accessoirement l'authentification) des connexions via TLS.

A quoi ça sert ?

Le chiffrement des connexions SMTP (échange de message) a plusieurs utilités :

Création d'une clé privée et d'un certificat auto-signé pour le serveur

Puisque nous allons utiliser un système basé sur SSL (TLS 1.0 ou SSL 3.0), il faut créer une clé privée et un certificat (clé publique signée). Nous n'expliquerons pas ici les détails, le sujet dépasse le cadre de cette documentation. Voici donc la façon rapide pour produire le fichier smtpd.pem (format PEM) qui contiendra la clé et le certificat :

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 :

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_tls_security_level = may # NB sur un postfix antérieur à 2.3, c'est 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 # uniquement si le chiffrage TLS est actif sur la 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_tls_security_level = may # NB sur un postfix antérieur à 2.3, c'est 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 :

Voir aussi

Annexes

Autorisation de relais via certificat

Avec le chiffrement TLS des connexions, vous obtenez également la possibilité d'identifier les machines se connectant (via leur certificat) et donc d'accepter de relayer le trafic de certaines d'entre-elles. C'est particulièrement utile dans le cadre de serveurs de messagerie en IP dynamiques.

Cela se fait par l'intermédiaire de l'option relay_clientcerts qui liste les empreintes de certificats des machines autorisées à être relayées.

Voici un exemple de configuration : {{{# (extraits de /etc/postfix/main.cf) # demander le certificat de la machine se connectant smtpd_tls_ask_ccert = yes # liste des empruntes de certificat des machines à relayer relay_clientcerts = hash:$config_directory/relay_clientcerts # autoriser (entre autres) le relais smtpd_recipient_restrictions = ..., permit_tls_clientcerts, ... }}}

Voici un exemple de fichier relay_clientcerts :

E1:3C:1A:C7:53:3F:B8:CB:1E:C2:99:F6:6B:88:84:C9 antenne.danang.vn.refer.org