imapsync: date nepastrate, ghid complet de corectie

7 min

imapsync este instrumentul de migrare email de referință pentru administratorii de sistem Linux, furnizorii de hosting și toți cei care preferă soluții open source. Creat de Gilles Lamiral, imapsync este activ întreținut din 2001 și a fost folosit pentru milioane de migrări de căsuțe de email din întreaga lume. Supportă practic orice server IMAP: Dovecot, Courier, Cyrus, Zimbra, Exchange, Gmail și zeci de altele.

imapsync are reputația de a fi complet și configurabil. Administratorii apreciază controlul granular asupra folderelor de migrat, gestionarea duplicatelor și maparea numelor de foldere între diferite servere IMAP. Dar în ciuda întregului control, o problemă persistă: datele emailurilor nu sunt frecvent păstrate după o migrare imapsync. Utilizatorii deschid căsuța după migrare și constată că fiecare email afișează data migrării. E exasperant, mai ales pentru că imapsync e presupus să gestioneze datele corect.

Cum gestionează imapsync INTERNALDATE-ul

Încercarea de păstrare a INTERNALDATE-ului

imapsync încearcă efectiv să păstreze INTERNALDATE-ul fiecărui email în timpul migrării. INTERNALDATE este marca temporală pe care serverul IMAP o stochează ca metadată pentru fiecare mesaj, separată de headerele emailului. Când imapsync copiază un mesaj de la sursă la destinație, citește INTERNALDATE-ul de pe serverul sursă și îl transmite serverului de destinație în comanda IMAP APPEND.

În teorie, asta ar trebui să păstreze data originală. În practică, rezultatul depinde de comportamentul serverului de destinație și de modul în care clienții de email interpretează diferitele câmpuri legate de dată din mesaj.

Problema headerului "Received"

Chiar și când imapsync reușește să păstreze INTERNALDATE-ul, serverul de email al destinației adaugă un nou header "Received" la fiecare mesaj în timpul operațiunii APPEND. Acest header "Received" conține marca temporală curentă, data migrării. Clienții de email precum Outlook, Apple Mail și Thunderbird determină data de "primire" afișată citind headerul "Received" din vârf, nu INTERNALDATE-ul. Deci în ciuda efortului imapsync de a păstra INTERNALDATE-ul, data vizibilă în majoritatea clienților este tot greșită.

Această deconectare este cea care cauzează confuzia. imapsync păstrează o valoare de dată (INTERNALDATE), dar clienții de email afișează alta (marca temporală a headerului "Received"). Pentru o analiză tehnică a acestui mecanism, consultați de ce emailurile afișează data greșită după migrare IMAP.

Concepția greșită din FAQ-ul imapsync

Documentația și FAQ-ul imapsync abordează problema de dată dar o prezintă ca o limitare inerentă. FAQ-ul sugerează că "datele pot să nu fie păstrate" în timpul migrării IMAP și implică faptul că pur și simplu așa funcționează protocolul IMAP. Deși este adevărat că protocolul IMAP cere serverelor să adauge headere "Received" la inserția mesajelor, FAQ-ul creează impresia că problema este permanentă și ireparabilă.

Asta nu e corect. Headerele "Received" adăugate în timpul migrării pot fi identificate și eliminate ulterior, restaurând afișarea datei originale în clienții de email. Headerul "Date" original (care înregistrează când emailul a fost trimis inițial) este totdeauna păstrat de imapsync și servește ca referință pentru data corectă.

Identificarea headerului de migrare imapsync

Cum arată headerul

imapsync în sine nu adaugă un header "Received", ci serverul IMAP al destinației o face. Headerul adăugat în timpul unei migrări imapsync arată de obicei ca un header standard de inserție IMAP al serverului de destinație. De exemplu, la migrarea către un server Dovecot, headerul ar putea arăta astfel:

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

Identificatorul cheie este că acest header "Received" este cel mai din vârf al lanțului, marca sa temporală corespunde datei de execuție a migrării imapsync, și referențiază de obicei "localhost" sau hostname-ul serverului de destinație în loc de un server de email extern.

Compararea datelor

Pentru a confirma problema, comparați marca temporală a headerului "Received" din vârf cu headerul "Date" al emailului. Dacă headerul "Received" indică ianuarie 2025 dar headerul "Date" indică martie 2020, headerul "Received" de migrare este cauza afișării greșite a datei. Această comparație se poate face vizualizând sursa brută a mesajului în orice client de email.

De ce opțiunile comune imapsync nu rezolvă problema

Flag-ul --syncinternaldates

imapsync oferă flag-ul --syncinternaldates, care setează INTERNALDATE-ul pe serverul de destinație pentru a corespunde headerului "Date" al emailului. E util când INTERNALDATE-ul serverului sursă este deja greșit, dar nu previne adăugarea unui header "Received" de către serverul de destinație. Data vizibilă în Outlook și alți clienți rămâne data migrării indiferent de valoarea INTERNALDATE-ului.

Opțiunea --addheader

imapsync poate adăuga headere personalizate la mesaje în timpul migrării, dar nu poate preveni serverul de destinație să adauge propriul header "Received". Protocolul IMAP cere serverelor să înregistreze marca temporală a inserției, iar nicio opțiune imapsync nu poate suprascrie acest comportament la nivel de server.

Scripturi post-migrare

Unii administratori scriu scripturi personalizate post-migrare pentru a elimina headerele "Received" nedorite. Pare rezonabil, mai ales pentru genul de persoană care a ales imapsync (cineva confortabil cu linia de comandă). Dar realitatea e mult mai complexă decât un căutare-înlocuire pe text de header. Ce se întâmplă când scriptul dă peste un email semnat S/MIME? Sau un mesaj multipart cu granițe MIME imbricate și atașamente codificate base64? Sau un header cu caractere non-ASCII codificate RFC 2047? Un singur octet greșit într-o graniță MIME poate corupe silențios un mesaj întreg, distrugand atașamentele sau făcând emailul ilizibil. Apropo, cum confirmați că 10.000 de emailuri corectate sunt toate intacte? Pentru mii de emailuri pe mai multe căsuțe, scriptingul DIY reprezintă un risc substanțial.

Corectarea datelor imapsync cu Redate.io

Cum gestionează Redate.io migrările imapsync

Motorul de corecție proprietar Redate.io este conceput special pentru această categorie de probleme. După conectarea la căsuță, Redate.io analizează fiecare email și trece fiecare mesaj printr-un pipeline de analiză multi-etapă. Pentru migrările imapsync, Redate.io detectează headerul "Received" inserat de server aplicând potrivirea semnăturilor pe sute de profiluri de migrare cunoscute, analizând lanțul complet de headere și încrucișând marcajele temporale cu headerul "Date" original.

Nu este o simplă editare de header. Motorul de corecție gestionează validarea conformității RFC, păstrarea structurii mesajului (inclusiv structuri multipart/alternative, atașamente inline și variații de Content-Transfer-Encoding) și detectarea semnăturilor digitale. Emailurile cu semnături S/MIME sau PGP sunt identificate automat și tratate corespunzător pentru păstrarea integrității semnăturilor.

Ce obțineți după corecție

Fiecare email corectat afișează data de primire originală în toți clienții de email. Ordinea cronologică este restaurată. Fiecare corecție trece printr-o verificare de integritate înainte de finalizare. Mesajul original este mutat într-un folder "Redate.io - Originals" și păstrat timp de 30 de zile ca plasă de siguranță.

Compatibilitate cu toate serverele de destinație

Deoarece imapsync este folosit pentru a migra către practic orice server IMAP, Redate.io supportă aceeași gamă de platforme de destinație. Fie că migrarea imapsync a vizat Dovecot, Courier, Cyrus, Zimbra, Google Workspace, Microsoft 365 sau orice alt server IMAP, Redate.io se conectează și corectează datele.

Cum corectați datele după o migrare imapsync

Conectarea căsuței de email

Conectați-vă la Redate.io și adăugați căsuța. Pentru Google Workspace sau Microsoft 365, folosiți opțiunea de delegare admin. Pentru alte servere IMAP (comune în scenariile imapsync), introduceți adresa serverului, numele de utilizator și parola. Redate.io se conectează prin IMAP standard.

Analiză gratuită

Lansați analiza gratuită pentru a identifica emailurile afectate. Raportul de analiză arată numărul total de emailuri, câte au data greșită și ce dată de migrare a fost detectată. Această analiză nu costă nimic și oferă o imagine clară înainte de orice angajament.

Corecție și verificare

Selectați un plan în funcție de numărul de emailuri afectate și lansați corecția. Progresul este vizibil în timp real. După finalizare, verificați rezultatele consultând datele emailurilor în clientul dumneavoastră. Datele ar trebui să fi revenit la locul lor.

Ghiduri de corecție imapsync pe platformă

Întrebări frecvente

Trebuie să folosesc --syncinternaldates de la imapsync înainte de Redate.io?

Nu este necesar. Redate.io setează INTERNALDATE-ul corect în timpul procesului de corecție, indiferent de valoarea curentă. Fie că imapsync a păstrat sau nu INTERNALDATE-ul original, Redate.io derivă valoarea corectă din headerul "Date" original.

Se pot corecta datele pe serverul sursă înainte de a migra cu imapsync?

Dacă serverul sursă are deja date greșite (din cauza unei migrări anterioare), Redate.io le poate corecta înainte sau după migrarea imapsync. Dar corectarea datelor pe serverul de destinație după migrare este abordarea cea mai comună și practică.

Câte emailuri poate procesa Redate.io?

Redate.io gestionează căsuțe de orice dimensiune. Sunt disponibile planuri pentru până la 100.000 de emailuri per căsuță. Pentru organizațiile cu multe căsuțe, Redate.io oferă tarife de volum.

Migrarea imapsync a stricat datele? Lansați o analiză gratuită pentru a vedea câte emailuri sunt afectate și corectați-le cu Redate.io.