muttヘッダーキャッシュから電子メール統計を生成するにはどうすればよいですか?


12

それに応じて設定されると(set header_cache=)muttはメールヘッダーをキャッシュファイルに保存します。これはメール統計の生成に使用できます。誰かがファイル形式について何か知っていますか?含まれている情報を抽出するために利用できるツールはありますか?(加えてstringsgrepawk等)


これがコードです:dev.mutt.org/hg/mutt/file/tip/hcache.c
mattdm

メールサーバーのログファイルでより適切に回答されない、どのような統計情報を生成することを期待していますか?
カレブ

1
@Caleb私は非常に基本的な統計を念頭に置いています。たとえば、年間/月/日あたりの最小/平均/最大メール、最も頻繁な受信/送信者などです。すべての人がメールサーバーログにアクセスできるわけではないため、これは常にオプションとは限りません。
artistoex

回答:


4

簡潔な答え:

キャッシュが包括的でない可能性は十分にあります。メールを削除し、後でhcacheがそのメールボックスのヘッダーキャッシュを再計算した場合、統計には削除前のメールは含まれません。

サーバーのメールログにア​​クセスできない場合、フィルターメカニズム(procmailなど)にアクセスできますか?これを使用して、分析用の代替ログを生成できます。

それ以外の場合は、受信したメールのログを生成できるプログラムでメールボックスをポーリングできますか?offlineimapフィルター、またはハッシュとキャッシュを組み合わせたfetchmail / retchmailのようなもの。

より長い答え:

キャッシュファイルは、DBMスタイルのデータベースです。muttの正確なビルドオプションに応じて、QDBMtokyoキャビネットgdbm、またはBerkeley DB(BDB)のいずれかになります。これらはすべて、BDBのAPIのバリエーションを実装しています。

適切なライブラリ実装を使用しない限り、DBを確実に読み取ることができる可能性は低いと思います。ldd私のローカルmuttがtokyoキャビネット実装を使用していることを教えてくれます:

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

次に、そのライブラリを使用して、キャッシュファイル内に格納されているBDBをクエリするプログラムを作成する必要があります。Perl、Ruby、Lua、Java、そしてもちろんC用のバインディングがあります。

ヘッダーは、CRCによってインデックスが付けられた値としてDBに格納されているように見えます。私が知ることができることから、CRCはメールボックスへのパスから派生しています。これは、格納されたヘッダーがそのメールボックス内のすべてのメールのヘッダーであることを意味します。したがって、プログラムは基本的に、指定されたメールボックス内のすべてのメールのすべてのヘッダーを含むバッファーで終了します。現在メールボックスにあるすべてのメールからヘッダーをプルするよりもはるかに便利だとは思いません(上記の「短い回答」を与えられた場合、信頼性は保証されません)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.