Di sistem webmail internal kami, kami ingin melampirkan catatan dan kontak ke email tertentu. Untuk melakukan ini, kami harus melacak setiap email di server IMAP kami.
Sayangnya standar IMAP tidak menegakkan keunikan UID dari surat di kotak surat (hanya dalam subfolder). Apakah ada server alat / IMAP yang menghasilkan UID yang benar-benar unik? Atau adakah cara lain untuk mengidentifikasi setiap email? ( bidang header Pesan-ID tidak unik karena beberapa surat tidak berisi bidang seperti itu).
Sumber tambahan: ID unik dalam protokol IMAP - Limilabs.com
Jawaban:
Sebuah tupel (nama folder, folder UIDVALIDITY, pesan UID) membedakan pesan dari yang lainnya di akun IMAP. Untuk setiap pesan yang diberikan, tuple itu dapat berubah di antara sesi, jadi Anda mungkin ingin melacak ID-Pesan sebagai cadangan jika hal ini terjadi.
Ya, itu benar-benar menjengkelkan.
sumber
Saya tidak tahu apa yang Anda maksud ketika Anda mengatakan UID tidak unik di kotak surat, hanya di subfolder. Dengan subfolder, apakah maksud Anda selain dari INBOX? Bagaimanapun, kedengarannya salah. UID sebenarnya unik dalam setiap folder dan tidak masalah itu INBOX atau folder lainnya.
Apa yang bisa terjadi adalah bahwa UID dapat berubah antar sesi. Umumnya ini terjadi jika server IMAP kehilangan indeksnya dan harus membangunnya kembali atau jika surat dimigrasikan dari satu server IMAP ke yang lain, dll. Jika ini terjadi, Anda tentu saja akan kehilangan semua asosiasi antara email dan data tambahan (catatan atau kontak).
Anda dapat mengandalkan ini: UID tidak akan pernah tiba-tiba merujuk ke pesan yang berbeda. Entah itu akan tetap valid dan merujuk ke pesan yang sama seperti selalu dirujuk, atau kalau tidak maka akan menjadi tidak valid.
Anda mungkin ingin memeriksa bagaimana server IMAP Anda menghasilkan dan memelihara UID. Server IMAP yang berbeda membuat janji yang berbeda tentang persistensi nilai UID. Bahkan dalam satu server IMAP, ini dapat bervariasi tergantung pada format kotak surat mana yang digunakan. Misalnya, dengan Dovecot, perkirakan UID yang lebih rapuh dengan mdbox daripada dengan mbox atau Maildir karena metadata lebih terintegrasi dengan email yang sebenarnya dengan mdbox.
Saya sarankan menggunakan UID untuk merujuk ke pesan di server IMAP, dengan
Message-ID
sebagai cadangan.Message-ID
tidak sebagus duplikat mungkin dan (untuk sebagian besar server IMAP) mencari denganMessage-ID
mungkin lebih lambat, tapi itu lebih baik daripada kehilangan jejak pesan sepenuhnya.sumber