当进行相应配置时 ( set header_cache=
) mutt 将邮件标头保存在缓存文件中。这可以用来生成邮件统计数据。有人知道文件格式吗?是否有任何工具可以提取其中包含的信息? (此外strings
,,,grep
等等awk
)
答案1
简短回答:
缓存完全有可能不全面。如果您删除邮件并且 hcache 稍后重新计算该邮箱的标头缓存,则您的统计信息将不包括删除之前的邮件。
如果您无权访问服务器的邮件日志,您是否可以访问过滤机制,例如 procmail?您可以使用它来生成替代日志以进行分析。
否则,您可以使用可以生成收到邮件日志的程序轮询您的邮箱吗?类似于 Offlineimap 过滤器,或者 fetchmail/retchmail 与一些散列和缓存相结合。
更长的答案:
缓存文件是一个DBM 风格的数据库。根据您的杂种狗的确切构建选项,它可能是其中之一量子数据库管理,东京内阁,数据库管理系统或者伯克利数据库(BDB);它们都实现了 BDB API 的变体。
我相信除非您使用正确的库实现,否则您不太可能可靠地读取数据库。ldd
告诉我我当地的 mutt 使用 tokyo Cabinet 实现:
$ ldd /usr/bin/mutt
…
libtokyocabinet.so.8 => /usr/lib/libtokyocabinet.so.8 (0xb74f2000)
…
然后,您需要使用该库编写一个程序来查询存储在缓存文件中的 BDB。有 Perl、Ruby、Lua、Java,当然还有 C 的绑定。
看起来标头作为值存储在数据库中,并由 CRC 索引。据我所知,CRC 是从邮箱的路径派生的,这意味着存储的标头是该邮箱中所有邮件的标头。因此,您的程序本质上最终会得到一个缓冲区,其中包含给定邮箱中所有邮件的所有标头。我认为这不会比从邮箱中当前的所有邮件中提取标头更有用(并给出上面的“简短答案”,不保证更可靠)。