Postfix auth TLS

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Chiffrement TLS de la session SMTP (côté serveur)
Fichier /etc/postfix/main.cf
Niveau usuel smtpd_tls_security_level = may
Voir aussi Configure Postfix to use SASL authentication with TLS security

Cette page couvre uniquement le chiffrement de la session SMTP côté serveur (smtpd_tls_*) — l'authentification des clients par SASL est un mécanisme distinct, traité sur Configure Postfix to use SASL authentication with TLS security. Les deux se combinent en pratique : TLS protège le canal, SASL authentifie l'expéditeur.

Paramètres de base

STARTTLS s'active en ajoutant à main.cf :

data_directory = /var/lib/postfix
smtpd_tls_security_level = may
smtpd_tls_auth_only = yes
inet_protocols = ipv4
smtp_fallback_relay = [hostname.fqdn]

smtpd_tls_security_level = may rend TLS opportuniste : le client peut choisir de chiffrer (STARTTLS) ou non, la connexion n'échoue jamais faute de TLS. C'est le réglage recommandé pour un serveur exposé sur Internet (la RFC 2487 déconseille de rendre TLS obligatoire pour du SMTP public, au risque de perdre des messages provenant de MTA distants mal configurés). smtpd_tls_auth_only = yes interdit en revanche l'authentification SASL en clair : une fois STARTTLS proposé, l'authentification ne peut se faire qu'à l'intérieur du canal chiffré.

Certificat

smtpd_tls_cert_file = /etc/ssl/certs/postfix.pem
smtpd_tls_key_file = /etc/ssl/private/postfix.key

Un certificat auto-signé suffit pour du TLS opportuniste (il ne fait qu'établir le chiffrement, pas une identité vérifiée par une autorité tierce) ; pour un serveur qui doit être reconnu comme un MX de confiance par d'autres MTA (DANE, MTA-STS), un certificat émis par une autorité reconnue est nécessaire.

Restreindre les protocoles et suites de chiffrement

Les recommandations ci-dessous datent d'une époque où SSLv2/SSLv3/TLSv1.0 étaient encore courants ; à ne plus utiliser telles quelles aujourd'hui (à vérifier selon la version de Postfix/OpenSSL disponible — les versions récentes de Postfix (≥ 3.x) désactivent SSLv2/SSLv3 par défaut et acceptent nativement TLSv1.2/TLSv1.3). Elles restent utiles pour comprendre la logique de durcissement :

smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtp_tls_mandatory_protocols  = !SSLv2, !SSLv3
smtpd_tls_protocols = TLSv1.2, TLSv1.3
smtp_tls_protocols  = TLSv1.2, TLSv1.3

smtpd_tls_exclude_ciphers = aNULL, DES, 3DES, MD5, RC4, SEED, ECDSA
smtpd_tls_mandatory_ciphers = high

(La forme historique du paramètre tls_high_cipherlist, longue liste de suites séparées par :, est mieux gérée aujourd'hui en laissant OpenSSL choisir via ciphers = high plutôt qu'en la recopiant à la main — la liste explicite se périme rapidement à mesure que de nouvelles vulnérabilités sont découvertes sur d'anciennes suites.)

Configuration de référence

Un jeu de paramètres simple et robuste pour un serveur Postfix récent, avec TLS opportuniste et un certificat auto-signé de test :

# Certificat / clé
smtpd_tls_cert_file = /etc/ssl/certs/postfix.pem
smtpd_tls_key_file = /etc/ssl/private/postfix.key

# Niveau de journalisation TLS (0 = minimal)
smtpd_tls_loglevel = 0

# TLS opportuniste, en émission comme en réception
smtpd_tls_security_level = may
smtp_tls_security_level = may

# N'autoriser l'authentification SASL qu'après STARTTLS
smtpd_tls_auth_only = yes

# Désactiver la compression TLS (vulnérabilité CRIME)
tls_ssl_options = NO_COMPRESSION

Voir aussi