Learning Center
Services Webmail

Comment configurer votre propre serveur de messagerie

27 oct. 2025
Hostman Team
Hostman Team

Un serveur de messagerie est un système qui gère l’acheminement correct des e-mails entre l’expéditeur et le destinataire. Par exemple, lorsque vous envoyez un e-mail via Gmail, vous utilisez le serveur de messagerie de Google.

Un client de messagerie est, lui, un programme permettant de lire, d’envoyer et d’archiver des e-mails (p. ex. Microsoft Outlook, Thunderbird, etc.).

Protocoles de réception et d’envoi d’e-mails
Copier le lien

SMTP (Simple Mail Transfer Protocol)
Copier le lien

Le serveur de courrier sortant utilise SMTP (Simple Mail Transfer Protocol). Ses fonctions principales sont :

  • Vérifier la configuration de l’expéditeur et autoriser l’envoi du message.

  • Transmettre le message et recevoir le code de réponse.

Les serveurs SMTP utilisent les ports 25 (non chiffré) et 465 (chiffré).

POP3 (Post Office Protocol)
Copier le lien

POP3 est un protocole de réception. Le client se connecte au serveur et télécharge le message en local, ce qui permet une consultation hors ligne. Par défaut, le message est supprimé du serveur après téléchargement (on peut toutefois conserver une copie).

Ports utilisés : 110 (non chiffré) et 995 (chiffré SSL/TLS).

IMAP (Internet Message Access Protocol)
Copier le lien

Comme POP3, IMAP sert à recevoir les e-mails, mais permet de gérer les messages directement sur le serveur, sans les télécharger. C’est idéal pour accéder à sa boîte depuis plusieurs appareils.

Ports utilisés : 143 (non chiffré) et 993 (chiffré SSL/TLS).

Pourquoi mettre en place son propre serveur mail ?
Copier le lien

La réponse la plus fréquente :

« Pour utiliser mon propre domaine dans l’adresse e-mail. »

C’est vrai, mais inutile de déployer un serveur pour ça : de nombreux services permettent de lier votre domaine à leurs serveurs. Avantage : ils fournissent déjà un SMTP configuré (redirections, antispam, etc.). Vous n’avez alors qu’à régler les enregistrements NS (Name Server), bien plus simple que d’héberger soi-même.

Limites des services tiers :

  • Contrôle restreint sur le fonctionnement.

  • Quotas d’envoi imposés (souvent bloquants pour un usage pro/newsletters).

En auto-hébergement, vous devrez gérer :

  • Quotas et limites d’envoi

  • Sauvegardes

  • Listes noires antispam

  • Droits d’accès si plusieurs utilisateurs

Bref : un serveur mail maison donne plus de contrôle, mais demande plus de compétences et de responsabilités.

Mise en place du serveur de messagerie
Copier le lien

Nous allons créer un serveur sur un cloud server Hostman, avec Ubuntu 20.04. Le serveur prendra en charge le chiffrement, disposera d’une protection antispam et d’un panneau d’admin web.

Préparation du serveur
Copier le lien

Passer en super-utilisateur :

sudo su

Mettre à jour le système :

apt update && apt upgrade

Vérifier le nom d’hôte :

hostname

S’il ne correspond pas :

hostnamectl set-hostname mail.hostname.com

(Remplacez mail.hostname.com par votre FQDN réel.)

Configurer la zone horaire et la synchro via chrony :

apt install chrony
timedatectl set-timezone Europe/Athens

Lister les zones :

timedatectl list-timezones

Activer chrony :

systemctl enable chrony

Ouvrir les ports nécessaires
Copier le lien

À l’aide d’iptables, ouvrir :

  • 25, 465 — SMTP (envoi)

  • 110, 995 — POP3 (réception)

  • 143, 993 — IMAP (réception)

  • 80, 443 — HTTP/HTTPS (services web)
iptables -I INPUT 1 -p tcp --match multiport --dports 25,110,143,465,587,993,995,80,443 -j ACCEPT

Rendre les règles persistantes :

netfilter-persistent save

Installer et configurer Postfix
Copier le lien

Postfix est un MTA (Mail Transfer Agent) open source à architecture modulaire.

Installer Postfix et le module MySQL :

apt install postfix postfix-mysql

Pendant l’installation sélectionner Internet Site et indiquer votre FQDN.

Créer un utilisateur dédié au stockage des boîtes :

addgroup -gid 1080 vmail

Ensuite, créez l’utilisateur vmail et attribuez le répertoire personnel à /home/mail :

adduser --home /home/mail -gid 1080 -uid 1080 vmail

Vérifier les droits :

ll /home

Configuration principale de Postfix
Copier le lien

Éditer :

nano /etc/postfix/main.cf

Ajouter / ajuster :

# Domains we accept mail for
mydestination = localhost.$mydomain, localhost, localhost.localdomain
# Postfix protocol
inet_protocols = ipv4
# Path to the public certificate
smtpd_tls_cert_file = /etc/ssl/mail/public.pem
# Path to the private certificate
smtpd_tls_key_file = /etc/ssl/mail/private.key
Then, add additional options required for Postfix to function correctly:
# Mail storage location
virtual_mailbox_base = /home/mail
# Path to alias maps
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
# Domain storage format
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
# Mailbox storage format
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
# Minimum virtual user ID
virtual_minimum_uid = 1080
# UID for the main user handling mail
virtual_uid_maps = static:1080
# GID for the group handling mail
virtual_gid_maps = static:1080
# Register Dovecot as the mail delivery agent
virtual_transport = dovecot
# Enable secure authentication
smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
# Enable TLS encryption for outgoing SMTP connections
smtp_use_tls = yes
# Enable TLS support for incoming connections
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_helo_required = yes

Fichiers de mappage MySQL
Copier le lien

Alias :

nano /etc/postfix/mysql_virtual_alias_maps.cf

Ajoutez le contenu suivant :

user = postfix
password = postfixPa$$w0rd
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'

Domaines :

nano /etc/postfix/mysql_virtual_domains_maps.cf

Ajoutez le contenu suivant :

user = postfix
password = postfixPa$$w0rd
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%u'

Boîtes :

nano /etc/postfix/mysql_virtual_mailbox_maps.cf

Ajoutez le contenu suivant :

user = postfix
password = postfixPa$$w0rd
hosts = localhost
dbname = postfix
query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'

Ajuster master.cf

nano /etc/postfix/master.cf

Ajoutez les paramètres suivants :

submission   inet  n  -  n  -  -  smtpd
-o smtpd_tls_security_level=may
-o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=/var/spool/postfix/private/auth
-o smtpd_sasl_security_options=noanonymous
-o smtpd_sasl_local_domain=$myhostname
smtps   inet  n  -  n  -  -  smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
dovecot   unix  -  n  n  -  -  pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}

Générer les certificats de sécurité
Copier le lien

Créer le répertoire :

mkdir -p /etc/ssl/mail

Générer les certificats :

openssl req -new -x509 -days 1000 -nodes -out /etc/ssl/mail/public.pem -keyout /etc/ssl/mail/private.key -subj "/C=CY/ST=Limassol/L=Limassol/O=Global Security/OU=IT Department/CN=mail.devnullhost.com"

Activer et redémarrer Postfix :

systemctl enable postfix && systemctl restart postfix

Installer et configurer Dovecot
Copier le lien

Dovecot est un serveur IMAP/POP3 open source. Installez-le avec le support MySQL :

apt install dovecot-imapd dovecot-pop3d dovecot-mysql

Emplacement du courrier :

nano /etc/dovecot/conf.d/10-mail.conf

Dans le fichier, spécifiez la structure du répertoire de stockage du courrier. Nous utiliserons une hiérarchie domaine → utilisateur :

mail_location = maildir:/home/mail/%d/%u/

Sockets d’authentification :

service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
unix_listener auth-userdb {
mode = 0600
user = vmail
group = vmail
}
}
service stats {
unix_listener stats-reader {
user = vmail
group = vmail
mode = 0660
}
unix_listener stats-writer {
user = vmail
group = vmail
mode = 0660
}
}

Modifiez le fichier de configuration d'authentification Dovecot :

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

Remplacez la ligne !include auth-system.conf.ext par !include auth-sql.conf.ext, indiquant que l'authentification SQL doit être utilisée.

Ensuite, configurez le chiffrement SSL dans Dovecot :

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

Dans ce fichier, ajoutez ce qui suit :

ssl = required
ssl_cert = </etc/ssl/mail/public.pem
ssl_key = </etc/ssl/mail/private.key

Création automatique des boîtes :

nano /etc/dovecot/conf.d/15-lda.conf
lda_mailbox_autocreate = yes

Connexion MySQL:

nano /etc/dovecot/dovecot-sql.conf.ext
driver = mysql
connect = host=localhost dbname=postfix user=postfix password=postfixPa$$w0rd
default_pass_scheme = MD5-CRYPT
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT maildir, 1080 AS uid, 1080 AS gid FROM mailbox WHERE username = '%u'
user_query = SELECT CONCAT('/home/mail/',LCASE(`domain`),'/',LCASE(`maildir`)), 1080 AS uid, 1080 AS gid FROM mailbox WHERE username = '%u'

Écoute sur toutes interfaces :

nano /etc/dovecot/dovecot.conf

Dans ce fichier, ajoutez la ligne suivante pour écouter sur toutes les interfaces réseau disponibles :

listen = *

Enfin, activez et redémarrez Dovecot pour appliquer la configuration :

systemctl enable dovecot && systemctl restart dovecot

Installer et configurer PostfixAdmin
Copier le lien

Prérequis : serveur web, PHP, MySQL (pile LAMP/LEMP). Extensions PHP :

apt install php-mysql php-mbstring php-imap

Télécharger PostfixAdmin :

wget https://sourceforge.net/projects/postfixadmin/files/latest/download -O postfixadmin.tar.gz

Créez un répertoire pour PostfixAdmin et extrayez le contenu de l'archive :

mkdir -p /var/www/html/postfixadmin && tar -C /var/www/html/postfixadmin -xvf postfixadmin.tar.gz --strip-components 1

Ensuite, créez un répertoire pour stocker les caches de modèles :

mkdir /var/www/html/postfixadmin/templates_c

Définissez les autorisations appropriées pour que le serveur Web accède au répertoire PostfixAdmin :

chown -R www-data:www-data /var/www/html/postfixadmin

Base de données :

mysql -u root
CREATE DATABASE postfix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'postfixPa$$w0rd';
exit;

Configuration locale :

nano /var/www/html/postfixadmin/config.local.php

Le contenu du fichier doit être :

<?php
$CONF['configured'] = true;
$CONF['default_language'] = 'en';
$CONF['database_password'] = 'postfixPa$$w0rd';
$CONF['emailcheck_resolve_domain']='NO';
?>

Ouvrir /postfixadmin/public/setup.php, générer le hash du mot de passe, l’ajouter au fichier, puis se connecter via /postfixadmin/public/login.php.

nano /var/www/html/postfixadmin/config.local.php

Actualisez la page /postfixadmin/public/setup.php et connectez-vous avec le mot de passe utilisé pour générer le hachage. Si tout est correctement configuré, vous devriez voir une page de vérification de la configuration.

En bas de cette page, vous trouverez un formulaire pour créer un compte administrateur. Après avoir créé le compte administrateur, accédez à /postfixadmin/public/login.php et connectez-vous avec les identifiants que vous venez de configurer.

Vous serez redirigé vers le panneau d'administration de PostfixAdmin.

Créer une boîte aux lettres dans PostfixAdmin
Copier le lien

Dans l’interface :

  • Domain List → New Domain puis Overview → Create Mailbox.
  • Paramètres de connexion dans un client mail :

Service

Port

Sécurité

IMAP

143

STARTTLS

POP3

110

STARTTLS

SMTP

25

STARTTLS

Identifiants : ceux définis lors de la création de la boîte.

Conclusion
Copier le lien

Nous avons vu ce qu’est un serveur mail auto-hébergé et comment le configurer pas à pas. L’avantage principal : un contrôle total — boîtes illimitées, alias, gestion fine des utilisateurs.

Le tout est réalisable sur un cloud server Hostman, en suivant cette procédure pour obtenir un système de messagerie sécurisé et opérationnel.