Cette page d'information est certainement la moins abordable de
ce site web. Il est nécessaire d'avoir une connaissance du format des
messages transmis par courrier électronique (notamment l'encodage
MIME)
pour en suivre tous les détails.
Généralités
A l'origine, les protocoles Internet ont été développés pour les
états unis d'amérique, avant d'être utilisés dans d'autres pays.
Cette internationalisation a nécessité de prendre en compte des
alphabets plus riches que l'alphabet américain.
De plus, après les textes basiques, les protocoles de courrier
électronique ont intégré la possibilité d'envoyer des textes
avec mise en page et des fichiers de toute nature.
Malheureusement, pour chaque problème rencontré, plusieurs
solutions techniques distinctes ont été adoptées sans que, la
plupart du temps, une telle diversité présente un intérêt
pratique.
Par ailleurs, la complexité des normes fait qu'elles ne sont pas
respectées à la lettre par les mailers, que ce soit pour des
difficultés de mise en oeuvre, ou pour cause d'implémentation
très aproximative.
Dans la pratique, la plupart des mailers utilisent un sous
ensemble limité des formats de messages possibles.
Deux choix sont donc possibles :
soit essayer de traiter du mieux possible tous les messages
au risque de réaliser une application très complexe,
soit se limiter aux cas les plus courants (qui peuvent
quand même englober 99 % des messages).
C'est la deuxième approche qui a été adoptée pour Libremail.
Toutefois, version après version, Libremail traite de plus en
plus de cas particuliers, sans pour autant être devenu beaucoup
plus complexe qu'à l'origine.
Traitement des mails reçus en fonction de leur structure
Si le mail reçu se limite à une zone de texte de type text/plain,
Libremail affiche ce texte.
Dans le cas de messages multipart/alternative (d'abord du texte
puis l'équivalent en HTML), Libremail affiche par défaut la section
texte du mail.
Si le mail est en HTML pur (text/html), Libremail affiche par
défaut le message avec les balises HTML.
L'outil suphtm est capable de détecter et de supprimer avant
téléchargement ces messages en HTML pur.
Si un mail est de type multipart/report, Libremail affiche les
différentes zones de texte qu'il contient les unes à la suite des
autres.
Il n'y a pas de recherche de fichiers joints dans les mails de type
multipart/report.
Dans le cas d'un mail de type multipart/mixed, Libremail affiche
le texte contenu dans la première section. Selon le cas, ce sera :
le texte contenu dans une section de type text/plain,
la sous section text/plain d'une section multipart/alternative,
le texte non converti de la section text/html s'il n'y a pas de
section text/plain.
Après cet affichage, Libremail rajoute la liste des fichiers joints
qui pourront être récupérés.
Si le mail contient des sections message/rfc822, ces dernières sont
traités comme des mails, et leur texte sera rajouté à celui du mail
principal.
Par contre, si un mail de type multipart/mixed comporte plusieurs
zones de texte successives, seule la première sera affichée.
Dans un mail multi section, On peut choisir d'afficher la section
text/html à la place de la section text/plain.
Lors de l'affichage d'une section text/html, il est possible de
n'afficher que le texte significatif.
Les sections multipart/related figurant à l'intérieur d'autres sections
multipart sont prises en compte pour le traitement des bordures de
sections, sans toutefois que leur présence n'entraîne de changements
dans l'analyse du mail.
Structure des messages envoyés
Pour l'envoi de mails, Libremail se limite à deux structures de
message seulement :
mail constitué seulement d'une section texte de type text/plain,
mail de type multipart/mixed composés d'une section text/plain
suivi d'un ou plusieurs fichiers joints.
Encodage des caractères
Comme précisé plus haut, les protocoles Internet ont d'abord été créés
par des américains avant de s'internationaliser. Or, les américains
possèdent 2 caractéristiques qui les distinguent de la plupart des
peuples de la planète :
ils possèdent un stock démesuré d'armes de destruction massive,
leur langue ne comporte pas d'accents.
Pour le courrier électronique, c'est le 2ème point qui est le plus
important, notamment parce qu'à l'origine, les protocoles Internet
ont été prévus pour une transmission des caractères sur 7 bits.
Dans ces conditions les caractères ayant le 8ème bit significatif
(c'est à dire à 1) devaient être encodés.
Du reste, même aujourd'hui où la transmission des caractères sur 8 bits
s'est généralisée, la norme de transmission prévoit que les caractères
de l'entête des messages ayant le 8ème bit significatif positionné seront
toujours encodés.
Deux formats d'encodage existent : le format "quoted printable" et le
format base64.
Pour l'affichage des champs de l'entête des messages, libremail
supporte l'encodage quoted printable et l'encodage base64 (beaucoup
plus rare et sans intérêt pratique avec un alphabet européen, sinon
peut être celui d'empêcher un affichage lisible par des mailers anciens
et de compliquer le filtrage des mails directement par le serveur de
messagerie à partir du champ Subject:).
Pour l'affichage du contenu messages reçus, Libremail accepte les
textes transmis directement sur 7 ou 8 bits (sans encodage visible à
la réception), les messages encodés au format quoted printable et
Les messages encodés base64 qui deviennent de plus en plus nombreux
même si l'emploi de cet encodage est totalement injustifié avec un
alphabet européen.
Pour la récupération des fichiers joints, les encodages quoted
printable et base64 sont tous deux convertis depuis le début, (ce qui
est la moindre des choses).
Pour l'envoi de mails, Libremail réalise automatiquement un encodage
quoted printable des champs de l'entête qui contiennent des caractères
spéciaux, alors que le corps des messages est transmit sous 8-bits
et donc, sans encodage.
Pour envoyer des fichiers joints, en fonction du contenu de ces
fichiers, Libremail choisit entre l'encodage quoted printable et
l'encodage base64, celui qui est le moins encombrant.
Jeux de caractères reconnus
A l'origine, Libremail a été conçu pour travailler avec le jeu de
caractères par défaut ISO-8859-15 ou ISO-8859-1 lorsque le symbole
€ (euro) n'est pas nécessaire.
Il peut donc afficher sans conversion les mails issus d'un PC
fonctionnant aussi bien sous Windows (jusqu'à la version 98), que sous
certaines distributions de GNU/Linux et d'autres UNIX.
Un sous ensemble des caractères (non affichables en l'état) compris
dans l'intervalle 80h à 9Fh (utilisé notamment sur Mac) est converti
dans son équivalent dans le jeu ISO-8859-15.
Libremail analyse la variable d'environnement $LANG pour détecter
le jeu de caractères (ISO-8859-n ou UTF-8) utilisé par le système
d'exploitation.
Les mails rédigés avec le même jeu de caractères que celui du système
d'exploitation sont affichés sans conversion, les autres sont convertis
de ISO-8859-1 à UTF-8 ou de UTF-8 à ISO-8859-15 pour permettre un bon
affichage des caractères accentués.
De même, la saisie des mails peut se faire aussi bien avec le jeu de
caractères ISO-8859-15 que le jeu de caractères UTF-8 .
L'encodage UTF-7 n'est pas traité par Libremail.
Heure et fuseau horaire
Pour l'affichage des dates et heures d'expédition des messages, la
commande vmailsj corrige les écarts (en heures entières) entre
le fuseau horaire de l'expéditeur et celui du destinataire et en tient
compte pour faire un tri chronologique des mails utilisant des fuseaux
horaires différents.
Le outils servant à visualiser le contenu des mails continuent d'afficher
tels qu'ils sont dans les mails dates et heures d'expédition et le
fuseau horaire de l'expéditeur.