Unicité UID des courriers IMAP

11

Dans notre système de messagerie Web interne, nous aimerions joindre des notes et des contacts à certains e-mails. Pour ce faire, nous devons garder une trace de chaque courrier sur notre serveur IMAP.

Malheureusement, la norme IMAP n'impose pas l'unicité de l'UID d'un courrier dans une boîte aux lettres (uniquement dans les sous-dossiers). Existe-t-il un outil / serveur IMAP qui génère des UID vraiment uniques? Ou existe-t-il un autre moyen pour identifier chaque courrier? (le champ d'en - tête Message-ID n'est pas unique car certains mails ne contiennent pas un tel champ).

Ressources supplémentaires: ID unique dans le protocole IMAP - Limilabs.com

SecStone
la source
1
s'il ne s'agit que de courriels entrants, un milter MTA personnalisé qui ajoute UUID serait suffisant?
neutrinus

Réponses:

10

Un tuple de (nom de dossier, dossier UIDVALIDITY, message UID) distingue un message de tous les autres dans un compte IMAP. Pour tout message donné, ce tuple peut changer entre les sessions, vous pouvez donc vouloir suivre son ID de message comme sauvegarde au cas où cela se produirait.

Oui, c'est vraiment ennuyeux.

ʇsәɹoɈ
la source
Mais RFC-2822 dit que Message-ID DEVRAIT exister dans un message ce qui signifie qu'il ne peut y avoir aucun Message-ID du tout
Romeno
1
C'est vrai, @Romeno. IMAP est défectueux et Message-ID n'aide que parfois.
ʇsәɹoɈ
6

Je ne sais pas ce que vous voulez dire lorsque vous dites que les UID ne sont pas uniques dans une boîte aux lettres, juste dans les sous-dossiers. Par sous-dossiers, voulez-vous dire autre chose que INBOX? En tout cas, ça sonne mal. Les UID sont en fait uniques dans chaque dossier et peu importe que ce soit INBOX ou tout autre dossier.

Ce qui peut arriver, c'est que les UID peuvent changer entre les sessions. Généralement, cela se produit si le serveur IMAP perd ses index et doit les reconstruire ou si le courrier est migré d'un serveur IMAP à un autre, etc. Si cela se produit, vous perdrez bien sûr toutes les associations entre les e-mails et les données supplémentaires (notes ou contacts).

Vous pouvez vous y fier: un UID ne fera jamais référence soudainement à un message différent. Soit il restera valide et fera référence au même message auquel il a toujours fait référence, soit il deviendra invalide.

Vous voudrez peut-être vérifier comment votre serveur IMAP particulier génère et gère les UID. Différents serveurs IMAP font des promesses différentes quant à la persistance des valeurs UID. Même au sein d'un serveur IMAP, il peut varier en fonction du format de boîte aux lettres utilisé. Par exemple, avec Dovecot, attendez-vous à des UID moins fragiles avec mdbox qu'avec mbox ou Maildir car les métadonnées sont plus étroitement intégrées aux e-mails réels avec mdbox.

Je suggère d'utiliser des UID pour faire référence aux messages sur le serveur IMAP, avec Message-IDcomme sauvegarde. Message-IDn'est pas aussi bon car les doublons sont possibles et (pour la plupart des serveurs IMAP) la recherche Message-IDpeut être plus lente, mais c'est mieux que de perdre complètement la trace des messages.

Celada
la source