Emails με λάθος ημερομηνία μετά μεταφορά cPanel

8 λεπ. ανάγνωσης Τελευταία ενημέρωση:

Το Δευτέρα πρωί που πονάει

Μόλις ολοκληρώσατε τη μεταφορά από shared hosting cPanel σε Google Workspace ή Microsoft 365. Η διαδικασία πήγε καλά, τα γραμματοκιβώτια είναι προσβάσιμα, οι χρήστες συνδέονται. Και μετά, γύρω στις 9:15, πέφτει το πρώτο ticket: «Τα παλιά μου email δείχνουν όλα την ίδια ημερομηνία, αυτή του περασμένου Σαββατοκύριακου.» Μετά ένα δεύτερο. Μετά δέκα.

Δεν πρόκειται για μεμονωμένο σφάλμα. Είναι η άμεση συνέπεια του τρόπου με τον οποίο οι μεταφορές από cPanel χειρίζονται (ή μάλλον δεν χειρίζονται) τα μεταδεδομένα ημερομηνίας των email.

cPanel, Roundcube, Horde: ένα συγκεκριμένο πλαίσιο IMAP

Ένα shared cPanel hosting περιβάλλον είναι ένας διακομιστής Linux που εκτελεί έναν διακομιστή IMAP (συνήθως Dovecot) με το Roundcube ή το Horde ως διεπαφή webmail. Τίποτα το εξωτικό. Ομως αυτό το πλαίσιο έχει μερικές ιδιομορφίες που κάνουν τις μεταφορές σε enterprise πλατφόρμες πιο δύσκολες απ' όσο φαίνεται.

Καταρχην, τα γραμματοκιβώτια cPanel τείνουν να συσσωρεύουν email για χρόνια, μερικές φορές για μια δεκαετία. Ένας πελάτης που φιλοξενεί το domain του σε shared hosting από το 2013 μπορεί να έχει πολύ βαθιά αρχεία. Αυτός ο όγκος, σε συνδυασμό με τον τρόπο εκτέλεσης της μεταφοράς, δημιουργεί πρόσφορο έδαφος για το πρόβλημα της ημερομηνίας.

Επιπλέον, τα εργαλεία που χρησιμοποιούνται για αυτές τις μεταφορές είναι συχνά είτε το εγγενές εργαλείο του cPanel (η λειτουργία "Migrations" του WHM), το imapsync εκτελούμενο από τη γραμμή εντολών από τον πάροχο φιλοξενίας ή τον σύμβουλο IT, είτε λύσεις καταναλωτικού επιπέδου όπως το GSMMO για μεταφορά στο Google Workspace.

Γιατί οι ημερομηνίες αλλοιώνονται μετά από μια μεταφορά cPanel

Για να κατανοήσετε το πρόβλημα, πρέπει να συλλάβετε δύο ξεχωριστές έννοιες: την κεφαλίδα Date: ενός email και το IMAP INTERNALDATE.

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

Το INTERNALDATE, από την άλλη, είναι ένα στοιχείο μεταδεδομένων που ο διακομιστής IMAP συνδέει με κάθε αποθηκευμένο μήνυμα. Είναι ξεχωριστό από το ίδιο το περιεχόμενο του μηνύματος. Όταν ένα email φτάνει κανονικά σε έναν διακομιστή, το INTERNALDATE προκύπτει από τις κεφαλίδες Received:, ή από τη χρονοσφραγίδα κατάθεσης αν το μήνυμα υποβάλλεται απευθείας. Αυτή είναι η τιμή που χρησιμοποιούν το Outlook, το Thunderbird και οι περισσότεροι email clients για την ταξινόμηση των μηνυμάτων.

Κατά τη διάρκεια μιας μεταφοράς IMAP, τα μηνύματα αντιγράφονται από έναν διακομιστή σε άλλον. Το πρόβλημα: το εργαλείο μεταφοράς πρέπει να δημιουργήσει κάθε μήνυμα στον διακομιστή προορισμού. Και για πολλά εργαλεία, το INTERNALDATE του νεοδημιουργημένου μηνύματος ορίζεται στην ημερομηνία της μεταφοράς, όχι στην αρχική ημερομηνία του μηνύματος. Επιπλέον, μια κεφαλίδα Received: με χρονοσφραγίδα της ημερομηνίας μεταφοράς προστίθεται στην αρχή της αλυσίδας κεφαλίδων, κάτι που μπερδεύει ακόμη περισσότερο τους email clients που βασίζονται σε αυτήν για να υπολογίσουν την εμφανιζόμενη ημερομηνία.

Το αποτέλεσμα: ένα email του 2019 καταλήγει στο Google Workspace με INTERNALDATE ορισμένο στην ημέρα της μεταφοράς, και μια κεφαλίδα Received: με σφραγίδα χθεσινής ημερομηνίας. Το Outlook το εμφανίζει στα εισερχόμενα σαν να μόλις έφτασε. Ολόκληρο το χρονολόγιο του αρχείου καταστρέφεται.

Το εργαλείο μεταφοράς WHM / cPanel

Το εργαλείο που είναι ενσωματωμένο στο WHM για τη μεταφορά λογαριασμών cPanel σε άλλη πλατφόρμα δημιουργεί αυτό το πρόβλημα σχεδόν συστηματικά όταν ο προορισμός είναι εξωτερικός διακομιστής IMAP (Google Workspace, Microsoft 365). Αντιγράφει το περιεχόμενο Maildir στον νέο διακομιστή χωρίς να διατηρεί το αρχικό INTERNALDATE. Κάθε μήνυμα λαμβάνει τη χρονοσφραγίδα της λειτουργίας.

imapsync και χειροκίνητες μεταφορές από cPanel

Το imapsync είναι ένα ισχυρό εργαλείο, αλλά η προεπιλεγμένη συμπεριφορά του δεν διατηρεί πάντα τις ημερομηνίες. Χωρίς τις σωστές παραμέτρους (και τη σωστή έκδοση), μπορεί εύκολα να αντιγράψει 40.000 μηνύματα και να σφραγίσει καθένα από αυτά με την ημερομηνία εκτέλεσης του script. (Αν έχετε ποτέ περάσει από τα logs του imapsync γραμμή προς γραμμή για να διαγνώσετε ένα πρόβλημα ημερομηνίας σε ένα γραμματοκιβώτιο 25.000 μηνυμάτων, ξέρετε ότι είναι μια εμπειρία που δεν θέλετε να επαναλάβετε.)

Για να είμαστε ακριβείς, το imapsync έχει όντως επιλογές που επιχειρούν τη διατήρηση των ημερομηνιών, αλλά αυτές οι επιλογές αλληλεπιδρούν διαφορετικά ανάλογα με τον διακομιστή προέλευσης και προορισμού, και η αποτελεσματικότητά τους δεν είναι εγγυημένη σε όλες τις διαμορφώσεις cPanel / Dovecot.

GSMMO και εργαλεία καταναλωτικού επιπέδου

Το Google Workspace Migration for Microsoft Outlook (GSMMO) έχει σχεδιαστεί για μεταφορά από το Outlook, όχι από έναν απλό διακομιστή IMAP. Όταν χρησιμοποιείται για μεταφορά από cPanel (μέσω ενός λογαριασμού IMAP ρυθμισμένου στο Outlook), οι ημερομηνίες υφίστανται την ίδια μεταχείριση: το INTERNALDATE στο Google Workspace ορίζεται στην ημερομηνία της μεταφοράς. Το πρόβλημα ημερομηνίας email του GSMMO τεκμηριώνεται μάλιστα ξεχωριστά, τόσο συχνό είναι.

Ποιοι email clients επηρεάζονται;

Η αλλοίωση της ημερομηνίας δεν εμφανίζεται με τον ίδιο τρόπο σε κάθε client.

Το Outlook επηρεάζεται περισσότερο. Χρησιμοποιεί το INTERNALDATE (ή την κεφαλίδα Received: της μεταφοράς) ως κύριο κλειδί ταξινόμησης για τους φακέλους. Μετά από μια κακοδιαχειρισμένη μεταφορά cPanel, ένα γραμματοκιβώτιο Outlook μπορεί να δείχνει χιλιάδες αρχειοθετημένα email με την ημερομηνία του Σαββατοκύριακου της μεταφοράς. Η διόρθωση ημερομηνιών μεταφοράς imapsync στο Outlook είναι μία από τις πιο ζητούμενες διορθώσεις.

Το Gmail (Google Workspace) εμφανίζει γενικά την ημερομηνία από την κεφαλίδα Date: στη λίστα email, αλλά η ταξινόμηση μπορεί ακόμη να επηρεαστεί από το INTERNALDATE σε ορισμένες περιπτώσεις. Οι χρήστες αναφέρουν ασταθή συμπεριφορά στην αναζήτηση και στην ταξινόμηση βάσει ημερομηνίας.

Το Apple Mail και το Thunderbird συμπεριφέρονται πιο ανακόλουθα, αλλά κανένα από τα δύο δεν είναι απρόσβλητο, ειδικά όταν μια κεφαλίδα Received: της μεταφοράς βρίσκεται στην κορυφή της αλυσίδας κεφαλίδων.

Καλά νέα: η αρχική ημερομηνία παραμένει εκεί

Αυτή είναι η τεχνική λεπτομέρεια που αλλάζει τα πάντα. Η αρχική κεφαλίδα Date: είναι γραμμένη μέσα στο ωμό σώμα του μηνύματος. Η μεταφορά δεν την αγγίζει. Όταν ανοίγετε ένα επηρεασμένο email και κοιτάτε τις ωμές κεφαλίδες (στο Gmail: "Εμφάνιση αρχικού", στο Outlook: File > Properties), μπορείτε να δείτε την αρχική Date: ανέπαφη, ακολουθούμενη από μία ή περισσότερες κεφαλίδες Received: όπου η πρώτη φέρει την ημερομηνία της μεταφοράς.

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

Γιατί το "να το διορθώσετε μόνοι σας" είναι πιο επικίνδυνο απ' όσο φαίνεται

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

Μερικές πραγματικότητες που τα αυτοσχέδια scripts συνήθως δεν λαμβάνουν υπόψη:

  • Email υπογεγραμμένα με S/MIME ή κρυπτογραφημένα με PGP: κάθε τροποποίηση στη δομή του μηνύματος ακυρώνει την κρυπτογραφική υπογραφή. Ένα email που περνούσε τον έλεγχο υπογραφής πριν τη διόρθωση δεν θα τον περάσει μετά. Χρήστες σε ρυθμιζόμενα περιβάλλοντα (δικηγορικά γραφεία, χρηματοοικονομικός τομέας, υγεία) ανακαλύπτουν αυτό το πρόβλημα τη χειρότερη στιγμή.
  • Κεφαλίδες μη-ASCII και κωδικοποίηση RFC 2047: τα γραμματοκιβώτια cPanel συσσωρεύουν χρόνια email από πολύ διαφορετικούς clients. Ορισμένες κεφαλίδες περιέχουν χαρακτήρες κωδικοποιημένους σύμφωνα με το RFC 2047. Ένα κακογραμμένο script που ανακατασκευάζει κεφαλίδες μπορεί να καταστρέψει σιωπηλά αυτές τις κωδικοποιήσεις.
  • Ενσωματωμένες δομές MIME: ένα email με τρία συνημμένα και εναλλακτικό σώμα HTML έχει σύνθετη δομή multipart. Το παραμικρό σφάλμα στα MIME boundaries κάνει το μήνυμα μη αναγνώσιμο, ή χειρότερα: τα συνημμένα εξαφανίζονται χωρίς κανένα μήνυμα σφάλματος.
  • Ορια API και rate limiting: το Google Workspace και το Microsoft 365 επιβάλλουν αυστηρά όρια στις λειτουργίες IMAP ανά λεπτό. Ένα script που δεν εφαρμόζει κατάλληλο exponential backoff θα προσκρούσει σε σφάλματα 429 στις 3 το πρωί, και θα ξυπνήσετε με μια μισοτελειωμένη μεταφορά χωρίς σαφή ιδέα για το πού σταμάτησε.
  • Καμία δυνατότητα επαναφοράς: αν κάτι πάει στραβά στη μέση, σε ποια κατάσταση επιστρέφετε; Παραμένουν εκεί τα αρχικά; Έχετε διπλότυπα; Το Redate.io διατηρεί τα αρχικά σε έναν ορατό φάκελο αντιγράφων ασφαλείας μέσα στο ίδιο σας το γραμματοκιβώτιο, ακριβώς για να αποφευχθεί αυτή η κατάσταση.
  • Ένα script που λειτουργεί σε 50 δοκιμαστικά email σε περιβάλλον ανάπτυξης δεν θα αντέξει απαραίτητα σε 18.000 μηνύματα σε ένα γραμματοκιβώτιο παραγωγής κληρονομημένο από έναν λογαριασμό cPanel που λειτουργεί από το 2011.

    Πώς το Redate.io διορθώνει τις ημερομηνίες μετά από μια μεταφορά cPanel

    Το Redate.io συνδέεται απευθείας με το γραμματοκιβώτιο προορισμού (Google Workspace, Microsoft 365 με απλή σύνδεση, ή απευθείας IMAP) και ξεκινά με μια δωρεάν ανάλυση για να εντοπίσει email των οποίων τα μεταδεδομένα ημερομηνίας δεν συμφωνούν με την αρχική κεφαλίδα Date:.

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

    Ειδικά για τις μεταφορές cPanel, η μηχανή αναγνωρίζει τα τυπικά χαρακτηριστικά των μεταφορών Dovecot-σε-IMAP και των scripts imapsync, συμπεριλαμβανομένων παραλλαγών ρύθμισης κοινών ανάμεσα σε παρόχους shared hosting.

    Συγκεκριμένοι οδηγοί ανά πλατφόρμα προορισμού

    Ανάλογα με το πού κατέληξε η μεταφορά σας από cPanel, αυτοί οι οδηγοί καλύπτουν τα ακριβή βήματα:

  • Διόρθωση ημερομηνιών μεταφοράς imapsync στο Gmail (Google Workspace)
  • Διόρθωση ημερομηνιών μεταφοράς imapsync στο Microsoft 365
  • Διόρθωση ημερομηνιών μεταφοράς imapsync στο Google Workspace
  • Διόρθωση ημερομηνιών email μετά από μεταφορά στο Google Workspace
  • Διόρθωση ημερομηνιών email μετά από μεταφορά στο Microsoft 365
  • Μεταφέρατε από cPanel και οι χρήστες σας βλέπουν λάθος ημερομηνίες; Εκτελέστε μια δωρεάν ανάλυση στο Redate.io για να διαπιστώσετε ακριβώς πόσα email επηρεάζονται, χωρίς να γίνει καμία αλλαγή μέχρι να την εγκρίνετε.

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