Grote Thunderbird-mailboxbestanden splitsen zonder e-mails te verliezen
Een Thunderbird-map is één mbox-bestand en weegt na vijftien jaar meer dan de schijf waarop het begon. Zo knip je het in kleinere mailboxen — met Mbox Viewer of met mboxShell, ons open-source terminalprogramma — en zo bewijs je achteraf dat er geen enkel bericht ontbreekt.
Een Thunderbird-map is geen map. Het is één bestand met elk bericht dat je ooit hebt ontvangen, achter elkaar, in de volgorde waarin ze binnenkwamen. Dat ontwerp is opmerkelijk goed verouderd — daarom opent een mailbox uit 2004 vandaag nog steeds — maar het heeft één gevolg dat mensen laat ontdekken: na vijftien jaar is je Postvak IN één enkel object van 14 GB, en alles wat je met een deel ervan wilt doen, betekent het geheel verplaatsen.
Vroeg of laat is er een reden om het op te knippen. Een advocaat vraagt om de correspondentie van één jaar. Je vertrekt bij een bedrijf en alleen de projectmail is van jou. Je wilt 2008–2015 op een externe schijf en de rest in dagelijks gebruik. Of de map is simpelweg onhandelbaar geworden en je wilt hem in plakken die je apart kunt back-uppen.
Het advies dat je op fora leest, is om het bestand te knippen met split, met een teksteditor of met csplit op /^From /. Niet doen. Hier staat waarom — en wat je in plaats daarvan doet.
Waarom een mbox met de hand knippen misgaat
Een mbox-bestand is niets meer dan een aaneenschakeling: elk bericht begint met een regel die met From begint — de envelope-regel, niet de From:-header — en loopt door tot de volgende. Dat is het hele formaat.
Knip dat bestand op een willekeurige byte of regel en je belandt vrijwel altijd midden in een bericht. Het eerste deel eindigt met een halve set headers; het tweede begint met een body zonder enige header en is geen bericht meer, alleen tekst. Beide bestanden zien er prima uit — ze openen, ze hebben de juiste grootte — en de schade blijkt pas jaren later, op de dag dat je juist die ene mail zoekt.
Knippen op het patroon From is slimmer en nog steeds niet veilig. De mbox-familie ontsnapt een bodyregel die met From begint door er >From van te maken, maar niet elk programma dat ooit in jouw mailbox heeft geschreven deed dat, en een geciteerd antwoord kan gerust een regel bevatten die met “From ” begint. Splits op het patroon en dat bericht scheurt in tweeën: één e-mail wordt twee halve, en niets waarschuwt je.
En dat is het echte probleem met alle handmatige routes: ze geven je geen aantal. Je weet niet hoeveel berichten erin gingen, hoeveel eruit kwamen, of dat die twee kloppen. De veilige manier om een mailbox te splitsen behandelt hem als post en niet als tekst — parsen, hele berichten selecteren, weer wegschrijven — en controleert daarna de rekensom.
Voor je knipt: drie dingen over Thunderbirds bestanden
Elke mailbox staat als bestand zonder extensie in je profiel:
- Windows:
%APPDATA%\Thunderbird\Profiles\<profiel>\Mail\Local Folders\ - macOS:
~/Library/Thunderbird/Profiles/<profiel>/Mail/Local Folders/ - Linux:
~/.thunderbird/<profiel>/Mail/Local Folders/
Daarin vind je INBOX, Sent, Archives en je eigen mapnamen, elk naast een .msf-bestand met dezelfde naam. Die .msf is alleen Thunderbirds index en kun je negeren: hij wordt vanzelf opnieuw opgebouwd. Het bestand zonder extensie is de post zelf, in standaard mbox-formaat. (Een uitgebreidere rondleiding staat in onze gidsen voor macOS en Windows.)
Drie regels voordat je iets aanraakt:
Sluit Thunderbird af. Het houdt het bestand open en schrijft erin; een mailbox splitsen terwijl er berichten aan worden toegevoegd, is de zekerste weg naar een half bericht aan het eind.
Werk op een kopie. Kopieer het mailboxbestand ergens anders heen — het bureaublad is prima — en splits de kopie. Haal het origineel nooit uit het profiel: Thunderbird beschouwt de map dan als verdwenen.
Comprimeer eerst, of weet wat je meeneemt. Als je een bericht verwijdert, markeert Thunderbird het en laat het in het bestand staan; de bytes verdwijnen pas als de map wordt gecomprimeerd. Daarom kan een map die 4.000 berichten toont 9 GB groot zijn. Splits je zonder comprimeren, dan gaan die verwijderde berichten mee in je stukken — als volkomen leesbare post. Rechtsklik op de map → Comprimeren als je ze niet wilt, en sla die stap bewust over als je ze wel wilt.
Stap 1 — meten voordat je knipt
Kijk, voordat je bepaalt waar de sneden komen, wat er werkelijk in het bestand zit. mboxShell, ons open-source terminalprogramma (MIT), leest Thunderbirds extensieloze bestanden rechtstreeks, kent geen groottelimiet en schrijft nooit in het bestand dat het opent:
$ mboxshell stats INBOX
File INBOX
File size 9.41 GiB
Messages 128,455
Date range 2004-02-11 — 2026-08-19
Index size 14.2 MiB
Indexing time 48.31s
With attachments 19,880 (15.5%)
Duplicates 312 (128,143 Unique IDs)
Schrijf die twee getallen op: het aantal berichten en het datumbereik. Daar controleer je straks tegen.
Plan nu de sneden zonder iets te produceren. search telt een plak voor je, dus je kunt grenzen uitproberen tot de stukken de gewenste grootte hebben:
$ mboxshell search INBOX "after:2004-01-01 before:2010-01-01" --json | head -3
{
"result_count": 31204,
after: telt zijn eigen dag mee en before: sluit die van hem uit, dus opeenvolgende bereiken die zo geschreven zijn sluiten precies op elkaar aan: geen gaten, geen overlap. Juist die eigenschap maakt de eindcontrole mogelijk. Met de volledige zoeksyntaxis kun je ook op afzender, grootte of bijlage snijden in plaats van op datum, als je splitsing daar eigenlijk over gaat.
Stap 2 — de mailbox knippen
Met Mbox Viewer, op Mac of Windows, is splitsen de export die je al kent:
- Open het gekopieerde mailboxbestand — dat zonder extensie, zonder iets te hernoemen.
- Zoek de plak:
after:2004-01-01 before:2010-01-01. - Selecteer de berichten: klik op de eerste regel en Shift+klik op de laatste voor het hele bereik.
- Bestand → Exporteren (⌘E) → MBOX. Op Windows heet het Exporteren → Naar MBOX…, en daar kun je stap 3 overslaan: zonder selectie exporteert het alles wat de zoekopdracht op het scherm heeft gelaten.
Je krijgt één nieuwe mailbox, voorgesteld als INBOX-selection.mbox, met precies die berichten erin. Ze worden byte voor byte gekopieerd, dus het resultaat is een geldige mailbox die elke client opent, en het bestand dat je opende wordt nooit aangeraakt: de app is strikt alleen-lezen. Herhaal voor elke plak. Exporteren naar MBOX hoort bij de gratis versie; wat de gratis versie begrenst is de grootte van de mailbox die je opent, namelijk 1 GB.
Alleen met mboxShell ligt de route anders, en dat mag gerust hardop gezegd: mboxShell exporteert naar EML, CSV, tekst en HTML — een gedeeltelijke mbox schrijft het niet. De pure terminalweg is dus elke plak exporteren als map vol EML-bestanden en Thunderbird de mailbox bij het importeren laten opbouwen:
$ mboxshell export INBOX --format eml --query "after:2004-01-01 before:2010-01-01" --output ./2004-2009/
Exporting 31204 message(s) as eml to ./2004-2009/
Exported 31204 .eml files
Een omweg, maar gratis, zonder groottelimiet en scriptbaar. De andere helft van het werk — mailboxen samenvoegen — schrijft mboxShell wél als mbox: mboxshell merge a.mbox b.mbox -o samen.mbox.
Stap 3 — bewijzen dat er niets verloren ging
Dit is de stap die een splitsing van een gok onderscheidt, en bijna niemand zet hem.
Tel elk stuk. Draai stats over elke plak en tel de aantallen bij elkaar op. De som moet gelijk zijn aan wat het origineel meldde. Komt hij tekort, dan staat een grens verkeerd; komt hij te hoog uit, dan overlappen twee plakken.
Controleer de datumbereiken. Het bereik van elk stuk hoort binnen de gevraagde grens te vallen, en de stukken horen kop aan staart aan te sluiten zonder gat ertussen.
Bouw het origineel opnieuw op en vergelijk. Dit is de beslissende test. Voeg de stukken samen — deduplicatie op Message-ID staat standaard aan — en lees de samenvatting:
$ mboxshell merge 2004-2009.mbox 2010-2017.mbox 2018-2026.mbox -o rebuilt.mbox
Merge complete:
Input files 3
Total messages 128,455
Duplicates removed 0
Output size 9.41 GiB
Output file rebuilt.mbox
Een “Total messages” gelijk aan het origineel én “Duplicates removed” op nul zeggen samen dat je plakken volledig en disjunct waren: elk bericht zit in precies één ervan. Verschijnen er duplicaten, dan overlappen je bereiken. Is het totaal lager, dan is er iets tussen twee sneden gevallen. In beide gevallen weet je het vóórdat je iets verwijdert — en daar gaat het om.
Pas dan is het redelijk om het origineel weg te bergen. En zelfs dan: bewaar het. Schijven zijn goedkoper dan de e-mail die je niet terug kunt halen.
Stap 4 — de stukken terug in Thunderbird zetten
Moeten de plakken als aparte mappen in Thunderbird blijven, dan importeert de gratis add-on ImportExportTools NG een mbox-bestand rechtstreeks als nieuwe map in Lokale mappen — en hij kan ook een map met EML-bestanden importeren, wat de mboxShell-route sluit. Doe dat met Thunderbird open, via de add-on, in plaats van bestanden met de hand in het profiel te droppen: zo bouwt Thunderbird zijn eigen .msf-index en weet het wat het heeft.
En als de stukken niet terug hoeven — het jaar dat naar de advocaat gaat, het archief dat op de externe schijf blijft — dan hoeft dat ook niet. Het zijn standaard mbox-bestanden. Mbox Viewer opent ze, mboxShell opent ze, en wat over twintig jaar e-mail leest ook. Dat kun je van de meeste formaten die erna kwamen niet zeggen.
Wat je niet moet doen
- Verwijder het origineel niet zolang de rekensom uit stap 3 niet klopt.
- Splits niet op bytes of regels met
split,ddof een teksteditor — en open een mailbox van meerdere gigabytes al helemaal niet in een editor. - Hernoem of verplaats het origineel niet binnen het profiel. Thunderbird herkent mappen aan de bestandsnaam.
- Vertrouw geen stuk dat je niet geteld hebt. Een bestand dat opent is niet hetzelfde als een bestand dat compleet is.
Open je archief met Mbox Viewer
Native app voor Mac en Windows. Streamt MBOX- en EML-bestanden van elk formaat, volledig offline.