それに応じて設定されると(set header_cache=
)muttはメールヘッダーをキャッシュファイルに保存します。これはメール統計の生成に使用できます。誰かがファイル形式について何か知っていますか?含まれている情報を抽出するために利用できるツールはありますか?(加えてstrings
、grep
、awk
等)
それに応じて設定されると(set header_cache=
)muttはメールヘッダーをキャッシュファイルに保存します。これはメール統計の生成に使用できます。誰かがファイル形式について何か知っていますか?含まれている情報を抽出するために利用できるツールはありますか?(加えてstrings
、grep
、awk
等)
回答:
簡潔な答え:
キャッシュが包括的でない可能性は十分にあります。メールを削除し、後でhcacheがそのメールボックスのヘッダーキャッシュを再計算した場合、統計には削除前のメールは含まれません。
サーバーのメールログにアクセスできない場合、フィルターメカニズム(procmailなど)にアクセスできますか?これを使用して、分析用の代替ログを生成できます。
それ以外の場合は、受信したメールのログを生成できるプログラムでメールボックスをポーリングできますか?offlineimapフィルター、またはハッシュとキャッシュを組み合わせたfetchmail / retchmailのようなもの。
より長い答え:
キャッシュファイルは、DBMスタイルのデータベースです。muttの正確なビルドオプションに応じて、QDBM、tokyoキャビネット、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はメールボックスへのパスから派生しています。これは、格納されたヘッダーがそのメールボックス内のすべてのメールのヘッダーであることを意味します。したがって、プログラムは基本的に、指定されたメールボックス内のすべてのメールのすべてのヘッダーを含むバッファーで終了します。現在メールボックスにあるすべてのメールからヘッダーをプルするよりもはるかに便利だとは思いません(上記の「短い回答」を与えられた場合、信頼性は保証されません)。