UID-Eindeutigkeit von IMAP-Mails

11

In unserem internen Webmail-System möchten wir Notizen und Kontakte an bestimmte E-Mails anhängen. Dazu müssen wir jede E-Mail auf unserem IMAP-Server verfolgen.

Leider erzwingt der IMAP-Standard nicht die Eindeutigkeit der UID einer E-Mail in einem Postfach (nur in Unterordnern). Gibt es ein Tool / einen IMAP-Server, der UIDs generiert, die wirklich einzigartig sind? Oder gibt es eine andere Möglichkeit, wie wir jede Mail identifizieren können? (Das Header-Feld " Message-ID" ist nicht eindeutig, da einige Mails kein solches Feld enthalten.)

Zusätzliche Ressourcen: Eindeutige ID im IMAP-Protokoll - Limilabs.com

SecStone
quelle
1
Wenn es nur um eingehende E-Mails geht, würde ein benutzerdefinierter MTA-Milter, der UUID hinzufügt, ausreichen?
Neutrinus

Antworten:

10

Ein Tupel von (Ordnername, Ordner-UIDVALIDITÄT, Nachrichten-UID) unterscheidet eine Nachricht von allen anderen in einem IMAP-Konto. Für jede Nachricht kann sich dieses Tupel zwischen den Sitzungen ändern. In diesem Fall möchten Sie möglicherweise die Nachrichten-ID als Backup verfolgen.

Ja, das ist wirklich so nervig.

ʇSәɹoɈ
quelle
Aber RFC-2822 sagt, dass Nachrichten-ID in einer Nachricht existieren sollte, was bedeutet, dass es überhaupt keine Nachrichten-ID geben kann
Romeno
1
Das stimmt, @Romeno. IMAP ist fehlerhaft und Message-ID hilft nur manchmal.
28sәɹoɈ
6

Ich weiß nicht, was Sie meinen, wenn Sie sagen, dass UIDs in einem Postfach nicht eindeutig sind, sondern nur in Unterordnern. Meinen Sie mit Unterordnern etwas anderes als INBOX? Auf jeden Fall klingt es falsch. UIDs sind in der Tat in jedem Ordner eindeutig und es spielt keine Rolle, ob es sich um INBOX oder einen anderen Ordner handelt.

Was passieren kann ist, dass sich UIDs zwischen Sitzungen ändern können. Im Allgemeinen geschieht dies, wenn der IMAP-Server seine Indizes verliert und diese neu erstellen muss oder wenn die E-Mail von einem IMAP-Server auf einen anderen migriert wird usw. In diesem Fall verlieren Sie natürlich alle Zuordnungen zwischen E-Mails und zusätzlichen Daten (Notizen oder Kontakte).

Darauf können Sie sich verlassen: Eine UID verweist niemals plötzlich auf eine andere Nachricht. Entweder bleibt es gültig und verweist auf dieselbe Nachricht, auf die es immer verwiesen hat, oder es wird ungültig.

Möglicherweise möchten Sie überprüfen, wie Ihr bestimmter IMAP-Server UIDs generiert und verwaltet. Verschiedene IMAP-Server geben unterschiedliche Versprechen hinsichtlich der Beständigkeit von UID-Werten ab. Selbst innerhalb eines IMAP-Servers kann dies je nach verwendetem Postfachformat variieren. Erwarten Sie beispielsweise mit Dovecot weniger fragile UIDs mit mdbox als mit mbox oder Maildir, da die Metadaten enger in die tatsächlichen E-Mails mit mdbox integriert sind.

Ich schlage vor, UIDs zu verwenden, um auf Nachrichten auf dem IMAP-Server Message-IDals Backup zu verweisen . Message-IDist nicht so gut, da Duplikate möglich sind und (für die meisten IMAP-Server) die Suche Message-IDmöglicherweise langsamer ist, aber es ist besser, als den Überblick über die Nachrichten vollständig zu verlieren.

Celada
quelle