Skip to content
Mbox Viewer Pro
mboxarchievenproduct

Een MBOX-bestand van 50 GB openen

Grote MBOX-bestanden laten readers niet omvallen omdat ze beschadigd zijn, maar omdat de meeste readers eerst het hele bestand in het geheugen laden. Wat een streaming parser en een index veranderen, met echte cijfers.

David Carrero ·

Gebruik een reader die het bestand streamt in plaats van het te laden. Met zo’n reader gaat een mailbox van 50 GB met zo’n half miljoen berichten binnen vijf minuten open, blijft hij onder 600 MB RAM, en opent hij vanaf dat moment in minder dan een seconde. Zonder zo’n reader doet de grootte van je bestand er niet toe: hij klapt er hoe dan ook uit, ergens tussen de 500 MB en 2 GB.

Waarom stikt al het andere erin?

Omdat de voor de hand liggende manier om een mailreader te schrijven is: het bestand parsen, een lijst met berichten in het geheugen opbouwen, en die tonen. Dat werkt prachtig tijdens het testen, waar de voorbeeldmailbox 40 MB groot is.

Dan opent iemand een Gmail-export. De parser wil nu een half miljoen berichten tegelijk in RAM houden, het proces groeit voorbij wat de machine heeft, en je krijgt een draaiend wieltje dat nooit ophoudt, een crash, of — het ergst van al — een venster dat na twintig minuten verschijnt en bij elke klik hapert.

Het bestand is het probleem niet. Een MBOX van 50 GB is een volkomen gewone MBOX; het formaat heeft geen groottelimiet en heeft die nooit gehad. Wat wel een limiet heeft, is de aanname dat alles in het geheugen past.

Wat streamen werkelijk inhoudt

Een streaming parser loopt het bestand in kleine stukjes door — Mbox Viewer gebruikt een buffer van 1 MB — en noteert waar elk bericht begint in plaats van het bericht zelf te bewaren. Het geheugengebruik hangt af van hoeveel berichten er zijn, niet van hoe groot ze zijn, en een cache houdt de handvol vast die je daadwerkelijk aan het lezen bent.

Het praktische gevolg: een archief van 50 GB openen kost ongeveer evenveel RAM als een van 500 MB. De cijfers die we publiceren, van de pagina met functies:

GrootteBerichtenEerste keer openenOpnieuw openenRAM
500 MB~5.000< 5 sec< 1 sec< 100 MB
5 GB~50.000< 30 sec< 1 sec< 200 MB
50 GB~500.000< 5 min< 1 sec< 600 MB

Waarom de tweede keer meteen gaat

Omdat die eerste doorloop iets oplevert dat het bewaren waard is: een binaire index van waar elk bericht begint. Opnieuw openen betekent de index laden, niet 50 GB opnieuw lezen.

De index wordt gevalideerd met SHA-256, dus verandert de mailbox eronder — je hebt het bestand vervangen, of er iets aan toegevoegd — dan merkt het programma dat en bouwt hij opnieuw, in plaats van je een verouderde lijst voor te schotelen. Hij staat buiten je mailbox, die byte voor byte blijft zoals hij was.

Eén keer vijf minuten, daarna elke keer een seconde. Voor een archief dat je jarenlang zo nu en dan raadpleegt, is dat verschil precies het verschil tussen een bestand dat je gebruikt en een bestand dat je vermijdt.

Werkt zoeken ook nog op dat formaat?

Ja, en dat is de hele reden om er moeite voor te doen. Een half miljoen berichten is niets om doorheen te scrollen; het is iets om te bevragen. from:, to:, subject:, body:, date:, has:attachment, size:>, exacte zinnen, OR en ontkenning — de hele verzameling staat in het spiekbriefje.

Zoeken in de body leest wel degelijk door de post heen, dus op een heel groot archief duurt dat seconden in plaats van dat het meteen klaar is. Zoeken in de kopteksten — afzender, onderwerp, datum — komt onmiddellijk terug, en daarmee beantwoord je de meeste vragen.

Kun je het bestand niet beter splitsen?

Soms, maar minder vaak dan mensen denken. Splitsen loont wanneer je de stukken werkelijk apart nodig hebt — één bestand per jaar om te archiveren, of een deel om aan iemand te overhandigen. Het loont niet om het bestand alleen maar te kunnen openen, want het lost niets op als het probleem bij je reader ligt.

Wil je toch splitsen, dan hebben we een gids voor grote Thunderbird-mailboxen. En moet je een deelverzameling overhandigen, dan is een selectie exporteren als nieuw MBOX-bestand netter: zoek of filter tot wat binnen bereik valt, schrijf die berichten naar een nieuw bestand, en laat het origineel met rust.

Praktische aantekeningen bij zeer grote archieven

  • Schijfruimte: je hebt ruimte nodig voor de index, niet voor een kopie van de post. Dat is een fractie van de mailbox.
  • Zet hem niet op een netwerkschijf voor de eerste keer openen. Streamen betekent het hele bestand één keer lezen, en dat over wifi doen maakt van vijf minuten een middag. Kopieer hem lokaal, open hem, zet hem terug.
  • Takeout-exports in meerdere delen: Google knipt erg grote mailboxen in verschillende bestanden. Elk daarvan gaat op zichzelf open, en ze zijn samen te voegen tot één mailbox, waarbij dubbele berichten op Message-ID verdwijnen als de delen elkaar overlappen.
  • De gratis versie opent tot 1 GB. Daarboven is het een eenmalige aankoop — geen abonnement, geen account.

Open je archief met Mbox Viewer

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