Bagaimana saya bisa menghasilkan statistik email dari cache mutt header?

12

Ketika dikonfigurasi sesuai ( set header_cache=) mutt menyimpan header surat dalam file cache. Itu dapat digunakan untuk menghasilkan statistik email. Adakah yang tahu tentang format file? Apakah ada alat yang tersedia untuk mengekstrak informasi yang terkandung? (Selain strings, grep, awkdan sejenisnya)

artisoex
sumber
Berikut kodenya: dev.mutt.org/hg/mutt/file/tip/hcache.c
mattdm
Apa jenis statistik yang Anda harapkan untuk menghasilkan yang tidak akan lebih baik dijawab oleh file log server surat?
Caleb
1
@ Caleb Saya memiliki statistik yang sangat mendasar dalam pikiran, mis. Surat min / avg / max per tahun / bulan / hari, kwitansi / pengirim paling berulang, dll. Tidak semua orang memiliki akses ke log server surat, jadi ini tidak selalu merupakan pilihan.
artistoex

Jawaban:

4

Jawaban singkat:

sangat mungkin bahwa cache tidak akan komprehensif. Jika Anda menghapus email dan kemudian hcache menghitung ulang cache header untuk kotak surat itu, statistik Anda tidak akan menyertakan email dari sebelum penghapusan.

Jika Anda tidak memiliki akses ke log surat untuk server Anda, apakah Anda memiliki akses ke mekanisme filter, misalnya procmail? Anda bisa menggunakannya untuk menghasilkan log alternatif untuk analisis.

Jika tidak, bisakah Anda polling kotak surat Anda dengan program yang dapat menghasilkan log surat diterima? Sesuatu seperti filter offlineimap, atau fetchmail / retchmail yang dikombinasikan dengan beberapa hashing dan caching.

Jawaban yang lebih panjang:

File cache adalah database gaya-DBM. Bergantung pada opsi build yang tepat untuk mutt Anda, itu bisa berupa QDBM , kabinet tokyo , gdbm atau Berkeley DB (BDB); yang semuanya menerapkan variasi API BDB.

Saya percaya bahwa tidak mungkin Anda dapat membaca DB dengan andal kecuali Anda menggunakan implementasi perpustakaan yang tepat. lddmemberitahu saya mutt lokal saya menggunakan implementasi kabinet tokyo:

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

Anda kemudian perlu menulis sebuah program, menggunakan perpustakaan itu, untuk meminta BDB yang disimpan dalam file cache. Ada binding untuk Perl, Ruby, Lua, Java, dan tentu saja C.

Tampaknya header disimpan sebagai nilai dalam DB, diindeks oleh CRC. Dari apa yang saya tahu, CRC diturunkan dari path ke kotak surat, yang menyiratkan bahwa header yang disimpan adalah header untuk semua email di kotak surat itu . Jadi program Anda pada dasarnya akan berakhir dengan buffer yang berisi semua header untuk semua email di kotak surat yang diberikan. Saya tidak berpikir itu akan jauh lebih berguna daripada menarik header dari semua surat yang saat ini ada di kotak surat Anda (dan diberi "jawaban singkat" di atas, tidak dijamin lebih dapat diandalkan).

jmtd
sumber