imapsync ei säilitanud kuupäevi? Kuidas parandada

5 min

Lubadus --syncinternaldates (ja miks see ei tööta)

Käivitasite imapsync käsu. Lisasite --syncinternaldates, sest lugesite dokumentatsiooni ja olete hoolikas. Migratsioon lõpeb, logi ütleb, et kõik edastati, null viga. Siis avate postkasti Outlookis ja iga e-kiri näitab eilset kuupäeva.

See on üks levinumaid frustratsioone imapsynciga ja see ajab süsteemiadministraatoreid segadusse vähemalt aastast 2017. Lipp --syncinternaldates peaks säilitama IMAP INTERNALDATE migratsiooni ajal. Ja tehniliselt proovib. Aga "proovib" kannab selles lauses palju raskust.

imapsync on avatud lähtekoodiga Perli tööriist, mille on kirjutanud Gilles Lamiral, ja see on tõepoolest hea selles, mida teeb. See käsitleb IMAP-lt-IMAPile postkastide ülekandeid usaldusväärsuse tasemel, mida enamik kommertsiaalseid tööriistu kadestab. Aga kuupäevade säilitamine ei ole täielikult imapsynci kätes ja siin muutuvad asjad keeruliseks.

Kuidas IMAP kuupäevad tegelikult töötavad

Igas e-kirjas on kolm erinevat "kuupäeva" ja enamik inimesi (sealhulgas mõned IT administraatorid) ajab neid segamini:

  • Date: päis (RFC 2822) - kuupäev, mille saatja meiliklient pani sõnumile koostamise ajal. See elab sõnumi kehas ja meiliserverid ei muuda seda kunagi.
  • Received: päised - iga meiliserver, mis sõnumit töötleb, lisab ühe oma ajatempliga. Need moodustavad ahela saatjast saajani. Uusim Received päis on see, mida mõned meilikliendid kasutavad kuvamiseks.
  • INTERNALDATE - IMAP serveri poolne ajatempel, mis kontrollib sõnumite sorteerimist postkastis. See seatakse, kui sõnum esimest korda salvestatakse IMAP APPEND kaudu.

Kui imapsync migreerib sõnumi, loeb selle lähteserverist (koos INTERNALDATE-ga) ja kirjutab sihtserverisse IMAP APPEND abil. Lipp --syncinternaldates ütleb imapsyncile edastada lähte INTERNALDATE sihtserverile APPEND ajal.

Probleem on selles: sihtserver ei ole kohustatud seda kuupäeva austama.

Miks sihtserverid ignoreerivad INTERNALDATE-t

IMAP spetsifikatsioon (RFC 3501) ütleb, et kui kuupäev-kellaaeg on esitatud APPEND käsuga, PEAKS server seda kasutama. "PEAKS" RFC keeles tähendab "tehke seda, välja arvatud juhul, kui teil on hea põhjus mitte teha". Mitmed suured meiliplatvormid on otsustanud, et neil on hea põhjus.

Microsoft 365 on suurim süüdlane. Kui sõnum saabub IMAP APPEND kaudu, tempeldab Exchange transporditorustik selle uue Received päisega praeguse kuupäevaga, seejärel seab INTERNALDATE selle edastamise ajatempli põhjal. Pole tähtis, millist kuupäeva imapsync palus. M365 server kirjutab selle üle.

Google Workspace (Gmail) käitub teisiti, aga võib siiski probleeme tekitada. Gmaili IMAP implementatsioon enamikul juhtudel austab INTERNALDATE-t APPEND-ist, kuid lisab oma Received päise. Kui meiliklient, mis loeb postkasti, eelistab kuvamiseks Received päiseid INTERNALDATE-le (ja Outlook teeb täpselt seda), näevad kuupäevad siiski valed välja.

Levinud imapsync käsurea vead, mis rikuvad kuupäevi

--syncinternaldates täielik unustamine

Lipp ei ole vaikimisi lubatud. Kui käivitate põhi imapsync --host1 allikas --host2 sihtkoht --user1 kasutaja --user2 kasutaja ilma selleta, ei proovi imapsync kuupäevi üldse säilitada.

--syncinternaldates kasutamine koos --addheader

Mõned juhendid soovitavad kasutada --addheader kohandatud päise sisestamiseks migratsiooni ajal. Kui lisate päiseid, muudate sõnumit, mis võib ajendada sihtserverit seda "uue" sõnumina käsitlema.

--minage ja --maxage segiajamine kuupäevade säilitamisega

Lipud --minage ja --maxage filtreerivad, milliseid sõnumeid migreerida vanuse põhjal. Need ei mõjuta kuupäevade käsitlemist sihtkohas.

SSL läbirääkimised, mis põhjustavad ajatempli nihet

TLS kaudu migreerimisel --ssl1 ja --ssl2 abil lisab ühenduse seadistamine latentsust. Suurte migratsioonide puhul (50 000+ sõnumit) see latentsus kuhjub.

imapsync logide lugemine: mida väljund tegelikult ütleb

imapsync toodab üksikasjalikke logisid, mis on suurepärane. Aga logi väljund võib olla eksitav kuupäevade osas.

msg source stratemind/42 {5765} D:2019-01-15 13:22:07 -> dest stratemind/42 {5765} D:2019-01-15 13:22:07

Mõlemad kuupäevad kattuvad. See tähendab, et imapsync saatis õige INTERNALDATE sihtkohta. Aga see ei tähenda, et sihtserver selle kuupäeva tegelikult salvestas. imapsync teatab sellest, mida palus, mitte sellest, mida server vastu võttis.

Suuremahulised imapsync migratsioonid: kus kuupäevaprobleemid paljunevad

Ühe postkasti migratsioon imapsynciga on tüütu, kui kuupäevad riknevad. Aga MSP-d ja IT osakonnad, kes käitavad imapsynci sadade postkastide peal, seisavad silmitsi täiesti erineva ulatusega probleemiga.

Ise tehtud parandused ja nende piirangud

Kui otsite foorumitest ja postilistidest (imapsync-devel nimekiri SourceForge'is on 2026. aasta alguse seisuga endiselt aktiivne), leiate ettepanekuid loomingulistest kuni ohtlikeni.

Mõned soovitavad Perli üherealise lahenduse kasutamist INTERNALDATE otse sihtserveris muutmiseks. Teised soovitavad kõigi sõnumite eksportimist mbox formaati, kuupäevade manipuleerimist ja uuesti importimist. Mõned on kirjutanud Python skripte, mis kasutavad imaplib sõnumite allalaadimiseks, muutmiseks ja uuesti sisestamiseks.

Kõigil neil lähenemistel on samad põhiprobleemid. Kuidas käsitlete S/MIME allkirjastatud sõnumeid allkirja rikkumata? Kuidas mitmeosaliste MIME struktuuridega pesastatud piiridega? Mitte-ASCII päistega, mis on kodeeritud RFC 2047-ga?

Kuidas Redate.io parandab imapsync kuupäevaprobleeme

Algne Date: päis on pärast imapsync migratsiooni alati puutumatu. imapsync edastab töötlemata sõnumi usaldusväärselt; kuvamisprobleemi põhjustab sihtserveri metaandmete töötlemine. See algne päis on see, mis teeb paranduse võimalikuks.

Redate.io ühendub otse postkastiga (Google Workspace, Microsoft 365 või mis tahes IMAP server), skaneerib e-kirju kuupäevaanomaaliatega ja rakendab sihitud metaandmete parandust patenteeritud päiste ahela analüüsi ja kuupäevade rekonstrueerimise torustiku kaudu.

Iga parandatud e-kiri kontrollitakse individuaalselt: sõnumi terviklikkus, manuste säilitamine, kausta paigutus, lõimed, sildid. Originaalid hoitakse nähtavas Redate.io - Originals varukoopia kaustas 30 päeva.

Redate.io töötab ka migratsioonidega, mis toimusid kuid või aastaid tagasi. Date: päis ei aegu ja samuti ei aegu võimalus parandada seda, mis valesti läks.

Migreerisite imapsynciga ja jäite valede kuupäevadega? Käivitage tasuta skaneerimine, et näha täpselt, kui palju e-kirju on mõjutatud.

Seotud artiklid