Loftet fra --syncinternaldates (og hvor det stopper)
Du kjorte imapsync-kommandoen. Du inkluderte --syncinternaldates fordi du leste dokumentasjonen og er grundig slik. Migreringen fullforeres, loggen sier alt overfort, null feil. Så åpner du postkassen i Outlook og hver e-post viser gårsadgens dato.
Dette er en av de vanligste frustrasjonene med imapsync, og det har forvirret systemadministratorer siden minst 2017. Flagget --syncinternaldates skal bevare IMAP INTERNALDATE under migrering. Og det gjor det: hver kopi får den interne datoen kildeserveren har lagret. Det er nettopp der fellen ligger.
imapsync er et åpent kildekode Perl-verktoy skrevet av Gilles Lamiral, og det er genuint godt på det det gjor. Det håndterer IMAP-til-IMAP postkasseoverforsler med en pålitelighet som de fleste kommersielle verktoy misunner. Men imapsync kan bare kopiere datoene den finner, og det er der det blir komplisert.
Hvordan IMAP-datoer faktisk fungerer
Det er tre forskjellige "datoer" involvert i hver e-post, og de fleste (inkludert noen IT-administratorer) blander dem sammen:
- Date:-headeren (RFC 2822) - datoen som avsenderens e-postklient stemplet da meldingen ble skrevet. Den lever inne i meldingskroppen og endres aldri av e-postservere.
- Received:-headere - hver e-postserver som håndterer meldingen legger til en med sitt eget tidsstempel. De danner en kjede fra avsender til mottaker. Den overste (nyeste) Received-headeren er det noen e-postklienter bruker for visning.
- INTERNALDATE - et IMAP-serversideig tidsstempel som styrer hvordan meldinger sorteres i postkassen. Den settes når meldingen forst lagres via IMAP APPEND.
Når imapsync migrerer en melding, leser den meldingen fra kildeserveren (inkludert dens INTERNALDATE) og skriver den til destinasjonsserveren med IMAP APPEND. Flagget --syncinternaldates forteller imapsync å sende kildens INTERNALDATE til destinasjonsserveren under APPEND.
Her er den gode nyheten: Microsoft 365, Outlook.com og Gmail beholder datoen de får. Når datoer likevel blir feil, ligger problemet et annet sted.
Hvorfor datoene likevel kan bli feil
IMAP-spesifikasjonen (RFC 3501) sier at hvis en dato-tid oppgis med APPEND-kommandoen, BOR serveren bruke den. "BOR" på RFC-språk betyr "gjor det med mindre du har en god grunn til å la vaere". Microsoft 365, Outlook.com og Gmail gjor det: en kopi som bærer sin opprinnelige dato, beholder den.
Det imapsync overforer, er derimot datoen kildeserveren har lagret for hver melding, ikke datoen e-posten ble sendt. På en sunn postkasse er de to like. På en postkasse som allerede er migrert en gang eller gjenopprettet fra en sikkerhetskopi, kan kilden ha datoen fra den tidligere operasjonen, og imapsync kopierer den uendret.
Gmail er et saerskilt tilfelle bare når kopien går gjennom Gmails egen importeringsAPI i stedet for IMAP: den APIen legger til en Received:-linje datert kopieringsdagen, og Outlook kan vise den datoen. imapsync bruker IMAP, så det påvirkes ikke.
Dovecot og Cyrus, de to vanligste åpne kildekode IMAP-serverne, beholder også datoen fra APPEND. Uansett destinasjon er spørsmålet derfor det samme: hvilken dato hadde kilden?
Utover kildedatoene: kommandolinjevalg som ofte får skylden
Kopiere fra en kilde der datoene allerede var feil
--syncinternaldates er aktivert som standard: imapsync gir hver kopi den interne datoen kildeserveren har lagret (ifolge dokumentasjonen: "Sets the internal dates on host2 as the same as host1"). Hvis kildepostkassen selv er resultatet av en tidligere migrering eller en gjenoppretting, kan de interne datoene allerede vaere fra den operasjonen, og imapsync kopierer trofast den feile datoen. Det er den vanligste årsaken, og den enkleste å overse, fordi loggen viser to identiske datoer.
Bruke --syncinternaldates med --addheader
Noen veiledninger anbefaler å bruke --addheader for å injisere en tilpasset header under migrering. Å legge til en header endrer meldingen (en ekstra linje i toppen), men ikke datoen imapsync overforer, så det forklarer ikke feil datoer. Kopien er bare ikke lenger identisk med originalen, noe som betyr noe hvis du sammenligner de to.
Forveksle --minage og --maxage med datobevaring
Flaggene --minage og --maxage filtrerer hvilke meldinger som migreres basert på alder. De påvirker ikke hvordan datoer håndteres ved destinasjonen. Jeg har sett administratorer bruke timer på å justere disse flaggene i troen på at det ville lose datoproblemet. Det gjor det ikke.
Å skylde på TLS for forskjovne datoer
Over TLS (--ssl1, --ssl2) legger tilkoblingsoppsettet til latens, og ved en stor migrering (50 000+ meldinger) summerer dette seg opp til flere timer. Det rorer ikke ved datoene: hver kopi bærer datoen imapsync overforer, uansett når den faktisk ankommer.
Lese imapsync-logger: hva utdataen egentlig forteller deg
Dette er en av de mest frustrerende sidene ved å feilsoke datoproblemer: en ren loggfil, to identiske datoer, og likevel feil dato i Outlook, fordi feilen var der allerede for imapsync kjorte.
En typisk vellykket overforingslinje ser slik ut:
msg source stratemind/42 {5765} D:2019-01-15 13:22:07 -> dest stratemind/42 {5765} D:2019-01-15 13:22:07
Begge datoer stemmer. Det betyr at imapsync sendte riktig INTERNALDATE til destinasjonen. Og Microsoft 365, Outlook.com og Gmail beholder alle datoen de får. Men to identiske datoer beviser bare at kopien er trofast mot KILDEN: hvis kildedatoen allerede var feil, viser begge kolonnene den samme feile datoen.
Vil du verifisere hva som faktisk skjedde? Koble til destinasjonen med en IMAP-klient etter migreringen og sjekk INTERNALDATE direkte:
a1 SELECT INBOX a2 FETCH 42 (INTERNALDATE)
Hvis den returnerte datoen ikke er datoen e-posten ble sendt, se på samme melding hos kilden: du vil finne den samme feile datoen der. Loggen loy ikke, den kopierte det den fikk.
Storskala imapsync-migreringer: der datoproblemer multipliseres
En enkelt postkassemigrering med imapsync er irriterende når datoer går i stykker. Men MSP-er og IT-avdelinger som kjorer imapsync på tvers av hundrevis av postkasser står overfor en helt annen skala av problemet.
Ta et typisk bedriftsmigreringsscenario. Du flytter 200 postkasser fra en Zimbra-server til Microsoft 365. Du skriver et wrapper-skript som looper gjennom en CSV med brukere og kaller imapsync for hver. Migreringen kjorer i helgen. Mandag morgen har du 200 postkasser med oadelagte datoer og rundt 1,2 millioner e-poster totalt som viser migreringstidsstempelet.
Kan du kjore imapsync på nytt for å fikse det? Men --dry simulerer bare overforingen: den viser datoene imapsync ville overfort, ikke om de er datoene e-postene faktisk ble sendt. Ingenting advarer deg om at kildedatoene allerede er feil. Du ville trengt --delete2 for å slette destinasjonsmeldinger og overforere dem på nytt, noe som er risikabelt på en produksjonspostkasse. Og hvis kildedatoene var problemet, kopierer en ny kjoring bare de samme feile datoene igjen.
Gjor-det-selv-losninger og deres grenser
Hvis du soker i fora og e-postlister (imapsync-devel-listen på SourceForge er fortsatt aktiv i begynnelsen av 2026), finner du forslag som spenner fra kreative til farlige.
Noen foreslår å bruke en Perl-enlinjekode for å endre INTERNALDATE på destinasjonsserveren direkte. Andre anbefaler å eksportere alle meldinger til mbox-format, manipulere datoene og reimportere. Noen har skrevet Python-skript som bruker imaplib for å hente, endre og sette inn meldinger på nytt.
Alle disse tilnaermingene deler de samme grunnleggende problemene. Hvordan håndterer du S/MIME-signerte meldinger uten å bryte signaturen? Hva med multipart MIME-strukturer med nestede grenser? Ikke-ASCII-headere kodet med RFC 2047? PGP-krypterte meldinger der du ikke engang kan inspisere innholdet? Et skript som håndterer 50 testmeldinger i et utviklingsmiljo vil kveles på kanttilfellene i en produksjonspostkasse med 30 000 meldinger.
Og det storste sporsmålet som ingen stiller for det er for sent: hvordan verifiserer du at hver eneste modifiserte melding fortsatt er intakt?
Slik retter Redate.io imapsync-datoproblemer
Den opprinnelige Date:-headeren er alltid intakt etter en imapsync-migrering. imapsync overforer rameldingen trofast; den feilaktige datoen ligger i metadataene kopien fikk, ikke i selve meldingen. Den opprinnelige headeren er det som gjor korreksjon mulig.
Redate.io kobler seg direkte til postkassen (Google Workspace, Microsoft 365 eller enhver IMAP-server), skanner etter e-poster med datoavvik og anvender målrettet metadatakorrigering gjennom en proprietaer headerkjedeanalyse- og datorekonstruksjonspipeline. Den trenger ikke å vite hvilket verktoy som utforte migreringen: den finner e-postene der den viste datoen ikke stemmer med den opprinnelige datoen.
Hver rettet e-post verifiseres individuelt: meldingsintegritet, vedleggsbevaring, mappeplassering, trading, etiketter. Originaler oppbevares i en synlig sikkerhetskopieringsmappe Redate.io - Originals til du sletter dem selv. Hvis noe ser feil ut, er tilbakerulling et klikk unna.
Den gratis skanningen kobler seg til postkassen, identifiserer hver e-post med et datoavvik og rapporterer det eksakte antallet og kostnaden. Intet kredittkort påvkrevd, ingen programvare å installere. For din plattforms detaljer:
- Rett imapsync-datoer i Outlook
- Rett imapsync-datoer i Gmail
- Rett imapsync-datoer i Microsoft 365
- Rett imapsync-datoer i Google Workspace
Redate.io fungerer også for migreringer som skjedde for måneder eller år siden. Date:-headeren utloper ikke, og muligheten til å korrigere heller ikke.
Migrert med imapsync og fast med feil datoer? Kjor en gratis skanning for å se noyaktig hvor mange e-poster som er beroart.