Skip to content
CISERANE Thomas edited this page May 19, 2025 · 13 revisions

TP7 : Sécurisation du service mail

Noms des auteurs : CISERANE Thomas, COLSON Nathan, WILLEMS Julien Date de réalisation : 3 avril 2025

Introduction

Environnement de travail et organisation

  • Documentez brièvement la répartition de vos services sur les différents VPS, et notamment le service mail.

Tous les services (web, dns, mail...) sont actuellement sur un seul et même VPS.

1. Mise en place du service mail

  • Documentez brièvement les étapes principales de la configuration, afin de pouvoir la reproduire en cas de problème.

Configuration au niveau du DNS

  1. Ajouter un MX record dans le serveur DNS :
  2. Présence d'un record A pour la machine tenant le rôle de serveur mail :
  3. Configuration du Resource Record PTR du VPS. Ceci a été transmis à l'enseignant étant donné que le PTR se trouve au niveau du fournisseur du VPS :
    ❓️

Récupération des fichiers du serveur mail

  1. Modification du champ hostname dans le fichier "compose.yaml" :
  2. Modification de la variable SSL_TYPE dans le fichier mailserver.env :

Certificats TLS

  1. Fichiers de certification dans le répertoire /etc/letsencrypt :
  2. Volume Docker créé par le fichier "compose.yaml" mettant à disposition les fichiers de certification au serveur mail :
  • Indiquez les tests effectués pour vérifier le bon fonctionnement du service mail, sous forme d'une procédure de validation.

Voici la procédure de validation utilisée pour assurer le bon fonctionnement de notre serveur mail :

  1. Démarrage du serveur mail ;
  2. Création de deux nouveaux utilisateurs ;
  3. Accès aux nouvelles boîtes mail via Thunderbird ;
  4. Envoi de mails :
    a. Entre les deux comptes ;
    b. D'un des comptes vers une adresse extérieure ;
    c. D'une adresse extériïeure vers un des comptes.

1. Démarrage du serveur mail :

2. Création de deux nouveaux utilisateurs :

Création de deux utilisateurs (Michel et Gertrude) : Confirmation de leur ajout au serveur :

3. Accès aux nouvelles boîtes mail via Thunderbird :

Entrée des identifiants dans le formulaire :

Recherche du compte par Thunderbird aboutie :

Finalisation de l'ajout du compte sur Thunderbird :

Boîte mail accessible depuis l'interface de Thunderbird :

4. Envoi de mails

✅ a. Entre les deux comptes :

Envoi de Michel vers Gertrude :

Gertrude a reçu de Michel :

✅ b. D'un des comptes vers une adresse extérieure :

Envoi de Michel vers le compte extérieur :

Le compte extérieur a reçu le mail de Michel :

✅ c. D'une adresse extérieure vers un des comptes :

Le compte extérieur a envoyé un mail à Michel :

Michel a reçu le mail du compte extérieur :

  • Montrez le résultat de cette première évaluation du service mail avec MXToolbox.

Réponses aux questions

1. Comment sont gérés les utilisateurs? Via les utilisateurs Unix, un fichier, une DB?
Sur ce serveur mail, les utilisateurs sont effectivement gérés comme des utilisateurs Unix, signifiant qu'un utilisateur ayant, par exemple, l'adresse mail "michel.aleatoire@fakemail.org" aurait sur la machine (donc ici dans le conteneur) un utilisateur Unix associé "michel.aleatoire".
2. Quel est le format de mailbox utilisé? Dans le cas de l'image que nous utilisons ici, le format "Maildir" est utilisé. Cela signifie concrètement que chaque utilisateur dispose d'un répertoire stocké dans /var/mail et dans chacun de ces répertoires utilisateurs s'y trouvent trois autres : new/, cur/ et tmp/. Illustration : Illustration de la structure des répertoires utilisateurs sous format Maildir

  • new/ → Les courriels qui ont été reçus mais pas encore lus sont placés ici.
  • cur/ → Les messages qui ont été lus ou qui sont en cours de traitement sont déplacés ici.
  • tmp/ → Stockage temporaire des messages en cours de livraison ou de traitement.

Dans notre cas, notre serveur mail a pour structure ceci (voir image suivante), confirmant donc l'utilisation du format Maildir :

2. Sécurisation du service mail

2.1. Analyse du chiffrement TLS

Réponses aux questions

Indiquez et analyser les ports ouverts pour le chiffrement du mail
Voici tout d'abord la liste de tous les ports ouverts du conteneur :

  • 0.0.0.0:25->25/tcp, [::]:25->25/tcp ;
  • 0.0.0.0:143->143/tcp, [::]:143->143/tcp ;
  • 0.0.0.0:465->465/tcp, [::]:465->465/tcp ;
  • 0.0.0.0:587->587/tcp, [::]:587->587/tcp ;
  • 110/tcp ;
  • 995/tcp ;
  • 0.0.0.0:993->993/tcp, [::]:993->993/tcp ;
  • 4190/tcp mailserver ;
  • 4190/tcp mailserver.

Et voici tous ceux impliqués dans le chiffrement des mails :

  • 465/tcp → Pour SMTP avec TLS implicite ;
  • 587/tcp → Pour SMTPavec STARTTLS ;
  • 143/tcp → Pour IMAP avec STARTTLS ;
  • 993/tcp → Pour IMAP avec TLS implicite ;
  • 110/tcp → Pour POP3 avec STARTTLS ;
  • 995/tcp → Pour POP3 avec TLS implicite.

Analysez votre capture Wireshark

  • Démarrez une capture Wireshark sur votre poste client avant d'envoyer un message depuis un compte de votre domaine, puis de le recevoir.

Capture de l'envoi :
Capture de la réception :
❓️

  • Pour l'envoi, quel est le numéro de port utilisé? S'agit-il de TLS implicite ou explicite (voir STARTTLS) ?

Dans le cas de l'envoi d'un mail, le port nº465, impliquant donc qu'il s'agit de TLS implicite.

  • Même question pour la réception.

❓️

Bonus

Documentez les éventuels bonus mis en place.

2.2. Authentification du domaine

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

Documentez et commentez le résultat MXToolbox de cette étape.
Voici le résultat du test effectué par MXToolbox : Pour valider ce "test d'alignement", trois records doivent être correctement alignés :

  • MX record → Il doit pointer vers un hostname valide, comme mail.l1-7,ephec=ti.be ;
  • PTR record → L'adresse IP du serveur ;
  • A record.

2.2.2. SPF

  • Documentez et commentez le résultat MXToolbox de cette étape.

Voici le record SPF dans le fichier "l1-7.zone" du serveur DNS :

Et enfin le test effectué par MXtoolbox :

  • Indiquez les résultats de l'envoi d'un mail vers une adresse extérieure.

Se référer à la procédure de validation utilisée pour la certification TLS.

2.2.3. DKIM

  • Documentez brièvement les étapes de mise en place du DKIM.

Pour DKIM nous avons commencé par utilisé la commande docker exec -it <CONTAINER_NAME> setup config dkim afin de générer un paire de clés, puis dans mail.txt nous avons notre RR mail._domainkey IN TXT [.....]; ----- DKIM key mail for l1-7.ephec-ti.be.

Nous avons ensuite ajouté ce RR dans notre fichier l1-7.zone de notre DNS puis relancé le DNS.

  • Validez cette configuration en montrant un en-tête de mail

Voici un en-tête de mail après test:

DKIM SIG
  • Montrez et commentez le résultat de l'analyse DKIM Validator.

2.2.4. DMARC

  • Documentez brièvement la mise en place du DMARC et commentez le résultat MXToolbox obtenu.

  • Montrez le score SpamAssassin et commentez-le. Comment l'optimiser?

Voici le score décerné par l'outil dkimvalidator :

SpamAssassin Score: 0.206  ⚠️
Message is NOT marked as spam
Points breakdown:
 0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
                            The query to Validity was blocked.  See
                            https://knowledge.validity.com/hc/en-us/articles/20961730681243
                             for more information.
                          [54.36.181.82 listed in sa-trusted.bondedsender.org]
 0.0 URIBL_DBL_BLOCKED_OPENDNS ADMINISTRATOR NOTICE: The query to
                            dbl.spamhaus.org was blocked due to usage
                            of an open resolver. See
                            https://www.spamhaus.org/returnc/pub/
                            [URIs: ephec-ti.be]
 0.0 RCVD_IN_ZEN_BLOCKED_OPENDNS RBL: ADMINISTRATOR NOTICE: The query
                             to zen.spamhaus.org was blocked due to
                            usage of an open resolver. See
                            https://www.spamhaus.org/returnc/pub/
                            [54.36.181.82 listed in zen.spamhaus.org]
 0.0 RCVD_IN_DNSWL_BLOCKED  RBL: ADMINISTRATOR NOTICE: The query to
                            DNSWL was blocked.  See
                            http://wiki.apache.org/spamassassin/DnsBlocklists#DnsBlocklists-dnsbl-block
                             for more information.
                            [54.36.181.82 listed in list.dnswl.org]
 0.0 URIBL_ZEN_BLOCKED_OPENDNS ADMINISTRATOR NOTICE: The query to
                            zen.spamhaus.org was blocked due to usage
                            of an open resolver. See
                            https://www.spamhaus.org/returnc/pub/
                            [URIs: ephec-ti.be]
 0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record
 0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                            valid
 0.1 DKIM_INVALID           DKIM or DK signature exists, but is not valid

2.3. Filtrage du spam

  • Documentez brièvement l'activation et la configuration de SpamAssassin.

Nous avons activé et configuré SpamAssassin en modifiant les lignes ci-dessous du fichier mailserver.env:

ENABLE_SPAMASSASSIN=1
...
SPAMASSASSIN_SPAM_TO_INBOX=1
...
MOVE_SPAM_TO_JUNK=1
...
  • Validez son fonctionnement via la réception d'un email valide

Se référer à la section testant l'envoi de mails.

  • Validez son fonctionnement via la réception d'un email suspect

Pour ce faire nous avons envoyer un mail, avec le contenu recommendé pour avoir le score de spam le plus haut, depuis l'extérieur et nous l'avons bien reçu dans les Spams:

Spam reçu Contenu du mail Spam

3. Serveur mail secondaire (bonus)

Si vous avez mis en place un serveur mail secondaire, documentez la configuration choisie.

Clone this wiki locally