technique:old:etudes:mail:protocoles:smtp

SMTP

Le protocole SMTP est le protocole standard permettant l’envoi de mails sur Internet. Il est très ancien puisqu’il date de 1980 (à titre de comparaison, le DNS date de 1983). Ce protocole est à la base de tout le paradigme du mail et est responsable de ses défauts.

Nous allons tenter dans cette page de dégrossir son fonctionnement. Cependant, il faut aussi être conscient que SMTP présente des défauts majeurs, qu'on tente de combler grâce à des protocoles et des normes annexes.

SMTP est l’acronyme de Simple Mail Transfer Protocol. En effet, la notion fondamentale dans le paradigme du mail est celle du transfert.

Un mail peut être vu comme un simple fichier texte contenant (entre autres) un corps, une adresse d’émetteur, et une adresse de destinataire. Tout au long de l’acheminement d’un mail, le mail est relayé de serveur en serveur:

  • Alice rédige un mail et, grâce à un procédé quelconque, le donne à son serveur SMTP. Ce peut-être son propre serveur, celui de son opérateur, de son hébergeur… Dans tous les cas, le tout premier serveur rend un service à Alice. On peut donc supposer que ce premier serveur va obéir à Alice (ce n’est pas toujours le cas!). Alice est le client du premier serveur.
  • Ce premier serveur regarde l’adresse mail du destinataire, et réagit en fonction. Il a le droit de transférer ce mail à n’importe qui, mais si il le transfère à un serveur plus proche de la destination, c’est “mieux”. (Cette notion de “mieux” est volontairement floue, cela permet au propriétaire d’un serveur SMTP de répartir la charge d’un trafic local). Le premier serveur est le client du second serveur.
  • Après un certain nombre de transferts, le mail doit arriver à destination. Pour connaître la destination, on utilise DNS. La partie droite de l’adresse mail est le domaine du serveur SMTP final, en charge de réceptionner les mails. Les entrées MX permettent de préciser une liste de serveurs, par ordre de priorité. Lors de ce dernier transfert, le serveur de fin de chaîne va alors pouvoir:
    • Enregistrer le mail (saved)
    • Refuser temporairement le mail en le renvoyant (deferred)
    • Refuser le mail en le supprimant (bounced) Dans les deux derniers cas, une notification est envoyée dans le sens inverse au serveur émetteur (pas forcément à Alice).

Dans le paradigme de SMTP, a priori, n’importe qui peut envoyer un mail à n’importe qui en se faisant passer pour n’importe qui. Par conséquent, les serveurs de relai mettent en place des politiques contraignantes pour ne pas être utilisés à des fins malveillantes (spam, usurpation d’identité). Par exemple, il est courant qu’ils n’acceptent de relayer du courrier à destination ou en provenance d’un certain domaine. Il existe d'autres mécanismes plus poussés qui permettent d’authentifier des serveurs ou des personnes.

On appelle Mail Transfer Agent un serveur SMTP utilisé dans le but de relayer des mails.

Sources :

  • technique/old/etudes/mail/protocoles/smtp.txt
  • de qduchemi