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 gnupg

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 cliquant sur le petit +, à côté du nom de l'utilisateur concerné et cliquer sur Editer :

Changer le mot de passe admin

Puis entrer le nouveau mot de passe, confirmer, et valider :

Changer le mot de passe admin 2

Configurer un relais SMTP

Un relais SMTP est un serveur SMTP externe qui va permettre de transférer des messages à destination d'un domaine de messagerie distant. Il est indispensable pour pouvoir envoyer des mails sur Internet. Il en existe pleins utilisables gratuitement mais limités. On utiliseras ici celui de google qui est par exemple limité à 2000 mails envoyés par jour.

Pour cela, aller dans le menu Routage et sous Ajouter un hôte de relai, entrer le nom d'hôte du relai ainsi que les identifiants permettant d'y accèder (les identifiants d'un simple compte Gmail) :

Configuration d'un relais SMTP

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

Pour ajouter un nouveau domaine de messagerie, il faut aller dans le menu Configuration > Configuration du courrier onglet Domaines, et cliquer sur Ajouter un domaine :

Ajout d'un domaine

Confirmer avec Ajouter le domaine et redémarrer SOGo.

Ensuite pour ajouter des comptes, aller à l'onglet Boîtes mail, et cliquer sur Ajouter une boîte mail. Il suffit d'indiquer l' identifiant de la boîte mail, le domaine, le nom de l'utilisateur, et son mot de passe. L'adresse mail est composée de l'identifiant séparée du domaine par un @.

Ajouter une boîte mail

Enfin pour créer des alias de boîtes mail, aller à l'onglet Aliases > Aliases et cliquer sur Ajouter un alias. Il suffit de choisir les alias à créer, les adresses mail vers lesquelles rediriger les mails, cocher la case Alias visible dans SOGo pour afficher les alias dans le client de messagerie Web et valider avec Ajouter :

Ajouter un alias de messagerie

Accès aux boîtes mail

via le client Web

Le client web intégré à MailCow est SOGo. Pour y accèder l'URL est : https://mail.nocterie.local/Sogo

Accès aux mails via SOGo

:!: Remplacer mail.nocterie.local par le nom d'hôte du serveur, ou par le sous-domaine enregistré avec précédemment l'enregistrement CNAME.

via un client mail externe

Ouvrir le client mail (Outlook, Courrier, Thunderbird…), aller dans les paramètres, et ajouter un nouveau compte en précisant les réglages manuellement :

Configuration du client mail externe

:!: Il peut être nécessaire de confirmer que le compte est sûr, ou d'accepter un certificat afin que cela fonctionne correctement.

Sources

Tutoriel source : cliquer ici