Skip to content
Mbox Viewer Pro
aankondigingproductmboxshell

mboxShell 1.0: de eerste stabiele versie, en alles wat er sinds 0.8 bij kwam

mboxShell, onze opensource-terminaltool voor MBOX-bestanden, bereikt 1.0 met een configuratiebestand dat eindelijk doet wat het belooft. Dat, plus wat de vier versies brachten waarover we nooit schreven: export naar Maildir, een beveiligingsreview, een licht thema, postbussen van Aruba en genummerde exports.

David Carrero ·

mboxShell, de gratis terminaltool met MIT-licentie waaruit Mbox Viewer is voortgekomen, heeft vandaag 1.0.0 bereikt. Het is de eerste stabiele versie, en het nummer betekent iets concreets: vanaf nu volgen de opdrachtregel en het configuratiebestand Semantic Versioning, dus alles wat een script dat je ertegen hebt geschreven zou breken, kan pas in een 2.0 komen.

De laatste keer dat we erover schreven was in augustus, toen 0.7.2 leerde een postbus in kleinere op te knippen. Sindsdien zijn er zes versies uitgekomen. Eén daarvan, 0.7.3, werkte alleen een link bij; de andere vijf kregen hier nooit een artikel. Dit artikel haalt dat in.

1.0: het configuratiebestand doet wat het belooft

Eerlijk gezegd is het hoofdnieuws van 1.0 een bugfix. mboxShell las altijd al een config.toml, en de README beschreef er een lange lijst opties voor — maar slechts vier werden ook echt gelezen: het logniveau, het thema en de twee opties voor bijlagen. default_sort, sort_order, date_format, layout, show_sidebar, csv_separator, cache_dir en de rest werden geaccepteerd en daarna genegeerd. Nu werken ze allemaal. De paar die nooit iets achter zich hadden ([columns], [performance], default_format…) zijn weg; een oud bestand waar ze nog in staan laadt zonder morren.

Om het bestand makkelijk te vinden is er een nieuwe opdracht, config:

$ mboxshell config path
/Users/you/Library/Application Support/mboxshell/config.toml
(not created yet: `mboxshell config defaults` prints a starting point)

config defaults toont elke optie met haar standaardwaarde en een toelichting, dus mboxshell config defaults > "$(mboxshell config path)" geeft je een bestand om mee te beginnen. config show toont het bestand dat je hebt en markeert wat er genegeerd wordt:

$ mboxshell config show
[general]
date_format = "%d/%m/%Y %H:%M"
sort_order = "upward"
Invalid value for general.sort_order: "upward"; using the default

Vóór 1.0 werd die waarde stilzwijgend weggegooid — en een verkeerd geschreven date_format liet de interface crashen. Nu valt elke foute waarde terug op haar standaard, met een waarschuwing. En een correctie in de documentatie: op macOS staat het bestand in ~/Library/Application Support/mboxshell/, niet in ~/.config/mboxshell/ zoals de README beweerde.

0.8.0: een volledige review van de tool

De grootste van de versies die we oversloegen, kwam voort uit het van begin tot eind doorlezen van de hele tool met één vraag: wat gebeurt er als de postbus vijandig, kapot of gewoon enorm is?

Beveiliging. De HTML-sanitizer — het enige wat tussen een vijandige e-mail en je browser staat als je naar HTML exporteert of op H drukt — is bijgewerkt om twee gepubliceerde XSS-lekken te dichten, en de CI controleert de afhankelijkheden nu bij elke build. Externe afbeeldingen worden in HTML-exports standaard geblokkeerd, want de pagina openen zou ze ophalen, en een trackingpixel vertelt de afzender wanneer en vanaf waar het archief is gelezen; de pagina zegt hoeveel er zijn geblokkeerd, en --allow-remote-images haalt ze terug. En de index, de CSV en de tijdelijke bestanden worden nu vers aangemaakt en daarna op hun plek hernoemd, zodat een postbus die met een geplante symbolische link ernaast wordt aangeleverd niet langer een bestand van jou kan laten overschrijven.

Samenvoegen. Deduplicatie beschouwde twee berichten als gelijk zodra ze een Message-ID deelden. Daardoor kon een bericht dat eerder in de invoer was geplant een legitiem bericht uit het samengevoegde archief laten verdwijnen. Een bericht is nu alleen een duplicaat als de Message-ID én de inhoud overeenkomen. Samenvoegen leest de invoer bovendien als stroom, in plaats van elk bestand in zijn geheel in het geheugen te laden.

Foute invoer faalt zichtbaar. Een zoekfilter dat niet te lezen was — after:2099-13-45, size:big — werd weggelaten, dus de zoekopdracht gaf alles terug, en een export --query die erop voortbouwde exporteerde de hele postbus. Nu is dat een fout. Een bestand dat helemaal geen postbus is, wordt geweigerd in plaats van te openen als «0 berichten», en een postbus van 800 MB zonder regeleinden wordt nu geïndexeerd met ongeveer 20 MB RAM in plaats van 816.

Toegankelijkheid. De instelling theme werkt eindelijk: light is nieuw, met elke tekstkleur op WCAG AA-contrast of beter, en terminal gebruikt geen eigen kleuren en volgt dus het palet van je terminal (NO_COLOR dwingt het af). Het geselecteerde bericht is gemarkeerd met > en het actieve filter met •, zodat geen van beide van kleur afhangt. En de echte cursor van de terminal volgt nu de focus, en dat is wat schermlezers, brailleleesregels en vergrootprogramma’s volgen.

Export naar Maildir. export --format maildir schrijft een standaardmap met cur/, new/ en tmp/, werkt met --query en zet markeringen voor gelezen en met ster — inclusief de Gmail-labels Opened en Starred — om in Maildir-vlaggen:

$ mboxshell export INBOX --format maildir --output ./INBOX-maildir
  Exporting 2 message(s) (maildir) → ./INBOX-maildir
  Exported to Maildir ./INBOX-maildir (2 message(s))

Daarmee zijn de formaten die mboxShell schrijft MBOX, Maildir, EML, CSV, TXT en HTML.

0.8.1 en 0.8.2: kleine fixes die via GitHub binnenkwamen

Postbussen uit de webmail van Aruba openden als één bericht. Aruba schrijft de regel die berichten van elkaar scheidt met een moderne datumnotatie in plaats van de klassieke, en mboxShell herkende alleen de klassieke. Nu worden beide geaccepteerd — streng genoeg dat een regel in de berichttekst die een datum citeert een bericht nog steeds niet in tweeën splitst.

Genummerde mappen en bestanden. attachments --dirname seq-no geeft de map van elk bericht de naam van zijn positie in de postbus — 0007/ — in plaats van zijn datum en onderwerp, die door tijdzones en afgekapte onderwerpen moeilijk aan het bericht te koppelen waren. Het nummer is dezelfde index die search --json teruggeeft. stats telt nu ook berichten zonder Message-ID: is dat 0 en zijn er geen duplicaten, dan is de Message-ID voor die postbus een veilige unieke sleutel.

HTML-exports klaar om één pdf te worden. Elke geëxporteerde pagina begint met een verborgen kop en een onzichtbare markering. Converteer je ze met wkhtmltopdf en voeg je ze samen tot één pdf, dan krijgt elke e-mail een eigen bladwijzer, en de markering laat zien waar je hem weer kunt splitsen.

0.8.2 is één fix: exporteren kon crashen op een bericht waarvan het onderwerp of de afzender vlak aan het begin een letter met accent had. De controle op gereserveerde Windows-bestandsnamen (CON, NUL…) die in 0.8.0 was toegevoegd, kapte de naam af op een vaste byte, en die kan midden in een é vallen. Het trof elk platform, niet alleen Windows.

0.9.0: exports die aansluiten op hun bijlagen

export accepteert nu dezelfde optie --dirname seq-no, dus 0007.html en de map 0007/ met de bijlagen horen bij hetzelfde bericht. De nummering wordt over de hele postbus berekend, ook als --query maar een deel selecteert, zodat export en attachments het altijd met elkaar eens zijn.

Ook wordt het eerste bericht gerepareerd van een postbus die begint met een UTF-8-byte-order mark (BOM). Dat bericht werd geëxporteerd met de scheidingsregel aangezien voor een header, dus het verloor zijn onderwerp en werd opgeslagen als unknown_unknown.

Wat niet veranderd is

mboxShell opent nog steeds postbussen van elke grootte, schrijft nog steeds nooit naar het bestand dat het leest en werkt nog steeds volledig offline. Op de mboxShell-pagina staan de kant-en-klare binaries voor Linux, macOS, FreeBSD en Windows, de opdrachten en de release notes; de volledige geschiedenis staat in de changelog van de repository op GitHub.

En klik je liever dan dat je typt, dan leeft hetzelfde idee in Mbox Viewer voor Mac en Windows, gratis voor postbussen tot 1 GB.

Open je archief met Mbox Viewer

Native app voor Mac en Windows. Streamt MBOX- en EML-bestanden van elk formaat, volledig offline.