imapsync: daty niezachowane, pełny przewodnik

7 min

imapsync to referencyjne narzędzie migracji email dla administratorów systemów Linux, providerów hostingowych i wszystkich preferujących rozwiązania open source. Stworzone przez Gillesa Lamirala, imapsync jest aktywnie rozwijane od 2001 roku i zostało użyte do milionów migracji skrzynek na całym świecie. Obsługuje praktycznie każdy serwer IMAP: Dovecot, Courier, Cyrus, Zimbra, Exchange, Gmail i dziesiątki innych.

imapsync ma reputację narzędzia kompletnego i konfigurowalnego. Administratorzy cenią jego granularną kontrolę nad migrowanymi folderami, obsługę duplikatów i mapowanie nazw folderów między różnymi serwerami IMAP. Ale mimo całej tej kontroli, jeden problem się utrzymuje: daty emaili często nie są zachowane po migracji imapsync. Użytkownicy otwierają skrzynkę po migracji i stwierdzają, że każdy email wyświetla datę migracji. To irytujące, zwłaszcza że imapsync ma poprawnie obsługiwać daty.

Jak imapsync obsługuje INTERNALDATE

Próba zachowania INTERNALDATE

imapsync faktycznie próbuje zachować INTERNALDATE każdego emaila podczas migracji. INTERNALDATE to znacznik czasu przechowywany przez serwer IMAP jako metadane dla każdej wiadomości, oddzielony od nagłówków emaila. Kiedy imapsync kopiuje wiadomość ze źródła na cel, odczytuje INTERNALDATE z serwera źródłowego i przekazuje go serwerowi docelowemu w poleceniu IMAP APPEND.

W teorii powinno to zachować oryginalną datę. W praktyce rezultat zależy od zachowania serwera docelowego i sposobu, w jaki klienci poczty interpretują różne pola związane z datami w wiadomości.

Problem z nagłówkiem "Received"

Nawet gdy imapsync skutecznie zachowa INTERNALDATE, serwer pocztowy docelowy dodaje nowy nagłówek "Received" do każdej wiadomości podczas operacji APPEND. Ten nagłówek "Received" zawiera bieżący znacznik czasu - datę migracji. Klienci poczty takie jak Outlook, Apple Mail i Thunderbird określają wyświetlaną datę "odbioru" odczytując najwyższy nagłówek "Received", nie INTERNALDATE. Więc mimo wysiłku imapsync by zachować INTERNALDATE, widoczna data w większości klientów jest i tak błędna.

To ta fundamentalna rozbieżność powoduje zamieszanie. imapsync zachowuje jedną wartość daty (INTERNALDATE), ale klienci poczty wyświetlają inną (znacznik czasu z nagłówka "Received"). Techniczne wyjaśnienie tego mechanizmu znajdziesz w artykule dlaczego emaile pokazują złą datę po migracji IMAP.

Mylne przekonanie z FAQ imapsync

Dokumentacja i FAQ imapsync poruszają problem dat, ale prezentują go jako nieodłączne ograniczenie. FAQ sugeruje, że "daty mogą nie zostać zachowane" podczas migracji IMAP i implikuje, że tak po prostu działa protokół IMAP. Choć prawdą jest, że protokół IMAP wymaga od serwerów dodawania nagłówków "Received" przy wstawianiu wiadomości, FAQ tworzy wrażenie, że problem jest trwały i nienaprawialny.

To nie jest prawda. Nagłówki "Received" dodane podczas migracji mogą zostać zidentyfikowane i usunięte po fakcie, przywracając wyświetlanie oryginalnej daty w klientach poczty. Oryginalny nagłówek "Date" (rejestrujący kiedy email został pierwotnie wysłany) jest zawsze zachowywany przez imapsync i służy jako punkt odniesienia dla prawidłowej daty.

Identyfikacja migracyjnego nagłówka imapsync

Jak wygląda nagłówek

imapsync sam nie dodaje nagłówka "Received" - robi to serwer IMAP docelowy. Nagłówek dodany podczas migracji imapsync zazwyczaj wygląda jak standardowy nagłówek wstawiania IMAP serwera docelowego. Na przykład przy migracji na serwer Dovecot nagłówek może wyglądać tak:

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

Kluczowym identyfikatorem jest to, że ten nagłówek "Received" jest najwyższy w łańcuchu, jego znacznik czasu odpowiada dacie uruchomienia migracji imapsync i zazwyczaj odwołuje się do "localhost" lub nazwy hosta serwera docelowego, a nie zewnętrznego serwera pocztowego.

Porównywanie dat

Aby potwierdzić problem, porównaj znacznik czasu najwyższego nagłówka "Received" z nagłówkiem "Date" emaila. Jeśli nagłówek "Received" wskazuje styczeń 2025, ale nagłówek "Date" wskazuje marzec 2020, migracyjny nagłówek "Received" jest przyczyną błędnego wyświetlania daty. To porównanie można wykonać przeglądając surowe źródło wiadomości w dowolnym kliencie poczty.

Dlaczego popularne opcje imapsync nie rozwiązują problemu

Flaga --syncinternaldates

imapsync oferuje flagę --syncinternaldates, która ustawia INTERNALDATE na serwerze docelowym tak, by odpowiadał nagłówkowi "Date" emaila. To przydatne, gdy INTERNALDATE serwera źródłowego jest już błędny, ale nie zapobiega dodaniu nagłówka "Received" przez serwer docelowy. Widoczna data w Outlooku i innych klientach pozostaje datą migracji niezależnie od wartości INTERNALDATE.

Opcja --addheader

imapsync może dodawać niestandardowe nagłówki do wiadomości podczas migracji, ale nie może zapobiec dodaniu własnego nagłówka "Received" przez serwer docelowy. Protokół IMAP wymaga od serwerów rejestrowania znacznika czasu wstawienia i żadna opcja imapsync nie może nadpisać tego zachowania na poziomie serwera.

Skrypty po migracji

Niektórzy administratorzy piszą własne skrypty do usuwania niepożądanych nagłówków "Received" po migracji. Brzmi rozsądnie, szczególnie dla kogoś, kto w pierwszej kolejności wybrał imapsync (ktoś, kto czuje się swobodnie z linią poleceń). Ale rzeczywistość jest znacznie bardziej złożona niż proste znajdź-zamień na tekście nagłówka. Co się stanie, gdy skrypt trafi na email podpisany S/MIME? Albo wiadomość multipart z zagnieżdżonymi granicami MIME i załącznikami zakodowanymi w base64? Albo nagłówek z znakami nie-ASCII zakodowanymi RFC 2047? Jeden źle umieszczony bajt w granicy MIME może cicho uszkodzić całą wiadomość, niszcząc załączniki lub czyniąc email nieczytelnym. A jak potwierdzić, że 10000 poprawionych emaili jest w pełni nienaruszone? Dla tysięcy emaili na wielu skrzynkach, skrypty DIY stanowią istotne ryzyko.

Naprawa dat imapsync z Redate.io

Jak Redate.io obsługuje migracje imapsync

Autorski silnik korekcji Redate.io jest zaprojektowany specjalnie do tej kategorii problemów. Po podłączeniu skrzynki Redate.io analizuje każdy email i przepuszcza każdą wiadomość przez wieloetapowy proces analizy. Dla migracji imapsync Redate.io wykrywa nagłówek "Received" wstawiony przez serwer, stosując dopasowanie sygnatur na setkach znanych profili migracyjnych, analizując pełny łańcuch nagłówków i krzyżowo weryfikując znaczniki czasu z oryginalnym nagłówkiem "Date".

To nie jest prosta edycja nagłówka. Silnik korekcji obsługuje walidację zgodności RFC, zachowanie struktury wiadomości (włączając struktury multipart/alternative, załączniki inline i wariacje Content-Transfer-Encoding) oraz wykrywanie podpisów cyfrowych. Emaile z podpisami S/MIME lub PGP są automatycznie identyfikowane i traktowane odpowiednio w celu zachowania integralności podpisów.

Co otrzymujesz po korekcie

Każdy poprawiony email wyświetla swoją oryginalną datę odbioru we wszystkich klientach poczty. Porządek chronologiczny jest przywrócony. Każda korekta przechodzi weryfikację integralności przed finalizacją. Oryginalna wiadomość jest przenoszona do folderu "Redate.io - Originals" i przechowywana przez 30 dni jako siatka bezpieczeństwa.

Kompatybilność ze wszystkimi serwerami docelowymi

Ponieważ imapsync jest używany do migracji na praktycznie każdy serwer IMAP, Redate.io obsługuje ten sam zakres platform docelowych. Czy migracja imapsync celowała w Dovecot, Courier, Cyrus, Zimbra, Google Workspace, Microsoft 365 czy jakikolwiek inny serwer IMAP, Redate.io łączy się i naprawia daty.

Jak naprawić daty po migracji imapsync

Podłączenie skrzynki

Zaloguj się do Redate.io i dodaj skrzynkę. Dla Google Workspace lub Microsoft 365 użyj opcji delegacji administratora. Dla innych serwerów IMAP (typowe w scenariuszach imapsync) podaj adres serwera, nazwę użytkownika i hasło. Redate.io łączy się przez standardowy IMAP.

Bezpłatna analiza

Uruchom bezpłatną analizę, aby zidentyfikować dotknięte emaile. Raport z analizy pokazuje łączną liczbę emaili, ile ma złą datę i jaką datę migracji wykryto. Ta analiza nic nie kosztuje i daje jasny obraz przed jakimkolwiek zobowiązaniem.

Naprawa i weryfikacja

Wybierz plan na podstawie liczby dotkniętych emaili i uruchom korektę. Postęp jest widoczny w czasie rzeczywistym. Po zakończeniu zweryfikuj wyniki sprawdzając daty emaili w swoim kliencie. Daty powinny wrócić na swoje miejsce.

Przewodniki naprawy imapsync według platformy

Najczęściej zadawane pytania

Czy należy użyć --syncinternaldates imapsync przed Redate.io?

Nie jest to konieczne. Redate.io ustawia prawidłowy INTERNALDATE podczas procesu korekty, niezależnie od bieżącej wartości. Czy imapsync zachował oryginalny INTERNALDATE czy nie, Redate.io wyprowadza prawidłową wartość z oryginalnego nagłówka "Date".

Czy można naprawić daty na serwerze źródłowym przed migracją imapsync?

Jeśli serwer źródłowy ma już błędne daty (z powodu wcześniejszej migracji), Redate.io może je naprawić przed lub po migracji imapsync. Ale naprawa dat na serwerze docelowym po migracji to najczęstsze i najpraktyczniejsze podejście.

Ile emaili Redate.io może przetworzyć?

Redate.io obsługuje skrzynki dowolnej wielkości. Plany są dostępne dla do 100000 emaili na skrzynkę. Dla organizacji z wieloma skrzynkami Redate.io oferuje ceny wolumenowe.

Migracja imapsync zepsuła daty? Uruchom bezpłatną analizę, aby zobaczyć, ile emaili jest dotkniętych, i napraw je z Redate.io.