Wie kann ich E-Mail-Statistiken aus dem Mutt-Header-Cache generieren?


12

Bei entsprechender Konfiguration ( set header_cache=) speichert mutt die Mail-Header in einer Cache-Datei. Das könnte verwendet werden, um Mail-Statistiken zu generieren. Weiß jemand etwas über das Dateiformat? Gibt es Tools zum Extrahieren der enthaltenen Informationen? (Außer strings, grep, awkund dergleichen)



Welche Art von Statistiken erwarten Sie, die von Mailserver-Protokolldateien nicht besser beantwortet werden?
Caleb

1
@Caleb Ich habe sehr grundlegende Statistiken im Auge, z. B. minimale / durchschnittliche / maximale E-Mails pro Jahr / Monat / Tag, die meisten wiederkehrenden Quittungen / Absender usw. Nicht jeder hat Zugriff auf Mailserver-Protokolle, daher ist dies nicht immer eine Option.
artistoex

Antworten:


4

Kurze Antwort:

Es ist durchaus möglich, dass der Cache nicht vollständig ist. Wenn Sie E-Mails löschen und hcache später den Header-Cache für dieses Postfach neu berechnet, enthalten Ihre Statistiken keine E-Mails vor dem Löschen.

Wenn Sie keinen Zugriff auf die E-Mail-Protokolle Ihres Servers haben, haben Sie Zugriff auf einen Filtermechanismus, z. B. procmail? Damit können Sie ein alternatives Protokoll für die Analyse erstellen.

Können Sie andernfalls Ihre Mailbox mit einem Programm abfragen, das ein Protokoll der empfangenen E-Mails erstellen kann? So etwas wie ein Offlineimap-Filter oder Fetchmail / Retchmail kombiniert mit etwas Hashing und Caching.

Längere Antwort:

Die Cache-Datei ist eine Datenbank im DBM-Stil. Je nach den genauen Build - Optionen für Ihren Köter, es könnte einer der folgenden sein QDBM , Tokio Kabinett , gdbm oder Berkeley DB (BDB); die alle eine Variation der BDB-API implementieren.

Ich halte es für unwahrscheinlich, dass Sie die Datenbank zuverlässig lesen können, wenn Sie nicht die richtige Bibliotheksimplementierung verwenden. lddsagt mir, dass mein lokaler Köter die Implementierung des Tokio-Kabinetts verwendet:

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

Sie müssten dann mit dieser Bibliothek ein Programm schreiben, um die in der Cache-Datei gespeicherte BDB abzufragen. Es gibt Bindungen für Perl, Ruby, Lua, Java und natürlich C.

Es scheint, dass Header als Werte in der Datenbank gespeichert sind, die von einem CRC indiziert werden. Soweit ich das beurteilen kann, wird der CRC aus dem Pfad zu einem Postfach abgeleitet, was bedeutet, dass die gespeicherten Header die Header für alle E-Mails in diesem Postfach sind . Ihr Programm wird also im Wesentlichen mit einem Puffer enden, der alle Header für alle E-Mails in einem bestimmten Postfach enthält. Ich denke nicht, dass es viel nützlicher sein wird, als die Header aus allen E-Mails zu ziehen, die sich derzeit in Ihrer Mailbox befinden (und angesichts der obigen "kurzen Antwort" nicht garantiert zuverlässiger zu sein).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.