Le protocole SMTP

Le protocole SMTP (Simple Mail Transfer Protocol) est définit par la RFC 821. C'est grâce à ce protocol que les serveurs de mél peuvent communiquer entre eux, quelque soit leur origine.

Voici un exemple de dialogue avec un serveur de méls :

mdecore@tarsier:~$ telnet localhost smtp
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 tarsier.athome.chezmoi ESMTP Sendmail 8.9.3+3.2W/8.9.3/Mathieu DECORE -
14/10/2000; Wed, 27 Dec 2000 15:53:31 +0100
mdecore@tarsier:~$ telnet localhost smtp
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 tarsier.athome.chezmoi ESMTP Sendmail 8.9.3+3.2W/8.9.3/Mathieu DECORE -
14/10/2000; Wed, 27 Dec 2000 15:57:30 +0100
HELO localhost
250 tarsier.athome.chezmoi Hello mdecore@localhost [127.0.0.1], pleased to meet
you
MAIL FROM: <mdecore@localhost>
250 <mdecore@localhost>... Sender ok
RCPT TO: <piou@localhost>
250 <piou@localhost>... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
From: zecastor@mondomaine.chezmoi
Subject: Petit test de dialogue SMTP
To: piou@sondomaine.chezlui    
Date: Wed Dec 27 16:01:04 CET 2000

Voici le petit test...
.
250 PAA00794 Message accepted for delivery
QUIT
221 tarsier.athome.chezmoi closing connection
Connection closed by foreign host.
mdecore@tarsier:~$

et voici le mail reçu :

From: zecastor@mondomaine.chezmoi
Subject: Petit test de dialogue SMTP
To: piou@sondomaine.chezlui
Date: Wed Dec 27 16:01:04 CET 2000
  
Voici le petit test...

La première ligne annonce que la communication est établie avec l'hôte en question (tarsier.athome.chezmoi), qui donne le protocole utilisé (ESMTP), le serveur de méls utilisé (Sendmail 8.9.3) ainsi que la version du fichier de configuration. Le code 220 annonce que le serveur est disponible.

Ensuite, la ligne HELO localhost est tapée par l'utilisateur. Il s'agit d'une identification avec l'adresse de son site (c'est plus poli de dire d'où on vient). En retour, le serveur annonce qui il est (250 tarsier.athome.chezmoi), et nous souhaite la bienvenue (Hello mdecore@localhost [127.0.0.1], pleased to meet you).

Les données de l'enveloppe viennent ensuite : l'expéditeur, pour les renvois de messages d'erreur éventuels (MAIL FROM: <mdecore@localhost>), l'adresse du destinataire (RCPT TO: <piou@localhost>). A chaque fois, le serveur de méls valide la commande si elle est correcte, mais renvoie un message d'erreur si il y a une faute (par exemple pour un nom de domaine non valide, un message du style 451 <mdecore@domainebidon.truc>... Sender domain must resolve serait envoyé).

La ligne suivante (DATA...) indique le début du message. Il y a d'abord l'en-tête, avec les champs habituels, et le corps du message, avec le texte. Noter que l'en-tête peut contenir des adresses mél non valides, puisque le routage s'effectue sur les adresse contenues dans l'enveloppe.

Enfin, une ligne ne contenant qu'un point termine la session. La commande QUIT permet de clore la session.