Créer son serveur mail avec Postfix et Dovecot
Guide pas à pas pour installer et configurer votre propre serveur mail sur Ubuntu avec Postfix, Dovecot, SSL et authentification email complète.
Créer son propre serveur mail avec Postfix et Dovecot : le guide complet
Avoir sa propre adresse email hébergée sur son serveur, c'est un peu comme posséder son propre bureau de poste. Plutôt que de confier tout votre courrier à Gmail ou Outlook, vous gardez le contrôle total sur vos messages, vos données et votre vie privée.
Dans ce tutoriel, on va monter un serveur mail fonctionnel de A à Z. Vous pourrez envoyer et recevoir des emails avec votre propre nom de domaine — du genre contact@monsite.fr — et tout ça en gardant la main dessus.
Ce dont vous avez besoin avant de commencer
Avant de se lancer, vérifiez que vous avez :
- Un VPS sous Ubuntu 22.04 ou 24.04 (chez OVH, Hetzner, Contabo... n'importe quel hébergeur fera l'affaire)
- Un nom de domaine que vous possédez (genre monsite.fr)
- Un accès root à votre serveur (via SSH)
- Un peu de patience — comptez environ 45 minutes pour tout mettre en place
Petite précision : certains hébergeurs bloquent le port 25 (celui qu'utilisent les serveurs mail) par défaut. Vérifiez auprès de votre fournisseur que le trafic SMTP sortant est autorisé, sinon vos mails ne partiront jamais.
Étape 1 : Configurer le DNS de votre domaine
Le DNS, c'est l'annuaire d'Internet. Quand quelqu'un envoie un mail à contact@monsite.fr, le système consulte vos enregistrements DNS pour savoir quel serveur doit recevoir ce message.
Rendez-vous dans le panneau de gestion DNS de votre registrar (l'endroit où vous avez acheté votre domaine) et ajoutez ces enregistrements :
Enregistrement A — Pointe votre sous-domaine mail vers votre serveur :
mail.monsite.fr. A 203.0.113.42Remplacez 203.0.113.42 par l'adresse IP réelle de votre VPS.
Enregistrement MX — Indique à Internet que votre serveur gère les mails pour monsite.fr :
monsite.fr. MX 10 mail.monsite.fr.Le chiffre 10, c'est la priorité. Si vous n'avez qu'un seul serveur mail, cette valeur n'a pas d'importance.
Reverse DNS (PTR) — Depuis le panneau de votre hébergeur VPS, configurez le reverse DNS de votre IP pour qu'il pointe vers mail.monsite.fr. Sans ça, beaucoup de serveurs refuseront vos mails en les considérant comme du spam.
Ces modifications DNS peuvent prendre de quelques minutes à 24 heures pour se propager. Vous pouvez vérifier avec :
## Vérifier que l'enregistrement A est bien en place
dig mail.monsite.fr A +short
## Vérifier l'enregistrement MX
dig monsite.fr MX +shortÉtape 2 : Préparer le serveur
Connectez-vous à votre VPS en SSH et commencez par mettre le système à jour :
## Mise à jour des paquets
sudo apt update && sudo apt upgrade -yEnsuite, configurez le hostname de votre serveur. Le hostname doit correspondre exactement à ce que vous avez mis dans le DNS :
## Définir le hostname
sudo hostnamectl set-hostname mail.monsite.frVérifiez aussi le fichier /etc/hosts :
## Ouvrir le fichier hosts
sudo nano /etc/hostsAjoutez cette ligne (adaptez l'IP) :
203.0.113.42 mail.monsite.fr mailÉtape 3 : Installer Postfix
Postfix, c'est le facteur. C'est lui qui se charge d'envoyer et de recevoir les mails (protocole SMTP). La version stable actuelle est la 3.11.1 (mars 2026).
## Installer Postfix
sudo apt install postfix -yPendant l'installation, un écran de configuration apparaît. Choisissez Internet Site et indiquez votre domaine : monsite.fr
Maintenant, on va ajuster la configuration de Postfix :
## Éditer la config principale de Postfix
sudo nano /etc/postfix/main.cfVoici les lignes importantes à vérifier ou modifier :
## Le hostname complet de votre serveur mail
myhostname = mail.monsite.fr
## Votre nom de domaine
mydomain = monsite.fr
## L'adresse d'expédition par défaut
myorigin = $mydomain
## Écouter sur toutes les interfaces réseau
inet_interfaces = all
## Utiliser IPv4 uniquement (évite des problèmes courants)
inet_protocols = ipv4
## Les domaines pour lesquels ce serveur accepte le courrier
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
## Stocker les mails au format Maildir (un fichier par mail)
home_mailbox = Maildir/
## Taille max des mails : 25 Mo
message_size_limit = 26214400
## Taille max de la boîte mail : 500 Mo
mailbox_size_limit = 524288000⚠️ Attention : la syntaxe dans ce fichier est sensible. Pas d'espace avant le signe = et un seul espace après.
Redémarrez Postfix pour appliquer les changements :
sudo systemctl restart postfixÉtape 4 : Installer Dovecot
Si Postfix est le facteur, Dovecot c'est la boîte aux lettres. Il permet à vos logiciels de messagerie (Thunderbird, l'app Mail de votre téléphone...) de consulter vos mails via le protocole IMAP.
## Installer Dovecot avec le support IMAP et l'authentification
sudo apt install dovecot-core dovecot-imapd dovecot-lmtpd -yConfigurez l'emplacement des mails :
## Éditer la configuration de Dovecot
sudo nano /etc/dovecot/conf.d/10-mail.confTrouvez la ligne mail_location et modifiez-la :
mail_location = maildir:~/MaildirActivez l'authentification par mot de passe :
sudo nano /etc/dovecot/conf.d/10-auth.confVérifiez ces lignes :
## Interdire l'authentification en clair (sans SSL)
disable_plaintext_auth = yes
## Mécanismes d'authentification
auth_mechanisms = plain loginConfigurez le socket d'authentification pour que Postfix puisse utiliser Dovecot :
sudo nano /etc/dovecot/conf.d/10-master.confDans le bloc service auth, ajoutez :
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}Redémarrez Dovecot :
sudo systemctl restart dovecotÉtape 5 : Sécuriser avec Let's Encrypt (SSL/TLS)
Envoyer des mails sans chiffrement, c'est comme envoyer des cartes postales : tout le monde peut lire le contenu. Let's Encrypt fournit un certificat SSL gratuit pour chiffrer les communications.
## Installer Certbot
sudo apt install certbot -y
## Générer le certificat pour votre domaine mail
sudo certbot certonly —standalone -d mail.monsite.fr⚠️ Pour que cette commande fonctionne, le port 80 doit être libre (aucun serveur web ne doit tourner dessus temporairement) et votre DNS doit déjà pointer vers le serveur.
Maintenant, configurez Postfix pour utiliser le certificat :
sudo nano /etc/postfix/main.cfAjoutez ces lignes :
## Activer TLS pour les connexions entrantes
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.monsite.fr/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.monsite.fr/privkey.pem
smtpd_use_tls = yes
smtpd_tls_security_level = may
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
## Activer TLS pour les connexions sortantes
smtp_tls_security_level = may
smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1Configurez aussi Dovecot pour le SSL :
sudo nano /etc/dovecot/conf.d/10-ssl.confModifiez ces lignes :
ssl = required
ssl_cert = </etc/letsencrypt/live/mail.monsite.fr/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.monsite.fr/privkey.pem
ssl_min_protocol = TLSv1.2Activez le port de soumission SMTP sécurisé (587) :
sudo nano /etc/postfix/master.cfDécommentez et ajoutez :
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth
-o smtpd_reject_unlisted_recipient=no
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATINGRedémarrez les deux services :
sudo systemctl restart postfix dovecotÉtape 6 : Créer un compte mail
On va créer un utilisateur système qui servira de compte mail :
## Créer l'utilisateur (remplacez 'contact' par le nom souhaité)
sudo adduser contactL'adresse email sera contact@monsite.fr. Le mot de passe que vous définissez servira pour la connexion IMAP et SMTP.
Créez le dossier Maildir pour cet utilisateur :
sudo -u contact mkdir -p /home/contact/Maildir/{new,cur,tmp}Étape 7 : Configurer SPF, DKIM et DMARC
Ces trois mécanismes prouvent aux autres serveurs que vos mails sont légitimes. Sans eux, vos messages finiront probablement dans les spams.
SPF (Sender Policy Framework)
Ajoutez un enregistrement DNS TXT pour votre domaine :
monsite.fr. TXT "v=spf1 mx a -all"Ca dit en gros : "Seuls les serveurs listés dans mon MX et mon A ont le droit d'envoyer des mails pour monsite.fr."
DKIM (DomainKeys Identified Mail)
DKIM ajoute une signature cryptographique à chaque mail. C'est comme un sceau de cire numérique.
## Installer OpenDKIM
sudo apt install opendkim opendkim-tools -y
## Créer le dossier pour les clés
sudo mkdir -p /etc/opendkim/keys/monsite.fr
## Générer la paire de clés
sudo opendkim-genkey -s mail -d monsite.fr -D /etc/opendkim/keys/monsite.fr
## Donner les bons droits
sudo chown -R opendkim:opendkim /etc/opendkim/keys/Affichez la clé publique à ajouter dans vos DNS :
sudo cat /etc/opendkim/keys/monsite.fr/mail.txtCopiez le contenu et créez un enregistrement DNS TXT :
mail._domainkey.monsite.fr. TXT "v=DKIM1; k=rsa; p=VOTRE_CLE_PUBLIQUE_ICI"Configurez OpenDKIM :
sudo nano /etc/opendkim.confAjoutez :
AutoRestart Yes
AutoRestartRate 10/1h
SyslogSuccess Yes
LogWhy Yes
Canonicalization relaxed/simple
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
KeyTable refile:/etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
Mode sv
PidFile /var/run/opendkim/opendkim.pid
SignatureAlgorithm rsa-sha256
UserID opendkim:opendkim
Socket inet:12301@localhostCréez les fichiers de mapping :
## Fichier TrustedHosts
sudo bash -c 'cat > /etc/opendkim/TrustedHosts << EOF
127.0.0.1
localhost
monsite.fr
mail.monsite.fr
EOF'
## Fichier KeyTable
sudo bash -c 'echo "mail._domainkey.monsite.fr monsite.fr:mail:/etc/opendkim/keys/monsite.fr/mail.private" > /etc/opendkim/KeyTable'
## Fichier SigningTable
sudo bash -c 'echo "*@monsite.fr mail._domainkey.monsite.fr" > /etc/opendkim/SigningTable'Connectez OpenDKIM à Postfix. Ajoutez dans /etc/postfix/main.cf :
sudo nano /etc/postfix/main.cf## Configuration DKIM
milter_protocol = 6
milter_default_action = accept
smtpd_milters = inet:localhost:12301
non_smtpd_milters = inet:localhost:12301Redémarrez :
sudo systemctl restart opendkim postfixDMARC
Ajoutez un enregistrement DNS TXT :
_dmarc.monsite.fr. TXT "v=DMARC1; p=quarantine; rua=mailto:postmaster@monsite.fr; fo=1"Étape 8 : Ouvrir les ports du pare-feu
Si vous utilisez UFW (le pare-feu d'Ubuntu) :
## SMTP entrant
sudo ufw allow 25/tcp
## Submission (envoi sécurisé)
sudo ufw allow 587/tcp
## IMAPS (consultation sécurisée)
sudo ufw allow 993/tcp
## Vérifier les règles
sudo ufw statusÉtape 9 : Tester votre serveur mail
Envoyez un mail de test depuis le serveur :
## Installer mailutils si pas déjà fait
sudo apt install mailutils -y
## Envoyer un mail de test
echo "Mon serveur mail fonctionne !" | mail -s "Test" votre-adresse@gmail.comVérifiez la réception. Si le mail arrive dans les spams, c'est normal pour le premier envoi. Les enregistrements SPF, DKIM et DMARC mettent parfois quelques heures à se propager.
Pour vérifier que tout est bien configuré côté authentification :
## Tester la connexion IMAP
openssl s_client -connect mail.monsite.fr:993Vous pouvez aussi utiliser le site mail-tester.com : envoyez un mail à l'adresse qu'ils vous donnent et vous aurez un score de délivrabilité.
Configurer un client mail
Dans Thunderbird, l'app Mail de votre téléphone ou tout autre client :
- Serveur entrant (IMAP) : mail.monsite.fr, port 993, SSL/TLS
- Serveur sortant (SMTP) : mail.monsite.fr, port 587, STARTTLS
- Nom d'utilisateur : contact (le nom du compte créé)
- Mot de passe : celui défini à la création du compte
Le renouvellement automatique du certificat
Les certificats Let's Encrypt expirent tous les 90 jours. Ajoutez un cron pour le renouvellement automatique :
## Ouvrir le crontab
sudo crontab -e
## Ajouter cette ligne (renouvellement chaque lundi à 3h du matin)
0 3 * * 1 certbot renew —post-hook "systemctl restart postfix dovecot"Les pièges à éviter
Quelques erreurs fréquentes qui peuvent bloquer :
- Port 25 bloqué par l'hébergeur : contactez le support pour demander l'ouverture. Certains hébergeurs refusent (pour lutter contre le spam).
- Reverse DNS mal configuré : le PTR doit pointer vers mail.monsite.fr, pas vers un hostname générique.
- Pas de patience avec le DNS : les modifications DNS peuvent prendre jusqu'à 24 heures. Avant de paniquer, attendez.
- Oublier le dossier Maildir : si les mails n'arrivent pas, vérifiez que le dossier existe bien pour chaque utilisateur.
Pour aller plus loin
Ce tutoriel met en place un serveur mail fonctionnel et sécurisé, mais il y a des améliorations possibles : installer un webmail comme Roundcube, ajouter un antispam avec SpamAssassin, ou gérer les utilisateurs avec des boîtes virtuelles. On verra ça dans la version technique de ce guide.
Héberger ses propres mails demande de la maintenance, c'est vrai. Mais la satisfaction d'avoir le contrôle total sur sa messagerie, ça n'a pas de prix.
À lire aussi
Serveur mail Postfix + Dovecot : config avancée et hardening
Configuration complète et sécurisée d'un serveur mail Postfix 3.11 + Dovecot sur Ubuntu : TLS, DKIM, DMARC, antispam, virtual mailboxes et scripts d'automatisation.
NAS Synology DSM 7 : configuration avancée et sécurisation
Configuration complète d'un NAS Synology sous DSM 7 : RAID, accès SSH, certificat SSL, fail2ban, Hyper Backup et accès VPN sécurisé.
Configurer un NAS Synology : guide complet débutant
Vous venez d'acheter un NAS Synology et vous ne savez pas par où commencer ? Ce guide vous accompagne pas à pas pour le configurer en moins d'une heure.