Unikalność UID wiadomości e-mail IMAP


11

W naszym wewnętrznym systemie poczty internetowej chcielibyśmy dołączać notatki i kontakty do niektórych wiadomości e-mail. W tym celu musimy śledzić każdą pocztę na naszym serwerze IMAP.

Niestety standard IMAP nie wymusza unikalności UID poczty w skrzynce pocztowej (tylko w podfolderach). Czy istnieje jakieś narzędzie / serwer IMAP, który generuje identyfikatory UID, które są naprawdę unikalne? Czy jest jakiś inny sposób, w jaki możemy zidentyfikować każdą pocztę? ( pole nagłówka Message-ID nie jest unikalne, ponieważ niektóre wiadomości e-mail nie zawierają takiego pola).

Dodatkowe zasoby: Unikalny identyfikator w protokole IMAP - Limilabs.com


1
jeśli chodzi tylko o przychodzące wiadomości e-mail, wystarczy niestandardowy MTA, który dodaje UUID?
neutrinus

Odpowiedzi:


10

Krotka (nazwa folderu, folder UIDVALIDITY, identyfikator UID wiadomości) odróżnia wiadomość od wszystkich pozostałych na koncie IMAP. Dla każdej wiadomości ta krotka może zmieniać się między sesjami, więc możesz chcieć śledzić jej Message-ID jako kopię zapasową na wypadek, gdyby tak się stało.

Tak, to naprawdę jest denerwujące.


Ale RFC-2822 mówi, że POWINIEN istnieć komunikat Message-ID, co oznacza, że ​​w ogóle nie może istnieć identyfikator wiadomości
Romeno

1
Zgadza się, @Romeno. IMAP jest wadliwy, a Message-ID tylko czasami pomaga.
ʇsәɹoɈ

6

Nie wiem, co masz na myśli, mówiąc, że identyfikatory UID nie są unikalne w skrzynce pocztowej, tylko w podfolderach. Podfoldery, czy masz na myśli coś innego niż INBOX? W każdym razie to brzmi źle. Identyfikatory UID są w rzeczywistości unikalne w każdym folderze i nie ma znaczenia, że ​​jest to INBOX lub jakikolwiek inny folder.

Co może się zdarzyć, że UID może zmienić między sesjami. Zasadniczo dzieje się tak, jeśli serwer IMAP traci indeksy i musi je odbudować lub jeśli poczta jest migrowana z jednego serwera IMAP na inny itp. Jeśli tak się stanie, to oczywiście stracisz wszystkie powiązania między wiadomościami e-mail a dodatkowymi danymi (notatki lub kontakty).

Możesz na tym polegać: UID nigdy nie będzie odnosił się nagle do innej wiadomości. Albo pozostanie ważny i będzie odnosił się do tego samego komunikatu, do którego zawsze się odnosił, albo stanie się nieważny.

Możesz sprawdzić, w jaki sposób dany serwer IMAP generuje i utrzymuje identyfikatory UID. Różne serwery IMAP składają różne obietnice dotyczące trwałości wartości UID. Nawet na jednym serwerze IMAP może się różnić w zależności od używanego formatu skrzynki pocztowej. Na przykład w Dovecot spodziewaj się mniej kruchych identyfikatorów UID w przypadku mdbox niż w przypadku mbox lub Maildir, ponieważ metadane są ściślej zintegrowane z rzeczywistymi wiadomościami e-mail z mdbox.

Sugeruję używanie identyfikatorów UID w odniesieniu do wiadomości na serwerze IMAP, Message-IDjako kopii zapasowej. Message-IDnie jest tak dobre, ponieważ możliwe są duplikaty i (w przypadku większości serwerów IMAP) wyszukiwanie Message-IDmoże być wolniejsze, ale jest lepsze niż całkowite utratę wiadomości.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.