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

9

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

    
por artistoex 19.03.2011 / 20:22

1 resposta

3

Resposta curta:

é perfeitamente possível que o cache não seja abrangente. Se você excluir o e-mail e depois o hcache recalcular o cache de cabeçalho para essa caixa de correio, suas estatísticas não incluirão o e-mail de antes da exclusão.

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

Caso contrário, você pode pesquisar 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 de compilação exatas para o seu mutt, pode ser um dos QDBM , gabinete tokyo , gdbm ou Berkeley DB (BDB); que todos implementam uma variação da API do BDB.

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

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

Você precisaria então escrever um programa, usando essa biblioteca, para consultar o BDB armazenado dentro do 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 eu posso dizer, o CRC é derivado do caminho para uma caixa de correio, o que implica que os cabeçalhos armazenados são os cabeçalhos para todos os emails nessa caixa de correio . Portanto, o seu programa essencialmente vai acabar com um buffer contendo todos os cabeçalhos para todos os e-mails em uma determinada caixa de correio. Eu não acho que será muito mais útil do que puxar os cabeçalhos de todos os e-mails atualmente em sua caixa de correio (e receber a "resposta curta" acima, não garantindo que seja mais confiável).

    
por 03.05.2011 / 15:31

Tags