# Libremail

Libremail est une suite de logiciels libres pour le traitement du courrier électronique (courriel) fonctionnant en ligne de commande. Il est diffusé sous une licence libre, plus succincte et moins juridique que la licence GNU GPL. Cette licence d'utilisation insiste sur la nécessité de diffuser les sources des programmes (et non des programmes compilés) et sur la possibilité de traduire ces programmes dans d'autres langues.

## Idée de départ

Le projet Libremail vient d'une initiative individuelle du français Bernard Chardonneau.
Il s'agissait d'écrire sous GNU/Linux un ensemble d'outils pour la gestion des courriers électroniques destiné à remplacer Microsoft Internet Mail tout en apportant des solutions à des problèmes constatés, qui existent aussi sur des clients de messagerie plus récents.
Tout comme Microsoft Internet Mail (dans sa version française) :
* Chaque courriel est mémorisé dans un fichier distinct ;
* Les noms de fichiers contenant les courriels ont (hors extension éventuelle) 8 caractères ;
* Les noms des courriels à envoyer ou envoyés commencent par la lettre e ;
* Les noms des courriels reçus commencent par la lettre r ;
* Le suffixe .n est utilisé pour les courriels reçus mais non lus ;
* Quelques noms de répertoires destinés à contenir les courriels sont prédéfinis : entree, sortie, envoyes, poubelle. Ces noms deviendront modifiables à partir de la version 2.0, mais les noms par défaut seront toujours proposés sans accents.
La différence avec Microsoft Internet Mail vient de la numérotation des courriels : 7 lettres avec le logiciel Microsoft, 7 chiffres avec Libremail. Le nombre de courriels possibles par boîte aux lettres passe ainsi d'un peu plus de 8 milliards à seulement 10 millions, ce qui, dans la pratique, convient à la plupart des gens.
Libremail est constitué de nombreux outils fonctionnant en mode console à la manière des différents utilitaires UNIX. La plupart de ces outils se contentent d'effectuer un travail sans intervention au clavier de l'utilisateur, mais il existe trois outils permettant de naviguer en utilisant le clavier.
Depuis sa version 1.0 Libremail comporte les outils nécessaires pour :
* Consulter la liste des courriels sur le serveur de messagerie ;
* Consulter le contenu d'un courriel présent sur le serveur de messagerie ;
* Télécharger les courriels ;
* Consulter les courriels téléchargés, en extraire les fichiers joints ;
* Créer des courriels, répondre à des courriels reçus, les transférer ;
* Rajouter des fichiers joints à un courriel ;
* Envoyer des courriels.
Mais également :
* Afficher les lignes d'en-tête de tous les fichiers d'un répertoire précédé du nom de ce fichier, dans le but d'automatiser dans un script le classement des courriels téléchargés en fonction de certains critères ;
* Détruire directement sur le serveur de messagerie les courriels provenant de certains expéditeurs (le filtrage peut se faire sur des adresses complètes, des noms de domaine ou des adresses comportant une partie variable à gauche du @) ;
* Détruire les courriels en HTML pur ;
* Détruire sur le serveur les courriels dépassant une taille limite en avertissant l'expéditeur ;
* Télécharger les courriels globalement par ordre croissant de taille en commençant par les plus petits et en réinitialisant la connexion POP pour chaque nouveau courriel téléchargé et effacé du serveur.
Les deux dernières fonctionnalités ont pour origine une mésaventure du développeur de Libremail qui, en rentrant de vacances, avait plus d'une centaine de courriels à télécharger, petits pour la plupart (texte dans une liste de discussion), mais aussi, parmi les plus récents, un courriel de plus d'un mégaoctet envoyé sur cette liste de discussions à l'intention d'un utilisateur particulier.
S'apercevant qu'un courriel prenait beaucoup de temps à télécharger, il a choisi d'interrompre la connexion, mais au téléchargement suivant, l'ensemble des courriels déjà récupérés ont été téléchargés une seconde fois, doublant le coût de la communication sur le réseau téléphonique commuté. En effet, lors de l'utilisation du protocole POP pour le téléchargement et la suppression des courriels d'un serveur, leur suppression n'est effective qu'au moment de l'envoi de la commande « quit » au serveur POP.

## Caractéristiques

Libremail a été conçu pour fonctionner sur les systèmes Linux (et UNIX) en mode console.
Pour concevoir Libremail, l'auteur s'est appuyé sur la philosophie UNIX : « des outils qui font peu de choses, mais qui les font bien ». Dans sa version initiale 1.0, Libremail était composé de 21 logiciels distincts capables, pour certains, de fonctionner de manière autonome (lancés en ligne de commande ou dans des shells, crons etc.); pour d'autres, de dialoguer avec l'utilisateur en mode page (utilisation des flèches et d'autres touches du clavier).
Ce nombre de logiciels est passé à 29, deux ans et demi après (version 1.2) et à 35, encore six ans plus tard (version 2.3).
Aucun logiciel complémentaire n'est nécessaire pour l'envoi et la réception des courriels. Il suffit que l'ordinateur soit configuré pour utiliser les protocoles POP et SMTP. Toutefois, la communication se fait en mode non crypté. Pour le transfert sécurisé des données, l'auteur pense que l'utilisation de stunnel serait une solution qui ne dénaturerait pas Libremail en termes de taille du code source et de dépendance avec des bibliothèques systèmes. Depuis sa création, le compilateur gcc et la commande make suffisent pour générer une version exécutable de Libremail à partir du code source. Aucun portage vers Windows n'a été réalisé. L'auteur de Libremail considère que la philosophie de Windows est opposée : se limiter à quelques logiciels graphiques à tout faire (par exemple chercher à tronquer une image depuis Microsoft Word plutôt que de penser à utiliser un logiciel de traitement d'images), au lieu d'avoir des outils spécifiques pour chaque besoin. Un essai de compilation sous l'environnement Cygwin a toutefois été réalisé.
Comme Libremail fonctionne en Mode texte, c'est ce mode qui est privilégié pour l'affichage du contenu des courriels.
Il y a plusieurs cas selon sa structure interne :
* Courriel qui se limite à une section text/plain : cette section est affichée ;
* Courriel qui se limite à une section text/html : cette section est affichée, par défaut avec les balises HTML ;
* Courriel avec une section multipart/alternative qui contient une section text/plain et une section text/html (cas le plus fréquent) : c'est la section text/plain qui est affichée ;
* Courriel avec une section multipart/alternative comportant seulement une section text/plain : la section text/plain est affichée ;
* Courriel avec une section multipart/alternative comportant seulement une section text/html (si, si, ça existe !) : libremail affiche le message d'erreur « Pas de zone texte dans ce mail !!! » Pour la rédaction de courriels, Libremail, se limite à une section text/plain.
Les courriels qui comportent des fichiers joints commencent par une section multipart/mixed à l'intérieur de laquelle l'extraction du texte du courriel fonctionne comme précédemment.
Cet ensemble de caractéristiques est résumé par le slogan « Libremail is not Outlook ».

## Historique des versions
### La version 1.0

L'écriture des logiciels constituant la première version de Libremail a pris 7 à 8 mois. Démarrée en octobre 2002, il était possible fin décembre 2002 de télécharger les courriels reçus et d'y répondre. Mais ce n'est qu'en février 2003 que le traitement des pièces jointes a été disponible. L'ensemble des outils prévus pour la version 1.0 de Libremail était opérationnel durant la première semaine de mai 2003. Le site web correspondant a été mis en ligne début juin 2003.
Dans la version 1.0, les différents outils de Libremail ont été écrits pour lire correctement les courriels provenant du client de messagerie le plus courant de l'époque, à savoir Outlook Express. Le problème est que les normes MIME de transmission des courriers électroniques prévoient, tant dans l'en-tête du courriel que dans le corps du message, plusieurs de possibilités pour l'encodage de caractères, le jeu de caractères accentués, le découpage du courriel en section ...

### Les versions 1 de Libremail

Ces versions ont été écrites en langage C avec des commentaires en français utilisant le jeu de caractères accentués ISO 8859-1 ou ISO 8859-15. Il a été prévu pour fonctionner sur un écran utilisant ce jeu de caractères accentués.
Les messages de l'interface utilisateur sont écrits en français dans le code source de Libremail. La langue française est donc la seule langue des versions 1 de Libremail.
La taille des tableaux et surtout des tableaux de tableaux est fixée par des constantes et juste avant le débordement de ceux-ci, un message d'erreur a été prévu pour demander de recompiler le programme avec une valeur plus grande pour la constante précisée.
Pour la documentation, en plus de celle disponible sur les deux sites de Libremail (qui est également hébergé par tuxfamily depuis mars 2005 en plus du site initial sur free), des pages de man, écrites en français ont été diffusées à partir du 12 août 2004, puis dans les 8 langues du site à partir du 31 janvier 2005.
La dernière version 1 officielle de Libremail est la 1.2.2 du 9 août 2006. Mais il y a eu ensuite 3 versions numérotées 1.9.1 , 1.9.2 et 1.9.3 destinées à préparer la version 2.

### Les versions 2 de Libremail

Dans les versions 2 de Libremail, le code source est toujours écrit avec le jeu de caractères ISO 8859-1/15. Par contre, l'affichage et la saisie des caractères fonctionne aussi bien avec un jeu de caractères ISO 8859-1/15 qu'avec le jeu de caractères UTF-8.
Les messages de l'interface utilisateur sont référencés par un mnémonique et un fichier fait la correspondance entre ce mnémonique et le texte à afficher. Pour changer la langue de l'interface utilisateur, il suffit d'accéder à un autre de ces fichiers.
Pour les outils qui génèrent des réponses automatiques après le refus de certains courriels, des textes de réponses sont également disponibles en plusieurs langues.
La taille des tableaux de lignes de texte est ajustée automatiquement (selon le cas) :
* Soit en lisant 2 fois le même fichier, la première pour compter les lignes, la suivante pour mémoriser son contenu,
* Soit dynamiquement pendant la récupération des données en remplaçant le tableau de tableaux par un autre plus grand.
La première version 2 de Libremail est la 2.0 du 26 mars 2007. Elle est quasiment identique à la pré-version 1.9.3 du 29 janvier 2007, mais avec deux langues de plus, soit un total de 8. En mars 2021, on est toujours sur les versions 2 de Libremail avec la version 2.6.1
Une évolution majeure justifierait de passer aux versions 3 : interfacer la partie réseau de Libremail avec stunnel pour pouvoir utiliser des liaisons sécurisées, et plus subsidiairement d'utiliser le jeu de caractères UTF-8 pour le code source des programmes et des fichiers de données.

## Caractéristiques de Libremail et évolutions

En plus de l'internationalisation justifiant le passage à la version 2, Libremail a évolué pour supporter la lecture des courriels venant de clients de messagerie de plus en plus variés parmi lesquels des générateurs de courriels automatiques prenant quelquefois des libertés par rapport aux normes. Ils pouvaient générer des blocages ou des plantages de certains outils de Libremail.
Au tout début, le texte des courriels devait avoir ses caractères accentués transmis tel quel (sur 8 bits), ou encodés quoted-printable. Seuls les fichiers joints dont le contenu peut être binaire pouvaient être encodés base64. Par la suite, le support de l'encodage base64 a été réalisé, très rapidement pour l'entête des courriels (version 1.0.4 du 6 avril 2004), puis de manière rudimentaire pour le contenu du message (version 1.1 du 7 mars 2005 avec des sauts de ligne intempestifs provenant du code source du courriel) et en corrigeant le défaut d'affichage dans la version 2.3 (9 janvier 2012).
Au tout début, les courriels en html pur (constitués seulement d'une section text/html) reçus par l'auteur de Libremail se trouvaient être des spams et le traitement leur étant réservé était la destruction automatique par la commande suphtm disponible dès la version 1.0. Le choix de ce format pour le courriel était un critère suffisant pour le classer comme indésirable. Par la suite, avec le développement du commerce en ligne, de plus en plus de courriels utiles constitués seulement d'une section text/html ont été diffusés et Libremail a été adapté pour offrir la possibilité de lire plus facilement leur contenu, d'abord en permettant de supprimer l'affichage des balises html ((version 1.1 du 7 mars 2005), puis avec la possibilité de ne plus afficher l'entête html (contenant quelquefois des définitions de CSS tellement nombreuses que la plupart ne sont pas utilisées !) à partir de la version 2.6 du 26 février 2021.
Dans la version 1.0 de Libremail, il n'était possible de supprimer automatiquement des courriels indésirables qu'en se basant sur :
* Leur format (text/html)
* Leur taille qui dépasse une valeur limite choisie
* L'adresse ou le nom de domaine de l'expéditeur
et le téléchargement des courriels restant se faisait sans sélection supplémentaire.
Mais très rapidement, d'autres outils ont été rajoutés pour détecter et supprimer des courriels indésirables à partir du libellé du sujet (commande filtre-sujet du 6 septembre 2004), puis du destinataire ou de n'importe quel autre champ de l'entête. Ou au contraire, pour effectuer le téléchargement des seuls courriels remplissant un critère particulier (version 1.2 du 19 janvier 2006). Les critères permettant de refuser un courriel ou au contraire de le télécharger de manière sélective sont mémorisés dans des fichiers texte, à raison d'un critère par ligne.
Lors de la consultation des courriels par l'outil vmailfic, l'appui de 2 touches du clavier (lettre c suivi d'un numéro parmi ceux proposés) est suffisant pour recopier le courriel dans un fichier, rajouter automatiquement l'expéditeur dans le carnet d'adresses ou au contraire dans la liste des adresses des expéditeurs et des noms de domaines refusés.
En 2014, deux autres fonctionnalités peut-être spécifiques à Libremail ont été rajoutées :
* Interfaçage de la commande vmailfic de Libremail avec le logiciel libre de traduction automatique Apertium pour traduire le sujet et le texte du courriel dans une autre langue (version 2.4 du 13 mai 2014). Cette interface permet neuf possibilités de traductions définies dans un fichier texte et devrait fonctionner avec d'autres logiciels de traductions utilisables en ligne de commandes.
* Adaptation de la commande vmailsj de Libremail et des commandes de création de courriels, pour que les courriels non encore lus et les adresses de destinataires sélectionnées dans le carnet d'adresses qui apparaissent en surbrillance sur un écran puissent être identifiés par un caractère spécial sur un terminal Braille (version 2.4.1 du 13 octobre 2014). Cette adaptation fait suite à une discussion avec Jean Philippe Mengual, informaticien libriste aveugle. On la réalise par la déclaration d'une variable d'environnement.
Mais sinon, les évolutions les plus nombreuses de Libremail, quoique peu visibles, ont consisté à adapter ce logiciel à des mails de plus en plus exotiques dans leur structure et donc à renforcer sa fiabilité.

## Slogans

Libremail is not Outlook : Ce slogan énumère certaines caractéristiques de Libremail qui le distinguent d'Outlook Express (et de beaucoup de clients de messagerie qui le copient, dont Thunderbird) :
* Un fichier pour chaque courriel plutôt que tous les courriels dans un très gros fichier,
* De nombreux outils spécialisés plutôt qu'un seul logiciel à tout faire (mais qui en fin de compte ferait l'impasse sur certaines possibilités de Libremail),
* Mode texte privilégié : on s'attache au contenu rédactionnel des courriels plutôt qu'aux fioritures visuelles que permet l'affichage de pages HTML;
* Avec l'un des outils, en cas de coupure de la liaison internet pendant un téléchargement, il n'est pas nécessaire de récupérer de nouveau les courriels déjà téléchargés.
* Libremail ne prend pas d'initiatives dangereuses à l'insu de l'utilisateur dès qu'il récupère un fichier joint. C'est à l'utilisateur de décider d'ouvrir ces fichiers.
* Aucune interface graphique n'est nécessaire pour utiliser Libremail. Mais certains outils permettent néanmoins de travailler en mode page en utilisant les touches du clavier pour se déplacer dans le texte affiché.
* Les sources de Libremail sont fournis d'office. Leur faible volume (en comparaison avec les sources d'autres applications libres) devrait permettre à tout programmeur C d'adapter Libremail à ses besoins sans trop de difficultés.
La liberté n'est pas une marchandise : Slogan apparu en 2005 alors qu'un autre site web a choisi d'utiliser le nom « Libremail » pour vendre un service Antispam. Il est destiné à rappeler que Libremail est une suite de logiciels libres, et que cette liberté implique pour l'utilisateur la possibilité d'utiliser Libremail gratuitement, pour tout ce qu'il permet de faire, y compris pour le filtrage des spams. L'auteur du service Antispam a toutefois changé le nom de son produit pour éviter un procès avec l'auteur de Libremail.