Formatul mbox

Cum clienții de e-mail stochează e-mail pe hard disk

Cel mai obișnuit format pentru stocarea mesajelor e-mail este formatul mbox. MBOX vine de la MailBOX. Un mbox este un singur fișier care conține zero sau mai multe mesaje de poștă electronică.

Formatul mbox

Dacă folosim formatul mbox pentru a stoca e-mailuri, le punem pe toate într-un singur fișier. Acest lucru creează fișier text mai mult sau mai puțin lung (adresa de e-mail pe Internet există întotdeauna doar ca text ASCII pe 7 biți, totul - atașamentele, de exemplu - sunt codificate ) conținând un mesaj e-mail după celălalt. De unde știm unde se termină și cealaltă începe?

Din fericire, fiecare e-mail are cel puțin o singură linie de la începutul ei. Fiecare mesaj începe cu "From" (Din urmat de un caracter spațiu alb, numit și linia "From_"). Dacă această secvență ("De la") la începutul unei linii este precedată de o linie goală sau se află în partea de sus a fișierului, am găsit începutul unui mesaj.

Deci, ceea ce căutăm când parsăm un fișier mbox este, în esență, o linie goală urmată de "From".

Ca expresie regulată, putem scrie acest lucru ca "\ n \ nFrom. * \ N". Numai primul mesaj este diferit. Începe doar cu "De la" la începutul unei linii ("^ From. * \ N").

& # 34; Din & # 34; in corp

Dacă exact secvența de mai sus apare în corpul unui mesaj de e-mail? Ce se întâmplă dacă următoarea parte face parte dintr-un e-mail?

... Vă trimit cel mai recent raport.

Din acest raport, nu trebuie ...

Aici avem o linie goală urmată de "De la" la începutul liniei. Dacă acest lucru apare într-un fișier mbox, în mod inconfundabil avem începutul unui nou mesaj. Cel puțin așa gândește parserul - și de ce atât clientul de e-mail, cât și cel care ar fi destul de confuz de un mesaj e-mail care nu conține nici expeditor, nici destinatar, ci începe cu "Din acest raport".

Pentru a evita astfel de condiții dezastruoase, trebuie să ne asigurăm că "De la" nu apare niciodată la începutul unei linii urmând o linie goală în corpul unui e-mail.

Ori de câte ori adăugăm un mesaj nou la un fișier mbox , căutăm secvențe în organism și pur și simplu înlocuim "From" cu "> From". Acest lucru face ca interpretările greșite să fie imposibile. Exemplul de mai sus arată acum și nu mai declanșează parserul:

... Vă trimit cel mai recent raport.

> Din acest raport, nu trebuie ...

Acesta este motivul pentru care uneori puteți găsi "> De la" într-un e-mail în care vă așteptați un simplu "De la".