Como posso gerar estatísticas de email a partir do cache do cabeçalho mutt?

12

Quando configurado de acordo ( set header_cache=), o mutt salva os cabeçalhos de email em um arquivo de cache. Isso pode ser usado para gerar estatísticas de email. Alguém sabe alguma coisa sobre o formato do arquivo? Existem ferramentas disponíveis para extrair as informações contidas? (Além de strings, grep, awke similares)

artistoex
fonte
Aqui está o código: dev.mutt.org/hg/mutt/file/tip/hcache.c
mattdm
Que tipo de estatística você espera gerar que não seria melhor respondida pelos arquivos de log do servidor de email?
Calebe
1
@Caleb Eu tenho estatísticas muito básicas em mente, por exemplo, min / média / máxima de mensagens por ano / mês / dia, recebimento / remetente mais recorrentes, etc. Nem todo mundo tem acesso aos logs do servidor de email, portanto nem sempre é uma opção.
Artistoex

Respostas:

4

Resposta curta:

é perfeitamente possível que o cache não seja abrangente. Se você excluir o correio e o hcache posteriormente recalcular o cache do cabeçalho dessa caixa de correio, suas estatísticas não incluirão o correio anterior à exclusão.

Se você não tem acesso aos logs de correio do seu servidor, você tem acesso a um mecanismo de filtro, por exemplo, procmail? Você pode usar isso para gerar um log alternativo para análise.

Caso contrário, você pode consultar sua caixa de correio com um programa que pode gerar um log de mensagens recebidas? Algo como um filtro offlineimap, ou fetchmail / retchmail combinado com algum hash e cache.

Resposta mais longa:

O arquivo de cache é um banco de dados no estilo DBM. Dependendo das opções exatas de compilação para o seu mutt, ele pode ser um dos QDBM , tokyo cabinet , gdbm ou Berkeley DB (BDB); todos implementam uma variação da API do BDB.

Acredito que é improvável que você possa ler o banco de dados de maneira confiável, a menos que use a implementação correta da biblioteca. lddme diz que meu mutt local usa a implementação do gabinete de tokyo:

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

Você precisaria escrever um programa, usando essa biblioteca, para consultar o BDB armazenado no arquivo de cache. Existem ligações para Perl, Ruby, Lua, Java e, claro, C.

Parece que os cabeçalhos são armazenados como valores no banco de dados, indexados por um CRC. Pelo que sei, o CRC é derivado do caminho para uma caixa de correio, o que implica que os cabeçalhos armazenados são os cabeçalhos de todos os emails nessa caixa de correio . Portanto, seu programa acabará essencialmente com um buffer contendo todos os cabeçalhos de todos os emails em uma determinada caixa de correio. Não acho que seja muito mais útil do que extrair os cabeçalhos de todos os emails atualmente em sua caixa de correio (e, dada a "resposta curta" acima, não é garantido que seja mais confiável).

jmtd
fonte