Wednesday, October 18, 2006

L'architecture du courrier électronique via le protocole SMTP

Bonjour à tous,

Mon dernier message date du 15 juin 2006 ? C'est assez étonnant !

J'ai pensé, aujourd'hui, vous expliquait brièvement comment fonctionnait l'architecture des courriels qui transigent sur le Net avec le protocole SMTP. Je n'entrerai pas dans les détails, mais je crois avoir appris suffisamment de choses cet été (je travaillais dans ce domaine-là) pour vous vulgariser le sujet.

SMTP signifie Simple Mail Transfer Protocol (Protocole simple de transfert de courrier). Il s'agit du moyen qu'on les ordinateurs afin de s'échanger des courriels.

Pour la suite, je travaillerai avec deux utilisateurs, Alice et Bob, étant des utilisateurs respectif de la machine mail du domaine domainea.com (mail.domainea.com) et domaineb.com (mail.domaineb.com).

Ainsi, alice est un utilisateur du domaine domainea.com et bob, un utilisateur du domaineb.com.

Supposons donc qu'Alice (alice@domainea.com) veuille envoyer un message à Bob (bob@domaineb.com).

Alice ouvre son client de message (ou MUA, pour Mail User Agent), disons Thunderbird, et saisi son message électronique, puis clique sur "Envoyer". Le message part !

Les étapes suivantes seront effectuées afin d'envoyer le message à bon port :

1. Recherche de la machine gérant le courriel pour domaineb.com (MTA, pour Mail Transfer Agent).
2. Envoi du courriel à cette machine.
3. Ouverture d'une session SMTP sur la machine.
4. Envoi des informations.
5. Fermeture de la session SMTP sur la machine.


1. C'est bien beau d'envoyer un message à bob@domaineb.com, mais comment faire pour savoir exactement à quelle machine envoyer le message ? Le domaine domaineb.com pour contenir plusieurs machine ! La réponse est simple : c'est l'enregistrement MX de la zone DNS pour le domaine qui détermine la machine. Le système DNS permet de faire le pont entre domaineb.com (le nom du domaine) et les IPs des machines qui y sont associées. Je n'entrerai pas en détail pour le DNS, mais sachez qu'il existe un enregistrement MX (Mail EXchanger) qui dit quelle machine du domaine gère le courriel. Le client mail envoie donc le message au server d'envoi défini dans sa configuraiton (habituellement, ce sera mail.domainea.com)). Ce serveur cherche donc l'enregistrement MX de domaineb.com. Il détecte que c'est mail.domaineb.com. C'est donc là qu'on doit l'envoyer.

2. Le message est envoyé sur le port 25 à la machine. Autrement dit, une connexion est ouverte sur le serveur.

3. La machine mail.domainea.com ouvre une session SMTP sur mail.domaineb.com. Il commence par s'authentifier : "Bonjour, je suis mail.domainea.com !" avec la commande HELO.

HELO mail.domainea.com


Si tout se passe bien, mail.domaineb.com répond s'identifiant également avec un message de bienvenue (invisible pour l'utilisateur final, bien sûr !).

4. Puis, on envoie les données. On commence par spécifier l'expéditeur :

MAIL FROM: <alice@domainea.com>


Puis, le destinataire :

RCPT TO : <bob@domaineb.com>


Certains tests peuvent êtres effectués à différents niveaux. Plus spécifiquement, par exemple, le système recherche l'utilisateur bob sur la machine pour voir s'il existe. Si c'est le cas, on peut envoyer le message :

DATA


Après la commande DATA, le message est envoyé avec son entête.

Si tout se passe bien, c'est terminé ! Le message est placé dans la file d'attente, et une fois traité par le serveur, il sera mis dans la boîte de message de bob.


5. On peut alors fermer la session :

QUIT



À tout moment dans le processus, le serveur de domaineb.com peut retourner un message d'erreur (utilisateur invalide, adresse invalide, etc.). Dans ce cas-là, habituellement, il retourne un DSN (Delivery Status Notification, à ne pas confondre avec DNS) à l'expéditeur, qui est un message électronique indiquant que le message n'a pas passer.

Si une commande réussie, elle retourne le code 250. Sinon, les messages d'erreurs sont variés.

Il s'agit bien sûr d'une explication très sommaire. Pour tester ce processus en ligne, on aurait pu faire les commandes précédentes à l'aide de telnet :


telnet mail.domaineb.com

HELO mail.domainea.com
250 mail.domaineb.com

MAIL FROM: <alice@domainea.com>
250 Ok

RCPT TO: <bob@domaineb.com>
250 Ok

DATA
354 End data with .
SUBJECT: Allô !
Comment ça va ?
.
250 Ok: queued as AF1DB9B1E6

QUIT
221 Bye


Cela enverra le message directement à l'expéditeur sans passer par un MUA.

J'espère que je ne vous ai pas trop emmêlés ! Jusqu'à la prochaine fois, portez vous bien !

Cordialement,

-- Guimauve2

0 Commentaires :

Post a Comment

<< Accueil