Outlook: data ricevuta IMAP vs data di invio

8 min

Il sintomo che tutti conoscono

Ha appena terminato una migrazione IMAP verso Microsoft 365 o Google Workspace. Lunedi mattina arrivano i ticket: "Tutte le mie email hanno la stessa data", "La mia cronologia è andata", "Non ritrovo più nulla nella casella". Apre Outlook, e in effetti, migliaia di email mostrano la data del weekend scorso. Non la data in cui sono state inviate. La data in cui è avvenuta la migrazione.

Non è un bug di Outlook. È una conseguenza diretta del funzionamento del protocollo IMAP e degli strumenti di migrazione. Ma per capire perché, bisogna aprire il cofano.

Tre date in una sola email

Un'email è più complessa di quanto sembri. Intestazione, corpo del messaggio, allegati... e diversi timestamp distinti che convivono. (Tra l'altro, se ha mai provato a leggere le intestazioni grezze di un'email, sa bene che non è esattamente una lettura da spiaggia.)

L'intestazione Date: (RFC 2822)

È la data che il mittente ha inserito nel messaggio al momento dell'invio. Definita dall'RFC 2822, si presenta così:

Date: Tue, 14 Mar 2023 09:42:17 +0100

Questa intestazione è incisa nella struttura del messaggio. Non cambia mai, a meno che qualcuno non modifichi il contenuto grezzo del messaggio. È la "data di invio" in senso stretto.

L'intestazione Received: (aggiunta a ogni salto di rete)

Ogni server che tocca un'email in transito aggiunge un'intestazione Received: in cima al messaggio, con la propria data. Un'email che passa attraverso tre server accumula quindi tre intestazioni Received:. La più recente è sempre in cima. Il risultato è qualcosa di simile a:

Received: from mail.example.com ([93.184.216.34])
        by mx.google.com with ESMTPS
        id x1234abcd.2024.06.15.08.31.02;
        Sat, 15 Jun 2024 08:31:02 +0000 (UTC)

Risultato: quando uno strumento di migrazione come BitTitan MigrationWiz, CloudM, imapsync o GSMMO sposta un'email da un server sorgente a un server di destinazione, si comporta anch'esso come un "salto di rete". Inietta una nuova intestazione Received: in cima alla catena, con la data e l'ora della migrazione.

L'INTERNALDATE IMAP

È la terza data, ed è quella che crea il problema. L'INTERNALDATE è un metadato conservato lato server IMAP, indipendente dal contenuto del messaggio. Rappresenta la data in cui l'email è stata consegnata (o inserita) nella casella di posta. Quando uno strumento di migrazione inserisce un'email tramite il comando IMAP APPEND, è lui a scegliere quale valore assegnare all'INTERNALDATE. E in molti casi, gli strumenti usano la data del momento della migrazione. Non la data originale.

È qui che tutto si inceppa.

Perché Outlook mostra la data di migrazione

Outlook usa l'INTERNALDATE per visualizzare la colonna "Ricevuto". È il suo comportamento predefinito, coerente con la specifica IMAP: l'INTERNALDATE dovrebbe rappresentare la data di ricezione nella casella. In un flusso normale (una vera email che arriva), l'INTERNALDATE è vicina alla data nell'intestazione Date:. Le due sono coerenti.

Dopo una migrazione mal riuscita, l'INTERNALDATE di tutte le email importate punta alla notte del 14 giugno 2024 (o qualunque sia la data della migrazione). Outlook legge questo valore, lo mostra nella colonna "Ricevuto", e il risultato è catastrofico: 45.000 email sembrano essere state ricevute la stessa sera.

Per essere precisi, la prima intestazione Received: (la più recente nella catena) influenza anche la visualizzazione in alcune configurazioni. Ma l'INTERNALDATE rimane il fattore determinante principale per la colonna "Ricevuto" di Outlook in modalità IMAP sincronizzato.

Il workaround "Aggiungi la colonna Inviato" in Outlook

La prima cosa che fanno la maggior parte degli amministratori IT quando scoprono il problema è cercare una soluzione lato client. E ne esiste una, in effetti.

In Outlook è possibile modificare la visualizzazione delle colonne di una cartella per sostituire (o affiancare) la colonna "Ricevuto" con la colonna "Data" o "Inviato". La colonna "Data" legge direttamente l'intestazione Date: del messaggio, non l'INTERNALDATE. Poiché l'intestazione Date: non è stata toccata dalla migrazione, le date originali ricompaiono.

Per farlo in Outlook (desktop, versione Microsoft 365): clic destro sull'intestazione di colonna nell'elenco dei messaggi, "Impostazioni visualizzazione", poi modificare le colonne per rimuovere "Ricevuto" e aggiungere "Data". È fattibile tramite GPO per una distribuzione massiva.

Bene. Sulla carta, risolve il problema visivo. Nella realtà, è un cerotto su un'arteria.

I limiti concreti di questo workaround

I client mobile e web

Outlook su iOS, Android e Outlook Web App (OWA) non offrono le stesse opzioni di personalizzazione. La modifica della visualizzazione che ha distribuito sui computer Windows non si propaga. Gli utenti che consultano le email dal telefono continuano a vedere la data di migrazione. E in un'azienda di medie dimensioni, è probabilmente la metà degli utenti.

La ricerca

La ricerca di Outlook usa l'indice Windows Search (o l'indice Exchange/Microsoft 365 lato server). Questo indice è costruito a partire dall'INTERNALDATE, non dall'intestazione Date:. Se un utente cerca "email di gennaio 2022", la ricerca restituisce le email la cui INTERNALDATE è in gennaio 2022. Non quelle la cui intestazione Date: è in gennaio 2022. Il risultato: le email vecchie non compaiono più nei filtri per data. Cambiare la colonna di visualizzazione non cambia nulla a questo.

Le regole di posta

Le regole di Outlook ("se l'email è stata ricevuta prima del...", "se l'email è stata ricevuta dopo il...") usano anch'esse l'INTERNALDATE. Una regola di ordinamento o archiviazione basata su intervalli di date non funzionerà correttamente dopo la migrazione se l'INTERNALDATE non è stata corretta.

Conformità e eDiscovery

È forse il punto più serio. Gli strumenti di compliance, archiviazione legale ed eDiscovery (Microsoft Purview, ad esempio) usano l'INTERNALDATE come riferimento di data per le richieste legali. Se l'azienda è soggetta a obblighi di conservazione o deve rispondere a richieste di discovery ai sensi del RGPD o di normative di settore, delle INTERNALDATE corrotte possono creare veri problemi giuridici. Un audit che richiede "tutte le email tra questa e quella data" non restituirà i risultati corretti.

Gli strumenti di terze parti

CRM, strumenti di ticketing, archiviatori... tutto ciò che si connette al server di posta tramite IMAP o le API di Microsoft 365/Google Workspace legge l'INTERNALDATE. Cambiare la visualizzazione in Outlook non corregge nulla per questi sistemi.

L'unica vera soluzione: correggere a livello di server

Ordinare per data di invio in Outlook non è una soluzione. È un cerotto. La vera correzione deve avvenire a livello dei metadati del server, non della visualizzazione client.

Concretamente, significa correggere l'INTERNALDATE di ogni email affinché corrisponda alla data originale dell'intestazione Date:. L'intestazione Date: originale è sempre presente nel messaggio (non è stata cancellata dalla migrazione), il che rende possibile la correzione. È lì che si trova l'informazione di data reale.

Su Google Workspace, l'API Gmail espone un parametro internalDate che consente di agire direttamente su questo metadato. Su Microsoft 365, il meccanismo è diverso ma il risultato atteso è lo stesso. Su un server IMAP standard, la norma prevede che la data possa essere specificata al momento dell'inserimento di un messaggio.

In pratica, eseguire questa operazione su decine di migliaia di email in produzione, senza perdita di dati, senza duplicati, senza rompere i thread di discussione o le etichette, gestendo i casi limite (messaggi firmati S/MIME, strutture MIME complesse, codifiche non-ASCII secondo l'RFC 2047, allegati di grandi dimensioni)... è un'altra storia. Uno script che funziona su 50 email di test non reggerà su una casella da 40.000 messaggi. La gestione degli errori 429 (quota API superata), dei timeout di rete alle 2 di notte, dei messaggi la cui struttura MIME è già parzialmente corrotta dopo la migrazione... tutto questo richiede un'ingegneria seria.

È precisamente questo che fa Redate.io. Il motore di correzione proprietario analizza la catena di intestazioni di ogni email, identifica la data originale attendibile, e applica una correzione mirata dei metadati senza toccare il contenuto del messaggio. Ogni email corretta viene verificata individualmente. Gli originali sono conservati in una cartella di backup per 30 giorni, il che rende possibile un rollback in qualsiasi momento. Qualcosa che uno script fatto in casa non offre mai.

Identificare lo strumento di migrazione responsabile

Il problema si manifesta allo stesso modo indipendentemente dall'origine della migrazione, ma i dettagli variano in base allo strumento utilizzato. BitTitan MigrationWiz, CloudM, imapsync e GSMMO hanno ciascuno la propria firma nelle intestazioni Received: che iniettano. Il pipeline di analisi di Redate.io mantiene una base di corrispondenza su centinaia di firme di strumenti di migrazione noti, per distinguere l'intestazione di migrazione dal resto della catena di transito legittima.

Se non sa quale strumento è stato usato per la migrazione (capita, soprattutto quando si prende in carico un parco dopo un altro MSP), la scansione gratuita di Redate.io identifica le caselle interessate e fornisce una stima del volume da correggere prima di qualsiasi impegno.

Per contesti specifici, sono disponibili guide dettagliate: correggere le date imapsync in Outlook, correggere le date BitTitan in Outlook, oppure correggere le date CloudM in Outlook.

Cosa fare adesso

Se sta leggendo questo articolo dopo una migrazione, la buona notizia è che l'intestazione Date: originale è intatta in ognuna delle Sue email. Le informazioni di data reale sono lì, presenti in ogni messaggio. Il problema è nei metadati, non nel contenuto. E i metadati si possono correggere.

Può anche consultare l'articolo IMAP INTERNALDATE: perché le date si rompono per approfondire la meccanica del problema, o la guida completa sulle date sbagliate in Outlook dopo la migrazione per avere una visione d'insieme dei casi possibili.

Pronto a correggere le date delle Sue caselle di posta? Avvii una scansione gratuita su Redate.io per identificare le email interessate e stimare il volume prima di qualsiasi correzione.

Articoli correlati