Compartir a través de


Analizar el historial de descarga de mensajes de una cuenta POP3

En este tema se describe la estructura del BLOB POP3 que representa el historial de descarga de mensajes de una cuenta POP3 para identificar los mensajes que se han descargado o eliminado en esa cuenta.

¿Por qué analizar el historial de descarga de mensajes?

El proveedor de protocolo de oficina de correos (POP) para Outlook permite a los usuarios recuperar y descargar nuevos mensajes de correo electrónico en su dispositivo local y, posteriormente, dejar o eliminar estos mensajes de correo electrónico en el servidor de correo. Cuando el cliente de correo comprueba si hay nuevos mensajes que descargar, tiene que poder identificar y descargar solo los nuevos mensajes de esa Bandeja de entrada. El cliente de correo lo hace usando primero el comando UIDL (Unique ID Listing) para obtener un mapa de cada mensaje que se haya entregado alguna vez a esa Bandeja de entrada a un identificador único (UID). El cliente también obtiene el historial de descarga de mensajes de los mensajes que se han descargado o eliminado para la Bandeja de entrada de ese cliente. Con el mapa del UID del mensaje y el historial de descarga, el cliente puede identificar los mensajes que no están presentes en el historial como nuevos y, por lo tanto, se deben descargar.

Para obtener el historial de descarga de mensajes de una bandeja de entrada:

  • Siga los pasos descritos en Localizar el historial de descarga de mensajes de una cuenta POP3 para buscar la propiedad PidTagAttachDataBinary , que contiene un objeto binario grande (BLOB) que representa el historial de mensajes de una cuenta POP3.

  • Lea este tema, que describe la estructura del BLOB y muestra un BLOB de ejemplo para identificar los mensajes que se han descargado o eliminado para la Bandeja de entrada de la cuenta POP3.

Estructura POP BLOB

La estructura POP BLOB, tal como se describe en la tabla 1, comienza con dos campos, Version y Count, seguidos de un número count de etiquetas de recursos, cada uno de los cuales termina en null.

Tabla 1. Estructura del BLOB que representa el historial de descarga de mensajes de una cuenta POP3

Campo en BLOB Tamaño Descripción
Versión
2 bytes
Debe ser 3 (PBLOB_VERSION_NUM).
Count
2 bytes
Número de etiquetas de recursos en este BLOB.
Etiqueta de recurso
Variable
0 o más cadenas UTF-8 terminadas en null que codifican las etiquetas de recurso. El número de cadenas terminadas en null debe coincidir con Count.

Cada etiqueta de recurso especifica la operación que se aplica a un mensaje, algunos metadatos de fecha y hora sobre la operación y codifica el UID del mensaje. El formato de una cadena de etiqueta de recurso se desglosa de la siguiente manera y se explica en la tabla 2.

Ocyyyymmddhhmmssuuu...

Tabla 2. Estructura de una etiqueta de recurso

Campo en una etiqueta de recurso Tamaño Descripción
O
1 carácter
Operación realizada en el mensaje de correo electrónico. El valor debe ser "+", "-" o "&", lo que indica una operación correcta de obtención, eliminación o obtención y eliminación, respectivamente.
c
1 carácter
Parte del contenido del mensaje implicado en la operación. El valor debe ser " ", "h" o "b", lo que indica el contenido de ninguno, encabezado o cuerpo, respectivamente.
yyyy
4 caracteres
Año de cuatro dígitos de la operación.
MM
2 caracteres
Mes de dos dígitos de la operación.
dd
2 caracteres
Día de dos dígitos de la operación.
hh
2 caracteres
Hora de dos dígitos de la operación.
mm
2 caracteres
Minuto de dos dígitos de la operación.
ss
2 caracteres
Segundo de dos dígitos de la operación.
uuu…
Longitud variable
UID codificado de un mensaje.

Ejemplo

En la figura 1 se muestra un ejemplo de un BLOB que representa el historial de descarga de mensajes de una cuenta POP.

Figura 1. Estructura BLOB de ejemplo para el historial de descarga de mensajes de una cuenta POP3

BLOB del historial de descarga de mensajes de cuenta POP3

En función de la estructura descrita en las tablas 1 y 2, este BLOB representa el historial de descarga de 23 mensajes de correo electrónico.

Para analizar el UID sin procesar en cada etiqueta de recurso, tenga en cuenta que el UID sigue esta codificación: los caracteres de un UID son principalmente caracteres alfanuméricos y cada carácter no alfanumérico va precedido del carácter ASCII "$" (0x24). Por lo tanto, los caracteres ASCII $2d representan el carácter no alfanumérico "-". En la figura 2 se muestra un ejemplo de conversión primero del UID sin procesar en la etiqueta de recurso 1 a la representación ASCII y, a continuación, convertir cualquier carácter no alfanumérico precedido por "$" para generar el UID real:

0BC535DB-EA63-11E1-A75C-00215AD7BB74

Figura 2. Conversión del UID sin formato en una etiqueta de recurso en el UID del mensaje real

Conversión de UID sin procesar en BLOB a UID de mensaje real

Para interpretar la etiqueta de recurso 1 en este BLOB: el mensaje con el UID 0BC535DB-EA63-11E1-A75C-00215AD7BB74 se recuperó correctamente el 6 de septiembre de 2012, a las 13:11:38.

De forma similar, puede analizar las 22 etiquetas de recursos restantes para ese BLOB.

Vea también