IMA2a4 2019/2020 EC2 : Différence entre versions

De Wiki d'activités IMA
(Description du projet)
(Description du projet)
Ligne 15 : Ligne 15 :
 
Quelques directives spécifiques au serveur SMTP :
 
Quelques directives spécifiques au serveur SMTP :
  
* Le stockage des messages se fera par un exécutable dédié prenant en argument le nom d'utilisateur du destinataire et sur l'entrée standard le message lui-même. Les messages sont stocké dans un sous-répertoire de <code>/var/spool/</code>. On trouve dans ce répertoire un sous-répertoire par utilisateur. Les messages sont stockés dans le répertoire de l'utilisateur sous la forme d'un fichier de nom numérique représentant l'ordre de réception des messages. Un fichier d'extension <code>.status</code> est associé à chaque message pour indiquer les états de ce message. Il faut prendre soin de gérer les messages simultanés par l'utilisation d'un sémaphore.
+
* Le stockage des messages se fera par un exécutable dédié prenant en argument le nom d'utilisateur du destinataire et sur l'entrée standard le message lui-même. Les messages sont stocké dans un sous-répertoire de <code>/var/spool/</code>. On trouve dans ce répertoire un sous-répertoire par utilisateur. Les messages sont stockés dans le répertoire de l'utilisateur sous la forme d'un fichier de nom numérique représentant l'ordre de réception des messages. Un fichier d'extension <code>.status</code> est associé à chaque message pour indiquer les états de ce message. Il faut prendre soin de gérer les messages arrivant simultanément en utilisant la fonction système <code>lockf</code> sur le répertoire correspondant à la boite aux lettres.
 +
* Le serveur doit gérer deux sockets d'écoute. Une limitée à l'interface loopback et l'autre à l'interface permettant la connexion au réseau. Les deux sockets seront gérées par deux threads différents (utilisation de la fonction <code>lanceThread</code>). Seuls les clients connectés sur la première socket pourront envoyer des messages en externe. Les clients connectés à la seconde socket ne pourront qu'envoyer des messages locaux à la machine.
 +
* Pour préciser le répertoire de stockage des messages (<code>/var/spool/mail/</code> par défaut) et les suffixes des adresses locales utilisez des options courtes et longues (fonction <code>getopt_long</code>). L'option pour le suffixe peut être utilisée plusieurs fois (serveur local gérant plusieurs noms de domaines).
 +
*
  
 
=== Validation de l'épreuve ===
 
=== Validation de l'épreuve ===

Version du 11 juillet 2019 à 14:09

Présentation du projet

Contexte

La validation du semestre S8 dépend de la validation de cette épreuve complémentaire.

Objectif

Le but est de développer un système de messagerie personnelle très léger. Vous développerez plus particulièrement un serveur SMTP.

Description du projet

Vous développerez ce serveur SMTP sur le même modèle que le projet système réseau, en particulier concernant l'aspect structuré et multi-threadé.

Quelques directives spécifiques au serveur SMTP :

  • Le stockage des messages se fera par un exécutable dédié prenant en argument le nom d'utilisateur du destinataire et sur l'entrée standard le message lui-même. Les messages sont stocké dans un sous-répertoire de /var/spool/. On trouve dans ce répertoire un sous-répertoire par utilisateur. Les messages sont stockés dans le répertoire de l'utilisateur sous la forme d'un fichier de nom numérique représentant l'ordre de réception des messages. Un fichier d'extension .status est associé à chaque message pour indiquer les états de ce message. Il faut prendre soin de gérer les messages arrivant simultanément en utilisant la fonction système lockf sur le répertoire correspondant à la boite aux lettres.
  • Le serveur doit gérer deux sockets d'écoute. Une limitée à l'interface loopback et l'autre à l'interface permettant la connexion au réseau. Les deux sockets seront gérées par deux threads différents (utilisation de la fonction lanceThread). Seuls les clients connectés sur la première socket pourront envoyer des messages en externe. Les clients connectés à la seconde socket ne pourront qu'envoyer des messages locaux à la machine.
  • Pour préciser le répertoire de stockage des messages (/var/spool/mail/ par défaut) et les suffixes des adresses locales utilisez des options courtes et longues (fonction getopt_long). L'option pour le suffixe peut être utilisée plusieurs fois (serveur local gérant plusieurs noms de domaines).

Validation de l'épreuve

L'épreuve est validée si les sources sont lisibles et si le serveur supporte un test. Le test en question consistera à lancer le serveur sur une machine accessible d'Internet et à faire plusieurs essais d'envoi de messages. Un client de messagerie comme thunderbird sera configuré avec votre serveur STMP comme serveur d'envoi. Des messages à diverses adresses de courriels seront envoyés. Des messages seront aussi envoyés d'ailleurs sur Internet à destination de la machine sur laquelle se trouve votre serveur. Il sera vérifié que les messages sont bien sauvés sur le disque dans le format demandé.

Matériel nécessaire

Aucun.

Planning prévisionnel

Travail effectué

Documents