TCSMP - Time-Cost Stamped Mail Protocol



Documents pareils
(Fig. 1 :assistant connexion Internet)

Vous y trouverez notamment les dernières versions Windows, MAC OS X et Linux de Thunderbird.

Le service FTP. M.BOUABID, Page 1 sur 5

18 TCP Les protocoles de domaines d applications

Mini-projet systèmes & réseau serveur de «tchatche»

Guide de configuration de la Voix sur IP

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration

Gestion des Clés. Pr Belkhir Abdelkader. 10/04/2013 Pr BELKHIR Abdelkader

VoIP et "NAT" VoIP et "NAT" 1/ La Traduction d'adresse réseau. 1/ La traduction d'adresse réseau. 1/ La traduction d'adresse réseau

Configuration d'un annuaire LDAP

Instructions relatives à l'adaptation de la messagerie électronique

[OUTLOOK EXPRESS WINDOWS MAIL]

Passerelle VoIP pour PBX

CONNECTEUR PRESTASHOP VTIGER CRM

FileSender par RENATER - Guide utilisateur

Le modèle client-serveur

Documentation pour l envoi de SMS

My.tentoo tel. 02/

Nécessité de concevoir un outil de recherche PDF Présentation des fonctionnalités d'indexation et de recherche... 3

Microsoft OSQL OSQL ou l'outil de base pour gérer SQL Server

Installation de la messagerie EMWAC IMS Sur Windows NT4 serveur ou Windows 2000 serveur

Les messages d erreur d'applidis Client

TP Protocoles SMTP et POP3 avec Pratiquer l algorithmique

Utiliser l'assistant mailing

AJOUTER UN COMPTE DE MESSAGERIE SUR UN SMARTPHONE

Université Ferhat ABBAS -Sétif

FinImportExport Documentation Utilisateur Gestion d'environnement dans Fininfo Market

Installation d un serveur DHCP sous Gnu/Linux

Guide d'initiation aux. certificats SSL. Faire le bon choix parmi les options qui s'offrent à vous en matière de sécurité en ligne. Document technique

Architecture distribuée

SOLUTION D ENVOI DE SMS POUR PROFESSIONNELS

Back up Server DOC-OEMSPP-S/6-BUS-FR-17/05/11

Architectures web/bases de données

Plan. Le système de transfert de fichiers d'internet. Introduction aux systèmes de transfert de fichiers Le protocole FTP.

I-Fax (fax par Internet)

Tutoriel : Comment installer une compte (une adresse ) sur un logiciel de messagerie (ou client messagerie)?

VLAN Virtual LAN. Introduction. II) Le VLAN. 2.1) Les VLAN de niveau 1 (Port-based VLAN)

Instruction pour le changement de la messagerie électronique

DHCP et NAT. Cyril Rabat Master 2 ASR - Info Architecture des réseaux d entreprise

Qu'est-ce que la messagerie électronique?

Fonctionnalité : «Comment effectuer un virement et récupérer un extrait de compte avec le nouveau protocole EBICS?»

EFIDEM easy messaging systems. EFIDEM SAS 3 rue de Téhéran Paris T : F : info@efidem.

Manuel d installation et d utilisation du logiciel GigaRunner

Club informatique Mont-Bruno Séances du 18 janvier et du 17 février 2012 Présentateur : Michel Gagné

1. Personnalisation de la page d'accueil

Tutorial et Guide TeamViewer

Création d'un questionnaire (sondage)

Solution de jeu concours «Scratch2Win»

Utilisation de l . Sommaire

Qu'est-ce que c'est Windows NT?

Couche application. La couche application est la plus élevée du modèle de référence.

Protocoles DHCP et DNS

Configuration d'un compte géré par plusieurs utilisateurs

Configurer son courrier électrique avec votre compte Abicom

PROJET TRIBOX-2012-A

Guide de configuration. Logiciel de courriel

Manuel d'utilisation d'apimail V3

Authentification avec CAS sous PRONOTE.net Version du lundi 19 septembre 2011

XEROX. WorkCentre 423/428. Guide de l utilisateur de Fax Internet

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

Configuration sécurité java

Principe de la messagerie électronique

EFIDEM easy messaging systems

Service Informatique et Télématique (SITEL), Emile-Argand 11, 2009 Neuchâtel, Tél ,

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

Manuel d'utilisation

USERGATE MAIL SERVER. Le serveur de messagerie pour les petites et moyennes entreprises :

Master d'informatique 1ère année. Réseaux et protocoles. Architecture : les bases

LISTES DE DISTRIBUTION GÉRÉ PAR SYMPA DOCUMENT EXPLICATIF DE ÉCOLE POLYTECHNIQUE

PARAMETRER LA MESSAGERIE SOUS THUNDERBIRD

GENERALITES. COURS TCP/IP Niveau 1

Proxy et reverse proxy. Serveurs mandataires et relais inverses

Aide Webmail. L environnement de RoundCube est très intuitif et fonctionne comme la plupart des logiciels de messagerie traditionnels.

Network musical jammin

Guide d installation et d utilisation

Manuel d utilisation JeResilieMonContrat.com. pour l agent

CREER UN ENREGISTREMENT DANS LA ZONE DNS DU DOMAINE

Projet Personnalisé Encadré #1

Initiation à la messagerie

Manuel d utilisation de la plate-forme de gestion de parc UCOPIA. La mobilité à la hauteur des exigences professionnelles

Manuel d utilisation NETexcom

Chapitre 1 Windows Server

La gestion des boîtes aux lettres partagées

PRODUITS Utiliser la messagerie intégrée dans VisualQie

Ingénérie logicielle dirigée par les modèles

FAQ Questions sur la «signature électronique»

Nouveautés d Outpost Firewall Pro 2008

MANUEL. de l application «CdC Online» pour Windows. Table des matières

Accès à la messagerie électronique HES

WinTask x64 Le Planificateur de tâches sous Windows 7 64 bits, Windows 8/ bits, Windows 2008 R2 et Windows bits

TAGREROUT Seyf Allah TMRIM

ORTIZ Franck Groupe 4. Terminal serveur pour administrer un serveur Windows à distance, client rdp linux.

BIND : installer un serveur DNS

WEBMESTRE : CONCEPTION DE SITES ET ADMINISTRATION DE SERVEURS WEB

Présentation du modèle OSI(Open Systems Interconnection)

Glossaire. Acces Denied

Gestionnaire d'appareil à distance de Bell Foire aux questions

Procédure d'authentification sur Extradoc

Transcription:

Projet de Master Informatique M1 Université Paris-Est Marne-la-Vallée Session TCSMP Time-Cost Stamped Mail Protocol TCSMP - Time-Cost Stamped Mail Protocol Documentation utilisateur,,,

Introduction... 3 I) Conception... 4 II) Client... 6 III) serveur TCSMP et TPOP... 8 A) Serveur TCSMP (relais)... 8 B) Serveur TPOP... 9 Conclusion... 10-2 -

Introduction L'objectif de ce projet est de définir un protocole, et sa RFC associée, qui permettrait de limiter l'envoie de mails indésirables. Pour cela on fait payer un coût à l'envoie du mail, le prix à payer est du temps CPU. L'expéditeur du mail doit résoudre un ou plusieurs "puzzles" envoyés par le ou les serveurs de destination et lui renvoyer pour avoir le droit de transmettre son email. La résolution d'un puzzle doit prendre quelques secondes par courrier électronique. Ainsi pour l'utilisateur courant, cela est transparent. Mais par contre cela pénalise très fortement un envoie massif de mails. L'implantation de ce protocole est codé en java et est expliquée dans le présent document. - 3 -

I) Conception Nous avons choisi de faire une extension de la RFC 5321 plutôt qu'un protocole indépendant car notre protocole est très proche de SMTP et que nous pouvons ainsi être plus facilement compatible avec les serveurs de mail ne suivant pas notre extension. Il s'agit donc de faire payer un coût à l'expéditeur du mail. Pour cela il est judicieux de trouver une méthode qui ne coûte du temps qu'au client, et pas au serveur. C'est pour cela que les puzzles sont intéressants. Les puzzles sont similaires à ceux du jeu "eternity", sauf que les symboles des différentes faces sont représentés par des caractères. Pour résoudre un puzzle de ce type, on doit mettre les pièces dans l'ordre pour que chaque face adjacente ait le même symbole. L'intérêt de ce type de puzzle est que la résolution est dur (complexité exponentielle), et il est très rapide de tester si une solution est correcte. On connait donc le temps moyen de résolution d'un puzzle selon sa taille, et cela permet de faire varier celle-ci selon le nombre de message envoyé par le client. En ce qui concerne la génération du puzzle, on se base sur l'algorithme suivant: Soit un puzzle de taille [2,2], on construit un tableau de taille [2* 2+1, 2+1] contenant des lettres tirée aléatoirement. Puis pour générer chaque pièce, on utilise la méthode suivante A D E F T Y V S G H X N C C C On obtient les pièces suivantes : A D F T T Y V S V S H X X B C C - 4 -

La résolution ce base sur l'algorithme "Brute Force", on teste l'ensemble des solutions possibles. On prend une pièce parmi les pièces disponible, on la place. On prend une suivante, on essaye de la placer et un ainsi de suite. Si on arrive à un blocage, aucune pièce ne peut être placé, on retire alors la pièce précédente, et on recommence en essayant de placer une autre pièce. Ceci jusqu'a trouver la bonne solution. Ce qui prend un certain temps. - 5 -

II) Client Notre protocole TCSMP, étant une extension du protocole SMTP, exige du client qu'il attende la réponse complète du serveur (qui peut être sur plusieurs lignes) avant de lui demander une autre commande. C'est pourquoi nous avons choisis de le faire en mode bloquant, avec une seule thread pour l'écoute et l'écriture. Le client ne pouvant ainsi pas passer à l'état suivant tant que la réponse n'était pas complètement arrivée. La classe Mailer gère la connexion avec le serveur. Une fois la connexion effectuée, elle délègue l'envoie du mail a la classe MAILService qui va communiquer avec le serveur et envoyer le mail. Toutes les informations contenu dans le mail sont stocké dans la classe Mail qui permet aussi de formater l'entête au format mime et d'encoder le message dans le bon Charset. Pour la communication avec le serveur, nous avons utilisé le design pattern State afin de rendre notre client modulaire et ainsi prévoir l'ajout de nouveau état (pour implémenter d'autres protocole d'extension de SMTP par exemple). Avec un état de QUIT, qui informe le serveur que le client va quitter (avec la commande QUIT) et ferme proprement les flux. Si jamais le serveur répond une erreur ou un message inattendu, notre client va directement dans l'état QUIT afin de fermer la connexion, le problème venant forcement du serveur puisque notre client respecte scrupuleusement la RFC. Nous avons également un état "puits" appelé lorsqu'un problème de connexion survient (fermeture par le serveur ou problème matériel) qui ferme tout simplement les flux de lecture et d'écriture pour clore proprement la connexion. - 6 -

Voici les états que nous avons mit en place pour respecter notre protocole. «L état d initialisation», c est lui qui débute l envoie des mails. Il débute par l attente du message de bienvenue du server. Ensuite il envoie «EHLO» au serveur. Puis il attend la réponse du serveur: les services qu il prend en compte. Si le serveur nous envoie autre chose que «250», on passe à l état «Quit». Sinon, on passe dans l état «domaine défini». En cas d exceptions, on passe à l état «fermeture de connexion». «domaine défini» Cet état s occupe d envoyer au serveur la commande «MAIL FROM», l adresse de l expéditeur. Puis on attend ca réponse, si il nous retourne «250» on passe à l état «d envoie des destinataires». Sinon, on passe à l état «Quit» «envoie des destinataires» Cet état s occupe d envoyer au serveur les destinataires du mail. Pour chaque destinataire, on envoie la commande «RCPT TO : <adresse >». Si le serveur valide tous les destinataires, on passe dans l un de ses états : o Si le serveur possède le service TCSMP, on passe à l état «envoie de la taille du message» o Sinon, on passe à l état «envoie des données» En cas d erreur on passe dans l état «Quit». «envoie de la taille du message» Cet état consiste à envoyer au serveur la taille du mail (en tête + corps du message). Si le serveur nous renvoie une erreur, on passe dans l état «Quit» Sinon, le serveur nous confirme qu il a bien reçu la taille et qu elle est valide, on attend qu il nous renvoi un puzzle. Si il nous renvoie bien un puzzle, on le stock et on passe à l état «résolution de puzzle». Sinon, on passe dans l état «Quit». «résolution de puzzle» Durant cet état, on résout le puzzle stocké par l état précédent. Ensuite, on renvoie la solution. La réponse du serveur peut être l une des suivantes : o Une erreur, la solution envoyée n est pas correcte. On passe dans l état «Quit» o Un nouveau puzzle à résoudre, on le stock et on repasse dans le même état ; o «250», la solution est correcte. Plus de puzzle à résoudre, on passe dans l état «envoie des données» «envoie des données» C est le dernier état, c est lui qui s occupe de l envoie des données du mail au serveur. - 7 -

III) serveur TCSMP et TPOP Dans la mesure où le service fournit par un serveur est basé sur une succession d'état, il s'est avéré pertinent d'utiliser le design pattern state afin de concevoir les différents serveurs. Les deux serveurs sont composés des sept états similaires à ceux du client. A) Serveur TCSMP (relais) Le serveur relais, est le serveur intermédiaire entre le client et le ou les serveurs finaux. Son but est de communiquer avec chacun des serveurs TPOP qui ont au moins un destinataire. Afin de mettre en pratique les avantages liés à l'utilisation des sélecteurs le serveur relais se résume à l'exécution de la thread main couplée à l'utilisation d'un sélecteur. Le choix de cette architecture impose de fait des lectures et écritures non-bloquantes. Notre protocole étant basé sur le concept de ligne, il a fallu s'assurer de récupérer des lignes complètes et donc de se munir d'un tampon. Le serveur TCSMP étant un relais, il fait office de serveur et aussi de client vis à vis du serveur TPOP. Sa partie client est très similaire à celle du client vue dans la partie II. Ce serveur ne transmet que les puzzles, il ne les vérifie et ne les résous pas. Il a par contre la charge - 8 -

de vérifier que les domaines des adresse de l'expéditeur et des destinataires sont valides. B) Serveur TPOP Le serveur TPOP est le serveur final. C'est aussi lui qui s'occupe du message une fois celui-ci transmis. Dans notre cas le message est affiché sur la sortie standard. Mais il est facile d'écrire dans un fichier pour simuler un vrai serveur TPOP. Contrairement au serveur relais, le serveur TPOP à la charge de générer des puzzles et de les transmettre. Il doit aussi vérifier la solution qu'on lui transmet, pour cela il vérifie que le puzzle est résolue, mais également que c'est le même. Contrairement au serveur relais, le serveur TPOP est multithreadé. Chaque client consomme une thread. Ce choix est motivé par la volonté de diversifier notre implémentation. Et ainsi de mettre en pratique plusieurs des techniques vues en cours. - 9 -

Conclusion Notre projet implémente donc notre RFC, et permet d'éviter de façon très efficace l'envoie de courrier électronique en grande quantité. De plus l'architecture du projet permet de modifier et/ou réutiliser chaque module très facilement. Ainsi cela lui permet une évolution aisée. De plus cela a permit de mettre en pratique nos connaissances techniques en Architecture et programmation réseau et en particulier la programmation de serveur et de client en java. Par ailleurs il s'agit d'un nouveau dossier qui nous permet de nous perfectionner dans la gestion de projet. - 10 -