如何从Mutt标头缓存中生成电子邮件统计信息?


12

进行相应配置(set header_cache=)后,mutt将邮件标头保存在缓存文件中。可以用来生成邮件统计信息。有人知道文件格式吗?有没有可用的工具来提取包含的信息?(此外stringsgrepawk等)



您希望生成什么样的统计信息,而邮件服务器日志文件无法更好地回答这些统计信息?
Caleb

1
@Caleb我想到的是非常基本的统计数据,例如,每年/每月/每天的最小/平均/最大邮件数,大多数经常性的收据/发件人等。并非每个人都可以访问邮件服务器日志,因此,这并非总是一种选择。
artistoex 2011年

Answers:


4

简短答案:

缓存很有可能是不完整的。如果删除邮件,并且hcache稍后重新计算该邮箱的标头缓存,则您的统计信息将不包括删除之前的邮件。

如果您无权访问服务器的邮件日志,那么您是否有权访问过滤器机制,例如procmail?您可以使用它生成替代日志进行分析。

否则,您可以使用可以生成已接收邮件日志的程序来轮询邮箱吗?诸如offlineimap过滤器或fetchmail / retchmail与一些哈希和缓存结合在一起的东西。

更长的答案:

缓存文件是DBM样式的数据库。根据您的mutt的确切构建选项,它可以是QDBMtokyo cabinetgdbmBerkeley DB(BDB)之一;所有这些都实现了BDB API的变体。

我相信除非您使用正确的库实现,否则您不可能可靠地读取数据库。ldd告诉我我的本地杂物店使用东京内阁的实施方式:

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

然后,您需要使用该库编写一个程序,以查询存储在缓存文件中的BDB。有Perl,Ruby,Lua,Java和C的绑定。

头似乎是作为值存储在DB中,并由CRC索引。据我所知,CRC是从邮箱的路径派生的,这意味着存储的标头是该邮箱中所有邮件的标头。因此,您的程序实际上将以一个缓冲区结尾,该缓冲区包含给定邮箱中所有邮件的所有标头。我认为这不会比从您邮箱中当前所有邮件中提取标头有用得多(并且鉴于上面的“简短回答”,因此不能保证更加可靠)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.