2. Infrastructure Mail - gpk659/WoodyToys-Projet-VPS GitHub Wiki

OBJECTIFS MISSION 2

Mail

  • L’architecture Web est documentée et justifiée
  • Il existe des adresses mails pour les employés
  • L’adresse [email protected] existe
  • L'adresse b2b.wt.ephec-ti.be existe et pointe vers 2 adresses emails des personnes concernées
  • Les boîtes mail liées à ces adresses sont consultables depuis le serveur
  • Les boîtes mail liées à ces adresses sont consultables par POP/IMAP depuis l’entreprise
  • Les boîtes mail liées à ces adresses sont consultables par POP/IMAP depuis n’importe où
  • Il est possible d’envoyer des mails depuis n’importe quelle adresse vers une adresse de l’entreprise
  • Il est possible d'envoyer des mails entre personnes de l’entreprise
  • Il est possible d'envoyer un mail depuis une adresse de l’entreprise vers l’extérieur
  • Une procédure d’ajout/retrait d’utilisateurs est prévue et documentée

Sécurité Mail

  • Des filtres anti-spam sont déployés

Introduction

Nous avons travaillé avec l'image suivante :

:email: > hardware/mailserver

:bulb: L'image de hardware/mailserver tourne avec d'autres images pour permettre un service complet :

  • postfixadmin : pour avoir une administration simplifiée via une interface web.
  • rainloop : interface web pour consulter ses mails.
  • nginx : serveur web pour gérer postfixadmin et rainloop.
  • mariadb : base de données contenant les mots de passes des users pour PostfixAdmin.

Utilisation

1. Obtenir la dernière version de l'image

# Depuis hub.docker.com :
docker pull hardware/mailserver

# or build it manually :
docker build -t hardware/mailserver https://github.com/hardware/mailserver.git

2. Obtenir le derniere version du docker-compose.yml

docker-compose.yml

:bulb: : Adapter les paramètres en fonction de votre configuration

3. Modification du fichier de zone dans notre DNS

IN MX 10 mail.wt5.ephec-ti.be.

postfixadmin	IN	CNAME	service
webmail             IN      CNAME   service

:bulb: Utilisé pour définir vers quel serveur de la zone un email à destination du domaine doit être envoyé, et avec quelle priorité. Ajout de deux CNAME pour l'interface web postfixadmin et webmail.

Ajout d'une clé DKIM, qui garantit l'authenticité des emails envoyés.

mail		IN	A	*adresse ip*
mail._domainkey IN TXT ( -- Votre clé DKIM -- )

La clé DKIM est générée automatiquement au lancement de l'image. Elle est créée avec l'outil OpenDKIM et se trouve dans le dossier DKIM de l'image mail.

Certificats https

sudo docker run -it --rm -v /mnt/docker/nginx/certs:/etc/letsencrypt -p 80:80 -p 443:443 xataz/letsencrypt certonly --
standalone --rsa-key-size 4096 --agree-tos -m [email protected] -d mail.wt5.ephec-ti.be -d webmail.wt5.ephec-
ti.be -d postfixadmin.wt5.ephec-ti.be

Ajout de VirtualsHosts pour Postfix et RainLoop

Il nous faut nous ajouter des VirtualHosts sécurisé pour avoir accès aux pages de gestions WEB de PostfixAdmin et Rainloop.. Et bien évidemment activer le ssl pour pouvoir avoir des pages web sécurisées.

PostfixAdmin

Exécuter la commande suivante pour commencer la configuration :

docker exec -ti nginx ngxproxy

⚠️ Suivre les différentes étapes et à adapter selon votre configuration

Welcome to ngxproxy utility.
We're about to create a new virtual host (AKA server block).

Name: postfixadmin
Domain: postfixadmin.wt5.ephec-ti.be
Webroot (default is /): 
Container: postfixadmin
Port (default is 80): 8888
HTTPS [y/n]: y
Certificate path: /certs/live/wt7.ephec-ti.be/fullchain.pem
Certificate key path: /certs/live/wt7.ephec-ti.be/privkey.pem
Secure headers [y/n]: y
Enable HSTS header ? [y/n]: n # Use with caution
Max body size in MB (integer/null): null

Done! postfixadmin.conf has been generated.
Reload nginx now? [y/n]: y
nginx successfully reloaded.

💡 Veuillez à indiquer le bon chemin pour les certificats HTTPS, sinon cela ne fonctionnera pas !

Rainloop

Même configuration que pour PostfixAdmin

ℹ️ Nos pages web sont donc protégés en HTTPS. On peut commencer la configuration du mailserver via les différentes interfaces.

Configuration de PostfixAdmin

  • 1 - Vous rendre sur votre page : 🔗 https://postfixadmin.votrenomdedomaine/setup.php

    ⚠️ Ne pas oublier d'ajouter un nouveau A/CNAME record dans votre zone DNS !

  • 2 - Définir un mot de passe et récupérer le hash code qui s'affichera

  • 3 - Configurer le hash avec le commande suivante

    docker exec -ti postfixadmin setup > Postfixadmin setup hash : [votreHashCode] > Setup done

  • 4 - Créer un compte administrateur

img

img

  • 7 - Ensuite un utilisateur :

img

  • 8 - Ensuite vous pouvez créer un alias :

    💡 Un alias est une adresse e-mail qui redirige les messages vers votre compte e-mail principal

img

  • 9 - Dernière étape , création du Fetchmail pour récupérer des emails sur un autre compte

    Ne pas oublier de rajouter une ligne dans le docker-compose pour activer l'option FETCHMAIL

    environment:

    • ENABLE_FETCHMAIL=true

img

Rainloop

Voici un exemple de configuration pour Rainloop (une interface webmail) : Rainloop

Adresses mails et alias

Adresses génériques et redirections correspondantes :

Mail Alias
[email protected] [email protected]
[email protected]
[email protected] [email protected]
[email protected] [email protected]
[email protected]
[email protected]

Github hardware/mailserver