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.
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 :
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.
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 :
telnet mon-serveur-pop.fr 110user MonNomUtilisateurpass MonMotDePasseLIST pour avoir le nombre de messages disponible sur le serveurRETR n (n étant le numéro du message)DELE n QUITEn savoir plus :
Blogmark it ! :: trackback fermés :: fil rss des commentaires
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 !
Toutes les fautes d'orthographes présentes sur ce site sont protégées par la licence
Creative common
|
|
|
|
Design décliné de [ON]Simple par [ NikO ]
Hébergé par Typhon.Network