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
Odpowiedzi:
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.
źródło
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-ID
jako kopii zapasowej.Message-ID
nie jest tak dobre, ponieważ możliwe są duplikaty i (w przypadku większości serwerów IMAP) wyszukiwanieMessage-ID
może być wolniejsze, ale jest lepsze niż całkowite utratę wiadomości.źródło