Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
090_applicatifs:170smtp:010_les_bases [le 16/02/2025 à 14:36] – supprimée - modification externe (Date inconnue) 127.0.0.1 | 090_applicatifs:170smtp:010_les_bases [le 24/03/2025 à 15:13] (Version actuelle) – [Les divers codages utilisant MIME] prof | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | |||
+ | ====== Les bases ====== | ||
+ | |||
+ | Dans cette partie de l' | ||
+ | |||
+ | Cette partie est donc divisée en trois paragraphes : | ||
+ | |||
+ | * la façon dont le message voyage, depuis l' | ||
+ | * une analyse détaillée de tout le contenu du message, y compris l' | ||
+ | * une explication de la façon dont le contenu du message est codé pour pouvoir être transporté par SMTP. | ||
+ | |||
+ | ===== Itinéraire d'un message électronique ===== | ||
+ | |||
+ | Supposons un cas simple (et cependant courant). | ||
+ | |||
+ | * Soit un utilisateur abonné chez « truc » et ayant pour adresse électronique : **fred@truc.fr**. | ||
+ | * Soit un autre utilisateur abonné chez « machin » et ayant pour adresse électronique **marc@machin.com**. | ||
+ | * truc dispose des serveurs : | ||
+ | * smtp.truc.fr | ||
+ | * pop.truc.fr | ||
+ | * machin dispose des serveurs : | ||
+ | * smtp.machin.com | ||
+ | * pop.machin.com | ||
+ | * Fred doit envoyer un message à Marc. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | - Fred compose le message avec son outil de messagerie préféré.\\ | ||
+ | - Le serveur «smtp.truc.fr» reçoit le message, constate que le destinataire n'est pas dans son domaine (sa destination). Il cherche alors un MTA dans le domaine machin.com et le trouve (DNS est là pour ça). Il envoie le message à «smtp.machin.com». | ||
+ | - Le serveur «smtp.machin.com» reçoit le message, constate que le destinataire est bien dans son domaine (ses destinations). Il range alors le message dans la boite aux lettres de Marc, par l' | ||
+ | - Un jour, Marc décide de regarder s'il n'a pas de messages. Il envoie donc une requête à son serveur «mail.machin.com», | ||
+ | - Le serveur consulte la boite aux lettres de Marc, constate qu'il y a un message dedans. Il existe deux protocoles plutôt différents pour ce faire: | ||
+ | - POP3 (Post Office Protocol) tombé en désuétude, | ||
+ | - IMAP4 ( Interactive Message Access Protocol) bien plus évolué. | ||
+ | - Il l' | ||
+ | |||
+ | ===== Mécanismes mis en jeu ===== | ||
+ | |||
+ | ==== SMTP (Simple Message Transfert Protocol) ==== | ||
+ | |||
+ | C'est le protocole applicatif qui permet de transporter les messages sur l' | ||
+ | |||
+ | Pour y arriver, il analyse dans un premier temps la partie de l' | ||
+ | |||
+ | ==== POP3 ou IMAP4 ==== | ||
+ | |||
+ | Ces protocoles sont exclusivement utilisés pour le dialogue entre le client de messagerie et sa boîte aux lettres. Il ne fait pas de transport sur l' | ||
+ | ==== MUA, MTA, MDA et cetera ==== | ||
+ | |||
+ | Un peu de jargon : | ||
+ | |||
+ | * Le **MUA** (Mail User Agent), c'est le client de messagerie. Parmi les MUA libres, nous pouvons citer: | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * Le **MTA** (Mail Transfert Agent) est à prendre au sens large. Le courrier peut être acheminé d'un point à un autre par l' | ||
+ | * Le **MDA** (Mail Delivery Agent) aussi appelé LDA (Local Delivery Agent) est le service de remise du courrier dans les boites aux lettres des destinataires, | ||
+ | * le **MX** (Mail eXchanger), n'est rien de plus qu'un MTA référencé sur les DNS, comme nous le verrons plus loin. | ||
+ | |||
+ | === Récapitulons === | ||
+ | |||
+ | Lorsque l'on rédige un courrier et qu'on le poste, on le fait avec le MUA qui le transmet au MTA qu'on lui a signalé dans la configuration (pour un abonné Free, c'est normalement smtp.free.fr). C'est l' | ||
+ | |||
+ | De MTA en MTA, le message voyage jusque sur le MTA qui a en charge la messagerie du domaine du destinataire (étape 2). Il le passe alors (avec tous les autres messages entrant pour ce domaine) au MDA qui distribue ce courrier entrant dans les boites aux lettres concernées (étape 3). | ||
+ | |||
+ | Les étapes 4, 5 et 6 concernent le serveur POP (ou IMAP). | ||
+ | |||
+ | |||
+ | ===== Dans les entrailles de l' | ||
+ | |||
+ | D' | ||
+ | |||
+ | Lorsque vous recevez un e-mail, votre MUA (maintenant qu'on sait ce que c'est) vous montre: | ||
+ | |||
+ | * L' | ||
+ | * L' | ||
+ | * Le texte (ou corps) du message. | ||
+ | |||
+ | Mais votre e-mail contient toute une partie « cachée » qui nous permet de savoir quel chemin cet e-mail a suivi pour arriver dans votre boîte aux lettres. | ||
+ | |||
+ | Cette partie, appelée l' | ||
+ | |||
+ | ==== Prenons un exemple ==== | ||
+ | < | ||
+ | Return-Path: | ||
+ | Received: from alisier.wanadoo.fr (smtp-rt-9.wanadoo.fr [193.252.19.55]) | ||
+ | by mail.monaco.net (Pro-8.9.3/ | ||
+ | for & | ||
+ | Received: from mahonia.wanadoo.fr (193.252.19.58) | ||
+ | by alisier.wanadoo.fr; | ||
+ | Received: from CHRIS (62.161.101.240) | ||
+ | by mahonia.wanadoo.fr; | ||
+ | Message-ID: & | ||
+ | From: " | ||
+ | To: & | ||
+ | Subject: test itineraire | ||
+ | Date: Thu, 11 May 2000 18:19:24 +0200 | ||
+ | MIME-Version: | ||
+ | Content-Type: | ||
+ | charset= " | ||
+ | Content-Transfer-Encoding: | ||
+ | X-Priority: 3 | ||
+ | X-MSMail-Priority: | ||
+ | X-Mailer: Microsoft Outlook Express 5.00.2919.6600 | ||
+ | X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6600 | ||
+ | Status:</ | ||
+ | |||
+ | |||
+ | Juste pour analyser l' | ||
+ | </ | ||
+ | |||
+ | Toute la partie en gras constitue ce que l'on appelle l' | ||
+ | |||
+ | __**Note :\\ **__// | ||
+ | |||
+ | ===== Détail de l' | ||
+ | |||
+ | Tous les mots finis par « : » sont des champs qui ont une signification particulière, | ||
+ | |||
+ | ^ Return-Path: | ||
+ | ^ Received: | Cette ligne est un peu particulière. Chaque MTA qui reçoit le message y incrit le nom du MTA qui le lui a envoyé, ainsi que le sien. Il est ainsi possible de retracer complètement la route qu'a suivi le message de l' | ||
+ | ^ Message-ID: | C'est un identifiant unique du message. Il est attribué par le premier MTA qui reçoit le message (Protocole ESMTP: Extended SMTP). | | ||
+ | ^ From: | C'est l' | ||
+ | ^ To: | C'est l' | ||
+ | ^ Subject: | L' | ||
+ | ^ Date: | La date d' | ||
+ | ^ MIME-Version: | ||
+ | ^ Content-Type: | ||
+ | ^ charset= | Jeu de caractères utilisé. | | ||
+ | ^ Content-Transfer-Encoding: | ||
+ | ^ X-... | Tous les champs commençant par X ne sont pas des champs « officiels ». CHaque MUA est libre d'en ajouter autant qu'il veut. Leur contenu n'est pas pris en compte par les MTA. Ainsi, il est illusoire de croire que le champ X-Priority ait une quelconque importance dans la vitesse de transport du message. | | ||
+ | |||
+ | Cette liste de champs n'est pas complète. Il y en aurait pour trois pages à les énoncer tous... | ||
+ | |||
+ | ==== Utilité de l' | ||
+ | |||
+ | L' | ||
+ | |||
+ | * Identifier l' | ||
+ | * Identifier le destinataire | ||
+ | * Savoir à qui il faut répondre | ||
+ | * Retrouver le chemin suivi par le message | ||
+ | * Savoir comment a été codé ce message. | ||
+ | * Des informations « subsidiaires » (champs X...) qui ne sont pas utilisés par SMTP ni ESMPT, mais qui permettent de donner des informations qui peuvent être utiles, comme le MUA qui a généré le message. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ===== Vertus et défauts de SMTP ===== | ||
+ | |||
+ | Ce protocole a la vertu d' | ||
+ | |||
+ | * la sécurisation de la transmission. Aussi des solutions permettant non seulement de s' | ||
+ | * les possibilités de transmettre autre chose que du texte brut. Cette limitation a été contournée par un artifice capable d' | ||
+ | |||
+ | Nous allons tout de même faire deux où trois observations utiles, pour comprendre mieux comment il faut configurer son MUA pour être lu correctement. | ||
+ | |||
+ | ==== Les divers codages utilisant MIME ==== | ||
+ | |||
+ | Bien que le codage des données soit traité plus en détail ailleurs sur ce site, voyons tout de même rapidement quelques points importants. | ||
+ | |||
+ | Pour illustrer ceci, nous allons envoyer des messages avec Outlook Express et nous allons les lire avec un outil rustique sous Linux : l' | ||
+ | |||
+ | >// | ||
+ | |||
+ | ==== Codage « Aucun » ou « plain/text » ==== | ||
+ | |||
+ | C' | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Et l'on récupère ceci (à la condition que votre console utilise ISO-8859-1): | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | C'est correct. L' | ||
+ | |||
+ | ==== Codage: « quoted printable » ==== | ||
+ | |||
+ | Outlook express propose ce mode en « texte brut ». Essayons pour voir... | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Ben c'est pas terrible; les lettres accentuées sont curieusement codées... | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | En fait, dans ce mode de codage, les caractères qui peuvent être codés sur 7 bits sont transmis normalement, | ||
+ | |||
+ | A ne pas utiliser donc, si le destinataire ne dispose pas d' | ||
+ | |||
+ | ==== Codage « base 64 » ==== | ||
+ | |||
+ | Outlook Express propose également ce mode de codage, lorsque l'on choisit le « texte brut ». On essaye... | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | C'est catastrophique. Mail ne sait pas du tout décoder le message... | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Aucun caractère n'est lisible. | ||
+ | |||
+ | === Le codage HTML === | ||
+ | |||
+ | Enfin, le meilleur pour la fin, le message en HTML. | ||
+ | |||
+ | Je ne voudrais pas ici déclencher une polémique inextinguible sur ce sujet brûlant... Mais rappelons les faits. | ||
+ | |||
+ | Le texte pur, c'est bien, mais c'est de la génération de « edit », « notepad » et autres « vi ». Autrement dit, aucun enrichissement possible du texte. Il peut pourtant être utile de rédiger ses messages avec quelques possibilités des traitements de texte, comme les notions de gras, italique, souligné, mise en sur brillance etc. D'où l' | ||
+ | |||
+ | Mais voyons le résultat : | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Ici, pas de copie d' | ||
+ | |||
+ | * Ce qui est en gras constitue les morceaux de l' | ||
+ | * Ce qui est surligné représente les spécificités du codage en HTML « multipart » | ||
+ | * Ce qui est en bleu, c'est l' | ||
+ | |||
+ | < | ||
+ | < | ||
+ | Return-Path: | ||
+ | Delivered-To: | ||
+ | Received: from chris (chris.maison.mrs [192.168.0.10]) | ||
+ | by gateway2.maison.mrs (Postfix) with SMTP id DB2D51BAAF | ||
+ | for & | ||
+ | Message-ID: & | ||
+ | From: " | ||
+ | To: & | ||
+ | Subject: codage HTML | ||
+ | Date: Thu, 11 May 2000 09:00:06 +0200 | ||
+ | MIME-Version: | ||
+ | <span class=" | ||
+ | |||
+ | <span class=" | ||
+ | # de manière différente pour les deux parties...</ | ||
+ | |||
+ | <span class=" | ||
+ | |||
+ | <span class=" | ||
+ | # avec le texte du message, quel qu'il soit.</ | ||
+ | |||
+ | < | ||
+ | X-MSMail-Priority: | ||
+ | X-Mailer: Microsoft Outlook Express 5.00.2919.6600 | ||
+ | X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6600</ | ||
+ | |||
+ | <span class=" | ||
+ | |||
+ | <span class=" | ||
+ | < | ||
+ | charset= »iso-8859-1 » | ||
+ | Content-Transfer-Encoding: | ||
+ | |||
+ | Ici, c'est ce qu'on fait de mieux: | ||
+ | éèàçùî | ||
+ | |||
+ | <span class=" | ||
+ | # celle qui, normalement, | ||
+ | |||
+ | <span class=" | ||
+ | < | ||
+ | charset=" | ||
+ | Content-Transfer-Encoding: | ||
+ | |||
+ | <span class=" | ||
+ | # Le « plain text » peut être utilisé dans le codage HTML</ | ||
+ | |||
+ | & | ||
+ | & | ||
+ | & | ||
+ | http-equiv=3DContent-Type& | ||
+ | & | ||
+ | & | ||
+ | & | ||
+ | & | ||
+ | & | ||
+ | mieux:& | ||
+ | & | ||
+ | & | ||
+ | |||
+ | <span class=" | ||
+ | # Tout ceci est du jargon HTML. Simple ici, parce qu'il n'y a aucune fioriture ! | ||
+ | # Ce paragraphe aurait été beaucoup plus long, si l'on avait mis des couleurs, | ||
+ | # des tailles de polices différentes, | ||
+ | # Notez que la seule partie signifiante de tout ceci est ce qui est surligné en blanc | ||
+ | </ | ||
+ | |||
+ | <span class=" | ||
+ | </ | ||
+ | |||
+ | Notez qu' | ||
+ | |||
+ | Alors, pourquoi le HTML est-il proscrit par la netiquette ? | ||
+ | |||
+ | * en tout premier lieu, hélas, un problème de sécurité. Un document HTML peut véhiculer des scripts malicieux ayant des comportements de virus ; | ||
+ | * l' | ||
+ | * pour l' | ||
+ | * la durée de chargement (pensez qu'il existe encore des internautes qui ne disposent que d'un très faible débit) ; | ||
+ | * La lisibilité aussi. La taille des polices étant fixée, un texte lisible sur un écran 800x600 deviendra très pénible à lire sur un 1280x1024 ; | ||
+ | * la plus élémentaire des politesses qui consiste à s' | ||
+ | * L' | ||
+ | * Le temps de chargement des messages et l' | ||
+ | * certaines personnes reçoivent plusieurs dizaines (centaines) de messages par jour. Même avec une bonne connexion, c'est mieux de faire court ; | ||
+ | * Le dernier argument est une synthèse des autres, les boites aux lettres sont souvent limitées en taille par les fournisseurs d' | ||
+ | |||
+ | ===== Conclusions ===== | ||
+ | |||
+ | * Par défaut, postez en texte brut, « plain text » ou « aucun codage » avec Outlook Express. En pratique, codez en ISO-8859-1 (ou en UTF-8, éventuellement, | ||
+ | * ne postez en HTML qu'aux personnes qui vous l'ont permis, c'est plus poli ; | ||
+ | * ne postez en HTML que si c'est vraiment utile, (faire simplement « joli » n'est pas utile. Pour faire joli, faites une œuvre d'art et envoyez la par la poste). | ||
+ | |||
+ | Voilà. Vous ne pourrez plus dire maintenant que vous ne saviez pas pourquoi il fallait faire attention au codage de vos messages :-) | ||
Les bases: Dernière modification le: 01/01/1970 à 00:00 par