Import PST στο Outlook: γιατί χάνονται οι ημερομηνίες

8 min

Το σύμπτωμα: όλα τα email σας έχουν ημερομηνία σήμερα

Μόλις ολοκληρώσατε μια εισαγωγή PST στο Outlook. Η μπάρα προόδου έφτασε στο 100%, όλα πήγαν καλά. Και μετά ανοίγετε τα εισερχόμενα... και κάθε email που εισήχθη εμφανίζει την ημερομηνία του σήμερα. Ένα μήνυμα από το 2019, ένα άλλο από το 2021, ένα αρχείο πέντε χρόνων: όλα φέρουν την ίδια ημερομηνία. Αυτή της ημέρας εισαγωγής.

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

PST τοπικά και IMAP: δύο τελείως διαφορετικοί κόσμοι

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

Ένα αρχείο PST (Personal Storage Table) είναι ιδιόκτητη μορφή της Microsoft. Αποθηκεύει email με πλήρη μεταδεδομένα: ημερομηνία αποστολής, ημερομηνία παραλαβής, συνημμένα, κατηγορίες, ενδείξεις ανάγνωσης. Αυτά τα μεταδεδομένα διαχειρίζεται απευθείας το Outlook, έξω από οποιοδήποτε πρωτόκολλο αλληλογραφίας. Όταν ανοίγετε ένα PST στο Outlook χωρίς σύνδεση σε διακομιστή, οι ημερομηνίες που εμφανίζονται προέρχονται κατευθείαν από τα εσωτερικά πεδία του αρχείου PST. Μέχρι εδώ, όλα καλά.

Το πρόβλημα εμφανίζεται όταν προσπαθείτε να μεταφέρετε αυτό το περιεχόμενο σε ένα γραμματοκιβώτιο που φιλοξενείται σε διακομιστή IMAP, είτε Microsoft 365, είτε Google Workspace, είτε οποιοδήποτε κλασικό hosting. Εκεί αφήνετε τον κόσμο PST και μπαίνετε στον κόσμο IMAP, όπου οι κανόνες αλλάζουν ριζικά.

IMAP APPEND και INTERNALDATE: η καρδιά του προβλήματος

Στο IMAP, κάθε μήνυμα αποθηκευμένο στον διακομιστή έχει δύο τύπους δεδομένων ημερομηνίας:

  • Η κεφαλίδα Date: (RFC 2822), που αποτελεί μέρος του περιεχομένου του ίδιου του μηνύματος. Είναι η ημερομηνία που έγραψε ο αποστολέας.
  • Η INTERNALDATE, που είναι ένα μεταδεδομένο διαχειριζόμενο από τον διακομιστή IMAP. Αντιπροσωπεύει τη στιγμή που το μήνυμα κατατέθηκε στον διακομιστή. Αυτή η τιμή χρησιμοποιείται από το Outlook για την ταξινόμηση μηνυμάτων στην προβολή "Ημερομηνία παραλαβής".

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

Όταν ένα email φτάνει κανονικά στον διακομιστή σας, ο διακομιστής αλληλογραφίας ορίζει αυτόματα την INTERNALDATE στη στιγμή ακριβώς της παραλαβής. Αποτέλεσμα: η ημερομηνία που εμφανίζεται στο Outlook αντιστοιχεί πράγματι στο πότε λάβατε το μήνυμα.

Όταν το Outlook εισάγει ένα αρχείο PST σε γραμματοκιβώτιο IMAP, χρησιμοποιεί την εντολή IMAP APPEND για να στείλει κάθε μήνυμα στον διακομιστή. Το πρότυπο IMAP επιτρέπει να οριστεί ρητά η INTERNALDATE κατά τη διάρκεια ενός APPEND. Αλλά το Outlook δεν το κάνει. Στέλνει τα μηνύματα χωρίς να καθορίζει INTERNALDATE. Ο διακομιστής IMAP, χωρίς οδηγίες, εφαρμόζει τον προεπιλεγμένο κανόνα: η INTERNALDATE ορίζεται στην τρέχουσα ώρα, δηλαδή τη στιγμή της εισαγωγής.

Αποτέλεσμα: 8.000 email εισήχθησαν, 8.000 email με ημερομηνία σήμερα.

Γιατί το Outlook συμπεριφέρεται έτσι

Δεν πρόκειται για παράλειψη της Microsoft. Είναι μια επιλογή υλοποίησης που μάλλον φαινόταν λογική στην εποχή της: στην αρχική περίπτωση χρήσης εισαγωγής PST, ο χρήστης αρχειοθετεί μηνύματα τοπικά και τα "εισάγει" στο τρέχον γραμματοκιβώτιό του. Η σχετική ημερομηνία για ταξινόμηση είναι η αρχική ημερομηνία παραλαβής... αλλά η Microsoft επέλεξε να μην μεταφέρει την INTERNALDATE κατά την εισαγωγή.

Για να είμαστε ακριβείς, αυτή η συμπεριφορά αφορά την εισαγωγή PST μέσω του εγγενούς οδηγού του Outlook (Αρχείο > Άνοιγμα και εξαγωγή > Εισαγωγή/Εξαγωγή). Άλλες μέθοδοι εισαγωγής, όπως ορισμένα εργαλεία τρίτων ή μεταναστεύσεις μέσω του Exchange Admin Center, μπορεί να συμπεριφέρονται διαφορετικά ανάλογα με την υλοποίησή τους για το IMAP APPEND.

Αυτή η συμπεριφορά είναι γνωστή και τεκμηριωμένη στα φόρουμ της Microsoft εδώ και χρόνια. Δεν άλλαξε με το Outlook 2016, ούτε με το Outlook 2019, ούτε με τις τρέχουσες εκδόσεις Microsoft 365. Ένας χρήστης που κάνει εισαγωγή PST σήμερα θα αντιμετωπίσει ακριβώς το ίδιο πρόβλημα όπως το 2015.

Πώς διαφέρει από μια κλασική μετεγκατάσταση IMAP

Εδώ γίνεται ενδιαφέρον, γιατί η εισαγωγή PST παράγει αποτέλεσμα παρόμοιο με μια κλασική μετεγκατάσταση IMAP με χαλασμένες ημερομηνίες, αλλά μέσω διαφορετικού μηχανισμού.

Σε μια τυπική μετεγκατάσταση IMAP, για παράδειγμα με το BitTitan MigrationWiz ή το imapsync, τα email μεταφέρονται από έναν πηγαίο διακομιστή IMAP σε έναν διακομιστή IMAP προορισμού. Το εργαλείο μετεγκατάστασης ανακτά τα μηνύματα και τα επανεισάγει μέσω IMAP APPEND. Ορισμένα εργαλεία διατηρούν σωστά την INTERNALDATE, άλλα όχι. Αλλά σε κάθε περίπτωση, τα μηνύματα έχουν ήδη μια κεφαλίδα Received: με την ημερομηνία μετεγκατάστασης που προστέθηκε καθ' οδόν, κάτι που μπορεί να διαταράξει την εμφάνιση στο Outlook ανεξάρτητα από την INTERNALDATE.

Με εισαγωγή PST, ο μηχανισμός είναι απλούστερος: δεν προστίθεται κεφαλίδα Received: μετεγκατάστασης (τα αρχεία PST δεν διέρχονται από ενδιάμεσο διακομιστή αλληλογραφίας), αλλά η INTERNALDATE απλώς δεν ορίζεται ποτέ στη σωστή τιμή. Το ορατό αποτέλεσμα είναι πανομοιότυπο, η υποκείμενη αιτία είναι ελαφρώς διαφορετική.

Αυτή η διάκριση έχει άμεση συνέπεια στη διόρθωση: η προσέγγιση που πρέπει να ακολουθηθεί δεν είναι ακριβώς η ίδια ανάλογα με το αν αντιμετωπίζουμε μετεγκατάσταση IMAP ή εισαγωγή PST. Δείτε επίσης γιατί το INTERNALDATE προκαλεί χαλασμένες ημερομηνίες για λεπτομερή εξήγηση και των δύο περιπτώσεων.

Γιατί οι επιλογές προβολής Outlook δεν διορθώνουν τίποτα

Η συνηθισμένη αντίδραση όταν ανακαλύπτεται το πρόβλημα είναι να ψάξει κανείς στις ρυθμίσεις του Outlook. Και υπάρχει πράγματι μια ρύθμιση που φαίνεται υποσχόμενη: η δυνατότητα ταξινόμησης email κατά "Ημερομηνία" αντί "Ημερομηνία παραλαβής".

Η ταξινόμηση κατά ημερομηνία αποστολής δεν είναι λύση. Είναι επίδεσμος.

Να γιατί: ακόμα κι αν αλλάξετε την ταξινόμηση για να εμφανίζεται η στήλη "Ημερομηνία" (που αντιστοιχεί στην κεφαλίδα Date: του μηνύματος, δηλαδή την αρχική ημερομηνία), πολλά προβλήματα παραμένουν:

  • Η αναζήτηση Outlook δείκτη βασίζεται στην INTERNALDATE. Μια αναζήτηση "email Ιανουαρίου 2020" δεν θα επιστρέψει τα εισαχθέντα email του Ιανουαρίου 2020, γιατί η INTERNALDATE τους λέει ότι χρονολογούνται από την ημέρα εισαγωγής.
  • Οι φάκελοι "Σήμερα", "Αυτή την εβδομάδα", "Αυτόν τον μήνα" στη διεπαφή Outlook βασίζονται στην INTERNALDATE, όχι στην κεφαλίδα Date:.
  • Στις διεπαφές ιστού (Outlook Web App, Gmail) και στα mobile clients, η εμφανιζόμενη ημερομηνία και η συμπεριφορά ταξινόμησης εξαρτώνται σχεδόν πάντα από την INTERNALDATE του διακομιστή.
  • Οι κανόνες και τα αυτόματα φίλτρα που εφαρμόζονται στην ημερομηνία παραλαβής δεν θα λειτουργούν σωστά.

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

Η επανασυγχρονισμός OST δεν βοηθά επίσης

Άλλη κλασική απόπειρα: άδειασμα της κρυφής μνήμης OST και αναγκαστικός πλήρης επανασυγχρονισμός από τον διακομιστή. Η ιδέα είναι ότι το πρόβλημα ίσως να βρίσκεται στην τοπική κρυφή μνήμη του Outlook και όχι στον διακομιστή.

Λάθος δρόμος. Το αρχείο OST είναι τοπική κρυφή μνήμη που αντικατοπτρίζει την κατάσταση του διακομιστή IMAP. Αν η INTERNALDATE είναι λανθασμένη στον διακομιστή, θα είναι λανθασμένη και στο OST μετά τον επανασυγχρονισμό. Η διαγραφή του OST δεν αλλάζει τίποτα στα δεδομένα που αποθηκεύονται στον διακομιστή Exchange Online ή Google Workspace. Ο διακομιστής είναι η αυθεντία.

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

Το πρόβλημα κλίμακας: 1 email είναι τετριμμένο. 15.000 είναι άλλη ιστορία

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

Μερικές πραγματικότητες από την πράξη:

  • Τα API Microsoft Graph και Gmail επιβάλλουν όρια ρυθμού (rate limits). Ένα αφελές script θα πυροδοτήσει σφάλματα 429 Too Many Requests, θα διακόψει την εκτέλεσή του στη μέση μιας διόρθωσης, και θα σας αφήσει με ένα μερικώς διορθωμένο γραμματοκιβώτιο, χωρίς να ξέρετε ποια email επεξεργάστηκαν και ποια όχι.
  • Ορισμένα email σε ένα PST μπορεί να έχουν κεφαλίδες Date: κακοδιαμορφωμένες ή ελλιπείς. Ένα script χωρίς χειρισμό αυτών των οριακών περιπτώσεων μπορεί να καταστρέψει αυτά τα μηνύματα ή να τα παραλείψει αθόρυβα.
  • Τα υπογεγραμμένα (S/MIME) ή κρυπτογραφημένα (PGP) email έχουν επιπλέον περιορισμούς ακεραιότητας. Η τροποποίηση των μεταδεδομένων τους χωρίς προφύλαξη μπορεί να ακυρώσει την κρυπτογραφική υπογραφή.
  • Οι δομές multipart/alternative με σύνθετα όρια MIME αντιδρούν μερικές φορές απρόβλεπτα σε λειτουργίες τροποποίησης.
  • Κανένας μηχανισμός επαναφοράς. Αν κάτι πάει στραβά στη μέση της επεξεργασίας, πώς επιστρέφετε στην αρχική κατάσταση;

Ένα script που λειτουργεί σε 10 δοκιμαστικά email δεν θα λειτουργήσει σε ένα γραμματοκιβώτιο παραγωγής 50.000 μηνυμάτων. Πέρυσι, ένας πελάτης με αρχείο PST 40 GB προσπάθησε να το διορθώσει με ένα Python script από το Stack Overflow. Αποτέλεσμα: 3.000 email σε διπλότυπο, 200 μηνύματα με μη προσβάσιμα συνημμένα, και δύο εβδομάδες χειροκίνητης εκκαθάρισης.

Τι κάνει το Redate.io σε αυτή την περίπτωση

Το Redate.io αναλύει τα μεταδεδομένα κάθε μηνύματος στο γραμματοκιβώτιο προορισμού, εντοπίζει τα email με λανθασμένες ημερομηνίες (συμπεριλαμβανομένων εκείνων από εισαγωγή PST), και εφαρμόζει διόρθωση μέσω του ιδιόκτητου κινητήρα του. Το pipeline ανάλυσης πολλαπλών σταδίων συγκρίνει την αλυσίδα κεφαλίδων κάθε μηνύματος, εξάγει την αρχική ημερομηνία με επαλήθευση συμμόρφωσης RFC, και προβαίνει σε στοχευμένη διόρθωση μεταδεδομένων χωρίς τροποποίηση του περιεχομένου του μηνύματος.

Κάθε email που διορθώνεται επαληθεύεται μεμονωμένα. Τα πρωτότυπα διατηρούνται σε ένα ορατό φάκελο δημιουργίας αντιγράφων ασφαλείας για 30 ημέρες πριν από οποιαδήποτε οριστική τροποποίηση. Η διόρθωση λειτουργεί και στις τρεις κύριες πλατφόρμες: Microsoft 365 (μέσω Azure AD), Google Workspace (μέσω εκχώρησης domain), και απευθείας IMAP για κλασικά hosting.

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

Δείτε επίσης:

Η εισαγωγή PST αντικατέστησε όλες τις ημερομηνίες των email σας; Σαρώστε δωρεάν το γραμματοκιβώτιό σας στο Redate.io για να μετρήσετε την έκταση του προβλήματος πριν ενεργήσετε.

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