Inleiding
In dit document wordt de Unix-indeling .mbox (mailbox) beschreven en het gebruik ervan op de Cisco e-mail security applicatie (ESA).
Wat is de mbox-indeling (mailbox) van UNIX?
UNIX mbox-indeling wordt gebruikt door AsyncOS wanneer berichten worden gearchiveerd en ingelogd in de actie message filter log(). "Archive Message" is een extra configuratieoptie voor Ironport Anit-spam (IPAS), Anti-virus (Sophos en McAfee), Advanced Malware Protection (AMP) en Graymail op de ESA.
Mbox-indeling is een ASCII-bestandsindeling (niet binair) die nul of meer e-mailberichten kan bevatten. Berichten worden aaneengeschakeld in het mbox-bestand en kunnen apart worden gedrukt op basis van specifieke strings in het bestand. Dit formaat is identiek aan het bericht aangezien zij tussen RFC 2821 volgzame postgateways worden overgebracht.
Elk bericht in mbox formaat begint met een regel die begint met de string "From" (ASCII tekens F, r, o, m en space). "Van" lijnen worden gevolgd door nog een aantal velden: envelop-afzender, datum, en (optioneel) meer gegevens.
Het eerste veld na de "From" string is de envelop-afzender van het bericht. Afhankelijk van welke toepassing het mbox-bestand maakt, kan de envelop-sender aanwezig zijn als een echte postvak of het kan een ander teken of string zijn. Meestal zal je vinden dat een "-" (single character dash) de envelop-sender vervangt als de envelop-sender niet beschikbaar of onbekend is. Het datumveld dat door de ESA wordt ingebracht, heeft de standaard UNIX asctime() format en is altijd 24 tekens lang. In sommige mbox-bestanden geschreven door niet-AsyncOS-implementaties, volgt verdere informatie de datumstempel. Deze drie velden worden van elkaar gescheiden door één spatie.
Hier is een voorbeeld van een mbox-bestand met één bericht erin:
From Adam@Outside.COM Sun Oct 17 12:03:20 2004
Received: from mail.outside.com (192.35.195.200)
by smtp.alpha.com with ESMTP; 17 Oct 2004 12:03:20 -0700
X-IronPort-AV: i="3.85,147,1094454000";
v="EICAR-AV-Test'0'v";
d="scan'208"; a="86:adNrHT37924848"
X-IronPort-RCPT-TO: alan@mail.example.com
From: Adam@Outside.COM
To: Alan Alpha
Subject: Exercise 7a Anti-Virus Scanning
Reply-To: Adam Alpha
Date: Sun, 17 Oct 2004 12:02:39 -0700
MIME-version: 1.0
Content-type: multipart/mixed; boundary="IronPort"
--IronPort
Content-type: text/plain; format=flowed; charset=us-ascii
Content-transfer-encoding: 7bit
Blah blah blah blah blah
Blah blah blah blah blah
Blah blah blah blah blah
...
--IronPort
Content-type: text/plain
Content-transfer-encoding: 7bit
Content-disposition: inline
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*">X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
--IronPort--
Wanneer mbox-formatted bestanden worden geparsed, is het wenselijk om niet te veel semantiek te lezen in de "Van" regel die berichten scheidt. Omdat veel verschillende hulpprogramma's mbox-bestanden schrijven, is er aanzienlijke variatie in deze lijnen. De regel "Vanaf" kan echter altijd worden gebruikt als een berichtscheidingslijn om op betrouwbare wijze aan te geven dat een nieuw bericht is gestart in het mbox-bestand. In totaal zijn er ongeveer 20 bekende formaten voor de strings na de "Van" berichtscheidingsteken, wat het over het algemeen erg moeilijk maakt om ze te parseren.
Na "van"lijn is een e-mailbericht in het formaat van RFC 2822, met een reeks kopballen van het berichtlichaam die door een lege lijn worden gevolgd die door extra inhoud van het berichtlichaam wordt gevolgd.
Om er zeker van te zijn dat berichten goed van elkaar worden gescheiden, worden regels die beginnen met de string "Van" altijd toegevoegd door een enkele ">". Verschillende verschillende varianten van mbox-bestanden behandelen lijnen die anders beginnen met ">Van". In vroege implementaties van applicaties die mbox-bestanden schreven, werden deze regels zelf niet geciteerd. AsyncOS logbestanden zal altijd prepend een ">" naar lijnen die beginnen met een of meer ">" tekens gevolgd door "Van".
Hier is een voorbeeld van een mbox-bestand dat een bericht bevat met regels die de beginnende strings "Van", ">Van" en ">>>Van" bevatten:
From jtrumbo@example1.com Sun Dec 12 12:27:33 2004
X-IronPort-RCPT-TO: trumbo@example1.com
From: jtrumbo@example1.com
To: trumbo@example2.com
Subject: Quote this, if you dare
Date: Sun, 12 Dec 2004 12:28:00 -0700
The following line is just From
>From A From Line
The following line has quoted >From
>>From A >From Line
The following line has many >>>>From
>>>>>From This line has 4 > characters before From
And this is the last line
Het einde van een bericht in een bestand met de bestandsindeling voor postvakjes wordt traditioneel met een lege regel aangegeven. Dit is echter niet altijd aanwezig (hoewel AsyncOS het daar plaatst). Wanneer een veld-formaat bestand wordt geparsed, moet u het einde van een bericht signaleren aan het begin van een nieuw bericht (verwijder de lege regel als er een aanwezig is) of aan het einde van het bestand.
Een andere variant in het mbox-formaat vroeg om de lengte van het bericht te signaleren in een veld "Content-Length" in de berichtkop. Dat formaat gebruikte geen "Van" lijn het citeren. AsyncOS gebruikt dit formaat niet en voegt geen Content-Length-veld toe.