PSR SE2a4 2022/2023 G1 : Différence entre versions
(→14/06/2023) |
(→14/06/2023) |
||
Ligne 153 : | Ligne 153 : | ||
quit | quit | ||
− | Nous avous réussi | + | Nous avous réussi à recevoir un mail |
Version du 14 juin 2023 à 12:13
Sommaire
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-
puisss -tpln
: pour visualiser ce qui sur les ports et finalementservice 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 nc :
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.
Nous ajoutons donc dans smtp.c la vérification du ocde de CONTINUE_DATA avant d'envoyer le corps du texte.
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 )
14/06/2023
SMTPout debug
Nous avons ajouter dans out.c :
Créer la carte dans un fichier map afin d'utiliser l'option utilisateur -u:
ahlamelabkari: ahlamelabkari@detestable.site baptistedespalces: baptistedesplaces@detestable.site
Crée la structure du repertoire MAILDIR:
/tmp/id/tmp /new
Nous avons fait nos tests avec un ficher de test avec l'outil nc :
HELO detestable.site MAIL FROM:<baptiste.desplaces@polytech-lille.net> RCPT TO:<baptistedesplaces@detestable.site> DATA Subject: test azdazda daz saz da . quit
Nous avous réussi à recevoir un mail