fbpx
Aller au contenu

Natech Training

Accueil » Qu’est-ce que SMTP ? Définition et principes de bases

Qu’est-ce que SMTP ? Définition et principes de bases

Sans le protocole réseau standard de l’Internet moderne, l’envoi de documents, de cartes électroniques ou de vidéos etc. ne serait tout simplement pas du tout possible. En effet, lorsque vous envoyez un email, ce dernier ne va pas directement au destinataire mais traverse un processus de communication complexe avec de nombreuses instances avant qu’il ne l’atteigne.

Sommaire
  1. Qu’est-ce que le protocole SMTP ?
  2. Comment fonctionne le processus SMTP ?
  3. Comment fonctionne une session SMTP ?
  4. Quels sont les inconvénients du protocole SMTP ?
  5. Qu’est-ce que ESMTP ?

Qu’est-ce que le protocole SMTP ?

SMTP est l’abréviation 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 protocoles 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 communication correcte entre les ordinateurs d’un réseau. SMTP est spécifiquement responsable de l’envoi et de la transmission des emails d’un expéditeur à un destinataire.

Depuis sa sortie en 1982 en tant que successeur du « Mail Box Protocol » dans Arpanet, SMTP est devenu le protocole standard pour l’envoi d’emails. Pour l’internaute lambda, cependant, la procédure du SMTP reste largement invisible, puisqu’elle est exécutée en arrière-plan par le programme de messagerie correspondant. Ce n’est que si le logiciel, l’application Webmail dans le navigateur ou encore l’application de messagerie 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é manuellement 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 fournisseurs de messagerie :

Fournisseur de messagerieAdresse serveur SMTPPort SMTP
Yahoosmtp.mail.yahoo.com587
GMXmail.gmx.net587
Freesmtp.free.fr587
Gmailsmtp.gmail.com587 (TLS/STARTTLS), 465 (SSL)

Comment fonctionne le processus SMTP ?

Comprendre le processus du protocole SMTP signifie également comprendre le fonctionnement d’un email. Le processus se déroule en principe comme suit :

  1. Le client SMTP, c’est à dire l’expéditeur, télécharge l’email sur le serveur SMTP, c’est à dire le serveur d’email sortant du fournisseur de messagerie correspondant. Ceci s’effectue via une application Webmail dans le navigateur ou un programme de messagerie (techniquement un « Mail User Agent » abrégé en MUA), comme Windows Live Mail ou bien Mozilla Thunderbird.
  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 destinataire 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érations de transfert est effectuée selon le protocole SMTP.
  4. Le serveur SMTP de destination (cible) stocke temporairement l’email dans le stockage temporaire d’email.
  5. Le destinataire MUA télécharge l’email via IMAP ou POP3.

Comment fonctionne une session SMTP ?

L’interaction entre le client SMTP et le serveur SMTP mentionnée dans la première étape de la procédure SMTP repré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 destinataire, 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écifications SMTP applicables, chaque implémentation du protocole réseau doit prendre en charge au moins les huit commandes suivantes constituées de caractères ASCII 7 bits :

Commande SMTPSignification
HELO« Hello » – Le client se connecte avec son nom d’ordinateur et démarre la session avec.
MAIL FROMLe client nomme l’expéditeur de l’email.
RCPT TO« Recipient » – Le client nomme le destinataire de l’email.
DATALe client initie la transmission de l’email.
RSETLe client interrompt la transmission initiée, mais maintient la connexion entre le client et le serveur.
VRFY/EXPN« Verify »/ « Expand » – Le client vérifie si une messagerie est disponible pour la transmission du message.
NOOPLe client demande une réponse du serveur pour éviter une déconnexion due à un délai d’attente.
QUITLe 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 comprenant un message en texte clair. Pour une meilleure compréhension, nous avons traduit ces messages en français dans le tableau suivant :

Code de statutMessage texte (traduction en français)
Codes de statut qui indiquent que le serveur a exécuté la commande avec succès :
200(nonstandard success response)
211Demande de statut système ou d’aide système
214Demande d’aide pour l’exécution d’une commande
220Le serveur est prêt pour la session SMTP.
221Le serveur met fin à la connexion
250OK – Commande exécutée
251OK – Aucun utilisateur local disponible, l’email est redirigé
252OK – L’adresse du destinataire ne peut pas être vérifiée, la transmission est toujours en tentative.
253OK – Les messages sont paramétrés sur « en attente »
Codes de statut qui indiquent que le serveur a compris la commande, mais qu’il a besoin d’informations supplémentaires pour la traiter :
354Le serveur démarre la réception de l’email
Codes de statut qui indiquent que le serveur a détecté une erreur temporaire, mais que la commande peut encore être exécutée :
421Serveur non disponible, la connexion est terminée
450Commande non exécutée, messagerie non disponible
451Exécution de la commande interrompue en raison d’une erreur locale
452Commande 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 :
500Erreur de syntaxe, commande inconnue
501Erreur de syntaxe dans les paramètres ou arguments
502La commande n‘existe pas
503Séquence de commandes invalide
504Le paramètre de commande n’existe pas
521Le serveur n’accepte pas les emails
530Accès refusé
550Commande non exécutée, messagerie non disponible
551Aucun utilisateur local n’est disponible, essayez une redirection
552Exécution interrompue, erreur d’allocation de mémoire
553Commande non exécutée, nom de messagerie invalide
554Échec de la transmission

Exemple de session SMTP

Une session SMTP entre client et serveur peut, par exemple, s’exécuter comme suit :

PartieCommandes SMTP et codes de statutSignification
Serveur:220 smtp.exemple.com ESMTP PostfixUne fois la connexion établie, le serveur SMTP se connecte
Client:HELO relay.exemple.comLe client SMTP se connecte avec son nom d’hôte.
Serveur:250 smtp.exemple.com, BonjourLe serveur confirme la connexion
Client:MAIL FROM:<Monsieur@Untel.com>Le client spécifie l’adresse de l’expéditeur du MUA.
Serveur:250 OKLe serveur valide
Client:RCPT TO:<chef@bureau.com>Le client spécifie l’adresse du destinataire.
Serveur:250 OKLe serveur valide
Client:DATALe client initie la transmission 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 maladieBonjour,Je suis malheureusement en arrêt maladie. Je vais envoyer par fax aux Ressources Humaines le certificat médical ainsi que l’arrêt de travail du médecin.Meilleures salutations,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 15432Le serveur confirme la réception de l’email et l’ajoute à la file d’attente.
Client:QUITLe client signale la fin de la session
Serveur:221 Au revoirLe serveur met fin à la connexion

Quels sont les inconvénients du protocole SMTP ?

SMTP présente deux inconvénients inhérents au protocole réseau. La première est que l’envoi d’un email via SMTP ne renvoie pas de confirmation d’expédition consultable. Bien que les spécifications du protocole prévoient une telle notification, 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éralement renvoyé. Il est donc difficile de déterminer la cause de l’échec de la transmission (par exemple une mauvaise adresse ou une messagerie saturée du côté du destinataire).

Le deuxième inconvénient du SMTP est que les utilisateurs ne sont pas authentifiés lorsqu’une connexion est établie et que l’expéditeur d’un email n’est donc pas fiable. Par conséquent, les relais SMTP ouverts sont souvent mal utilisés pour l’envoi massif de spam. Les expéditeurs utilisent de fausses adresses d’expéditeurs arbitraires afin qu’il soit alors impossible de les tracer (Mail Spoofing). Aujourd’hui, de nombreuses techniques de sécurité sont utilisées pour prévenir l’utilisation abusive des serveurs SMTP. Par exemple, les emails suspects sont rejetés ou placés en quarantaine (le dossier spam). Le protocole d’identification DomainKeys, le Sender Policy Framework (SPF) ou le Greylisting en sont responsables. En outre, il est devenu plus ou moins courant de recevoir des emails non seulement par le port traditionnel 25/TCP, mais aussi par le port 587/TCP afin de permettre la transmission exclusivement aux utilisateurs authentifié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 nombreuses nouvelles fonctions pour économiser de la bande passante et protéger les serveurs. Il s’agit par exemple de :

  • L’authentification de l’expéditeur
  • Le cryptage SSL des emails
  • La possibilité de joindre des fichiers multimédias aux emails
  • La restriction de la taille des emails selon les paramètres par défaut du serveur
  • L’envoi simultané à plusieurs destinataires
  • Messages d’erreur standardisés en cas d’impossibilité de distribution

Enfin, voici quelques exemples de commandes ESMTP :

Commande ESMTPSignification
EHLOC‘est le remplaçant de « Hello.» dans l’extension du protocole. Le client se connecte avec son nom d’ordinateur 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.
8BITMIMELe client invite le serveur à autoriser le jeu de caractères ASCII 8 bits dans le corps du message.
SIZELe client invite le serveur à spécifier la taille maximale autorisée de l’email en octets.
STARTTLSLe client demande si le serveur prend en charge le cryptage TLS.

Laisser un commentaire