Come posso generare statistiche e-mail dalla cache dell'intestazione di mutt?


12

Se configurato di conseguenza ( set header_cache=) mutt salva le intestazioni della posta in un file cache. Potrebbe essere usato per generare statistiche di posta. Qualcuno sa qualcosa sul formato del file? Ci sono strumenti disponibili per estrarre le informazioni contenute? (Inoltre strings, grep, awke simili)



Che tipo di statistiche ti aspetti di generare a cui non sarebbe meglio rispondere con i file di registro del server di posta?
Caleb,

1
@Caleb Ho in mente statistiche di base, ad es. Min / avg / max mail per anno / mese / giorno, la maggior parte delle ricevute / mittenti ricorrenti, ecc. Non tutti hanno accesso ai registri del server di posta, quindi questa non è sempre un'opzione.
artistoex,

Risposte:


4

Risposta breve:

è del tutto possibile che la cache non sia completa. Se in seguito elimini posta e hcache ricalcola la cache di intestazione per quella casella di posta, le tue statistiche non includeranno la posta precedente alla cancellazione.

Se non si ha accesso ai registri di posta per il proprio server, si ha accesso a un meccanismo di filtro, ad esempio procmail? È possibile utilizzarlo per generare un registro alternativo per l'analisi.

Altrimenti, puoi eseguire il polling della tua casella di posta con un programma in grado di generare un registro di posta ricevuta? Qualcosa come un filtro offlineimap o fetchmail / retchmail combinato con alcuni hash e cache.

Risposta più lunga:

Il file di cache è un database in stile DBM. A seconda delle esatte opzioni di build per il tuo mutt, potrebbe essere uno di QDBM , tokyo cabinet , gdbm o Berkeley DB (BDB); che implementano tutti una variante dell'API di BDB.

Ritengo improbabile che tu possa leggere in modo affidabile il DB a meno che tu non usi l'implementazione corretta della libreria. lddmi dice che il mio mutt locale usa l'implementazione del tokyo cabinet:

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

Dovresti quindi scrivere un programma, usando quella libreria, per interrogare il BDB memorizzato nel file cache. Ci sono attacchi per Perl, Ruby, Lua, Java e ovviamente C.

Sembrerebbe che le intestazioni siano memorizzate come valori nel DB, indicizzate da un CRC. Da quello che posso dire, il CRC deriva dal percorso di una cassetta postale, il che implica che le intestazioni memorizzate sono le intestazioni di tutta la posta in quella cassetta postale . Quindi il tuo programma finirà essenzialmente con un buffer contenente tutte le intestazioni per tutta la posta in una determinata casella di posta. Non penso che sarà molto più utile che estrarre le intestazioni da tutta la posta attualmente nella tua casella di posta (e data la "risposta breve" sopra, non è garantita per essere più affidabile).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.