imapsync nesaglabāja datumus? Kā tos labot

5 min

Solījums --syncinternaldates (un kāpēc tas nedarbojas)

Jūs palaidāt imapsync komandu. Iekļāvāt --syncinternaldates, jo izlasījāt dokumentāciju un esat rūpīgs. Migrācija beidzas, žurnāls saka, ka viss pārsūtīts, nulle kļūdu. Tad atverat pastkasti Outlook un katrs e-pasts rāda vakardienas datumu.

Šī ir viena no biežākajām frustrācijām ar imapsync, un tā mulsina sistēmu administratorus vismaz kopš 2017. gada. Karodziņš --syncinternaldates ir domāts, lai saglabātu IMAP INTERNALDATE migrācijas laikā. Un tehniski tas mēģina. Bet "mēģina" nes lielu nozīmi šajā teikumā.

imapsync ir atvērtā koda Perl rīks, ko rakstījis Gilles Lamiral, un tas patiešām ir labs tajā, ko dara. Tas apstrādā IMAP-uz-IMAP pastkasšu pārsūtīšanu ar uzticamības līmeni, ko vairums komerciālo rīku apskauda. Bet datumu saglabāšana nav pilnībā imapsync rokās, un te lietas kļūst sarežģītas.

Kā IMAP datumi patiesībā darbojas

Katrā e-pastā ir iesaistīti trīs dažādi "datumi", un vairums cilvēku (ieskaitot dažus IT administratorus) tos sajauc:

  • Date: galvene (RFC 2822) - datums, ko sūtītāja e-pasta klients uzlika ziņojumam, kad tas tika sarakstīts. Tas dzīvo ziņojuma pamattekstā, un pasta serveri to nekad nemaina.
  • Received: galvenes - katrs pasta serveris, kas apstrādā ziņojumu, pievieno vienu ar savu laika zīmogu. Tās veido ķēdi no sūtītāja līdz saņēmējam. Jaunākā Received galvene ir tā, ko daži e-pasta klienti izmanto attēlošanai.
  • INTERNALDATE - IMAP servera puses laika zīmogs, kas kontrolē ziņojumu kārtošanu pastkastē. Tas tiek iestatīts, kad ziņojums pirmo reizi tiek saglabāts caur IMAP APPEND.

Kad imapsync migrē ziņojumu, tas to nolasa no avota servera (ieskaitot tā INTERNALDATE) un ieraksta to galamērķa serverī, izmantojot IMAP APPEND. Karodziņš --syncinternaldates liek imapsync nodot avota INTERNALDATE galamērķa serverim APPEND laikā.

Problēma ir šāda: galamērķa serverim nav pienākuma šo datumu ievērot.

Kāpēc galamērķa serveri ignorē INTERNALDATE

IMAP specifikācija (RFC 3501) saka, ka ja datums-laiks ir nodrošināts ar APPEND komandu, serverim VAJADZĒTU to izmantot. "VAJADZĒTU" RFC valodā nozīmē "dariet to, ja vien jums nav laba iemesla nedarīt". Vairākas lielas e-pasta platformas ir nolēmušas, ka tām ir labs iemesls.

Microsoft 365 ir lielākais vainīgais. Kad ziņojums ienāk caur IMAP APPEND, Exchange transporta cauruļvads to apzīmogo ar jaunu Received galveni ar pašreizējo datumu, tad iestata INTERNALDATE, pamatojoties uz šo piegādes laika zīmogu. Nav nozīmes, kādu datumu imapsync pieprasīja. M365 serveris to pārraksta.

Google Workspace (Gmail) uzvedas citādi, bet joprojām var radīt problēmas. Gmail IMAP implementācija vairumā gadījumu ievēro INTERNALDATE no APPEND, bet pievieno savu Received galveni. Ja e-pasta klients, kas lasa pastkasti, dod priekšroku Received galvenēm pār INTERNALDATE attēlošanai (un Outlook tieši to dara), datumi joprojām izskatās nepareizi.

Biežas imapsync komandrindas kļūdas, kas sabojā datumus

--syncinternaldates pilnīga aizmirstība

Karodziņš nav ieslēgts pēc noklusējuma. Ja palaižat pamata imapsync --host1 avots --host2 galamērķis --user1 lietotājs --user2 lietotājs bez tā, imapsync nemaz nemēģina saglabāt datumus.

--syncinternaldates lietošana ar --addheader

Daži ceļveži iesaka izmantot --addheader, lai ievietotu pielāgotu galveni migrācijas laikā. Ja pievienojat galvenes, modificējat ziņojumu, kas var likt galamērķa serverim to uzskatīt par "jaunu" ziņojumu.

--minage un --maxage sajaukšana ar datumu saglabāšanu

Karodziņi --minage un --maxage filtrē, kurus ziņojumus migrēt pēc vecuma. Tie neietekmē datumu apstrādi galamērķī.

SSL pārrunas, kas izraisa laika zīmogu nobīdi

Migrējot caur TLS ar --ssl1 un --ssl2, savienojuma iestatīšana pievieno latentumu. Lielās migrācijās (50 000+ ziņojumu) šis latentums uzkrājas.

imapsync žurnālu lasīšana: ko izvade patiesībā stāsta

imapsync rada detalizētus žurnālus, kas ir lieliski. Bet žurnāla izvade var būt maldinoša, kad runa par datumiem.

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

Abi datumi sakrīt. Tas nozīmē, ka imapsync nosūtīja pareizo INTERNALDATE galamērķim. Bet tas nenozīmē, ka galamērķa serveris šo datumu patiešām saglabāja. imapsync ziņo par to, ko pieprasīja, nevis par to, ko serveris pieņēma.

Liela mēroga imapsync migrācijas: kur datumu problēmas vairojas

Vienas pastkastes migrācija ar imapsync ir kaitinoša, kad datumi sabojājas. Bet MSP un IT nodaļas, kas palaiž imapsync simtiem pastkasšu, saskaras ar pilnīgi citu problēmas mērogu.

Iedomājieties tipisku uzņēmuma migrācijas scenāriju. Pārceļat 200 pastkastes no Zimbra servera uz Microsoft 365. Rakstāt iesaiņojuma skriptu, kas iet caur lietotāju CSV, izsaucot imapsync katram. Migrācija notiek nedēļas nogalē. Pirmdienas rītā jums ir 200 pastkastes ar sabojātiem datumiem un aptuveni 1,2 miljoni e-pastu, kas rāda migrācijas laika zīmogu.

Pašu labojumi un to ierobežojumi

Ja meklējat forumos un pasta sarakstos (imapsync-devel saraksts SourceForge joprojām ir aktīvs kopš 2026. gada sākuma), atradīsiet ierosinājumus no radošiem līdz bīstamiem.

Daži iesaka izmantot Perl vienas rindas risinājumu INTERNALDATE tiešai modificēšanai galamērķa serverī. Citi iesaka eksportēt visus ziņojumus mbox formātā, manipulēt ar datumiem un importēt atpakaļ. Daži ir uzrakstījuši Python skriptus, kas izmanto imaplib ziņojumu lejupielādei, modificēšanai un atkārtotai ievietošanai.

Visām šīm pieejām ir vienas un tās pašas fundamentālas problēmas. Kā jūs apstrādājat S/MIME parakstītus ziņojumus, nesabojājot parakstu? Kā ar daudzkomponentu MIME struktūrām ar ligzdotām robežām? Ne-ASCII galvenēm, kas kodētas ar RFC 2047?

Kā Redate.io labo imapsync datumu problēmas

Oriģinālā Date: galvene pēc imapsync migrācijas vienmēr ir neskarta. imapsync uzticami pārsūta neapstrādātu ziņojumu; attēlošanas problēmu izraisa galamērķa servera metadatu apstrāde. Šī oriģinālā galvene padara korekciju iespējamu.

Redate.io tieši pieslēdzas pastkastei (Google Workspace, Microsoft 365 vai jebkurš IMAP serveris), skenē e-pastus ar datumu anomālijām un piemēro mērķtiecīgu metadatu korekciju caur patentētu galveņu ķēdes analīzes un datumu rekonstrukcijas cauruļvadu.

Katrs labotais e-pasts tiek verificēts individuāli: ziņojuma integritāte, pielikumu saglabāšana, mapju izvietojums, pavedieni, etiķetes. Oriģināli tiek glabāti redzamā Redate.io - Originals rezerves mapē 30 dienas.

Redate.io darbojas arī ar migrācijām, kas notikušas pirms mēnešiem vai gadiem. Date: galvene nezaudē derīgumu, tāpat kā spēja labot to, kas nogāja greizi.

Migrējāt ar imapsync un palikāt ar nepareiziem datumiem? Sāciet bezmaksas skenēšanu, lai redzētu precīzi, cik e-pastu ir ietekmēti.

Saistītie raksti