エラーメール解析プログラム (libexec/error)
libexec/error は &fml4; の libexec/mead に相当するものです。
概要
ML作成時に $ml-admin のアドレスは libexec/error を呼び出すように設定
されます。
libexec/error は標準入力からメールを読みこみ、distribute などと同様に
parse し、Mail::Message オブジェクトの鎖を作ります。そして、
Mail::Bounce クラスがエラー内容の解析をします。
Mail::Bounce は、エラーメールについて「どの MTA が生成したものか?」
「エラーを引き起こしたメールアドレス」「エラーの理由」を分析します。
解析結果は $error_analyzer_cache_dir ディレクトリに格納され、
ます。
一定時間以上経過すると、$error_analyzer_function がキャッシュのデータ
を解析し、あるメールアドレスが存在しないように思えるかいなか?を判定し
ます。その結果、消すべきだと判断されると、削除されます。
キャッシュ
解析結果は $error_analyzer_cache_dir ディレクトリに格納されます。
現在、キャッシュの入出力には Tie::JournaledDir クラスを使っていますが、
FML::Erorr::Cache 経由で Tie::JournaledDir への IO を行ないます。
FML::Erorr::Cache が Tie::JournaledDir の直前に位置し、アダプタとなり
ます。すべての IO は FML::Erorr::Cache が提供する primitive なメソッド
を通じてのみ行なわなければなりません。