Ceci est une ancienne révision du document !


Configurer son propre serveur mail sous Linux avec MailCow

Ce tutoriel a pour but de mettre en service son propre serveur de messagerie sous Linux en 15min. La solution que nous allons configurer s'appelle MailCow-dockerized et fonctionne à base de conteneurs docker et de logiciels libres déja pré-configurés.

Les avantages de MailCow sont :

  • Un client mail web intégré
  • Possibilité d'organiser ses mails par répertoires
  • Possibilité de créer des adresses jetables contre les spams
  • Un scan anti-virus et un système anti-spam integrés
  • Une protection contre les attaques bruteforce et par dictionnaire
  • Authentification à 2 facteurs possible avec Yubikey OTP, U2F USB ou TOTP
  • Possibilité d'ajouter autant de domaines, d'alias, et des boîtes aux lettres que voulu

Installation des pré-requis

Il va nous falloir :

  • Une distribution Linux, telle que debian, ubuntu, centOS, ou ArchLinux, avec au minimum 2Go de mémoire vive, 8Go sont recommandés si on souhaite accueillir beaucoup d'utilisateurs et utiliser l'anti-virus intégré en supplément.
  • Un serveur DNS, qui peut être hébergé sur la même machine que la messagerie
  • Une machine cliente sur le même réseau avec un logiciel de messagerie installé (Outlook, ThunderBird, Courrier…)
  • Un domaine de messagerie (la partie après le @ d'une adresse mail)
  • Du bon sens !

Dans ce tutoriel, le serveur de messagerie sera sous Debian 9 avec 4Go de RAM, le serveur DNS sous Windows Server 2016, et le domaine de messagerie utilisé sera nocterie.local. Certaines commandes seront donc à adapter en fonction de la situation.

Une fois la machine Linux prête, commencer par lui donner un nom cohérent (remplacer mailer.nocterie.local et mailer par le nom de la machine) :

echo "mailer.nocterie.local" > /etc/hostname 
echo "127.0.1.1       mailer.nocterie.local   mailer" >> /etc/hosts

Puis lui attribuer des réglages IP fixes (adresse IP, masque, passerelle, DNS), voir ce tutoriel si besoin.

Maintenant, il faut installer le module HTTPS du gestionnaire de paquets et ajouter le dépôt sécurisé de docker à la liste. On met déja à jour les paquets installés :

apt-get update
apt-get upgrade -y

Ensuite, on installe quelques paquets nécessaires :

apt-get install -y apt-transport-https ca-certificates curl software-properties-common

Puis on récupère la clé GPG du dépôt docker pour l'enregistrer (bien choisir celle appropriée au système utilisé !) :

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

Pour finir on renseigne le dépôt docker dans la liste :

add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/debian \$(lsb_release -cs) \stable""

Et on lance une mise à jour de la liste des paquets :

apt-get update

Installation et configuration de docker

On a besoin de Docker Engine et de Docker Compose pour exécuter des conteneurs pré-configurés.

Installer d'abord Docker Engine :

apt-get install -y docker-ce

Télécharger Docker-compose :

curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

Enfin, donner la permission d'exécuter docker-compose :

chmod +x /usr/local/bin/docker-compose

Paramétrage et récupération du conteneur

Dans un premier temps, se placer dans le répertoire /opt :

cd /opt

Puis récupérer les fichiers de configuration de MailCow depuis GitHub :

git clone https://github.com/mailcow/mailcow-dockerized

Se placer dans le répertoire précédemment téléchargé :

cd mailcow-dockerized

Et générer la configuration de MailCow grâce à :

./generate_config.sh

Il faudra alors répondre à deux questions simples concernant le nom d'hôte du serveur, et le fuseau horaire.

Paramètrage de MailCow

Ensuite on télécharge l'image du conteneur avec tous les paquets pré-configurés :

docker-compose pull

Et enfin on démarre le conteneur comme ceci :

docker-compose up -d

Attendre un instant, et c'est prêt !

Configuration DNS

Pour pouvoir utiliser le domaine de messagerie et se connecter au serveur, il est important de créer la zone DNS correspondant au domaine de messgaerie, les enregistrements DNS qui vont avec.

Ajouter les enregistrements suivants :

  • Enregistrement A : mailer.nocterie.local pointant sur le serveur de messagerie
  • Enregistrement MX : nocterie.local pointant sur le nom d'hôte du serveur de messagerie

Pour vérifier le bon fonctionnement des enregistrements DNS, on peut utiliser l'utilitaire nslookup :

Test des enregistrements DNS

On voit bien ci-dessus que les enregistrements sont reconnus et pointent vers les bonnes adresses.

On peut même rajouter un enregistrement CNAME pointant vers l'adresse du serveur pour que les utilisateurs puissent utiliser une adresse plus simple pour se connecter à l'interface web. Cette adresse sera : mail.nocterie.local.

Connexion à l'interface web d'administration

Maintenant que le serveur est fonctionnel, se connecter çà l'interface d'administration Web à l'adresse du serveur de messagerie : https://mailer.nocterie.local (où son adresse IP).

:!: Ignorer l'avertissement de sécurité.

L'identifiant par défaut est : admin

Mot de passe par défaut : moohoo

Modifier le mot de passe du compte admin depuis la page d'accueil, en cochant la case à côté du nom d'utilisateur concerné et cliquer sur Editer :

Changer le mot de passe admin

Puis entrer le nouveau mot de passe et confirmer :

Changer le mot de passe admin 2

Ajout de domaines, de comptes et d'alias de messagerie

Sources

Tutoriel source : cliquer ici