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 approximative.
Dans la pratique, la plupart des mailers utilisent un sous ensemble limité des formats de messages possibles.

Deux choix sont donc possibles : 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

Structure des messages envoyés

Pour l'envoi de mails, Libremail se limite à deux structures de message seulement :

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 : 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.

Jeux de caractères reconnus

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.

Saisie des caractères en mode page

Ce point concerne une particularité de l'interface utilisateur qui a du évoluer pour s'adapter aux évolutions de GNU/Linux.

Certains outils de Libremail permettent d'utiliser les flèches du clavier et d'autres touches pour se déplacer dans : Ces différentes touches sont vues par le système d'exploitation comme une séquence de caractères qui commence par le caractère Esc suivi d'un [
De plus, la touche Esc employée seule a été choisie pour quitter selon le cas l'outil vmaildir, vmailsj, vmailfic ou la sélection de destinataires.

Pour pouvoir lire ces caractères au moment où ils sont tapés, la console sur laquelle on travaille était configurée depuis la création de Libremail par la commande suivante : Cette commande comporte notamment un délai de lecture d'une demi seconde et la possibilité de ne récupérer aucun caractère pour différencier la réception d'un caractère Esc isolé du début d'une séquence de caractères commençant par Esc.

A l'origine de Libremail, ce système fonctionnait parfaitement et il semble fonctionner encore sur des versions de GNU/Linux récentes démarrant avec init (vérifié avec la Devuan 2.0 basée sur la Debian 8).
Par contre, avec une Debian 10 qui démarre avec systemd, les caractères saisis ne sont pas détectés ! (sauf le Control C qui permet de sortir d'un programme).

Un essai a été fait en augmentant le délai de lecture d'un caractère. Ça permet de détecter les caractères Esc isolés, mais d'autres caractères ne le sont pas et les programmes manquent de stabilité.
La seule solution fiable avec systemd est de supprimer le délai de lecture en exécutant la commande suivante : . Dans ce cas, les caractères saisis seront toujours pris en compte, mais pour distinguer un caractère Esc isolé d'une séquence commençant par Esc, il faudra taper un caractère de plus.

Bizarrement, avec la Debian 6, qu'on programme un délai de lecture ou non, il y en a un implicitement. Donc, plusieurs cas selon peut être l'ancienneté du noyau Linux : Afin de permettre à Libremail de fonctionner avec des distributions GNU/Linux qu'elles soient anciennes ou récentes, 3 possibilités de compilation sont proposées : D'autre part, comme la nécessité d'appuyer 2 fois sur la touche Esc est peu pratique, une possibilité supplémentaire a été rajoutée : Ces possibilités supplémentaires fonctionnent de la même manière quelque soit la version de GNU/Linux et l'option de compilation.