Pogrešni datumi e-mailova nakon migracije cPanel

7 min

Ponedjeljak ujutro koji zaboli

Upravo ste završili migraciju s dijeljenog hostinga na cPanelu prema Google Workspace ili Microsoft 365. Operacija je prošla bez problema, pretinci su dostupni, korisnici se prijavljuju. Zatim, oko 9:15, stiže prvi tiket: "Svi moji stari e-mailovi prikazuju isti datum, onaj od prošlog vikenda." Onda drugi. Onda deset.

Nije riječ o izoliranom bugu. To je izravna posljedica načina na koji migracije s cPanela obrađuju (ili, točnije, ne obrađuju) metapodatke o datumima e-mailova.

cPanel, Roundcube, Horde: poseban IMAP kontekst

Dijeljeni hosting na cPanelu je Linux server koji pokreće IMAP server (obično Dovecot) s Roundcubeom ili Hordeom kao webmail sučeljem. Ništa egzotično u tome. Ali taj kontekst ima nekoliko posebnosti zbog kojih su migracije prema enterprise platformama osjetljivije nego što izgledaju.

Prvo, cPanel pretinci često nakupljaju e-mailove godinama, ponekad i desetljeće. Klijent koji je hostao svoju domenu na dijeljenom hostingu od 2013. može imati vrlo duboke arhive. Taj volumen, kombiniran s načinom na koji se migracija provodi, stvara plodno tlo za problem s datumima.

Osim toga, alati koji se koriste za te migracije su najčešće ili nativni cPanel alat ("Migrations" u WHM-u), ili imapsync pokrenut u naredbenom retku od strane hostingaša ili IT pružatelja usluge, ili rješenja za širu publiku poput GSMMO za migraciju prema Google Workspace.

Zašto su datumi pokvareni nakon migracije s cPanela

Da bismo razumjeli problem, treba shvatiti dva odvojena koncepta: zaglavlje Date: e-maila i IMAP INTERNALDATE.

Zaglavlje Date: upisano je u sirovi sadržaj poruke u trenutku slanja, sukladno RFC 2822. Ono označava kada je e-mail napisan i poslan. To se zaglavlje nikad ne mijenja, osim namjernom manipulacijom poruke.

INTERNALDATE je metapodatak koji IMAP server pridružuje svakoj pohranjenoj poruci. Odvojen je od sadržaja poruke. Kada e-mail normalno stigne na server, INTERNALDATE se definira na temelju zaglavlja Received: poruke, ili prema datumu primitka ako je poruka dostavljena izravno. Upravo tu vrijednost Outlook, Thunderbird i većina e-mail klijenata koriste za sortiranje poruka.

Tijekom IMAP migracije, poruke se kopiraju s jednog servera na drugi. Problem je sljedeći: alat za migraciju mora kreirati svaku poruku na odredišnom serveru. I za mnoge alate, INTERNALDATE novokreirane poruke odgovara datumu migracije, a ne originalnom datumu poruke. Uz to, zaglavlje Received: s vremenskim pečatom datuma migracije dodaje se na vrh lanca zaglavlja, što dodatno zbunjuje e-mail klijente koji se na njega oslanjaju pri izračunu datuma za prikaz.

Rezultat: e-mail iz 2019. stiže na Google Workspace s INTERNALDATE postavljenim na dan migracije, i zaglavlje Received: označeno jučerom. Outlook ga prikazuje u sandučiću kao da je upravo stigao. Cijela kronologija arhive je uništena.

Alat za migraciju WHM / cPanel

Alat ugrađen u WHM za migraciju cPanel računa na drugu platformu generira ovaj problem gotovo sustavno kada je odredište vanjski IMAP server (Google Workspace, Microsoft 365). Kopira sadržaj Maildir direktorija na novi server putem IMAP APPEND-a bez čuvanja originalnog INTERNALDATE-a. Svaka poruka stoga dobiva vremenski pečat trenutka operacije.

imapsync i ručne migracije s cPanela

imapsync je moćan alat, ali njegovo zadano ponašanje ne čuva uvijek datume. Bez ispravnih parametara (i ispravne verzije), može savršeno dobro kopirati 40.000 poruka i svima dodijeliti datum izvršavanja skripte. (Inače, ako ste ikad listali logove imapsynca redak po redak kako biste dijagnosticirali problem s datumima u pretincu s 25.000 poruka, znate da je to iskustvo koje ne želite ponoviti.)

Da budemo precizni, imapsync ima opcije za pokušaj čuvanja datuma, ali te opcije različito interagiraju ovisno o izvornom i odredišnom serveru, i njihova učinkovitost nije zajamčena na svim konfiguracijama cPanel / Dovecot. Više o tome na stranici imapsync: datumi nisu sačuvani.

GSMMO i alati za širu publiku

Google Workspace Migration for Microsoft Outlook (GSMMO) namijenjen je migraciji iz Outlooka, ne s golog IMAP servera. Kada se koristi za migraciju s cPanela (putem IMAP računa konfiguriranog u Outlooku), datumi prolaze isti tretman: INTERNALDATE na Google Workspace postavljuje se na datum migracije. Problem GSMMO-a i datuma e-mailova posebno je dokumentiran, toliko je rasprostranjen.

Koji e-mail klijenti su pogođeni?

Kvarenje datuma ne manifestira se jednako u svim klijentima.

Outlook je najugroženiji klijent. Koristi INTERNALDATE (ili zaglavlje Received: migracije) kao primarni kriterij sortiranja mapa. Nakon loše upravljane migracije s cPanela, pretinac u Outlooku može prikazivati tisuće arhiviranih e-mailova s datumom vikenda migracije. Ispravak datuma imapsync u Outlooku jedan je od najčešće traženih popravaka.

Gmail (Google Workspace) općenito prikazuje datum iz zaglavlja Date: u popisu e-mailova, ali sortiranje ipak može biti pogođeno INTERNALDATE-om u određenim slučajevima. Korisnici prijavljuju erratično ponašanje pri pretraživanju i sortiranju po datumu.

Apple Mail i Thunderbird imaju nijansiranije ponašanje, ali ni jedan ni drugi nisu imuni na problem, posebno kada je zaglavlje Received: migracije prisutno na vrhu lanca.

Dobra vijest: originalni datum je još uvijek tu

To je tehnički detalj koji sve mijenja. Originalno zaglavlje Date: poruke upisano je u sirovi sadržaj e-maila. Migracija ga ne dira. Kada otvorite pogođeni e-mail i pogledate sirova zaglavlja (u Gmailu: "Prikaži original", u Outlooku: Datoteka > Svojstva), vidite originalni Date: netaknut, praćen jednim ili više zaglavlja Received: od kojih prvo nosi datum migracije.

Ta informacija uvijek je prisutna. Može se iskoristiti za ispravak metapodataka. Točno to radi Redate.io-ov engine za korekciju.

Zašto je "sam to popraviti" rizičnije nego što izgleda

Iskušenje je veliko. Problem izgleda jednostavno: pročitaj originalni datum, ispravi metapodatke, prijeđi na sljedeći. Ali između razumijevanja mehanizma i ispravka 12.000 e-mailova u produkciji bez gubitka ijednog postoji znatan jaz.

Neke realnosti koje kućne skripte obično ne anticipiraju:

  • S/MIME potpisani ili PGP šifrirani e-mailovi: svaka izmjena strukture poruke poništava kriptografski potpis. E-mail koji je prolazio provjeru potpisa prije korekcije, ne prolazi je nakon. Korisnici u regulatornom okruženju (odvjetničke kancelarije, financijski sektor, zdravstvo) otkrivaju ovaj problem u najgorem trenutku.
  • Non-ASCII zaglavlja i RFC 2047 kodiranje: cPanel pretinci nakupljaju godine e-mailova s raznovrsnih e-mail klijenata. Neka zaglavlja sadrže znakove kodirane prema RFC 2047. Loše napisana skripta koja rekonstruira zaglavlja može nevidljivo pokvariti ta kodiranja.
  • Ugniježđene MIME strukture: e-mail s tri privitka i alternativnim HTML tijelom ima složenu multipart strukturu. Najmanji propust na MIME granicama čini poruku nečitljivom, ili još gore: privici nestaju bez poruke o grešci.
  • API kvote i ograničenje brzine: Google Workspace i Microsoft 365 nameću stroga ograničenja na broj IMAP operacija u minuti. Skripta koja ne implementira ispravno eksponencijalni backoff okida greške 429 u 3 ujutro, i budite se s napola završenom migracijom, ne znajući točno gdje se zaustavila.
  • Povrat nemoguć: ako nešto pođe po krivu na pola puta, u koje stanje se vraćate? Jesu li originali još tu? Imate li duplikate? Redate.io čuva originale u vidljivoj sigurnosnoj kopiji 30 dana, upravo kako nikad ne biste dospjeli u tu situaciju.

Skripta koja radi na 50 test e-mailova u razvojnom okruženju neće nužno raditi na 18.000 poruka produkcionog pretinca naslijeđenog s cPanel hostinga od 2011.

Kako Redate.io ispravlja datume nakon migracije s cPanela

Redate.io se spaja izravno na odredišni pretinac (Google Workspace putem domenskih ovlaštenja, Microsoft 365 putem Azure AD, ili direktno na IMAP server) i počinje besplatnim skeniranjem radi identifikacije e-mailova čiji su metapodaci o datumu neusklađeni s originalnim zaglavljem Date:.

Pipeline višestupanjske analize zatim primjenjuje prepoznavanje uzoraka na potpise zaglavlja Received: radi identifikacije onih koje su uveli alati za migraciju (i razlikovanja od legitimnih zaglavlja). Ciljana korekcija metapodataka provodi se bez izmjene sadržaja poruke: tekst, privici, originalna zaglavlja, sve ostaje netaknuto. Svaki ispravljeni e-mail provjerava se pojedinačno prije nego što se operacija potvrdi.

Za migracije s cPanela specifično, engine prepoznaje tipične potpise migracija Dovecot-prema-IMAP i imapsync skripti, uključujući uobičajene varijante konfiguracija kod europskih hostingaša na dijeljenom hostingu.

Specifični vodiči prema Vašem odredištu

Ovisno o odredišnoj platformi Vaše cPanel migracije, sljedeći vodiči opisuju precizne korake:

Migrirali ste s cPanela i Vaši korisnici vide neispravne datume? Pokrenite besplatno skeniranje na Redate.io kako biste identificirali točno koliko je e-mailova pogođeno, bez ikakvih izmjena prije Vašeg odobrenja.

Povezani članci