|
Accueil
Historique du projet
Libremail is not Outlook
Présentation générale
Caractéristiques techniques
Voir les sources
Télécharger
Installation
Derniers sources
Droits d'utilisation
Contacter l'auteur
Tee-shirts de soutien
Autres sites web
Site miroir
|
Caractéristiques techniques
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 affichera ce texte.
- Dans le cas de messages multipart/alternative (d'abord du texte
puis l'équivalent en HTML), libremail affichera la section texte
du mail.
- Si le mail est en HTML pur (text/html), libremail ne fait pas
de conversion pour afficher lisiblement ce genre de message.
Par contre, l'outil suphtm est capable de détecter et de
supprimer avant téléchargement les messages en HTML pur.
- Si un mail est de type multipart/report, libremail affichera 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 affichera
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 rajoutera la liste des fichiers
joints qui pourront être récupérés. Les sections text/html, possédant
un nom de fichier, ne seront toutefois pas prises en compte (depuis la
version 1.2.1).
Si le mail contient des sections message/rfc822, ces dernières seront
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 (depuis la version 1.1.0)
d'afficher la section text/html (sans conversion des balises) à la
place de la section text/plain .
Les sections multipart/related figurant à l'intérieur d'autres sections
multipart sont prises en compte (depuis la version 1.2.1) 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é
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 depuis le début l'encodage quoted printable (quasi universel)
et depuis la version 1.0.4 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 depuis
le début les textes transmis directement sur 7 ou 8 bits (sans encodage
visible à la réception), et les messages encodés au format quoted
printable.
Les messages encodés base64 sont à présent convertis (depuis la version
1.1.0), mais avec un traitement des sauts de ligne plus rudimentaire que
pour les autres formats. De toutes façon, l'emploi de cet encodage pour
les textes des mails est très rare, et 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.
Ces choix techniques conviennent parfaitement dans les pays développés
(par exemple France), mais ne sont peut être pas adaptés à d'autres
régions du monde comme l'Afrique (à vérifier).
S'il s'avérait que dans ces pays, les caractères accentués soient
correctement transmis dans les champs d'entête (notamment dans le
sujet du mail), et dans les pièces jointes, mais pas dans le texte
du message, il faudrait créer et utiliser une version modifiée de
"envmail" pour que ces messages soient transmis avec l'encodage
quoted printable.
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 détecte également l'encodage UTF-8 et convertit les
caractères correspondants lorsqu'ils sont équivalents à un caractère
présent dans l'intervalle A0h à FFh du jeu ISO-8859-15.
Ceux qui correspondent à un caractère de l'intervalle 80h à 9Fh dans
ce jeu ISO ne sont pas convertis. D'une part on aboutirait à des
caractères non affichables, d'autres part leur encodage UTF-8 est
beaucoup plus anarchique que celui des caractères à partir de A0h.
Néanmoins, d'autres caractères UTF-8, vraissemblablement des caractères
typographiques Mac, sont également convertis lorsque c'est possible.
- Depuis la version 2.0 (et les béta versions 1.9.2 et 1.9.3),
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,
Libremail tient compte de la tendance majoritaire dans les pays
d'europe de l'ouest, à savoir :
- l'ordinateur qui envoie le mail est réglé (à quelques minutes
près) sur l'heure locale,
- le fuseau horaire déclaré peut être n'importe lequel.
Les mails reçus sont donc affichés avec l'heure d'expédition qu'ils
contiennent sans faire de correction au niveau du fuseau horaire.
Pour les régions du monde où un même pays se découpe en plusieurs
fuseaux horaires, d'autres choix techniques au niveau de cet
affichage peuvent être préférables.
|