Otvorili ste archív Google Takeout, súbor mbox ste naimportovali do Thunderbirdu pomocou ImportExportTools NG (alebo do Apple Mail) a potom ste priečinky presunuli myšou do nového účtu IMAP. V klientovi boli e-maily úhľadne zoradené rok po roku. Na cieľovom účte majú všetky dnešný dátum. Tento článok vysvetľuje, čo sa deje pri importovanom Takeout mbox, prečo sa zobrazuje dátum kópie, ako to potvrdiť za pár minút a ako to opraviť na strane servera.
Prvá vec, ktorú treba vedieť: vaše e-maily sú v poriadku. Pôvodný dátum je stále v správe. Cieľový účet ho len už nezobrazuje.
Typický scenár importovaného Takeout mbox
Práve ste zrušili osobný účet Gmail, ktorý ste mali pätnásť rokov. Export ste si vyžiadali na takeout.google.com, počkali na správu od Googlu (pri veľkej schránke aj dva dni) a stiahli štyri archívy zip. V každom je jeden súbor .mbox na každý štítok. Naimportujete ich do Thunderbirdu: lokálny priečinok sa naplní, zoradenie podľa dátumu je dokonalé, rok 2009 celkom dole, včerajšok celkom hore.
Potom urobíte to, čo by urobil každý. Označíte priečinky a presuniete ich do cieľového účtu IMAP, či už je to Microsoft 365, hosting alebo Google Workspace. Prenos trvá celý večer. V pondelok ráno otvoríte webmail.
Problém? Všetkých 18 400 e-mailov má dátum z víkendu, v rozpätí pár hodín. Zmluva z roku 2014 leží vedľa newslettera z minulého týždňa a v chronologickom poradí už nikto nič nenájde.
Prípad je veľmi podobný situácii, keď staré e-maily majú všetky rovnaký dátum, s jedným zásadným rozdielom: tu nie je na vine žiadny migračný nástroj. Stačí presunutie myšou.
Tri dátumy v jednom e-maile
Aby to dávalo zmysel, treba prestať hovoriť o "dátume" e-mailu v jednotnom čísle. Správa importovaná zo súboru mbox nesie aspoň tri dátumy a každý slúži na iné veci.
Hlavička Date: dátum odosielateľa
Ide o hlavičku Date: definovanú v RFC 2822 (prevzatej do RFC 5322). Klient odosielateľa ju zapíše pri odoslaní, napríklad Date: Tue, 14 Mar 2017 09:12:45 +0100. Je súčasťou správy, putuje s ňou a Takeout ju zachová v nezmenenej podobe. Práve preto je oprava možná: hlavička zostáva neporušená.
Riadok From v súbore mbox: fasádny dátum
V súbore mbox pred každou správou stojí riadok začínajúci sa From (s medzerou, bez dvojbodky). Nie je to hlavička, ale oddeľovač špecifický pre formát súboru, ktorý nepatrí do správy. Žiadny seriózny nástroj by sa naň nemal spoliehať pri určovaní dátumu e-mailu.
INTERNALDATE: dátum uloženia na server
Tretí dátum, ten najnenápadnejší: INTERNALDATE, definovaný v RFC 3501. Je to atribút, ktorý server IMAP uchováva vedľa správy (nie v nej) a zodpovedá času, kedy bola správa uložená do schránky. Outlook, webmaily aj telefóny ho používajú na zobrazenie a triedenie dátumu prijatia. Podrobnosti o mechanizme nájdete v článku o INTERNALDATE a nesprávnych dátumoch v IMAP.
Upresnenie k hlavičkám Received:, ktoré sa tu často obviňujú neprávom. Riadky Received exportovaného e-mailu z Gmailu rozprávajú skutočnú cestu správy v roku 2017: nesú staré a legitímne dátumy. Nesprávny dátum teda v tomto prípade nežije v správe, ale v metadátach, ktoré server priradí kópii.
Prečo cieľový účet zobrazuje dátum kópie
Keď klient ukladá správu na server IMAP, použije príkaz APPEND. Ten voliteľne prijíma dátum, ktorý sa má správe priradiť. Ak ho klient pošle, server si ho zapamätá ako INTERNALDATE. Ak nie, server uplatní pravidlo z RFC 3501: aktuálny dátum a čas. Inými slovami, zobrazený dátum závisí od toho, ako nástroj e-mail zapísal. Nástroj, ktorý pôvodný dátum neprenesie, dostane dátum kópie.
Výsledok: kým presúvate priečinky, každá správa dostane dátum vlastného uloženia. Priečinok s 3 000 e-mailmi skopírovaný za 40 minút sa celý zmestí do 40-minútového okna.
A lokálny priečinok Thunderbirdu? Vyzeral perfektne, lebo Thunderbird v ňom triedi podľa hlavičky Date, nie podľa serverového dátumu, keďže lokálny priečinok žiadny server nemá. Apple Mail sa s importovanými schránkami správa podobne: kým správy zostávajú na Macu, všetko sedí. Pravda vyjde najavo v okamihu, keď schránku IMAP načíta iný program, napríklad Outlook.
Vlastne, nie je celkom presné tvrdiť, že sa klienti mýlia vždy. Niektoré verzie dátum prenášajú, iné nie, a správanie sa menilo s aktualizáciami. Dvaja kolegovia, ktorí postupujú rovnako, tak môžu dostať rozdielne výsledky, a diagnostika je potom zmätočnejšia, než by sa zdalo.
Presunutie myšou nie je migrácia. Je to kópia a kópia nesie dátum svojho vzniku.
Ako tento prípad rozpoznať za päť minút
Skôr než začnete hľadať riešenie, overte, že ste naozaj v tomto scenári a nie v inom. Stačia štyri kontroly.
- Porovnajte obe miesta. Lokálny priečinok v Thunderbirde (alebo importovaná schránka v Apple Mail) zobrazuje správne dátumy, účet IMAP pre tie isté správy dátumy nedávne.
- Pozrite sa na rozpätie. V priečinku účtu IMAP sa dátumy prijatia zmestia do niekoľkých hodín, dokonca minút, okolo momentu, keď ste priečinky presúvali.
- Otvorte zdroj správy. V Thunderbirde Zobraziť, potom Zdroj správy; v Outlooku hlavičky nájdete vo vlastnostiach správy. Mali by ste tam nájsť starý riadok
Date:, hoci zobrazený dátum je nedávny. - Skontrolujte poradie. Správy sa objavujú v poradí, v akom ich klient kopíroval, nie v chronologickom poradí.
Takto vyzerá porovnanie na skutočnej správe:
Date: Tue, 14 Mar 2017 09:12:45 +0100 (v správe, nedotknutý)
Dátum zobrazený účtom IMAP: deň kopírovania (metadáta servera)
Ak tieto dva riadky nehovoria o tom istom, ste na správnom mieste. A ak sú zobrazené dátumy nesprávne, ale aj Date: je nesprávny, ide o iný, zriedkavejší problém, ktorý sem nepatrí.
(Mimochodom, ak ste ešte nikdy nečítali surové hlavičky e-mailu, pripravte si kávu: nie je to práve plážové čítanie.)
Triedenie podľa dátumu odoslania: len náplasť
Prvý reflex je prepnúť triedenie na dátum odoslania. V Outlooku to približne funguje, ak to zopakujete v každom priečinku a na každom zariadení. Vyhľadávanie, notifikácie, pravidlá založené na veku správ a zobrazenia v mobile však naďalej používajú dátum prijatia. Používateľ, ktorý na telefóne hľadá "e-mail zo septembra minulého roka", neuvidí nič logické. Viac k tomu v článku Triedenie podľa dátumu odoslania nie je riešenie.
Ďalší lákavý nápad: zopakovať kópiu. Na už používanom účte to vyrobí hlavne duplikáty vedľa existujúcich správ, s tými istými nesprávnymi dátumami alebo inými. Po sto a niečo priečinkoch nemáte ani jednu čistú schránku.
Oprava na strane servera
Dobrá správa je, že pôvodný dátum tam stále je. Oprava spočíva v tom, aby ho cieľový účet zobrazoval, bez zásahu do obsahu vašich správ.
Presne to robí Redate. Služba sa pripojí k poštovej schránke (Google Workspace cez delegovanie domény, Microsoft 365, Outlook.com a Hotmail s kontom Microsoft každej osoby, alebo priamo cez IMAP s adresou a heslom). Nepotrebuje vedieť, ktorý nástroj problém spôsobil: nájde e-maily, ktorých zobrazený dátum nezodpovedá ich pôvodnému dátumu, či už príčinou bolo presunutie myšou z Takeout mbox, alebo niečo iné. Skenovanie je bezplatné a ukáže vám rozsah škôd ešte pred akýmkoľvek rozhodnutím.
Samotnú opravu zabezpečuje vlastný korekčný nástroj, viacstupňová analytická linka, ktorá skúma reťazec hlavičiek každej správy a vracia každému e-mailu jeho pôvodný dátum. Každý opravený e-mail sa potom individuálne overí, vrátane kontroly súladu s RFC a zachovania štruktúry správy. Pôvodné e-maily sa nikdy nemažú: zostávajú vo viditeľnom priečinku vašej poštovej schránky, kým ich sami neodstránite.
Prečo je riešenie na vlastnú päsť riskantné
Pochopiť problém je jedna vec. Opraviť 15 000 e-mailov bez straty jediného je vec druhá.
Skript, ktorý funguje na desiatich testovacích správach, neprežije produkčnú schránku s 30 000 správami. Narazí na podpísané e-maily S/MIME, kde najmenšia úprava zničí podpis. Na šifrované správy PGP. Na vnorené štruktúry multipart/alternative, nekonzistentné hranice MIME, nečakané Content-Transfer-Encoding, nie-ASCII hlavičky kódované podľa RFC 2047, prílohy s 40 MB. A potom prídu kvóty API, chyba 429 Too Many Requests o tretej ráno uprostred dávky, sieťové timeouty, ktoré prerušia operáciu pri správe číslo 11 874.
A čo potom? Ako zistíte, že je každá správa v poriadku? Bez mechanizmu na vrátenie zmien zanechá chyba duplicitné správy, stratené prílohy, rozbité konverzácie, zmiznuté štítky. Redate kontroluje každý e-mail automaticky a pôvodný uchováva po ruke, práve aby ste o tom nikdy nemuseli stávkovať.
Posledná rada, zadarmo: archívy Takeout si nechajte, kým schránku nevalidujete. Súbor mbox zostáva referenčnou kópiou, aj keď cieľový účet vyzerá v poriadku.
Návody podľa vášho klienta
Podľa toho, ktorý klient ste na kopírovanie použili, konkrétny prípad popisujú tieto podrobné návody: oprava dátumov manuálnej kópie IMAP v Thunderbirde a to isté v Apple Mail.
Váš Takeout je už skopírovaný na účet IMAP a dátumy sú nesprávne? Spustite bezplatné skenovanie Redate a zistite, koľkých e-mailov sa to týka, potom ich opravte jednorazovou platbou, bez limitu veľkosti schránky.