Leçon 1 Leçon 2 Leçon3 Leçon 4 Leçon 5

Courrier électronique

Email est l’abréviation d’electronic mail ou courrier électronique. C’est une façon très rapide et économique d’envoyer un message à une autre personne disposant d’une adresse électronique. Email au sens large englobe tout transfert de données de type textuelles ou binaires échangées de manière point à point entre deux utilisateurs via un équipement informatique .

Pour qu’un message arrive à destination, il faut simplement respecter les règles de constitution d’une adresse email. Les adresses de l’émetteur et du destinataire doivent être rédigées de la même façon : nom_utilisateur@machine, le @ se prononçant "at". Le message débute invariablement par une en-tête contenant les champs From:, To: et Subject:. En quelques secondes, le message atterrira dans la boîte aux lettres du destinataire qui pourra le lire dès qu’il relèvera son courrier. Le destinataire n’a donc pas besoin d’être en ligne au moment où il reçoit son message

La création d'un message électronique est réalisée par un Mail User Agent ou MUA comme tin, trn/Mthreads, mail, elm, mush ou pine tandis que son envoi est réalisé par un Mail Transport Agent ou MTA

Simple Mail Transfer Protocol (SMTP)

SMTP fournit un mécanisme de transport et d'échange de courrier électronique entre utilisateurs d'Internet. SMTP utilise le port 25 et le protocole de transport TCP pour établir une connexion fiable. Ensuite, le client initialise une séquence de handshake puis émet une série de messages vers le serveur. En en-tête de ces messages, la machine distante reçoit ce qu'on appelle en jargon une enveloppe, c'est-à-dire une liste de tous les destinataires et de l'émetteur.

Le format des messages Internet est défini par le Request For Comments 822 tandis que SMTP est défini par les RFC 821 et 788. Le format d'un courrier électronique est des plus simples : une série d'attributs obligatoires (From: To: etc.) ou optionnels contenus dans l'en-tête du document suivi d'une ligne blanche puis du corps du message. Chaque ligne est constituée d'un nom de champ commençant à la colonne 1, suivi d'un double point, d'un blanc et du champ lui-même. Les lignes sont séparées par des caractères 'newline' (0x10).

From: adresse email de l'émetteur

To: adresse email récepteur

Subject: description du contenu du message

Reply-To: où doit être envoyée la réponse

Organization: l'organisation propriétaire de la machine émettant l'email

Message-ID: une chaîne de caractères générée par le protocole de transport d'email et unique pour ce message.

Received: chaque site par où transite ce courrier ajoute sa ligne incluant nom du site, message ID, date et heure, l'origine et la couche de transport.

Tous les échanges d'information passent par des séquences de commandes de quatre caractères et trois chiffres.

Le jeu de commandes clients comprend

Commande

Explication

HELO x

connexion réclamée à partir de x

MAIL FROM:x@y

courrier de x sur y

RCPT TO:x@y

pour x sur y

DATA

données suivent terminées par un <cr,lf>.<cr,lf>

QUIT

Terminer la connexion

RSET

Avorter la connexion

NOOP

Pas d'opération

Dès qu'un client se connecte sur le port 25 à un serveur SMTP, il reçoit si tout va bien un message de réussite 220 auquel il doit répondre par une commande HELO <domain> où domaine représente la portion nom de domaine de votre adresse électronique. De la même manière, la clôture d'une connexion s'opère via une commande QUIT qui recevra une réponse positive 221.

A la première réception d'un code 220, le client pourra entamer une transaction en envoyant une commande MAIL FROM: <adresse email> avec <adresse email> désignant ici l'émetteur du message électronique . Si le serveur accepte cette commande, il répondra par un code 250. La commande RCPT TO: <email> permet elle de définir l'adresse email du destinataire. Ici aussi, la commande se doit d'être sanctionnée par un code 250 OK.

Une réponse 251 signifie que le destinataire n'a plus d'acompte sur le serveur SMTP mais que son courrier est automatiquement redirigé vers son adresse actuelle. Si la réponse est 551, il vous faudra rediriger manuellement le courrier vers l'adresse indiquée au côté du message d'erreur.

L'échange du corps du message peut enfin commencer avec un commande DATA sans arguments. La réponse attendue du serveur est 354 qui signifie en quelque sorte "continuez, terminez votre message par une ligne ne contenant qu'un point". L'introduction d'une ligne avec un seul point induira une réponse 250 OK du serveur après quoi il suffira de clôturer la connexion avec une commande QUIT et la réponse 221.

Le jeu de réponses du serveur est par exemple

Commande

Explication

211

System Status

214

Help message

220

<domain> service ready

221

Closing connection

250

OK, completed

251

User not local; will forward to ...

354

Start mail input;end with .

421

Service not available, closing transmission channel

450

Requested mail action not taken; mailbox unavailable

451

Requested action not taken; error in processing

452

Requested action not taken; insufficient system storage

500

Syntax Error

501

Syntax error in parameters or arguments

502

Command not implemented

503

Bad sequence of commands

504

Command parameter not implemented

550

Requested action not taken; mailbox unavailable

553

User ambiguous

551

User not local; please try ...

552

Requested mail action aborted: exceeded storage allocation

553

Requested mail action aborted: mailbox name not allowed

554

Transaction failed

 Le premier des trois chiffres est le plus important :

  • 2xx évoque une réponse positive
  • 3xx indique une réponse positive intermédiaire
  • 4xx indique une action non achevée pour une raison temporaire
  • 5xx est le signe d'un échec absolu

 

Le second chiffre apporte son complément d'informations

  • x0x pour une erreur de syntaxe
  • x1x pour un message d'informations
  • x2x pour une information sur le médium de trnsmission
  • x5x pour des informations sur le système de courrier lui-même

 Sendmail est le plus connu et le plus populaire des agents SMTP (Simple Mail Transfer Protocol), utilisé sur des milliers de machines Unix.

Post Office Protocol ( POP )

 POP ( dont une autre acception est Point Of Presence) est une extension du protocole SMTP. Il autorise un utilisateur Internet à interagir avec une boîte aux lettres distantes sans être en permanence relié à Internet. SMTP a été pensé à l'époque des minis et des mainframes pour des utilisateurs connectés en permanence. Pour les PC actuels reliés par intermittence à Internet, il est préférable de recourir à un mécanisme "store and forward" comme Post Office Protocol. Le courrier sortant est toujours géré par SMTP mais le courrier entrant est reçu grâce à POP dans sa version 2 ou sa version 3.

Les commandes POP3 obligatoires sont :

 Commande

Explication

USER x

PASS x

QUIT

Clôture la session et en autorise une autre

STAT

Nombre de msg dans la boîte aux lettres et leur taille

LIST

Liste de msg avec la taille de chacun

RETR msg

Récupération d'un msg terminé par un "."

DELE msg

Marque msg pour effacement

NOOP

NO Operation - vérifie la connexion

LAST

Renvoie le numéro du dernier message

RSET

Enlève les marques pour effacement

Le jeu de réponses du serveur est

Commande

Explication

+OK

Commande acceptée

-ERR

Commande échouée

 

Le protocole POP3 n'est pas des plus sûrs : une connexion telnet sur le port 110 suffit à visualiser les messages de réception en clair.

 POP a un autre inconvénient majeur : il ne permet pas de sélectionner les messages à télécharger. Il oblige l'utilisateur à décharger la totalité de son courrier lors de chaque connexion au serveur SMTP. Un utilisateur itinérant n'ayant accès à Internet qu'à faible vitesse ou à coût exhorbitant n'a pas la liberté de retirer un seul message urgent en remettant à plus tard le relevé des messages publicitaires, junk mail et spam mail qui sont malheureusement devenus notre lot quotidien. Un message relevé à partir d'un cybercafé de passage ne sera pas conservé sur le serveur et ne sera donc plus disponible une fois rentré au bureau. Si une secrétaire indélicate se permet de lire un de vos messages, il est définitivement perdu pour vous et l'ensemble de vos collègues. Vous ne pourrez non plus contourner le téléchargement d'un message inutile style carte de voeux électronique de plusieurs Mégaoctets qu'il aurait été si simple d'effacer à même le serveur.

Internet Message Access Protocol ( IMAP )

IMAP est une solution aux lacunes de POP. Il s'agit d'un protocole plus récent capable d'opérer un relevé sélectif des messages d'une boîte aux lettres électronique. Mieux encore, il permet même de relever une seule partie d'un message constitué de plusieurs attachements de type MIME. Un programme client IMAP est capable d'extraire du serveur l'en-tête des messages sans en rapatrier la totalité des contenus. Un message lu n'est pas systématiquement retiré du serveur. L'effacement du message côté serveur est laissé à la libre appréciation de l'utilisateur qui peut reporter cette opération à une date ultérieure. Du coup, IMAP s'avère des plus appropriés pour la création de boîtes aux lettres partagées où plusieurs utilisateurs peuvent consulter la même boîte s ans priver les autres de son précieux contenu. Vous l'aurez compris, cette souplesse de traitement du courrier ne va pas sans une complexité croissante des programmes clients et serveurs, le serveur surtout étant mis à rude épreuve.

A cette exception, POP et IMAP fonctionnent de la même manière : ils dépendent tous deux du troisième protocole SMTP pour l'envoi du courrier.

POP traite le serveur comme un entrepôt de messages dont il vide le contenu à chaque passage. Tous les messages sont transférés vers le client où ils sont lus ou non, effacés ou non, traités ou non sans interaction ultérieure avec le serveur. IMAP, d'autre part, interagit avec le serveur en plusieurs étapes. IMAP peut se contenter de réclamer l'en-tête des messages, de transférer une partie d'un message ou sa totalité, de transférer la totalité de la boîte aux lettres ou non. La suppression des messages sur le serveur s'opère manuellement lors d'une intervention ultérieure. Le serveur peut donc faire office d'archive ou de boîte aux lettres partagées tant qu'un utilisateur n'a pas pris la décision d'en vider le contenu.

--------------------------------------------------------------------

Telnet

 Telnet est une commande vous permettant de vous connecter sur d’autres ordinateurs distants et d’y lancer des programmes. Telnet recourt au protocole de transport TCP. Une fois connecté, c’est comme si votre clavier était physiquement connecté à la machine distante. Tous les caractères que vous tapez sont envoyés à cette machine à l’exception du caractère ESC qui sert de caractère de contrôle. Avec Telnet, vous pouvez accéder à tous les services qui sont proposés par l’ordinateur hôte : exécuter des commandes Unix, consulter des catalogues, lancer des programmes comme archie ou wais. La commande n’est pas bien compliquée : telnet nom_de_la_machine_à_contacter.

Supposons que vous disposiez d’un compte à l’ULB et y accédiez par

% telnet is1.ulb.ac.be

Trying ...

Connected to is1.ulb.ac.be

Escape character is ‘^]’

SunOS UNIX

login : popol

password : dufrasne

is1% ls

is1% quit

Telnet utilise un caractère spécial qu'il insère dans le flux de données pour indiquer qu'il envoie des séquences spéciales de contrôle. Ce caractère est le code ASCII 255 ( 0xFF en hexadécimal). Ce caractère est appelé IAC pour "Interpret As Command". Le caractère IAC est suivi d'une autre commande. par exemple, l'envoi d'une séquence break se découpe en une séquence IAC, BRK ( codes 255 puis 243 ) insérée dans un segment TCP.

File Transfer Protocol ( FTP )

 FTP désigne à la fois un programme et le protocole qu’il utilise, le File Transfer Protocol. Son rôle est de transférer des fichiers d’un ordinateur à l’autre. Il existe des centaines d'applications FTP en mode texte ou en mode graphique. Toutes respectent à peu près les mêmes conventions.

La première opération est d’ouvrir une connexion avec un site distant en précisant son nom ou son adresse IP. La façon la plus simple est de faire passer ce nom dans la ligne de commande :

>ftp liege.rtfm.be ou ftp 194.78.19.132

Ou bien de lancer le programme FTP et à l’invite de commande, taper la commande :

ftp> open mail.best.be

La deuxième étape consistera à communiquer votre nom et votre mot de passe à la machine distante.

Si vous disposez d’un compte sur la machine, laissez votre nom d’utilisateur et votre mot de passe pour disposer de droits plus importants. Sinon vous pourrez toujours vous connecter sous le nom "anonymous" et laisser votre adresse email comme mot de passe.

Pour recommencer la procédure de login, vous pouvez utiliser la commande user suivie du nom d’utilisateur.

Pour transférer les fichiers, deux commandes sont à retenir : get pour downloader ou rapatrier un fichier vers votre machine, put pour uploader ou envoyer un fichier vers le site distant.

La syntaxe est identique dans les deux cas : put/get fichier_source fichier_destination. Avant de transférer un fichier, il vous faudra préciser à votre machine si le transfert doit s’opérer en mode texte ou en mode binaire. Pour cela, utilisez les commandes ASCII et BINARY.

Pour naviguer dans le répertoire arborescent de fichiers, vous disposez des commandes dir et ls pour afficher le contenu du répertoire courant. Pour obtenir un catalogue complet et récursif des fichiers ainsi que leurs attributs, utilisez la commande ls -LR. Le passage d’un répertoire à l’autre s’opère comme sur MS-DOS ou Unix avec la commande cd.

Enfin, les commandes Bye ou Quit permettront de sortir du programme ftp. La plupart des navigateurs World Wide Web peuvent aussi être utilisés pour des transferts de fichiers via FTP. Il suffit de spécifier comme Universal Resource Locator la commande ftp://ftp.site/nom_du_fichier.

 Nous noterons au passage que le serveur FTP utilise deux ports, 21 pour le contrôle des données et 20 pour le transfert de ces mêmes données. En cas de requête de transfert d'informations, un message de contrôle est envoyé sur le port 21 tandis qu'une connexion logique séparée est construite sur le port 20.

 Chaque logiciel client FTP dispose de son propre jeu de commandes propriétaire. Seules les quelques fonctions de base gardent leur nom original ( ls, dir, get, put, ascii, binary ). Voici par exemple la liste des commandes du client FTP inclus dans Windows 95.

 ! delete literal prompt send

? debug ls put status

append dir mdelete pwd trace

ascii disconnect mdir quit type

bell get mget quote user

binary glob mkdir recv verbose

bye hash mls remotehelp

cd help mput rename

close lcd open rmdir

Trivial File Transfer Protocol ( TFTP )

 Le Trivial File Transfer Protocol est un programme aux fonctionnalités réduites désigné pour être aisément implémenté dans des mémoires permanentes telles les EPROM. Il est principalement utilisé pour permettre à des stations sans disque dur de télécharger sur le réseau la portion initiale d'un système d'exploitation. Il est alors utilisé en conjonction avec un protocole de boot comme BOOTP. TFTP est également utilisé sur les routeurs lorsqu'il faut y télécharger une version plus récente d'une couche logicielle.

TFTP n'utilise pas TCP mais UDP. Il doit donc gérer son propre mécanisme de correction d'erreurs. Pour celà, il utilise un simple protocole d'acknowledgement basé sur un time out. Si un datagramme s'égare, l'émetteur reçoit un time out et réémet. Un datagramme à la sauce TFTP est de 512 octets. S'il est plus petit que 512 octets, c'est qu'il s'agit du dernier paquet de la transmission d'un fichier.

La requête initiale d'un client TFTP est émise sur le port 69 qui va renvoyer une nouvelle adresse de port pour la suite des transactions.

La principale fonction de TFTP est d'agir comme protocole "bootstrap". Ses exigences mémoire minimales, son emploi d'UDP en font un programme idéal pour charger sur des EPROMS de cartes réseau. Au démarrage d'une machine avec une telle EPROM, le protocole TFTP est automatiquement initialisé pour se connecter à un serveur et y télécharger les programmes nécessaires à son exploitation.

Boot Protocol ( BOOTP )

 BOOTP permet à une machine incapable de stocker sa propre adresse IP ou les couches TCP/IP nécessaires à sa connexion réseau d'envoyer un message broadcast sur le réseau et d'obtenir ces informations manquantes d'un serveur BOOTP. Un serveur BOOTP est à l'écoute des requêtes BOOTP et renvoie des réponses à partir d'une table de configuration ( bootptab) reprenant l'ensemble des caractéristiques des machines clients BOOTP du réseau.

 Les en-têtes de datagrammes BOOTP sont envoyés sous forme de datagramme UDP du port 68 d'un client vers le port 67 du serveur.

Les requêtes client BOOTP sont émises avec une adresse source 0.0.0.0 et une adresse de destination fixée à 255.255.255.255 ce qui permet au TCP/IP d'émettre un broadcast du datagramme BOOTP sur tout le réseau local. Soit un serveur BOOTP est présent sur cette portion de câble et il répond à la requête, soit un routeur décide de faire passer ces requêtes vers l'extérieur ou non.

Dynamic Host Configuration Protocol ( DHCP )

 DHCP est une amélioration du système BOOTP. Il pallie les limites de BOOTP en permettant l’allocation dynamique et centralisée d’une adresse IP à toutes les machines d'un réseau TCP/IP. Le serveur DHCP dispose d’une série d’adresses prédéfinies qu’il peut allouer aux clients en cours de connexion. Il dispose même d'une compatibilité descendante avec le protocole BOOTP.

Le client et le serveur DHCP sont des applications à la norme Windows Sockets permettant la configuration automatique de différents protocoles TCP/IP. On confie au serveur une fourchette d’adresses IP disponibles et quelques paramètres comme la passerelle par défaut, le serveur DNS, le NetBIOS Name Server etc.

Lorsqu’un client DHCP est activé pour la première fois, il envoie un message broadcast DHCP Discover à l’ensemble du réseau local. Tout serveur DHCP recevant ce paquet renvoie une réponse DHCP Offer contenant les paramètres de configuration suggérés. Le client évalue la proposition et répond avec un message DHCP Request. Le serveur termine la transaction par un message DHCP Acknowledgement.