Co się stało z Twoją skrzynką pocztową
Migracja domeny z Zoho Mail do Microsoft 365 zakończona. Infrastruktura Exchange Online gotowa, skrzynki aprowizowane, rekordy MX zaktualizowane. I wtedy, w poniedziałek rano, użytkownik otwiera Outlook i widzi, że wszystkie jego emaile z 2021 roku pokazują dzisiejszą datę. Inny zauważa, że wiadomości sprzed roku są posortowane na samej górze skrzynki odbiorczej, jakby właśnie dotarły. Zaczyna się fala zgłoszeń.
To nie jest błąd Outlooka. To nie jest też problem specyficzny dla Zoho. To oczekiwane, choć słabo udokumentowane, zachowanie każdej migracji IMAP do Exchange Online. Zrozumienie, dlaczego tak się dzieje, to pierwszy krok do prawidłowej naprawy.
Przyczyna techniczna: INTERNALDATE i nagłówki Received
Email przechowywany na serwerze IMAP składa się z dwóch odrębnych elementów: surowej treści wiadomości (nagłówki RFC 2822, treść, załączniki) oraz metadanych zarządzanych przez serwer IMAP, w tym INTERNALDATE. To właśnie ta metadana jest używana przez klientów pocztowych do wyświetlania i sortowania wiadomości.
Nagłówek Date: zawarty w surowej wiadomości (RFC 2822) reprezentuje datę, kiedy wiadomość została napisana lub wysłana przez nadawcę. INTERNALDATE to z kolei data, kiedy serwer IMAP odebrał lub zapisał wiadomość. Normalnie, na zdrowym serwerze, obie wartości są zbliżone. Po migracji to zupełnie inna historia.
Jak migracja IMAP niszczy daty
Kiedy narzędzie migracyjne (Zoho Migration Wizard, imapsync, BitTitan lub jakiekolwiek inne) przenosi wiadomość z Zoho Mail do Exchange Online, robi to przez protokół IMAP. Narzędzie łączy się z Zoho, pobiera wiadomość, a następnie wstawia ją do Exchange Online za pomocą polecenia IMAP APPEND. I tu zaczyna się problem.
Exchange Online, odbierając każdą wiadomość, generuje nowy nagłówek Received: i dodaje go na początku wiadomości. Ten nagłówek zawiera dokładną datę i godzinę wstawienia, czyli datę migracji. Niektóre narzędzia migracyjne próbują zachować oryginalny INTERNALDATE, przekazując go jako parametr do polecenia APPEND. Inne tego nie robią, albo robią to niepoprawnie. W takim przypadku Exchange Online automatycznie przypisuje datę odbioru jako INTERNALDATE.
Rezultat: niezależnie od tego, czy email został wysłany w 2019, czy w 2022 roku, jego INTERNALDATE wskazuje teraz na tydzień migracji. Outlook czyta tę wartość priorytetowo. Sortowanie się sypie.
Specyficzne zachowanie Zoho Migration Wizard
Zoho oferuje własne narzędzie do opuszczenia swojej platformy: Zoho Migration Wizard. Jest praktyczny przy prostych migracjach, ale ma udokumentowane na forach administratorów zachowanie: nie zawsze poprawnie przekazuje oryginalny INTERNALDATE podczas wstawiania do serwera docelowego.
Mówiąc precyzyjniej, problem dotyczy głównie migracji do serwerów, które systematycznie dodają nagłówek Received: do każdej przychodzącej wiadomości, co jest dokładnie tym, co robi Exchange Online. Nawet jeśli Zoho Migration Wizard przekaże oryginalną datę przez parametr APPEND, nagłówek Received: wygenerowany przez Exchange Online trafia na pierwszą pozycję w łańcuchu nagłówków, i to właśnie jego Outlook używa, żeby ustalić „kiedy email dotarł