Il sintomo: tutte le email risultano di oggi
Ha appena terminato un import PST in Outlook. La barra di avanzamento ha raggiunto il 100%, tutto è andato liscio. Poi apre la casella di posta... e ogni email importata mostra la data di oggi. Un messaggio del 2019, uno del 2021, un archivio di cinque anni: tutti con la stessa data. Quella del giorno dell'import.
Non è un problema di visualizzazione. Non è una questione di fuso orario. È un comportamento perfettamente documentato, coerente con il modo in cui IMAP gestisce i metadati delle date. Ma rimane un disastro per chiunque abbia bisogno di ritrovare le email vecchie per data.
PST locale e IMAP: due mondi molto diversi
Prima di spiegare perché le date si rompono, è necessario capire cosa sia un file PST dal punto di vista della gestione delle date.
Un file PST (Personal Storage Table) è un formato proprietario Microsoft. Conserva le email con tutti i loro metadati: data di invio, data di ricezione, allegati, categorie, indicatori di lettura. Questi metadati sono gestiti direttamente da Outlook, al di fuori di qualsiasi protocollo di messaggistica. Quando si consulta un PST in Outlook senza connessione a un server, le date visualizzate provengono direttamente dai campi interni del file PST. Fin qui, tutto bene.
Il problema emerge quando si tenta di trasferire questo contenuto verso una casella ospitata su un server IMAP, che si tratti di Microsoft 365, Google Workspace o qualsiasi altro provider classico. A quel punto si lascia il mondo PST per entrare nel mondo IMAP, e le regole cambiano radicalmente.
IMAP APPEND e l'INTERNALDATE: il cuore del problema
In IMAP, ogni messaggio archiviato sul server ha due tipi di dati relativi alla data:
- L'intestazione
Date:(RFC 2822), che fa parte del contenuto del messaggio. È la data inserita nel messaggio dal mittente. - L'INTERNALDATE, un metadato gestito dal server IMAP. Rappresenta il momento in cui il messaggio è stato depositato sul server. È questo valore che Outlook usa per ordinare i messaggi nella vista "Data di ricezione".
(Tra l'altro, se ha mai provato a leggere le intestazioni grezze di un'email, sa che non è esattamente una lettura rilassante. Ma è lì che succede tutto.)
Quando un'email arriva normalmente sul server, il server di posta imposta automaticamente l'INTERNALDATE al momento esatto della ricezione. Risultato: la data visualizzata in Outlook corrisponde a quando si è ricevuto il messaggio.
Quando Outlook importa un file PST verso una casella IMAP, usa il comando IMAP APPEND per inviare ogni messaggio al server. Lo standard IMAP consente di passare un INTERNALDATE esplicito durante un'operazione di APPEND. Outlook però non lo fa. Invia i messaggi senza specificare l'INTERNALDATE. Il server IMAP, in assenza di istruzioni, applica la regola predefinita: l'INTERNALDATE viene impostato all'ora corrente, ovvero il momento dell'import.
Risultato: 8.000 email importate, 8.000 email con la data di oggi.
Perché Outlook si comporta così
Non si tratta di una svista di Microsoft. È una scelta implementativa che probabilmente sembrava ragionevole all'epoca: nel caso d'uso originale dell'import PST, l'utente archivia i messaggi localmente e li "importa" nella casella corrente. La data rilevante per l'ordinamento sarebbe quella di ricezione originale... ma Microsoft ha scelto di non propagare l'INTERNALDATE durante l'operazione di import.
Per essere precisi, questo comportamento riguarda l'import PST tramite l'assistente nativo di Outlook (File > Apri ed esporta > Importa/Esporta). Altri metodi di import, come alcuni strumenti di terze parti o le migrazioni tramite l'interfaccia di amministrazione di Exchange, possono comportarsi diversamente a seconda della loro implementazione di IMAP APPEND.
Questo comportamento è noto e documentato sui forum Microsoft da anni. Non è cambiato con Outlook 2016, né con Outlook 2019, né con le versioni attuali di Microsoft 365. Un utente che importa un PST oggi incontrerà esattamente lo stesso problema del 2015.
In cosa si distingue da una migrazione IMAP classica
È qui che la questione diventa interessante, perché l'import PST produce un risultato simile a una migrazione IMAP con date sbagliate, ma attraverso un meccanismo diverso.
In una migrazione IMAP tipica, ad esempio con BitTitan MigrationWiz o imapsync, le email passano da un server IMAP sorgente a un server IMAP destinazione. Lo strumento di migrazione recupera i messaggi e li reinserisce tramite IMAP APPEND. Alcuni strumenti preservano correttamente l'INTERNALDATE, altri no. In ogni caso, ai messaggi viene aggiunta un'intestazione Received: con la data di migrazione, il che può perturbare la visualizzazione in Outlook indipendentemente dall'INTERNALDATE.
Con un import PST il meccanismo è più semplice: non viene aggiunta alcuna intestazione Received: di migrazione (i file PST non transitano attraverso un server di posta intermedio), ma l'INTERNALDATE non viene semplicemente mai impostato al valore corretto. Il risultato visibile è identico, la causa sottostante è leggermente diversa.
Questa distinzione ha una conseguenza diretta sulla correzione: l'approccio da adottare non è esattamente lo stesso a seconda che si tratti di una migrazione IMAP o di un import PST. Si veda anche perché l'INTERNALDATE causa date rotte per una spiegazione dettagliata dei due casi.
Perché le opzioni di visualizzazione di Outlook non correggono nulla
La reazione tipica quando si scopre il problema è frugare nelle impostazioni di Outlook. Ed esiste effettivamente un'opzione che sembra promettente: la possibilità di ordinare le email per "Data" invece che per "Data di ricezione".
Ordinare per data di invio non è una soluzione. È un cerotto.
Ecco perché: anche cambiando l'ordinamento per visualizzare la colonna "Data" (che corrisponde all'intestazione Date: del messaggio, quindi la data originale), diversi problemi persistono:
- La ricerca di Outlook indicizza sull'INTERNALDATE. Una ricerca "email di gennaio 2020" non restituirà le email importate di gennaio 2020, perché il loro INTERNALDATE indica che risalgono al giorno dell'import.
- Le cartelle "Oggi", "Questa settimana", "Questo mese" nell'interfaccia di Outlook si basano sull'INTERNALDATE, non sull'intestazione
Date:. - Nelle interfacce web (Outlook Web App, Gmail) e sui client mobili, la data visualizzata e il comportamento di ordinamento dipendono quasi sempre dall'INTERNALDATE del server.
- Le regole e i filtri automatici applicati alla data di ricezione non funzioneranno correttamente.
Insomma, cambiare la vista risolve la visualizzazione per un utente specifico, su un client specifico, in una configurazione specifica. Non corregge il problema alla fonte.
La risincronizzazione dell'OST non serve a nulla
Un altro tentativo classico: svuotare la cache OST e forzare una risincronizzazione completa dal server. L'idea è che il problema possa provenire dalla cache locale di Outlook, non dal server.
Pista sbagliata. Il file OST è una cache locale che rispecchia lo stato del server IMAP. Se l'INTERNALDATE è errato sul server, sarà errato nell'OST dopo la risincronizzazione. Eliminare l'OST non cambia nulla ai dati archiviati sul server Exchange Online o Google Workspace. È il server che fa testo.
L'unico modo per correggere le date è correggere i metadati direttamente lato server, messaggio per messaggio. Ed è precisamente lì che le cose diventano complicate da fare manualmente.
Il problema di scala: 1 email è banale. 15.000 è un'altra storia
Tecnicamente, se si comprende il problema, si potrebbe immaginare di scrivere uno script che scorra la casella, legga l'intestazione Date: di ogni messaggio e corregga l'INTERNALDATE di conseguenza. Capire il problema è una cosa. Correggerlo su 15.000 email senza perderne una sola è un'altra.
Alcune realtà operative:
- Le API Microsoft Graph e Gmail impongono limiti di frequenza (rate limits). Uno script scritto senza accortezza genererà errori 429 Too Many Requests, si interromperà a metà della correzione e lascerà la casella parzialmente corretta, senza sapere quali email sono state elaborate e quali no.
- Alcune email in un PST possono avere intestazioni
Date:malformate o mancanti. Uno script senza gestione di questi casi limite può corrompere quei messaggi o saltarli silenziosamente. - Le email firmate (S/MIME) o cifrate (PGP) hanno vincoli di integrità aggiuntivi. Modificare i loro metadati senza precauzioni può invalidare la firma crittografica.
- Le strutture multipart/alternative con limiti MIME complessi reagiscono a volte in modo imprevedibile alle operazioni di modifica.
- Nessun meccanismo di rollback. Se qualcosa va storto nel mezzo dell'elaborazione, come si torna allo stato iniziale?
Uno script che funziona su 10 email di test non funzionerà su una casella di produzione da 50.000 messaggi. L'anno scorso, un cliente con un archivio PST da 40 GB ha provato a correggere la situazione con uno script Python trovato su Stack Overflow. Risultato: 3.000 email duplicate, 200 messaggi con allegati inaccessibili e due settimane di pulizia manuale.
Cosa fa Redate.io in questo caso specifico
Redate.io analizza i metadati di ogni messaggio nella casella di destinazione, identifica le email con date errate (incluse quelle provenienti da un import PST) e applica una correzione tramite il suo motore proprietario. Il pipeline di analisi multi-stadio confronta la catena di intestazioni di ogni messaggio, estrae la data originale con validazione di conformità RFC e procede a una correzione mirata dei metadati senza alterare il contenuto del messaggio.
Ogni email corretta è verificata individualmente. Gli originali sono conservati in una cartella di backup visibile per 30 giorni prima di qualsiasi modifica definitiva. La correzione funziona sulle tre piattaforme principali: Microsoft 365 (via Azure AD), Google Workspace (via delegazione di dominio) e IMAP diretto per i provider classici.
La scansione iniziale è gratuita. Consente di vedere esattamente quante email sono interessate e qual è la distribuzione delle date errate, prima di decidere qualsiasi cosa.
Si vedano anche:
- Correggere le date email dopo migrazione Microsoft 365
- Outlook: data ricevuta IMAP vs data di invio
- Si possono correggere le date email dopo la migrazione?
Il Suo import PST ha sovrascritto tutte le date delle email? Scansioni la Sua casella gratuitamente su Redate.io per misurare l'entità del problema prima di agire.