Comment puis-je générer des statistiques de courrier électronique à partir du cache d'en-tête mutt?

12

Une fois configuré en conséquence ( set header_cache=) mutt enregistre les en-têtes de courrier dans un fichier cache. Cela pourrait être utilisé pour générer des statistiques de courrier. Quelqu'un connaît-il le format de fichier? Existe-t-il des outils pour extraire les informations contenues? ( D' ailleurs strings, grep, awketc.)

artistoex
la source
Quel type de statistiques prévoyez-vous de générer qui ne serait pas mieux répondu par les fichiers journaux du serveur de messagerie?
Caleb
1
@Caleb J'ai des statistiques très basiques à l'esprit, par exemple des courriers min / moy / max par an / mois / jour, les reçus / expéditeurs les plus récurrents, etc. Tout le monde n'a pas accès aux journaux du serveur de messagerie, donc ce n'est pas toujours une option.
artistoex

Réponses:

4

Réponse courte:

il est tout à fait possible que le cache ne soit pas complet. Si vous supprimez du courrier et que hcache recalcule ultérieurement le cache d'en-tête pour cette boîte aux lettres, vos statistiques n'incluront pas le courrier avant la suppression.

Si vous n'avez pas accès aux journaux de messagerie de votre serveur, avez-vous accès à un mécanisme de filtrage, par exemple procmail? Vous pouvez l'utiliser pour générer un autre journal pour l'analyse.

Sinon, pouvez-vous interroger votre boîte aux lettres avec un programme qui peut générer un journal de courrier reçu? Quelque chose comme un filtre de carte hors ligne ou fetchmail / retchmail combiné avec du hachage et de la mise en cache.

Réponse plus longue:

Le fichier cache est une base de données de style DBM. Selon les options de construction exactes de votre mutt, il peut s'agir de QDBM , tokyo cabinet , gdbm ou Berkeley DB (BDB); qui implémentent tous une variante de l'API de BDB.

Je crois qu'il est peu probable que vous puissiez lire la base de données de manière fiable à moins d'utiliser la bonne implémentation de bibliothèque. lddme dit que mon mutt local utilise l'implémentation du cabinet tokyo:

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

Vous devrez ensuite écrire un programme, à l'aide de cette bibliothèque, pour interroger le BDB stocké dans le fichier cache. Il existe des liaisons pour Perl, Ruby, Lua, Java et bien sûr C.

Il semblerait que les en-têtes soient stockés sous forme de valeurs dans la base de données, indexés par un CRC. D'après ce que je peux dire, le CRC est dérivé du chemin d'accès à une boîte aux lettres, ce qui implique que les en-têtes stockés sont les en-têtes de tous les messages de cette boîte aux lettres . Donc, votre programme va essentiellement se retrouver avec un tampon contenant tous les en-têtes pour tous les messages dans une boîte aux lettres donnée. Je ne pense pas que ce sera beaucoup plus utile que de retirer les en-têtes de tout le courrier actuellement dans votre boîte aux lettres (et étant donné la "réponse courte" ci-dessus, il n'est pas garanti d'être plus fiable).

jmtd
la source