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

De Wiki d'activités IMA
(Séance 3)
(Séance 8)
 
(25 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 +
= Introduction =
 +
 
Nous allons dans ce wiki vous expliquer le déroulement de notre projet de mise en place d'une messagerie permettant d'envoyer et recevoir des mails
 
Nous allons dans ce wiki vous expliquer le déroulement de notre projet de mise en place d'une messagerie permettant d'envoyer et recevoir des mails
  
Ligne 8 : Ligne 10 :
 
refonte complet du wiki => ajout des notes prises en dehors. La mise à disposition de l'archive des notes n'a pas fonctionné donc finition du wiki avec les notes en plus
 
refonte complet du wiki => ajout des notes prises en dehors. La mise à disposition de l'archive des notes n'a pas fonctionné donc finition du wiki avec les notes en plus
  
== Mémo ==
+
= Mémo =
  
- Adresse IP de la VM : 193.48.57.165
+
* Adresse IP de la VM : 193.48.57.165
 +
* Connexion au serveur capbreton : ssh root@capbreton.plil.info
 +
* Connexion à la VM : ssh root@193.48.57.165
 +
* Dépôt des fichiers sur la VM : scp -r /home/pifou/Desktop/(/NOM/)/PSR-ReX-v6/ root@193.48.57.165:/
 +
* Vérification du port 25 (savoir s'il est occupé) : ss -tpln
 +
* Commande pour tuer un process : service 'nom_service' stop
 +
* Compiler le projet : make clean /puis/ make debug
 +
* Test mail avec nc :
  
- Connexion au serveur capbreton : ssh root@capbreton.plil.info
+
HELO regretable.site
 +
 +
MAIL FROM: root@regretable.site
 +
 +
RCPT TO: ajouter une adresse mail
 +
 +
DATA
 +
 +
Subject: 'objet'
 +
 +
[ajouter du texte]
 +
.
 +
 +
QUIT
  
- Connexion à la VM : ssh root@193.48.57.165
+
= Chronologie des séances =
  
- Dépôt des fichiers sur la VM : scp -r /home/pifou/Desktop/(/NOM/)/PSR-ReX-v6/ root@193.48.57.165:/
+
== Séance 1 ==
  
- Vérification du port 25 (savoir s'il est occupé) : ss -tpln
+
Cette séance n'a pas été fructueuse en termes de code pur et dur, mais elle nous as permis de bien comprendre le sujet et vers ou nous allions. Nous avons pu effectuer ceci :
 +
 
 +
* Lecture du sujet
 +
 
 +
* Découverte et Décryptage du code notamment les fichiers in.c, out.c
 +
 
 +
* Compilation du code et envoi de premiers mails tests
 +
 
 +
* Test de la VM, non concluant, à approfondir à la prochaine séance.
 +
 
 +
== Séance 2 ==
 +
 
 +
La séance a démarré par une explication des points les plus complexes du code.
 +
 
 +
La prise en main de VM fut plus concluante, nous avons pu nous y connecter via la commande ssh @root193.48.57.165
 +
 
 +
Tâches à faire après la période entreprise : focus sur SMTPin (analyser mx.c et in.c)
 +
 
 +
Travail de debug durant la période entreprise 1 :  
  
- Commande pour tuer un process : service 'nom_service' stop
+
* compréhension du in.c :
 +
**Contient les fonctions permettant de récupérer les MX.
 +
**On envoie un mail au MX ayant la priorité la plus basse. Si échec, on renouvelle l'envoi par un autre MX.
 +
**Problème rencontré : Quand un envoi est un succès, continue d'envoyer le mail aux autres MX. Il faut donc pouvoir arrêter le code quand l'envoi est OK.
  
- Compiler le projet : make clean /puis/ make debug
+
* Debug in.c => ajout de la ligne else{break;}
  
 +
== Séance 3 ==
  
- Test mail avec nc :
+
Durant la séance, nous avons testé le lancement du serveur sur la VM.
  
HELO regretable.site
+
Le problème que nous avons rencontré est que SMTPin et SMTPout se lancent sur le même port, à savoir le 25 (on ne peut pas utiliser les deux sur le même port). Il faut donc modifier le programme pour prendre en compte une nouvelle interface pour que le SMPTin et out utilisent deux interfaces différentes
  
MAIL FROM:<root@regretable.site>
+
Modificiation des codes codes args.c et args.h du SMTPout pour ajouter une interface
  
RCPT TO:<ajouter une adresse mail>
+
Bilan : Bug au moment du lancement du SMTPout, ne prend pas en compte l'argument -i
  
DATA
+
A faire : corriger le bug
  
Subject: 'objet'
+
== Séance 4 ==
  
[ajouter du texte]
+
On continue à essayer d'établir une liaison entre SMTP in et out -> Correction de programmes dans args.c args.h.
.
 
  
quit
+
Le programme ne fonctionne toujours pas, à poursuivre...
  
== Séance 1 ==
+
== Séance 5 ==
  
Cette séance n'a pas été fructueuse en termes de code pur et dur, mais elle nous as permis de bien comprendre le sujet et vers ou nous allions. Nous avons pu effectuer ceci :
+
Update : on arrive à lancer SMTPin et SMTPout simultanément.  
  
- Lecture du sujet
+
On a pour cela ajouté dans args.c :
  
- Découverte et Décryptage du code notamment les fichiers in.c, out.c
+
fprintf(stderr,"  -i|--interface <fichier> # lier a l interface eth0\n");
  
- Compilation du code et envoi de premiers mails tests
+
et
 +
 +
case 'i':
 +
  config->local=2;
 +
  strncpy(config->interface,optarg,sizeof(config->interface)-1);
 +
  break;
  
- Test de la VM, non concluant, à approfondir à la prochaine séance.
+
Puis dans args.h on a rajoute l'interface également :
  
== Séance 2 ==
+
// Constantes
 +
 +
#define CONFIG_MAX_PORT 16
 +
#define CONFIG_MAX_JOURNAL 1024
 +
#define CONFIG_MAX_CHEMIN 1024
 +
#define CONFIG_MAX_INTERFACE 1024
 +
 +
// Structure pour la configuration
 +
 +
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];
 +
  char interface[CONFIG_MAX_INTERFACE]; 
 +
  unsigned char local;
 +
};
 +
 +
// Prototype
 +
 +
int analyseArguments(int argc,char *argv[],struct smtp_config *config);
  
La séance a démarré par une explication des points les plus complexes du code.
+
Maintenant, on remarque que lorsqu'on essayer d'envoyer un mail, on remarque qu'on ne le reçoit pas.
  
La prise en main de VM fut plus concluante, nous avons pu nous y connecter via la commande ssh @root193.48.57.165
+
Objectif durant la période entreprise :
 +
*comprendre le SMTPin
 +
*debug du SMTPin
  
Tâches à faire après la période entreprise : focus sur SMTPin (analyser mx.c et in.c)
+
== Travail durant la période entreprise ==
  
Travail de debug durant la période entreprise 1 :
+
Travail de debug
  
1) compréhension du in.c :
+
* Premier point de debug fonction retour_generique dans smtp.c
*Contient les fonctions permettant de récupérer les MX.
 
*On envoie un mail au MX ayant la priorité la plus basse. Si échec, on renouvelle l'envoi par un autre MX.
 
 
Problème rencontré : Quand un envoi est un succès, continue d'envoyer le mail aux autres MX. Il faut donc pouvoir arrêter le code quand l'envoi est OK.
 
  
2) Debug in.c => ajout de la ligne else{break;}
+
static int retour_generique(FILE *dialogue,int succes,char *erreur,int taille){
 +
char ligne[MAX_LIGNE];
 +
if(fgets(ligne,MAX_LIGNE,dialogue)==NULL) return -1;
 +
ligne[MAX_LIGNE-1]='\0';
 +
int code;
 +
int statut=sscanf(ligne,"%d",&code);
 +
//debut nouveau
 +
#ifdef DEVERMINE
 +
printf("statut = %d\n", statut);
 +
printf("succes = %d\n", succes);
 +
printf("code = %d\n", code);
 +
#endif
 +
if(statut==1 && code!=succes){
 +
strncpy(erreur,ligne,taille-1);
 +
#ifdef DEVERMINE
 +
printf("ERROR generic return\n");
 +
#endif
 +
}
 +
return (statut==1 && code==succes)?0:-1;
 +
//fin nouveau
 +
}
  
== Séance 3 ==
+
* Un process s'est ajouté sur le port 25 (peut-être problème venant du pc de travail...) => on doit kill le process pour qu'on puisse lancer SMTPin
  
Durant la scéance, nous avons testé le lancement du serveur sur la VM.
+
* essai envoi mail avec NC => problème avec code de succès ; mail non reçu
  
Le problème que nous avons rencontré est que SMTPin et SMTPout se lancent sur le même port, à savoir le 25 (on ne peut pas utiliser les deux sur le même port). Il faut donc modifier le programme pour prendre en compte une nouvelle interface pour que le SMPTin et out utilisent deux interfaces différentes
+
* modification smtp_private.h pour changement de code
  
Modificiation des codes codes args.c et args.h du SMTPout pour ajouter une interface
+
== Séance 6 ==
  
Bilan : Bug au moment du lancement du SMTPout, ne prend pas en compte l'argument -i 25
+
Toujours le même problème avec le code de succès. Pas de mails reçu. Poursuivre le debug..
  
A faire : corriger le bug
+
== Séance 7 ==
  
== Séance 4 ==
+
Nous arrivons enfin à envoyer des mails mais pas d'objet ni correspondant et émetteur visible.
  
Continué à établir une liaison entre SMTP in et out -> Correction de programmes dans args.c args.h
+
En recevoir n'est pas encore résolu, mais le SMTPin fonctionne donc enfin en partie, ce qui représente déjà une avancée.
  
PB rencontré : Port 25 occupé soit par SMTP in soit par SMTP out donc out.c du SMTPout à corriger
+
Essayer de faire du debug rapide sur SMTPout qui doit reçevoir les mails et les archiver..
  
SMTP in à voir plus en profondeur à la prochaine séance pour l'envoi de mails.
+
Test avec NC en début de wiki
  
== Séance 8 ==  
+
== Séance 8 ==
  
Nous arrivons enfin à envoyer des mails !
+
Finitions de mise en page du wiki
  
En recevoir n'est pas encore résolu, mais le SMTP fonctionne donc enfin en partie, ce qui représente déjà une avancée.
+
Codage sur smtp.out qui compile, mais pas de test effectué par manque de temps.
  
Pour cela, nous avons modifié le code de la manière suivante :
+
* Modifications de fonctions dans le out.c
  
RAJOUTER CODE SMTPIN QUAND ACCES A LA VM
+
* Création de repertoires dans le tmp avec le nom d'utilisateur pour respecter la structure de maildir

Version actuelle datée du 19 juin 2023 à 10:33

Introduction

Nous allons dans ce wiki vous expliquer le déroulement de notre projet de mise en place d'une messagerie permettant d'envoyer et recevoir des mails

Pour cela, nous avons choisi de décrire la manière dont nous avons évolué à chaque séance.

[Disclaimer]

Dernière mise à jour du wiki : 13/06/2023 refonte complet du wiki => ajout des notes prises en dehors. La mise à disposition de l'archive des notes n'a pas fonctionné donc finition du wiki avec les notes en plus

Mémo

  • Adresse IP de la VM : 193.48.57.165
  • Connexion au serveur capbreton : ssh root@capbreton.plil.info
  • Connexion à la VM : ssh root@193.48.57.165
  • Dépôt des fichiers sur la VM : scp -r /home/pifou/Desktop/(/NOM/)/PSR-ReX-v6/ root@193.48.57.165:/
  • Vérification du port 25 (savoir s'il est occupé) : ss -tpln
  • Commande pour tuer un process : service 'nom_service' stop
  • Compiler le projet : make clean /puis/ make debug
  • Test mail avec nc :
HELO regretable.site

MAIL FROM: root@regretable.site

RCPT TO: ajouter une adresse mail

DATA

Subject: 'objet'

[ajouter du texte]
.

QUIT

Chronologie des séances

Séance 1

Cette séance n'a pas été fructueuse en termes de code pur et dur, mais elle nous as permis de bien comprendre le sujet et vers ou nous allions. Nous avons pu effectuer ceci :

  • Lecture du sujet
  • Découverte et Décryptage du code notamment les fichiers in.c, out.c
  • Compilation du code et envoi de premiers mails tests
  • Test de la VM, non concluant, à approfondir à la prochaine séance.

Séance 2

La séance a démarré par une explication des points les plus complexes du code.

La prise en main de VM fut plus concluante, nous avons pu nous y connecter via la commande ssh @root193.48.57.165

Tâches à faire après la période entreprise : focus sur SMTPin (analyser mx.c et in.c)

Travail de debug durant la période entreprise 1 :

  • compréhension du in.c :
    • Contient les fonctions permettant de récupérer les MX.
    • On envoie un mail au MX ayant la priorité la plus basse. Si échec, on renouvelle l'envoi par un autre MX.
    • Problème rencontré : Quand un envoi est un succès, continue d'envoyer le mail aux autres MX. Il faut donc pouvoir arrêter le code quand l'envoi est OK.
  • Debug in.c => ajout de la ligne else{break;}

Séance 3

Durant la séance, nous avons testé le lancement du serveur sur la VM.

Le problème que nous avons rencontré est que SMTPin et SMTPout se lancent sur le même port, à savoir le 25 (on ne peut pas utiliser les deux sur le même port). Il faut donc modifier le programme pour prendre en compte une nouvelle interface pour que le SMPTin et out utilisent deux interfaces différentes

Modificiation des codes codes args.c et args.h du SMTPout pour ajouter une interface

Bilan : Bug au moment du lancement du SMTPout, ne prend pas en compte l'argument -i

A faire : corriger le bug

Séance 4

On continue à essayer d'établir une liaison entre SMTP in et out -> Correction de programmes dans args.c args.h.

Le programme ne fonctionne toujours pas, à poursuivre...

Séance 5

Update : on arrive à lancer SMTPin et SMTPout simultanément.

On a pour cela ajouté dans args.c :

fprintf(stderr,"  -i|--interface <fichier> # lier a l interface eth0\n");

et

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

Puis dans args.h on a rajoute l'interface également :

// Constantes

#define CONFIG_MAX_PORT		16
#define CONFIG_MAX_JOURNAL	1024
#define CONFIG_MAX_CHEMIN	1024
#define CONFIG_MAX_INTERFACE	1024

// Structure pour la configuration

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];
  char interface[CONFIG_MAX_INTERFACE];   
  unsigned char local;
};

// Prototype

int analyseArguments(int argc,char *argv[],struct smtp_config *config);

Maintenant, on remarque que lorsqu'on essayer d'envoyer un mail, on remarque qu'on ne le reçoit pas.

Objectif durant la période entreprise :

  • comprendre le SMTPin
  • debug du SMTPin

Travail durant la période entreprise

Travail de debug

  • Premier point de debug fonction retour_generique dans smtp.c
static int retour_generique(FILE *dialogue,int succes,char *erreur,int taille){
char ligne[MAX_LIGNE];
if(fgets(ligne,MAX_LIGNE,dialogue)==NULL) return -1;
ligne[MAX_LIGNE-1]='\0';
int code;
int statut=sscanf(ligne,"%d",&code);
//debut nouveau
#ifdef DEVERMINE
printf("statut = %d\n", statut);
printf("succes = %d\n", succes);
printf("code = %d\n", code);
#endif	
if(statut==1 && code!=succes){
strncpy(erreur,ligne,taille-1);
#ifdef DEVERMINE
printf("ERROR generic return\n");
#endif
}	
return (statut==1 && code==succes)?0:-1;
//fin nouveau
}
  • Un process s'est ajouté sur le port 25 (peut-être problème venant du pc de travail...) => on doit kill le process pour qu'on puisse lancer SMTPin
  • essai envoi mail avec NC => problème avec code de succès ; mail non reçu
  • modification smtp_private.h pour changement de code

Séance 6

Toujours le même problème avec le code de succès. Pas de mails reçu. Poursuivre le debug..

Séance 7

Nous arrivons enfin à envoyer des mails mais pas d'objet ni correspondant et émetteur visible.

En recevoir n'est pas encore résolu, mais le SMTPin fonctionne donc enfin en partie, ce qui représente déjà une avancée.

Essayer de faire du debug rapide sur SMTPout qui doit reçevoir les mails et les archiver..

Test avec NC en début de wiki

Séance 8

Finitions de mise en page du wiki

Codage sur smtp.out qui compile, mais pas de test effectué par manque de temps.

  • Modifications de fonctions dans le out.c
  • Création de repertoires dans le tmp avec le nom d'utilisateur pour respecter la structure de maildir