Tính duy nhất của UID của thư IMAP


11

Trong hệ thống webmail nội bộ của chúng tôi, chúng tôi muốn đính kèm ghi chú và danh bạ vào một số thư nhất định. Để thực hiện việc này, chúng tôi phải theo dõi mọi thư trên máy chủ IMAP của chúng tôi.

Thật không may, tiêu chuẩn IMAP không thực thi tính duy nhất của UID của thư trong hộp thư (chỉ trong các thư mục con). Có công cụ / máy chủ IMAP nào tạo UID thực sự độc đáo không? Hoặc có cách nào khác để chúng tôi có thể xác định từng thư không? ( trường tiêu đề ID tin nhắn không phải là duy nhất vì một số thư không chứa trường như vậy).

Tài nguyên bổ sung: ID duy nhất trong giao thức IMAP - Limilabs.com


1
Nếu chỉ về email đến, một máy lọc MTA tùy chỉnh có thêm UUID là đủ?
neutrinus

Câu trả lời:


10

Một bộ (tên thư mục, thư mục UIDVALIDITY, UID tin nhắn) phân biệt một tin nhắn với tất cả những người khác trong tài khoản IMAP. Đối với bất kỳ thư nào, bộ dữ liệu đó có thể thay đổi giữa các phiên, do đó bạn có thể muốn theo dõi ID tin nhắn của mình dưới dạng bản sao lưu trong trường hợp điều này xảy ra.

Vâng, nó thực sự là gây phiền nhiễu.


Nhưng RFC-2822 nói rằng ID tin nhắn NÊN tồn tại trong một tin nhắn có nghĩa là không thể có ID tin nhắn nào cả
Romeno

1
Đúng vậy, @Romeno. IMAP là thiếu sót và đôi khi Message-ID chỉ giúp.
ʇsәɹoɈ

6

Tôi không biết ý của bạn là gì khi bạn nói UID không phải là duy nhất trong hộp thư, chỉ trong các thư mục con. Theo thư mục con, bạn có ý gì khác ngoài INBOX không? Trong mọi trường hợp, nó có vẻ sai. Các UID trên thực tế là duy nhất trong mỗi thư mục và nó không thành vấn đề, đó là INBOX hoặc bất kỳ thư mục nào khác.

Điều có thể xảy ra là UID có thể thay đổi giữa các phiên. Nói chung, điều này xảy ra nếu máy chủ IMAP mất chỉ mục và phải xây dựng lại chúng hoặc nếu thư được di chuyển từ máy chủ IMAP này sang máy chủ IMAP khác, v.v ... Nếu điều này xảy ra thì tất nhiên bạn sẽ mất tất cả các liên kết giữa email và dữ liệu bổ sung (ghi chú hoặc danh bạ).

Bạn có thể dựa vào điều này: một UID sẽ không bao giờ đột nhiên đề cập đến một thông điệp khác. Hoặc nó sẽ vẫn hợp lệ và đề cập đến cùng một thông điệp mà nó luôn được đề cập, nếu không nó sẽ trở thành không hợp lệ.

Bạn có thể muốn kiểm tra cách máy chủ IMAP cụ thể của bạn tạo và duy trì UID. Các máy chủ IMAP khác nhau thực hiện các lời hứa khác nhau về tính bền vững của các giá trị UID. Ngay cả trong một máy chủ IMAP, nó có thể thay đổi tùy theo định dạng hộp thư được sử dụng. Ví dụ, với Dovecot, mong đợi các UID dễ vỡ hơn với mdbox so với mbox hoặc Maildir vì siêu dữ liệu được tích hợp chặt chẽ hơn với các email thực tế với mdbox.

Tôi đề nghị sử dụng UID để tham khảo các tin nhắn trên máy chủ IMAP, với Message-IDtư cách là bản sao lưu. Message-IDđiều này không tốt vì có thể trùng lặp và (đối với hầu hết các máy chủ IMAP) việc tìm kiếm Message-IDcó thể chậm hơn, nhưng tốt hơn là mất hoàn toàn việc theo dõi tin nhắn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.