POP σε IMAP: τα παλιά email δείχνουν σημερινή ημερομηνία

8 min

Το κλασικό σενάριο της Δευτέρας το πρωί

Μόλις μετέφερες τον λογαριασμό email σου από POP3 σε IMAP. Η ρύθμιση ήταν απλή, ο πάροχος σε καθοδήγησε βήμα βήμα, όλα πήγαν καλά. Μέχρι που άνοιξες ξανά τα εισερχόμενά σου. Τα email του 2019, του 2021, τα αρχεία του περσινού χρόνου... όλα εμφανίζουν την ίδια ημερομηνία: σήμερα. Μερικές φορές μάλιστα την ίδια ώρα, με διαφορά λίγων δευτερολέπτων.

Δεν είναι σφάλμα του προγράμματος email σου. Δεν είναι θέμα ζώνης ώρας. Είναι η αναμενόμενη συμπεριφορά του πρωτοκόλλου IMAP, και αφορά οποιονδήποτε ανεβάζει email αποθηκευμένα τοπικά σε έναν διακομιστή μέσω αυτής της μεθόδου.

POP3 vs IMAP: μια θεμελιώδης διαφορά αποθήκευσης

Για να καταλάβεις γιατί συμβαίνει το πρόβλημα, πρέπει πρώτα να κατανοήσεις πώς λειτουργεί το POP3 και σε τι διαφέρει ριζικά από το IMAP.

Με POP3, ο διακομιστής χρησιμεύει μόνο ως προσωρινό γραμματοκιβώτιο. Ο client σου (Outlook, Thunderbird, Apple Mail) συνδέεται, κατεβάζει τα μηνύματα και στη συνέχεια τα διαγράφει από τον διακομιστή (ή τα αφήνει, ανάλογα με τις ρυθμίσεις σου). Τα email ζουν έπειτα αποκλειστικά τοπικά: σε ένα αρχείο .pst για το Outlook, στο τοπικό προφίλ του Thunderbird, σε μια βάση δεδομένων στον σκληρό δίσκο σου.

Με IMAP είναι το αντίστροφο: τα email ζουν στον διακομιστή. Ο client απλώς εμφανίζει αυτό που είναι αποθηκευμένο εξ αποστάσεως. Εξ ου και ο αδιαφανής συγχρονισμός μεταξύ όλων των συσκευών σου.

Το πρόβλημα εμφανίζεται στη μετάβαση μεταξύ των δύο. Όταν ανεβάζεις τα παλιά τοπικά POP email στον διακομιστή IMAP.

IMAP APPEND: η εντολή που αλλάζει τα πάντα

Όταν ο client email ανεβάζει ένα τοπικό μήνυμα σε έναν διακομιστή IMAP, χρησιμοποιεί την εντολή IMAP APPEND. Αυτή η εντολή λέει στον διακομιστή: "αποθήκευσε αυτό το μήνυμα σε αυτόν τον φάκελο".

Ο διακομιστής λαμβάνει το μήνυμα, το αποθηκεύει και του αποδίδει ένα timestamp. Αυτό το timestamp είναι το INTERNALDATE. Είναι το κεντρικό μεταδεδομένο του IMAP: δείχνει πότε κατατέθηκε το μήνυμα στον διακομιστή. Και από προεπιλογή, αν ο client δεν καθορίσει ρητά μια ημερομηνία στην εντολή APPEND, ο διακομιστής χρησιμοποιεί... την παρούσα στιγμή.

Με άλλα λόγια: δεν έχει σημασία αν το μήνυμα περιέχει στις κεφαλίδες του ημερομηνία από το 2018. Αν κανείς δεν πει στον διακομιστή "αυτό το email είναι από το 2018", ο διακομιστής συμπεραίνει ότι κατατέθηκε τώρα και του αποδίδει το INTERNALDATE της σημερινής ημέρας.

(Αν έχεις δει ποτέ τις ακατέργαστες κεφαλίδες ενός email, ξέρεις ότι δεν είναι ακριβώς ανάγνωσμα για παραλία. Βλέπεις τη γραμμή Date: ανάμεσα σε δεκάδες άλλες γραμμές Received:. Αυτό το πεδίο Date:, που ορίζεται από το RFC 2822, περιέχει την πραγματική ημερομηνία αποστολής. Το INTERNALDATE όμως είναι ξεχωριστό μεταδεδομένο, αποθηκευμένο στην πλευρά του διακομιστή, που δεν έχει καμία σχέση με το περιεχόμενο του ίδιου του μηνύματος.)

Γιατί διαφέρει από μια μεταφορά IMAP-to-IMAP

Σε μια κλασική μεταφορά από έναν διακομιστή IMAP σε άλλον (με BitTitan, CloudM, imapsync κ.λπ.), το πρόβλημα είναι ελαφρώς διαφορετικό. Το εργαλείο μεταφοράς αντιγράφει τα μηνύματα από έναν διακομιστή στον άλλο, και σε αυτή την περίπτωση μπορεί (θεωρητικά) να μεταδώσει το αρχικό INTERNALDATE στον διακομιστή προορισμού μέσω της εντολής APPEND. Το πρόβλημα εκεί είναι ότι ορισμένα εργαλεία προσθέτουν μια κεφαλίδα Received: με την ημερομηνία μεταφοράς, κάτι που μπερδεύει την εμφάνιση σε clients όπως το Outlook.

Στη δική σου περίπτωση, ξεκινάς από δεδομένα αμιγώς τοπικά. Δεν υπάρχει κάποιο αρχικό INTERNALDATE προς αντιγραφή. Το αρχείο .pst ή το προφίλ Thunderbird αποθηκεύει τα μηνύματα στη δική του ιδιόκτητη μορφή, με τα δικά του εσωτερικά μεταδεδομένα. Όταν ο client email ξαναδιαβάζει αυτά τα μηνύματα για να τα ανεβάσει στον διακομιστή IMAP, ανακατασκευάζει την εντολή APPEND από το περιεχόμενο του μηνύματος. Και τις περισσότερες φορές, δεν μεταδίδει ρητή ημερομηνία.

Αποτέλεσμα: ο διακομιστής IMAP λαμβάνει εκατοντάδες ή χιλιάδες μηνύματα μέσα σε λίγα λεπτά και αποδίδει σε όλα το ίδιο χρονικό εύρος: τώρα.

Αυτός ακριβώς είναι ο λόγος που το πρόβλημα εξαπλώνεται άμεσα σε όλες τις συσκευές σου. Το τηλέφωνό σου, το tablet σου, ο δεύτερος υπολογιστής σου: όλοι συνδέονται στον ίδιο διακομιστή IMAP και βλέπουν ακριβώς το ίδιο πράγμα. Καμία διόρθωση δεν είναι δυνατή από την πλευρά του client.

Ποιος client εμφανίζει τι, και γιατί

Δεν αντιδρούν όλα τα προγράμματα email με τον ίδιο τρόπο. Αυτό είναι κάτι που πολλοί διαχειριστές IT ανακαλύπτουν εκ των υστέρων.

Το Outlook (στις πρόσφατες εκδόσεις του, και ιδιαίτερα από τις ενημερώσεις του 2023-2024) χρησιμοποιεί το INTERNALDATE του διακομιστή για τη στήλη "Λήφθηκε". Εμφανίζει λοιπόν την ημερομηνία ανεβάσματος, όχι την αρχική ημερομηνία αποστολής. Για περισσότερες λεπτομέρειες σχετικά με αυτή τη συμπεριφορά, δες: Outlook: ημερομηνία IMAP παραλαβής vs αποστολής.

Το Gmail / Google Workspace και το Thunderbird έχουν συμπεριφορές λίγο πιο διαβαθμισμένες. Το Gmail, για παράδειγμα, μπορεί μερικές φορές να χρησιμοποιεί το πεδίο Date: της κεφαλίδας του μηνύματος για εμφάνιση, δίνοντας την εντύπωση ότι όλα είναι εντάξει... μέχρι να προσπαθήσεις να ταξινομήσεις κατά ημερομηνία και να διαπιστώσεις ότι η σειρά είναι εντελώς τυχαία.

Το Apple Mail εμφανίζει συνήθως την ημερομηνία που εξάγεται από την κεφαλίδα Date:, αλλά η ταξινόμηση και η αναζήτηση χρησιμοποιούν το INTERNALDATE στο παρασκήνιο. Έτσι τα email σου μπορεί οπτικά να "φαίνονται" σωστά χρονολογημένα, αλλά η ταξινόμηση δεν λειτουργεί πλέον σωστά. Για λεπτομέρειες σχετικά με τη συμπεριφορά του Apple Mail, δες Apple Mail: λάθος ημερομηνία μετά τη μεταφορά.

Τα καλά νέα: η αρχική ημερομηνία είναι άθικτη

Η κεφαλίδα Date: κάθε email, αυτή που περιέχει την πραγματική ημερομηνία αποστολής (ή παραλαβής), δεν έχει αλλάξει. Είναι ακόμα εκεί, μέσα στο σώμα του μηνύματος. Αυτή βλέπεις όταν ανοίγεις ένα email και κοιτάς τις λεπτομέρειες.

Αυτό που ο διακομιστής IMAP "χάλασε" είναι μόνο το INTERNALDATE, αυτό το εξωτερικό μεταδεδομένο ως προς το μήνυμα. Το ίδιο το μήνυμα είναι άθικτο.

Αυτό είναι που κάνει τη διόρθωση εφικτή. Και εξηγεί επίσης γιατί το πρόβλημα μπορεί να περάσει απαρατήρητο για ένα διάστημα: τα email φαίνονται σωστά όταν τα ανοίγεις ένα ένα. Μόνο όταν κοιτάς τη λίστα των εισερχομένων σου, ταξινομημένη κατά ημερομηνία, γίνεται ορατό το πρόβλημα. Email του 2019 εμφανίζονται στην κορυφή σαν να μόλις έφτασαν. Όλα με την ίδια ημερομηνία.

Το πρόβλημα της κλίμακας: 3.000 email είναι διαφορετικό από 3

Ίσως σκέφτεσαι: "Απλώς θα τα διαγράψω και θα τα εισάγω ξανά, αυτή τη φορά σωστά." Σε 5 ή 10 δοκιμαστικά email, ναι, λειτουργεί. Σε ένα γραμματοκιβώτιο με 8.000 μηνύματα, εμφωλευμένους φακέλους, μεγάλα συνημμένα, S/MIME υπογεγραμμένα email και κλωστές συζητήσεων που ανεβαίνουν στο 2015... είναι τελείως διαφορετική ιστορία.

Ένα σπιτικό script που λειτουργεί σε μια δοκιμαστική παρτίδα 50 email μπορεί κάλλιστα να παράγει διπλότυπα, να χάσει συνημμένα ή να σπάσει κλωστές συζητήσεων σε ένα γραμματοκιβώτιο παραγωγής. Η διαχείριση ορίων API, των timeouts δικτύου, των μηνυμάτων με ασυνήθιστες δομές MIME... τόσες οριακές περιπτώσεις που ένα μη εξειδικευμένο εργαλείο δεν χειρίζεται.

Και αν κάτι πάει στραβά στη μέση; Χωρίς μηχανισμό αντιγράφων ασφαλείας και επαναφοράς, χάνεις δεδομένα χωρίς δυνατότητα ανάκτησης.

Το πρόβλημα είναι γνωστό στους admins που διαχειρίζονται μεταφορές μεγάλου όγκου. Το να καταλαβαίνεις γιατί οι ημερομηνίες έχουν χαλάσει είναι ένα πράγμα. Το να διορθώσεις σωστά 15.000 email διατηρώντας κάθε δομή μηνύματος είναι εντελώς άλλο. Για περισσότερες λεπτομέρειες, το άρθρο Οι ημερομηνίες email διορθώνονται μετά τη μεταφορά; αναλύει τις διαφορετικές προσεγγίσεις και τα όριά τους.

Πώς το Redate.io χειρίζεται αυτή την περίπτωση

Το Redate.io σχεδιάστηκε ακριβώς για αυτού του είδους τις καταστάσεις. Η μηχανή ανάλυσής του εντοπίζει τα email των οποίων το INTERNALDATE δεν αντιστοιχεί στην ημερομηνία που περιέχεται στις κεφαλίδες του μηνύματος, είτε πρόκειται για μεταφορά POP σε IMAP, είτε μεταξύ διακομιστών IMAP, είτε για χειροκίνητο ανέβασμα τοπικών αρχείων.

Το pipeline πολλαπλών σταδίων επιθεωρεί την αλυσίδα κεφαλίδων κάθε μηνύματος, επαληθεύει τη συμμόρφωση με το RFC και ανακατασκευάζει τα μεταδεδομένα ημερομηνίας χωρίς να αλλοιώσει το περιεχόμενο του μηνύματος: ούτε το κείμενο, ούτε τα συνημμένα, ούτε τη δομή MIME, ούτε τυχόν ψηφιακές υπογραφές. Κάθε διορθωμένο email επαληθεύεται ξεχωριστά πριν οριστικοποιηθεί.

Τα αρχικά μηνύματα διατηρούνται σε ένα ορατό φάκελο αντιγράφων ασφαλείας για 30 ημέρες. Αν κάτι δεν σου ταιριάζει, μπορείς να επαναφέρεις.

Η αρχική σάρωση είναι δωρεάν: το Redate αναλύει το γραμματοκιβώτιό σου, εντοπίζει τα επηρεαζόμενα email και σου γνωστοποιεί τον ακριβή αριθμό πριν αποφασίσεις οτιδήποτε. Καμία δέσμευση στα τυφλά.

Το Redate.io συνδέεται απευθείας στα γραμματοκιβώτιά σου μέσω Google Workspace (domain delegation), Microsoft 365 (Azure AD) ή απευθείας IMAP. Καμία τοπική εγκατάσταση. Καμία εξαγωγή αρχείων .pst για χειροκίνητη διαχείριση.

Για τους admins που διαχειρίζονται πολλά γραμματοκιβώτια, το άρθρο MSP: διόρθωση ημερομηνιών email πελατών αξίζει να διαβαστεί. Και για τις ιδιαιτερότητες της διόρθωσης στο Thunderbird, που έχει τη δική του συμπεριφορά κατά τη μετάβαση POP/IMAP, δες Thunderbird: λάθος ημερομηνία μετά τη μεταφορά.

Αν είναι ακόμα να γίνει: πρόληψη του προβλήματος

Αν δεν έχεις ανεβάσει ακόμα τα τοπικά αρχεία σου στον διακομιστή IMAP, ή αν σχεδιάζεις άλλες μεταφορές λογαριασμών POP στον οργανισμό σου, υπάρχουν μερικά πράγματα που αξίζει να έχεις κατά νου.

  • Έλεγξε αν ο client email σου υποστηρίζει τη ρητή μεταβίβαση ημερομηνίας στην εντολή APPEND. Το Thunderbird, για παράδειγμα, είχε μεταβλητές συμπεριφορές ανάλογα με την έκδοση σε αυτό το σημείο.
  • Κάνε πρώτα δοκιμή σε έναν λογαριασμό επαλήθευσης με 50-100 αντιπροσωπευτικά μηνύματα: παλιά email, με συνημμένα, υπογεγραμμένα email. Έλεγξε τις εμφανιζόμενες ημερομηνίες σε διαφορετικούς clients.
  • Σχεδίασε τη διόρθωση πριν οι τελικοί χρήστες αρχίσουν να εργάζονται στο μεταφερμένο γραμματοκιβώτιο. Η διόρθωση ημερομηνιών σε ένα ενεργό γραμματοκιβώτιο είναι πιο σύνθετη από ό,τι σε ένα "καθαρό" μετά τη μεταφορά.
  • Κατέγραψε τον αριθμό των email πριν και μετά τη μεταφορά. Είναι ο μόνος τρόπος να εντοπίσεις σιωπηλές απώλειες.

Για μια πλήρη λίστα ελέγχου των σημείων που πρέπει να εξετάσεις πριν και μετά τη μεταφορά, το άρθρο Checklist μετεγκατάστασης email: πρόληψη προβλημάτων ημερομηνιών καλύπτει το σύνολο των περιπτώσεων.

Τα παλιά σου email εμφανίζουν τη σημερινή ημερομηνία μετά τη μετάβαση από POP σε IMAP; Εκκίνησε μια δωρεάν σάρωση στο Redate.io για να μετρήσεις την έκταση του προβλήματος και να διορθώσεις τα μεταδεδομένα ημερομηνίας χωρίς να αλλάξει τίποτα στο περιεχόμενο των μηνυμάτων σου.

Σχετικά άρθρα