Takeout mbox: svi mejlovi imaju današnji datum

8 min čitanja

Otvorili ste arhivu Google Takeout, uvezli mbox datoteku u Thunderbird pomoću ImportExportTools NG (ili u Apple Mail), pa prevukli foldere na novi IMAP nalog. U klijentu su mejlovi bili lepo poređani po godinama. Na odredišnom nalogu svi nose današnji datum. Ovaj članak objašnjava šta se dešava sa uvezenim Takeout mbox-om, zašto je prikazani datum zapravo datum kopiranja, kako to da potvrdite za nekoliko minuta i kako da ga ispravite na serveru.

Prvo što treba da znate: vaši mejlovi su netaknuti. Originalni datum je i dalje u poruci. Samo što ga odredišni nalog više ne ističe.

Tipičan scenario uvezenog Takeout mbox-a

Upravo ste zatvorili lični Gmail nalog, otvoren pre petnaest godina. Zatražili ste izvoz na takeout.google.com, čekali poruku od Googlea (dva dana za veliko poštansko sanduče) i preuzeli četiri zip arhive. U svakoj je po jedna .mbox datoteka za svaku oznaku. Uvezete ih u Thunderbird: lokalni folder se puni, sortiranje po datumu je savršeno, 2009. je skroz dole, juče skroz gore.

Onda radite ono što bi uradio svako. Selektujete foldere i prevlačite ih na odredišni IMAP nalog, bilo da je to Microsoft 365, hosting provajder ili Google Workspace. Prenos traje celo veče. U ponedeljak ujutru otvarate webmail.

Problem? Svih 18.400 mejlova nosi datum vikenda, u rasponu od nekoliko sati. Ugovor iz 2014. našao se pored newslettera od prošle nedelje i niko više ništa ne može da nađe hronološkim redom.

Slučaj je vrlo blizak onome kada svi stari mejlovi imaju isti datum, uz jednu važnu razliku: ovde nijedan alat za migraciju nije kriv. Dovoljno je prevlačenje mišem.

Tri datuma u jednom mejlu

Da biste razumeli problem, prestanite da govorite o "datumu" mejla u jednini. Poruka uvezena iz mbox datoteke nosi bar tri datuma, i ne služe svi istoj svrsi.

Zaglavlje Date: datum pošiljaoca

To je zaglavlje Date: definisano standardom RFC 2822 (preuzetim u RFC 5322). Klijent pošiljaoca ga upisuje u trenutku slanja, na primer Date: Tue, 14 Mar 2017 09:12:45 +0100. Ono je deo poruke, putuje sa njom, a Takeout ga čuva onakvim kakvo jeste. Upravo zato je ispravka moguća, jer ostaje netaknuto.

Linija From u mbox datoteci: datum za izlog

U mbox datoteci svakoj poruci prethodi linija koja počinje sa From (sa razmakom, bez dvotačke). To nije zaglavlje: to je separator svojstven formatu datoteke i ne pripada poruci. Nijedan ozbiljan alat ne bi smeo da se oslanja na nju pri određivanju datuma.

INTERNALDATE: datum odlaganja na serveru

Treći datum, i najdiskretniji, jeste INTERNALDATE, definisan standardom RFC 3501. To je atribut koji IMAP server čuva pored poruke (ne u njoj) i odgovara trenutku kada je poruka odložena u poštansko sanduče. Outlook, webmail klijenti i telefoni koriste ga za prikaz i sortiranje datuma prijema. Za detalje mehanizma pogledajte članak o tome zašto se INTERNALDATE i datumi kvare u IMAP-u.

Jedna napomena o zaglavljima Received:, koja se ovde često pogrešno okrivljuju. Linije Received u izvezenom Gmail mejlu pričaju pravi put poruke iz 2017: nose stare i legitimne datume. U ovom slučaju pogrešan datum, dakle, ne živi u poruci, nego u metapodacima koje server dodeljuje kopiji.

Zašto odredišni nalog prikazuje datum kopiranja

Kada klijent odlaže poruku na IMAP server, koristi komandu APPEND. Ta komanda opciono prihvata datum koji treba dati poruci. Ako ga klijent pošalje, server ga pamti kao INTERNALDATE. U suprotnom server primenjuje pravilo iz RFC 3501: trenutni datum i vreme. Drugim rečima, prikazani datum zavisi od toga kako je alat upisao mejl. Alat koji ne prosleđuje originalni datum dobija datum kopije.

Posledica: dok prevlačite foldere, svaka poruka dobija datum sopstvenog odlaganja. Folder od 3.000 mejlova kopiran za 40 minuta upada u prozor od 40 minuta.

A lokalni folder u Thunderbirdu? Izgledao je savršeno jer Thunderbird u njemu sortira po zaglavlju Date, a ne po datumu servera, pošto lokalni folder nema server. Apple Mail se slično ponaša sa uvezenim sandučićima: sve je u redu dokle god poruke ostaju na Macu. Istina izlazi na videlo kada drugi program, recimo Outlook, pročita IMAP poštansko sanduče.

Zapravo, nije baš tačno reći da se svi klijenti uvek greše. Neke verzije prosleđuju datum, druge ne, a ponašanje se menjalo kroz ažuriranja. Zato dva kolege koji rade istom metodom mogu dobiti različite rezultate, što dijagnozu čini zbunjujućom više nego što izgleda.

Prevlačenje nije migracija. To je kopiranje, a kopija nosi datum svog nastanka.

Kako prepoznati ovaj slučaj za pet minuta

Pre nego što potražite rešenje, potvrdite da ste zaista u ovom scenariju, a ne u nekom drugom. Dovoljne su četiri provere.

  • Uporedite dva mesta. Lokalni folder u Thunderbirdu (ili uvezeno sanduče u Apple Mailu) prikazuje tačne datume, a IMAP nalog za iste poruke prikazuje nedavne.
  • Pogledajte raspon. U jednom folderu IMAP naloga datumi prijema staju u nekoliko sati, čak i nekoliko minuta, oko trenutka kada ste premeštali foldere.
  • Otvorite izvor poruke. U Thunderbirdu: Prikaz, pa Izvor poruke; u Outlooku zaglavlja se vide u svojstvima poruke. Tu treba da nađete staru liniju Date: dok prikaz pokazuje skorašnji datum.
  • Proverite redosled. Poruke se pojavljuju redom kojim ih je klijent kopirao, a ne hronološki.

Evo kako izgleda poređenje na jednoj stvarnoj poruci:

Date: Tue, 14 Mar 2017 09:12:45 +0100          (u poruci, netaknut)
Datum prikazan na IMAP nalogu: dan kopiranja   (metapodatak servera)

Ako ove dve linije ne pričaju istu priču, pogodili ste. A ako su prikazani datumi pogrešni, ali je i Date: pogrešan, to je neki drugi, ređi problem koji ne spada u ovaj članak.

(Usput, ako nikada niste čitali sirova zaglavlja mejla, spremite kafu: to baš nije lektira za plažu.)

Sortiranje po datumu slanja: samo flaster

Prvi refleks je da se sortiranje prebaci na datum slanja. U Outlooku to uglavnom radi, pod uslovom da se ponovi za svaki folder i na svakom uređaju. Ali pretraga, obaveštenja, pravila zasnovana na starosti i prikazi na mobilnom i dalje koriste datum prijema. Korisnik koji na telefonu traži "mejl iz septembra prošle godine" neće videti ništa logično. O tome više u članku sortiranje po datumu slanja nije rešenje.

Drugo mamljivo rešenje: ponoviti kopiranje. Na nalogu koji se već koristi to uglavnom pravi duplikate pored već postojećih poruka, sa istim pogrešnim datumima ili nekim drugim. Stotinak foldera kasnije nemate nijedno čisto poštansko sanduče.

Ispravka na strani servera

Dobra vest je da je originalni datum i dalje tu. Ispravka znači da odredišni nalog počne da ga prikazuje, bez diranja sadržaja vaših poruka.

To radi Redate. Servis se povezuje sa poštanskim sandučetom (Google Workspace preko delegiranja domena, Microsoft 365, Outlook.com i Hotmail preko Microsoft naloga svake osobe, ili direktan IMAP sa adresom i lozinkom). Redate ne mora da zna koji je alat izazvao problem: on pronalazi mejlove čiji se prikazani datum ne poklapa sa originalnim, bez obzira da li je uzrok prevlačenje iz Takeout mbox-a ili nešto drugo. Skeniranje je besplatno i pokazuje razmere štete pre bilo kakve odluke.

Za samu ispravku Redate koristi sopstveni mehanizam za ispravku, višestepeni analitički pipeline koji ispituje lanac zaglavlja svake poruke i vraća svakom mejlu njegov originalni datum. Svaki ispravljen mejl se zatim pojedinačno proverava, uz validaciju usklađenosti sa RFC standardima i očuvanje strukture poruke. Originali se nikada ne brišu: ostaju u vidljivom folderu vašeg poštanskog sandučeta dok ih sami ne obrišete.

Zašto je snalaženje na svoju ruku rizično

Razumeti problem je jedno. Ispraviti ga na 15.000 mejlova bez gubitka i jednog jedinog, sasvim je drugo.

Skripta koja radi na deset probnih poruka ne preživljava produkciono poštansko sanduče od 30.000 poruka. Naiđe na potpisane S/MIME mejlove, kojima svaka izmena lomi potpis. Na šifrovane PGP poruke. Na ugnežđene multipart/alternative strukture, nedosledne MIME granice, neočekivane Content-Transfer-Encoding vrednosti, non-ASCII zaglavlja kodirana po RFC 2047, priloge od 40 MB. Zatim stižu API kvote, greška 429 Too Many Requests u 3 ujutru usred batch-a, mrežni timeout-i koji prekidaju operaciju na poruci 11.874.

I šta onda? Kako znati da je svaka poruka ostala čitava? Bez mehanizma za povratak, jedna greška ostavlja duple poruke, izgubljene priloge, pokidane niti razgovora, nestale oznake. Redate automatski kontroliše svaki mejl i drži original na dohvat ruke, upravo da ne biste morali da se kockate.

Još jedan savet, besplatan: sačuvajte originalne Takeout arhive dok poštansko sanduče ne bude potvrđeno. Mbox datoteka ostaje referentna kopija, čak i kada odredišni nalog izgleda u redu.

Zavisno od klijenta kojim ste kopirali, sledeći detaljni vodiči opisuju konkretan slučaj: popravak datuma ručnog IMAP kopiranja u Thunderbird i isti slučaj u Apple Mail-u.

Takeout je već kopiran na IMAP nalog, a datumi su pogrešni? Pokrenite besplatno Redate skeniranje da vidite koliko je mejlova pogođeno, pa ih ispravite jednokratnom uplatom, bez ograničenja veličine poštanskog sandučeta.

Povezani članci