Обіцянка --syncinternaldates (і чому вона не працює)
Ви запустили команду imapsync. Додали --syncinternaldates, бо прочитали документацію і підійшли відповідально. Міграція завершилася, лог показує, що все перенесено, нуль помилок. Потім відкриваєте поштову скриньку в Outlook і кожен лист показує вчорашню дату.
Це одне з найчастіших розчарувань при роботі з imapsync, і воно збиває з пантелику системних адміністраторів щонайменше з 2017 року. Прапорець --syncinternaldates повинен зберігати IMAP INTERNALDATE під час міграції. Технічно він і намагається. Але слово "намагається" робить занадто багато роботи в цьому реченні.
imapsync - це інструмент з відкритим вихідним кодом на Perl, написаний Жілем Ламіралем, і він дійсно добре робить свою справу. Але збереження дат залежить не лише від imapsync, і саме тут все ускладнюється.
Як насправді працюють дати IMAP
У кожному листі є три різні "дати":
- Заголовок Date: (RFC 2822) - дата, яку поштовий клієнт відправника проставив при створенні повідомлення. Знаходиться всередині тіла повідомлення і ніколи не змінюється поштовими серверами.
- Заголовки Received: - кожен поштовий сервер, що обробив повідомлення, додає свій з власною часовою міткою.
- INTERNALDATE - серверна часова мітка IMAP, що визначає порядок сортування повідомлень у поштовій скриньці.
Коли imapsync переносить повідомлення, він читає його з джерельного сервера (включаючи INTERNALDATE) і записує на цільовий через IMAP APPEND. Прапорець --syncinternaldates каже imapsync передати джерельний INTERNALDATE цільовому серверу.
От у чому річ: цільовий сервер не зобов'язаний приймати цю дату.
Чому цільові сервери ігнорують INTERNALDATE
Специфікація IMAP (RFC 3501) каже, що якщо з командою APPEND надано дату-час, сервер ПОВИНЕН її використати. "SHOULD" мовою RFC означає "робіть так, якщо немає вагомої причини не робити". Кілька великих поштових платформ вирішили, що вагома причина є.
Microsoft 365 - головний порушник. Транспортний конвеєр Exchange додає новий Received заголовок з поточною датою, потім встановлює INTERNALDATE за цією часовою міткою доставки. Байдуже, яку дату запитав imapsync.
Google Workspace (Gmail) поводиться інакше, але теж може створити проблеми. IMAP-реалізація Gmail здебільшого приймає INTERNALDATE з APPEND, але додає власний Received заголовок.
Типові помилки командного рядка imapsync, що псують дати
Забути --syncinternaldates
Прапорець не ввімкнений за замовчуванням.
Використання --syncinternaldates з --addheader
Додавання заголовків модифікує повідомлення.
Плутанина --minage та --maxage зі збереженням дат
Ці прапорці фільтрують повідомлення для міграції за віком, не впливаючи на обробку дат на цілі.
Затримки SSL, що спричиняють дрейф часових міток
При міграції через TLS затримка встановлення з'єднання накопичується у великих міграціях.
Читання логів imapsync
msg source stratemind/42 {5765} D:2019-01-15 13:22:07 -> dest stratemind/42 {5765} D:2019-01-15 13:22:07
Обидві дати збігаються. Це означає, що imapsync надіслав правильний INTERNALDATE. Але не означає, що цільовий сервер дійсно зберіг цю дату.
Масштабні міграції imapsync
Міграція однієї скриньки з imapsync дратує, коли дати ламаються. Але MSP та ІТ-відділи, що запускають imapsync на сотнях скриньок, стикаються з зовсім іншим масштабом проблеми.
Самостійні виправлення та їхні межі
Усі підходи з форумів мають ті самі фундаментальні проблеми: S/MIME, вкладені MIME, RFC 2047, PGP. Скрипт, що працює на 50 тестових повідомленнях, не витримає production-скриньку з 30 000 листів.
Як Redate.io виправляє дати після imapsync
Оригінальний заголовок Date: завжди залишається непошкодженим після міграції imapsync. imapsync точно передає сире повідомлення; проблему відображення спричиняє обробка метаданих цільовим сервером.
Redate.io підключається безпосередньо до поштової скриньки (Google Workspace, Microsoft 365 або будь-який IMAP-сервер), сканує листи з аномаліями дат і застосовує точкову корекцію метаданих через пропрієтарний конвеєр аналізу ланцюжка заголовків та реконструкції дат.
Кожен виправлений лист проходить індивідуальну верифікацію. Оригінали зберігаються у видимій теці Redate.io - Originals 30 днів.
- Виправити дати imapsync в Outlook
- Виправити дати imapsync у Gmail
- Виправити дати imapsync у Microsoft 365
- Виправити дати imapsync у Google Workspace
Redate.io працює і з міграціями, що відбулися місяці або роки тому. Заголовок Date: не застаріває.
Мігрували через imapsync і застрягли з хибними датами? Запустіть безкоштовне сканування, щоб побачити, скільки листів уражено.