2. Infrastructure Mail - gpk659/WoodyToys-Projet-VPS GitHub Wiki
OBJECTIFS MISSION 2
- 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
: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
-
5 - Vous rendre sur la page : 🔗 https://postfixadmin.votre-domaine.tld/
-
6 - Vous pouvez maintenant créer un nouveau nom de domaine :
- 7 - Ensuite un utilisateur :
-
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
-
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
Rainloop
Voici un exemple de configuration pour Rainloop (une interface webmail) : Rainloop
Adresses mails et alias
Adresses génériques et redirections correspondantes :
Alias | |
---|---|
[email protected] | [email protected] |
[email protected] | |
[email protected] | [email protected] |
[email protected] | [email protected] |
[email protected] | |
[email protected] |
Github hardware/mailserver