Jak mogę wygenerować statystyki e-mail z bufora mutt?

12

Po odpowiednim skonfigurowaniu ( set header_cache=) mutt zapisuje nagłówki wiadomości w pliku pamięci podręcznej. Można to wykorzystać do wygenerowania statystyk poczty. Czy ktoś wie coś o formacie pliku? Czy są dostępne narzędzia do wyodrębnienia zawartych informacji? (Zresztą strings, grep, awki tym podobne)

artistoex
źródło
Jakich statystyk spodziewasz się wygenerować, na które lepiej nie odpowiedzieć w plikach dziennika serwera pocztowego?
Caleb
1
@Caleb Mam na myśli bardzo podstawowe statystyki, np. Min / avg / max maile rocznie / miesiąc / dzień, najczęściej powtarzające się potwierdzenia / nadawcy itp. Nie wszyscy mają dostęp do logów serwera pocztowego, więc nie zawsze jest to opcja.
artistoex

Odpowiedzi:

4

Krótka odpowiedź:

jest całkiem możliwe, że pamięć podręczna nie będzie pełna. Jeśli usuniesz pocztę, a hcache później ponownie obliczy pamięć podręczną nagłówka dla tej skrzynki pocztowej, twoje statystyki nie będą obejmować poczty sprzed usunięcia.

Jeśli nie masz dostępu do dzienników poczty dla swojego serwera, czy masz dostęp do mechanizmu filtru, np. Procmail? Możesz użyć tego do wygenerowania alternatywnego dziennika do analizy.

W przeciwnym razie czy możesz sondować swoją skrzynkę pocztową za pomocą programu, który może wygenerować dziennik otrzymanej poczty? Coś takiego jak filtr mapy offline lub fetchmail / retchmail w połączeniu z haszowaniem i buforowaniem.

Dłuższa odpowiedź:

Plik pamięci podręcznej jest bazą danych w stylu DBM. W zależności od dokładnych opcji kompilacji twojego mutta , może to być jedna z QDBM , tokyo cabinet , gdbm lub Berkeley DB (BDB); które wszystkie implementują odmianę interfejsu API BDB.

Uważam, że jest mało prawdopodobne, abyś mógł niezawodnie czytać DB, chyba że użyjesz odpowiedniej implementacji biblioteki. lddmówi mi, że mój lokalny mutt korzysta z implementacji gabinetu tokyo:

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

Będziesz wtedy musiał napisać program, korzystając z tej biblioteki, aby wysłać zapytanie do BDB przechowywanego w pliku pamięci podręcznej. Istnieją powiązania dla Perla, Ruby, Lua, Javy i oczywiście C.

Wygląda na to, że nagłówki są przechowywane jako wartości w DB, indeksowane przez CRC. Z tego, co mogę powiedzieć, CRC pochodzi ze ścieżki do skrzynki pocztowej, co oznacza, że ​​przechowywane nagłówki są nagłówkami dla wszystkich wiadomości w tej skrzynce pocztowej . Tak więc twój program zasadniczo zakończy się buforem zawierającym wszystkie nagłówki dla całej poczty w danej skrzynce pocztowej. Nie sądzę, że będzie to o wiele bardziej przydatne niż pobieranie nagłówków ze wszystkich wiadomości znajdujących się obecnie w skrzynce pocztowej (i biorąc pod uwagę powyższą „krótką odpowiedź”, nie gwarantujemy, że będą bardziej niezawodne).

jmtd
źródło