Travaux pratiques

protocole SMTP

Durée :
1h30
Objectif :
bien appréhender le principe de fonctionnement de la distribution de courrier électronique à l'aide du protocole SMTP
Système d’exploitation :
Linux/Solaris
Outils utilisés :
un terminal, un client de messagerie, telnet, host
Fichiers à voir :
L’Internet Engineering Task Force (IETF) centralise tous les RFC (Request for comments) qui décrivent les protocoles utilisés dans l’Internet sur la page IETF Documents

Trouver le serveur de messagerie associé à un domaine

Une fois votre terminal lancé, vous allez utiliser un client DNS pour faire une requête permettant d'obtenir le nom du ou des serveurs de messagerie du domaine emse.fr.

Il existe plusieurs outils pour faire des requêtes DNS. L'outil historique est nslookup(1) et plus récemment est apparu host(1). L'utilisation de l'un ou de l'autre ne va pas entraîner de comportement différent à notre niveau. dig(1), un troisième outil, complémentaire de host(1) et plus complet est également utilisable.

Exercices :

À l'aide de l'outil host(1) trouvez le serveur des messagerie des domaines suivants :

#> host nom_de_domaine

Envoyer des messages

Les serveurs SMTP sont à l'écoute sur les ports 25 des machines qui les hébergent.

Ces serveurs ne peuvent traiter des données que si ces dernières sont encodées à l'aide du codage ASCII 7 bits (128 valeurs).

Commandes

SMTP est un protocole texte qui comporte peu de commandes et fait peu de vérifications.

Ces commandes sont interprétées quelle que soit la casse des caractères.

Chaque commande se termine par un retour à la ligne et est immédiatement interprétée par le serveur. Si ce dernier ne connaît pas la commande en question ou qu'il détecte un problème, il en fait part sans attendre.

Voici une liste des principales commandes que vous pouvez envoyer à un serveur :

Vous remarquerez à cette occasion que toutes les commandes ont 4 caractères.

Connection et envoi de messages

Vous allez vous connecter au serveur de messagerie de l'école et vous allez envoyer un message en décrivant chaque champ du protocole.

Exercice

À l'aider de la commande telnet connectez-vous sur le la machine faisant office de serveur de messagerie pour le domaine emse.fr.

Honorez le protocole jusqu'à la commande DATA comprise, en donnant comme destinataire votre propre adresse.

Dans le champ DATA entrez les donnée suivantes en replaçant les champs comme indiqué :

From: "Joli nom de l'envoyeur" <sender@domain.tld>
To: "Joli nom du destinataire" <recipient@other-domain.tld>
Date: Tue, 13 Dec 2011 10:30:00 +0100 (CET)
Subject: Test du protocole SMTP

Un petit test pour s'assurer que tout fonctionne.

.

Vous pouvez envoyer plusieurs messages à la suite en précisant à chaque fois le destinataire avec la commande RCPT TO:. Vous pouvez également envoyer un message à plusieurs destinataires en donnant plusieurs commandes RCPT TO: avant le bloc DATA.

Exercice

Envoyez un message à deux destinataires : votre voisin de droite et vous-même. Vous honorerez le protocole jusqu'à DATA compris, puis vous entrerez ensuite le bloc de données ci-dessous :

From: "Joli nom de l'envoyeur" <sender@domain.tld>
To: "Joli nom du destinataire" <recipient@other-domain.tld>
Date: Tue, 13 Dec 2011 11:00:00 +0100 (CET)
Subject: Test du protocole SMTP numéro 2

Cette fois-ci, le message ne respecte plus la contrainte
du bloc de données encodé en 7 bits.

Quel va être le problème à l'arrivée ?

.

Relevez vos messages et constatez le résultat.

Vous pouvez quitter le serveur avec la commande QUIT.

Extensions

Le protocole SMTP est extrêmement simple comme vous avez pu le constater. Il a donc de nombreuses lacunes dont une dont vous venez de faire l'expérience : l'impossibilité de relayer des données encodées dans des codes différents de l'ASCII 7 bits.

Pour palier ces manques, des extensions ont été développées (toutes décrites dans des RFC). Les serveurs disposant d'extensions répondent à une commande supplémentaire : EHLO. Elle s'emploie à la place de la commande HELO avec la même syntaxe et le serveur répondra en listant les extensions dont il dispose.

Exercice

Connectez-vous à nouveau au serveur de messagerie de l'école et obtenez la liste des extensions qui sont prises en charge.

Une de ces extension, décrite dans la RFC 1426, permet de transférer des données encodées hors de l'ASCII 7 bits.

Son utilisation est tout aussi simple que le reste du protocole. Une fois la commande EHLO envoyée, il suffit de rajouter un qualificatif à la commande MAIL comme dans l'exemple ci-dessous :

EHLO mail-server.domain.tld
MAIL FROM:<sender@domain.tld> BODY=8BITMIME
RCPT TO:<recipient@other-domain.tld>
RCPT TO:<sender@domain.tld>
DATA
From: "Joli nom de l'envoyeur" <sender@domain.tld>
To: "Joli nom du destinataire" <recipient@other-domain.tld>
Date: Tue, 13 Dec 2011 11:30:00 +0100 (CET)
Subject: Test du protocole SMTP numéro 3, avec extension 8 bits

Cette fois-ci, le message ne respecte toujours pas la contrainte
du bloc de données encodé en 7 bits, mais le serveur en est informé.

Il ne devrait plus y avoir de problème !

.

Exercice

Inspirez-vous de l'exemple ci-dessus pour envoyer un message en utilisant l'extension 8BITMIME.

Attention cepdendant, il se peut que vos caractères soient codés en UTF-8 qui, pour certains caractères, demande 2 octets. Dans ce cas, l'extension 8BITMIME ne sera pas suffisante.

Conclusion

Le protocole SMTP est, s'il est nécessaire de le rappeler, extrêmement simple. Il a été conçu à une époque où le volume de données transférées par messagerie électronique était bien plus faible qu'aujourd'hui. De plus, à cette époque (1982), le type de données échangées était uniquement du texte, ce qui n'est plus le cas.

Il y a donc de nombreux problèmes soulevés par ce protocole, cependant, il reste le protocole toujours en vigueur.

Certaines extensions ont ponctuellement joué le rôle de rustine, mais il reste de vrai problèmes, entre autre, de sécurité.

On pourra se demander comment sont transportées les images, les sons et autres contenus multimédia. La lecture de la RFC 2045 pourra apporter des éclaircissements aux plus curieux d'entre vous.

Bons mails !