imapsync Tidak Menyimpan Tanggal? Cara Memperbaiki

5 min

Janji --syncinternaldates (dan Mengapa Tidak Berhasil)

Anda menjalankan perintah imapsync. Anda menyertakan --syncinternaldates karena sudah membaca dokumentasi dan Anda teliti. Migrasi selesai, log mengatakan semuanya ditransfer, nol kesalahan. Lalu Anda membuka kotak surat di Outlook dan setiap email menampilkan tanggal kemarin.

Ini adalah salah satu frustrasi paling umum dengan imapsync, dan sudah membingungkan sysadmin setidaknya sejak 2017. Flag --syncinternaldates seharusnya mempertahankan IMAP INTERNALDATE selama migrasi. Dan secara teknis, memang mencoba. Tapi "mencoba" membawa banyak beban dalam kalimat itu.

imapsync adalah tool open-source Perl yang ditulis oleh Gilles Lamiral, dan benar-benar bagus dalam apa yang dilakukannya. Menangani transfer kotak surat IMAP-ke-IMAP dengan tingkat keandalan yang membuat sebagian besar tool komersial iri. Tapi pelestarian tanggal tidak sepenuhnya di tangan imapsync, dan di sinilah hal-hal menjadi rumit.

Bagaimana Tanggal IMAP Sebenarnya Bekerja

Ada tiga "tanggal" berbeda yang terlibat dalam setiap email, dan kebanyakan orang (termasuk beberapa admin IT) mencampuradukkannya:

  • Header Date: (RFC 2822) - tanggal yang dicap oleh klien email pengirim saat pesan dibuat. Ini hidup di dalam body pesan dan tidak pernah diubah oleh server email.
  • Header Received: - setiap server email yang memproses pesan menambahkan satu dengan cap waktunya sendiri. Membentuk rantai dari pengirim ke penerima. Header Received terbaru adalah yang digunakan beberapa klien email untuk tampilan.
  • INTERNALDATE - cap waktu sisi server IMAP yang mengontrol pengurutan pesan di kotak surat. Diset ketika pesan pertama kali disimpan via IMAP APPEND.

Ketika imapsync memigrasi pesan, membaca dari server sumber (termasuk INTERNALDATE-nya) dan menulisnya ke server tujuan menggunakan IMAP APPEND. Flag --syncinternaldates memberitahu imapsync untuk meneruskan INTERNALDATE sumber ke server tujuan selama APPEND.

Masalahnya: server tujuan tidak wajib menghormati tanggal tersebut.

Mengapa Server Tujuan Mengabaikan INTERNALDATE

Spesifikasi IMAP (RFC 3501) mengatakan bahwa jika tanggal-waktu disediakan dengan perintah APPEND, server SEHARUSNYA menggunakannya. "SEHARUSNYA" dalam bahasa RFC berarti "lakukan ini kecuali Anda punya alasan bagus untuk tidak melakukannya". Beberapa platform email besar memutuskan mereka punya alasan bagus.

Microsoft 365 adalah pelanggar terbesar. Ketika pesan tiba via IMAP APPEND, pipeline transport Exchange mencapnya dengan header Received baru bertanggal saat ini, lalu menetapkan INTERNALDATE berdasarkan cap waktu pengiriman itu. Tidak peduli tanggal apa yang diminta imapsync. Server M365 menimpanya.

Google Workspace (Gmail) berperilaku berbeda tapi masih bisa menimbulkan masalah. Implementasi IMAP Gmail dalam kebanyakan kasus menghormati INTERNALDATE dari APPEND, tapi menambahkan header Received sendiri. Jika klien email yang membaca kotak surat mengutamakan header Received daripada INTERNALDATE untuk tampilan (dan Outlook melakukan tepat itu), tanggal tetap terlihat salah.

Kesalahan Command Line imapsync Umum yang Merusak Tanggal

Lupa --syncinternaldates sama sekali

Flag tidak diaktifkan secara default. Jika menjalankan imapsync --host1 sumber --host2 tujuan --user1 pengguna --user2 pengguna tanpanya, imapsync sama sekali tidak mencoba mempertahankan tanggal.

Menggunakan --syncinternaldates dengan --addheader

Beberapa panduan merekomendasikan penggunaan --addheader untuk menyuntikkan header kustom selama migrasi. Jika Anda menambahkan header, Anda memodifikasi pesan, yang dapat memicu server tujuan memperlakukannya sebagai pesan "baru".

Mencampurkan --minage dan --maxage dengan pelestarian tanggal

Flag --minage dan --maxage memfilter pesan mana yang dimigrasi berdasarkan usia. Tidak memengaruhi penanganan tanggal di tujuan.

Negosiasi SSL menyebabkan pergeseran cap waktu

Saat migrasi melalui TLS dengan --ssl1 dan --ssl2, setup koneksi menambah latensi. Dalam migrasi besar (50.000+ pesan), latensi ini terakumulasi.

Membaca Log imapsync: Apa yang Output Sebenarnya Katakan

imapsync menghasilkan log detail, yang bagus. Tapi output log bisa menyesatkan soal tanggal.

msg source stratemind/42 {5765} D:2019-01-15 13:22:07 -> dest stratemind/42 {5765} D:2019-01-15 13:22:07

Kedua tanggal cocok. Itu berarti imapsync mengirim INTERNALDATE yang benar ke tujuan. Tapi bukan berarti server tujuan benar-benar menyimpan tanggal itu. imapsync melaporkan apa yang diminta, bukan apa yang diterima server.

Migrasi imapsync Skala Besar: Di Mana Masalah Tanggal Berlipat Ganda

Migrasi kotak surat tunggal dengan imapsync menjengkelkan ketika tanggal rusak. Tapi MSP dan departemen IT yang menjalankan imapsync di ratusan kotak surat menghadapi skala masalah yang sama sekali berbeda.

Perbaikan DIY dan Batasannya

Jika mencari di forum dan mailing list (list imapsync-devel di SourceForge masih aktif sejak awal 2026), Anda akan menemukan saran mulai dari kreatif sampai berbahaya.

Beberapa orang menyarankan menggunakan Perl one-liner untuk memodifikasi INTERNALDATE di server tujuan secara langsung. Yang lain merekomendasikan mengekspor semua pesan ke format mbox, memanipulasi tanggal, dan mengimpor ulang. Beberapa menulis skrip Python yang menggunakan imaplib untuk mengambil, memodifikasi, dan menyisipkan ulang pesan.

Semua pendekatan ini berbagi masalah fundamental yang sama. Bagaimana Anda menangani pesan bertanda tangan S/MIME tanpa merusak tanda tangan? Bagaimana dengan struktur MIME multi-bagian dengan batas bersarang? Header non-ASCII yang dikodekan RFC 2047?

Bagaimana Redate.io Memperbaiki Masalah Tanggal imapsync

Header Date: asli selalu utuh setelah migrasi imapsync. imapsync mentransfer pesan mentah dengan setia; yang menyebabkan masalah tampilan adalah penanganan metadata server tujuan. Header asli itulah yang membuat koreksi memungkinkan.

Redate.io terhubung langsung ke kotak surat (Google Workspace, Microsoft 365, atau server IMAP apa pun), memindai email dengan anomali tanggal, dan menerapkan koreksi metadata yang ditargetkan melalui pipeline analisis rantai header dan rekonstruksi tanggal proprietary.

Setiap email yang dikoreksi diverifikasi secara individual: integritas pesan, pelestarian lampiran, penempatan folder, threading, label. Asli disimpan di folder cadangan Redate.io - Originals yang terlihat selama 30 hari.

Redate.io juga bekerja pada migrasi yang terjadi berbulan-bulan atau bertahun-tahun lalu. Header Date: tidak kedaluwarsa, begitu juga kemampuan untuk memperbaiki apa yang salah.

Bermigrasi dengan imapsync dan terjebak dengan tanggal salah? Jalankan pemindaian gratis untuk melihat persis berapa banyak email yang terdampak.

Artikel Terkait