2009-04-17 11 views
6

J'utilise Net :: POP3 en Perl pour parcourir une boîte aux lettres sur un serveur MS Exchange. J'exécute la commande UIDL sur chaque numéro de message et compare l'ID retourné aux ID précédemment vus pour voir si j'ai traité ce message dans le passé. Cependant, je constate également que dans une boîte aux lettres POP3 individuelle, le même UID semble apparaître plusieurs fois pour différents messages.L'UID fourni par la commande MS Exchange POP3 UIDL est-il vraiment unique?

Une idée pourquoi cela pourrait-il se produire? L'UID n'est-il pas vraiment unique? Ou est-ce que les messages sont en quelque sorte dupliqués dans la même boîte aux lettres?

Répondre

3

The RFC dit:

Il est généralement préférable pour implémentations de serveur pour stocker uniques-ids attribués de façon arbitraire dans le maildrop, cette spécification est destinée à permettre ids unique d'être calculé comme hash du message. Les clients doivent pouvoir gérer une situation où deux copies identiques d'un message dans un maildrop ont le même identifiant unique.

[je souligne]

+0

Merci, c'est exactement ce que je cherchais. Il semble que je gère les choses correctement, alors, quand je rencontre un UID déjà vu, je le traite comme un doublon et en ignorant le message. Une question tangentielle serait: "Comment ce genre de message en double se produit-il?" Mais cela sort du cadre de la question initiale. –

+0

@Peter Wood Juste un petit conseil - assurez-vous que la requête de recherche d'UID recherche une correspondance sensible à la casse. J'ai eu des problèmes parce que le comportement par défaut était insensible à la casse, ce qui a amené mon code à ignorer à tort certains courriels. –

+0

Ce scénario de messages identiques se passe réellement dans la pratique? Quand j'ai lu ce passage dans la RFC, j'ai pensé que ce ne serait qu'une situation strictement théorique à cause de tous les horodatages et identifiants que les serveurs écrivent dans l'en-tête. – billpg