IMA5 2021/2022 P20 : Différence entre versions

De Wiki de Projets IMA
(Description)
(Présentation générale)
Ligne 8 : Ligne 8 :
 
* '''Durée :''' 06 SEP 2021 - 24 JAN 2022
 
* '''Durée :''' 06 SEP 2021 - 24 JAN 2022
  
==Objectifs==
+
==Objectif==
 
L’objectif du projet sera de mettre en place un système de messagerie qui va gérer plusieurs utilisateurs et une boîte à lettres par utilisateur. Le système devra permettre à chaque utilisateur d’avoir un contrôle important sur sa messagerie grâce à un système de conteneur par utilisateur. Afin d’éviter des failles de sécurité, la solution à mettre en place devra assurer un contrôle facile sur ses différentes composantes et cela grâce à sa simplicité.
 
L’objectif du projet sera de mettre en place un système de messagerie qui va gérer plusieurs utilisateurs et une boîte à lettres par utilisateur. Le système devra permettre à chaque utilisateur d’avoir un contrôle important sur sa messagerie grâce à un système de conteneur par utilisateur. Afin d’éviter des failles de sécurité, la solution à mettre en place devra assurer un contrôle facile sur ses différentes composantes et cela grâce à sa simplicité.
  
Ligne 56 : Ligne 56 :
  
 
• les deux types de serveurs SMTP ne diffèrent que par la méthode de distribution finale (stockage dans un système de fichiers ou envoi à un serveur SMTP cible) ;
 
• les deux types de serveurs SMTP ne diffèrent que par la méthode de distribution finale (stockage dans un système de fichiers ou envoi à un serveur SMTP cible) ;
 +
 +
Le stockage des courriels doit se faire ainsi que décrit ci-dessous :
 +
 +
• le format de stockage doit être le format « mbox » ;
 +
 +
• chaque message entrant est ajouté au dossier de réception INBOX mais aussi à un dossier dont le nom est constitué de l’adresse de destination de l’enveloppe et de l’adresse source de l’enveloppe ;
 +
 +
• les courriels sont stockés dans un système de fichiers propre à l’utilisateur destination, ces systèmes de fichiers peuvent être implantés via des fichiers images ou via LVM ;
 +
 +
• les systèmes de fichiers contenant les courriels sont montés dans les conteneurs ad hoc.
  
 
=Préparation du projet=
 
=Préparation du projet=

Version du 6 septembre 2021 à 12:57


Présentation générale

  • Nom du projet : SEMail: Système de messagerie global mais individualisé
  • Réalisé par : Souleymane SOW
  • Superviseur du projet : Xavier REDON
  • Durée : 06 SEP 2021 - 24 JAN 2022

Objectif

L’objectif du projet sera de mettre en place un système de messagerie qui va gérer plusieurs utilisateurs et une boîte à lettres par utilisateur. Le système devra permettre à chaque utilisateur d’avoir un contrôle important sur sa messagerie grâce à un système de conteneur par utilisateur. Afin d’éviter des failles de sécurité, la solution à mettre en place devra assurer un contrôle facile sur ses différentes composantes et cela grâce à sa simplicité.

Description

Au niveau global, le système de messagerie se compose des éléments suivants :

• une machine virtuelle qui va contenir le système de messagerie ;

• un serveur DNS permettra de gérer les enregistrements MX liés aux adresses de courriels ;

• un serveur Web permettra de créer de nouvelles boites pour chaque utilisateur et d’en supprimer ;

• un serveur SMTP accessible d’Internet permet de stocker les messages reçus par les utilisateurs locaux dans les systèmes de fichiers liés aux utilisateurs ;

• un serveur SMTP accessible uniquement de la machine virtuelle permet d’envoyer les courriels vers Internet ;

• pour chaque utilisateur un conteneur Docker sera créé.

"Architecture global du système de messagerie"

Au niveau individuel, chaque conteneur permet :

• un accès en lecture et écriture au système de fichiers dans lequel sont stockés les courriels pour cet utilisateur par le serveur SMTP entrant Storage;

• un accès SSH dans le conteneur en utilisant un rebond par la machine virtuelle VM SEMail ;

• un accès réseau au serveur SMTP sortant SendMail permettant d’envoyer des courriels ;

• la possibilité d’installer des logiciels comme des lecteurs de messagerie suivant le choix de l’utilisateur.


Dans un but de prévenir les failles, les deux serveurs SMTP sont écrits à partir de zéro en respectant les consignes suivantes :

• Respect de la RFC 5321 mais avec des simplifications (pas d’implantation des commandes VRFY et EXPN, pas de routage et avec un système optionnel de gestion des messages non transmis avec succès) ;

• écriture en langage C avec la bibliothèque des sockets ;

• utilisation de bibliothèques dynamiques pour la gestion des connexions, une méthode pour la connexion sans chiffrement (ports 25 et 587) et une méthode pour la connexion avec chiffrement (port 465), ne pas implanter la commande STARTTLS ;

• chaque connexion est gérée par un processus léger ;

• utilisation de bibliothèques dynamiques pour la gestion des commandes SMTP, chaque commande est gérée par une fonction à laquelle est passée une structure représentant l’état du dialogue entre le client et le serveur ;

• prévoir un système optionnel pour le serveur SMTP sortant permettant de mettre en file d’attente les messages non remis à destination pour cause d’erreur transitoire du serveur SMTP cible ;

• gérer les enregistrements MX ainsi qu’IPv4 et IPv6 pour contacter les serveurs SMTP cibles ;

• les deux types de serveurs SMTP ne diffèrent que par la méthode de distribution finale (stockage dans un système de fichiers ou envoi à un serveur SMTP cible) ;

Le stockage des courriels doit se faire ainsi que décrit ci-dessous :

• le format de stockage doit être le format « mbox » ;

• chaque message entrant est ajouté au dossier de réception INBOX mais aussi à un dossier dont le nom est constitué de l’adresse de destination de l’enveloppe et de l’adresse source de l’enveloppe ;

• les courriels sont stockés dans un système de fichiers propre à l’utilisateur destination, ces systèmes de fichiers peuvent être implantés via des fichiers images ou via LVM ;

• les systèmes de fichiers contenant les courriels sont montés dans les conteneurs ad hoc.

Préparation du projet

Cahier des charges

Choix techniques : matériel et logiciel

Liste des tâches à effectuer

Calendrier prévisionnel

Etat de l'art

Réalisation du Projet

Semaine 1

Semaine 2

Documents Rendus