Sans le protocole réseau standard de l’Internet moderne, l’envoi de documents, de cartes élec­tro­niques ou de vidéos etc. ne serait tout sim­ple­ment pas du tout possible. En effet, lorsque vous envoyez un email, ce dernier ne va pas di­rec­te­ment au des­ti­na­taire mais traverse un processus de com­mu­ni­ca­tion complexe avec de nom­breuses instances avant qu’il ne l’atteigne.

Free Cloud Server Trial
Serveurs Virtuels Privés de niveau en­tre­prise
  • Serveurs pour les dé­ve­lop­peurs basés sur KVM
  • Évo­lu­ti­vité flexible, jusqu'au Cloud d'en­tre­prise
  • Pay-as-you-go : fac­tu­ra­tion à la minute, selon l'uti­li­sa­tion

Qu’est-ce que le protocole SMTP ?

SMTP est l’abré­via­tion de « Simple Mail Transfer Protocol », ce qui peut se traduire en français par « protocole simple de transfert de courrier ». Il s’agit d’un protocole réseau texte orienté connexion de la famille des pro­to­coles Internet et à ce titre situé sur la septième couche du modèle OSI. Comme tout autre protocole réseau, il contient des règles pour une com­mu­ni­ca­tion correcte entre les or­di­na­teurs d’un réseau. SMTP est spé­ci­fi­que­ment res­pon­sable de l’envoi et de la trans­mis­sion des emails d’un ex­pé­di­teur à un des­ti­na­taire.

Depuis sa sortie en 1982 en tant que suc­ces­seur du « Mail Box Protocol » dans Arpanet, SMTP est devenu le protocole standard pour l’envoi d’emails. Pour l’in­ter­naute lambda, cependant, la procédure du SMTP reste largement invisible, puisqu’elle est exécutée en arrière-plan par le programme de mes­sa­ge­rie cor­res­pon­dant. Ce n’est que si le logiciel, l’ap­pli­ca­tion Webmail dans le na­vi­ga­teur ou encore l’ap­pli­ca­tion de mes­sa­ge­rie mobile ne définit pas le protocole SMTP par lui-même lors de la création d’un compte, qu’il doit alors être configuré ma­nuel­le­ment pour assurer un trafic email fluide.

Remarque
Sendmail a été l’un des premiers Mail Transfer Agents (MTA) à supporter le protocole SMTP.

Voici un aperçu des adresses de serveur SMTP et des ports SMTP pour certains des four­nis­seurs de mes­sa­ge­rie :

Four­nis­seur de mes­sa­ge­rie Adresse serveur SMTP Port SMTP
Yahoo smtp.mail.yahoo.com 587
GMX mail.gmx.net 587
Free smtp.free.fr 587
Gmail smtp.gmail.com 587 (TLS/STARTTLS), 465 (SSL)

Comment fonc­tionne le processus SMTP ?

Com­prendre le processus du protocole SMTP signifie également com­prendre le fonc­tion­ne­ment d’un email. Le processus se déroule en principe comme suit :

  1. Le client SMTP, c’est à dire l’ex­pé­di­teur, té­lé­charge l’email sur le serveur SMTP, c’est à dire le serveur d’email sortant du four­nis­seur de mes­sa­ge­rie cor­res­pon­dant. Ceci s’effectue via une ap­pli­ca­tion Webmail dans le na­vi­ga­teur ou un programme de mes­sa­ge­rie (tech­ni­que­ment un « Mail User Agent » abrégé en MUA), comme Windows Live Mail ou bien Mozilla Thun­der­bird.
  2. Le serveur SMTP contacte alors le serveur DNS, qui recherche l’adresse IP du serveur SMTP cible (également appelé « Mail Delivery Agent », MDA en abrégé), qui est stockée pour l’adresse du des­ti­na­taire du message.
  3. Le serveur SMTP envoie l’email via un ou plusieurs « Mail Transfer Agents » (MTA) au serveur SMTP cible. Chacune de ces opé­ra­tions de transfert est effectuée selon le protocole SMTP.
  4. Le serveur SMTP de des­ti­na­tion (cible) stocke tem­po­rai­re­ment l’email dans le stockage tem­po­raire d’email.
  5. Le des­ti­na­taire MUA té­lé­charge l’email via IMAP ou POP3.

Comment fonc­tionne une session SMTP ?

L’in­te­rac­tion entre le client SMTP et le serveur SMTP men­tion­née dans la première étape de la procédure SMTP re­pré­sente la session SMTP réelle. Le reste de la procédure SMTP, c'est-à-dire le transfert de l’email via SMTP du serveur vers le des­ti­na­taire, est traité dans un article séparé. Chaque session se compose d’une séquence de commandes SMTP provenant du client et de réponses sous forme de codes d’état provenant du serveur.

Vue d’ensemble des commandes SMTP

Selon les spé­ci­fi­ca­tions SMTP ap­pli­cables, chaque im­plé­men­ta­tion du protocole réseau doit prendre en charge au moins les huit commandes suivantes cons­ti­tuées de ca­rac­tères ASCII 7 bits :

Commande SMTP Sig­ni­fi­ca­tion
HELO « Hello » – Le client se connecte avec son nom d’or­di­na­teur et démarre la session avec.
MAIL FROM Le client nomme l’ex­pé­di­teur de l’email.
RCPT TO « Recipient » – Le client nomme le des­ti­na­taire de l’email.
DATA Le client initie la trans­mis­sion de l’email.
RSET Le client in­ter­rompt la trans­mis­sion initiée, mais maintient la connexion entre le client et le serveur.
VRFY/EXPN « Verify »/ « Expand » – Le client vérifie si une mes­sa­ge­rie est dis­po­nible pour la trans­mis­sion du message.
NOOP Le client demande une réponse du serveur pour éviter une dé­con­nexion due à un délai d’attente.
QUIT Le client termine la session.

Vue d’ensemble des codes d‘état du serveur

Le serveur répond à chacune de ces commandes SMTP du client par un code de statut ou d’état à trois chiffres com­pre­nant un message en texte clair. Pour une meilleure com­pré­hen­sion, nous avons traduit ces messages en français dans le tableau suivant :

Code de statut Message texte (tra­duc­tion en français)
  Codes de statut qui indiquent que le serveur a exécuté la commande avec succès :
200 (nons­tan­dard success response)
211 Demande de statut système ou d’aide système
214 Demande d’aide pour l’exécution d’une commande
220 Le serveur est prêt pour la session SMTP.
221 Le serveur met fin à la connexion
250 OK – Commande exécutée
251 OK – Aucun uti­li­sa­teur local dis­po­nible, l’email est redirigé
252 OK – L’adresse du des­ti­na­taire ne peut pas être vérifiée, la trans­mis­sion est toujours en tentative.
253 OK – Les messages sont pa­ra­mé­trés sur « en attente »
  Codes de statut qui indiquent que le serveur a compris la commande, mais qu’il a besoin d'in­for­ma­tions sup­plé­men­taires pour la traiter :
354 Le serveur démarre la réception de l’email
  Codes de statut qui indiquent que le serveur a détecté une erreur tem­po­raire, mais que la commande peut encore être exécutée :
421 Serveur non dis­po­nible, la connexion est terminée
450 Commande non exécutée, mes­sa­ge­rie non dis­po­nible
451 Exécution de la commande in­ter­rom­pue en raison d’une erreur locale
452 Commande non exécutée, car il n’y a pas assez de mémoire système.
  Codes de statut qui indiquent que le serveur a détecté une erreur fatale et que la commande ne peut pas être exécutée :
500 Erreur de syntaxe, commande inconnue
501 Erreur de syntaxe dans les pa­ra­mètres ou arguments
502 La commande n‘existe pas
503 Séquence de commandes invalide
504 Le paramètre de commande n'existe pas
521 Le serveur n’accepte pas les emails
530 Accès refusé
550 Commande non exécutée, mes­sa­ge­rie non dis­po­nible
551 Aucun uti­li­sa­teur local n’est dis­po­nible, essayez une re­di­rec­tion
552 Exécution in­ter­rom­pue, erreur d’al­lo­ca­tion de mémoire
553 Commande non exécutée, nom de mes­sa­ge­rie invalide
554 Échec de la trans­mis­sion

Exemple de session SMTP

Une session SMTP entre client et serveur peut, par exemple, s'exé­cu­ter comme suit :

Partie Commandes SMTP et codes de statut Sig­ni­fi­ca­tion
Serveur: 220 smtp.exemple.com ESMTP Postfix Une fois la connexion établie, le serveur SMTP se connecte
Client: HELO relay.exemple.com Le client SMTP se connecte avec son nom d’hôte.
Serveur: 250 smtp.exemple.com, Bonjour Le serveur confirme la connexion
Client: MAIL FROM:<Monsieur@Untel.com> Le client spécifie l’adresse de l’ex­pé­di­teur du MUA.
Serveur: 250 OK Le serveur valide
Client: RCPT TO:<chef@bureau.com> Le client spécifie l’adresse du des­ti­na­taire.
Serveur: 250 OK Le serveur valide
Client: DATA Le client initie la trans­mis­sion de l‘email
Serveur: 354 End data with <CR><LF>.<CR><LF> Le serveur démarre la réception et spécifie que le texte de l'email doit être terminé par un («.»)
Client: From: „Monsieur Untel“ <Monsieur@Untel.com>To: Chef bureau <chef@bureau.com>Date: Montag, 12. März 2018 10:03:42Objet : arrêt ma­la­die­Bon­jour,Je suis mal­heu­reu­se­ment en arrêt maladie. Je vais envoyer par fax aux Res­sources Humaines le cer­ti­fi­cat médical ainsi que l’arrêt de travail du médecin.Meil­leures sa­lu­ta­tions,Monsieur Untel. Le client parcourt le texte de l’email, le surligne avec un saut de ligne après « Objet : arrêt maladie » et le termine avec le point demandé
Serveur: 250 OK: queued as 15432 Le serveur confirme la réception de l’email et l’ajoute à la file d’attente.
Client: QUIT Le client signale la fin de la session
Serveur: 221 Au revoir Le serveur met fin à la connexion
Conseil

Com­mu­ni­quez de manière pro­fes­sion­nelle, sûre et avan­ta­geuse avec le service d’hé­ber­ge­ment d'email de IONOS. Bé­né­fi­ciez d'adresses per­son­na­li­sées avec votre domaine, d'un accès flexible à vos emails, d'une fonction d'ar­chi­vage, d'une solution de ca­len­drier et de bureau et bien plus encore. Profitez des normes de sécurité les plus élevées grâce aux data centers de IONOS certifiés ISO.

Quels sont les in­con­vé­nients du protocole SMTP ?

SMTP présente deux in­con­vé­nients inhérents au protocole réseau. La première est que l’envoi d’un email via SMTP ne renvoie pas de con­fir­ma­tion d’ex­pé­di­tion con­sul­table. Bien que les spé­ci­fi­ca­tions du protocole prévoient une telle no­ti­fi­ca­tion, son formatage n’est pas défini par défaut, de sorte que seul un message d’erreur en anglais incluant l’en-tête du message non délivré est gé­né­ra­le­ment renvoyé. Il est donc difficile de dé­ter­mi­ner la cause de l’échec de la trans­mis­sion (par exemple une mauvaise adresse ou une mes­sa­ge­rie saturée du côté du des­ti­na­taire).

Le deuxième in­con­vé­nient du SMTP est que les uti­li­sa­teurs ne sont pas au­then­ti­fiés lorsqu’une connexion est établie et que l’ex­pé­di­teur d’un email n’est donc pas fiable. Par con­sé­quent, les relais SMTP ouverts sont souvent mal utilisés pour l’envoi massif de spam. Les ex­pé­di­teurs utilisent de fausses adresses d’ex­pé­di­teurs ar­bi­traires afin qu’il soit alors im­pos­sible de les tracer (Mail Spoofing). Aujourd’hui, de nom­breuses tech­niques de sécurité sont utilisées pour prévenir l’uti­li­sa­tion abusive des serveurs SMTP. Par exemple, les emails suspects sont rejetés ou placés en qua­ran­taine (le dossier spam). Le protocole d’iden­ti­fi­ca­tion Do­main­Keys, le Sender Policy Framework (SPF) ou le Grey­lis­ting en sont res­pon­sables. En outre, il est devenu plus ou moins courant de recevoir des emails non seulement par le port tra­di­tion­nel 25/TCP, mais aussi par le port 587/TCP afin de permettre la trans­mis­sion ex­clu­si­ve­ment aux uti­li­sa­teurs au­then­ti­fiés.

Qu’est-ce que ESMTP ?

En réponse au problème répandu du spam sur Internet, une extension du SMTP a été lancée en 1995 : Extended SMTP (ESMTP en abrégé). Il complète le protocole avec d’autres commandes en code ASCII 8 bits, ce qui a permis de nom­breuses nouvelles fonctions pour éco­no­mi­ser de la bande passante et protéger les serveurs. Il s’agit par exemple de :

  • L’au­then­ti­fi­ca­tion de l’ex­pé­di­teur
  • Le cryptage SSL des emails
  • La pos­si­bi­lité de joindre des fichiers mul­ti­mé­dias aux emails
  • La res­tric­tion de la taille des emails selon les pa­ra­mètres par défaut du serveur
  • L’envoi simultané à plusieurs des­ti­na­taires
  • Messages d’erreur stan­dar­di­sés en cas d’im­pos­si­bi­lité de dis­tri­bu­tion

Enfin, voici quelques exemples de commandes ESMTP :

Commande ESMTP Sig­ni­fi­ca­tion
EHLO C‘est le rem­pla­çant de « Hello.» dans l’extension du protocole. Le client se connecte avec son nom d’or­di­na­teur et démarre avec la session. Si le serveur prend en charge ESMTP, la session démarre avec succès. Dans le cas contraire, le client doit se rabattre sur SMTP.
8BITMIME Le client invite le serveur à autoriser le jeu de ca­rac­tères ASCII 8 bits dans le corps du message.
SIZE Le client invite le serveur à spécifier la taille maximale autorisée de l’email en octets.
STARTTLS Le client demande si le serveur prend en charge le cryptage TLS.
Aller au menu principal