Takeout mbox importato: e-mail con la data di oggi

9 min di lettura

Ha aperto l'archivio Google Takeout, ha importato il file mbox in Thunderbird con ImportExportTools NG (o in Apple Mail), poi ha trascinato le cartelle verso il nuovo account IMAP. Nel client le e-mail erano ordinate anno per anno. Sull'account di destinazione, invece, sono tutte datate a oggi. Questo articolo spiega cosa succede con un Takeout mbox importato, perché la data mostrata è quella della copia, come confermarlo in pochi minuti e come correggerla lato server.

Prima cosa da sapere: le e-mail non sono rovinate. La data originale è ancora dentro il messaggio. Semplicemente non è più quella che l'account di destinazione mette in evidenza.

Lo scenario tipico di un Takeout mbox importato

Ha appena chiuso un account Gmail personale, aperto quindici anni fa. Ha richiesto l'esportazione su takeout.google.com, ha atteso il messaggio di Google (due giorni per una casella di posta molto grande) e ha scaricato quattro archivi zip. In ciascuno, un file .mbox per etichetta. Li ha importati in Thunderbird: la cartella locale si è riempita, l'ordinamento per data è impeccabile, il 2009 in fondo, ieri in cima.

Poi ha fatto quello che farebbe chiunque. Ha selezionato le cartelle e le ha trascinate verso l'account IMAP di destinazione, un Microsoft 365, un hosting o un Google Workspace. Il trasferimento è durato una serata intera. Lunedì mattina ha aperto la webmail.

Il problema? Le 18.400 e-mail risultano datate nel fine settimana, in una finestra di poche ore. Un contratto del 2014 finisce accanto a una newsletter della settimana scorsa, e nessuno riesce più a ritrovare niente in ordine cronologico.

Il caso è molto simile a quello delle e-mail vecchie che hanno tutte la stessa data, con una differenza di peso: qui nessuno strumento di migrazione è coinvolto. Basta il trascinamento.

Tre date in una sola e-mail

Per capire bisogna smettere di parlare della data di un'e-mail, come se ce ne fosse una sola. Un messaggio importato da un file mbox ne porta almeno tre, e servono a cose diverse.

L'intestazione Date: quella del mittente

È l'intestazione Date: definita dalla RFC 2822 (ripresa dalla RFC 5322). Il client del mittente la scrive al momento dell'invio, ad esempio Date: Tue, 14 Mar 2017 09:12:45 +0100. Fa parte del messaggio, viaggia con lui e Takeout la conserva così com'è. È lei a rendere possibile la correzione, proprio perché resta intatta.

La riga From del file mbox: una data di facciata

In un file mbox ogni messaggio è preceduto da una riga che inizia con From (con uno spazio, senza due punti). Non è un'intestazione: è un separatore tipico del formato di file, che non fa parte del messaggio. Nessuno strumento serio dovrebbe fidarsene per datare un messaggio.

INTERNALDATE: la data di deposito sul server

Terza data, e la più discreta: l'INTERNALDATE, definita dalla RFC 3501. È un attributo che il server IMAP memorizza accanto al messaggio (non dentro) e corrisponde al momento in cui il messaggio è stato depositato nella casella. Outlook, le webmail e gli smartphone lo usano per mostrare e ordinare la data di ricezione. Per il meccanismo nel dettaglio, l'articolo su INTERNALDATE e le date che si rompono in IMAP va più a fondo.

Una precisazione sulle intestazioni Received:, spesso accusate a torto. Le righe Received di un'e-mail Gmail esportata raccontano il vero percorso del messaggio nel 2017: portano date antiche e legittime. In questo caso specifico la data sbagliata non vive quindi nel messaggio, ma nei metadati che il server assegna alla copia.

Perché l'account di destinazione mostra la data della copia

Quando un client deposita un messaggio su un server IMAP, usa il comando APPEND. Questo comando accetta, come opzione, una data da assegnare al messaggio. Se il client la fornisce, il server la conserva come INTERNALDATE. Altrimenti il server applica la regola prevista dalla RFC 3501: la data e l'ora correnti. In altre parole, la data mostrata dipende da come lo strumento ha scritto l'e-mail. Uno strumento che non trasmette la data originale ottiene la data della copia.

Risultato: mentre trascina le cartelle, ogni messaggio prende la data del proprio deposito. Una cartella da 3000 e-mail copiata in 40 minuti finisce dentro una finestra di 40 minuti.

E la cartella locale di Thunderbird, allora? Sembrava perfetta perché Thunderbird la ordina in base all'intestazione Date e non a una data del server, visto che una cartella locale non ha alcun server. Il comportamento di Apple Mail con le caselle importate è simile: va tutto bene finché i messaggi restano sul Mac. La verità viene a galla quando un altro programma, Outlook per esempio, legge la casella IMAP.

A dire il vero, non è del tutto esatto sostenere che tutti i client sbagliano ogni volta. Alcune versioni trasmettono la data, altre no, e il comportamento è cambiato nel corso degli aggiornamenti. Così due colleghi che seguono lo stesso metodo possono ottenere risultati diversi, e la diagnosi diventa più spiazzante di quanto sembri.

Il trascinamento non è una migrazione. È una copia, e una copia porta la data in cui è stata fatta.

Come riconoscere questo caso in cinque minuti

Prima di cercare una soluzione, verifichi di essere davvero in questo scenario e non in un altro. Bastano quattro controlli.

  • Confronti i due posti. La cartella locale di Thunderbird (o la casella importata di Apple Mail) mostra date giuste, l'account IMAP date recenti per gli stessi messaggi.
  • Guardi l'intervallo. In una cartella dell'account IMAP le date di ricezione stanno dentro poche ore, a volte pochi minuti, attorno al momento in cui ha spostato le cartelle.
  • Apra il sorgente di un messaggio. In Thunderbird, Visualizza e poi Sorgente messaggio; in Outlook, le proprietà del messaggio mostrano le intestazioni. Deve ritrovare una riga Date: vecchia mentre la visualizzazione indica una data recente.
  • Verifichi l'ordine. I messaggi compaiono nell'ordine in cui il client li ha copiati, non in ordine cronologico.

Ecco cosa dà il confronto su un messaggio reale:

Date: Tue, 14 Mar 2017 09:12:45 +0100          (nel messaggio, intatta)
Data mostrata dall'account IMAP: giorno della copia   (metadato del server)

Se queste due righe non raccontano la stessa storia, è proprio questo il caso. E se le date mostrate sono sbagliate ma lo è anche Date:, si tratta di un altro problema, più raro, che esula da questo articolo.

(A proposito, se non ha mai letto le intestazioni grezze di un'e-mail, si prepari un caffè: non è esattamente una lettura da spiaggia.)

Ordinare per data di invio: un cerotto

Il riflesso è passare l'ordinamento alla data di invio. In Outlook funziona più o meno, a patto di rifarlo su ogni cartella e su ogni dispositivo. Ma le notifiche, le regole basate sull'anzianità e sopratutto la ricerca da mobile continuano a usare la data di ricezione. Chi cerca "la mail di settembre scorso" sul telefono non vedrà nulla di logico. Ne parla più a fondo l'articolo su perché ordinare per data di invio non è una soluzione.

Altra pista allettante: rifare la copia. Su un account già in uso produce soprattutto doppioni accanto ai messaggi già presenti, con le stesse date sbagliate o con altre. Un centinaio di cartelle dopo, non ha più una sola casella pulita.

La correzione lato server

La buona notizia è che la data originale c'è ancora. La correzione consiste nel far sì che l'account di destinazione la mostri, senza toccare il contenuto dei messaggi.

È quello che fa Redate. Il servizio si collega alla casella di posta (Google Workspace tramite delega a livello di dominio, Microsoft 365, Outlook.com e Hotmail con l'account Microsoft di ciascuna persona, oppure IMAP diretto con indirizzo e password). Non ha bisogno di sapere quale strumento abbia causato il problema: individua le e-mail la cui data mostrata non corrisponde alla data originale, che la causa sia un trascinamento da un Takeout mbox o qualcos'altro. L'analisi è gratuita e mostra l'entità del problema prima di qualsiasi decisione.

Per la correzione vera e propria, Redate si affida a un motore di correzione proprietario, una pipeline di analisi in più fasi che esamina la catena di intestazioni di ogni messaggio e restituisce a ogni e-mail la sua data originale. Ogni e-mail corretta viene poi verificata singolarmente, con una validazione della conformità RFC e la conservazione della struttura del messaggio. Gli originali non vengono mai eliminati: restano in una cartella visibile della casella finché non li elimina Lei.

Perché arrangiarsi da soli è rischioso

Capire il problema è una cosa. Correggerlo su 15.000 e-mail senza perderne nemmeno una è un'altra.

Uno script che funziona su dieci messaggi di prova non regge una casella di produzione da 30.000 messaggi. Incontra e-mail firmate S/MIME, la cui minima modifica rompe la firma. Messaggi cifrati con PGP. Strutture multipart/alternative annidate, confini MIME incoerenti, Content-Transfer-Encoding inattesi, intestazioni non ASCII codificate in RFC 2047, allegati da 40 MB. Poi arrivano le quote delle API, l'errore 429 Too Many Requests alle 3 di notte in pieno batch, i timeout di rete che interrompono l'operazione al messaggio 11.874.

E dopo? Come si fa a sapere che ogni messaggio è intatto? Senza un meccanismo di rollback, un errore lascia messaggi doppi, allegati persi, conversazioni spezzate, etichette scomparse. Redate controlla ogni e-mail in automatico e tiene l'originale a portata di mano, proprio perché Lei non debba mai scommetterci.

Un ultimo consiglio, gratuito: conservi gli archivi Takeout originali finché la casella non è stata validata. Il file mbox resta la copia di riferimento, anche quando l'account di destinazione sembra a posto.

A seconda del client usato per la copia, le guide dettagliate seguenti descrivono il caso preciso: correggere le date di una copia IMAP manuale in Thunderbird e lo stesso caso in Apple Mail.

Il Takeout è già stato copiato sull'account IMAP e le date sono sbagliate? Avvii l'analisi gratuita di Redate per vedere quante e-mail sono coinvolte, poi le corregga con un pagamento una tantum, senza limiti di dimensione della casella.

Articoli correlati