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.
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.
Le parfait tutoriel pour réussir un entretien d’embauche 😀