Pogrešni datumi emailova posle migracije sa cPanela

7 min

Ponedeljak ujutru koji boli

Upravo ste završili migraciju sa deljenog cPanel hostinga na Google Workspace ili Microsoft 365. Sve je prošlo kako treba, sanduciči su dostupni, korisnici se prijavljuju bez problema. A onda, oko 9:15, stiže prvi tiket: "Svi moji stari emailovi prikazuju isti datum, onaj od prošlog vikenda." Zatim drugi. Zatim deset.

Ovo nije izolovan bag. To je direktna posledica načina na koji migracije sa cPanela tretiraju (ili tačnije, ne tretiraju) metapodatke o datumu emailova.

cPanel, Roundcube, Horde: specifičan IMAP kontekst

Deljeni cPanel hosting je Linux server koji pokreće IMAP server (najčešće Dovecot) sa Roundcube ili Horde interfejsom za webmail. Ništa egzotično. Ali ovaj kontekst ima nekoliko specifičnosti koje migracije prema enterprise platformama čine delikatnijim nego što izgledaju na prvi pogled.

Pre svega, cPanel sandučići često akumuliraju emailove godinama, ponekad deceniju. Klijent koji je hosting koristio od 2014. može imati veoma duboke arhive. Taj volumen, u kombinaciji sa načinom na koji se migracija izvodi, stvara plodno tlo za problem sa datumima.

Pored toga, alati koji se koriste za ove migracije su najčešće ili ugrađeni WHM alat za migraciju, ili imapsync pokrenut iz komandne linije od strane hostera ili IT provajdera, ili rešenja poput GSMMO za migraciju na Google Workspace.

Zašto su datumi pokvareni posle migracije sa cPanela

Da bismo razumeli problem, treba razlikovati dva zasebna koncepta: zaglavlje Date: emaila i IMAP INTERNALDATE.

Zaglavlje Date: je upisano u sirovo telo poruke u trenutku slanja, u skladu sa RFC 2822 standardom. Označava kada je email napisan i poslat. Ovo zaglavlje se nikad ne menja, osim namerne manipulacije porukom.

INTERNALDATE je, pak, metapodatak koji IMAP server pridružuje svakoj uskladištenoj poruci. On je odvojen od sadržaja poruke. Kada email normalno stigne na server, INTERNALDATE se postavlja na osnovu Received: zaglavlja poruke, ili na datum prijema ako je poruka direktno dostavljena. Ovu vrednost Outlook, Thunderbird i većina email klijenata koristi za sortiranje poruka.

Tokom IMAP migracije, poruke se kopiraju sa jednog servera na drugi. Problem je što alat za migraciju mora da kreira svaku poruku na odredišnom serveru. I kod većine alata, INTERNALDATE novokreirane poruke odgovara datumu migracije, a ne originalnom datumu poruke. Uz to, zaglavlje Received: sa vremenskim pečatom datuma migracije dodaje se na vrh lanca zaglavlja, što dodatno zbunjuje email klijente koji ga koriste za izračunavanje datuma prikaza.

Rezultat: email iz 2019. stiže na Google Workspace sa INTERNALDATE postavljenim na dan migracije i zaglavljem Received: sa pečatom od juče. Outlook ga prikazuje u prijemnom sandučiću kao da je upravo stigao. Čitava hronologija arhive je uništena.

WHM / cPanel alat za migraciju

Ugrađeni WHM alat za migraciju cPanel naloga na drugu platformu generiše ovaj problem gotovo sistematski kada je odredište eksterni IMAP server (Google Workspace, Microsoft 365). On kopira sadržaj Maildir foldera na novi server putem IMAP APPEND bez čuvanja originalnog INTERNALDATE. Svaka poruka tako dobija vremenski pečat trenutka operacije.

imapsync i ručne migracije sa cPanela

imapsync je moćan alat, ali njegovo podrazumevano ponašanje ne čuva uvek datume. Bez pravih parametara (i prave verzije), može sasvim lepo da kopira 40.000 poruka i svima dodeli datum izvršavanja skripte. (Inače, ako ste ikad pregledali imapsync logove liniju po liniju kako biste dijagnostikovali problem sa datumima u sandučiću od 25.000 poruka, znate da je to iskustvo koje ne želite da ponovite.)

Da budemo precizni: imapsync ima opcije za pokušaj čuvanja datuma, ali te opcije različito interaguju u zavisnosti od izvornog i odredišnog servera, i njihova efikasnost nije zagarantovana na svim cPanel / Dovecot konfiguracijama.

GSMMO i alati za opštu upotrebu

Google Workspace Migration for Microsoft Outlook (GSMMO) je namenjen migraciji iz Outlooka, ne sa golog IMAP servera. Kada se koristi za migraciju sa cPanela (putem IMAP naloga konfigurisanog u Outlooku), datumi prolaze kroz isti tretman: INTERNALDATE na Google Workspace-u se postavlja na datum migracije. Problem GSMMO i datuma emailova dokumentovan je zasebno, toliko je čest.

Koji email klijenti su pogođeni?

Korupcija datuma ne manifestuje se na isti način u svim klijentima.

Outlook je najteže pogođen klijent. On koristi INTERNALDATE (ili Received: zaglavlje migracije) kao glavni kriterijum sortiranja foldera. Posle loše izvedene cPanel migracije, sandučić u Outlooku može prikazivati hiljade arhiviranih emailova sa datumom vikenda migracije. Ispravka datuma imapsync u Outlooku jedna je od najčešće traženih korekcija.

Gmail (Google Workspace) u listi emailova obično prikazuje datum iz zaglavlja Date:, ali sortiranje može biti svejedno pogođeno INTERNALDATE vrednošću u nekim situacijama. Korisnici prijavljuju erratično ponašanje pri pretrazi i sortiranju po datumu.

Apple Mail i Thunderbird imaju nijansiranija ponašanja, ali ni jedan ni drugi nisu imuni na problem, naročito kada je Received: zaglavlje migracije prisutno na vrhu lanca.

Dobra vest: originalni datum je i dalje tu

To je tehnički detalj koji sve menja. Originalno zaglavlje Date: poruke upisano je u sirovo telo emaila. Migracija ga ne dira. Kada otvorite pogođeni email i pogledate sirova zaglavlja (u Gmailu: "Prikaži original", u Outlooku: Fajl > Svojstva), vidite netaknuti originalni Date:, iza kojeg sledi jedno ili više Received: zaglavlja od kojih prvo nosi datum migracije.

Ova informacija je uvek prisutna. Može se iskoristiti za ispravku metapodataka. Upravo to radi Redate.io motor za korekciju.

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

Iskušenje je veliko. Problem izgleda jednostavno: pročitaj originalni datum, ispravi metapodatke, pređi na sledeći. Ali između razumevanja mehanizma i ispravke 12.000 emailova u produkciji bez gubitka ijednog, razlika je ogromna.

Nekoliko realnosti koje domaće skripte obično ne predviđaju:

  • S/MIME potpisani ili PGP šifrovani emailovi: svaka izmena strukture poruke poništava kriptografski potpis. Email koji je prolazio verifikaciju potpisa pre korekcije više je ne prolazi posle. Korisnici iz regulatorno usklađenih sektora (advokatske kancelarije, finansije, zdravstvo) otkrivaju ovaj problem u najgorem trenutku.
  • Non-ASCII zaglavlja i RFC 2047 enkodiranje: cPanel sandučići akumuliraju godine emailova koji dolaze iz raznovrsnih klijenata. Neka zaglavlja sadrže karaktere enkodirane po RFC 2047 standardu. Loše napisana skripta koja rekonstruiše zaglavlja može nevidljivo pokvariti te enkodinacije.
  • Ugnježdene MIME strukture: email sa tri priloga i alternativnim HTML telom ima kompleksnu multipart strukturu. Najmanji previd na MIME granicama čini poruku nečitljivom, ili što je još gore, priloži nestaju bez poruke o grešci.
  • API kvote i ograničenje brzine: Google Workspace i Microsoft 365 nameću stroge limite na broj IMAP operacija po minutu. Skripta koja ne implementuje korektno eksponencijalni backoff generiše 429 greške u 3 ujutru, i budite se sa napola završenom migracijom za koju ne znate tačno gde je stala.
  • Nemoguće poništavanje: ako nešto krene naopako na pola puta, u kakvo stanje se vraćate? Da li su originali još tu? Imate li duplikate? Redate.io čuva originale u vidljivom backup folderu tokom 30 dana, upravo kako se ne bi nikad dospelo u tu situaciju.

Skripta koja radi na 50 test emailova u dev okruženju neće nužno raditi na 18.000 poruka produkcijskog sandučića koji je nasleđen sa cPanel hostinga od 2012.

Kako Redate.io ispravlja datume posle migracije sa cPanela

Redate.io se direktno konektuje na odredišni sandučić (Google Workspace putem domenskog delegiranja, Microsoft 365 putem Azure AD, ili direktni IMAP server) i počinje besplatnim skeniranjem kako bi identifikovao emailove čiji metapodaci o datumu nisu konzistentni sa originalnim zaglavljem Date:.

Višefazni analitički pipeline zatim primenjuje prepoznavanje obrazaca na potpise Received: zaglavlja kako bi identifikovao ona koja su uvela alati za migraciju (i razlikovao ih od legitimnih zaglavlja). Ciljana korekcija metapodataka vrši se bez izmene sadržaja poruke: tekst, prilozi, originalna zaglavlja, sve ostaje netaknuto. Svaki ispravljen email se pojedinačno verifikuje pre nego što se operacija potvrdi.

Za migracije sa cPanela konkretno, motor prepoznaje tipične potpise Dovecot-prema-IMAP migracija i imapsync skripti, uključujući varijante konfiguracije uobičajene kod evropskih deljenih hostera.

Specifični vodiči prema Vašoj odredišnoj platformi

U zavisnosti od odredišne platforme Vaše cPanel migracije, sledeći vodiči opisuju precizne korake:

Migrirali ste sa cPanela i Vaši korisnici vide pogrešne datume? Pokrenite besplatno skeniranje na Redate.io kako biste tačno identifikovali koliko emailova je pogođeno, bez ikakvih izmena pre Vašeg odobrenja.

Повезани чланци