mboxShell 1.0 : la première version stable, et tout ce qui est arrivé depuis la 0.8
mboxShell, notre outil en ligne de commande open source pour les fichiers MBOX, passe en 1.0 avec un fichier de configuration qui fait enfin ce qu'il annonce. Voici ce changement, et ce qu'ont apporté les quatre versions dont nous n'avions jamais parlé : export Maildir, revue de sécurité, thème clair, boîtes Aruba et exports numérotés.
mboxShell, l’outil en ligne de commande libre, sous licence MIT, dont est né Mbox Viewer, est passé aujourd’hui en 1.0.0. C’est la première version stable, et le numéro a un sens précis : désormais, la ligne de commande et le fichier de configuration suivent le versionnage sémantique. Tout ce qui casserait un script que vous avez écrit en vous appuyant sur eux ne pourra donc arriver qu’avec une 2.0.
Nous en avions parlé pour la dernière fois en août, quand la 0.7.2 a appris à découper une boîte en boîtes plus petites. Six versions sont sorties depuis. L’une d’elles, la 0.7.3, ne changeait qu’un lien ; les cinq autres n’ont jamais eu d’article ici. Celui-ci rattrape le retard.
1.0 : le fichier de configuration fait ce qu’il annonce
Pour être honnêtes, la grande nouveauté de la 1.0 est une correction. mboxShell a toujours lu un config.toml, et le README documentait une longue liste d’options — mais seules quatre étaient réellement lues : le niveau de journalisation, le thème et les deux options des pièces jointes. default_sort, sort_order, date_format, layout, show_sidebar, csv_separator, cache_dir et les autres étaient acceptées, puis ignorées. Elles fonctionnent toutes maintenant. Les quelques-unes derrière lesquelles il n’y a jamais rien eu ([columns], [performance], default_format…) disparaissent ; un ancien fichier qui les contient encore se charge sans broncher.
Pour retrouver le fichier facilement, il y a une nouvelle commande config :
$ mboxshell config path
/Users/you/Library/Application Support/mboxshell/config.toml
(not created yet: `mboxshell config defaults` prints a starting point)
config defaults affiche chaque option avec sa valeur par défaut et un commentaire, si bien que mboxshell config defaults > "$(mboxshell config path)" vous donne un fichier prêt à modifier. config show affiche le vôtre et signale ce qu’il va ignorer :
$ mboxshell config show
[general]
date_format = "%d/%m/%Y %H:%M"
sort_order = "upward"
Invalid value for general.sort_order: "upward"; using the default
Avant la 1.0, cette valeur était écartée sans un mot — et un date_format mal formé faisait planter l’interface. Désormais, chaque valeur incorrecte revient à sa valeur par défaut, avec un avertissement. Une correction dans la documentation, aussi : sur macOS, le fichier se trouve dans ~/Library/Application Support/mboxshell/, et non dans ~/.config/mboxshell/ comme l’affirmait le README.
0.8.0 : une revue complète de l’outil
La plus importante des versions que nous avons sautées est née d’une relecture de l’outil de bout en bout, avec une seule question : que se passe-t-il quand la boîte est malveillante, abîmée ou simplement énorme ?
Sécurité. Le nettoyeur HTML — seule barrière entre un e-mail malveillant et votre navigateur quand vous exportez en HTML ou appuyez sur H — a été mis à jour pour corriger deux failles XSS ayant fait l’objet d’avis publiés, et l’intégration continue audite maintenant les dépendances à chaque compilation. Les images distantes sont bloquées par défaut dans les exports HTML, car ouvrir la page les téléchargerait, et un pixel de suivi indique à l’expéditeur quand et d’où l’archive a été lue ; la page dit combien ont été bloquées, et --allow-remote-images les rétablit. Enfin, l’index, le CSV et les fichiers temporaires sont désormais créés à neuf puis renommés à leur place : une boîte livrée avec un lien symbolique piégé à côté ne peut plus faire écraser l’un de vos fichiers.
Fusion. La déduplication considérait deux messages comme identiques dès qu’ils partageaient un Message-ID. Un message placé plus tôt dans les entrées pouvait donc faire disparaître un message légitime de l’archive fusionnée. Désormais, un message n’est un doublon que si son Message-ID et son contenu correspondent. La fusion lit aussi ses entrées en flux au lieu de charger chacune entièrement en mémoire.
Les entrées incorrectes échouent ouvertement. Un filtre de recherche illisible — after:2099-13-45, size:big — était auparavant écarté : la recherche renvoyait alors tout, et un export --query construit dessus exportait la boîte entière. C’est maintenant une erreur. Un fichier qui n’est pas du tout une boîte aux lettres est refusé au lieu de s’ouvrir avec « 0 message », et une boîte de 800 Mo sans sauts de ligne s’indexe désormais avec environ 20 Mo de RAM au lieu de 816.
Accessibilité. Le réglage theme fonctionne enfin : light est nouveau, avec toutes les couleurs de texte au niveau de contraste WCAG AA ou mieux, et terminal n’utilise aucune couleur propre, il suit donc la palette de votre terminal (NO_COLOR l’impose). Le message sélectionné est marqué par > et le filtre actif par •, pour que ni l’un ni l’autre ne dépende de la couleur. Et le vrai curseur du terminal suit maintenant le focus, ce que suivent les lecteurs d’écran, les plages braille et les loupes.
Export Maildir. export --format maildir écrit un dossier standard cur/ new/ tmp/, fonctionne avec --query et convertit les marques de lu et de suivi — y compris les libellés Gmail Opened et Starred — en indicateurs Maildir :
$ mboxshell export INBOX --format maildir --output ./INBOX-maildir
Exporting 2 message(s) (maildir) → ./INBOX-maildir
Exported to Maildir ./INBOX-maildir (2 message(s))
mboxShell écrit donc désormais les formats MBOX, Maildir, EML, CSV, TXT et HTML.
0.8.1 et 0.8.2 : de petites corrections venues de GitHub
Les boîtes du webmail d’Aruba s’ouvraient comme un seul message. Aruba écrit la ligne qui sépare les messages avec un format de date moderne au lieu du format classique, et mboxShell ne reconnaissait que le classique. Les deux sont acceptés maintenant — avec assez de rigueur pour qu’une ligne du corps citant une date ne coupe toujours pas un message en deux.
Dossiers et fichiers numérotés. attachments --dirname seq-no nomme le dossier de chaque message d’après sa position dans la boîte — 0007/ — au lieu de sa date et de son objet, que les fuseaux horaires et les objets tronqués rendaient difficiles à rapprocher du message. Le numéro est le même index que celui renvoyé par search --json. stats compte aussi désormais les messages sans Message-ID : si ce nombre est 0 et qu’il n’y a pas de doublons, le Message-ID est une clé unique fiable pour cette boîte.
Des exports HTML prêts à devenir un seul PDF. Chaque page exportée commence par un titre masqué et un repère invisible. Une fois les pages converties avec wkhtmltopdf et réunies en un seul PDF, chaque e-mail obtient son propre signet, et le repère indique où le redécouper.
La 0.8.2 n’apporte qu’une correction : l’export pouvait planter sur un message dont l’objet ou l’expéditeur comportait une lettre accentuée près du début. La vérification des noms de fichiers réservés de Windows (CON, NUL…) ajoutée dans la 0.8.0 coupait le nom à un octet fixe, qui peut tomber au milieu d’un é. Toutes les plateformes étaient concernées, pas seulement Windows.
0.9.0 : des exports alignés sur leurs pièces jointes
export accepte maintenant la même option --dirname seq-no, si bien que 0007.html et le dossier 0007/ qui contient ses pièces jointes appartiennent au même message. La numérotation est calculée sur toute la boîte, même quand --query n’en sélectionne qu’une partie : export et attachments concordent toujours.
Elle corrige aussi le premier message d’une boîte qui commence par une marque d’ordre des octets UTF-8 (BOM). Ce message était exporté en prenant la ligne de séparation pour un en-tête : il perdait son objet et était enregistré sous unknown_unknown.
Ce qui n’a pas changé
mboxShell ouvre toujours des boîtes de n’importe quelle taille, n’écrit toujours jamais dans le fichier qu’il lit et fonctionne toujours entièrement hors ligne. La page mboxShell propose les binaires précompilés pour Linux, macOS, FreeBSD et Windows, les commandes et les notes de version ; l’historique complet se trouve dans le changelog du dépôt sur GitHub.
Et si vous préférez cliquer plutôt que taper, la même idée vit dans Mbox Viewer pour Mac et Windows, gratuit pour les boîtes jusqu’à 1 Go.
Ouvrez votre archive avec Mbox Viewer
Application native pour Mac et Windows. Lit en streaming des fichiers MBOX et EML de toute taille, entièrement hors ligne.