fbpx

Natech Training

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 messagerie 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 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 SMTP Signification
HELO « Hello » – Le client se connecte avec son nom d’ordinateur et démarre la session avec.
MAIL FROM Le client nomme l’expéditeur de l’email.
RCPT TO « Recipient » – Le client nomme le destinataire de l’email.
DATA Le client initie la transmission de l’email.
RSET Le 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.
NOOP Le client demande une réponse du serveur pour éviter une déconnexion 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 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 statut Message 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)
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 utilisateur local disponible, l’email est redirigé
252 OK – L’adresse du destinataire ne peut pas être vérifiée, la transmission est toujours en tentative.
253 OK – 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 :
354 Le 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 :
421 Serveur non disponible, la connexion est terminée
450 Commande non exécutée, messagerie non disponible
451 Exécution de la commande interrompue 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 paramè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, messagerie non disponible
551 Aucun utilisateur local n’est disponible, essayez une redirection
552 Exécution interrompue, erreur d’allocation de mémoire
553 Commande 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 :

Partie Commandes SMTP et codes de statut Signification
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’expéditeur du MUA.
Serveur: 250 OK Le serveur valide
Client: RCPT TO:<chef@bureau.com> Le client spécifie l’adresse du destinataire.
Serveur: 250 OK Le serveur valide
Client: DATA Le 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 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

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 ESMTP Signification
EHLO C‘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.
8BITMIME Le client invite le serveur à autoriser le jeu de caractè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.

Laisser un commentaire

Natech Training
Retour en haut