¿Cómo puedo generar estadísticas de correo electrónico de caché de encabezado mutt?

12

Cuando se configura en consecuencia ( set header_cache=) mutt guarda los encabezados de correo en un archivo de caché. Eso podría usarse para generar estadísticas de correo. ¿Alguien sabe algo sobre el formato de archivo? ¿Hay alguna herramienta disponible para extraer la información contenida? (Además strings, grep, awky similares)

artistoex
fuente
Aquí está el código: dev.mutt.org/hg/mutt/file/tip/hcache.c
mattdm
¿Qué tipo de estadísticas espera generar que no serían mejor respondidas por los archivos de registro del servidor de correo?
Caleb
1
@Caleb Tengo en mente estadísticas muy básicas, por ejemplo, correos mínimos / promedio / máximos por año / mes / día, recibo / remitente más recurrente, etc. No todos tienen acceso a los registros del servidor de correo, por lo que esto no siempre es una opción.
artistoex

Respuestas:

4

Respuesta corta:

Es muy posible que el caché no sea completo. Si elimina el correo y hcache luego vuelve a calcular el caché de encabezado para ese buzón, sus estadísticas no incluirán el correo anterior a la eliminación.

Si no tiene acceso a los registros de correo de su servidor, ¿tiene acceso a un mecanismo de filtro, por ejemplo, procmail? Podría usar eso para generar un registro alternativo para el análisis.

De lo contrario, ¿puede sondear su buzón con un programa que pueda generar un registro del correo recibido? Algo así como un filtro de mapa fuera de línea, o fetchmail / retchmail combinado con algo de hashing y almacenamiento en caché.

Respuesta más larga:

El archivo de caché es una base de datos de estilo DBM. Dependiendo de las opciones de compilación exactas para su perro callejero, podría ser uno de QDBM , gabinete de Tokio , gdbm o Berkeley DB (BDB); que implementan una variación de la API de BDB.

Creo que es poco probable que pueda leer la base de datos de manera confiable a menos que use la implementación correcta de la biblioteca. lddme dice que mi perro callejero local usa la implementación del gabinete de Tokio:

$ ldd /usr/bin/mutt
…
libtokyocabinet.so.8 => /usr/lib/libtokyocabinet.so.8 (0xb74f2000)
…

Entonces necesitaría escribir un programa, usando esa biblioteca, para consultar el BDB almacenado dentro del archivo de caché. Hay enlaces para Perl, Ruby, Lua, Java y, por supuesto, C.

Parece que los encabezados se almacenan como valores en la base de datos, indexados por un CRC. Por lo que puedo decir, el CRC se deriva de la ruta a un buzón, lo que implica que los encabezados almacenados son los encabezados de todo el correo en ese buzón . Por lo tanto, su programa esencialmente terminará con un búfer que contiene todos los encabezados para todo el correo en un buzón determinado. No creo que sea mucho más útil que extraer los encabezados de todo el correo actualmente en su buzón (y dada la "respuesta breve" anterior, no se garantiza que sea más confiable).

jmtd
fuente