imapsync: päivämäärät eivät säily, korjausopas

5 min

imapsync on viitetyökalu sähköpostimigraatioihin Linux-järjestelmänvalvojien, hosting-palveluntarjoajien ja kaikkien niiden keskuudessa jotka suosivat avoimen lähdekoodin ratkaisuja. Gilles Lamiralin luoma imapsync on ollut aktiivisesti ylläpidetty vuodesta 2001 ja sitä on käytetty miljooniin postilaatikkosiirtoihin maailmanlaajuisesti. Se tukee käytännössä kaikkia IMAP-palvelimia: Dovecot, Courier, Cyrus, Zimbra, Exchange, Gmail ja kymmeniä muita.

imapsyncillä on maine perusteellisena ja muokattavana työkaluna. Ylläpitäjät arvostavat sen tarkkaa kontrollia siirrettäviin kansioihin, duplikaattien hallintaan ja kansionimien vastaavuuksien määrittelyyn eri IMAP-palvelimien välillä. Mutta kaikesta tästä kontrollista huolimatta yksi ongelma pysyy: sähköpostien päivämäärät eivät usein säily imapsync-migraation jälkeen. Käyttäjät avaavat postilaatikkonsa migraation jälkeen ja huomaavat että jokainen sähköposti näyttää migraatiopäivämäärän. Turhauttavaa, varsinkin koska imapsyncin pitäisi käsitellä päivämäärät oikein.

Miten imapsync käsittelee INTERNALDATE:n

INTERNALDATE:n säilytysyritys

imapsync yrittää todella säilyttää jokaisen sähköpostin INTERNALDATE:n migraation aikana. INTERNALDATE on aikaleima jonka IMAP-palvelin tallentaa metatietona jokaiselle viestille, erillaan sähköpostin otsakkeista. Kun imapsync kopioi viestin lähteestä kohteeseen, se lukee lähdepalvelimen INTERNALDATE:n ja välittää sen kohdepalvelimelle IMAP APPEND -komennossa.

Teoriassa tämän pitäisi säilyttää alkuperäinen päivämäärä. Käytännössä tulos riippuu kohdepalvelimen käyttäytymisestä ja tavasta jolla sähköpostiohjelmat tulkitsevat viestin eri päivämääräkenttiä.

"Received"-otsakeongelma

Vaikka imapsync onnistuisi INTERNALDATE:n säilyttämisessä, kohdesähköpostipalvelin lisää uuden "Received"-otsakkeen jokaiseen viestiin APPEND-operaation aikana. Tämä "Received"-otsake sisältää nykyisen aikaleiman, migraatiopäivämäärän. Outlook, Apple Mail ja Thunderbird määrittävät näytettävän "vastaanottopäivämäärän" lukemalla ylimmän "Received"-otsakkeen, eivät INTERNALDATE:a. Joten imapsyncin INTERNALDATE-säilytyspyrkimyksistä huolimatta näkyvä päivämäärä useimmissa asiakkaissa on silti väärä.

Tämä perustavanlaatuinen ristiriita aiheuttaa sekaannuksen. imapsync säilyttää yhden päivämääräarvon (INTERNALDATE), mutta sähköpostiohjelmat näyttävät toisen ("Received"-otsakkeen aikaleiman). Tekninen syvennys tähän mekanismiin löytyy artikkelista miksi sähköpostit näyttävät väärän päivämäärän IMAP-migraation jälkeen.

imapsync-FAQ:n väärinkäsitys

imapsyncin dokumentaatio ja FAQ käsittelevät päivämääräongelmaa mutta esittävät sen luontaisena rajoituksena. FAQ ehdottaa että "päivämäärät eivät välttämättä säily" IMAP-migraation aikana ja antaa ymmärtää että näin IMAP-protokolla vain toimii. Vaikka on totta että IMAP-protokolla vaatii palvelimia lisäämään "Received"-otsakkeita viestien lisäyksessä, FAQ luo vaikutelman että ongelma on pysyvä ja korjaamaton.

Tämä ei pidä paikkansa. Migraation aikana lisätyt "Received"-otsakkeet voidaan tunnistaa ja korjata jälkikäteen, palauttaen alkuperäisen päivämäärän näkymän sähköpostiohjelmissa. Alkuperäinen "Date"-otsake (joka tallentaa milloin sähköposti alun perin lähetettiin) on aina imapsyncin säilyttämä ja toimii viitteenä oikealle päivämäärälle.

imapsyncin migraatio-otsakkeen tunnistaminen

Miltä otsake näyttää

imapsync itse ei lisää "Received"-otsaketta, vaan kohde-IMAP-palvelin tekee sen. imapsync-migraation aikana lisätty otsake näyttää tyypillisesti kohdepalvelimen normaalilta IMAP-lisäysotsakkeelta. Esimerkiksi Dovecot-palvelimelle siirrettäessä otsake voisi näyttää tältä:

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

Avaintunniste on että tämä "Received"-otsake on ketjussa ylimmäinen, sen aikaleima vastaa imapsync-migraation ajoajankohtaa, ja se viittaa yleensä "localhostiin" tai kohdepalvelimen nimeen ulkoisen sähköpostipalvelimen sijaan.

Päivämäärien vertailu

Ongelman vahvistamiseksi vertaa ylimmän "Received"-otsakkeen aikaleimaa sähköpostin "Date"-otsakkeeseen. Jos "Received"-otsake näyttää tammikuuta 2025 mutta "Date"-otsake näyttää maaliskuuta 2020, migraation "Received"-otsake on väärän päivämääränäytön syy. Tämä vertailu onnistuu tarkastelemalla viestin raakalähdekoodia missä tahansa sähköpostiohjelmassa.

Miksi imapsyncin yleiset asetukset eivät ratkaise ongelmaa

--syncinternaldates-lippu

imapsync tarjoaa --syncinternaldates-lipun, joka asettaa kohdepalvelimen INTERNALDATE:n vastaamaan sähköpostin "Date"-otsaketta. Tämä on hyödyllinen kun lähdepalvelimen INTERNALDATE on jo väärä, mutta se ei estä kohdepalvelinta lisäämästä "Received"-otsaketta. Näkyvä päivämäärä Outlookissa ja muissa asiakkaissa pysyy migraatiopäivämääränä INTERNALDATE:n arvosta riippumatta.

--addheader-asetus

imapsync voi lisätä mukautettuja otsakkeita viesteihin migraation aikana, mutta se ei voi estää kohdepalvelinta lisäämästä omaa "Received"-otsakettaan. IMAP-protokolla vaatii palvelimia tallentamaan lisäysaikaleiman, eikä mikään imapsync-asetus voi ohittaa tätä palvelintason käyttäytymistä.

Migraation jälkeiset skriptit

Jotkut ylläpitäjät kirjoittavat räätälöityjä skriptejä migraation jälkeen poistaakseen ei-toivotut "Received"-otsakkeet. Se kuulostaa järkevältä, varsinkin sellaiselle joka valitsi imapsyncin alun alkaen (joku joka on kotonaan komentorivin kanssa). Mutta todellisuus on paljon monimutkaisempi kuin etsi-ja-korvaa otsaketekstissä. Mitä tapahtuu kun skripti kohtaa S/MIME-allekirjoitetun sähköpostin? Tai multipart-viestin sisäkkäisillä MIME-rajoilla ja base64-koodatuilla liitteillä? Tai otsakkeen jossa on ei-ASCII-merkkejä RFC 2047 -koodauksella? Yksi väärässä paikassa oleva tavu MIME-rajassa voi hiljaisesti korruptoida koko viestin tuhoten liitteet tai tehden sähköpostista lukukelvottoman. Ja miten varmistetaan että 10 000 korjattua sähköpostia ovat kaikki ehjiä? Tuhansien sähköpostien ja useiden postilaatikoiden kohdalla itsetehdyt skriptit ovat merkittävä riski.

imapsync-päivämäärien korjaaminen Redate.io:lla

Miten Redate.io käsittelee imapsync-migraatiot

Redate.io:n oma korjausmoottori on suunniteltu nimenomaan tämän tyyppistä ongelmaa varten. Postilaatikkoon yhdistämisen jälkeen Redate.io analysoi jokaisen sähköpostin ja ajaa jokaisen viestin monivaiheisen analyysiprosessin läpi. imapsync-migraatioissa Redate.io tunnistaa palvelimen lisäämän "Received"-otsakkeen vertaamalla tunnisteita satoihin tunnettuihin migraatioprofiileihin, analysoimalla täydellisen otsakeketjun ja vertaamalla aikaleimoja alkuperäiseen "Date"-otsakkeeseen.

Tämä ei ole pelkkä otsakkeen muokkausta. Korjausmoottori käsittelee RFC-vaatimustenmukaisuuden validoinnin, viestin rakenteen säilyttämisen (mukaan lukien multipart/alternative-rakenteet, upotetut liitteet ja Content-Transfer-Encoding-variaatiot) sekä digitaalisten allekirjoitusten tunnistamisen. S/MIME- tai PGP-allekirjoitetut sähköpostit tunnistetaan automaattisesti ja käsitellään asianmukaisesti allekirjoitusten eheyden säilyttämiseksi.

Mitä korjauksen jälkeen saat

Jokainen korjattu sähköposti näyttää alkuperäisen vastaanottopäivämääränsä kaikissa sähköpostiohjelmissa. Aikajärjestys on palautettu. Jokainen korjaus käy läpi eheystarkistuksen ennen viimeistelyä. Alkuperäinen viesti siirretään "Redate.io - Originals" -kansioon ja säilytetään 30 päivää turvaverkkona.

Yhteensopivuus kaikkien kohdepalvelimien kanssa

Koska imapsyciä käytetään siirtoihin käytännössä mille tahansa IMAP-palvelimelle, Redate.io tukee samaa laajuutta kohdealustoja. Olipa imapsync-migraation kohteena Dovecot, Courier, Cyrus, Zimbra, Google Workspace, Microsoft 365 tai mikä tahansa muu IMAP-palvelin, Redate.io yhdistää ja korjaa päivämäärät.

Päivämäärien korjaaminen imapsync-migraation jälkeen

Postilaatikon yhdistäminen

Kirjaudu Redate.io:hon ja lisää postilaatikko. Google Workspacelle tai Microsoft 365:lle käytä ylläpitäjädelegointia. Muille IMAP-palvelimille (yleisiä imapsync-skenaarioissa) syötä palvelimen osoite, käyttäjätunnus ja salasana. Redate.io yhdistää standardi-IMAP:n kautta.

Ilmainen analyysi

Käynnistä ilmainen analyysi vaikuttuneiden sähköpostien tunnistamiseksi. Analyysiraportti näyttää sähköpostien kokonaismäärän, kuinka monella on väärä päivämäärä ja mikä migraatiopäivämäärä havaittiin. Analyysi ei maksa mitään ja antaa selkeän kuvan ennen mitään sitoutumista.

Korjaa ja varmenna

Valitse suunnitelma vaikuttuneiden sähköpostien määrän perusteella ja käynnistä korjaus. Edistyminen näkyy reaaliajassa. Valmistumisen jälkeen tarkista tulokset katsomalla sähköpostien päivämääriä asiakasohjelmassasi. Päivämäärien pitäisi olla palautuneet paikoilleen.

imapsync-korjausoppaat alustakohtaisesti

Usein kysytyt kysymykset

Pitäisikö --syncinternaldates käyttää ennen Redate.io:ta?

Ei ole tarpeen. Redate.io asettaa oikean INTERNALDATE:n korjausprosessin aikana nykyisestä arvosta riippumatta. Säilytti imapsync alkuperäisen INTERNALDATE:n tai ei, Redate.io johtaa oikean arvon alkuperäisestä "Date"-otsakkeesta.

Voiko päivämäärät korjata lähdepalvelimella ennen imapsync-migraatiota?

Jos lähdepalvelimella on jo vääriä päivämääriä (aiemman migraation seurauksena), Redate.io voi korjata ne ennen tai jälkeen imapsync-migraation. Päivämäärien korjaaminen kohdepalvelimella migraation jälkeen on yleisin ja käytännöllisin lähestymistapa.

Kuinka monta sähköpostia Redate.io voi käsitellä?

Redate.io käsittelee minkä tahansa kokoisia postilaatikoita. Suunnitelmia on saatavilla jopa 100 000 sähköpostiin per postilaatikko. Organisaatioille joissa on useita postilaatikoita, Redate.io tarjoaa määräalennuksia.

imapsync-migraatio rikkoi päivämäärät? Käynnistä ilmainen analyysi nähdäksesi kuinka monta sähköpostia on vaikuttunut ja korjaa ne Redate.io:lla.