PSR SE2a4 2022/2023 G7 : Différence entre versions

De Wiki d'activités IMA
(PROGRESS)
(PROGRESS)
Ligne 1 : Ligne 1 :
 
= '''PROGRESS''' =
 
= '''PROGRESS''' =
Pour prévenir les failles, les deux serveurs SMTP seront écrits à partir de zéro en respectant la RFC 5321 mais avec des simplifications ;<br>
+
-''DONE'' : Pour prévenir les failles, les deux serveurs SMTP seront écrits à partir de zéro en respectant la RFC 5321 mais avec des simplifications ;<br>
Les serveurs doivent être codés en langage C en utilisant la bibliothèque des sockets ;<br>
+
-''DONE'' : Les serveurs doivent être codés en langage C en utilisant la bibliothèque des sockets ;<br>
Les commandes VRFY et EXPN qui permettent au client de vérifier si une messagerie est disponible pour la transmission, ne seront pas implémentées ;<br>
+
-''DONE'' : Les commandes VRFY et EXPN qui permettent au client de vérifier si une messagerie est disponible pour la transmission, ne seront pas implémentées ;<br>
Le routage des messages ne doit pas être implémenté et la gestion des messages non transmis est optionnel ;<br>
+
-Le routage des messages ne doit pas être implémenté et la gestion des messages non transmis est optionnel ;<br>
Un système doit être réalisé permettant au serveur SMTP sortant de mettre en file d’attente les messages non remis à destination pour cause d’erreur transitoire du serveur SMTP cible ;<br>
+
-Un système doit être réalisé permettant au serveur SMTP sortant de mettre en file d’attente les messages non remis à destination pour cause d’erreur transitoire du serveur SMTP cible ;<br>
Les communications peuvent ne pas être chiffrées, les communications non chiffrés sont reçues sur le port 25 ;<br>
+
-Les communications peuvent ne pas être chiffrées, les communications non chiffrés sont reçues sur le port 25 ;<br>
Les communications peuvent être chiffrées par TLS, les communication chiffrées peuvent être négociées directement sur le port 465 ;<br>
+
-Les communications peuvent être chiffrées par TLS, les communication chiffrées peuvent être négociées directement sur le port 465 ;<br>
Il doit être possible de basculer sur une communication chiffrée à partir du port 25 en utilisant les commandes EHLO et STARTTLS ;<br>
+
-Il doit être possible de basculer sur une communication chiffrée à partir du port 25 en utilisant les commandes EHLO et STARTTLS ;<br>
Chaque connexion doit être gérée via un processus léger (Thread) et chaque commande par une fonction à laquelle est passée une structure représentant l’état du dialogue entre le client et le serveur ;<br>
+
-Chaque connexion doit être gérée via un processus léger (Thread) et chaque commande par une fonction à laquelle est passée une structure représentant l’état du dialogue entre le client et le serveur ;<br>
Les serveurs SMTP doivent gérer les enregistrements MX permettant d’associer un nom de domaine à un serveur de messagerie, le recours aux enregistrements AAAA et A est à utiliser en cas d’absence de MX ;<br>
+
-''DONE'' : Les serveurs SMTP doivent gérer les enregistrements MX permettant d’associer un nom de domaine à un serveur de messagerie, le recours aux enregistrements AAAA et A est à utiliser en cas d’absence de MX ;<br>
Les serveurs SMTP doivent être contactables en IPv4 et en IPv6, ils doivent aussi prendre en charge IPv4 et IPv6 pour la transmission vers les serveurs SMTP cibles ;<br>
+
-Les serveurs SMTP doivent être contactables en IPv4 et en IPv6, ils doivent aussi prendre en charge IPv4 et IPv6 pour la transmission vers les serveurs SMTP cibles ;<br>
Pour la transmission vers les serveurs SMTP cibles, une communication chiffrée doit être préférée ;<br>
+
-Pour la transmission vers les serveurs SMTP cibles, une communication chiffrée doit être préférée ;<br>
Les deux serveurs ne diffèrent que par la méthode de distribution finale (stockage dans un système de fichiers ou envoi à un serveur SMTP cible) ;
+
-''DONE'' : Les deux serveurs 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 serveur SMTP sortant ne doit être lié qu’à l’interface réseau loopback ;<br>
+
-''DONE'' : Le serveur SMTP sortant ne doit être lié qu’à l’interface réseau loopback ;<br>
Le serveur SMTP entrant ne doit être lié qu’à l’interface réseau menant à Internet. <br>
+
-''DONE'' : Le serveur SMTP entrant ne doit être lié qu’à l’interface réseau menant à Internet. <br>
Ne doivent être stockés que les courriels à destination d’un utilisateur local ;<br>
+
<br>
Le format de stockage doit être le format maildir qui est une structure de répertoires particulière utilisée pour sauvegarder des courriers électroniques (le format maildir est très bien décrit sur Wikipédia);<br>
+
Qq précisions:<br>
Chaque message entrant doit être ajouté au dossier de réception Maildir propre à l’utilisateur de destination ;<br>
+
<br>
Le processus de remise stocke le message dans le sous-répertoire Maildir/tmp puis le déplace dans le sous-répertoire Maildir/new, déplacement doit être fait par la primitive rename ;<br>
+
-Ne doivent être stockés que les courriels à destination d’un utilisateur local ;<br>
Pour assurer un nom unique aux fichiers de stockage, utilisez la date en seconde (fonction time), le PID et un compteur commun à tous les flux d’exécution (utilisation de sémaphores indispensable). <br>
+
-''DONE'' : Le format de stockage doit être le format maildir qui est une structure de répertoires particulière utilisée pour sauvegarder des courriers électroniques (le format maildir est très bien décrit sur Wikipédia);<br>
 +
-''DONE'' : Chaque message entrant doit être ajouté au dossier de réception Maildir propre à l’utilisateur de destination ;<br>
 +
-''DONE'' : Le processus de remise stocke le message dans le sous-répertoire Maildir/tmp puis le déplace dans le sous-répertoire Maildir/new, déplacement doit être fait par la primitive rename ;<br>
 +
-''DONE'' : Pour assurer un nom unique aux fichiers de stockage, utilisez la date en seconde (fonction time), le PID et un compteur commun à tous les flux d’exécution (utilisation de sémaphores indispensable). <br>
 
<br>
 
<br>
  

Version du 10 février 2023 à 12:16

PROGRESS

-DONE : Pour prévenir les failles, les deux serveurs SMTP seront écrits à partir de zéro en respectant la RFC 5321 mais avec des simplifications ;
-DONE : Les serveurs doivent être codés en langage C en utilisant la bibliothèque des sockets ;
-DONE : Les commandes VRFY et EXPN qui permettent au client de vérifier si une messagerie est disponible pour la transmission, ne seront pas implémentées ;
-Le routage des messages ne doit pas être implémenté et la gestion des messages non transmis est optionnel ;
-Un système doit être réalisé permettant au serveur SMTP sortant de mettre en file d’attente les messages non remis à destination pour cause d’erreur transitoire du serveur SMTP cible ;
-Les communications peuvent ne pas être chiffrées, les communications non chiffrés sont reçues sur le port 25 ;
-Les communications peuvent être chiffrées par TLS, les communication chiffrées peuvent être négociées directement sur le port 465 ;
-Il doit être possible de basculer sur une communication chiffrée à partir du port 25 en utilisant les commandes EHLO et STARTTLS ;
-Chaque connexion doit être gérée via un processus léger (Thread) et chaque commande par une fonction à laquelle est passée une structure représentant l’état du dialogue entre le client et le serveur ;
-DONE : Les serveurs SMTP doivent gérer les enregistrements MX permettant d’associer un nom de domaine à un serveur de messagerie, le recours aux enregistrements AAAA et A est à utiliser en cas d’absence de MX ;
-Les serveurs SMTP doivent être contactables en IPv4 et en IPv6, ils doivent aussi prendre en charge IPv4 et IPv6 pour la transmission vers les serveurs SMTP cibles ;
-Pour la transmission vers les serveurs SMTP cibles, une communication chiffrée doit être préférée ;
-DONE : Les deux serveurs ne diffèrent que par la méthode de distribution finale (stockage dans un système de fichiers ou envoi à un serveur SMTP cible) ; -DONE : Le serveur SMTP sortant ne doit être lié qu’à l’interface réseau loopback ;
-DONE : Le serveur SMTP entrant ne doit être lié qu’à l’interface réseau menant à Internet.

Qq précisions:

-Ne doivent être stockés que les courriels à destination d’un utilisateur local ;
-DONE : Le format de stockage doit être le format maildir qui est une structure de répertoires particulière utilisée pour sauvegarder des courriers électroniques (le format maildir est très bien décrit sur Wikipédia);
-DONE : Chaque message entrant doit être ajouté au dossier de réception Maildir propre à l’utilisateur de destination ;
-DONE : Le processus de remise stocke le message dans le sous-répertoire Maildir/tmp puis le déplace dans le sous-répertoire Maildir/new, déplacement doit être fait par la primitive rename ;
-DONE : Pour assurer un nom unique aux fichiers de stockage, utilisez la date en seconde (fonction time), le PID et un compteur commun à tous les flux d’exécution (utilisation de sémaphores indispensable).

03/02/2023:

Def of done

Démarrage de la VM:
ssh pifou@capbreton
xen list pour voir la liste des VM déjà démarrées
xen create /etc/xen/dio1.cfg
Pour éteindre la VM : xen shut dio1

Installation de GCC:
ssh root@193.48.57.186
apt update
apt install gcc

Environment:
Serveur dans ~/ldelepla
scp -r ldelepla/ root@193.48.57.186:~


10/02/2023:

Def of done

Dans libs/Flux/mutex.c : ajout du free dans la fonction mutex_fin
Dégager le process qui écoute le port 25 : ss -tpln pour trouver le process et service <name> stop
On peut maintenant lancer les serveurs SMTP
Dans src/SMTPin/in.c ligne 56, vérification que la connexion est correctement faite et que le message s'est envoyé
Pour le test SMTP : [1]

10/02/2023:

10/02/2023: