Keunikan UID dari surat IMAP

11

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

SecStone
sumber
1
jika hanya tentang email masuk, milter MTA khusus yang menambahkan UUID akan cukup?
neutrinus

Jawaban:

10

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.

ʇsәɹoɈ
sumber
Tetapi RFC-2822 mengatakan bahwa Message-ID HARUS ada dalam pesan yang berarti bahwa tidak ada Message-ID sama sekali
Romeno
1
Benar, @Romeno. IMAP cacat dan Pesan-ID hanya membantu kadang-kadang.
ʇsәɹoɈ
6

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-IDsebagai cadangan. Message-IDtidak sebagus duplikat mungkin dan (untuk sebagian besar server IMAP) mencari dengan Message-IDmungkin lebih lambat, tapi itu lebih baik daripada kehilangan jejak pesan sepenuhnya.

Celada
sumber