File EML: che cos'è e come è fatto
Un'email intera dentro un file di testo: le intestazioni, il corpo, gli allegati e il motivo per cui aprendolo col blocco note vedi caratteri strani
Che cos'è un file EML
Un file .eml è un messaggio email completo salvato in un singolo file di testo, secondo
lo standard RFC 5322. Contiene tutto il messaggio: chi l'ha scritto, a chi, quando,
il testo, il codice HTML della versione formattata e gli allegati, tradotti in caratteri di testo.
Non è un archivio compresso e non appartiene a nessuna azienda.
RFC 5322 è del 2008 e ha sostituito RFC 2822 (2001), a sua volta successore di RFC 822 (1982): è lo stesso formato di allora, aggiornato. La parte che riguarda allegati, testo formattato e caratteri non inglesi è definita separatamente dalle specifiche MIME, cioè RFC 2045, 2046, 2047, 2048 e 2049.
La conseguenza pratica più importante è questa: un .eml si apre con un editor di
testo e si legge. Rinominalo in .txt e aprilo col blocco note o con TextEdit:
vedrai il messaggio, per quanto circondato da righe tecniche. È esattamente ciò che il formato
.msg di Outlook non permette, perché è un contenitore binario. La differenza è
approfondita in EML o MSG.
In una riga
Un .eml è la trascrizione fedele di ciò che i server di posta si sono scambiati per
consegnarti quel messaggio. Per questo è il formato scelto per archiviare le email che devono
restare verificabili, comprese le ricevute della posta elettronica certificata.
L'anatomia: intestazioni, riga vuota, corpo
Un file .eml ha tre parti in sequenza: un blocco di intestazioni, una
riga vuota, e il corpo del messaggio. La riga vuota non è
formattazione: è il separatore previsto dallo standard, il punto esatto in cui i metadati finiscono e
inizia il contenuto.
Ogni intestazione occupa una riga nella forma Nome: valore. Le righe si accumulano in
cima al file mentre il messaggio viaggia: il client del mittente ne scrive alcune, ogni server che lo
inoltra ne aggiunge altre. Un messaggio passato per quattro server ha quattro tracce di passaggio, e
un .eml reale arriva facilmente a cinquanta righe di intestazioni prima che cominci il
testo.
- Intestazioni — mittente, destinatari, oggetto, data, percorso fra i server, esiti dei controlli antifalsificazione, descrizione del contenuto.
- Riga vuota — il confine. Tutto ciò che viene dopo è contenuto.
- Corpo — il testo, l'eventuale versione HTML e gli allegati, separati da marcatori di confine se il messaggio è multipart.
Le intestazioni, una per una
Le intestazioni si dividono in due gruppi: quelle che il tuo programma di posta ti mostra e quelle che tiene nascoste. Le seconde sono le più utili quando devi capire da dove arriva davvero un messaggio.
From— il mittente dichiarato. Si può falsificare: è il valore che il client scrive, non una verifica.To,Cc— destinatari visibili. I destinatari in copia nascosta non compaiono nella copia ricevuta dagli altri.Subject— l'oggetto. Se contiene accenti è codificato (vedi sotto).Date— data e ora di composizione secondo l'orologio del mittente, con il fuso orario.Message-ID— l'identificativo univoco del messaggio, assegnato alla partenza. È il riferimento da citare quando si chiede a un provider di tracciare una consegna.Received— una riga per ogni server attraversato, in ordine inverso: l'ultimo server che ha toccato il messaggio scrive la prima riga in alto. Per ricostruire il percorso reale si legge dal basso verso l'alto.Return-Path— l'indirizzo a cui tornano gli errori di consegna. Può essere diverso dalFrom, e quando lo è vale la pena chiedersi perché.Content-Type— che tipo di contenuto c'è nel corpo:text/plain,text/html, omultipart/…con il marcatore di confine tra le parti.MIME-Version: 1.0— dichiara che il messaggio segue le specifiche MIME. È sempre 1.0, non è mai cambiata.DKIM-Signature— la firma crittografica apposta dal dominio mittente su alcune intestazioni e sul corpo, verificabile con la chiave pubblica pubblicata nel DNS.Authentication-Results— il verbale dei controlli fatti dal server che ha ricevuto il messaggio: qui si leggono gli esiti di SPF, DKIM e DMARC, ciascuno con il propriopassofail.
C'è poi una regola di scrittura che confonde chi apre il file per la prima volta:
l'header folding (RFC 5322 §2.2.3). Un'intestazione troppo lunga si spezza su più
righe, e le righe di continuazione iniziano con uno spazio o una tabulazione. È per
questo che nell'editor un oggetto lungo o una riga Received sembrano "andare a capo" a
caso: è una sola intestazione, scritta su più righe.
Perché nel blocco note vedi caratteri strani
Perché le intestazioni email nascono per contenere solo caratteri ASCII, quindi accenti, lettere accentate e alfabeti non latini vanno codificati. Il meccanismo si chiama encoded words ed è definito da RFC 2047.
La forma è =?charset?codifica?testo?=. Un oggetto come "Perché la fattura è sbagliata"
diventa quindi qualcosa tipo =?UTF-8?B?UGVyY2jDqSBsYSBmYXR0dXJh?= con la B
di Base64, oppure =?ISO-8859-1?Q?Perch=E9?= con la Q di quoted-printable.
Non è un errore e non è un file danneggiato: è l'oggetto, scritto come lo standard impone.
La seconda codifica che incontri è quoted-printable, usata nel corpo dei messaggi con
pochi caratteri non ASCII: le lettere accentate compaiono come =E9 o =C3=A8,
e i segni = a fine riga sono soft line break, cioè spezzature inserite
per rispettare il limite di lunghezza delle righe. Vanno rimossi in lettura, non sono caratteri del
testo. Un lettore fa questo lavoro al posto tuo: EML Viewer decodifica encoded words e
quoted-printable e ti mostra il messaggio come l'ha scritto il mittente.
Il corpo del messaggio e il MIME multipart
Nella maggior parte delle email il corpo è doppio: la stessa cosa scritta due volte,
una in text/plain e una in text/html, racchiuse in un
multipart/alternative. Il client mostra l'HTML e tiene il testo semplice come riserva,
per i lettori che non visualizzano la grafica.
Le parti sono separate da un marcatore di confine, una stringa casuale dichiarata nel
Content-Type come boundary= e ripetuta nel corpo preceduta da due trattini.
Quando il messaggio ha anche allegati, la struttura si annida: un multipart/mixed che
contiene il multipart/alternative del testo più una parte per ogni allegato.
Le immagini inline — il logo nella firma, la grafica di una newsletter incorporata nel
file — sono parti come le altre, con un'intestazione Content-ID; l'HTML le richiama
scrivendo src="cid:…" con lo stesso identificativo. Sono dentro il file, quindi si vedono
anche senza connessione.
Diverso è il caso delle immagini remote: quelle non sono nel .eml, sono
indirizzi http che il programma scarica nel momento in cui apri il messaggio. Quando sono
invisibili — un punto trasparente da un pixel — il loro unico scopo è avvisare il mittente che hai
aperto la mail, quando e da quale indirizzo IP. EML Viewer le blocca tutte, e lo puoi verificare: apri
il pannello Rete degli strumenti sviluppatore mentre leggi un messaggio e non partirà nessuna
richiesta verso domini esterni.
Gli allegati e il Base64
Gli allegati non stanno in un file a parte: sono dentro lo stesso .eml,
convertiti in testo con la codifica Base64. Un PDF, una foto, un file ZIP diventano
pagine e pagine di lettere e numeri, dichiarate da
Content-Transfer-Encoding: base64 e da un Content-Disposition: attachment
con il nome del file.
Base64 rappresenta 3 byte con 4 caratteri, quindi ogni allegato cresce di circa un
terzo. È la ragione aritmetica per cui un .eml che contiene una foto da 3 MB pesa circa
4 MB: nessuna informazione aggiuntiva, solo la stessa informazione scritta in un alfabeto più povero.
Chi apre il file con un editor di testo vede questa massa di caratteri e pensa che il file sia
corrotto: è invece l'allegato, perfettamente intatto e solo da decodificare.
- Base64 — per i file binari: PDF, immagini, archivi, documenti Office. Ingrandisce di circa il 33%.
- quoted-printable — per il testo con qualche carattere non ASCII. Occupa poco più dell'originale.
- 7bit / 8bit — testo senza codifica, scritto così com'è.
Un lettore corretto ricava dal file l'elenco degli allegati con nome e dimensione reale e li decodifica singolarmente, lasciandoti scegliere quali scaricare. Se invece ti serve tutto il messaggio in un unico documento da archiviare o firmare, puoi convertire l'EML in PDF.
Chi produce i file EML
Praticamente tutti i programmi di posta, perché .eml è il formato naturale in cui salvare
un messaggio senza perdere nulla. Questi sono i casi più frequenti in cui te ne ritrovi uno sul
computer.
- Mozilla Thunderbird — trascinando un messaggio fuori dalla finestra, o con File → Salva come.
- Apple Mail — salva i singoli messaggi come
.eml; internamente, nelle proprie cartelle, usa la variante.emlx, che aggiunge la lunghezza del messaggio in prima riga e alcuni metadati in coda. - Windows Mail e la vecchia Posta di Windows —
.emlè il loro formato di archiviazione predefinito. - Gmail — la voce "Scarica messaggio" nel menu di un'email produce un
.eml; l'export completo da Google Takeout usa invece il.mbox. - Outlook.com e Outlook nelle versioni recenti — permettono di salvare in
.emlaccanto al proprio formato .msg. - Tutte le ricevute della posta elettronica certificata italiana — Aruba, Namirial, InfoCert, Poste, Register: le ricevute che scarichi sono file
.eml, e sono il caso in cui il formato conta di più, perché quel file è la prova.
Casi particolari: PEC, mbox, winmail.dat, msg
Ci sono quattro situazioni in cui un file di posta non si comporta come ti aspetti. Tre sono varianti legittime del formato, una è un formato diverso travestito da allegato.
- La busta PEC — una ricevuta di posta certificata è un
.emlche contiene, come allegati, il messaggio originale inpostacert.emle i dati di certificazione indaticert.xml. I lettori comuni li mostrano come due file opachi da scaricare. Come leggerli davvero è spiegato in aprire postacert.eml. - Il file .mbox — non un messaggio ma un archivio: molti messaggi concatenati in un unico file di testo, ciascuno introdotto da una riga che inizia con
From. È il formato dell'export di Google Takeout e delle cartelle di Thunderbird. - L'allegato winmail.dat — quando il mittente usa Outlook con il formato RTF Microsoft, i veri allegati finiscono impacchettati in un unico file
winmail.dat. Come recuperarli è spiegato in winmail.dat: cos'è e come aprirlo. - Il file .msg — il formato proprietario di Outlook, binario e non leggibile in un editor. Stesse informazioni, contenitore completamente diverso: vedi EML o MSG.
Un file EML è pericoloso?
Un .eml non è un file eseguibile: non contiene codice che possa partire
da solo quando lo apri, perché è testo e viene interpretato come tale. Il rischio non è nel
contenitore, è in ciò che trasporta.
- Gli allegati — vanno valutati uno per uno prima di aprirli. Un eseguibile, un archivio con dentro uno script, un documento Office con macro restano pericolosi esattamente come se li avessi scaricati da un sito.
- I link nel corpo — un messaggio di phishing è un messaggio perfettamente valido dal punto di vista tecnico. Il testo visibile di un link può essere diverso dall'indirizzo reale, che nel file si legge in chiaro nell'attributo
href. - Le immagini remote — non sono malware, ma segnalano al mittente che hai aperto il messaggio. Su una email che sospetti fraudolenta, quella conferma dice a chi l'ha inviata che il tuo indirizzo è attivo.
Leggere il messaggio in un lettore che non esegue nulla, non scarica risorse esterne e non carica il file su un server è quindi il modo più prudente di esaminare un'email di cui non ti fidi. È esattamente il motivo per cui EML Viewer lavora dentro il browser: il file non lascia il dispositivo, non serve installare niente — comodo sui computer aziendali senza permessi di amministratore — e i domini esterni non vengono mai contattati.
Dove gli altri strumenti si comportano diversamente
I convertitori online generici caricano il file sui propri server per elaborarlo. Se l'email contiene un contratto, una busta paga o una ricevuta PEC, quella copia esce dal tuo controllo e finisce sotto le condizioni di un terzo. Qui il file non si muove: la nostra informativa descrive passaggio per passaggio cosa accade.
Domande frequenti
Che cos'è esattamente un file EML?
È un messaggio email completo — intestazioni, testo e allegati — salvato in un singolo file di testo secondo lo standard RFC 5322. Non è un archivio compresso e non è un formato proprietario: chiunque rispetti quello standard può scriverlo e leggerlo.
Posso aprire un file EML con il blocco note?
Sì, ed è la prova che si tratta di testo. Vedrai però tutte le intestazioni tecniche, gli accenti codificati come =?UTF-8?B?...?= e gli allegati trasformati in pagine di caratteri Base64 illeggibili. Serve un lettore per ricomporre il messaggio in forma leggibile.
Perché un file EML pesa più degli allegati che contiene?
Perché gli allegati vengono codificati in Base64, che rappresenta 3 byte con 4 caratteri di testo: l'aumento è di circa un terzo. Una foto da 3 MB dentro un .eml occupa quindi circa 4 MB.
Un file EML può contenere un virus?
Il file .eml in sé non è eseguibile e non può avviare codice da solo. Il rischio sta in ciò che trasporta: gli allegati, che vanno valutati uno per uno prima di aprirli, e i link presenti nel corpo del messaggio.
Qual è la differenza tra EML e MSG?
L'EML è testo leggibile e segue uno standard pubblico (RFC 5322); il MSG di Outlook è un contenitore binario proprietario Microsoft. Un EML lo apri quasi con qualsiasi cosa, un MSG praticamente solo con Outlook o con un lettore che ne conosca il formato interno.
Che differenza c'è tra .eml, .emlx e .mbox?
Un .eml contiene un solo messaggio. Il .emlx è la variante di Apple Mail: lo stesso messaggio preceduto da una riga con la lunghezza e seguito da metadati in formato plist. Il .mbox è un archivio che concatena molti messaggi in un unico file, uno dopo l'altro.