Comprendre le SMTP – Le Protocole Derrière la Livraison des Emails

On juillet 12, 2024
11min read
Diana Lepilkina Content Specialist @Mailtrap
This is a cover image for an article that explains SMTP Protocol in detail

Le SMTP est un protocole fondamental utilisé dans la communication par email. Il est probablement derrière les emails que nous envoyons et recevons chaque jour. Bien que ce soit un protocole simple, il implique néanmoins de multiples composants et beaucoup de détails.

Dans cet article de blog, nous allons examiner de plus près le SMTP et explorer ses principales caractéristiques et fonctionnalités.

Qu’est-ce que le SMTP ?

SMTP ou Simple Mail Transfer Protocol est un protocole de couche d’application qui permet de transférer des emails entre différents serveurs et réseaux informatiques. Il le fait en définissant les règles de communication.

Le modèle original a été introduit en 1982. Selon le RFC 821, l’utilisateur crée la demande de connexion. En réponse, le sender-SMTP initie une connexion bidirectionnelle avec le receiver-SMTP. En termes modernes, ce sont respectivement le client SMTP et le serveur SMTP. Le client SMTP et le serveur SMTP communiquent par commandes et réponses (plus d’informations à ce sujet plus loin), similaires à des conversations dans la vie réelle.

Le RFC 821 a également défini le modèle d’utilisation du SMTP. Vous pouvez voir le schéma dans l’illustration ci-dessous.

Diagramme expliquant l'utilisation du SMTP

Une fois la connexion établie, le client SMTP transfère les en-têtes, les destinataires, les messages (y compris les pièces jointes) et toutes les données au serveur SMTP étape par étape. Lorsque la transmission est terminée, la connexion sera fermée.

Par définition, la forme complète du SMTP est lorsque les clients SMTP supportent le relai, les files d’attente d’emails et les fonctions d’adresse alternative. C’est ce qu’on appelle un SMTP entièrement fonctionnel. Si ces fonctions ne sont pas supportées, le SMTP n’est pas entièrement fonctionnel. Dans ce cas, les RFC pertinents recommandent d’utiliser le protocole de soumission de messages à la place.

Gardez en tête que le SMTP peut uniquement envoyer des messages simples, c’est-à-dire du texte brut sans pièces jointes. Nous utilisons un protocole séparé, Multipurpose Internet Mail Extensions, MIME (RFC 2045), pour envoyer des pièces jointes, des corps de messages dépassant les limites de caractères imposées par le SMTP, des messages dans des langues autres que l’anglais, et des formats HTML/CSS.

MIME est un protocole d’extension – il améliore les capacités du SMTP, mais il ne fonctionne pas séparément. La plupart des services d’email modernes sont compatibles avec MIME.

Qu’est-ce que l’ESMTP ?

ESMTP ou Extended Simple Mail Transfer Protocol a été introduit pour la première fois en 1995 dans le RFC 1869. L’objectif était de créer une structure unifiée pour toutes les futures extensions. Les extensions visent à ajouter des fonctionnalités qui ne sont pas intégrées par défaut au SMTP. Le RFC 5321 a consolidé et rendu obsolète les documents précédents.

ESMTP utilise une nouvelle commande EHLO pour initier la connexion. Il permet également l’utilisation de paramètres supplémentaires dans les commandes MAIL FROM et RCPT TO du SMTP. En conséquence, l’ESMTP supprime la limite de 512 caractères pour les paramètres supplémentaires et ne la laisse que dans les cas où des paramètres supplémentaires ne sont pas définis.

Aujourd’hui, ESMTP et SMTP sont largement utilisés. Si la commande EHLO n’est pas supportée, la connexion devrait revenir au SMTP et à sa commande HELO.

En parlant d’extensions, nous devrions également mentionner l’extension SMTP-AUTH, qui ajoute une étape d’authentification au processus. Cela signifie que le client souhaitant envoyer un email doit se connecter au serveur de messagerie en utilisant son nom d’utilisateur et son mot de passe. Bien que l’authentification SMTP ne protège pas contre l’usurpation, elle est une mesure de sécurité importante.

Qu’est-ce que le SMTPS ?

SMTPS ou Simple Mail Transfer Protocol Secure est une méthode qui sécurise le SMTP avec l’aide des protocoles TLS (Transport Layer Security) ou SSL (Secure Sockets Layer). Ces couches de sécurité chiffrent les messages pour empêcher les spammeurs ou les usurpateurs de voir le contenu des emails.

Bien que le SSL soit encore largement utilisé, le TLS (plus précisément, sa version 1.3) est considéré comme le protocole le plus sûr pour le chiffrement des emails. Pour plus d’informations sur la sécurité SMTP, lisez notre article de blog dédié.

Types de SMTP

Le RFC 5321 distingue quatre types de systèmes SMTP :

  • SMTP d’origine est le premier système qui interagit avec internet lorsqu’il introduit l’email ;
  • SMTP Delivery est le système qui reçoit les emails d’internet et les livre aux destinataires ;
  • SMTP Relais relaie les emails entre les serveurs SMTP ou les MTAs (plus d’informations sur la signification de l’agent de transfert ci-dessous) sans modifier le message d’une quelconque manière ;
  • Gateway SMTP ou passerelle SMTP transfère également les emails entre différents serveurs mais, contrairement au relais SMTP, elle est autorisée à transformer le message si nécessaire. Les passerelles SMTP sont généralement des pare-feu qui réécrivent les adresses, ou des serveurs SMTP intermédiaires.

Infrastructure du SMTP

Comme nous l’avons vu plus haut, les principaux composants du modèle SMTP sont l’utilisateur, le Sender-SMTP (client SMTP) et le Receiver-SMTP (serveur SMTP). Cependant, les agents d’email participent également au processus d’envoi et de réception des emails. De plus, le modèle SMTP inclut le relais SMTP dans des scénarios spécifiques. Voyons ce que chacun d’eux signifie ainsi que leur fonction.

Diagramme de l'infrastructure du SMTP

Serveur SMTP

Le serveur SMTP est une application pour envoyer des emails. Il reçoit des emails de fournisseurs de services de messagerie (Gmail, Yahoo!, Apple Mail, AOL, etc.) et les transfère à d’autres serveurs. Ceux-ci peuvent être d’autres serveurs SMTP ou un serveur de messagerie entrant.

Le serveur de messagerie SMTP peut être local ou basé sur le cloud. Un serveur SMTP local est une bonne option pour ceux qui ne veulent pas dépendre des serveurs tiers. D’un autre côté, un serveur SMTP hébergé dans le cloud nécessite moins d’efforts et peut être plus sécurisé dans la plupart des cas.

Agents d’Email

Il y a quatre agents principaux :

  • MUA (Mail User Agent) est le fournisseur de services de messagerie que nous avons mentionné plus haut. C’est une application ou un site web que vous utilisez pour envoyer et recevoir des emails.
  • MSA (Mail Submission Agent) reçoit les emails du fournisseur de services de messagerie, vérifie ses en-têtes et s’assure que les adresses sont correctement indiquées.
  • MTA (Mail Transfer Agent) est un programme d’envoi d’emails qui traite et transfère les emails. Il reçoit les messages du MSA. La plupart des MTAs modernes assument les responsabilités du MSA. Dans ce cas, le transfert de message n’inclura pas de MSA. Les MTAs les plus populaires sont Sendmail, Postfix et Exim.
  • MDA (Mail Delivery Agent) est l’agent final avant que vos emails soient livrés au serveur SMTP du destinataire, puis récupérés via des serveurs d’email entrants (IMAP ou POP3).

Notez que les limites de responsabilités entre les agents peuvent être floues par moments, mais elles restent utiles à des fins illustratives. Dans le monde réel, les MUAs, les MTAs et les serveurs SMTP sont les composants les plus essentiels de la livraison des emails.

Relais SMTP

Le relais SMTP est le processus de transmission des emails entre les serveurs SMTP hébergés sur différents domaines (de @gmail.com à @yahoo.com, par exemple).

Les MTAs vérifient si les noms des domaines sont les mêmes. Si c’est le cas, le relais SMTP ne se déclenchera pas. En revanche, si les domaines ne sont pas les mêmes, les MTAs interrogeront les enregistrements du Domain Name System (DNS) pour trouver l’adresse IP du domaine du destinataire. Une fois l’adresse IP localisée, ils achemineront le message entre un ou plusieurs MTAs (relais SMTP) jusqu’à ce qu’il soit finalement livré au serveur SMTP du destinataire.

Comment fonctionne le SMTP ?

Une session SMTP commence lorsque le client ouvre une connexion Transmission Control Protocol (TCP, parfois appelée TCP/IP) avec le serveur SMTP. Le serveur répond par un message d’ouverture, exprimé par le code 250. Ce processus est souvent appelé une poignée de main SMTP.

Le client envoie ensuite une commande HELO (EHLO pour ESMTP) et s’identifie. Il suit souvent la commande avec le nom du domaine ou l’adresse IP. En termes non techniques, le client dit : “Bonjour, je m’appelle John le Client, j’envoie un email de gmail.com, et mon IP est 192.0.2.0”. Le serveur répondra à nouveau par le code 250.

Le serveur SMTP envoie la commande HELO au client SMTP

Ensuite, l’étape de transfert de l’email commencera. Le contenu de l’email sera transféré étape par étape avec les commandes MAIL FROM (john@gmail.com), RCPT TO (oliver@yahoo.com), et DATA (‘Hey, comment ça va?’). Si le serveur accepte la transaction, le client transférera les en-têtes de l’email. Il est nécessaire d’utiliser un indicateur de fin de ligne (point ‘.’) une fois que tout a été transmis.

Connexion SMTP

Le serveur répondra avec le code 250 si la transaction est réussie. Le client initiera la terminaison de la connexion SMTP avec la commande QUIT, et le serveur fermera le canal de transmission avec le code 221.

Ceci est, bien sûr, un exemple simplifié sans relais SMTP, transfert, passerelles, ou codes d’erreur. Pour plus d’informations à ce sujet, veuillez consulter le RFC 5321.

Qu’en est-il de la file d’attente SMTP ?

La file d’attente SMTP est un ensemble d’emails en attente de livraison. Les emails sont généralement mis en file d’attente lorsque le serveur SMTP récepteur n’est pas prêt à accepter les emails, ou lorsque vous envoyez de grands volumes en même temps. Lorsque le serveur répond, les emails seront livrés un par un. La file d’attente SMTP est une sorte de tampon entre vous et le serveur récepteur.

Commandes et réponses SMTP

Nous avons mentionné certaines des commandes et réponses SMTP dans l’exemple ci-dessus. Cependant, lors de l’envoi d’emails avec SMTP, vous pouvez rencontrer d’autres commandes et réponses.

En général, les commandes sont des chaînes de caractères alphabétiques se terminant par <CRLF>. Si des paramètres supplémentaires suivent, les caractères se termineront par <SP>. 

Les réponses sont des codes de terminaison numériques qui peuvent être positifs ou négatifs. En règle générale, elles sont suivies d’une chaîne de texte.

Les commandes et les réponses sont composées d’un ensemble de caractères ASCII.

Commandes 

  • HELO/EHLO – initie le début de la session SMTP.

Syntax: "EHLO" SP ( Domain / address-literal ) CRLF ou "HELO" SP Domain CRLF

  • MAIL FROM – initie la transaction d’email et inclut le chemin inverse et parfois des paramètres optionnels.

Syntax: MAIL FROM:<reverse-path> [SP <mail-parameters> ] <CRLF>

  • RCPT TO – indique le(s) destinataire(s) et inclut leur adresse email (soit forward-path) comme argument.

Syntax: RCPT TO:<forward-path> [ SP <rcpt-parameters> ] <CRLF>

  • DATA – demande la permission du serveur pour transférer des données et le fait une fois qu’il reçoit une réponse positive.

Syntax:  "DATA" CRLF

  • VRFY – demande au serveur de vérifier si la boîte de réception dans l’argument existe sur l’hôte local.

Syntax: "VRFY" SP String CRLF

  • EXPN – fait la même chose que VRFY mais pour la liste d’envoi.

Syntax: "EXPN" SP String CRLF

  • NOOP – vérifie la capacité du serveur à répondre.

Syntax: "NOOP" [ SP String ] CRLF

  • QUIT – initie la terminaison de la connexion.

Syntax: "QUIT" CRLF

  • HELP – demande au serveur de vérifier quelles commandes il supporte. Il peut inclure une commande spécifique comme argument.

Syntax: "HELP" [ SP String ] CRLF

  • RSET – réinitialise la connexion SMTP et efface tous les tampons et tables d’état. La connexion SMTP sera rétablie à l’état initial.

Syntax: "RSET" CRLF

Le protocole SMTP peut également supporter certaines commandes ESMTP, telles que STARTTLS, AUTH, et d’autres.

Résponses 

Réponses positives courantes

  • 250 – l’action demandée est correcte ou terminée
  • 211 – statut du système ou réponse à HELP
  • 220 – <domain> le service est prêt
  • 221 – <domain> fermeture du canal de transmission
  • 354 – début de la saisie de l’email (répond généralement à la commande DATA)

Réponses négatives ou codes d’erreur

  • 500 – erreur de syntaxe ou commande non reconnue
  • 503 – mauvaise séquence de commandes
  • 252 – le serveur ne peut pas vérifier l’utilisateur. Il acceptera toujours le message et tentera de le livrer (répond à la commande VRFY)
  • 450 – boîte de réception indisponible
  • 510 – adresse email invalide

Ports SMTP

Les ports SMTP sont des points de communication qui aident à identifier l’emplacement exact des adresses internet. Les ports les plus courants utilisés avec SMTP sont 25, 465, 587, et 2525.

  • 25 est le plus ancien port SMTP, mais son utilisation pour la soumission d’emails n’est plus courante. Comme il ne dispose pas de mécanismes de sécurité, les spammeurs l’exploitent lourdement. Pour cette raison, les fournisseurs de services internet (ISP) bloquent généralement le port numéro 25. Il est recommandé de l’utiliser uniquement comme port de relais.
  • 465 est plus sécurisé par rapport au 25, mais ce n’est pas un port SMTP officiel et il est maintenant déprécié. Il supporte le chiffrement SSL. Il est toujours recommandé d’éviter de l’utiliser autant que possible.
  • 587 est le port SMTP par défaut recommandé avec STARTTLS. Presque tous les fournisseurs de services d’email le supportent.
  • 2525 est une alternative au 587. Il peut être utilisé lorsque 587 est bloqué ou indisponible. 2525 n’a jamais été reconnu comme un port SMTP officiel. Néanmoins, la plupart des ISP autorisent les transactions via ce port.

Comparaison entre SMTP, IMAP et POP3

A part SMTP, les protocoles d’email les plus courants sont IMAP et POP3. SMTP est un serveur de messagerie sortant utilisé pour envoyer et livrer des emails. IMAP et POP3 sont des protocoles d’accès aux messages utilisés pour récupérer les messages entrants depuis le serveur de messagerie.

IMAP, Internet Message Access Protocol, est un protocole qui se connecte au serveur et télécharge les messages sur demande. Les messages ne seront pas supprimés une fois la connexion terminée. Avec IMAP, les utilisateurs peuvent accéder à leurs emails depuis n’importe quel ordinateur ou appareil.

POP3 ou Post Office Protocol 3 se connecte également au serveur, mais il télécharge tous les messages reçus. Une fois cela terminé, il supprimera tous les emails du serveur. Contrairement à IMAP, POP3 est dépendant de l’appareil.

Différences entre IMAP, POP3 et SMTP

Plus d’informations sur les différences entre ces protocoles sont disponibles ici ainsi que dans notre vidéo dédiée.

Comment envoyer des emails avec SMTP

L’un des principaux avantages du SMTP est qu’il permet d’envoyer facilement des emails depuis différentes applications ou appareils. La plupart des langages de programmation permettent aux utilisateurs de router les emails sortants via SMTP soit nativement, soit avec l’aide de différentes bibliothèques. Contrairement à l’API Web (ou Email API), l’intégration SMTP ne nécessite pas de compétences avancées en codage.

Vous aurez besoin d’identifiants SMTP fonctionnels (tels que l’hôte, le port, le nom d’utilisateur, le mot de passe et le chiffrement) et du langage de programmation pertinent pour accomplir cette tâche. Vous pouvez consulter notre article de blog récent pour plus de détails à ce sujet.

SMTP en tant que service – test et envoi

Le SMTP (ou, plus précisément, le serveur SMTP) est fourni aux utilisateurs en tant que service pour deux principaux objectifs – le test et l’envoi.

En termes de test, le service SMTP implique un serveur Fake SMTP qui capture les emails sortants. De cette façon, les emails n’arrivent pas les véritables boîtes de réception, créant un environnement sûr pour les tests.

En ce qui concerne l’envoi d’emails, le service SMTP est synonyme de service de relais SMTP. Les fournisseurs d’email ont leurs propres serveurs SMTP qui permettent aux utilisateurs d’envoyer des emails marketing ou transactionnels.

Idéalement, ces deux services SMTP peuvent être combinés en un seul outil robuste tel que Mailtrap.

Mailtrap est une Plateforme d’Email Delivery qui combine Email Testing et Email API/SMTP. C’est une infrastructure complète d’emails qui permet aux utilisateurs de tester le serveur SMTP, d’envoyer des emails avec, et de surveiller leur performance avec des analyses exploitables.

Email Testing est une Sandbox qui capture tout le trafic SMTP dans une boîte de réception virtuelle et élimine les risques de spammer les utilisateurs. Vous pouvez facilement inspecter et déboguer vos emails en staging avec des vérifications HTML/CSS ou anti-spam, consulter des informations techniques, ou utiliser des fonctionnalités de transfert manuel/automatique. Email Testing fournit plusieurs boîtes de réception pour différents projets et étapes de produit.

Boîte de réception Mailtrap pour l’Email Testing

Email API/SMTP est une infrastructure créée pour avoir des taux de délivrabilité d’emails élevés. Avec son Email API et son SMTP Service, l’intégration est fluide et sans effort. Tout ce que vous devez faire, c’est vérifier votre domaine et choisir la méthode d’intégration préférée. Une fois cela fait, vous pouvez joindre les boîtes de réception des destinataires en quelques secondes.

Email API/SMTP dispose également d’analyses approfondies exploitables avec des rapports détaillés et des tableaux de bord avec une vue d’ensemble qui vous permettent de rester au top de vos métriques de délivrabilité.

Article by Diana Lepilkina Content Specialist @Mailtrap