La messagerie pour les nuls - L©S ßlog - CyberSDF

L©S ßlog - CyberSDF



La messagerie pour les nuls

Le dimanche 10 juillet 2005 à 14:24:: Laurent - CyberSDF:: Monde de geek

Dans la série pour les nuls que j'ai commencé avec le billet le HTTP pour les nuls, voici la messagerie.

Je vais m'attacher à vous expliquer le fonctionnement des protocoles POP et SMTP (non je ne parlerais pas d'IMAP car à mon avis ce protocole mériterait un billet à lui tout seul) qui sont dédié respectivement à la réception et à l'émission de courriers électronique.

SMTP : Simple Mail Transfer Protocol

Je commence par ce protocole car il est le cœur de toute la messagerie internet, sans lui plus rien. Contrairement à certaines croyance, SMTP sert non seulement à envoyer mais également à recevoir les messages électronique.

Avant d'attaquer l'explication sur ce qu'est SMTP voyons ce qu'est un message électronique et comment il est formé.

Date: Sun, 10 Jul 2005 15:01:50 +0200
Return-Path: contact@cybersdf.org
To: contact@cybersdf.org
From: Laurent - CyberSDF <contact@cybersdf.org>
Reply-to: Laurent - CyberSDF <contact@cybersdf.org>
Subject: Envoi d'un message
Message-ID: <28421c40e5e0fb8de203c072b232749d@cybersdf.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="iso-8859-15"
Ici le contenu de mon message

Un message électronique comporte deux parties, un en-tête et le contenu. Comme vous pouvez le constater, ce message ne comporte qu'une seule ligne de contenu contre beaucoup (et j'en ai enlevé plein pour simplifier) dans son en-tête. L'en-tête sert beaucoup à votre gestionnaire de courrier. D'ailleurs la plupart des informations de cet en-tête vous sont affichées sans que vous vous en rendiez compte. On peu citer la Date ce qui lui permet de pouvoir les ranger, de qui il vient (FROM), a qui il est destiné (TO), son sujet (Subject). Puis il y a d'autres informations, toute aussi utile tels que à quelle adresse répondre (Return-Path et Reply-to) ce qui permet d'envoyer un message d'une certaine adresse et faire renvoyer les réponses sur une autre, un identifiant unique (Message-ID), puis des informations à propos de comment est formé le contenu que je ne détaillerais pas ici.

Bref nous avons ici le message mais cela suffit il pour l'acheminer de machines en machine ? A priori oui. Seulement il y a un gros problème la, il y a beaucoup d'informations et l'ordre des champs n'est définie nul part, d'ailleurs ils ne sont même pas obligatoires et analyser toutes les en-tête de chaque message demanderait beaucoup trop de temps et de puissance à un serveur pour que le fonctionnement soit optimum.
Il a donc été décidé de mettre le message dans une enveloppe et de se servir de cette enveloppe pour pouvoir acheminer le message.

L'enveloppe est créée par votre logiciel de gestion de courrier juste avant de l'envoyer au serveur. Elle se présente comme ça :

MAIL FROM:<adresse@expediteur.fr>
RCPT TO:<adresse@destinataire.fr>
DATA
Le message vu précédemment
.

Votre gestionnaire de courrier (appelé aussi MUA) n'étant pas lui même capable d'acheminer directement le message au destinataire, il va passer la main à votre serveur SMTP (aussi appelé MTA).
Le MUA va donc se connecter au MTA sur le port TCP 25, dédié à l'envoi de message puis tout deux vont commencer à dialoguer (<- correspond au MTA et -> au MUA) :

<- 220 'server domain' Service Ready
-> HELO 'sender domain'
<- 'server domain' OK
-> MAIL FROM:<adresse@expediteur.fr>
<- 250 OK
-> RCPT TO:<adresse@destinataire.fr>
<- 250 OK
-> DATA
<- 354 Start mail input; end with <CRLF>.<CRLF>
-> Ligne 1 du message
-> Ligne 2 du message
-> etc.
-> .
<- 250 OK
-> Quit
<- 221 21 'server' closing connection

Note : C'est dans l'enveloppe et uniquement dans l'enveloppe que sont indiqués les destinataires que vous avez mis en copie caché (CCI ou en anglais BCC) ; C'est pourquoi les destinataires qui sont soit principaux (TO) soit en copie (CC) ne les voient pas.

A partir de ces informations, le logiciel de transfert de mail (MTA) ou serveur SMTP à qui vous donnez la main pour qu'il se charge d'acheminer votre courrier sait que faire. A ce moment la, il ne dispose que de l'adresse de l'expéditeur (MAIL FROM) et de l'adresse du destinataire (RCPT TO) et du message, ce qui est bien peu.

En effet, on connaît le destinataire mais ou est il ? Quelle est la machine parmi les millions qui sont connectées à Internet à qui est destiné le message ?
Eh bien c'est prévu dans la gestion des noms de domaines. Lorsqu'un domaine dispose d'une fonctionnalité de messagerie, il va donner des noms de machines permettant l'échange de mail (mail exchanger). Exemple pour ceux de free.fr :

$ nslookup -type=mx free.fr
 free.fr mail exchanger = 30 mrelay2-2.free.fr.
 free.fr mail exchanger = 40 mx1-1.free.fr.
 free.fr mail exchanger = 10 mx.free.fr.
 free.fr mail exchanger = 30 mrelay1-2.free.fr.
 free.fr mail exchanger = 30 mrelay2-1.free.fr.

Vous pouvez voir que chez free.fr il y a 5 machines dédiées à la messagerie (peut être font elles autre chose en plus mais la, on s'en fou). Les machines disposent chacune d'une priorité (ici 10, 30 et 40), cela signifie que votre serveur SMTP (MTA) va essayer celle qui a le plus petit nombre en premier et si celle-ci ne répond pas dans les temps il passe à la machine suivante.
Bon la machine répond correctement, que se passe il entre votre serveur à qui vous avez donné votre message et le serveur de votre destinataire ? Eh bien exactement la même chose qu'entre votre MUA et votre MTA, seulement la, votre MTA se comporte comme un MUA.
Il se peu bien sur que votre message fasse le tour de la planète en se propageant de MTA en MTA et il sera donc autant de fois répliqué (ce qui est à mon avis un gros problème de ce protocole) puis effacé (enfin normalement) dès qu'il a été transféré. Une fois arrivé au bon endroit, le MTA du destinataire va déposer le message dans sa boite.

Un petit mot sur les pièces jointes :
Il faut savoir qu'a l'origine, SMTP n'acceptait pas du tout autre chose que du 7 bit (la fameuse table ASCII), il a fallu donc avoir recours à des bidouillages et autres astuces pour pouvoir envoyer autre chose. Cela signifie que les les caractères accentués et les pièces jointes d'un message sont transformés pour pouvoir être écrit dans la séquence DATA par des artifices qui ne sont pas le but de ce billet.
Il faut tout de même retenir que SMTP n'a pas été prévu pour le transfert d'énormes fichiers et que le faire est à vos risques et périls. En effet on se trouve face à plusieurs limitations :

  • Le temps d'occupation de votre MTA pour recevoir le mail que vous envoyez ; Trop l'occuper est un abus dans le sens ou vous bloquez le service à votre profit et rien ne vous dit que le logiciel ne va pas couper la communication en cours.
  • La place disque qu'occupe votre message dans la liste ; Si le serveur n'est pas suffisamment dimensionné cela peut avoir des conséquences non négligeables.
  • Le temps que le MTA va prendre pour envoyer votre message à un autre MTA ; Abus, car les autres messages, peut être plus urgents, attendent le temps de l'opération. Un administrateur peu donc décider que vous utilisez abusivement le service et vous bloquer son utilisation.
  • La place disque que prendra votre message dans la boite de réception du destinataire ; Abus car si vous remplissez complètement sa boite il ne peu plus recevoir de messages.

Bref, évitez d'envoyer d'énormes pièces jointes (énorme >= 1Mo) par e-mail. Non seulement le protocole n'a pas été étudié pour ça mais en plus c'est éthiquement critiquable, pour le transfert de fichier il existe un protocole dédié qui est le FTP.

POP : Post Office Protocol

Si vous utiliser une logiciel pour récupérer vos courriers électroniques (Mozilla Thunderbird, Evolution, Kmail, Outlook express, etc.) vous utilisez peut être le protocole POP dans sa version 3.
Le fonctionnement en est très simple, on peu d'ailleurs faire manuellement ce que fait son gestionnire de courrier :

  • On se connecte au serveur sur, généralement, le port TCP 110 : telnet mon-serveur-pop.fr 110
  • On s'authentifie en envoyant son nom d'utilisateur : user MonNomUtilisateur
  • Puis son mot de passe : pass MonMotDePasse
  • Envois la commande LIST pour avoir le nombre de messages disponible sur le serveur
  • Puis récupère le premier la liste avec RETR n (n étant le numéro du message)
  • Une fois le message récupéré, il le supprime du serveur en envoyant la commande DELE n
  • Dès que tous les messages sont récupérés, il se déconnecte avec la commande QUIT

En savoir plus :

Blogmark it ! :: trackback fermés :: fil rss des commentaires

Aucun trackback.

Commentaire(s)

1. Le lundi 13 mars 2006 à 01:43 :: biloune

heu bon moi, j'suis vraiment nulle... alors voila, j'ai envoyé un courrier avec confirmation de remise au destinataire et "message de priorité haute". J'ai reçu la notification du service de distribution : "messge relayé". Question : un message peut il être "relayé" si l'adressse
xxx@popom.com n'existe pas, mais bien le site www.pompom.com. passque pour être sure, j'ai envoyé un autre mail avec une adresse bidon au meme "popom.com"; et j'ai aussi eu une notification ''message relayé"... bizarre non. et je suis sure que l'adresse bidon est vraiment bidon. Je sais, c'est compliqué, mais si vous pouviez m'aider, ça serait chouette ! merci !

2. Le mardi 14 août 2007 à 11:35 :: PrelKikam

enter text? test, sorry



dfdf767df

                    

Les commentaires sont fermés.

Toutes les fautes d'orthographes présentes sur ce site sont protégées par la licence Logo Creative common Creative common

 |  Valid XHTML  |  Valid CSS  |  Dotclear  |  Design décliné de [ON]Simple par [ NikO ]
Hébergé par Typhon.Network