Unicità UID delle mail IMAP


11

Nel nostro sistema di webmail interno, vorremmo allegare note e contatti a determinati messaggi. Per fare ciò, dobbiamo tenere traccia di ogni posta sul nostro server IMAP.

Sfortunatamente lo standard IMAP non applica l'unicità dell'UID di una posta in una cassetta postale (solo nelle sottocartelle). Esiste uno strumento / server IMAP che genera UID davvero unici? O c'è un altro modo in cui possiamo identificare ogni mail? (il campo di intestazione ID messaggio non è univoco in quanto alcune e-mail non contengono tale campo).

Risorse aggiuntive: ID univoco nel protocollo IMAP - Limilabs.com


1
se si tratta solo di e-mail in arrivo, un milter MTA personalizzato che aggiunge UUID sarebbe sufficiente?
neutrina,

Risposte:


10

Una tupla di (nome cartella, UIDVALIDITÀ cartella, UID messaggio) distingue un messaggio da tutti gli altri in un account IMAP. Per ogni dato messaggio, quella tupla può cambiare tra le sessioni, quindi potresti voler tenere traccia del suo ID messaggio come backup nel caso ciò accada.

Sì, è davvero così fastidioso.


Ma RFC-2822 afferma che un ID messaggio DOVREBBE esistere in un messaggio, il che significa che non può esserci alcun ID messaggio
Romeno,

1
Esatto, @Romeno. L'IMAP è difettoso e l'ID messaggio aiuta solo a volte.
ɈsәɹoɈ

6

Non so cosa intendi quando dici che gli UID non sono univoci in una cassetta postale, ma solo nelle sottocartelle. Per sottocartelle, intendi qualcosa di diverso da INBOX? In ogni caso, sembra sbagliato. Gli UID sono infatti unici all'interno di ogni cartella e non importa che sia INBOX o qualsiasi altra cartella.

Ciò che può accadere è che gli UID possono cambiare tra le sessioni. In genere ciò accade se il server IMAP perde i suoi indici e deve ricostruirli o se la posta viene migrata da un server IMAP a un altro, ecc ... Se ciò accade, ovviamente perderai tutte le associazioni tra e-mail e dati extra (note o contatti).

Puoi fare affidamento su questo: un UID non farà mai improvvisamente riferimento a un messaggio diverso. O rimarrà valido e farà riferimento allo stesso messaggio a cui faceva sempre riferimento, altrimenti diventerà non valido.

Potresti voler controllare come il tuo particolare server IMAP genera e mantiene gli UID. Diversi server IMAP fanno promesse diverse sulla persistenza dei valori UID. Anche all'interno di un server IMAP, può variare a seconda del formato della cassetta postale in uso. Ad esempio, con Dovecot, aspettati UID meno fragili con mdbox rispetto a mbox o Maildir perché i metadati sono più strettamente integrati con le email effettive con mdbox.

Suggerisco di utilizzare gli UID per fare riferimento ai messaggi sul server IMAP, Message-IDcome backup. Message-IDnon è buono perché sono possibili duplicati e (per la maggior parte dei server IMAP) la ricerca Message-IDpotrebbe essere più lenta, ma è meglio che perdere completamente la traccia dei messaggi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.