Serveur de messagerie · 4 min read · Sep 08, 2025

Sécuriser votre serveur de messagerie géré par ISPConfig 3 avec un certificat SSL Let's Encrypt valide

Si vous exécutez votre propre serveur de messagerie, il est préférable de vous y connecter de manière sécurisée avec une connexion SSL/TLS. Vous aurez besoin d’un certificat valide pour ces connexions sécurisées. Dans ce tutoriel, nous allons configurer un certificat Let’s Encrypt pour notre serveur de messagerie qui se renouvelle automatiquement.

Avertissement : Ce tutoriel est basé sur ce tutoriel : https://www.howtoforge.com/tutorial/securing-ispconfig-3-with-a-free-lets-encrypt-ssl-certificate/ mais modifié pour que vous ayez un certificat séparé pour votre serveur de messagerie et votre panneau de contrôle. Si vous avez suivi ce tutoriel auparavant, celui-ci pourrait casser votre configuration.

Ce tutoriel utilise des certificats délivrés par acme.sh. Si vous utilisez certbot, suivez plutôt ce tutoriel : https://www.howtoforge.com/community/threads/securing-your-ispconfig-3-managed-mailserver-with-a-valid-lets-encrypt-ssl-certificate-certbot.86372/

Note pour ISPConfig 3.2 : ISPConfig 3.2 est capable de créer automatiquement un certificat SSL Let’s Encrypt valide pour le nom d’hôte du serveur lors de l’installation, qui est également utilisé pour le serveur de messagerie. Il n’est pas nécessaire de créer manuellement un certificat SSL Let’s Encrypt comme décrit ici sur les systèmes ISPConfig 3.2, sauf si vous avez besoin de noms de domaine différents dans le certificat SSL en plus du nom d’hôte du serveur.

Prérequis

  • Votre serveur doit être installé selon le tutoriel Perfect Server pour votre système d’exploitation.
  • Assurez-vous d’être connecté en tant qu’utilisateur root.

Pour commencer

Je vais utiliser les noms d’hôte suivants pour mon serveur de messagerie : mail.example.com, smtp.example.com, imap.example.com.

Remplacez tous les noms d’hôte soulignés en rouge dans ce tutoriel par les vôtres.

Créez les enregistrements DNS pour votre(s) nom(s) d’hôte, afin qu’ils pointent vers votre serveur. Ceux-ci devraient être des enregistrements A (et éventuellement AAAA). Ensuite, dans l’interface ISPConfig, allez dans l’onglet Sites.

Délivrance du certificat

Sous Sites, cliquez sur “Ajouter un nouveau site web”. Définissez mail.example.com comme domaine. Désactivez Auto-Subdomain et cochez la case Let’s Encrypt.

Après cela, vous pouvez ajouter vos autres noms d’hôte en tant que domaines alias, en allant dans la liste des alias de domaine et en cliquant sur “Ajouter un nouveau domaine alias”. Sélectionnez smtp.example.com comme domaine et mail.example.com comme site parent. Désactivez Auto-Subdomain et enregistrez le nouvel enregistrement. Répétez cela pour vos autres noms d’hôte éventuels.

Vérifiez que le certificat est en place. Vous pouvez le faire avec un outil comme https://www.sslshopper.com/ssl-checker.html

Cela devrait ressembler à ceci :

Capture d'écran de la vérification SSL

Si le(s) nom(s) d’hôte sont listés et qu’il n’y a pas d’autres erreurs, vous pouvez continuer. Sinon, vérifiez les erreurs et résolvez-les avant de continuer.

Remplacer le certificat par le certificat Let’s Encrypt

Maintenant, nous pouvons remplacer le certificat actuel par votre certificat de confiance. Connectez-vous à votre serveur et exécutez ces commandes :

(remplacez mail.example.com par le nom d’hôte que vous avez utilisé pour le site web)

cd /etc/postfix/  
mv smtpd.cert smtpd.cert-$(date +"%y%m%d%H%M%S").bak  
mv smtpd.key smtpd.key-$(date +"%y%m%d%H%M%S").bak  
ln -s /var/www/mail.example.com/ssl/mail.example.com-le.crt smtpd.cert  
ln -s /var/www/mail.example.com/ssl/mail.example.com-le.key smtpd.key  
systemctl restart postfix  
systemctl restart dovecot

Le certificat devrait maintenant être utilisé pour votre serveur Postfix et Dovecot. Mais nous n’avons pas encore terminé ! Le certificat Let’s Encrypt se renouvelle tous les 60 jours, donc nous devrions automatiser le processus de remplacement du certificat à l’avenir, afin que vous ne puissiez pas l’oublier.

Nœuds multiserveurs sans interface ISPConfig

Si c’est un nœud sans interface graphique dans une configuration multiserveur ISPConfig, vous devez maintenant vérifier si ISPConfig lui-même a un certificat SSL. Ne faites pas cette étape sur une configuration de serveur unique ou un serveur qui exécute une interface graphique ISPConfig.

Vous pouvez faire le test avec les commandes ls suivantes :

cd /usr/local/ispconfig/interface/ssl/  
ls ispserver.crt  
ls ispserver.key

Le résultat ressemblera à ceci s’il y a déjà un certificat :

root@server:/usr/local/ispconfig/interface/ssl# ls ispserver.crt  
ispserver.crt  
root@server:/usr/local/ispconfig/interface/ssl# ls ispserver.key  
ispserver.key

Si les deux commandes ls ne renvoient pas les fichiers ispserver.crt et ispserver.key, alors créez-les en tant que liens symboliques vers le certificat Let’s Encrypt comme ceci :

ln -s /var/www/mail.example.com/ssl/mail.example.com-le.cer ispserver.crt  
ln -s /var/www/mail.example.com/ssl/mail.example.com-le.key ispserver.key

Configurer un script de renouvellement automatique

Ouvrez un nouveau fichier de script :

nano /usr/local/bin/le_mailserver_restart.sh

Collez ceci dans ce fichier :

#!/bin/sh  
### BEGIN INIT INFO  
# Provides: LE MAILSERVER CERT AUTO UPDATER  
# Required-Start: $local_fs $network  
# Required-Stop: $local_fs  
# Default-Start: 2 3 4 5  
# Default-Stop: 0 1 6  
# Short-Description: LE MAILSERVER CERT AUTO UPDATER  
# Description: Redémarre le serveur de messagerie automatiquement lorsqu'un nouveau certificat Let's Encrypt est délivré.  
### END INIT INFO  
systemctl restart postfix  
systemctl restart dovecot

Rendez le script exécutable :

chmod +x /usr/local/bin/le_mailserver_restart.sh

Pour déclencher automatiquement ce script lors du renouvellement, nous allons utiliser systemd.

Créez et ouvrez le nouveau service systemd :

nano /etc/systemd/system/le-mailserver-restart.service

Collez ceci dans ce fichier :

[Unit]   
Description="Exécuter le script pour redémarrer Postfix et Dovecot après le renouvellement du certificat"  
  
[Service]  
ExecStart=/usr/local/bin/le_mailserver_restart.sh

Enregistrez et fermez ce fichier. Ensuite, créez et ouvrez le nouveau fichier de chemin systemd :

nano /etc/systemd/system/le-mailserver-restart.path

Collez ceci dans ce fichier et remplacez mail.example.com par le nom d’hôte que vous avez utilisé :

[Unit]  
Description="Surveiller les fichiers de certificat du serveur de messagerie pour déclencher un redémarrage des services de messagerie après le renouvellement des certificats"  
  
[Path]  
PathModified=/var/www/mail.example.com/ssl/  
Unit=le-mailserver-restart.service  
  
[Install]  
WantedBy=multi-user.target

Enregistrez et fermez ce fichier. Ensuite, démarrez le service et activez-le pour qu’il s’exécute au démarrage :

systemctl start le-mailserver-restart.path

Et activez-le pour qu’il s’exécute au démarrage :

systemctl enable le-mailserver-restart.path

Et nous avons terminé !

Ça ne fonctionne pas ?

J’ai eu un problème avec cela, car Let’s Encrypt a utilisé l’un des domaines alias comme domaine principal. Vous pouvez trouver le domaine principal dans l’outil SSL mentionné précédemment comme “Nom commun” ou en listant le contenu de /root/acme.sh/ pour voir lequel des (alias) domaines a un dossier là-bas.

Si vous rencontrez toujours un problème, ouvrez un fil sur le forum afin que d’autres puissent vous aider.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.