2009-04-17 11 views
6

Estoy usando Net :: POP3 en Perl para iterar a través de un buzón en un servidor de MS Exchange. Ejecuto el comando UIDL en cada número de mensaje y comparo la ID devuelta con los ID vistos anteriormente para ver si he tratado este mensaje en el pasado. Sin embargo, también descubro que dentro de un buzón POP3 individual, el mismo UID parece aparecer varias veces para diferentes mensajes.¿El UID proporcionado por el comando UIDL POP3 de MS Exchange es verdaderamente único?

¿Alguna idea de por qué esto podría estar pasando? ¿El UID no es realmente único? ¿O los mensajes se duplican de alguna manera dentro del mismo buzón?

Respuesta

3

The RFC dice:

Aunque en general es preferible para implementaciones del servidor para almacenar asignados arbitrariamente únicas-ids en el maildrop, esta especificación tiene por objeto permitir únicas-ids para ser calcula como hash del mensaje. Los clientes deben poder para manejar una situación donde dos copias idénticas de un mensaje en un maildrop tienen la misma identificación única.

[el énfasis es mío]

+0

Gracias, eso es justo lo que estaba buscando. Parece que estoy manejando las cosas correctamente, entonces, cuando me encuentro con un UID ya visto, lo trato como un duplicado e ignoro el mensaje. Una pregunta tangencial sería: "¿Cómo ocurre este tipo de mensaje duplicado?" Pero eso está fuera del alcance de la pregunta original. –

+0

@Peter Wood Solo un consejo rápido: asegúrese de que la consulta de búsqueda UID esté buscando una coincidencia sensible a mayúsculas y minúsculas. Tuve problemas porque el comportamiento predeterminado no era sensible a las mayúsculas y minúsculas, lo que hizo que mi código ignorara ciertos correos electrónicos. –

+0

¿Ese escenario de mensajes idénticos realmente sucede en la práctica? Cuando leí ese pasaje en el RFC, pensé que solo sería una situación estrictamente teórica debido a todas las marcas de tiempo e ID que los servidores escriben en el encabezado. – billpg

Cuestiones relacionadas