imapsync: datoer ikke bevaret, komplet rettelsesguide

6 min

imapsync er referencevaerktojet til e-mailmigrering for Linux-systemadministratorer, hostingudbydere og alle der foretraekker open source-loesninger. Skabt af Gilles Lamiral, imapsync er aktivt vedligeholdt siden 2001 og er blevet brugt til millioner af postkassemigreringer verden over. Det understotter stort set alle IMAP-servere: Dovecot, Courier, Cyrus, Zimbra, Exchange, Gmail og snesevis af andre.

imapsync har ry for at vaere grundigt og konfigurerbart. Administratorer saetter pris paa den granulaere kontrol over hvilke mapper der migreres, duplikathhaandtering og mappenavnsmapping mellem forskellige IMAP-servere. Men trods al den kontrol bestaar et problem: e-maildatoer bevares ofte ikke efter en imapsync-migrering. Brugerne aabner deres postkasse efter migrering og opdager at hver e-mail viser migreringsdatoen. Det er irriterende, saerligt fordi imapsync burde haandtere datoer korrekt.

Hvordan imapsync haandterer INTERNALDATE

Forsoget paa at bevare INTERNALDATE

imapsync forsoeger faktisk at bevare INTERNALDATE for hver e-mail under migreringen. INTERNALDATE er det tidsstempel IMAP-serveren gemmer som metadata for hver besked, adskilt fra e-mailens headers. Naar imapsync kopierer en besked fra kilde til destination, laeser den INTERNALDATE fra kildeserveren og sender den til destinationsserveren i IMAP APPEND-kommandoen.

I teorien burde dette bevare den originale dato. I praksis afhaenger resultatet af destinationsserverens adfaerd og hvordan e-mailklienter fortolker de forskellige datorelaterede felter i beskeden.

"Received"-header-problemet

Selv naar imapsync bevaer INTERNALDATE med succes, tilfojer destinationens mailserver en ny "Received"-header til hver besked under APPEND-operationen. Denne "Received"-header indeholder det aktuelle tidsstempel - migreringsdatoen. E-mailklienter som Outlook, Apple Mail og Thunderbird bestemmer den viste "modtagelsesdato" ved at laese den oeverste "Received"-header, ikke INTERNALDATE. Saa trods imapsyncs indsats for at bevare INTERNALDATE er den synlige dato i de fleste klienter stadig forkert.

Det er denne fundamentale afbrydelse der skaber forvirringen. imapsync bevarer en datovaerdi (INTERNALDATE), men e-mailklienter viser en anden ("Received"-headerens tidsstempel). For et teknisk dyk ned i denne mekanisme, se hvorfor e-mails viser forkert dato efter IMAP-migrering.

Misforstaaelsen i imapsyncs FAQ

imapsyncs dokumentation og FAQ adresserer datoproblemet men praesenterer det som en iboende begraensning. FAQ'en antyder at "datoer maaske ikke bevares" ved IMAP-migrering og implicerer at det bare er saadan IMAP-protokollen fungerer. Selvom det er sandt at IMAP-protokollen kraever at servere tilfojer "Received"-headers ved beskedindsaettelse, skaber FAQ'en det indtryk at problemet er permanent og ureparerbart.

Det er ikke korrekt. "Received"-headers tilfojet under migrering kan identificeres og fjernes bagefter, hvilket gendanner den originale datovisning i e-mailklienter. Den originale "Date"-header (der registrerer hvornaar e-mailen oprindeligt blev sendt) bevares altid af imapsync og fungerer som reference for den korrekte dato.

Identificer imapsync-migrerings-headeren

Saadan ser headeren ud

imapsync selv tilfojer ikke en "Received"-header - det er destinationens IMAP-server der goer det. Headeren tilfojet under en imapsync-migrering ligner typisk en standard IMAP-indsaettelsesheader fra destinationsserveren. Ved migrering til en Dovecot-server kan headeren f.eks. se saadan ud:

Received: from localhost by mail.example.com;
  Wed, 15 Jan 2025 09:14:22 +0100

Noeglen er at denne "Received"-header er den oeverste i kaeden, dens tidsstempel matcher datoen for imapsync-migreringens koersel, og den refererer typisk "localhost" eller destinationsserverens hostname snarere end en ekstern mailserver.

Sammenlign datoer

For at bekraefte problemet sammenlignes tidsstemplet paa den oeverste "Received"-header med e-mailens "Date"-header. Hvis "Received"-headeren siger januar 2025 men "Date"-headeren siger marts 2020, er migrerings-"Received"-headeren aarsagen til den forkerte datovisning. Denne sammenligning kan goeres ved at se beskedens raa kilde i enhver e-mailklient.

Hvorfor gaengse imapsync-indstillinger ikke loeser problemet

Flaget --syncinternaldates

imapsync tilbyder flaget --syncinternaldates, der saetter INTERNALDATE paa destinationsserveren til at matche e-mailens "Date"-header. Det er nyttigt naar kildeserverens INTERNALDATE allerede er forkert, men det forhindrer ikke destinationsserveren i at tilfoeje en "Received"-header. Den synlige dato i Outlook og andre klienter forbliver migreringsdatoen uanset INTERNALDATE-vaerdien.

Indstillingen --addheader

imapsync kan tilfoeje tilpassede headers til beskeder under migrering, men kan ikke forhindre destinationsserveren i at tilfoeje sin egen "Received"-header. IMAP-protokollen kraever at servere registrerer indsaettelsestidsstemplet, og ingen imapsync-indstilling kan tilsidesaette denne serveradfaerd.

Post-migreringsscripts

Nogle administratorer skriver tilpassede post-migreringsscripts for at fjerne uoenskede "Received"-headers. Det lyder rimeligt, saerligt for den type person der valgte imapsync i foerste omgang (en der er komfortabel med kommandolinjen). Men virkeligheden er langt mere kompleks end soeg-og-erstat paa headertekst. Hvad sker der naar scriptet rammer en S/MIME-signeret e-mail? Eller en multipart-besked med indlejrede MIME-graenser og base64-kodede vedhaeftninger? Eller en header med ikke-ASCII-tegn kodet efter RFC 2047? En enkelt forkert byte i en MIME-graense kan stille og roligt korrumpere en hel besked, oedelaegge vedhaeftninger eller goere e-mailen ulaselig. Og hvordan bekraefter du at 10.000 rettede e-mails alle er intakte? For tusindvis af e-mails paa tvaers af flere postkasser repraesenterer DIY-scripting en betydelig risiko.

Ret imapsync-datoer med Redate.io

Hvordan Redate.io haandterer imapsync-migreringer

Redate.io's proprietaere korrektionsmotor er bygget specifikt til denne kategori af problemer. Efter forbindelse til postkassen analyserer Redate.io hver e-mail og koerer hver besked gennem en flertrins analysepipeline. For imapsync-migreringer detekterer Redate.io den "Received"-header der er indsat af serveren ved at anvende moenstergenkendelse paa hundredvis af kendte migreringsprofiler, analysere den komplette headerkade og krydstjekke tidsstempler med den originale "Date"-header.

Det er ikke en simpel headerredigering. Korrektionsmotoren haandterer RFC-compliancevalidering, bevarelse af beskedstrukturen (inklusive multipart/alternative-strukturer, inline-vedhaeftninger og Content-Transfer-Encoding-variationer) og detektering af digitale signaturer. E-mails med S/MIME- eller PGP-signaturer identificeres automatisk og behandles korrekt for at bevare signaturernes integritet.

Hvad du faar efter rettelsen

Hver rettet e-mail viser sin originale modtagelsesdato i alle e-mailklienter. Den kronologiske raekkefoelge er gendannet. Hver rettelse gennemgaar en integritetsverifikation foer faerdiggorelse. Den originale besked flyttes til en "Redate.io - Originals"-mappe og bevares i 30 dage som sikkerhedsnet.

Kompatibilitet med alle destinationsservere

Da imapsync bruges til at migrere til stort set enhver IMAP-server, understotter Redate.io den samme bredde af destinationsplatforme. Uanset om imapsync-migreringen maalrettede Dovecot, Courier, Cyrus, Zimbra, Google Workspace, Microsoft 365 eller enhver anden IMAP-server, forbinder Redate.io og retter datoerne.

Saadan retter du datoer efter imapsync-migrering

Forbind postkassen

Log ind paa Redate.io og tilfoej postkassen. For Google Workspace eller Microsoft 365, brug admindelegeringen. For andre IMAP-servere (gaengse i imapsync-scenarier), indtast serveradressen, brugernavnet og adgangskoden. Redate.io forbinder via standard IMAP.

Gratis analyse

Koer den gratis analyse for at identificere paavirkede e-mails. Analyserapporten viser det samlede antal e-mails, hvor mange der har forkert dato, og hvilken migreringsdato der blev detekteret. Analysen koster intet og giver et klart billede foer nogen forpligtelse.

Ret og verificer

Vaelg en plan baseret paa antallet af paavirkede e-mails og start rettelsen. Fremskridt er synlige i realtid. Efter faerdiggoersel tjekker du resultaterne ved at se e-maildatoerne i din klient. Datoerne boer vaere vendt tilbage til deres rette plads.

imapsync-rettelsesguider efter platform

Ofte stillede spoergsmaal

Skal jeg bruge --syncinternaldates foer Redate.io?

Det er ikke noedvendigt. Redate.io saetter den korrekte INTERNALDATE under korrektionsprocessen, uanset den aktuelle vaerdi. Uanset om imapsync bevarede den originale INTERNALDATE eller ej, udleder Redate.io den korrekte vaerdi fra den originale "Date"-header.

Kan jeg rette datoer paa kildeserveren foer migrering med imapsync?

Hvis kildeserveren allerede har forkerte datoer (fra en tidligere migrering), kan Redate.io rette dem foer eller efter imapsync-migreringen. Men at rette datoer paa destinationsserveren efter migrering er den mest gaengse og praktiske tilgang.

Hvor mange e-mails kan Redate.io behandle?

Redate.io haandterer postkasser af enhver stoerrelse. Planer er tilgaengelige for op til 100.000 e-mails per postkasse. For organisationer med mange postkasser tilbyder Redate.io volumenrabatter.

imapsync-migreringen har oedelagt datoerne? Start en gratis analyse for at se hvor mange e-mails der er paavirket, og ret dem med Redate.io.