最近spamがまた酷くなってきたので、フィルタリングのルールを強くしたら、仕事関係のメールがspamに振り分けられるという問題が発生してきたので、メーラーのアドレス帳からメールアドレスを拾ってホワイトリストを作ろうと思って、Thunderbirdのアドレス帳からメールアドレスを抽出するスクリプトを書いてみました。
Thunderbirdのアドレスブックは.mabというちょっと変な形式になっています。どうやら歴史的な経緯でこの形式が使われているようなのですが、なかなか厄介な形式のようです。
Mork の謎 Firefox Hacks 翻訳日記/ウェブリブログ
Mork の何が悪いのか?
1. Mozilla 以外には使われていない、独自仕様のデータフォーマット。
2. 仕様書がない (に等しい) ので解析が困難。
3. 開発者がすでに退社しており、継続的な開発・修正が困難。
4. ファイルの一部が破損したときに手作業での修復が困難。
5. 開発者の言によれば、「テキストファイル形式を使うのは馬鹿げている、と思ったがそうしろと命令されたから作った」(前出 WebArchive のページ)
これを扱うためのライブラリとしてCPANにFile::Morkというモジュールがあり、すでにこれを使ってスクリプトを書いた人もいるようなので*1、そのプログラムを参考(というか、ほとんどそのまま)にスクリプトを作ってみました。
デフォルトのままではうまくエンディアンが認識できずに、エラーが出てしまうので、エンディアンをbyte_order => 'BE'と言う風に直接指定しています。場合によってはこの部分をLEに書き換える必要があるかもしれません。このあたりも次のバージョンくらいからSqliteになっていったりするんでしょうかね。
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/3217
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。