Tutoriels

Installer un certificat Let’s Encrypt sur Postfix/Dovecot

Let’s Encrypt est lancé depuis plus d’un moins maintenant en Beta publique. Certains, comme moi, ont déjà sauté le pas vers ce fournisseur de certificats gratuit. Pour rappel, le but de Let’s Encrypt est de fournir des certificats SSL gratuitement pour tout le monde pour que le chiffrement devienne un standard du web.

Dans ce mini tutoriel, nous allons voir ensemble comment procéder à la génération d’un certificat et à son installation sur le serveur mail fonctionnant à l’aide du duo Postfix/Dovecot.

Téléchargement de Let’s Encrypt

Avant de générer le certificat, il nous faut d’abord télécharger les fichiers nécessaires à la génération de certificats sur le dépot Github de Let’s Encrypt.

cd /tmp
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt

Génération du certificat

Pour cela rien de plus simple, il y a juste une commande à taper en n’oubliant pas de modifier mail.domaine.tld par votre nom de domaine et l’adresse mail par votre adresse mail.

./letsencrypt-auto certonly --rsa-key-size 4096 -d mail.domain.tld --email [email protected] --agree-tos

Installation dans Postfix

Pour que votre serveur smtp prenne en charge le certificat précédemment généré, il vous faut modifier le fichier de configuration principal de Postfix.

Pour cela, tapez la commande suivante :

vim /etc/postfix/main.cf

Localisez et modifiez ces trois lignes:

smtp_tls_CAfile = /etc/letsencrypt/live/mail.domain.tld/chain.pem
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.domain.tld/cert.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.domain.tld/privkey.pem

Installation dans Dovecot

Pour l’Imap et le POP3, il vous faut modifier le ficher contenant les paramètres SSL de Dovecot. On va entrer la commande :

vim /etc/dovecot/conf.d/10-ssl.conf

Localisez et modifiez les lignes suivantes :

ssl_cert = /etc/letsencrypt/live/mail.domain.tld/fullchain.pem
ssl_key = /etc/letsencrypt/live/mail.domain.tld/privkey.pem

Dernière étape

Il ne reste plus qu’à redémarrer Postfix et Dovecot pour qu’ils prennent en charge la nouvelle configuration.

Voilà, votre serveur mail est configuré avec un certificat ssl reconnu par les applications et les serveurs web sans vous afficher d’erreur de certificat invalide (si vous utilisiez un certificat auto-signé).

PS : Si vous avez des questions ou des commentaires, n’hésitez pas, ça se fait en dessous de cet article.

Related posts

LSCI #2 : sauvegarder WordPress avec UpdraftPlus

Edouard Patout

Tuto : Utiliser Searx sur Android

Edouard Patout

LSCI #4 : synchroniser et sauvegarder avec NextCloud

Edouard Patout

35 comments

Chipie678 5 janvier 2016 at 14 h 13 min

Merci beaucoup cela m’as été super utile c’est ce que je cherchais depuis 2 jours :p

Reply
Julien Doclot 5 janvier 2016 at 23 h 15 min

Ravis que ça aie pu t’aider!

Reply
xave 17 février 2016 at 11 h 52 min

Merci pour l’info sur Postfix. À noter que je me suis arraché les cheveux sur une erreur de chaîne jusqu’à ce que je me rende compte que smtpd_tls_CAfile fonctionne bien mieux que smtp_tls_CAfile. Si ce petit ‘d’ peut en aider d’autres…

Reply
Julien Doclot 26 février 2016 at 18 h 48 min

Malheureusement, je n’ai pas testé, mais merci pour l’info 🙂

Reply
Arnoux Jeremy 4 mars 2016 at 17 h 29 min

Bonjour, Merci pour ce petit tutoriel sympa 🙂
Petite question:
Je suis sur webmin donc j ai plusieurs domaines et adresses mails sur mon serveur.
J utilisé postfix/courier/saslauth
Donc faut il créer un seul certificat contenant toutes mes adresses mails et domaines ? (Ce serait un peu contraignant lorsque j ajoute une adresse mail)
Merci pour votre/vos reponses

Reply
Julien Doclot 4 mars 2016 at 20 h 52 min

Bonjour,
Non, en général, l’adresse de ton serveur est mail.domain.tld mais n’utilise qu’un seul domaine et donc un seul certificat. Ensuite tu peux ajouter des autres domaines sur ce serveur mail tout en gardant la meme adresse de serveur au départ.

Reply
Arnoux Jeremy 5 mars 2016 at 9 h 06 min

Merci pour votre réponse rapide 🙂
Je vais essayer de trouver une solution et je reviendrai fournir la réponse ici.
Dans mon cas, chaque client mail ce connecte via son domaine. Mail.domaine 1.com /[email protected]…..com etc
Mail.domaine2.com / [email protected]……com etc
Faut etre carré au niveau des mails pour ne pas être pris pour un spammeur. (Catastrophique quand ça arrive).
Si quelqu un à une solution je suis preneur.
Bonne journée à tous !!!

Reply
Julien Doclot 5 mars 2016 at 10 h 39 min

Pour effectuer ca, le plus facile est de faire un cname de mail.domaine2.com vers mail.domaine1.com.

En espérant que ça aide.

Reply
Arnoux Jeremy 5 mars 2016 at 12 h 50 min

Ok je vais tester ça lundi et je vous tiens au courant. Merci 🙂

Julien Doclot 5 mars 2016 at 14 h 03 min

Pas de soucis 🙂

Anonyme 20 octobre 2016 at 14 h 15 min

4

Reply
geronimo 20 octobre 2016 at 14 h 17 min

Merci!
J’avais un problème de certificat sous Thunderbird, alors que je l’avais bien créé avec letsencrypt…j’ai suivi ton tuto, ça fonctionne impec’

Reply
Julien Doclot 20 octobre 2016 at 19 h 25 min

De rien,

Content de voir que les tutoriels peuvent toujours servir!

Reply
Michael 31 octobre 2016 at 14 h 59 min

petite question, Est-ce possible de faire du renouvèlement automatique avec cette méthode ?

Reply
Julien Doclot 1 novembre 2016 at 11 h 46 min

Bonjour,

Oui tout à fait. Essaye avec cette commande dans un cron : /opt/letsencrypt/letsencrypt-auto renew

Reply
Nicolas 23 novembre 2016 at 19 h 36 min

Bonjour,

Faut il faire écouter mail.domain.tld sur le port 80 le temps de la vérification par letsencrypt?

Actuellement j’essaye d’ajouter le domaine domain.tld, mais les clients mails ne sont pas d’accord car ils attaquent mail.domain.tld.

Seulement quand je fais: ./certbot-auto certonly –manual -d s123.domain1.tld -d mail.domain.tld, la vérification de mail.domain.tld ne peut être faite car il attend l’URL http://mail.domain.tld/.well….., or il s’agit soit de smtp ou de imap. Du coup je suis un peu perdu.

Merci de votre aide

Reply
Julien Doclot 23 novembre 2016 at 20 h 32 min

Bonjour,

Oui, il faudrait faire écouter temporairement votre serveur mail sur le port 80. Le miens le fait car postfixadmin est installé dessus.

Je dirais même que le mieux est de laisser le 80 ouvert pour que les renouvellements puissent se faire.

Reply
Nicolas 23 novembre 2016 at 20 h 42 min

Bonsoir,

Merci pour votre réponse rapide. Je ne suis pas certain d’avoir bien saisi. Je vais reformuler pour être certain:
– J’ai mon serveur sur lequel est installé postfix et dovecot qui s’appelle s123.domain1.tld
– J’ai le domaine domain.tld qui a dans sa zone DNS une entrée mail.domain.tld qui pointe sur L’IP de s123.domain1.tld
– Mon certificat SSL fait comme ceci: ./certbot-auto certonly –manual -d s123.domain1.tld -d mail.domain.tld me demande de vérifier la propriété de s123.domain1.tld, mon serveur de mail et mail.domain.tld
– J’ai pu valider s123.domain1.tld car en effet je peux faire écouter un serveur web sur le port 80
– Je ne peux pas valider mail.domain.tld car il s’agit d’un MX et je ne peux pas faire écouter temporairement ce domaine sur un port 80 d’une machine, au risque de perturber le fonctionnement du service mail de ce domaine.

En fait j’ai des vHosts pour les mails, comment alors créer le certif SSL dans ce cas précis afin que les différents domaines soient couverts par le certif du serveur de mails?

Cordialement.

Reply
Julien Doclot 23 novembre 2016 at 22 h 55 min

Pourquoi ne pas tout simplement ajouter un enregistrement cname ou faire une redirection de mail.domain.tld vers s123.domain1.tld ?

Reply
Nicolas 24 novembre 2016 at 9 h 03 min

Hello,
En effet, c’est une très bonne idée. Je vais tester cela et faire un retour.
Merci !

Nicolas 24 novembre 2016 at 18 h 24 min

Bonsoir,
J’ai mis un cname comme suit: mail.domain.tld CNAME s123.domain1.tld dans la zone DNS de domain.tld, mais ça ne change rien. Thunderbird me dit toujours que le certificat letsencrypt s123.domain1.tld n’est pas secure, avec le message: This certificate belongs to a different site… Du coup j’en déduit qu’il ne prend pas en compte le CNAME ?
Merci

Julien Doclot 24 novembre 2016 at 20 h 14 min

Est ce que tu as la possibilité de faire simplement une redirection 301 de mail.domain.tld vers s123.domain1.tld ?

Nicolas 25 novembre 2016 at 11 h 12 min

Hello,
Le problème semble venir du fait que la zone DNS ne prend pas en compte le CNAME j’ai l’impression… le dig sur mail.domain.tld me dit toujours qu’il s’agit d’un enregistrement A et non CNAME. Je n’arrive pas à comprendre pourquoi.
Merci.

Julien Doclot 25 novembre 2016 at 18 h 32 min

Tu es chez quel registar ?

Nicolas 28 novembre 2016 at 15 h 22 min

Hello, désolé du retard, je ne reçois pas les notifs en cas de réponse. Je suis chez OVH. J’ai regardé la RFC1912 section 2.6, il est dit que: « A CNAME record is not allowed to coexist with any other data ». ce qui signifie que mail.domain.tld est MX du domaine. Il ne peut donc pas être CNAME de s123.domain1.tld.
OVH accepte pourtant cet enregistrement et au dig il me dit toujours qu’il s’agit d’un A vers l’IP de s123.domain1.tld…

Je ne sais donc pas comment paramétrer proprement le CNAME.

Cordialement,
Nicolas

Julien Doclot 29 novembre 2016 at 23 h 52 min

Hello, la case de notification des nouvelles réponses est elle bien cochée?

Car si elle l’est, je vais devoir investiguer ça.

Pour ce qui est de tes enregistrements, j’analyse un peu ça de mon côté et je te tiens au courant.

Julien,

Nicolas 30 novembre 2016 at 9 h 53 min

Hello,
En effet, la case « Notifier des nouvelles réponses à ce commentaire » est bien cochée. Je reçois d’ailleurs systématiquement un mail de confirmation à chaque fois. Mais que je clique sur « Confirmer votre abonnement » ou pas, n’y change rien.

Merci pour les enregistrements.
Nico

Julien Doclot 2 décembre 2016 at 20 h 17 min

Hello,

Donc, dès que je réponds à ton commentaire, tu n’as pas de notification? Cela m’embête fortement si c’est le cas….

Merci pour tes réponses

chacha 6 décembre 2016 at 9 h 44 min

salut,
merci pour le tuto
le certificat a une durée de validité de 90 jours. comment pourrions-nous le renouveler?

Reply
Julien Doclot 10 décembre 2016 at 11 h 48 min

Salut,

Il faut mettre la commande letsencrypt-auto renew dans un crontab.

Reply
Gaboury 5 mars 2017 at 11 h 12 min

Je ne sais pourquoi, mais sur mon OS, archlinux, la syntaxe pour le fichier /etc/dovecot/conf.d/10-ssl.conf est différente de la tienne.

ssl_key = </etc/letsencrypt/live/mail.domain.tld/privkey.pem

Sans le inférieur, dovecot me renvoie une erreur sur le certificat SSL

Reply
Christophe 16 janvier 2018 at 19 h 56 min

Merci, c’est clair et efficace.

Reply
Julien Doclot 16 janvier 2018 at 19 h 56 min

Merci beaucoup

Reply
fredo 15 juin 2018 at 10 h 12 min

Super, génial.
Merci

A la faute d’orthographe prêt, c’est tout bon. Et tellement plus propre.

Reply
gege_go 18 juin 2018 at 18 h 07 min

Bonjour,
à chaque mail créé, tu est obliger de refaire un certificat?

Reply

Leave a Comment

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More