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 (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 :
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
Commande |
Exemple |
Description |
HELO (désormais EHLO) |
EHLO 193.56.47.125 |
Identification à l'aide de l'adresse IP ou du nom de domaine de l'ordinateur expéditeur |
MAIL FROM: |
MAIL FROM: expediteur@domaine.com |
Identification de l'adresse de l'expéditeur |
RCPT TO: |
RCPT TO: destinataire@domaine.com |
Identification de l'adresse du destinataire |
DATA |
DATA message |
Corps du mail |
QUIT |
QUIT |
Sortie du serveur SMTP |
HELP |
HELP |
Liste 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 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 |
Commande |
Description |
HELLO |
Identification à l'aide de l'adresse IP de l'ordinateur expéditeur |
FOLDER |
Nom de la boîte à consulter |
READ |
Numéro du message à lire |
RETRIEVE |
Numéro du message à récupérer |
SAVE |
Numéro du message à sauvegarder |
DELETE |
Numéro du message à supprimer |
QUIT |
Sortie du serveur POP2 |
Voici un récapitulatif des commandes POP3 :
Commandes POP3 |
Commande |
Description |
USER identifiant |
Cette 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_passe |
La 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. |
STAT |
Information sur les messages contenus sur le serveur |
RETR |
Numéro du message à récupérer |
DELE |
Numéro du message à supprimer |
LIST [msg] |
Numéro du message à afficher |
NOOP |
Permet 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é). |
QUIT |
La 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 (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
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 :
|