imapsync ei säilitanud kuupäevi? Kuidas parandada

Lugemisaeg 6 min Viimati uuendatud:

Lubadus --syncinternaldates (ja kus see peatub)

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 see tõesti annab igale koopiale lähteserveris oleva sisemise kuupäeva. Just seal peitubki lõks.

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 imapsync saab kopeerida vaid neid kuupäevi, mida ta leiab, 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.

Head uudised on need: Microsoft 365, Outlook.com ja Gmail säilitavad kuupäeva, mis neile antakse. Kui kuupäevad on siiski valed, peitub probleem mujal.

Miks kuupäevad võivad ikkagi valed olla

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". Microsoft 365, Outlook.com ja Gmail seda teevad: koopia, mis kannab oma algset kuupäeva, säilitab selle.

See, mida imapsync edastab, on kuupäev, mille LÄHTEserver iga sõnumi jaoks salvestab, mitte e-kirja saatmise kuupäev. Terves postkastis need kaks kattuvad. Postkastis, mis on juba korra migreeritud või varukoopiast taastatud, võib lähteserveris olla juba selle varasema toimingu kuupäev, ja imapsync kopeerib selle sellisel kujul.

Ka Gmaili serverid säilitavad APPEND-ist saadud kuupäeva. Nii et sihtkohast sõltumata on küsimus ikka seesama: mis kuupäev oli lähteserveris? Gmail on erijuhtum ainult siis, kui koopia läbib Gmaili oma impordi API-t, mitte IMAP-i: see API lisab kopeerimispäevaga dateeritud Received: rea, ja Outlook võib seda kuupäeva näidata. imapsync kasutab IMAP-i, seega see teda ei mõjuta.

Levinud imapsync käsurea vead ja valesüüdistused kuupäevaprobleemides

Kopeerimine lähtekohast, mille kuupäevad olid juba valed

--syncinternaldates on vaikimisi lubatud: imapsync annab igale koopiale lähteserveris oleva sisemise kuupäeva (dokumentatsioonis: "Sets the internal dates on host2 as the same as host1"). Kui lähtepostkast on ise varasema migratsiooni või taastamise tulemus, võivad selle sisemised kuupäevad juba olla selle varasema toimingu kuupäevad, ja imapsync kopeerib vale kuupäeva usaldusväärselt. See on kõige levinum põhjus ja kõige raskemini märgatav, kuna logi näitab kahte identset kuupäeva.

--syncinternaldates kasutamine koos --addheader

Mõned juhendid soovitavad kasutada --addheader kohandatud päise sisestamiseks migratsiooni ajal. Päise lisamine muudab sõnumit (üks rida rohkem üleval), aga ei muuda kuupäeva, mille imapsync edastab, seega see ei seleta valesid kuupäevi. Koopia ei ole lihtsalt enam identne originaaliga, mis on oluline, kui te neid kahte võrdlete.

--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.

TLS-i süüdistamine kuupäevade nihkumises

TLS kaudu (--ssl1, --ssl2) lisab ühenduse seadistamine latentsust, ja suure migratsiooni puhul (50 000+ sõnumit) kasvab see tunde pikaks. Kuupäevi see ei puuduta: iga koopia kannab kuupäeva, mille imapsync edastab, olenemata sellest, mis kell ta tegelikult kohale jõuab.

imapsync logide lugemine: mida väljund tegelikult ütleb

See on üks masendavamaid aspekte kuupäevaprobleemide silumisel: puhas logifail, kaks identset kuupäeva, ja ikkagi vale kuupäev Outlookis, kuna viga oli olemas juba enne imapsynci käivitamist.

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

Kui tagastatud kuupäev ei ole e-kirja saatmise kuupäev, vaadake sama sõnumit lähtekohas: leiate sealt sama vale kuupäeva. Logi ei valetanud, see kopeeris seda, mis talle anti. Ja Microsoft 365, Outlook.com ja Gmail säilitavad kõik kuupäeva, mis neile antakse. Aga kaks identset kuupäeva tõestavad ainult, et koopia on truu lähteallikale: kui lähtekuupäev oli juba vale, näitavad mõlemad veerud sedasama valet kuupäeva.

Suuremahulised imapsync migratsioonid: kus kuupäevaprobleemid paljunevad

Kas saate imapsync uuesti käivitada, et see parandada? Test käsuga --dry näitab vaid kuupäevi, mida imapsync edastaks, mitte seda, kas need on e-kirjade saatmise kuupäevad, ja ei hoiata, kui lähtekuupäevad on juba valed. Ja kui probleem oli lähtekuupäevades, kopeerib teine käivitus needsamad valed kuupäevad uuesti.

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; vale kuupäev peitub metaandmetes, mille koopia sai, mitte sõnumis endas. 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) ja leiab e-kirjad, mille kuvatav kuupäev ei vasta nende algsele kuupäevale, olenemata sellest, milline tööriist migratsiooni teostas.

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, kuni te need kustutate.

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