PSR SE2a4 2022/2023 G8 : Différence entre versions
Ligne 1 : | Ligne 1 : | ||
− | ='''PARTIE 1'''= | + | =''INTRODUCTION''= |
− | + | Connexion à la machine virtuelle :<br> | |
− | + | ''ssh root@193.48.57.180''<br> | |
+ | <br> | ||
+ | Installation du compilateur:<br> | ||
+ | ''apt update''<br> | ||
+ | ''apt install gcc''<br> | ||
+ | <br> | ||
+ | |||
+ | =''PARTIE 1: SMTPin''= | ||
+ | - Dans le fichier "in.c", nous nous assurons du bon fonctionnement de la fonction de gestion de courriels. => Ajout '''else{break;}''' pour arrêter l'envoi des mails.<br> | ||
+ | <br> | ||
+ | - Supprimer le fichier "mx.c". Il est inutile de garder le fichier car ce dernier est implémenté dans un autre dossier.<br> | ||
+ | <br> | ||
+ | - Pour Debugger SMTPin, nous avons ajouté des printf pour le suivi.<br> | ||
+ | ''#ifdef DEVERMINE''<br> | ||
+ | ''printf("statut =%d\n", statut);''<br> | ||
+ | ''printf("succes =%d\n", succes);''<br> | ||
+ | ''printf("code =%d\n", code);''<br> | ||
+ | ''#endif''<br> | ||
+ | - Ce qui nous permet de retrouver : ACCUEIL_CODE 220 / CONTINUE_DATA_CODE 354 / SUCCES_QUIT_CODE 250 et de les modifier dans les librairies ("smptp_private.h").<br> | ||
+ | - Ne pas oublier de changer les variables globales dans "smtp.c" | ||
+ | |||
+ | =''PARTIE 2: SMTPout''= | ||
+ | - Dans le fichier "out.c", nous déplaçons Maildir/tmp dans Maildir/new<br> | ||
+ | ''char nouveau_fichier[MAX_CHEMIN];''<br> | ||
+ | ''sprintf(nouveau_fichier,"%s/%s/%s/%Id_%010d",dossier,id,MAILDIR_NEW,capt,pid,messages);''<br> | ||
+ | ''rename(fichier, nouveau_fichier);''<br> | ||
+ | <br> | ||
+ | - Il faut lancer les serveurs SMTPin et SMTPout sur différents ports (!= du port 25) => Nous configurons SMTPout en eth0 et SMTPin en loopback.<br> | ||
+ | <br> | ||
+ | Pour ce faire :<br> | ||
+ | - Dans "SMPTout/args.h", nous ajoutons à la structure smtp_config une variable interface.<br> | ||
+ | ''char interface[CONFIG_MAX_INTERFACE];''<br> | ||
+ | - Dans "SMPTout/args.c", ajouter "interfaces" dans la structure options:<br> | ||
+ | ''{"interfaces", required_argument,0, 'i'},''<br> | ||
+ | - Dans "SMPTout/args.c", ajouter le case interface dans le switch:<br> | ||
+ | ''case 'i':''<br> | ||
+ | ''strncpy(config->interface,optarg,sizeof(config->interface)-1);''<br> | ||
+ | ''break;''<br> | ||
+ | - Dans "SMTPout/out.c":<br> | ||
+ | ''else if(config.interface!=NULL) interface = config.interface;''<br> | ||
+ | =''PARTIE 3: Tests''= |
Version du 13 juin 2023 à 22:37
INTRODUCTION
Connexion à la machine virtuelle :
ssh root@193.48.57.180
Installation du compilateur:
apt update
apt install gcc
PARTIE 1: SMTPin
- Dans le fichier "in.c", nous nous assurons du bon fonctionnement de la fonction de gestion de courriels. => Ajout else{break;} pour arrêter l'envoi des mails.
- Supprimer le fichier "mx.c". Il est inutile de garder le fichier car ce dernier est implémenté dans un autre dossier.
- Pour Debugger SMTPin, nous avons ajouté des printf pour le suivi.
#ifdef DEVERMINE
printf("statut =%d\n", statut);
printf("succes =%d\n", succes);
printf("code =%d\n", code);
#endif
- Ce qui nous permet de retrouver : ACCUEIL_CODE 220 / CONTINUE_DATA_CODE 354 / SUCCES_QUIT_CODE 250 et de les modifier dans les librairies ("smptp_private.h").
- Ne pas oublier de changer les variables globales dans "smtp.c"
PARTIE 2: SMTPout
- Dans le fichier "out.c", nous déplaçons Maildir/tmp dans Maildir/new
char nouveau_fichier[MAX_CHEMIN];
sprintf(nouveau_fichier,"%s/%s/%s/%Id_%010d",dossier,id,MAILDIR_NEW,capt,pid,messages);
rename(fichier, nouveau_fichier);
- Il faut lancer les serveurs SMTPin et SMTPout sur différents ports (!= du port 25) => Nous configurons SMTPout en eth0 et SMTPin en loopback.
Pour ce faire :
- Dans "SMPTout/args.h", nous ajoutons à la structure smtp_config une variable interface.
char interface[CONFIG_MAX_INTERFACE];
- Dans "SMPTout/args.c", ajouter "interfaces" dans la structure options:
{"interfaces", required_argument,0, 'i'},
- Dans "SMPTout/args.c", ajouter le case interface dans le switch:
case 'i':
strncpy(config->interface,optarg,sizeof(config->interface)-1);
break;
- Dans "SMTPout/out.c":
else if(config.interface!=NULL) interface = config.interface;