PSR SE2a4 2022/2023 G1

De Wiki d'activités IMA
Révision datée du 12 juin 2023 à 17:02 par Bdesplac (discussion | contributions) (07/06/2023)

guide général

connexion à la VM

ssh root@193.48.57.163

Suivi chronologique du projet

03/02/2023

- prise en main du sujet. Lecture du code in.c qui est à l'origine des fonctions d’envois de message SMTP, on en déduit que le Out.c sera responsable de la réception des messages SMTP.
- dans le IN.c on voit les fonctions de récupérations des MX puis l'envoie du message en fonction de leur priorité jusqu’à ce qu'un envoie soit réussit.
- on a remarqué une erreur dans la fonction qui gère l'envoi des messages dans in.c. La fonction envoie le message sur chaque MX sans vérifier le succès de l'envoie , on a rajouter un break lorsque l'envoie était réussi afin d'envoyer des duplicatas.

int ss=connexionServeur(*p,SMTP_PORT_DEFAULT);
 if(ss==-1){
   ecritureJournal(JOURNIV_ERROR,JOURNAL_CONSERV);
   p++;
   continue;
 }
 FILE *dialogue=fdopen(ss,"a+");
 if(dialogue==NULL){
   perror("gestionCourriel.fdopen");
   exit(EXIT_FAILURE);
 }
 char erreur[MAX_ERREUR];
 int resultat=SMTP_dialogue(dialogue,donnees,erreur,MAX_ERREUR);
 fclose(dialogue);
 if(resultat<0) ecritureJournal(JOURNIV_DEVERMINE,JOURNAL_MXHS,*p);
 // Logguer l'erreur
 else{break;}
 p++;
 }

Le break dans le else était manquant et le programme allait donc tenter de se connecter via tous les mx qu'il avait réussi à initier une connexion ou non.

10/02/2023

connection à la VM
on se connecte à la VM en utilisant cette ligne ssh root@193.48.57.163

Point à réaliser sur le cahier des charges


  • 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 ê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 , il faut implémenter ces fonctions dans SMTP.C dans les libs
  • 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
  • ajouter le déplacement du message du tmp vers le répertoire new lorsque le message est complet.
  • pour la transmission vers les serveurs SMTP cibles, une communication chiffrée doit être préférée ; à vérifier avec la commande EHLO si le destinataire est capable de communiquer en chiffrée si oui on bascule en mode chiffrée avec STARTTLS
  • Port25: se connecter en administrateur: su- puis ss -tpln : pour visualiser ce qui sur les ports et finalement service nom du service stop


17/03/2023

envoie des fichier vers la machine virtuel avec la commande suivante scp -r /home/pifou/Desktop/baptiste/PSR-ReX-v6/ root@193.48.57.163:/

Afin de lancer le serveur sur la machine virtuel il faut rajouter une option lors du lancement de SMTPin et SMTP out afin de leur indiquer quelle interface utiliser pour qu'il puissent tous les deux utiliser le port 25

On ajoute dans args.h et args.c de SMTPout des lignes de code pour prendre en compte le paramètre -i, afin d'ajouter la possibilité d'avoir un interface:
args.h:

struct smtp_config{
 char journal[CONFIG_MAX_JOURNAL];  
 int niveau;
 char port[CONFIG_MAX_PORT];  
 char dossier[CONFIG_MAX_CHEMIN];  
 char carte[CONFIG_MAX_CHEMIN];  
 unsigned char local;
 char interface[CONFIG_MAX_INTERFACE]; 
};

args.c:

case 'i':
   strncpy(config->interface,optarg,sizeof(config->interface)-1);
   break;

22/03/2023

on peut désormais lancer les deux exécutables SMTPout avec l'option -i eth0 et SMTPin avec l'option -l
On va maintenant tester le serveur SMTP installer sur notre machine virtuelle


29/03/2023

Après les tests effectués sur la machine on a observer un problème sur la fonction d'obtention de l'adresse mail de réception, que nous avons corriger en remplaçant notre expression régulière pour récupérer les options de la commande MAIL que nous avions mal réalisé.

05/04/2023

A faire ce jour :
- essayer de voir d'ou vient le probleme de la résolution des MX lorsqu’il y en a plusieurs.
- essayer d'envoyer et de recevoir des messages via notre serveur SMTP via la commande sc localhost 25

En réalité le problème était que nous ne pouvions pas nous connecter à Gmail car l'école ne n'autorise pas les adresses IPV6.De plus Gmail refuse la reception du mail car notre message ne contient pas de message ID.

07/06/2023

Nous réessayons nos tests avec un ficher de test avec l'outil sc :

HELO detestable.site
MAIL FROM:<root@detestable.site>
RCPT TO:<baptiste.desplaces@polytech-lille.net>
DATA
Subject: test

azdazda
daz
saz
da
.
quit


Nous n'arrivons pas à envoyé un mail malgré aucun message d'erreur, nous essayons de le régler en ajoutant une vérification du code 354 avant d'envoyer le corps de la DATA.

static int dialogue_DATA(FILE *dialogue,char *corps,char *erreur,int taille){
int retour=dialogue_generique(dialogue,"DATA","",CONTINUE_DATA_CODE,erreur,taille);
if(retour) return retour;
if(fprintf(dialogue,corps)<0) return -1;
if(fprintf(dialogue,".\r\n")<0) return -1;
return retour_generique(dialogue,SUCCES_DATA_CODE,erreur,taille);
}

Nous avons réussi à envoyer un mail (MAIL FROM:<root@detestable.site>, ajouter sujet dans l’email )