Mi történt a postafiókjában
Befejezte a domain migrációját Zoho Mailből Microsoft 365-be. Az Exchange Online infrastruktúra a helyén van, a postaládák létrehozva, az MX rekordok frissítve. Aztán hétfő reggel az egyik felhasználó megnyitja az Outlookot, és azt látja, hogy a 2021-es emailjein a mai dátum szerepel. Egy másik kollégánál a tavalyi üzenetek az üzenetek tetején jelennek meg, mintha pár perce érkeztek volna. A hibabejelentések elindulnak.
Ez nem Outlook-hiba. Nem is Zoho-specifikus probléma. Ez bármely Exchange Online-ra irányuló IMAP-migráció várható, de rosszul dokumentált viselkedése. A pontos ok megértése az első lépés a helyes javítás felé.
A technikai gyökérprobléma: INTERNALDATE és Received fejlécek
Egy IMAP szerveren tárolt email két különálló dologból áll: a nyers üzenettartalomból (RFC 2822 fejlécek, törzs, mellékletek) és a szerver által kezelt tárolási metaadatokból, amelyek közül a legfontosabb az INTERNALDATE. A levelezőkliensek ezt a metaadatot használják az üzenetek megjelenítéséhez és rendezéséhez.
A nyers üzenetben szereplő Date: fejléc (RFC 2822) azt a dátumot jelzi, amikor a feladó összeállította vagy elküldte az üzenetet. Az INTERNALDATE ezzel szemben az a dátum, amikor az IMAP szerver kapta vagy tárolta az üzenetet. Egészséges szerveren ez a két érték közel esik egymáshoz. Migráció után ez már egészen más történet.
Hogyan rontja el a dátumokat az IMAP-migráció
Amikor egy migrációs eszköz (a Zoho Migration Wizard, az imapsync, a BitTitan vagy bármi más) áttranszkálja az üzenetet a Zoho Mailből az Exchange Online-ba, ezt az IMAP protokollon keresztül teszi. Az eszköz csatlakozik a Zoho-hoz, lekéri az üzenetet, majd beilleszti az Exchange Online-ba egy IMAP APPEND paranccsal. És itt kezdődik a baj.
Az Exchange Online minden beérkező üzenethez új Received: fejlécet generál, amelyet az üzenet elejére illeszt. Ez a fejléc tartalmazza a beillesztés pontos dátumát és idejét, vagyis a migráció dátumát. Egyes migrációs eszközök megpróbálják megőrizni az eredeti INTERNALDATE-t az APPEND parancs paramétereként átadva. Mások ezt nem teszik meg, vagy hibásan hajtják végre, és ilyenkor az Exchange Online automatikusan a beérkezési dátumot rendeli hozzá INTERNALDATE-ként.
Az eredmény: akár egy 2019-es, akár egy 2022-es emailről van szó, az INTERNALDATE most a migrációs hétre mutat. Az Outlook ezt az értéket veszi alapul. A rendezés összeomlik.
A Zoho Migration Wizard sajátos viselkedése
A Zoho saját migrációs eszközt kínál a platformjáról való távozáshoz: a Zoho Migration Wizardot. Ez az eszköz egyszerűbb migrációkhoz praktikus, de adminisztrátor fórumokon jól dokumentált viselkedése van: nem mindig adja át helyesen az eredeti INTERNALDATE-t a célszerverre való beillesztéskor.
Pontosabban: a probléma elsősorban azokat a szervereket érinti, amelyek minden beérkező üzenethez automatikusan Received: fejlécet adnak, és ez pontosan az Exchange Online viselkedése. Még ha a Zoho Migration Wizard az APPEND paramétereként át is adja az eredeti dátumot, az Exchange Online által generált Received: fejléc a fejléclánc első pozíciójába kerül, és az Outlook ezt használja annak meghatározásához, hogy „mikor érkezett az email