IMA4 2017/2018 P20

De Wiki de Projets IMA
Révision datée du 26 janvier 2018 à 10:33 par Mcreteur (discussion | contributions) (Feuille d'heures)



Solution de messagerie à base de conteneurs

Présentation générale

Description

Un système de messagerie électronique se compose de quatre éléments fondamentaux :

  • le Mail Transfert Agent ou MTA : permet d’acheminer le courriel d’un serveur à un autre. Le protocole généralement utilisé est le SMTP.
  • le serveur du protocole entrant : permet la réception et la distribution du courriel. Les plus généralement utilisés sont POP3 et IMAP.
  • le Mail Delivery Agent ou MDA : agent en charge de la gestion des boîtes aux lettres. Il est chargé de livrer le courriel dans la boîte du destinataire.
  • le Mail User Agent ou MUA : logiciel client de messagerie qui fournit un environnement pour la gestion du courriel.


Architecture-systeme-messagerie-electronique.JPG


Le but de ce projet est d'utiliser la technologie des conteneurs pour le déploiement de la solution de messagerie.

Les conteneurs sont en train de révolutionner le marché et les pratiques de la virtualisation. A des VMs, certes efficaces, mais lourdes qui s’appuient sur des hyperviseurs et qui demandent des OS invités, ils opposent un mode de virtualisation « light », directement enraciné dans le kernel de l’OS hôte. La virtualisation à base de conteneurs est une méthode de virtualisation dans laquelle la couche de virtualisation s'exécute au sein même du système d’exploitation. Cette approche permet d'améliorer les performances, puisqu'un seul et unique système d'exploitation (l'hôte) se charge des appels matériels. Elle permet également d'héberger sur un serveur beaucoup plus d'instances virtualisées que la virtualisation traditionnelle.

Objectifs

Permettre de déployer facilement un système de messagerie pour quelques utilisateurs grâce à la technologie des conteneurs. A partir de scripts Shell, on devra être capables de créer, lister ou supprimer des comptes de messagerie sur le serveur de messagerie.

Analyse du projet

Positionnement par rapport à l'existant

L'architecture de notre système de messagerie serait la suivante :

Architecture-envisagee.jpg


Ainsi, nous aurions :

  • Un conteneur avec le système principal contenant :
    • Un serveur SMTP pour la réception des différents courriels et la redistribution
    • Le Webmail
  • Un conteneur pour chaque compte de messagerie contenant :
    • Un serveur SMTP pour recevoir et envoyer les courriels
    • Un Mail Delivery Agent pour stocker les messages dans le système de fichiers du conteneur
    • Un serveur IMAP pour qu'un client de messagerie puisse récupérer les messages stockés


Il n'existe pas, à notre connaissance, de solution de messagerie à base de conteneur autre que sous forme de projet en cours de développement ou proposée par des particuliers.

Analyse du premier concurrent : PEPS

PEPS est une solution open source moderne de messagerie, partage de fichiers et serveur de collaboration encore en cours de développement qui tient à rivaliser à Gmail ou Dropbox en innovant. La particularité de cette solution est son chiffrement bout à bout qui permet d'éviter le stockage des clés de chiffrement sur le serveur. Il n'y a donc que l'expéditeur et les destinataires qui peuvent lire les messages échangés.

La partie serveur de cette solution se déploie sous forme de conteneur grâce à Docker.

Cette solution propose son propre Webmail et la gestion des comptes de messagerie est faite directement à partir de ce logiciel.

Nous n'avons pas trouvé d'informations concernant le déploiement de la partie utilisateur.

Analyse du second concurrent : docker-mailserver

docker-mailserver est un serveur mail fonctionnel à déployer sous forme de conteneur développé par un particulier. Le serveur est déployé en une ligne de commande et la création d'une adresse de messagerie se fait par l'utilisation d'un script Shell.

Cette solution ne propose que la partie serveur d'une solution de messagerie.

Scénario d'usage du produit ou du concept envisagé

Michel lance sa start-up avec son ami Robert. Il décide tout de suite de mettre en place un système de messagerie. Il déploie dans un premier temps le conteneur dans lequel se trouve le système principal de messagerie sur son serveur et effectue quelques réglages nécessaires. Ensuite, sa Start-up comptant 4 employés, il déploie 4 conteneurs utilisateurs, un pour chaque compte de messagerie. Le script createAccount.sh fourni avec la solution lui permet d'attribuer très rapidement, pour chaque conteneur, une adresse de messagerie.

Les utilisateurs peuvent alors consulter et échanger des mails à partir du Webmail à l'adresse lastartupdemichel.org. Leurs adresses de messagerie ont été créé par le script sous la forme box@nom_utilisateur.lastartupdemichel.org. Ils peuvent aussi accéder au conteneur associé à leur compte de messagerie par SSH.

Michel peut vérifier que les comptes de messagerie ont bien été créé en utilisant le script listAccount.sh qui liste tous les comptes de messagerie du système. Si un employé venait à quitter la Start-up, il pourrait supprimer le compte de messagerie associé à l'employé en utilisant le script deleteAccount.sh qui lui permet de supprimer un compte de messagerie, dont il précisera le nom d'utilisateur, en une ligne de commande.

Question difficile

Quel est l'interêt de l'utilisation des conteneurs par rapport aux solutions traditionnelles de messagerie ?

Réponse à la question difficile

L'utilisation de la technologie des conteneurs permettrait un déploiement rapide et facile du système de messagerie. Les utilisateurs pourraient se créer un compte de messagerie en deux ou trois lignes de code plutôt que de devoir entrer toutes leurs informations sur le web comme nous le faisons traditionnellement.

Préparation du projet

Cahier des charges

Choix techniques : matériel et logiciel

  • Gestion des conteneurs : Docker
  • Mail Transfert Agent : Postfix
  • Serveur IMAP : courier-imap
  • Mail Delivery Agent : Procmail
  • Mail User Agent :

Liste des tâches à effectuer

Calendrier prévisionnel

Réalisation du Projet

Feuille d'heures

Tâche Prélude Heures S1 Heures S2 Heures S3 Heures S4 Heures S5 Heures S6 Heures S7 Heures S8 Heures S9 Heures S10 Total
Analyse du projet 0
Wiki 0
Documentation 0
Constitution du conteneur principal 0
Constitution du conteneur utilisateur 0
Écriture des scripts 0
Test de la solution 0

Prologue

Semaine 1

Semaine 2

Documents Rendus