1. Architecture d'un serveur mail : comprendre les composants
Un serveur mail n'est pas un logiciel unique - c'est un ensemble de pièces qui travaillent ensemble. Avant d'installer quoi que ce soit, il faut comprendre le rôle de chacune :
- Postfix (MTA - Mail Transfer Agent) : envoie et reçoit les e-mails entre serveurs. C'est la porte d'entrée/sortie de votre serveur mail.
- Dovecot (MDA - Mail Delivery Agent) : stocke les e-mails reçus et les met à disposition de vos clients mail (Thunderbird, Outlook, votre téléphone) via les protocoles IMAP et POP3.
- SPF (Sender Policy Framework) : un enregistrement DNS qui indique aux autres serveurs quels serveurs sont autorisés à envoyer des mails pour votre domaine.
- DKIM (DomainKeys Identified Mail) : une signature cryptographique ajoutée à chaque e-mail pour prouver qu'il vient bien de votre serveur.
- DMARC : une politique qui indique aux destinataires quoi faire si SPF ou DKIM échouent.
- Roundcube : un webmail open source - une interface web pour lire et envoyer vos mails depuis un navigateur, comme Gmail.
Flux d'un e-mail entrant :
Serveur distant → Postfix (port 25) → Dovecot → Boîte mail → Roundcube/IMAPFlux d'un e-mail sortant :
Roundcube → Postfix (port 587) → DKIM signature → Serveur distant2. Prérequis
Avant de commencer, assurez-vous d'avoir :
- Un VPS sous Debian 11/12 ou Ubuntu 22.04/24.04
- Un nom de domaine qui vous appartient (ex:
mondomaine.fr) - Accès à la gestion des DNS de ce domaine
- Le port 25 débloqué par votre hébergeur (demandez à CroustyCloud si ce n'est pas le cas - certains hébergeurs le bloquent par défaut contre le spam)
Le port 25 est souvent bloqué. La plupart des hébergeurs bloquent le port 25 (SMTP entrant) par défaut pour éviter que leur réseau soit utilisé pour du spam. Vérifiez auprès du support CroustyCloud avant de commencer.
3. Configurer le hostname du serveur
Votre serveur doit avoir un nom d'hôte (hostname) qui correspond à un enregistrement DNS valide. C'est fondamental - un serveur mail sans PTR record valide sera rejeté par la plupart des destinataires.
# Définir le hostname
hostnamectl set-hostname mail.mondomaine.fr
# Vérifier
hostname -fMettez à jour /etc/hosts :
nano /etc/hosts127.0.0.1 localhost
VOTRE-IP-VPS mail.mondomaine.fr mailDans votre interface DNS, créez ces enregistrements :
Type A : mail.mondomaine.fr → VOTRE-IP-VPS
Type MX : mondomaine.fr → mail.mondomaine.fr (priorité 10)Et demandez à CroustyCloud de configurer le PTR record (reverse DNS) de votre IP vers mail.mondomaine.fr. C'est indispensable.
Pourquoi le PTR record ? Quand votre serveur envoie un mail, le serveur destinataire vérifie que l'IP du serveur envoyeur correspond bien au domaine déclaré. Sans PTR record, vos mails seront systématiquement marqués comme spam ou rejetés.
4. Installer Postfix
apt update
apt install postfix -yL'installation lance un assistant de configuration. Répondez :
- Type de configuration : Site Internet
- Nom de messagerie du système : mondomaine.fr (sans le
mail.)
Si vous avez raté la configuration, relancez-la :
dpkg-reconfigure postfixEditez maintenant la configuration principale :
nano /etc/postfix/main.cfRemplacez tout le contenu par :
# Identité du serveur
smtpd_banner = $myhostname ESMTP
biff = no
myhostname = mail.mondomaine.fr
mydomain = mondomaine.fr
myorigin = $mydomain
# Domaines dont on gère le courrier
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# Réseau local autorisé à envoyer sans authentification
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
# Où stocker les mails
home_mailbox = Maildir/
mailbox_command =
# Relayage
relayhost =
relay_domains =
# Limites
message_size_limit = 52428800
mailbox_size_limit = 0
# TLS pour les connexions entrantes
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.mondomaine.fr/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.mondomaine.fr/privkey.pem
smtpd_tls_security_level = may
smtpd_tls_auth_only = yes
smtpd_tls_loglevel = 1
# TLS pour les connexions sortantes
smtp_tls_security_level = may
smtp_tls_loglevel = 1
# Authentification SASL (via Dovecot)
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
# Restrictions anti-spam
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination
smtpd_helo_restrictions =
permit_mynetworks,
reject_invalid_helo_hostname,
reject_non_fqdn_helo_hostname
# Aliases
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliasesConfigurez le fichier master.cf pour activer le port de soumission (587) utilisé par les clients mail :
nano /etc/postfix/master.cfDécommentez (retirez le #) les lignes du bloc submission :
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_tls_auth_only=yes
-o smtpd_reject_unlisted_recipient=no
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING5. Installer et configurer Dovecot
Dovecot gère le stockage des mails et l'authentification des utilisateurs.
apt install dovecot-core dovecot-imapd dovecot-pop3d -yConfiguration principale :
nano /etc/dovecot/dovecot.confprotocols = imap pop3
mail_privileged_group = mailConfiguration des emplacements de mails :
nano /etc/dovecot/conf.d/10-mail.confTrouvez et modifiez :
mail_location = maildir:~/MaildirConfiguration de l'authentification :
nano /etc/dovecot/conf.d/10-auth.confdisable_plaintext_auth = yes
auth_mechanisms = plain loginConfiguration du socket d'authentification partagé avec Postfix :
nano /etc/dovecot/conf.d/10-master.confTrouvez le bloc service auth et modifiez-le :
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}Configuration TLS pour Dovecot :
nano /etc/dovecot/conf.d/10-ssl.confssl = required
ssl_cert = </etc/letsencrypt/live/mail.mondomaine.fr/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.mondomaine.fr/privkey.pem6. Obtenir un certificat SSL
Votre serveur mail doit avoir un certificat SSL valide pour que les connexions soient chiffrées et acceptées par les autres serveurs.
apt install certbot -y
# Arrêter Nginx si installé (libère le port 80)
systemctl stop nginx
# Générer le certificat
certbot certonly --standalone -d mail.mondomaine.fr
# Relancer Nginx
systemctl start nginxLe certificat est valable 90 jours et se renouvelle automatiquement via un timer systemd.
7. Créer des utilisateurs mail
Sous Linux, chaque utilisateur système peut recevoir des mails. Créez un utilisateur pour chaque adresse :
# Créer l'utilisateur
adduser contact
# Entrez un mot de passe solide
# L'adresse mail sera contact@mondomaine.frCréez le dossier Maildir pour cet utilisateur :
mkdir -p /home/contact/Maildir/{cur,new,tmp}
chown -R contact:contact /home/contact/Maildir
chmod -R 700 /home/contact/Maildir8. Démarrer les services
# Recharger les alias Postfix
newaliases
# Démarrer et activer les services
systemctl restart postfix
systemctl restart dovecot
systemctl enable postfix
systemctl enable dovecot
# Vérifier que tout tourne
systemctl status postfix
systemctl status dovecotOuvrez les ports nécessaires dans UFW :
ufw allow 25/tcp # SMTP entrant
ufw allow 587/tcp # SMTP soumission (clients mail)
ufw allow 993/tcp # IMAPS (IMAP chiffré)
ufw allow 995/tcp # POP3S9. Configurer SPF, DKIM et DMARC
C'est l'étape la plus importante pour que vos mails n'arrivent pas en spam. Ces trois mécanismes sont devenus obligatoires en 2024 - Google et Yahoo les exigent pour tous les envois en masse.
SPF
Ajoutez cet enregistrement TXT dans votre DNS :
Type : TXT
Nom : mondomaine.fr (ou @)
Valeur: v=spf1 mx a ip4:VOTRE-IP-VPS ~allExplication :
v=spf1: version du protocolemx: autorise le serveur désigné par le MX à envoyera: autorise l'IP désignée par l'enregistrement Aip4:VOTRE-IP-VPS: autorise explicitement votre IP~all: les autres sont suspects (softfail)
DKIM
DKIM signe cryptographiquement vos mails. Installez opendkim :
apt install opendkim opendkim-tools -yCréez le répertoire et générez les clés :
mkdir -p /etc/opendkim/keys/mondomaine.fr
cd /etc/opendkim/keys/mondomaine.fr
# Générer la paire de clés (sélecteur "mail")
opendkim-genkey -b 2048 -d mondomaine.fr -s mail
# Changer le propriétaire
chown opendkim:opendkim mail.privateConfigurez opendkim :
nano /etc/opendkim.confDomain mondomaine.fr
KeyFile /etc/opendkim/keys/mondomaine.fr/mail.private
Selector mail
Socket local:/var/spool/postfix/opendkim/opendkim.sock
UMask 002
UserID opendkim
Syslog yes
LogWhy yes
Canonicalization relaxed/simple
OversignHeaders FromCréez le socket :
mkdir -p /var/spool/postfix/opendkim
chown opendkim:postfix /var/spool/postfix/opendkimAjoutez Postfix au groupe opendkim :
adduser postfix opendkimActivez DKIM dans Postfix (main.cf) :
nano /etc/postfix/main.cfAjoutez à la fin :
# DKIM
milter_protocol = 6
milter_default_action = accept
smtpd_milters = local:opendkim/opendkim.sock
non_smtpd_milters = $smtpd_miltersRécupérez votre clé publique DKIM pour la mettre dans votre DNS :
cat /etc/opendkim/keys/mondomaine.fr/mail.txtVous verrez quelque chose comme :
mail._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..." )Ajoutez cet enregistrement dans votre DNS :
Type : TXT
Nom : mail._domainkey.mondomaine.fr
Valeur: v=DKIM1; k=rsa; p=VOTRE-CLE-PUBLIQUEDMARC
Ajoutez cet enregistrement TXT dans votre DNS :
Type : TXT
Nom : _dmarc.mondomaine.fr
Valeur: v=DMARC1; p=quarantine; rua=mailto:dmarc@mondomaine.fr; pct=100; adkim=s; aspf=sExplication :
p=quarantine: mettre en spam si SPF/DKIM échouent (commencez parnonepour observer)rua=mailto:...: adresse qui reçoit les rapports DMARCadkim=s: alignement strict DKIMaspf=s: alignement strict SPF
Redémarrez tous les services :
systemctl restart opendkim postfix10. Installer Roundcube (webmail)
Roundcube est un webmail open source moderne qui vous permet de lire et envoyer vos mails depuis un navigateur.
apt install roundcube roundcube-mysql -yL'installeur vous demande :
- Configurer la base de données : Oui
- Mot de passe de la base de données : choisissez-en un fort
Configurez Roundcube pour votre serveur :
nano /etc/roundcube/config.inc.php
$config['default_host'] = 'ssl://mail.mondomaine.fr';
$config['default_port'] = 993;
$config['smtp_server'] = 'tls://mail.mondomaine.fr';
$config['smtp_port'] = 587;
$config['smtp_user'] = '%u';
$config['smtp_pass'] = '%p';
$config['product_name'] = 'Webmail MonDomaine';
$config['des_key'] = 'CHAINE-ALEATOIRE-24-CARACTERES';
$config['plugins'] = ['archive', 'zipdownload', 'managesieve'];Configurez Nginx pour servir Roundcube :
nano /etc/nginx/sites-available/webmail.mondomaine.frserver {
listen 80;
server_name webmail.mondomaine.fr;
root /var/lib/roundcube/public_html;
index index.php;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# Bloquer l'accès aux fichiers sensibles
location ~ ^/(config|temp|logs)/ {
deny all;
}
}apt install php-fpm -y
ln -s /etc/nginx/sites-available/webmail.mondomaine.fr /etc/nginx/sites-enabled/
nginx -t && nginx -s reload
# Générer le certificat SSL pour le webmail
certbot --nginx -d webmail.mondomaine.frAjoutez l'enregistrement DNS :
Type A : webmail.mondomaine.fr → VOTRE-IP-VPS11. Tester et vérifier
Test d'envoi
# Envoyer un mail de test en ligne de commande
echo "Test" | mail -s "Test serveur mail" votre@gmail.com
# Vérifier les logs Postfix
tail -f /var/log/mail.logTest de délivrabilité
Envoyez un mail à mail-tester.com (gratuit) - il analyse votre SPF, DKIM, DMARC et donne un score sur 10. Visez 10/10 avant de considérer votre serveur prêt pour la production.
Vérifier DKIM
# Tester la signature DKIM
opendkim-testkey -d mondomaine.fr -s mail -vvvVous devez voir key OK à la fin.
Vérifier SPF
Utilisez mxtoolbox.com/spf pour vérifier que votre enregistrement SPF est valide et bien propagé.
Votre IP est-elle dans une blacklist ? Si votre IP VPS a été utilisée précédemment pour du spam, elle est peut-être listée dans des RBL (blacklists). Vérifiez sur mxtoolbox.com/blacklists et demandez une délistage si nécessaire avant de lancer votre serveur mail.
12. Connexion depuis un client mail
Configurez Thunderbird, Outlook ou votre application mail mobile avec ces paramètres :
Serveur IMAP (réception)
Serveur : mail.mondomaine.fr
Port : 993
SSL : SSL/TLS
Serveur SMTP (envoi)
Serveur : mail.mondomaine.fr
Port : 587
SSL : STARTTLS
Identifiant : contact (votre nom d'utilisateur Linux)
Mot de passe: votre mot de passe LinuxVotre serveur mail est opérationnel. Accédez au webmail sur https://webmail.mondomaine.fr. Vérifiez régulièrement vos logs (tail -f /var/log/mail.log) et votre score sur mail-tester.com pour vous assurer que vos mails sont bien délivrés.