TP7 - DeumeniDerval/admin-2 GitHub Wiki

TP7 : Sécurisation du service mail

Noms des auteurs : Jérémie MUCHEMBLED

1. Mise en place du service mail

On commence par choisir un FQDN pour notre serveur mail : mail.l1-5.ephec-ti.be. On rajoute un RR MX et un RR A appropriés :

@ IN MX 10 mail.l1-5.ephec-ti.be.
mail.l1-5.ephec-ti.be. IN A 54.36.181.37

Ainsi qu'un RR PTR en zone parent :

37.181.36.54.in-addr.arpa. IN PTR mail.l1-5.ephec-ti.be.

Ensuite on télécharge les fichiers de configuration pour le serveur mail et son conteneur Docker :

Capture d_écran 2025-05-18 044110

On renseigne le FQDN dans le docker compose :

hostname: mail.l1-5.ephec-ti.be

Et on indique au serveur dans son .env que notre certificat SSL provient de Let'sEncrypt :

SSL_TYPE=letsencrypt

Et on donne au serveur mail l'accès à notre certificat de zone :

- /etc/letsencrypt:/etc/letsencrypt:ro

Une fois tout ça fait, on compose up. Le serveur nous demande de configurer une adresse :

Capture d_écran 2025-05-18 050701

On rentre dans le conteneur et on en ajoute une, qu'on mettra en alias de l'adresse postmaster :

Capture d_écran 2025-05-18 053715

A ce stade, le serveur est prêt et on peut se connecter sur un client mail :

Capture d_écran 2025-05-18 053154

Puisque le serveur n'est pour l'instant pas authentifié, les fournisseurs majeurs comme Google nous refusent la réception de mails :

Capture d’écran (538)

Toutefois, l'envoi vers notre serveur mail fonctionne :

Capture d’écran (539)

Ainsi qu'entre deux adresses de notre serveur :

Capture d_écran 2025-05-18 140426

MxToolbox nous confirme que le serveur est accessible :

Capture d_écran 2025-05-18 054646

Réponses aux questions

  1. Comment sont gérés les utilisateurs? Via les utilisateurs Unix, un fichier, une DB? Les utilisateur sont gérés avec le script setup fourni dans l'image du serveur. Les données fournies au script sont ensuite rangées dans des fichiers de configuration :

Capture d_écran 2025-05-18 141124 Capture d_écran 2025-05-18 141110

  1. Quel est le format de mailbox utilisé? C'est une boite IMAP

2. Sécurisation du service mail

2.1. Analyse du chiffrement TLS

On peut voir les ports du serveur mail dans le docker-compose :

ports:
  - "25:25"    # SMTP  (explicit TLS => STARTTLS, Authentication is DISABLED => use port 465/587 instead)
  - "143:143"  # IMAP4 (explicit TLS => STARTTLS)
  - "465:465"  # ESMTP (implicit TLS)
  - "587:587"  # ESMTP (explicit TLS => STARTTLS)
  - "993:993"  # IMAP4 (implicit TLS)

On peut voir qu'ils supportent tous le chiffrement, soit explicite ou implicite. Le port 25 n'est pas authentifié.

On effectue une capture Wireshark au moment d'un transfert de mail.

Pour l'envoi, le port 465 est utilisé : TLS implicite. On voit la handshake TLS directment, sans commande STARTTLS :

Capture d_écran 2025-05-18 150325

Pour la réception, le port 993 est utilisé : TLS implicite encore une fois. :

Capture d_écran 2025-05-18 151035

2.2. Authentification du domaine

2.2.1. L'alignement des records MX-PTR-A

On retourne sur MXToolbox :

Capture d_écran 2025-05-18 153052 Capture d_écran 2025-05-18 153013

Les deux RRs sont biens symétriques, et correspondent au RR MX précédent.

2.2.2. SPF

On ajoute le RR :

@ IN TXT "v=spf1 mx -all"

Validé par MXToolbox :

Capture d_écran 2025-05-18 154856

Dorénavant, si on envoit un mail vers une adresse externe, on ne reçoit plus de mail de refus, et le mail arrive (dans les spams par contre).

2.2.3. DKIM

On génère la clé avec la commande :

Capture d_écran 2025-05-18 160513

Puis on rajoute le RR :

Capture d_écran 2025-05-18 161144

Validation externe par MXToolbox encore une fois :

Capture d_écran 2025-05-18 165108

DKIM Validator trouve bien une signature valide dans l'en-tête des mails :

Capture d_écran 2025-05-18 170408 Capture d_écran 2025-05-18 170619

2.2.4. DMARC

On selectione notre configuration sur DMARCGuide et on place le RR sur le DNS :

_dmarc.l1-5.ephec-ti.be. IN TXT "v=DMARC1; p=quarantine; rua=mailto:[email protected]; ruf=mailto:[email protected]; sp=quarantine; fo=1; ri=86400"

Confirmé par MXToolbox :

Capture d_écran 2025-05-18 171615

On obtient un score SpamAssassin de 0.208 :

Capture d_écran 2025-05-18 172213

2.3. Filtrage du spam

On active SpamAssassin dans le fichier de configuration :

ENABLE_SPAMASSASSIN=1

A la réception d'un E-Mail valide, on ne voit rien :

Capture d_écran 2025-05-19 091028

A la réception d'un E-mail suspect en revanche, le mail finit dans les spams, on voit les en tetes :

Capture d_écran 2025-05-19 091201 Capture d_écran 2025-05-19 091221