Il formato più comune per la memorizzazione dei messaggi di posta è il formato mbox. MBOX è l'acronimo di MailBOX. Un mbox è un singolo file che contiene zero o più messaggi di posta.
Il formato mbox
Se usiamo il formato mbox per archiviare le e-mail, le inseriamo tutte in un unico file. Questo crea file di testo più o meno lunghi (l'e-mail Internet esiste sempre solo come testo ASCII a 7 bit, tutto il resto - gli allegati, ad esempio - è codificato) contenente un messaggio di posta elettronica dopo l'altro. Come sappiamo dove finisce uno e un altro?
Fortunatamente, ogni email ha almeno un From-line all'inizio. Ogni messaggio inizia con "Da" (Da seguito da un carattere di spazio bianco, chiamato anche "Da_" linea). Se questa sequenza ("Da") all'inizio di una riga è preceduta da una linea vuota o è in cima al file, abbiamo trovato l'inizio di un messaggio.
Quindi quello che cerchiamo quando si analizza un file mbox è, in sostanza, una linea vuota seguita da "Da".
Come espressione regolare, possiamo scrivere come " n nFrom. * N". Solo il primo messaggio è diverso. Inizia semplicemente con "Da" all'inizio di una riga ("^ Da. * N").
"Da" nel corpo
Cosa succede se la sequenza sopra riportata appare esattamente nel corpo di un messaggio e-mail? Cosa succede se quanto segue è parte di una e-mail?
- … ti mando il rapporto più recente.
- Da questo rapporto, non è necessario …
Qui, abbiamo una riga vuota seguita da "From" all'inizio della riga. Se questo appare in un file mbox, abbiamo inequivocabilmente l'inizio di un nuovo messaggio. Almeno questo è ciò che pensa il parser e perché sia il client di posta che noi saremmo piuttosto confusi da un messaggio di posta elettronica che non contiene né mittente né destinatario ma inizia con "Da questo rapporto".
Per evitare tali disastrose condizioni, dobbiamo assicurarci che "Da" non appaia mai all'inizio di una linea che segue una linea vuota nel corpo di un'e-mail.
Ogni volta che aggiungiamo un nuovo messaggio a un file mbox, cerchiamo tali sequenze nel corpo e semplicemente sostituiamo "Da" con "> Da". Ciò rende impossibile interpretazioni errate. L'esempio sopra ora appare come questo e non più fa scattare il parser:
- … ti mando il rapporto più recente.
- > Da questo rapporto, non è necessario …
Questo è il motivo per cui a volte puoi trovare "> Da" in un'e-mail in cui ti aspetteresti un semplice "Da".