Tutoriels vidéos
Recent Articles
Home » Messagerie »
la messagerie électronique
NOTIONS DE BASE
RÉSEAU INFORMATIQUE réseau informatique
Le réseau
- la reconnaissance des machines entre elles,
- le transport de l'information.
Les serveurs : à votre service !
Serveur / Client
Les protocoles
Exemple :
Les serveurs mails
- 1. L'expéditeur écrit le courrier.
- 2. Il le poste (bureau de poste, boîte postale).
- 3. La Poste achemine le courrier jusqu'à la boîte aux lettres du destinataire.
- 4. Le destinataire ouvre sa boîte aux lettres et y trouve son courrier.
- 1. Vous écrivez le message.
- 2. Vous confiez le message au "bureau de poste" : un serveur SMTP.
- 3. Le mail arrive dans la boîte aux lettres du destinataire : un serveur POP ou IMAP
- 4. Enfin, il peut consulter ses messages auprès de son serveur.
- Les serveurs d'envoi, appelés serveurs SMTP.
- Les serveurs POP et IMAP pour la réception.
Les ports
- port 21 pour les serveurs FTP.
- port 80 pour les serveurs HTTP.
- port 25 pour les serveurs SMTP.
- port 110 pour les serveurs POP.
- port 143 pour les serveurs IMAP.
- etc.
Telnet est un logiciel permettant d'établir très facilement des connexions réseau avec des ordinateurs distants, et de "parler" avec eux.
Un peu d'histoire...
Au commencement...
Dates
|
Évolution de l'Internet
|
---|---|
1969
|
Création de l'Arpanet
|
1971
|
Le courrier électronique est créé par Ray Tomlinson
|
1972
|
Définition du protocole Telnet
|
1974
|
Création du TCP/IP
|
1989
|
Naissance du Web : Internet que nous connaissons aujourd'hui
|
À quoi ça sert ?
DÉCOUVERTE DU PROTOCOLE SMTP
Ouvrir une connexion SMTPopen smtp.laposte.net 25open 193.251.214.114 25 Les messages SMTP
Étudions cette réponse de plus près
Les codes d'erreur
Présentez-vous !ehlo localhost Explications
Juste quelques explications :
ENVOYER UN MAIL AVEC SMTP
S'identifier
Pourquoi s'identifier ?
Nous allons donc devoir nous identifier :
L'encodage Base64
Pourquoi ?
MA BOÎTE AUX LETTRES: LE SERVEUR POP
Établir la connexionopen pop.laposte.net 110open 193.251.214.115 110 Essayez !-ERR Unrecognized command S'identifier
Manipuler ses mails
Lire son courrier
Récupérer les en-têtes
Effacer un message
Les pièces jointes
IL Y A AUSSI IMAP...
On se connecte ?open imap.laposte.net 143 Les tags
Choix du répertoire
Lire ses mails
Gérer ses messages : les flags
- answered = répondu ;
- flagged = post-it ;
- draft = brouillon ;
- deleted = supprimé ;
- seen = lu.
Les encodages : une histoire de bits...
Les codages de caractères
Le problème du codage ASCII
Solution : Multipurpose Internet Mail Extension
Décryptage d'un mail
Analysons !
AVANT DE PARLER DE MAILS, SERVEURS ET TOUT ÇA, QUELQUES PETITS RAPPELS SUR INTERNET, OU PLUS GÉNÉRALEMENT SUR LES RÉSEAUX INFORMATIQUES S'IMPOSENT.
La notion de réseau informatique signifie la possibilité pour des ordinateurs de communiquer entre eux, d'échanger des informations ou d'interagir l'un avec l'autre. C'est le fondement même d'Internet.
Il faut savoir que le réseau informatique repose sur deux principes fondamentaux :
C'est la façon dont les ordinateurs se reconnaissent entre eux.
L'adresse IP est l'adresse d'une machine qui lui permet d'être reconnue par les autres machines du réseau. Chacune a son adresse propre et unique, qui lui permet d'être identifiée sur le réseau.
Citation : Wikipédia
Il existe des adresses IP de version 4 et de version 6. En 2007, la version 4 est la plus utilisée.
Elle est généralement notée avec quatre nombres compris entre 0 et 255, séparés par des points. Exemple : 212.85.150.134
Conclusion : Si vous êtes connecté à Internet, vous avez forcément une adresse IP. Et lorsque vous visitez un site Internet, votre PC se connecte au site grâce à l'adresse IP de ce dernier.
Le fonctionnement d'Internet repose sur des ordinateurs chargés de fournir des services au reste du réseau. Ces ordinateurs doivent être reliés au réseau en permanence. On les appelle des serveurs.
Les utilisateurs sont appelés les clients. Ils doivent connaître l'adresse du serveur pour se connecter à lui.
Les protocoles sont une façon pour des ordinateurs d'échanger des informations sur un réseau. Ces protocoles varient selon les besoins de l'échange. L'Internet Protocol (IP) est lui-même un protocole d'identification.
Les sites Web utilisent le protocole HTTP, qui est le protocole d'échange de fichiers HTML.
Un serveur web est donc un serveur HTTP. Il est chargé d'envoyer les pages HTML et autres à ceux qui les demandent.
Lorsque vous entrez une adresse web dans la barre de votre navigateur, le nom du site représente en réalité l'adresse IP du serveur. Le navigateur envoie en fait une requête au serveur en question, qui lui renvoie alors la page demandée.
L'un des services les plus importants fournis par les serveurs est celui d'acheminer le courrier d'une machine à l'autre : ce sont les serveurs mails.
Bon, je crois qu'une petite réflexion sur la structure d'une messagerie ne sera pas inutile.
L'envoi d'un courrier par la Poste passe par quatre étapes :
L'envoi d'un courriel suit exactement le même processus avec les serveurs :
Les e-mails utilisent deux types de serveurs, ayant chacun des modes de fonctionnement (protocoles) particuliers :
Pour qu'un ordinateur puisse communiquer correctement avec le réseau, et effectuer plusieurs communications à la fois, il dispose d'un certain nombre de ports, qui sont comme des adresses à l'intérieur de l'ordinateur.
Les serveurs ne font pas exception. Un seul ordinateur peut simultanément faire office de serveurs HTTP, FTP, DNS, mails, et j'en passe...
On dit que le serveur écoute sur le port, pour savoir si aucune requête ne lui parvient.
On dit que le serveur écoute sur le port, pour savoir si aucune requête ne lui parvient.
Pour simplifier les choses, on a attribué des ports bien précis à chaque type de service :
Je crois que vous avez maintenant tout compris.
Sinon, je vous conseille de relire attentivement cette partie du cours, qui sera indispensable pour la suite.
Sinon, je vous conseille de relire attentivement cette partie du cours, qui sera indispensable pour la suite.
Nous allons à présent passer à la pratique.
Internet à ses tout débuts n'était qu'une sorte de réseau décentralisé très simple, reliant quelques machines. C'était l'Arpanet.
Il faut savoir que tout le monde n'a pas toujours pu posséder son propre ordinateur . Auparavant, les ordinateurs prenaient beaucoup trop de place et coûtaient très cher. Ils étaient donc réservés aux universités, aux centres de recherches, etc.
Il y avait un gros ordinateur (le Central), auquel chacun pouvait se connecter à l'aide d'un clavier et d'un écran : c'est ce qu'on appelle un terminal. (Illustration ci-contre - Source : Wikipédia)
À l'époque, les chercheurs ont établi un moyen de réaliser des opérations à distance (via réseau) sur le central. Ce qui a abouti, vers 1972, à la création d'une norme de communication à distance via réseau : TELNET. Telnet est donc avant tout un protocole.
(Si vous ne savez pas ce qu'est un protocole, je vous conseille de jeter un coup d'oeil au premier chapitre de ce cours ).
Internet à ses tout débuts n'était qu'une sorte de réseau décentralisé très simple, reliant quelques machines. C'était l'Arpanet.
Il faut savoir que tout le monde n'a pas toujours pu posséder son propre ordinateur . Auparavant, les ordinateurs prenaient beaucoup trop de place et coûtaient très cher. Ils étaient donc réservés aux universités, aux centres de recherches, etc.
Il y avait un gros ordinateur (le Central), auquel chacun pouvait se connecter à l'aide d'un clavier et d'un écran : c'est ce qu'on appelle un terminal. (Illustration ci-contre - Source : Wikipédia)
À l'époque, les chercheurs ont établi un moyen de réaliser des opérations à distance (via réseau) sur le central. Ce qui a abouti, vers 1972, à la création d'une norme de communication à distance via réseau : TELNET. Telnet est donc avant tout un protocole.
(Si vous ne savez pas ce qu'est un protocole, je vous conseille de jeter un coup d'oeil au premier chapitre de ce cours ).
L'unité centrale faisait tourner un serveur Telnet en arrière-plan, auquel le client pouvait se connecter. Le logiciel prévu pour cela est le client Telnet.
Bon, allez, je vous fais un petit récapitulatif historique :
Sans entrer plus avant dans les détails du protocole Telnet, laissez-moi vous présenter le logiciel en question.
De nos jours, si la commande Telnet n'est plus très utilisée, elle demeure un outil permettant d'établir très facilement des connexions réseau avec des ordinateurs distants, et de "parler" avec eux.
Le client Telnet n'est pas limité à la communication Telnet à proprement parler. Il peut aussi nous servir à tester la disponibilité d'un serveur SMTP - par exemple, ou bien récupérer des fichiers par FTP, pour peu que l'on connaisse le protocole à utiliser.
Nous allons tout de suite passer à la pratique et utiliser Telnet pour se connecter aux serveurs mails. Alors accrochez-vous, ça va secouer...
Je vous préviens : soyez attentifs ! Une faute de frappe ne pardonne pas sur Telnet. Si vous faites une erreur, ce n'est presque pas la peine d'essayer de corriger, vous aurez besoin de vous reconnecter !
Nous allons commencer par tester la disponibilité du serveur SMTP de mon fournisseur. Vous pouvez choisir le vôtre si vous le désirez (et si vous le connaissez).
Lancez Telnet, et tapez :
Vous pouvez aussi entrer directement cette ligne dans l'invite de commande :
telnet smtp.laposte.net 25
La différence est que dans ce cas, lorsque la connexion se termine, votre console Telnet se referme à la vitesse de l'éclair, ce qui peut être énervant en cas de pépin. Cela signifie tout simplement que vous demandez d'établir une connexion avec le serveur SMTP de la Poste, à l'adresse smtp.laposte.net et sur le port 25.
Pensez à vérifier que votre serveur SMTP écoute bien sur le port 25. C'est généralement le cas, sauf pour les serveurs sécurisés (exemple : GMAIL = port 587), qui de toute façon ne sont guère adaptés pour les exercices de ce cours.
Rappelez-vous que smtp.laposte.net correspond à une adresse IP. Cela revient donc à écrire:Essayez !
Si tout se passe bien, vous recevez alors une réponse du genre :
220 mwinf8407.laposte.net ESMTP ABO ****************************
En plus de ses réponses « explicites » (qui peuvent varier), un serveur SMTP utilise des codes pour répondre au client :
Je vous préviens : soyez attentifs ! Une faute de frappe ne pardonne pas sur Telnet. Si vous faites une erreur, ce n'est presque pas la peine d'essayer de corriger, vous aurez besoin de vous reconnecter !
Nous allons commencer par tester la disponibilité du serveur SMTP de mon fournisseur. Vous pouvez choisir le vôtre si vous le désirez (et si vous le connaissez).
Lancez Telnet, et tapez :
Vous pouvez aussi entrer directement cette ligne dans l'invite de commande :
telnet smtp.laposte.net 25
La différence est que dans ce cas, lorsque la connexion se termine, votre console Telnet se referme à la vitesse de l'éclair, ce qui peut être énervant en cas de pépin. Cela signifie tout simplement que vous demandez d'établir une connexion avec le serveur SMTP de la Poste, à l'adresse smtp.laposte.net et sur le port 25.
Pensez à vérifier que votre serveur SMTP écoute bien sur le port 25. C'est généralement le cas, sauf pour les serveurs sécurisés (exemple : GMAIL = port 587), qui de toute façon ne sont guère adaptés pour les exercices de ce cours.
Rappelez-vous que smtp.laposte.net correspond à une adresse IP. Cela revient donc à écrire:Essayez !
Si tout se passe bien, vous recevez alors une réponse du genre :
220 mwinf8407.laposte.net ESMTP ABO ****************************
En plus de ses réponses « explicites » (qui peuvent varier), un serveur SMTP utilise des codes pour répondre au client :
- si la phrase commence par le signe +, c'est bon ;
- si elle commence par le signe -, eh bien, c'est pas bon !Exemple d'un message d'erreur :
L'identification est ici cent fois plus simple :
user paul
+OK name is a valid mailbox
pass 123
+OK user exists with that password
+OK name is a valid mailbox
pass 123
+OK user exists with that password
Et voilà !
Il existe aussi une façon sécurisée de s'identifier, avec la commande APOP (qui n'est d'ailleurs pas supportée par tous les serveurs).
La première chose à faire est de vérifier si vous avez reçu un mail.
Je vais donc utiliser une nouvelle commande :
Je vais donc utiliser une nouvelle commande :
stat
+OK 1 2552
+OK 1 2552
Le serveur me renvoie que j'ai 1 e-mail non lu, d'une longueur de 2552 octets.
Pour le lire, j'entre :
retr 1
+OK Message follows
.....
Subject: Dernière news.
Bla Bla Bla...
retr 1
+OK Message follows
.....
Subject: Dernière news.
Bla Bla Bla...
retr veut dire "récupère", et on lui passe en argument le numéro d'e-mail à récupérer (dans mon cas, 1).
Beaucoup de logiciels de messagerie envoient les e-mails au format HTML. Ne soyez donc pas étonnés si vous recevez du HTML.
OK, OK... Mais qu'est-ce que c'est que tous ces textes cabalistiques avant le message ?
Pas de panique ! Il faut savoir que les logiciels de messagerie et les serveurs SMTP qui se respectent envoient des tas d'informations sur la source de l'e-mail : ce sont les en-têtes du mail. Je ne vous demande pas de tout comprendre, mais jetez-y un coup d'oeil, c'est très instructif !
Et si j'ai plusieurs mails dans ma boîte de réception, il se passe quoi ?
Si jamais vous recevez une réponse du genre :
+OK 3 70204
+OK 3 70204
...vous pouvez sans aucun problème faire :
retr 1
Bla Bla Bla...
retr 2
Bla Bla Bla...
retr 3
Et encore Bla...
retr 1
Bla Bla Bla...
retr 2
Bla Bla Bla...
retr 3
Et encore Bla...
Mais si vous désirez simplement connaître la taille de chacun des mails séparément, il existe une commande simple :
list
+OK scan listing follows
1 2323
2 3842
3 64039
.
list
+OK scan listing follows
1 2323
2 3842
3 64039
.
Le listing se termine par un point à l'usage des courrieleurs qui doivent savoir où la liste s'arrête ! ça ne vous rappelle rien ?
D'aucuns voudront consulter les en-têtes avant de récupérer le mail. Pour cela, il existe une commande spéciale qui permet de récupérer un nombre de lignes précis du message, sachant que les lignes d'en-têtes ne sont pas comptées. On l'utilise par exemple ainsi :
top 1 0
top 1 0
J'ai demandé de récupérer 0 ligne sur le message numéro 1, ce qui me permet de récupérer uniquement les en-têtes.
Sur certains serveurs, il est obligatoire de récupérer au moins une ligne.
Si je veux effacer le mail, je fais :
dele 1
+OK Message deleted
+OK Message deleted
C'est pareil : dele veut dire "efface", et on lui passe en argument le numéro d'e-mail à effacer (dans mon cas, 1).
Note importante : le message n'est effacé que si vous quittez proprement le serveur.
Comme envoyer une pièce jointe avec telnet est quasiment impossible, nous allons envoyer une pièce jointe de façon classique, puis la récupérer avec telnet.
Pour des raisons de simplicité, nous allons envoyer une pièce jointe toute simple.
Lancez votre éditeur de texte, puis entrez-y la phrase :
Lancez votre éditeur de texte, puis entrez-y la phrase :
Sauvegardez le fichier au format .txt, et enfin envoyez-le à votre adresse mail.
Nous allons maintenant récupérer ce courrier avec telnet.
On lance telnet, on se connecte au serveur POP3 sur le port 110, on s'identifie, puis on vérifie que le mail est bien arrivé, et enfin on le récupère avec la commande retr.
On lance telnet, on se connecte au serveur POP3 sur le port 110, on s'identifie, puis on vérifie que le mail est bien arrivé, et enfin on le récupère avec la commande retr.
Voici ce que ça donne chez moi (fin du message) :
Vous pouvez constater que le type MIME de la pièce jointe est donné :
Content-Type: text/plain
Ainsi que la description du fichier (pièce jointe), et son nom :
Content-Disposition: attachment; filename="texte.txt"
Content-Type: text/plain
Ainsi que la description du fichier (pièce jointe), et son nom :
Content-Disposition: attachment; filename="texte.txt"
Et enfin (parce que ça ne pouvait quand même pas être si simple ) :
Content-Transfert-Encoding: base64
Ce qui veut dire que le fichier a été encodé en base64, comme c'est généralement le cas (si vous ne savez pas ce que c'est, vous devriez relire ceci ).
Content-Transfert-Encoding: base64
Ce qui veut dire que le fichier a été encodé en base64, comme c'est généralement le cas (si vous ne savez pas ce que c'est, vous devriez relire ceci ).
Pour vous en assurer, allez sur cette page (http://www.paulschou.com/tools/xlate/), et encodez la phrase que nous avons envoyée en pièce jointe.
Vous pouvez constater que la pièce jointe a été encodée en base64.
IMAP (aujourd'hui IMAP4rev1) est un protocole plus récent et moins bien connu que le protocole POP.
Il est néanmoins plus puissant que ce dernier, et permet notamment la gestion des mails sur le serveur même, c'est le mode online : les mails restent sur le serveur et sont manipulés à distance par le client de messagerie.
Bien entendu, le mode offline (le courielleur télécharge les mails et se charge de leur gestion) existe aussi avec IMAP, à l'instar du protocole POP.
Bien entendu, le mode offline (le courielleur télécharge les mails et se charge de leur gestion) existe aussi avec IMAP, à l'instar du protocole POP.
Tout cela pour vous prévenir que ce protocole est nettement plus complexe que le protocole POP, aussi nous n'allons aborder que les notions les plus simples...
Seuls les meilleurs logiciels de messagerie supportent correctement l'IMAP !
La connexion reste tout aussi simple, souvenez vous simplement que le port par défaut est le port 143.
On fait donc (par exemple) :
Le serveur devrait répondre quelque chose comme :
* OK IMAP4 server ready
* OK IMAP4 server ready
Maintenant attention, vous allez faire :
1 login paul 123
1 OK User logged
1 login paul 123
1 OK User logged
Pas de panique, je vais vous expliquer.
Avec l'IMAP, chaque commande doit être précédée d'un tag, qui va servir à identifier la commande. J'ai choisi 1, mais j'aurais aussi pu choisir a, ou 0001, ou autre...
Le serveur répond en indiquant que la commande 1 a réussi (ou échoué...).
Le serveur répond en indiquant que la commande 1 a réussi (ou échoué...).
Par contre, si vous aviez fait : login paul 123
vous auriez reçu un beau message d'erreur :
login BAD Unreconized Command
vous auriez reçu un beau message d'erreur :
login BAD Unreconized Command
Pour ceux qui n'auraient pas compris : le serveur a interprété login comme un tag, et paul comme commande. Donc il retourne BAD, forcément !
Maintenant, si vous entrez un mauvais login, vous aurez le droit seulement à :
1 NO login failed: user not found
1 NO login failed: user not found
BAD signifie qu'il y a eu une erreur de protocole, tandis que NO veut seulement dire que l'action a échoué.
Il existe une autre manière de s'identifier, avec la commande authenticate, mais comme c'est en base64, on va quand même pas se prendre la tête pour rien !
Le serveur IMAP divise votre "boite aux lettres" en compartiments. Tant que vous n'en avez sélectionné aucun, vous ne pouvez pas faire grand-chose...
Je vais vous montrer comment connaître tous vos compartiments :
2 list "*" "*"
2 list "*" "*"
Chez moi j'ai :
* LIST (\HasChildren) "." "INBOX"
* LIST (\HasChildren) "." "INBOX.DRAFT"
* LIST (\HasChildren) "." "INBOX.OUTBOX"
* LIST (\HasChildren) "." "INBOX.QUARANTAINE"
* LIST (\HasChildren) "." "INBOX.TRASH"
2 OK Completed (0.000 secs 6 calls)
* LIST (\HasChildren) "." "INBOX"
* LIST (\HasChildren) "." "INBOX.DRAFT"
* LIST (\HasChildren) "." "INBOX.OUTBOX"
* LIST (\HasChildren) "." "INBOX.QUARANTAINE"
* LIST (\HasChildren) "." "INBOX.TRASH"
2 OK Completed (0.000 secs 6 calls)
J'ai donc cinq compartiments. Vous l'avez compris, le plus intéressant est le compartiment INBOX, qui est la boite de réception. INBOX.TRASH = messages supprimés, INBOX.QUARANTAINE = messages en quarantaine, etc.
Vous pouvez remarquer aussi que les premières lignes commencent par un *. Ce sont des lignes sans tag (untagged), car le tag n'est renvoyé que lorsque la commande a fini de s'exécuter.
Maintenant, on va sélectionner notre boite de réception :
3 select INBOX
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)]
* 1 EXISTS
* 0 RECENT
* OK [UNSEEN 1]
* OK [UIDVALIDITY 1199996497]
* OK [UIDNEXT 38]
3 OK [READ-WRITE] Completed
3 select INBOX
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)]
* 1 EXISTS
* 0 RECENT
* OK [UNSEEN 1]
* OK [UIDVALIDITY 1199996497]
* OK [UIDNEXT 38]
3 OK [READ-WRITE] Completed
Arrêtez de me regarder comme ça...
1 EXISTS nous dit qu'il y a un message dans la boite. 0 RECENT nous dit que ce message n'est pas récent, c'est-à-dire qu'il était déjà là lors de notre précédente consultation. [UNSEEN 1] veut dire simplement qu'il y a un message non lu.
Eh oui, vous commencez à comprendre ce qu'est la gestion des mails online !
1 EXISTS nous dit qu'il y a un message dans la boite. 0 RECENT nous dit que ce message n'est pas récent, c'est-à-dire qu'il était déjà là lors de notre précédente consultation. [UNSEEN 1] veut dire simplement qu'il y a un message non lu.
Eh oui, vous commencez à comprendre ce qu'est la gestion des mails online !
Pour le reste, vous comprendrez plus tard...
Bien, maintenant vous voulez le lire, ce mail ?
Ça tombe bien, moi aussi...
On fait :
4 fetch 1 body[text]
* 1 FETCH (FLAGS \Seen) BODY[TEXT] {2107}
Bla Bla Bla...
...
4 OK Completed
4 fetch 1 body[text]
* 1 FETCH (FLAGS \Seen) BODY[TEXT] {2107}
Bla Bla Bla...
...
4 OK Completed
Fetch veut dire "va chercher", en anglais.
Le serveur obéit et me montre mon mail.
Le serveur obéit et me montre mon mail.
La commande fetch est particulièrement riche en nuances, mais je ne vais vous en apprendre qu'une seule, qui permet de récupérer l'en-tête du mail :
4 fetch 1 body[header]
4 fetch 1 body[header]
Si vous vous reconnectez à votre serveur IMAP, vous constaterez avec horreur que votre message est toujours au statut non lu (UNSEEN).
Mais comment est-ce possible ?
C'est simple, si vous voulez que le message soit mis en lu, il faut avertir le serveur ! (un courrielleur l'aurait fait automatiquement, mais pas telnet).
C'est là qu'interviennent les flags : les flags (en anglais "drapeaux") permettent de déterminer le statut du mail.
Vous vous souvenez cette ligne : * FLAGS (\Answered \Flagged \Draft \Deleted \Seen) ?
Elle nous donne les types de flags possibles :
Elle nous donne les types de flags possibles :
Tant que vous n'avez pas ajouté le flag (/Seen), le message sera toujours considéré comme non lu !
Voici comment procéder :
5 store 1 +flags (\deleted)
* 1 FETCH (FLAGS (\Deleted \Seen))
5 OK Completed
5 store 1 +flags (\deleted)
* 1 FETCH (FLAGS (\Deleted \Seen))
5 OK Completed
Maintenant, il n'y a plus de mail non lu. Néanmoins, le mail existe toujours sur le serveur.
Eh oui, le serveur nous a dit qu'il marquait le mail en (\Deleted), donc forcement il existe toujours !
Eh oui, le serveur nous a dit qu'il marquait le mail en (\Deleted), donc forcement il existe toujours !
Pour supprimer le mail définitivement, il y a encore une autre commande :
6 expunge
* 1 EXPUNGE
* 0 EXISTS
* 0 RECENTS
6 OK Completed
6 expunge
* 1 EXPUNGE
* 0 EXISTS
* 0 RECENTS
6 OK Completed
OK, mais alors il sert à quoi le répertoire INBOX.TRASH ?
Bonne question !
La réponse est que si vous faites expunge, le mail est supprimé définitivement.
Mais si on veut simplement l'envoyer "à la corbeille", il y a le trash pour cela.
Mais si on veut simplement l'envoyer "à la corbeille", il y a le trash pour cela.
Pour cela, il aurait fallu faire :
6 copy 1 INBOX.TRASH
6 OK [COPYUID 1199996497 38 1] Completed
7 expunge
* 1 EXPUNGE
* 0 EXISTS
* 0 RECENTS
7 OK Completed
6 copy 1 INBOX.TRASH
6 OK [COPYUID 1199996497 38 1] Completed
7 expunge
* 1 EXPUNGE
* 0 EXISTS
* 0 RECENTS
7 OK Completed
Il faut copier le mail dans le trash avant de faire expunge, sans quoi le mail n'existe plus !
La commande copy ne fait que copier le mail dans le trash, sans l'effacer de la boite principale !
Je crois que ce sera tout !
Ah, j'oubliais...
Il vous reste à savoir comment quitter proprement :
8 logout
* BYE LOGOUT received
8 OK Completed
Il vous reste à savoir comment quitter proprement :
8 logout
* BYE LOGOUT received
8 OK Completed
Nous allons maintenant analyser ensemble la structure interne d'un email, mais avant cela, une petite introduction s'impose :
Les serveurs SMTP n'ont pas toujours été capables de transmettre tous les types de texte. A la base, ils n'ont été prévus que pour transmettre les caractères anglophones, ce qui est très limité !
Citation : Wikipédia
Un codage de caractères est un code qui associe un jeu de caractères d'une langue naturelle (comme un alphabet) avec un jeu de quelque chose d'autre, comme des nombres ou des signaux électriques.
Je vais essayer de vous expliquer à ma façon : un ordinateur ne comprend à la base que le binaire, c'est à dire des suites de 0 et de 1...
Mais alors, avec les lettres, les chiffres, les symboles, le chinois..., comment fait-il ?
En réalité, le binaire reste derrière tout cela !
Explication : prenons l'exemple de l'octet. Un octet est composé de 8 bits, c'est à dire d'une série de 8 chiffres en binaire.
Ce qui permet d'avoir 28 = 256 combinaisons !
Exemple : 00000000 => 0 ; 00000001 => 1 ; 00000010 => 2 ; 00000011 => 3 ; 01100100 => 100 ; 11111111 = 255.
Ce qui permet d'avoir 28 = 256 combinaisons !
Exemple : 00000000 => 0 ; 00000001 => 1 ; 00000010 => 2 ; 00000011 => 3 ; 01100100 => 100 ; 11111111 = 255.
A présent, nous pouvons convenir par exemple que :
01000001 (binaire) => 65 (décimal) => A ; 01000010 (binaire) => 66 (décimal) => B, etc.
01000001 (binaire) => 65 (décimal) => A ; 01000010 (binaire) => 66 (décimal) => B, etc.
C'est cela la notion d'encodage : décider que telle valeur est égale à tel caractère !
Le codage ASCII date de 1961 et reste le plus répandu dans le monde de l'informatique. Internet ne fait pas exception à la règle...
Le problème est que le codage ASCII est vraiment très limité (7 bits, soit 26 = 128 combinaisons).
Ce codage donc, suffisant pour les caractères anglais, ne l'est plus du tout si l'on veut utiliser des caractères accentués, etc.
Ce codage donc, suffisant pour les caractères anglais, ne l'est plus du tout si l'on veut utiliser des caractères accentués, etc.
En conclusion, avec les anciens serveurs SMTP, seuls les caractères codés en ASCII pouvaient être transmis correctement.
Pour faire passer des messages plus diversifiés, il a fallu ruser un peu...
Pour faire passer des messages plus diversifiés, il a fallu ruser un peu...
Les serveurs ESMTP, plus récents, possèdent une extension leur permettant de transmettre du texte en 8 bits.
Il fallait en fait encoder le texte dans un autre codage, permettant de passer les caractères complexes divers en ASCII (et non en binaire, vous suivez ?...), puis le décoder à l'arrivée.
Bon, allez, je vois que vous êtes perdus, je vous fais un petit schéma :
Plusieurs types d'encodages existent. Les plus utilisés pour le transfert de courrier sont le Quoted-Printable (7 bits) et le Base64 (6 bits).
Chaque partie du mail (texte, pièce jointe, etc.) peut être encodée différemment, selon le codage le plus adapté.
Chaque partie du mail (texte, pièce jointe, etc.) peut être encodée différemment, selon le codage le plus adapté.
C'est tout ?
En réalité, il nous reste encore un problème !
Les différents systèmes d'exploitation (ainsi que les logiciels...) ne sont pas toujours d'accord sur l'encodage 8 bits à employer pour le texte. Il y a ainsi les codages ISO-8859-1, Windows-1252...
Et c'est pire si vous utilisez des caractères complexes, auquel cas vous utiliserez des codages exotiques comme le UTF-8 (européen), le Shift-JIS (japonais), ou le Big5 (chinois)...
Conclusion : il ne suffit plus d'encoder le texte différemment, il faut aussi retenir l'encodage de base utilisé pour que le texte puisse être décodé sans problème !
Mais alors comment faire avec tout ce bordel !?
Pour faire de l'ordre dans tout cela, a été créé le MIME.
Citation : Wikipédia
Multipurpose Internet Mail Extensions (MIME) est un standard internet qui étend le format de données des courriels pour supporter des textes en différents codages de caractères autres que l'ASCII, des contenus non textuels, des contenus multiples, et des informations d'en-tête en d'autres codages que l'ASCII.
Je crois que pour mieux appréhender le MIME, rien ne vaut la pratique !
Nous allons maintenant analyser un message avec une pièce jointe...
Nous allons maintenant analyser un message avec une pièce jointe...
Comme envoyer une pièce jointe avec telnet est quasiment impossible, nous allons envoyer une pièce jointe de façon classique, puis la récupérer avec telnet.
Pour des raisons de simplicité, nous allons envoyer une pièce jointe toute simple.
Lancez votre éditeur de texte, puis entrez-y la phrase :
Lancez votre éditeur de texte, puis entrez-y la phrase :
Sauvegardez le fichier au format .txt, et enfin envoyez-le à votre adresse mail.
Nous allons maintenant récupérer ce courrier avec telnet.
On lance telnet, on se connecte au serveur POP3 sur le port 110, on s'identifie, puis on vérifie que le mail est bien arrivé, et enfin on le récupère avec la commande retr.
On lance telnet, on se connecte au serveur POP3 sur le port 110, on s'identifie, puis on vérifie que le mail est bien arrivé, et enfin on le récupère avec la commande retr.
Voici ce que ça donne chez moi (sans les entêtes) :
MIME-Version: 1.0
Ici, la version MIME est donnée (je crois que vous vous en seriez doutés !).
Ici, la version MIME est donnée (je crois que vous vous en seriez doutés !).
Subject: =?ISO-8859-1?Q?pi=E8ce_jointe?=
Ici, le sujet de mon message("pièce jointe") a été encodé en Quoted-Printable, et doit être décodé selon le codage ISO-8859-1.
Ici, le sujet de mon message("pièce jointe") a été encodé en Quoted-Printable, et doit être décodé selon le codage ISO-8859-1.
Content-type: multipart/mixed;
boundary="------------030306050100030400050709"
Ces deux lignes sont importantes! Elles signifient que le mail contient plusieurs parties, qui sont séparées par ------------030306050100030400050709.
boundary="------------030306050100030400050709"
Ces deux lignes sont importantes! Elles signifient que le mail contient plusieurs parties, qui sont séparées par ------------030306050100030400050709.
Le MIME est toujours déclaré comme ceci : type/soustype, on parle de type MIME.
This is a multi-part message in MIME format.
Indique le début du message.
Indique le début du message.
------------030306050100030400050709
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Corps du message. Comme je n'ai rien mis dans le corps du message, l'encodage est resté sur 7 bits, mais cela peut varier.
------------030306050100030400050709
Content-Type: text/plain;
name="texte.txt"
Le type MIME de la pièce jointe est donné, ainsi que son nom.
Le type varie selon la pièce que vous avez reçue, ce peut être aussi : image/jpeg, audio/x-ms-wma (Windows Media Audio), video/x-flv (vidéo Flash), etc.
Content-Type: text/plain;
name="texte.txt"
Le type MIME de la pièce jointe est donné, ainsi que son nom.
Le type varie selon la pièce que vous avez reçue, ce peut être aussi : image/jpeg, audio/x-ms-wma (Windows Media Audio), video/x-flv (vidéo Flash), etc.
Content-Transfert-Encoding: base64
Ce qui veut dire que le fichier a été encodé en base64, comme c'est généralement le cas.
Ce qui veut dire que le fichier a été encodé en base64, comme c'est généralement le cas.
Pour vous en assurer, allez sur cette page (http://www.paulschou.com/tools/xlate/), et encodez la phrase que nous avons envoyée en pièce jointe.
Vous pouvez constater que la pièce jointe a été encodée en base64.
Posted in
Messagerie
Related posts:
Si vous avez apprécié cet article , abonnez-vous pour recevoir plus grand contenu tout comme il
Vidéos similaires
Messages populaires
-
Installation pas à pas de Nagios Trêve de blabla, entrons directement dans le vif du sujet avec l'installation d...
-
Si vous souhaitez scanner une plage d’adresse IP sur votre réseau afin de vérifier la disponibilité d’une ou plusieurs...
-
Installation de Cacti sous Debian Les systèmes informatiques d'entreprise associent une diversité de services proposés (rout...
-
C’est quoi le DFS ? I. Présentation Ce premier article a pour but d’expliquer ce qu’est le DFS, accessible dans u...
-
Qu’est-ce que le NAT ? Commençons par la signification du NAT, Network Address Translation (en Français Translation d’Adresse Réseau)...
-
Création d’une règle de pare-feu avec un Fortigate I. Présentation Après avoir découvert ce qu’est un Fortinet dans un premier ...
-
Active Directory I. L’Active Directory L’Active Directory est un annuaire LDAP pour les systèmes d’exploitation Windows, l...
-
IPerf: des exemples… Nous commençons l'année 2008 avec un billet regroupant des exemples d'utilisation d'IPerf, l'...
-
Comment exécuter un script PowerShell Dans l’article comment installer et vérifier le bon fonctionnement de PowerShell , nous av...
-
Routage RIP Définitions Avant de parler de routage RIP, il faut que j’explique qu’est-ce qu’un routeur et quel est son but. Le ...
pobular post
Fourni par Blogger.
Recent Stories
CONNECTER AVEC FACEBOOK
Sponsors
Chercher
Archives
Contactez Moi
0 commentaires pour ce poste
Leave a reply