Le besoin de communication est inhérent aux êtres humains. Je ne vais pas résumer toutes les évolutions du courrier postal. Le courrier électronique semble plus correspondre à mes articles. Le premier échange de message électronique date de 1971. Et la reine d’Angleterre envoie son royal message en 1976. Mais c’est bien l’arrivée du protocole SMTP (Simple Mail Transfer Protocol) qui va permettre l’échange de message entre les ordinateurs à travers le monde.
L’envoi d’un message se compose d’un dialogue entre un client de message et un serveur de messagerie. Ensuite, le serveur de messagerie se charge de trouver le destinataire du message et de le lui remettre ou de le remettre à un autre serveur de messagerie qui s’occupe du destinataire.
De quoi se compose un courriel (terme français pour mail) :
- de l’adresse du ou des destinataires,
- de l’adresse des personnes en ‘copie’ ou en ‘copie cachées’ (‘cc’ pour copie carbone’, et ‘ccc’ pour ‘copie carbone cachée),
- d’un ‘objet’ (le titre du mail),
- d’un corps de courrier,
- de pièces jointes éventuellement.
Ce sont ces éléments que vous allez préciser lorsque vous allez envoyer un courriel. Votre client de messagerie discutera ensuite avec le serveur suivant un protocole défini (SMTP ou client en ligne) pour envoyer ces éléments à votre destinataire.
De l’autre côté, le destinataire à aussi un client de messagerie. Celui-ci va de temps en temps interroger son serveur de messagerie pour savoir s’il a des messages. Suivant le paramétrage du client, toutes les 15 minutes il va voir son serveur pour lui demander s’il a de nouveaux messages et les rapatrier si c’est le cas. Il interroge le serveur suivant les protocoles établis POP3 (Post Office Protocol) ou IMAP (Internet Message Access Protocol)
L’avantage de l’informatique c’est que ce type de transaction est automatisé. Dans la vie réelle personne ne se rend toutes les 15 minutes à son bureau de poste pour demander au postier s’il a reçu du courrier.
Revenons sur le protocole SMTP, ou Simple Mail Transfer Protocol. Il s’agit d’un protocole applicatif qui permet l’envoi d’un message électronique. Ce protocole défini le dialogue suivant entre le client et le serveur de messagerie ‘smtp.wp.com’ (en bleu) :
Échange client/serveur | Mes commentaires |
HELO | ‘Hello There’. Le client salue le serveur. EHLO. |
250 smtp.wp.com | ‘Général Kenobi’. 250 le serveur accuse de la demande du client. Il aurait pu dire bonjour quand même. |
MAIL FROM:pierre.b@wp.com | Le client indique son adresse mail. |
250 OK | Le serveur valide. |
RCPT TO:toto@wp.com | Le client indique l’adresse du destinataire. Il est possible d’en indiquer plusieurs |
250 OK | Vous avez compris. |
DATA | Le client indique qu’il va donner le contenu du mail. |
354 Start mail input; end with . | Le serveur valide et l’informe que le message doit se terminer par <CRLF>.<CRLF>. Sans cela, le serveur considère que tout ce que dit le client est du message. |
Subject: Salut | ‘Subject:’ permet de préciser l’objet. Il existe d’autres verbes pour préciser les copies ou redéfinir les destinataires. |
Comment vas-tu ? | Corps du message |
A plus | idem |
<CRLF>.<CRLF> | Fin du message |
250 OK | Le serveur valide le message et va chercher à le transmettre au bon destinataire via son serveur de messagerie |
QUIT | Le client n’a plus rien à dire et clôt la conversation. |
Le postier n’est pas très causant. À partir hocher de la tête et dire ‘250 OK’ ou ‘354 …’, il ne fait qu’écouter son client. Au final, notre destinataire reçoit son message. C’est tout ce qu’on veut. On verra plus tard comment les serveurs de messagerie se connaissent et discutent entre eux.
On remarque aussi qu’il nous demande notre adresse mail. Certains serveurs n’ont pas les moyens de vérifier cette information et on peut dire n’importe quoi. Le protocole SMTP a évolué (on parle d’extensions) et les serveurs de messagerie sont devenus plus méfiants. Des couches de sécurité ont été ajoutées.
L’article wikipedia en anglais est très complet pour plus d’informations sur la conversation entre le client et le serveur de messagerie. Il renvoie aussi vers les RFC, des textes qui détaillent tout ce que doit faire un bon serveur.