Otvorili ste svoju arhivu Google Takeout, uvezli mbox datoteku u Thunderbird pomoću ImportExportTools NG (ili u Apple Mail), a zatim povukli mape na svoj novi IMAP račun. U klijentu su e-mailovi bili posloženi godinu po godinu. Na odredišnom računu svi su datirani današnjim danom. Ovaj članak objašnjava što se događa s uvezenim Takeout mbox arhivom, zašto je prikazani datum zapravo datum kopiranja, kako to potvrditi za nekoliko minuta i kako ga ispraviti na strani poslužitelja.
Prva stvar koju treba znati: vaši e-mailovi nisu stradali. Izvorni datum i dalje stoji u poruci. Samo što to više nije datum koji odredišni račun ističe.
Tipičan scenarij uvezenog Takeout mbox arhiva
Upravo ste zatvorili osobni Gmail račun, otvoren prije petnaest godina. Zatražili ste izvoz na takeout.google.com, čekali Googleovu poruku (dva dana za veliki poštanski sandučić) i preuzeli četiri zip arhive. U svakoj je po jedna .mbox datoteka za svaku oznaku. Uvezete ih u Thunderbird: lokalna mapa se puni, sortiranje po datumu je savršeno, 2009. na dnu, jučer na vrhu.
Zatim napravite ono što bi napravio svatko. Označite mape i povučete ih na odredišni IMAP račun, bio to Microsoft 365, hosting ili Google Workspace. Prijenos traje cijelu večer. U ponedjeljak ujutro otvorite webmail.
Problem? Svih 18.400 e-mailova datirano je vikendom, unutar nekoliko sati. Ugovor iz 2014. našao se pokraj newslettera od prošlog tjedna i više nitko ništa ne može pronaći kronološkim redom.
Slučaj je vrlo blizak onome starih e-mailova koji svi imaju isti datum, uz jednu bitnu razliku: ovdje nikakav alat za migraciju nije upleten. Dovoljno je povlačenje mišem.
Tri datuma u jednom e-mailu
Da biste razumjeli, morate prestati govoriti o "datumu" e-maila. Poruka uvezena iz mbox datoteke nosi barem tri datuma, a služe za različite stvari.
Zaglavlje Date: datum pošiljatelja
To je zaglavlje Date: definirano u RFC-u 2822 (preuzeto u RFC 5322). Klijent pošiljatelja upisuje ga u trenutku slanja, primjerice Date: Tue, 14 Mar 2017 09:12:45 +0100. Ono je dio poruke, putuje s njom, a Takeout ga čuva onakvim kakvo jest. Upravo ono ispravak čini mogućim, jer ostaje netaknuto.
Redak From u mbox datoteci: fasadni datum
U mbox datoteci svakoj poruci prethodi redak koji počinje s From (s razmakom, bez dvotočke). To nije zaglavlje: to je separator svojstven formatu datoteke i ne pripada poruci. Nijedan ozbiljan alat ne bi se smio na njega oslanjati pri datiranju e-maila.
INTERNALDATE: datum polaganja na poslužitelj
Treći datum, i najnenametljiviji: INTERNALDATE, definiran u RFC-u 3501. To je atribut koji IMAP poslužitelj pohranjuje uz poruku (ne u njoj) i odgovara trenutku kada je poruka položena u poštanski sandučić. Outlook, webmailovi i mobiteli koriste ga za prikaz i sortiranje datuma primitka. Mehanizam podrobnije opisuje članak o INTERNALDATE-u i pogrešnim datumima u IMAP-u.
Pojašnjenje o zaglavljima Received:, koja se ovdje često krivo optužuju. Retci Received u izvezenom Gmail e-mailu pričaju stvarni put poruke 2017. godine: nose stare i posve legitimne datume. Pogrešan datum u ovom slučaju dakle ne živi u poruci, nego u metapodacima koje poslužitelj dodjeljuje kopiji.
Zašto odredišni račun prikazuje datum kopiranja
Kada klijent položi poruku na IMAP poslužitelj, koristi naredbu APPEND. Ta naredba opcionalno prihvaća datum koji treba dodijeliti poruci. Ako ga klijent pošalje, poslužitelj ga zadržava kao INTERNALDATE. Ako ne, poslužitelj primjenjuje pravilo iz RFC-a 3501: trenutni datum i vrijeme. Drugim riječima, prikazani datum ovisi o tome kako je alat zapisao e-mail. Alat koji ne prenese izvorni datum dobiva datum kopiranja.
Rezultat: dok povlačite mape, svaka poruka dobiva datum vlastitog polaganja. Mapa od 3.000 e-mailova kopirana 40 minuta pada u prozor od 40 minuta.
A lokalna mapa Thunderbirda? Izgledala je savršeno jer Thunderbird u njoj sortira po zaglavlju Date, a ne po datumu poslužitelja, budući da lokalna mapa nema poslužitelja. Apple Mail se sa uvezenim sandučićima ponaša slično: sve je u redu dok poruke ostaju na Macu. Istina izlazi na vidjelo kad drugi program, recimo Outlook, pročita IMAP sandučić.
Zapravo, nije posve točno reći da se svi klijenti uvijek varaju. Neke verzije prenose datum, druge ne, a ponašanje se mijenjalo kroz ažuriranja. Zato dvoje kolega koji slijede istu metodu mogu dobiti različite rezultate, zbog čega je dijagnoza zbunjujuća više nego što se čini.
Povlačenje mapa nije migracija. To je kopija, a kopija nosi datum svoje izrade.
Kako prepoznati ovaj slučaj za pet minuta
Prije traženja rješenja potvrdite da ste doista u ovom scenariju, a ne u nekom drugom. Dovoljne su četiri provjere.
- Usporedite ta dva mjesta. Lokalna mapa Thunderbirda (ili uvezeni sandučić Apple Maila) prikazuje točne datume, a IMAP račun za iste poruke nedavne datume.
- Pogledajte raspon. U mapi IMAP računa datumi primitka stanu u nekoliko sati, pa čak i minuta, oko trenutka kada ste premjestili mape.
- Otvorite izvor poruke. U Thunderbirdu Prikaz pa Izvor poruke; u Outlooku svojstva poruke daju zaglavlja. Ondje morate pronaći star redak
Date:, dok prikaz pokazuje nedavni datum. - Provjerite redoslijed. Poruke se pojavljuju redoslijedom kojim ih je klijent kopirao, a ne kronološkim.
Evo što usporedba daje na stvarnoj poruci:
Date: Tue, 14 Mar 2017 09:12:45 +0100 (u poruci, netaknuto)
Datum koji prikazuje IMAP račun: dan kopiranja (metapodatak poslužitelja)
Ako ta dva retka ne pričaju istu priču, u pravom ste slučaju. A ako su prikazani datumi krivi, ali je i Date: kriv, riječ je o drugom, rjeđem problemu koji ne spada u ovaj članak.
(Uzgred, ako nikada niste čitali neobrađena zaglavlja e-maila, pripremite kavu: to nije baš lektira za plažu.)
Sortiranje po datumu slanja: samo flaster
Prvi je refleks prebaciti sortiranje na datum slanja. U Outlooku to otprilike radi, pod uvjetom da se ponovi na svakoj mapi i na svakom uređaju. No pretraživanje, obavijesti, pravila temeljena na starosti i prikazi na mobitelu i dalje koriste datum primitka. Korisnik koji na mobitelu traži "mail iz rujna prošle godine" neće vidjeti ništa logično.
Još jedan primamljiv trag: ponoviti kopiranje. Na računu koji se već koristi to uglavnom stvara duplikate pokraj već prisutnih poruka, s istim pogrešnim datumima ili nekim drugim. Stotinjak mapa kasnije nemate više nijedan čist sandučić.
Ispravak na strani poslužitelja
Dobra vijest je da je izvorni datum još uvijek tu. Ispravak se svodi na to da ga odredišni račun počne prikazivati, bez diranja sadržaja vaših poruka.
To radi Redate. Servis se povezuje s poštanskim sandučićem (Google Workspace preko delegiranja domene, Microsoft 365, Outlook.com i Hotmail s Microsoftovim računom svake osobe, ili izravni IMAP s adresom i lozinkom). Redate ne treba znati koji je alat uzrokovao problem: pronalazi e-mailove čiji se prikazani datum ne poklapa s njihovim izvornim datumom, bilo da je uzrok povlačenje iz Takeout mbox arhiva ili nešto drugo. Skeniranje poštanskog sandučića je besplatno i pokazuje vam opseg štete prije bilo kakve odluke.
Za sam ispravak Redate se oslanja na vlastiti mehanizam ispravka, višefazni analitički cjevovod koji ispituje lanac zaglavlja svake poruke i svakom e-mailu vraća njegov izvorni datum. Svaki ispravljeni e-mail zatim se pojedinačno provjerava, uz validaciju usklađenosti s RFC-om i očuvanje strukture poruke. Izvornici se nikada ne brišu: ostaju u vidljivoj mapi vašeg poštanskog sandučića dok ih sami ne obrišete.
Zašto je samostalno majstorisanje rizično
Razumjeti problem jedno je. Ispraviti ga na 15.000 e-mailova bez gubitka i jednog jedinog, sasvim je drugo.
Skripta koja radi na deset testnih poruka ne preživljava produkcijski sandučić od 30.000 poruka. Naiđe na potpisane S/MIME e-mailove, kojima i najmanja izmjena kvari potpis. Na šifrirane PGP poruke. Na ugniježđene multipart/alternative strukture, nedosljedne MIME granice, neočekivane Content-Transfer-Encoding vrijednosti, ne-ASCII zaglavlja kodirana po RFC-u 2047, privitke od 40 MB. Zatim dolaze API kvote, pogreška 429 Too Many Requests u 3 ujutro usred batcha, mrežni timeouti koji prekidaju operaciju na poruci 11.874.
I što onda? Kako znati da je svaka poruka netaknuta? Bez mehanizma za povrat (rollback), jedna pogreška ostavlja duple poruke, izgubljene privitke, razbijene niti razgovora, nestale oznake. Redate automatski kontrolira svaki e-mail i drži izvornik na dohvat ruke, upravo da ne biste nikada morali kockati s tim.
Još jedan besplatan savjet: sačuvajte svoje izvorne Takeout arhive dok sandučić ne bude potvrđen. Mbox datoteka ostaje referentna kopija, čak i kad odredišni račun izgleda ispravno.
Vodiči povezani s vašim klijentom
Ovisno o klijentu kojim ste kopirali, sljedeći detaljni vodiči opisuju točan slučaj: ispravak datuma IMAP kopije napravljene u Thunderbirdu i isti slučaj u Apple Mailu.
Vaš je Takeout već kopiran na IMAP račun, a datumi su pogrešni? Pokrenite besplatno Redate skeniranje da vidite koliko je e-mailova pogođeno, a zatim ih ispravite jednokratnom uplatom, bez ograničenja veličine poštanskog sandučića.