POP3, SMTP, IMAP - Protocoles de messagerie


 

Introduction à la messagerie électronique


Le courrier électronique est considéré comme étant le service le plus utilisé sur Internet. Ainsi la suite de protocoles TCP/IP offre une panoplie de protocoles permettant de gérer facilement le routage du courrier sur le réseau.
 

Le protocole SMTP


Le protocole SMTP (Simple Mail Transfer Protocol, traduisez Protocole Simple de Transfert de Courrier) est le protocole standard permettant de transférer le courrier d'un serveur à un autre en connexion point à point.

Il s'agit d'un protocole fonctionnant en mode connecté, encapsulé dans une trame TCP/IP. Le courrier est remis directement au serveur de courrier du destinataire. Le protocole SMTP fonctionne grâce à des commandes textuelles envoyées au serveur SMTP (par défaut sur le port 25). Chacune des commandes envoyées par le client (validée par la chaîne de caractères ASCII CR/LF, équivalent à un appui sur la touche entrée) est suivi d'une réponse du serveur SMTP composée d'un numéro et d'un message descriptif.

Voici un scénario de demande d'envoi de mail à un serveur SMTP

  • Lors de l'ouverture de la session SMTP, la première commande à envoyer est la commande HELO suivie d'un espace (noté <SP>) et du nom de domaine de votre machine (afin de dire "bonjour je suis telle machine"), puis valider par entrée (noté <CRLF>). Depuis avril 2001, les spécifications du protocole SMTP, définies dans le RFC 2821, imposent que la commande HELO soit remplacée par la commande EHLO.
  • La seconde commande est "MAIL FROM:" suivie de l'adresse email de l'expéditeur. Si la commande est acceptée le serveur renvoie le message "250 OK"
  • La commande suivante est "RCPT TO:" suivie de l'adresse email du destinataire. Si la commande est acceptée le serveur renvoie le message "250 OK"
  • La commande DATA est la troisième étape de l'envoi. Elle annonce le début du corps du message. Si la commande est acceptée le serveur renvoie un message intermédiaire numéroté 354 indiquant que l'envoi du corps du mail peut commencer et considère l'ensemble des lignes suivantes jusqu'à la fin du message repéré par une ligne contenant uniquement un point. Le corps du mail contient éventuellement certains des en-têtes suivants :
    • Date
    • Subject
    • Cc
    • Bcc
    • From

Si la commande est acceptée le serveur renvoie le message "250 OK"
Voici un exemple de transaction entre un client (C) et un serveur SMTP (S)
S: 220 smtp.commentcamarche.net SMTP Ready  

C: EHLO machine1.commentcamarche.net
S: 250 smtp.commentcamarche.net
C: MAIL FROM:<webmaster@commentcamarche.net>

S: 250 OK
C: RCPT TO:<meandus@meandus.net>

S: 250 OK
C: RCPT TO:<tittom@tittom.fr>

S: 550 No such user here
C: DATA
S: 354 Start mail input; end with <CRLF>.<CRLF>

C: Subject: Petit Bonjour
C: Salut Meandus,
C: comment ca va?
C :
C: A bientot !
C: <CRLF>.<CRLF>

S: 250 OK
C: QUIT
R: 221 smtp.commentcamarche.net closing transmission



Les spécifications de base du protocole SMTP veulent que tous les caractères transmis soient codés en code ASCII sur 7 bits et que le 8ème bit soit explicitement mis à zéro. Ainsi pour envoyer des caractères accentués il faut faire recours à des algorithmes intégrant les spécifications MIME :

  • base64 pour les fichiers attachés
  • quoted-printable (d'abbréviation QP) pour les caractères spéciaux contenus dans le corps du message



Il est ainsi possible d'envoyer un courrier grâce à un simple telnet sur le port 25 du serveur SMTP :

telnet smtp.commentcamarche.net 25
(le serveur indiqué ci-dessus est volontairement inexistant, vous pouvez essayer en remplaçant commentcamarche.net par le domaine de votre fournisseur d'accès à internet)

Voici un récapitulatif des principales commandes SMTP



CommandeExempleDescription
HELO (désormais EHLO)EHLO 193.56.47.125Identification à l'aide de l'adresse IP ou du nom de domaine de l'ordinateur expéditeur
MAIL FROM:MAIL FROM: expediteur@domaine.comIdentification de l'adresse de l'expéditeur
RCPT TO:RCPT TO: destinataire@domaine.comIdentification de l'adresse du destinataire
DATADATA messageCorps du mail
QUITQUITSortie du serveur SMTP
HELPHELPListe des commandes SMTP supportées par le serveur



L'ensemble des spécifications du protocole SMTP sont définies dans le RFC 821 (depuis avril 2001, les spécifications du protocole SMTP sont définies dans le RFC 2821).
 

Le protocole POP3


Le protocole POP (Post Office Protocol que l'on peut traduire par "protocole de bureau de poste") permet comme son nom l'indique d'aller récupérer son courrier sur un serveur distant (le serveur POP). Il est nécessaire pour les personnes n'étant pas connectées en permanence à Internet afin de pouvoir consulter les mails reçus hors connexion.

Il existe deux principales versions de ce protocole, POP2 et POP3, auxquels sont affectés respectivement les ports 109 et 110 et fonctionnant à l'aide de commandes textuelles radicalement différentes.

Tout comme dans le cas du protocole SMTP, le protocole POP (POP2 et POP3) fonctionne grâce à des commandes textuelles envoyées au serveur POP. Chacune des commandes envoyées par le client (validée par la séquence CR/LF) est composée d'un mot-clé, éventuellement accompagné d'un ou plusieurs arguments et est suivie d'une réponse du serveur POP composée d'un numéro et d'un message descriptif.

Voici un tableau récapitulant les principales commandes POP2 :


Commandes POP2</souligne>
CommandeDescription
HELLOIdentification à l'aide de l'adresse IP de l'ordinateur expéditeur
FOLDERNom de la boîte à consulter
READNuméro du message à lire
RETRIEVENuméro du message à récupérer
SAVENuméro du message à sauvegarder
DELETENuméro du message à supprimer
QUITSortie du serveur POP2



Voici un récapitulatif des commandes POP3 :


Commandes POP3</souligne>
CommandeDescription
USER identifiantCette commande permet de s'authentifier. Elle doit être suivie du nom de l'utilisateur, c'est-à-dire une chaîne de caractères identifiant l'utilisateur sur le serveur. La commande USER doit précéder la commande PASS.
PASS mot_de_passeLa commande PASS, permet d'indiquer le mot de passe de l'utilisateur dont le nom a été spécifié lors d'une commande USER préalable.
STATInformation sur les messages contenus sur le serveur
RETRNuméro du message à récupérer
DELENuméro du message à supprimer
LIST [msg]Numéro du message à afficher
NOOPPermet de garder les connexion ouverte en cas d'inactivité
TOP <messageID> <n> Commande affichant n lignes du message, dont le numéro est donné en argument. En cas du réponse positive du serveur, celui-ci renvoie les en-têtes du message, puis une ligne vierge et enfin les n premières lignes du message.
UIDL [msg]Demande au serveur de renvoyer une ligne contenant des informations sur le message éventuellement donné en argument. Cette ligne contient une chaîne de caractères, appelée listing d'identificateur unique, permettant d'identifier de façon unique le message sur le serveur, indépendamment de la session. L'argument optionnel est un numéro correspondant à un message existant sur le serveur POP, c'est-à-dire un message non effacé).
QUITLa commande QUIT demande la sortie du serveur POP3. Elle entraîne la suppression de tous les messages marqués comme effacés et renvoie l'état de cette action.



Le protocole POP3 gére ainsi l'authentification à l'aide d'un nom d'utilisateur et d'un mot de passe, il n'est par contre pas sécurisé car les mots de passe, au même titre que les mails, circulent en clair (de manière non chiffrée) sur le réseau. En réalité, selon la RFC1939, il est possible de chiffrer le mot de passe en utilisant l'algorithme MD5 et ainsi bénéficier d'une authentification sécurisée. Toutefois, cette commande étant optionnelle, peu de serveurs l'implémentent D'autre part le protocole POP3 bloque la boîte aux lettres lors de la consultation, ce qui signifie qu'une consultation simultanée par deux utilisateurs d'une même boîte aux lettres est impossible.

Au même titre qu'il est possible d'envoyer un email grâce à telnet, il est également possible d'accéder à son courrier entrant grâce à un simple telnet sur le port du serveur POP (110 par défaut) :

telnet mail.commentcamarche.net 110
(le serveur indiqué ci-dessus est volontairement inexistant, vous pouvez essayer en remplaçant commentcamarche.net par le domaine de votre fournisseur d'accès à internet)
S: +OK mail.commentcamarche.net POP3 service  

S: (Netscape Messaging Server 4.15 Patch 6 (built Mar 31 2001))
C: USER jeff
S: +OK Name is a valid mailbox
C: PASS mon_pass
S: +OK Maildrop ready
C: STAT
S: +OK 2 0
C: TOP 1 5
S: Subject: Petit Bonjour
S: Salut Meandus,
S: comment ca va?
S :
S: A bientot !
C: QUIT
S: +OK



L'affichage des données que vous saisissez dépend du client Telnet que vous utilisez. Selon votre client Telnet, il vous faudra peut-être activer l'option echo local.
 

Le protocole IMAP


Le protocole IMAP (Internet Message Access Protocol) est un protocole alternatif au protocole POP3 mais offrant beaucoup plus de possibilités :

  • IMAP permet de gérer plusieurs accès simultanés
  • IMAP permet de gérer plusieurs boîtes aux lettres
  • IMAP permet de trier le courrier selon plus de critères

 

Plus d'informations


Pour plus d'informations sur le protocole SMTP, le mieux est de se reporter à la RFC 821 expliquant de manière détaillée le protocole :

Réalisé sous la direction de , fondateur de CommentCaMarche.net.

Ce document intitulé «  POP3, SMTP, IMAP - Protocoles de messagerie  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.