Call-Informatique
Call-Informatique
Le média tech
Créer son serveur mail avec Postfix et Dovecot
InformatiqueGuides11 min de lecture

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 :

terminal
mail.monsite.fr.    A    203.0.113.42

Remplacez 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 :

terminal
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 :

bash
## 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 :

bash
## Mise à jour des paquets
sudo apt update && sudo apt upgrade -y

Ensuite, configurez le hostname de votre serveur. Le hostname doit correspondre exactement à ce que vous avez mis dans le DNS :

bash
## Définir le hostname
sudo hostnamectl set-hostname mail.monsite.fr

Vérifiez aussi le fichier /etc/hosts :

bash
## Ouvrir le fichier hosts
sudo nano /etc/hosts

Ajoutez cette ligne (adaptez l'IP) :

terminal
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).

bash
## Installer Postfix
sudo apt install postfix -y

Pendant 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 :

bash
## Éditer la config principale de Postfix
sudo nano /etc/postfix/main.cf

Voici les lignes importantes à vérifier ou modifier :

terminal
## 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 :

bash
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.

bash
## Installer Dovecot avec le support IMAP et l'authentification
sudo apt install dovecot-core dovecot-imapd dovecot-lmtpd -y

Configurez l'emplacement des mails :

bash
## Éditer la configuration de Dovecot
sudo nano /etc/dovecot/conf.d/10-mail.conf

Trouvez la ligne mail_location et modifiez-la :

terminal
mail_location = maildir:~/Maildir

Activez l'authentification par mot de passe :

bash
sudo nano /etc/dovecot/conf.d/10-auth.conf

Vérifiez ces lignes :

terminal
## Interdire l'authentification en clair (sans SSL)
disable_plaintext_auth = yes

## Mécanismes d'authentification
auth_mechanisms = plain login

Configurez le socket d'authentification pour que Postfix puisse utiliser Dovecot :

bash
sudo nano /etc/dovecot/conf.d/10-master.conf

Dans le bloc service auth, ajoutez :

terminal
service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }
}

Redémarrez Dovecot :

bash
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.

bash
## 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 :

bash
sudo nano /etc/postfix/main.cf

Ajoutez ces lignes :

terminal
## 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.1

Configurez aussi Dovecot pour le SSL :

bash
sudo nano /etc/dovecot/conf.d/10-ssl.conf

Modifiez ces lignes :

terminal
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.2

Activez le port de soumission SMTP sécurisé (587) :

bash
sudo nano /etc/postfix/master.cf

Décommentez et ajoutez :

terminal
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=ORIGINATING

Redémarrez les deux services :

bash
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 :

bash
## Créer l'utilisateur (remplacez 'contact' par le nom souhaité)
sudo adduser contact

L'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 :

bash
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 :

terminal
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.

bash
## 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 :

bash
sudo cat /etc/opendkim/keys/monsite.fr/mail.txt

Copiez le contenu et créez un enregistrement DNS TXT :

terminal
mail._domainkey.monsite.fr.    TXT    "v=DKIM1; k=rsa; p=VOTRE_CLE_PUBLIQUE_ICI"

Configurez OpenDKIM :

bash
sudo nano /etc/opendkim.conf

Ajoutez :

terminal
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@localhost

Créez les fichiers de mapping :

bash
## 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 :

bash
sudo nano /etc/postfix/main.cf
terminal
## Configuration DKIM
milter_protocol = 6
milter_default_action = accept
smtpd_milters = inet:localhost:12301
non_smtpd_milters = inet:localhost:12301

Redémarrez :

bash
sudo systemctl restart opendkim postfix

DMARC

Ajoutez un enregistrement DNS TXT :

terminal
_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) :

bash
## 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 :

bash
## 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.com

Vé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 :

bash
## Tester la connexion IMAP
openssl s_client -connect mail.monsite.fr:993

Vous 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 :

bash
## 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.

Sur le même sujet

À lire aussi

#tutoriel#serveur mail#postfix#dovecot#ubuntu