Les protocoles de l’email, le SMTP (2ème partie)

Cet article est le 2ème de la série. Voici le début expliquant comment marche l’email.

Vous l’utilisez quotidiennement, mais comment marche l’email réellement ? Quels sont les protocoles de l’email, le SMTP et l’IMAP ? Comment fonctionnent-ils ? Par où passe un email ? Voici un récapitulatif des bases de l’email.

Le chemin de l'email

 

Les protocoles de l’email, le SMTP :

Le SMTP est le protocole d’envoi et de transfert des messages. C’est le même protocole qui est utilisé par le MUA (Mail User Agent) pour communiquer avec le MSA (Mail Submission Agent), mais aussi entre les MTA (Mail Transfert Agent). De nos jours, le protocole réellement utilisé est l’ESMTP (Extented SMTP ou Enhanced SMTP), mais ne nous attardons pas pour l’instant sur leurs différences.

Le SMTP, comme tous les protocoles de cette page, s’appuie sur TCP/IP. Pour faire simple, c’est un protocole réseau qui garde une notion de « session » (j’arrête là pour la théorie). Passons donc à la pratique.

Il est possible d’utiliser la commande « telnet » pour simuler une communication SMTP.

> telnet smtp.alinto.lan 25 
Trying 192.168.0.10...
Connected to smtp.alinto.lan.
Escape character is '^]'.
220 smtp.alinto.lan ESMTP Postfix

Cette commande lance une connexion TCP sur le serveur « smtp.alinto.lan » et sur le port 25 (qui est le port SMTP MTA).

Vous pouvez ensuite taper HELO (pour du SMTP) ou EHLO (pour de l’ESMTP). Dans notre cas, peu importe.

EHLO alinto.lan
250-smtp.alinto.lan
250-PIPELINING
250-SIZE 14680064
250-ETRN
250-STARTTLS
250-AUTH LOGIN DIGEST-MD5 PLAIN CRAM-MD5
250-AUTH=LOGIN DIGEST-MD5 PLAIN CRAM-MD5
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

Le serveur répond des codes « 250 » indiquant les fonctionnalités qu’il supporte.
Simulons ensuite l’envoi d’un email, commençons par indiquer l’émetteur avec « MAIL FROM: »

MAIL FROM: charles@alinto.lan
250 2.1.0 Ok

Le serveur répond par un code 250 – OK.
Continuons en indiquant un destinataire avec « RCPT TO: »

RCPT TO: test@marty.lan
250 2.1.5 Ok

Le serveur répond OK.

A noter que c’est souvent à ce moment là que le serveur réalise une série de vérifications :

  • « Qui » envoi un mail à « qui » ? En a t-il le droit ?
  • Si le serveur est celui d’où part le mail, l’émetteur existe t-il ?
  • Si le serveur est celui où arrive le mail, le destinataire existe t-il ?

En cas d’erreur, le serveur répondra par une erreur code 400 ou 500 (400 pour une erreur temporaire, 500 pour une erreur définitive).

On construit ensuite le contenu du mail. On tape « DATA » puis Entrée.

DATA
354 End data with <CR><LF>.<CR><LF>

Le serveur nous dit alors avec le code 354 de continuer. Il nous indique également de terminer le mail par une « Entrée », un point et encore une « Entrée »

Commençons la structure du mail. Un mail simple est composé d’en-têtes, d’une ligne vide, et d’un contenu.

On commence par indiquer les en-têtes, le sujet et l’émetteur:

Subject: test mail via telnet
From: bill@microsoft.com

Contenu du mail ligne 1/2
ligne 2/2

.
250 2.0.0 Ok: queued as 8431741F2B
QUIT
221 2.0.0 Bye
Connection closed by foreign host.

Notez les lignes vides. La première joue le rôle de la séparation entre les en-têtes et le corps du mail, la seconde fait partie de la chaîne « <CR><LF>.<CR><LF> » qui termine la commande DATA.

Le serveur nous répond alors 250 OK et nous donne son ID de queue interne. Cet ID permet le suivi de ce mail et pourra être utilisé en cas de problème.

On termine la connexion en tapant « QUIT » et la connexion se termine.

Voilà, félicitations, vous avez envoyé votre premier mail en ligne de commande !

Un petit mot sur le LMTP

Le LMTP n’est autre qu’une variante du SMTP. Il se différencie par son port TCP par défaut (24) et le fait qu’il retourne un ID/état par destinataire.

Parmi les protocoles de l’email, nous avons vu sur ce chapitre le SMTP. C’est l’un des plus importants et il reste aujourd’hui incontournable.

Conclusion

L’e-mail est un système vivant, autrement dit, la mise à jour et l’amélioration d’un tel système est vitale afin de garantir au mieux un service de qualité. C’est un travail à plein temps, si l’on veut fournir un service de messagerie SaaS, comme celui que nous proposons. Il est parfois délicat d’ajuster son comportement, mais la lutte contre le SPAM, aussi bien pour se protéger de l’envoi, que d’éviter d’en laisser passer tout en autorisant le trafic « propre » est un challenge de tous les jours.

Une réflexion sur “ Les protocoles de l’email, le SMTP (2ème partie) ”

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *