PST-import i Outlook: hvorfor alle datoer blir feil

8 min

Symptomet: alle e-postene dine er datert til i dag

Du har nettopp fullført en PST-import i Outlook. Fremdriftslinjen nådde 100 %, alt gikk smertefritt. Så åpner du innboksen... og hver eneste importerte e-post viser dagens dato. En melding fra 2019, en annen fra 2021, et arkiv på fem år: alle bærer samme dato. Dagen for importen.

Dette er ikke en visningsfeil. Det er ikke et tidssone-problem. Det er en fullt dokumentert oppførsel, helt i tråd med hvordan IMAP håndterer datometadata. Men det er fortsatt en katastrofe for alle som trenger å finne gamle e-poster etter dato.

Lokal PST og IMAP: to vidt forskjellige verdener

Før vi forklarer hvorfor datoene brekker, må vi forstå hva en PST-fil egentlig er sett fra et datostyringsperspektiv.

En PST-fil (Personal Storage Table) er et proprietært Microsoft-format. Den lagrer e-poster med fullstendige metadata: sendedato, mottaksdato, vedlegg, kategorier og lese-indikatorer. Disse metadataene styres direkte av Outlook, utenfor enhver e-postprotokoll. Når du åpner en PST i Outlook uten tilkobling til en server, hentes datoene som vises direkte fra de interne feltene i PST-filen. Så langt, så bra.

Problemet oppstår når du prøver å overføre innholdet til en postkasse som er lagret på en IMAP-server - enten det er Microsoft 365, Google Workspace eller en vanlig e-postleverandør. Da forlater du PST-verdenen og trer inn i IMAP-verdenen, og reglene endres radikalt.

IMAP APPEND og INTERNALDATE: kjernen i problemet

I IMAP har hver melding som er lagret på serveren to typer datodata:

  • Date:-headeren (RFC 2822), som er en del av selve meldingsinnholdet. Dette er datoen avsenderen skrev inn i meldingen.
  • INTERNALDATE, en metadata-verdi som styres av IMAP-serveren. Den representerer tidspunktet meldingen ble lagt til på serveren. Det er denne verdien Outlook bruker til å sortere meldinger i visningen "Mottatt dato".

(Hvis du noen gang har prøvd å lese rå e-postheadere, vet du at det ikke akkurat er strandlesning. Men det er her alt skjer.)

Når en e-post ankommer serveren på vanlig måte, setter e-postserveren automatisk INTERNALDATE til det eksakte mottakstidspunktet. Resultatet: datoen som vises i Outlook stemmer faktisk med når du mottok meldingen.

Når Outlook importerer en PST-fil til en IMAP-postkasse, brukes kommandoen IMAP APPEND til å sende hver melding til serveren. IMAP-standarden tillater at du sender en eksplisitt INTERNALDATE ved en APPEND-operasjon. Men det gjør ikke Outlook. Meldingene sendes uten at INTERNALDATE spesifiseres. IMAP-serveren, uten noen instruksjon, faller tilbake til sin standardregel: INTERNALDATE settes til gjeldende tidspunkt, altså importøyeblikket.

Resultatet: 8 000 importerte e-poster, 8 000 e-poster med dagens dato.

Hvorfor Outlook oppfører seg slik

Dette er ikke en forglemmelse fra Microsoft. Det er et implementasjonsvalg som sannsynligvis virket fornuftig den gangen: i det opprinnelige bruksscenarioet for PST-import arkiverer brukeren meldinger lokalt og "importerer" dem til sin aktive postkasse. Den relevante datoen for sortering burde vært den opprinnelige mottaksdatoen... men Microsoft valgte altså å ikke videreføre INTERNALDATE under importoperasjonen.

For å være presis: denne oppførselen gjelder PST-import via Outlooks innebygde veiviser (Fil > Åpne og eksporter > Importer/Eksporter). Andre importmetoder, som visse tredjepartsverktøy eller migreringer via Exchange-administrasjonssenteret, kan oppføre seg annerledes avhengig av deres implementering av IMAP APPEND.

Oppførselen er kjent og dokumentert på Microsofts forum i mange år. Den endret seg ikke med Outlook 2016, ikke med Outlook 2019, og ikke med gjeldende Microsoft 365-versjoner. En bruker som importerer en PST i dag vil oppleve nøyaktig samme problem som i 2015.

Hvordan dette skiller seg fra en vanlig IMAP-migrering

Her blir det interessant, for PST-import gir et lignende resultat som en vanlig IMAP-migrering med ødelagte datoer, men via en annen mekanisme.

Ved en typisk IMAP-migrering, for eksempel med BitTitan MigrationWiz eller imapsync, flyttes e-poster fra en IMAP-kildeserver til en IMAP-målserver. Migreringverktøyet henter meldingene og injiserer dem på nytt via IMAP APPEND. Noen verktøy bevarer INTERNALDATE korrekt, andre gjør det ikke. Men uansett har meldingene allerede fått en Received:-header med migreringsdatoen lagt til underveis, noe som kan forstyrre visningen i Outlook uavhengig av INTERNALDATE.

Med PST-import er mekanismen enklere: ingen Received:-header fra migreringen legges til (PST-filer passerer ikke gjennom en mellomliggende e-postserver), men INTERNALDATE settes rett og slett aldri til korrekt verdi. Det synlige resultatet er identisk, den underliggende årsaken er litt forskjellig.

Dette skillet har en direkte konsekvens for rettingen: fremgangsmåten er ikke helt den samme enten man behandler en IMAP-migrering eller en PST-import. Se også hvorfor INTERNALDATE forårsaker ødelagte datoer for en detaljert forklaring av begge tilfellene.

Hvorfor Outlooks visningsalternativer ikke hjelper

Den vanlige reaksjonen når man oppdager problemet er å grave i Outlook-innstillingene. Og det finnes faktisk et innstillingsvalg som ser lovende ut: muligheten til å sortere e-poster etter "Dato" i stedet for "Mottatt dato".

Sortering etter sendedato er ikke en løsning. Det er et plaster.

Her er grunnen: selv om du endrer sorteringen til å vise kolonnen "Dato" (som tilsvarer Date:-headeren i meldingen, altså den opprinnelige datoen), vedvarer flere problemer:

  • Outlook-søket indekserer på INTERNALDATE. Et søk etter "e-poster fra januar 2020" vil ikke returnere dine importerte e-poster fra januar 2020, fordi INTERNALDATE deres sier at de stammer fra importdagen.
  • Mappene "I dag", "Denne uken", "Denne måneden" i Outlook-grensesnittet er basert på INTERNALDATE, ikke på Date:-headeren.
  • I nettgrensesnitt (Outlook Web App, Gmail) og på mobilklienter er den viste datoen og sorteringsoppførselen nesten alltid avhengig av server-INTERNALDATE.
  • Automatiske regler og filtre som er basert på mottaksdato vil ikke fungere korrekt.

Altså: å endre visningen løser det for én bestemt bruker, på én bestemt klient, i én bestemt konfigurasjon. Det retter ikke problemet ved kilden.

OST-resynkronisering hjelper heller ikke

Et annet klassisk forsøk: tøm OST-cachen og tving en fullstendig resynkronisering fra serveren. Tanken er at problemet kanskje ligger i Outlooks lokale cache, ikke på serveren.

Feil spor. OST-filen er en lokal cache som gjenspeiler tilstanden til IMAP-serveren. Hvis INTERNALDATE er feil på serveren, vil den være feil i OST-filen etter resynkronisering. Å slette OST-filen endrer ingenting på dataene som er lagret på Exchange Online- eller Google Workspace-serveren. Det er serveren som er autoriteten.

Den eneste måten å rette datoene på er å rette metadataene direkte på serversiden, melding for melding. Og det er nettopp her det blir komplisert å gjøre manuelt.

Skalaproblem: 1 e-post er trivielt. 15 000 er en helt annen sak

Teknisk sett, om man forstår problemet, kan man tenke seg å skrive et skript som går gjennom postkassen, leser Date:-headeren til hver melding, og retter INTERNALDATE tilsvarende. Å forstå problemet er én ting. Å rette det på 15 000 e-poster uten å miste én eneste, er noe helt annet.

Noen realiteter fra virkeligheten:

  • Microsoft Graph API og Gmail har hastighetsbegrensninger (rate limits). Et naivt skript vil utløse 429 Too Many Requests-feil, avbryte kjøringen midt i en retteprosess, og etterlate deg med en delvis rettet postkasse der du ikke vet hvilke e-poster som ble behandlet og hvilke som ikke ble det.
  • Noen e-poster i en PST kan ha manglende eller misformede Date:-headere. Et skript uten håndtering av disse grensetilfellene kan korruptere disse meldingene eller hoppe over dem lydløst.
  • Signerte e-poster (S/MIME) eller krypterte meldinger (PGP) har ekstra integritetsbegrensninger. Å endre metadataene uten forsiktighet kan ugyldiggjøre den kryptografiske signaturen.
  • Multipart/alternative-strukturer med komplekse MIME-grenser reagerer noen ganger uforutsigbart på endringsoperasjoner.
  • Ingen rollback-mekanisme. Hvis noe går galt midt i behandlingen, hvordan går man tilbake til utgangspunktet?

Et skript som fungerer på 10 teste-poster vil ikke fungere på en produksjonspostkasse med 50 000 meldinger. For et år siden prøvde en kunde med et PST-arkiv på 40 GB å rette dette med et Python-skript hentet fra Stack Overflow. Resultatet: 3 000 e-poster i duplikat, 200 meldinger med utilgjengelige vedlegg, og to uker med manuelt opprydningsarbeid.

Hva Redate.io gjør i dette konkrete tilfellet

Redate.io analyserer metadataene til hver melding i målpostkassen, identifiserer e-poster med feil datoer (inkludert de som stammer fra en PST-import), og anvender en rettelse via den proprietære korreksjonsmotoren. Den flertrinns analysepipelinen sammenligner header-kjeden i hver melding, ekstraherer den opprinnelige datoen med RFC-samsvar-validering, og gjennomfører en målrettet metadatakorreksjonen uten å endre meldingsinnholdet.

Hver rettet e-post verifiseres individuelt. Originalene bevares i en synlig sikkerhetskopimappe i 30 dager før eventuelle endelige endringer. Rettingen fungerer på de tre hovedplattformene: Microsoft 365 (via Azure AD), Google Workspace (via domenedelegering) og direkte IMAP for vanlige e-postleverandører.

Det innledende skannet er gratis. Det viser nøyaktig hvor mange e-poster som er berørt og hvordan de feil datoene fordeler seg, før du bestemmer deg for noe som helst.

Se også:

PST-importen din har overskrevet alle e-postdatoene? Skann postkassen din gratis på Redate.io for å kartlegge omfanget av problemet før du handler.

Relaterte artikler