Aller au contenu

Installation du serveur

Prérequis

Pour mettre en place un serveur mail complet, il est nécessaire d'installer plusieurs programmes dédiés, à savoir un logiciel que l'on nomme MTA et un autre nommé MUA.
Le MTA (Mail Transport Agent ou Agent de Transport du Courrier) se charge d'envoyer le courrier aux autres serveurs et c'est lui qui va initier la connexion lorsqu'on reçoit du courrier avant de le transférer au MUA. Le MUA (Mail User Agent ou Agent des Utilisateurs Courrier), quant à lui, va se charger de récupérer le courrier reçu et de le distribuer dans les bonnes boîtes de réception. C'est lui aussi qui transmet le courrier à envoyer au MTA.

Dans le cadre de notre tutoriel, nous allons utiliser CentOS 8 et le couple Postfix (MTA) + Dovecot (MUA) + Rspamd (gestion du SPAM) qui se révèle être un ensemble assez efficace pour une plateforme courriel tout évitant de recevoir ces fameux mails vendant toutes sortes de médicaments illégaux. Nous allons également installer un ensemble d'extensions qui permettront de définir, selon vos envies, des listes de tri du courrier (filtres SIEVE) pour classer le courrier dans des dossiers spécifiques (notamment pour le spam), ainsi qu'un module permettant de connecter Dovecot à une base de données pour gérer nos utilisateurs. Enfin, nous aurons aussi besoin d'un serveur Web pour afficher l'interface d'administration de notre serveur, ainsi que le client Web (webmail) pour récupérer ses mails.

Nous aurons donc besoin des logiciels suivants :

  • Nginx + PHP-FPM (Web)
  • Postfix
  • Dovecot
  • RSpamd (gestion des spams et de DKIM) + Redis
  • MariaDB (pour la base de données)
  • PostfixAdmin pour la gestion des comptes
  • RoundCube comme webmail

Installation des paquets

Préliminaires

Avant de commencer notre installation, il convient d'abord d'ajouter quelques éléments à notre serveur CentOS pour qu'il soit plus complet. En effet, certains logiciels que nous allons utiliser ne sont pas disponibles sur une installation par défaut de CentOS 8.

Ajout du dépôt EPEL

La première étape à faire est d'ajouter le dépôt EPEL qui permet d'ajouter quelques programmes utiles qui ne sont pas directement présents (htop par exemple) et qui ajoutera quelques paquets qui serviront de dépendances au reste.

Cela se résume en une seule commande à taper (le -y sert à accepter l'installation sans confirmation) :

sudo yum install epel-release -y

Ajout d'un dépôt tiers pour Rspamd

La deuxième étape consiste à ajouter un dépôt tiers pour obtenir le logiciel Rspamd qui n'est pas inclus par défaut dans CentOS.

Pour cela, il suffit de télécharger et d'importer le fichier contenant les informations du dépôt (fourni par les développeurs) et sa clé GPG en exécutant l'ensemble des commandes suivantes dans votre terminal :

sudo curl https://rspamd.com/rpm-stable/centos-8/rspamd.repo > /etc/yum.repos.d/rspamd.repo
sudo rpm --import https://rspamd.com/rpm-stable/gpg.key

Une fois tout cela fait, nous devons mettre à jour le cache de Yum pour qu'il prenne en compte toutes nos modifications. On lance donc une mise à jour de l'ensemble avec la commande suivante :

sudo yum update -y

Mise en place de l'ensemble

Vu que nous avons tous les dépôts nécessaires et que notre système est prêt, on peut installer les paquets nécessaires en seul coup avec ceci :

sudo yum install -y postfix dovecot dovecot-pigeonhole dovecot-mysql nginx php-fpm php-json php-xml php-cli php-mysqlnd php-pdo rspamd redis mariadb

CentOS va alors se charger de tout comme un grand. Une fois le processus terminé, on pourra commencer à configurer notre installation et préparer notre serveur de messagerie électronique.

Créer son certificat Let's Encrypt

Pour sécuriser les connexions des utilisateurs et utiliser TLS sur notre serveur web et notre serveur mail, nous allons générer un certificat SSL gratuit avec le client officiel fourni par Let's Encrypt. Ce dernier peut être installé directement dans notre CentOS à l'aide de la commande suivante : sudo yum install -y certbot.

Après installation, je conseille de créer un fichier de configuration qui permet d'ajouter directement des options intéressantes sans devoir les spécifier à chaque fois. On peut indiquer notamment la taille de la clé RSA générée (4096 étant la valeur recommandée), l'adresse mail à utiliser ou encore la validation automatique des conditions d'utilisation. Il sera enregistré à l'adresse /etc/letsencrypt/cli.ini et son contenu sera donc le suivant :

## Taille de la clé RSA pour le certificat
rsa-key-size = 4096

## Mail par défaut
email = votremail@example.com

## Accepter le règlement
agree-tos = true

## Activer le HSTS (validation longue durée)
hsts = true

## Activer le OCSP Stapling (protection de la connexion)
staple-ocsp = true

## Ne pas activer l'option Forcage de OCSP (car non pris en charge par Dovecot)
must-staple = false

## On ne veut pas la newsletter EFF
no-eff-email = true

On génére enfin notre certificat avec la commande suivante :

sudo certbot certonly --standalone -c /etc/letsencrypt/cli.ini -d votredomaine.xyz -d mail.votredomaine.xyz -d admin.votredomaine.xyz

Astuce : Pour renouveler votre certificat lorsqu'il arrive à expiration, il suffit de faire sudo certbot renew après avoir arrêté Nginx (sudo systemctl stop nginx) pour que le processus se fasse automatiquement.