Dans ce guide, vous apprendrez à installer un certificat SSL ACME sur des serveurs de messagerie, en particulier Postfix, Dovecot, et éventuellement Exim, en utilisant des fournisseurs commerciaux qui supportent ACME + EAB. Nous utiliserons acme.sh pour enregistrer votre compte ACME, émettre un certificat pour votre nom d’hôte de messagerie, et ensuite insérer ce certificat directement dans la configuration TLS de votre serveur de messagerie.

Ce guide suppose un serveur de messagerie basé sur Linux et une autorité de certification commerciale qui fournit une URL de répertoire ACME ainsi que des informations d’identification EAB (Key ID + HMAC). Comme les environnements de messagerie diffèrent selon les distributions et les configurations d’hébergement, considérez ceci comme un modèle clair et fiable, mais vérifiez toujours les chemins d’accès, les noms de service et les paramètres TLS de votre propre serveur au fur et à mesure que vous avancez.
Avant de commencer
Vous passerez un moment beaucoup plus agréable si ces éléments de base sont prêts :
- Un nom d’hôte de messagerie, par exemple mail.example.com, avec un enregistrement A/AAAA pointant vers votre serveur de messagerie.
- Votre enregistrement MX pointant vers ce nom d’hôte (configuration courante)
- Accès Shell/SSH au serveur de messagerie avec sudo ou root
- Un compte d’autorité de certification commerciale qui fournit une URL d’annuaire ACME(par exemple https://acme.yourca.com/v2/acme), l’ID de la clé EAB et la clé HMAC EAB.
- Pile de messagerie: Postfix/Exim pour SMTP et Dovecot pour IMAP/POP3
Nous utiliserons la validation DNS-01 parce qu’elle fonctionne même si votre serveur de messagerie ne gère pas de site web public et qu’elle est souvent préférée en production.
Étape 1 : Installer acme.sh sur le serveur de messagerie
Vous installerez le client ACME directement sur le serveur de messagerie afin qu’il puisse renouveler les certificats et les écrire sur le disque où Postfix/Dovecot/Exim peut les lire.
Sur le serveur de messagerie :
curl https://get.acme.sh | sh
source ~/.bashrc
acme.sh --version
Si vous voyez un numéro de version, le client est installé et prêt. Si la ligne source ~/.bashrc ne fonctionne pas, déconnectez-vous et reconnectez-vous, puis exécutez à nouveau acme.sh --version.
Étape 2 : Enregistrez votre compte ACME (avec EAB)
Ensuite, vous devez enregistrer votre compte ACME auprès de votre autorité de certification commerciale en utilisant les informations d’identification EAB de leur panel. acme.sh prend en charge EAB via --eab-kid et --eab-hmac-key.
Exécutez ceci sur le serveur de messagerie :
acme.sh --register-account \
--server https://acme.yourca.com/v2/acme \
--eab-kid YOUR_EAB_KID \
--eab-hmac-key YOUR_EAB_HMAC_KEY \
--accountemail [email protected]
Remplacer :
https://acme.yourca.com/v2/acmeavec l’URL du répertoire ACME de votre autorité de certificationYOUR_EAB_KIDavec l’identifiant de la cléYOUR_EAB_HMAC_KEYavec la clé HMAC[email protected]avec votre véritable adresse électronique d’administrateur pour les avis d’expiration
Vous effectuez cette opération une fois par compte. Si la commande échoue, il s’agit presque toujours d’une erreur de frappe dans les valeurs de l’URL ou de l’EAB.
Étape 3 : Délivrer le certificat via DNS-01
Vous devez maintenant demander un certificat pour le nom d’hôte auquel vos utilisateurs se connecteront, par exemple mail.example.com (ou imap.example.com, smtp.example.com. Choisissez celui que vous utilisez réellement dans les configurations des clients).
Délivrer le certificat (DNS manuel)
Exécutez :
acme.sh --issue \
-d mail.example.com \
--dns dns_manual \
--server https://acme.yourca.com/v2/acme
--dns dns_manual dit acme.sh vous ajouterez des enregistrements TXT manuellement dans votre panneau DNS.
Le client affichera quelque chose comme :
Please add a TXT record:
_acme-challenge.mail.example.com → some-long-token-value
Ajouter l’enregistrement TXT
Dans le panneau de votre fournisseur DNS, créez un enregistrement TXT :
- Nom:
_acme-challenge.mail.example.com - Valeur: le jeton indiqué par
acme.sh
Attendez quelques minutes pour que le DNS se propage, puis vérifiez avec :
dig TXT _acme-challenge.mail.example.com +short
Si vous voyez le jeton, exécutez à nouveau la commande acme.sh --issue pour terminer la validation. En cas de succès, acme.sh stocke vos fichiers sous ~/.acme.sh/mail.example.com/.
Dans ce répertoire, vous trouverez au moins.. :
- fullchain.cer – certificat et chaîne intermédiaire
- mail.example.com.key – clé privée
- ca.cer – Certificats de l’autorité de certification (si votre autorité de certification les fournit séparément)
Nous les utiliserons dans les étapes suivantes.
Étape 4 : Configurer Postfix pour qu’il utilise le certificat ACME (SMTP)
Postfix doit savoir où se trouvent votre nouveau certificat et votre nouvelle clé. TLS dans Postfix est contrôlé par des options telles que smtpd_tls_cert_file et smtpd_tls_key_file.
Tout d’abord, copiez les fichiers dans un emplacement stable, par exemple :
sudo mkdir -p /etc/ssl/mail
sudo cp ~/.acme.sh/mail.example.com/fullchain.cer /etc/ssl/mail/mail-fullchain.cer
sudo cp ~/.acme.sh/mail.example.com/mail.example.com.key /etc/ssl/mail/mail.key
sudo chown root:root /etc/ssl/mail/*
sudo chmod 600 /etc/ssl/mail/mail.key
Indiquez ensuite à Postfix de les utiliser :
sudo postconf -e 'smtpd_use_tls = yes'
sudo postconf -e 'smtpd_tls_security_level = may'
sudo postconf -e 'smtpd_tls_cert_file = /etc/ssl/mail/mail-fullchain.cer'
sudo postconf -e 'smtpd_tls_key_file = /etc/ssl/mail/mail.key'
sudo postconf -e 'smtp_tls_security_level = may'
smtpd_*les paramètres de contrôle du courrier entrant (les clients qui vous envoient du courrier)smtp_*les paramètres contrôlent le courrier sortant (votre serveur envoie du courrier à d’autres personnes)
Appliquez les modifications :
sudo systemctl restart postfix
Si votre distribution utilise encore service, ajustez la commande en conséquence.
Etape 5 : Configurer Dovecot pour utiliser le certificat ACME (IMAP/POP3)
Dovecot gère IMAP et POP3. Vous configurez TLS en pointant ssl_cert et ssl_key vers les mêmes fichiers que nous venons de préparer.
Ouvrez la configuration SSL de Dovecot :
sudo nano /etc/dovecot/conf.d/10-ssl.conf
Mettez à jour (ou ajoutez) ces lignes :
ssl = yes
ssl_cert = </etc/ssl/mail/mail-fullchain.cer
ssl_key = </etc/ssl/mail/mail.key
Sauvegardez le fichier et rechargez Dovecot :
sudo systemctl restart dovecot
Désormais, IMAP/POP3 via TLS présentera le même certificat commercial ACME.
Facultatif : Utilisez le même Cert dans Exim
Si vous utilisez Exim comme serveur de messagerie au lieu de Postfix, l’intégration est similaire. Exim utilise les options tls_certificate et tls_privatekey pour TLS.
Dans votre configuration Exim (le chemin dépend de la distribution, souvent /etc/exim4/exim4.conf.template ou split config sous /etc/exim4/conf.d/), définissez :
tls_certificate = /etc/ssl/mail/mail-fullchain.cer
tls_privatekey = /etc/ssl/mail/mail.key
Rechargez ensuite Exim :
sudo systemctl restart exim4
Vérifiez la documentation du paquet de votre distribution si le nom du service est légèrement différent.
Étape 6 : Testez le protocole TLS de votre courrier
Vous pouvez tester à partir de n’importe quelle autre machine sur laquelle OpenSSL est installé.
Testez SMTP (Postfix ou Exim)
openssl s_client -starttls smtp -connect mail.example.com:587 -showcerts
Test IMAP (Dovecot)
openssl s_client -starttls imap -connect mail.example.com:143 -showcerts
Si la sortie indique votre autorité de certification commerciale et que le nom d’hôte correspond, c’est bon.
Étape 7 : Automatiser les renouvellements et les recharges
acme.sh installe déjà une tâche cron qui vérifie les renouvellements quotidiennement. Lorsque votre certificat est proche de l’expiration, il sera renouvelé automatiquement et mettra à jour les fichiers dans ~/.acme.sh/mail.example.com/.
Pour que Postfix/Dovecot/Exim utilise toujours la dernière version, vous avez deux options :
- Dirigez les configurations directement vers les fichiers dans ~/.acme.sh/mail.example.com/
(par exemple, smtpd_tls_cert_file = /root/.acme.sh/mail.example.com/fullchain.cer) et assurez-vous que seul root peut les lire. - Écrivez un petit script de déploiement qui copie les fichiers renouvelés dans
/etc/ssl/mail/et redémarre ou recharge le serveur.
Exemple de script :
#!/usr/bin/env bash
DOMAIN="mail.example.com"
SRC="$HOME/.acme.sh/$DOMAIN"
DEST="/etc/ssl/mail"
sudo cp "$SRC/fullchain.cer" "$DEST/mail-fullchain.cer"
sudo cp "$SRC/$DOMAIN.key" "$DEST/mail.key"
sudo chown root:root "$DEST/"*
sudo chmod 600 "$DEST/mail.key"
sudo systemctl restart postfix dovecot
Ce script copie le nouveau certificat ACME et la clé privée dans le répertoire SSL de votre serveur, définit la propriété et les autorisations correctes, puis redémarre Postfix et Dovecot afin qu’ils commencent immédiatement à utiliser le certificat mis à jour. Utilisez vos informations d’identification à la place des caractères génériques.
Puis connectez-le à acme.sh:
acme.sh --install-cert -d mail.example.com \
--key-file ~/.acme.sh/mail.example.com/mail.example.com.key \
--fullchain-file ~/.acme.sh/mail.example.com/fullchain.cer \
--reloadcmd "/path/to/your/deploy-script.sh"
À partir de là, les renouvellements se font automatiquement.
Questions courantes et dépannage
Quelques problèmes peuvent survenir lorsque vous effectuez cette opération pour la première fois. Voici comment les résoudre rapidement.
Pourquoi la validation de l’ACME échoue-t-elle avec la mention « non autorisé » ou « réponse non valide » ?
Cela se produit lorsque l’autorité de certification ne peut pas vérifier votre enregistrement DNS TXT. Vérifiez cela :
- L’enregistrement TXT est exactement
_acme-challenge.mail.example.com - Le jeton ne contient pas de guillemets ou d’espaces supplémentaires
- Le DNS s’est propagé (
dig TXT _acme-challenge.mail.example.com +short) - Vous n’avez pas confondu mail.example.com avec example.com
En cas de doute, supprimez l’enregistrement TXT, exécutez à nouveau acme.sh --issue et ajoutez à nouveau la valeur exacte que vous donne ACME.
Pourquoi est-ce que je reçois des erreurs « accountDoesNotExist » ou des erreurs liées à l’EAB ?
Ces problèmes apparaissent lorsque l’enregistrement de votre compte ACME ne correspond pas aux informations d’identification EAB de votre autorité de certification.
Fixé par :
- Revérification de l’URL du répertoire ACME (production vs staging)
- S’assurer que l’ID de la clé et le HMAC sont copiés exactement, sans espaces cachés.
- Réexécution de la commande d’enregistrement une fois avec les valeurs correctes
Les AC commerciales rejettent tout enregistrement de VAE qui ne correspond pas au profil qu’elles ont délivré.
Pourquoi SMTP/IMAP affiche-t-il toujours l’ancien certificat ?
Cela signifie que le service n’a pas rechargé le nouveau certificat ou qu’il le lit à partir d’un chemin différent. Vérifiez :
- Les chemins TLS dans Postfix/Dovecot/Exim correspondent aux fichiers réels
- Vous avez redémarré le bon service (
systemctl restart postfix dovecot exim4) - Aucune instance, aucun conteneur ou aucun proxy ne sert l’ancien certificat.
Vous pouvez vérifier le certificat en direct en utilisant :
openssl s_client -connect mail.example.com:465 -servername mail.example.com
Derniers mots
Avec cette configuration, votre serveur de messagerie présente un certificat ACME commercial approprié aux clients SMTP et IMAP/POP3, tandis que acme.sh gère tranquillement les renouvellements en arrière-plan. Vous gardez le contrôle total de la chaîne de certificats et des noms de fichiers, vos utilisateurs ne voient plus d’avertissements de sécurité, et vous n’avez pas à vous connecter tous les deux mois pour télécharger de nouveaux fichiers à la main.
Une fois que vous l’avez fait une fois, vous pouvez répéter le même schéma pour d’autres noms d’hôtes, des serveurs MX secondaires ou des piles de courrier supplémentaires en utilisant le même compte ACME et la même procédure.
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

