imapsync: data nejsou zachována, kompletní návod

7 min

imapsync je referenční nástroj pro migraci e-mailů pro systémové administrátory Linuxu, poskytovatele hostingu a všechny, kdo preferují open-source řešení. Vytvořený Gillesem Lamiralem, imapsync je aktivně udržován od roku 2001 a byl použit pro miliony migrací schránek po celém světě. Podporuje prakticky každý server IMAP: Dovecot, Courier, Cyrus, Zimbra, Exchange, Gmail a desítky dalších.

imapsync má pověst kompletního a konfigurovatelného nástroje. Administrátoři oceňují jeho granulární kontrolu nad tím, které složky migrovat, správu duplikátů a mapování názvů složek mezi různými servery IMAP. Ale navzdory veškeré této kontrole jeden problém přetrvává: data e-mailů často nejsou po migraci imapsync zachována. Uživatelé otevřou svou schránku po migraci a zjistí, že každý e-mail zobrazuje datum migrace. Je to exasperující, zvláště protože imapsync má data správně zpracovávat.

Jak imapsync zachazí s INTERNALDATE

Pokus o zachování INTERNALDATE

imapsync se skutečně pokouší zachovat INTERNALDATE každého e-mailu během migrace. INTERNALDATE je časové razítko, které server IMAP ukládá jako metadata pro každou zprávu, oddělené od hlaviček e-mailu. Když imapsync kopíruje zprávu ze zdroje na cíl, čte INTERNALDATE ze zdrojového serveru a předává ho cílovému serveru v příkazu IMAP APPEND.

Teoreticky by to mělo zachovat původní datum. V praxi výsledek závisí na chování cílového serveru a na tom, jak poštovní klienti interpretují různá pole spojená s datem ve zprávě.

Problém hlavičky "Received"

I když imapsync úspěšně zachová INTERNALDATE, cílový poštovní server přidá novou hlavičku "Received" ke každé zprávě během operace APPEND. Tato hlavička "Received" obsahuje aktuální časové razítko - datum migrace. Poštovní klienti jako Outlook, Apple Mail a Thunderbird určují zobrazené datum "přijetí" čtením nejvyšší hlavičky "Received", nikoli INTERNALDATE. Takže navzdory snaze imapsync zachovat INTERNALDATE je viditelné datum ve většině klientů stejně špatné.

Tato zásadní nesrovnalost způsobuje zmatek. imapsync zachovává jednu hodnotu data (INTERNALDATE), ale poštovní klienti zobrazují jinou (časové razítko hlavičky "Received"). Pro technický ponoř do tohoto mechanismu viz proč e-maily zobrazují špatné datum po migraci IMAP.

Mylý výklad z FAQ imapsync

Dokumentace a FAQ imapsync řeší problém s datem, ale prezentují ho jako inherentní omezení. FAQ naznačuje, že "data nemusí být zachována" při migraci IMAP a implikuje, že takto prostě protokol IMAP funguje. Přestože je pravda, že protokol IMAP vyžaduje od serverů přidání hlaviček "Received" při vkládání zpráv, FAQ vytváří dojem, že problém je trvalý a neopravitelný.

To není přesné. Hlavičky "Received" přidané během migrace lze identifikovat a odstranit dodatečně, což obnoví zobrazení původního data v poštovních klientech. Původní hlavička "Date" (která zaznamenává, kdy byl e-mail původně odeslán) je vždy zachována imapsync a slouží jako reference pro správné datum.

Identifikace migrační hlavičky imapsync

Jak hlavička vypadá

imapsync sám hlavičku "Received" nepřidává - to dělá cílový IMAP server. Hlavička přidaná během migrace imapsync obvykle vypadá jako standardní IMAP vložková hlavička cílového serveru. Například při migraci na server Dovecot hlavička může vypadat takto:

Received: from localhost by mail.example.com;
  Wed, 15 Jan 2025 09:14:22 +0100

Hlavním identifikátorem je, že tato hlavička "Received" je nejvyšší v řetězci, její časové razítko odpovídá datu spuštění migrace imapsync a obvykle odkazuje na "localhost" nebo název hostitele cílového serveru, nikoli na externí poštovní server.

Porovnání dat

Pro potvrzení problému porovnejte časové razítko nejvyšší hlavičky "Received" s hlavičkou "Date" e-mailu. Pokud hlavička "Received" ukazuje leden 2025, ale hlavička "Date" ukazuje březen 2020, migrační hlavička "Received" je příčinou špatného zobrazení data. Toto srovnání lze provést zobrazením surového zdroje zprávy v jakémkoli poštovním klientovi.

Proč běžné možnosti imapsync problém neřeší

Přepínač --syncinternaldates

imapsync nabízí přepínač --syncinternaldates, který nastaví INTERNALDATE na cílovém serveru tak, aby odpovídal hlavičce "Date" e-mailu. To je užitečné, když je INTERNALDATE zdrojového serveru již chybný, ale nezabrání cílovému serveru v přidání hlavičky "Received". Viditelné datum v Outlooku a dalších klientech zůstává datem migrace bez ohledu na hodnotu INTERNALDATE.

Možnost --addheader

imapsync může přidávat vlastní hlavičky ke zprávám během migrace, ale nemůže zabránit cílovému serveru v přidání vlastní hlavičky "Received". Protokol IMAP vyžaduje od serverů zaznamenání časového razítka vložení a žádná možnost imapsync nemůže toto chování na úrovni serveru přepsat.

Skripty po migraci

Někteří administrátoři píšou vlastní skripty po migraci pro odstranění nežádoucích hlaviček "Received". Vypadá to rozumně, zvláště pro typ člověka, který si vybral imapsync na prvním místě (někdo, komu nevadí příkazový řádek). Ale realita je mnohem složitější než hledat a nahrazovat text hlavičky. Co se stane, když skript narazí na e-mail podepsaný S/MIME? Nebo multipart zprávu s vnořenými MIME hranicemi a přílohami kódovanými base64? Nebo hlavičku s ne-ASCII znaky kódovanými RFC 2047? Jediný špatně umístěný bajt v MIME hranici může tiše poškodit celou zprávu, zničit přílohy nebo udělat e-mail nečitelným. A jak potvrdíte, že 10 000 opravených e-mailů je všech nedotčených? Pro tisíce e-mailů přes více schránek DIY skriptování představuje podstatné riziko.

Oprava dat imapsync s Redate.io

Jak Redate.io zpracovává migrace imapsync

Proprietární opravný engine Redate.io je navržen specificky pro tuto kategorii problémů. Po připojení ke schránce Redate.io analyzuje každý e-mail a provádí každou zprávu vícestupňovým analytickým pipeline. Pro migrace imapsync Redate.io detekuje hlavičku "Received" vloženou serverem pomocí porovnávání signatur na stovkách známých migračních profilů, analýzou kompletního řetězce hlaviček a křížovým porovnáním časových razítek s původní hlavičkou "Date".

Nejde o jednoduchou úpravu hlavičky. Opravný engine zvládá validaci souladu s RFC, zachování struktury zprávy (včetně multipart/alternative struktur, inline příloh a variaci Content-Transfer-Encoding) a detekci digitálních podpisů. E-maily s podpisy S/MIME nebo PGP jsou automaticky identifikovány a zpracovány vhodným způsobem pro zachování integrity podpisů.

Co získáte po opravě

Každý opravený e-mail zobrazuje své původní datum přijetí ve všech poštovních klientech. Chronologické pořadí je obnoveno. Každá oprava prochází ověřením integrity před finalizací. Původní zpráva je přesunuta do složky "Redate.io - Originals" a uchována 30 dnů jako záchranná síť.

Kompatibilita se všemi cílovými servery

Jelikož imapsync se používá pro migraci na prakticky jakýkoli server IMAP, Redate.io podporuje stejný rozsah cílových platforem. Ať migrace imapsync cílila na Dovecot, Courier, Cyrus, Zimbra, Google Workspace, Microsoft 365 nebo jakýkoli jiný server IMAP, Redate.io se připojí a opraví data.

Jak opravit data po migraci imapsync

Připojení schránky

Přihlaste se do Redate.io a přidejte schránku. Pro Google Workspace nebo Microsoft 365 použijte možnost delegace administrátora. Pro ostatní servery IMAP (běžné ve scénářích imapsync) zadejte adresu serveru, uživatelské jméno a heslo. Redate.io se připojí přes standardní IMAP.

Bezplatná analýza

Spusťte bezplatnou analýzu pro identifikaci zasažených e-mailů. Zpráva z analýzy ukazuje celkový počet e-mailů, kolik má špatné datum a jaké datum migrace bylo detekovatáno. Tato analýza nic nestojí a dává jasný obraz před jakýmkoli závazkem.

Opravit a ověřit

Vyberte plán podle počtu zasažených e-mailů a spusťte opravu. Průběh je viditelný v reálném čase. Po dokončení ověřte výsledky kontrolou dat e-mailů ve svém klientovi. Data by měla být zpět na svém místě.

Návody opravy imapsync podle platformy

Často kladené otázky

Mám použít --syncinternaldates imapsync před použitím Redate.io?

Není to nutné. Redate.io nastaví správný INTERNALDATE během procesu opravy bez ohledu na aktuální hodnotu. Ať imapsync zachoval původní INTERNALDATE nebo ne, Redate.io odvodí správnou hodnotu z původní hlavičky "Date".

Mohu opravit data na zdrojovém serveru před migrací imapsync?

Pokud zdrojový server již má chybná data (kvůli předchozí migraci), Redate.io je může opravit před nebo po migraci imapsync. Ale oprava dat na cílovém serveru po migraci je nejčastější a nejpraktičtější přístup.

Kolik e-mailů může Redate.io zpracovat?

Redate.io zvládá schránky jakékoli velikosti. Plány jsou dostupné až pro 100 000 e-mailů na schránku. Pro organizace s mnoha schránkami Redate.io nabízí objemové ceny.

Migrace imapsync rozbila data? Spusťte bezplatnou analýzu a zjistěte, kolik e-mailů je zasaženo, a opravte je s Redate.io.