Det vanligste formatet for lagring av e-postmeldinger er mbox-formatet. MBOX står for MailBOX. En mbox er en enkelt fil som inneholder null eller flere e-postmeldinger.
Mbox-formatet
Hvis vi bruker mbox-formatet til å lagre e-post, setter vi dem alle i en fil. Dette skaper mer eller mindre lang tekstfil (Internett-e-post finnes alltid bare som 7-biters ASCII-tekst, alt annet - vedlegg, for eksempel - er kodet) som inneholder en e-postmelding etter den andre. Hvordan vet vi hvor en ender og en annen starter?
Heldigvis har hver e-post minst en fra-linje i begynnelsen. Hver melding begynner med "Fra" (Fra etterfulgt av et hvitt mellomrom, også kalt en "From_" -linje). Hvis denne sekvensen ("Fra") i begynnelsen av en linje er foran en tom linje eller er øverst i filen, har vi funnet starten på en melding.
Så det vi ser etter når du analyserer en mbox-fil, er i hovedsak en tom linje etterfulgt av "Fra".
Som et vanlig uttrykk kan vi skrive dette som " n nFrom. * N". Bare den aller første meldingen er annerledes. Den starter bare med "Fra" i begynnelsen av en linje ("^ Fra. * N").
"Fra" i kroppen
Hva om nøyaktig sekvensen ovenfor vises i kroppen til en e-postmelding? Hva om følgende er en del av en e-post?
- … Jeg sender deg den siste rapporten.
- Fra denne rapporten trenger du ikke …
Her har vi en tom linje etterfulgt av "Fra" på begynnelsen av linjen. Hvis dette vises i en mbox-fil, har vi umiskjennelig starten på en ny melding. Det er i det minste det som parseren tenker og hvorfor både e-postklienten og vi ville være ganske forvirret av en e-postmelding som ikke inneholder verken avsender eller mottaker, men begynner med "Fra denne rapporten."
For å unngå slike katastrofale forhold må vi sørge for at "Fra" aldri vises i begynnelsen av en linje etter en tom linje i en e-postadresse.
Når vi legger til en ny melding til en mbox-fil, ser vi etter slike sekvenser i kroppen og erstatter bare "Fra" med "> Fra". Dette gjør feilfortolkning umulig. Eksemplet ovenfor ser nå ut som dette, og utløser ikke mer parseren:
- … Jeg sender deg den siste rapporten.
- > Fra denne rapporten trenger du ikke …
Det er derfor du kanskje noen ganger finner "> Fra" i en e-post hvor du bare regner med "Fra".