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.