Ho fatto due piccoli esempi da riga di comando con awk.
Prendo in considerazione le email conservate da Thunderbird; le email sono le notifiche del forum, tanto per essere chiari.
Ogni email inizia in questo modo:
From - Tue Aug 9 15:53:31 2005
ovvero una stringa From seguita da una data in formato esteso.
Questo per differenziarla dal campo From: dell'header dell'email stessa
Con AWK, salvo ciascuna mail contenuta nel file 'Inbox', su un file diverso, cosi':
codice:
cacao74@winnie:~/tmp/mail$ awk ' \
BEGIN { counter = 0 } \
{ if ( $0 ~ /^From -/ ) ++counter; print $0 >> "spam-" counter ".eml" } ' Inbox
Dovendo trattare il tuo file che ha un separatore di record meglio definito rispetto all'esempio precedente, la soluzione dovrebbe essere ancora più semplice.
Per simulare il tuo file ho concatenato ciascuna file di mail ottenuto dalla riga di comando precedente, seguita dal carattere '^L', in un nuovo file chiamato Mail.
codice:
cacao74@winnie:~/tmp/mail$ for file in *.eml; do cat $file >> Mail; echo '^L' >> Mail; done
Ipotizzando che ogni volta che viene aggiunta un email in questo file, essa viene precedura dal separatore '^L', occorre editare il file appena creato ed eliminare l'ultima riga contenente '^L'. Giusto per essere precisini. 
Ora, per estrarre ciascuna mail, la nuova riga di comando è la seguente:
codice:
cacao74@winnie:~/tmp/mail$ awk -v RS="\^L" ' \
BEGIN { counter = 0 } \
{ print $0 > "spam-" ++counter ".eml" } ' Mail
Vedi se la cosa ti piace.
ciao