bg-tutorials

Comment installer un certificat SSL sur Postfix

Dans ce tutoriel, vous apprendrez comment installer un certificat SSL/TLS sur Postfix, le populaire agent de transfert de courrier Linux.

Nous avons également enregistré une vidéo qui vous guide tout au long du processus. Regardez-la ci-dessous, ou continuez à lire pour la version texte.

Générer un code CSR sur Postfix

Si vous avez déjà généré votre code CSR et n’avez besoin que des étapes d’installation, passez directement à Installer un certificat SSL sur Postfix.

Pour obtenir un certificat SSL auprès d’une autorité de certification (CA) de confiance, vous devez soumettre une CSR (demande de signature de certificat). Une CSR est un bloc de texte encodé qui contient vos coordonnées et les informations de votre organisation. Vous avez deux options :

Pendant le processus de commande auprès de votre fournisseur SSL, ouvrez le fichier CSR dans n’importe quel éditeur de texte brut et copiez-collez l’intégralité du bloc, y compris les lignes —–BEGIN CERTIFICATE REQUEST—– et —–END CERTIFICATE REQUEST—–, dans le champ correspondant. Une fois que la CA a validé votre demande et délivré le certificat, poursuivez avec l’installation ci-dessous.

Installer un certificat SSL sur Postfix

Une fois que la CA a validé votre demande et vous a envoyé les fichiers du certificat par e-mail, vous pouvez commencer l’installation.

Étape 1 : Préparez vos fichiers SSL

Postfix utilise des certificats SSL/TLS au format X.509. Une installation correcte nécessite trois fichiers :

  • Votre clé privée, générée en même temps que la CSR sur votre serveur (par exemple privkey.key).
  • Votre certificat SSL principal, le fichier contenu dans l’archive ZIP que la CA vous a envoyée par e-mail. Dans ce guide, nous l’appellerons server.crt.
  • Le(s) certificat(s) intermédiaire(s), le bundle CA provenant de la même archive ZIP. Nous l’appellerons intermediate.pem.

Vous pouvez conserver les trois fichiers dans un seul répertoire, par exemple /etc/postfix/. Assurez-vous que la clé privée n’est lisible que par root :

sudo chmod 600 /etc/postfix/privkey.key

Étape 2 : Construisez la chaîne de certificats

La façon d’assembler les fichiers dépend de votre version de Postfix. Vérifiez-la d’abord :

postconf mail_version

Méthode recommandée (Postfix 3.4 et versions plus récentes)

Créez un seul fichier de chaîne contenant la clé privée, le certificat du serveur et le(s) intermédiaire(s), exactement dans cet ordre :

cat /path/to/privkey.key /path/to/server.crt /path/to/intermediate.pem > /etc/postfix/rsachain.pem

Cette méthode moderne évite les problèmes de rotation de certificat et fonctionne parfaitement avec la directive smtpd_tls_chain_files de Postfix. Protégez le fichier de chaîne de la même manière que la clé, car il contient votre clé privée :

sudo chmod 600 /etc/postfix/rsachain.pem

Méthode alternative (toutes versions de Postfix)

Si vous utilisez une version de Postfix antérieure à 3.4, conservez la clé séparément et combinez uniquement le certificat du serveur avec le(s) intermédiaire(s) :

cat /path/to/server.crt /path/to/intermediate.pem > /etc/postfix/server.pem

Vous ferez référence à ce bundle et à la clé privée séparément dans la configuration ci-dessous.

Étape 3 : Configurez Postfix

Ouvrez le fichier de configuration principal /etc/postfix/main.cf et choisissez le style qui correspond à votre configuration.

Option A : Postfix 3.4 ou plus récent (recommandé). Pointez Postfix vers le fichier de chaîne unique que vous avez créé :

smtpd_tls_chain_files = /etc/postfix/rsachain.pem
smtpd_tls_security_level = may

Option B : ancienne méthode (Postfix antérieur à 3.4). Référencez le bundle de certificats et la clé séparément :

smtpd_tls_cert_file = /etc/postfix/server.pem
smtpd_tls_key_file = /etc/postfix/privkey.key
smtpd_tls_security_level = may

Quelques remarques sur ces directives :

  • smtpd_tls_security_level = may active le TLS opportuniste pour le courrier entrant sur le port 25. C’est le réglage approprié pour un serveur MX public : il annonce STARTTLS aux expéditeurs qui le prennent en charge, tout en continuant à accepter les connexions en clair de ceux qui ne le prennent pas en charge. Ne le réglez pas sur encrypt pour un MX public, car cela rejetterait le courrier légitime provenant d’expéditeurs qui n’utilisent que le clair. (L’ancien commutateur smtpd_use_tls = yes est obsolète ; smtpd_tls_security_level le remplace.)
  • Utilisez un certificat de chaîne complète (votre certificat plus les intermédiaires), que vous le fournissiez via smtpd_tls_chain_files (Option A) ou smtpd_tls_cert_file (Option B). Ne fournir que le certificat feuille provoque des échecs de validation de chaîne côté destinataire.
  • Postfix moderne désactive déjà par défaut SSLv2, SSLv3 et les chiffrements faibles, vous n’avez donc pas besoin de listes d’exclusion supplémentaires pour le trafic entrant sur le port 25.

Sécurisez le service de soumission (port 587)

Lorsque vos propres utilisateurs envoient du courrier via Postfix (via Outlook, Thunderbird, Apple Mail, etc.), ils se connectent sur le port de soumission 587, et non sur le port 25, réservé à la livraison de serveur à serveur. Comme seuls vos utilisateurs authentifiés utilisent ce port, vous pouvez appliquer en toute sécurité des règles plus strictes : exiger TLS et définir un protocole minimum de TLS 1.2.

Ouvrez /etc/postfix/master.cf, assurez-vous que le service submission est activé, et ajoutez les surcharges ci-dessous :

submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_tls_mandatory_protocols=>=TLSv1.2

Quelques détails qui posent souvent problème :

  • smtpd_tls_mandatory_protocols ne prend effet que lorsque le niveau de sécurité est encrypt (TLS obligatoire), ce qui est exactement le cas ici sur le port 587. Pour le TLS opportuniste sur le port 25 (niveau de sécurité may), le paramètre équivalent serait smtpd_tls_protocols, mais sur un MX public, il est généralement préférable de laisser ce paramètre aux valeurs par défaut de Postfix afin de ne pas rejeter les expéditeurs plus anciens.
  • La syntaxe compacte >=TLSv1.2 nécessite Postfix 3.6 ou plus récent et ne doit comporter aucun espace entre >= et le numéro de version. Sur Postfix 3.4 ou 3.5, utilisez plutôt la forme d’exclusion : smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1.
  • Dans master.cf, il n’y a pas d’espace autour du = dans une surcharge -o (par exemple -o smtpd_tls_security_level=encrypt), tandis que dans main.cf, vous écrivez clé = valeur avec des espaces.

Facultatif : TLS implicite sur le port 465. De nombreux clients modernes préfèrent le port 465 (SMTPS / « submissions »), qui enveloppe l’ensemble de la session dans du TLS dès le départ. La RFC 8314 l’approuve aux côtés du 587. Pour le proposer, activez le service smtps dans master.cf avec le mode wrapper :

smtps     inet  n       -       y       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes

Étape 4 : Rechargez Postfix

Avant de recharger, il est recommandé de vérifier la configuration pour détecter d’éventuelles erreurs de syntaxe :

sudo postfix check

Si cela ne renvoie rien, appliquez les modifications. Un rechargement relit la configuration sans interrompre les connexions actives :

sudo systemctl reload postfix

Sur les systèmes sans systemd, la commande équivalente est :

sudo postfix reload

Étape 5 : Vérifiez le certificat

Confirmez que Postfix diffuse le certificat et la chaîne corrects avec OpenSSL. Remplacez yourdomain.com par le nom d’hôte de votre serveur de messagerie :

openssl s_client -starttls smtp -connect yourdomain.com:25 -servername yourdomain.com </dev/null 
| openssl x509 -noout -issuer -subject -dates

La sortie devrait afficher le sujet du certificat de votre serveur, son émetteur (la CA), et les dates de validité. Pour tester le service de soumission à la place, changez le port pour 587 (il utilise également STARTTLS) ou, pour le port TLS implicite 465, supprimez -starttls smtp et connectez-vous directement au port 465. Félicitations, vous avez installé avec succès un certificat SSL sur Postfix.

Testez votre installation SSL

Après avoir installé le certificat, il est judicieux d’analyser votre configuration à la recherche d’erreurs ou de vulnérabilités. Notre SSL Checker vous fournit des rapports instantanés sur tous les aspects de votre certificat et de sa configuration, afin que vous puissiez confirmer que la chaîne est complète et que les protocoles sont correctement configurés.

Où acheter le meilleur certificat SSL pour Postfix ?

Vous êtes au bon endroit. Chez SSL Dragon, nous proposons l’une des plus larges gammes de produits SSL aux prix les plus bas du marché, et tous nos certificats sont compatibles avec l’agent de transfert de courrier Postfix.

Vous ne savez pas quel certificat choisir ? Notre SSL Wizard vous permet de trouver rapidement et facilement le bon produit pour votre serveur de messagerie.

Questions fréquemment posées

Quel fichier Postfix utilise-t-il pour le certificat SSL ?

Le TLS est configuré dans /etc/postfix/main.cf. Sur Postfix 3.4 et versions plus récentes, la directive recommandée est smtpd_tls_chain_files, qui pointe vers un seul fichier PEM contenant la clé privée, le certificat du serveur et les intermédiaires. Sur les versions plus anciennes, vous définissez plutôt smtpd_tls_cert_file (un certificat de chaîne complète) et smtpd_tls_key_file (la clé privée) séparément. Les surcharges par service pour les ports 587 et 465 se trouvent dans /etc/postfix/master.cf.

Quel est l’ordre correct pour le fichier de chaîne Postfix ?

Pour smtpd_tls_chain_files, l’ordre est d’abord la clé privée, puis le certificat du serveur (feuille), puis le(s) certificat(s) intermédiaire(s) :
cat privkey.key server.crt intermediate.pem > /etc/postfix/rsachain.pem
Si l’ordre est incorrect, Postfix ne parviendra pas à charger la chaîne. N’incluez pas le certificat de la CA racine ; les clients lui font déjà confiance.

Dois-je utiliser « may » ou « encrypt » pour smtpd_tls_security_level ?

Utilisez may (TLS opportuniste) pour le courrier entrant sur le port 25. Un MX public doit accepter le courrier provenant d’expéditeurs qui ne prennent pas en charge le TLS, et encrypt les rejetterait, entraînant une perte de courrier. Réservez encrypt (TLS obligatoire) au service de soumission authentifié sur le port 587, où seuls vos propres utilisateurs se connectent.

Dois-je redémarrer Postfix ou simplement le recharger ?

Un rechargement suffit pour les modifications de certificat et de TLS ; exécutez sudo systemctl reload postfix (ou sudo postfix reload). Le rechargement relit la configuration sans interrompre les connexions actives. Exécutez d’abord sudo postfix check pour détecter les erreurs de syntaxe avant qu’elles ne prennent effet.

Comment vérifier que Postfix diffuse bien le certificat ?

Connectez-vous avec OpenSSL et lisez le certificat que Postfix présente via STARTTLS :
openssl s_client -starttls smtp -connect yourdomain.com:25 -servername yourdomain.com </dev/null | openssl x509 -noout -issuer -subject -dates
Cela affiche le sujet, l’émetteur et les dates de validité du certificat. Vous pouvez également effectuer une analyse complète avec nos outils SSL pour confirmer que la chaîne est complète.

En résumé

Installer un certificat SSL sur Postfix revient à assembler un fichier PEM de chaîne complète, à pointer main.cf vers celui-ci avec smtpd_tls_chain_files (ou l’ancienne paire smtpd_tls_cert_file / smtpd_tls_key_file), à définir smtpd_tls_security_level = may pour le courrier entrant, à renforcer le service de soumission sur le port 587, à vérifier la configuration avec sudo postfix check, et à recharger Postfix.

Besoin d’un certificat d’abord ? Parcourez nos certificats SSL.

Economisez 10% sur les certificats SSL en commandant aujourd’hui!

Émission rapide, cryptage puissant, confiance de 99,99 % du navigateur, assistance dédiée et garantie de remboursement de 25 jours. Code de coupon: SAVE10

Image détaillée d'un dragon en vol
Rédigé par

Rédacteur de contenu expérimenté spécialisé dans les certificats SSL. Transformer des sujets complexes liés à la cybersécurité en un contenu clair et attrayant. Contribuer à l'amélioration de la sécurité numérique par des récits percutants.