IMAP INTERNALDATE: miks kuupäevad katki lähevad

4 min

Kolm kuupäeva igas e-kirjas

Iga IMAP-serveris salvestatud e-kiri kannab endas vähemalt kolme erinevat kuupäevaväärtust. Arusaamine, kuidas need kuupäevad toimivad ja kuidas meilikliendid otsustavad, millist kuvada, on võtmeks mõistmaks, miks migratsioon kuupäevi rikub. See artikkel on põhjalik tehniline analüüs IMAP kuupäevasüsteemist, mõeldud IT-administraatoritele ja kõigile, kes soovivad mõista migratsioonijärgsete kuupäevaprobleemide algpõhjust.

1. RFC 2822 "Date" päis

"Date" päis on defineeritud RFC 2822-s (Interneti sõnumite formaat). Selle seab saatja meiliklient hetkel, mil sõnum koostatakse ja saadetakse. See päis on osa sõnumi kehast endast - see reisib sõnumiga ja seda ei muudeta meiliserverite poolt kohaletoimetamisteel. Tüüpiline Date päis näeb välja nii:

Date: Mon, 15 Jan 2024 09:32:17 +0100

Date päis esindab sõnumi "saatmiskuupäeva". See on kõige usaldusväärsem kuupäev, sest see seatakse üks kord ja seda ei muudeta kunagi. Siiski peegeldab see saatja kella, mis võib olla valesti konfigureeritud. Harvadel juhtudel võib Date päis täielikult puududa (eriti automatiseeritud süsteemiteadetes või vigastes sõnumites).

2. IMAP INTERNALDATE

INTERNALDATE on defineeritud RFC 3501-s (IMAP4rev1 protokoll). See on serveripoolne metaandmete väärtus, mis esindab kuupäeva ja kellaaega, mil sõnum serverisse toimetati. Erinevalt Date päisest ei ole INTERNALDATE osa e-kirjast endast. Seda salvestab IMAP-server eraldi metaandmetena.

Tavapärase kohaletoimetamise puhul (mitte migreeritud) seab IMAP-server INTERNALDATE-t kohaletoimetamise hetke kellaajale. See väärtus vastab tihedalt Date päisele, tavaliselt mõne sekundi või minuti erinevusega. Meilikliendid kasutavad INTERNALDATE-t sageli "vastuvõtmise kuupäevana", sest see peegeldab hetke, mil server sõnumi tegelikult vastu võttis.

Ja siin läheb asi huvitavaks. Kui sõnum sisestatakse IMAP APPEND käsu kaudu (mida migratsioonitööriistad kasutavad), lubab APPEND käsk kliendil INTERNALDATE-t eksplitsiitselt määrata. Hästi kavandatud migratsioonitööriistad kasutavad seda funktsiooni algse INTERNALDATE säilitamiseks lähteserverist. Kuid isegi kui INTERNALDATE on korrektselt seatud, võib allpool kirjeldatud "Received" päise probleem ikkagi paljudes klientides kuvatava kuupäeva üle kirjutada.

3. "Received" päiste ahel

Iga kord, kui e-kiri läbib meiliserveri, lisab see server sõnumi algusse "Received" päise. See loob Received päiste ahela, mis registreerib e-kirja teekonna saatjast saajani. Kõige uuem (üleval) näitab viimast serverit, mis sõnumit töödles, ja kõige vanem (all) näitab esimest.

Tavalisel e-kirjal võib olla 3-6 Received päist, mis dokumenteerivad teekonda saatja väljuvast serverist läbi releedene saaja sissetuleva serverini. Iga Received päis sisaldab ajatemplit. Siin on lihtsustatud näide:

Received: from mx.recipient.com; Mon, 15 Jan 2024 09:32:22 +0000
Received: from relay.sender.com; Mon, 15 Jan 2024 09:32:20 +0000
Received: from smtp.sender.com; Mon, 15 Jan 2024 09:32:18 +0000
Date: Mon, 15 Jan 2024 09:32:17 +0100

Kuidas meilikliendid otsustavad, millist kuupäeva kuvada

Outlook (Desktop, Web, Mobile)

Microsoft Outlook kasutab postkastis kuvatava "Vastuvõtmise" kuupäeva määramiseks INTERNALDATE-i ja kõige värskema "Received" päise kombinatsiooni. Praktikas kaldub Outlook eelistama kõige värskema Received päise ajatemplit veerule "Vastuvõetud". Veerg "Saadetud" kasutab Date päist. Kuna Outlook sorteerib vaikimisi veeru "Vastuvõetud" järgi, on kasutajatele esmalt nähtav just Received päise ajatempel.

Apple Mail

Apple Mail macOS-is ja iOS-is kasutab kuupäeva kuvamiseks peamiselt IMAP INTERNALDATE-t. Kui INTERNALDATE säilitati migratsiooni käigus korrektselt, võib Apple Mail näidata õiget kuupäeva - kuid ainult juhul, kui INTERNALDATE seati APPEND toimingu käigus eksplitsiitselt. Kui migratsioonitööriist INTERNALDATE-t ei seadnud, kasutab server vaikimisi sisestusaega (migratsiooni kuupäeva). Apple Maili kasutajatele mõju üksikasjade jaoks vaadake Apple Mail: vale kuupäev pärast migratsiooni.

Thunderbird

Mozilla Thunderbird pakub kõige rohkem paindlikkust. Ta saab kuvada nii "Kuupäeva" (Date päisest) kui "Vastuvõetud" (Received päistest). Vaikimisi kuvab Thunderbird Date päise väärtust, mis tähendab, et kuupäevad võivad Thunderbirdis korrektselt ilmuda isegi siis, kui need on Outlookis valed. Veerg "Vastuvõetud" Thunderbirdis näitab alati migratsiooni kuupäeva. Vaadake Thunderbird: vale kuupäev pärast migratsiooni lisateabe jaoks.

Gmaili veebiliides

Gmaili veebiklient kasutab kuupäeva peamiseks kuvamiseks Date päist. See tähendab, et Gmaili veeb näitab sageli õigeid kuupäevi isegi pärast migratsiooni. Kuid IMAP INTERNALDATE jääb valeks ja iga IMAP-klient, mis ühendub sama kontoga, näeb migratsiooni kuupäeva.

Mis juhtub migratsiooni käigus

IMAP APPEND käsk

Migratsioonitööriistad kasutavad IMAP APPEND käsku sõnumite sihtserverisse sisestamiseks. APPEND käsk lubab valikuliselt määrata INTERNALDATE-t ja lippe. Hästi käituvad migratsioonitööriistad (nagu imapsync) seavad INTERNALDATE-t lähteserveri väärtusele.

Kuid olenemata sellest, mida APPEND käsk määrab, lisab sihtserver oma "Received" päise migratsiooni ajatempliga. See on IMAP-protokolli nõue ja seda ei saa ära hoida.

Tulemus: vastuolulised kuupäevad

Pärast migratsiooni sisaldab iga e-kiri vastuolulisi kuupäevaandmeid:

  • Date päis: algne saatmiskuupäev (korrektne)
  • INTERNALDATE: võib olla algne või migratsiooni kuupäev (sõltub tööriistast)
  • Ülemine Received päis: migratsiooni kuupäev (alati vale)
  • Alumised Received päised: algse kohaletoimetamise kuupäevad (korrektsed)

Olenevalt sellest, millist väärtust meiliklient eelistab, näeb kasutaja kas õiget või valet kuupäeva. Ja kuna erinevad kliendid eelistavad erinevaid väärtusi, võib sama e-kiri ühes kliendis õige ja teises vale välja näha.

Miks parandus peab toimuma serveri tasemel

Kliendipoolsed lahendused (nagu sorteerimisveeru muutmine) on ajutised ja mõjutavad ainult seda konkreetset klienti. Tegelik parandus nõuab migratsiooni "Received" päiste töötlemist ja INTERNALDATE korrigeerimist serveris. Ainult siis näitavad kõik kliendid, otsingumootorid, vastavustööriistad ja automatiseeritud protsessid õigeid kuupäevi.

Redate.io teeb täpselt seda - patenteeritud parandusmootori kaudu, mis käsitleb RFC vastavust, MIME-struktuuri säilitamist, krüptograafilise terviklikkuse kontrolli ja sadade migratsiooni allkirjamustrite tuvastamist.

Alustage tasuta skannimisega: registreerige Redate.io-s.