Het meest gebruikte formaat voor de opslag van e-mailberichten is het mbox-formaat. MBOX staat voor MailBOX. Een mbox is een enkel bestand dat nul of meer e-mailberichten bevat.
Het mbox-formaat
Als we het mbox-formaat gebruiken om e-mails op te slaan, plaatsen we ze allemaal in één bestand. Hiermee wordt een min of meer lang tekstbestand gemaakt (Internet-e-mail bestaat altijd alleen als 7-bit ASCII-tekst, al het andere - bijlagen bijvoorbeeld - is gecodeerd) met het ene e-mailbericht na het andere. Hoe weten we waar het ene eindigt en het andere begint?
Gelukkig bevat elke e-mail in het begin minstens één From-regel. Elk bericht begint met "Van" (Van gevolgd door een witruimteteken, ook wel een "From_" -lijn genoemd). Als deze reeks ("Van") aan het begin van een regel wordt voorafgegaan door een lege regel of bovenaan het bestand staat, hebben we het begin van een bericht gevonden.
Dus wat we zoeken bij het parseren van een mbox-bestand is in wezen een lege regel gevolgd door "Van".
Als reguliere expressie kunnen we dit schrijven als " n nVan. * N". Alleen het allereerste bericht is anders. Het begint alleen met "From" aan het begin van een regel ("^ From. * N").
"Van" in het lichaam
Wat als precies de bovenstaande volgorde in de hoofdtekst van een e-mailbericht wordt weergegeven? Wat als het volgende deel uitmaakt van een e-mail?
- … ik stuur je het meest recente rapport.
- Van dit rapport hoef je niet …
Hier hebben we een lege regel gevolgd door "Van" aan het begin van de regel. Als dit in een mbox-bestand wordt weergegeven, hebben we onmiskenbaar het begin van een nieuw bericht. Tenminste, dat is wat de parser denkt en waarom zowel de e-mailclient als wij behoorlijk in de war zouden zijn door een e-mailbericht dat noch de afzender noch de ontvanger bevat, maar begint met "Van dit rapport".
Om dergelijke rampzalige omstandigheden te voorkomen, moeten we ervoor zorgen dat "Van" nooit wordt weergegeven aan het begin van een regel na een lege regel in de hoofdtekst van een e-mail.
Telkens wanneer we een nieuw bericht aan een mbox-bestand toevoegen, zoeken we naar dergelijke reeksen in het lichaam en vervangen we eenvoudig "Van" door "> Van". Dit maakt verkeerde interpretaties onmogelijk. Het bovenstaande voorbeeld ziet er nu zo uit en triggert de parser niet meer:
- … ik stuur je het meest recente rapport.
- > Van dit rapport hoeft u niet …
Dit is de reden waarom u soms "> Van" kunt vinden in een e-mail waar u alleen "Van" zou verwachten.