それAutomatorでできるよ

http://www.hawkwings.net/2007/03/01/a-faster-way-to-speed-up-mailapp/

あちこちのブログで紹介されていますが、Mail.appが使用しているSQLiteに対してVACUUMを発行し、データベースを整理してMailを高速化するというTips。これをAutomatorにやらせてみました。

AutomatorにはSQLiteのクエリを実行するアクションがある(要XCodeインストール)ので、ワークフローにすることができます。しかし、こんな事やろうと思う人ならTerminalでコマンド打ったほうが楽でしょうし、繰り返し行う作業ではないのでAutomatorでやる意味ないですよ。突っ込まれる前に念のため。

f:id:paulownia:20070305224748j:image

「指定されたFinder項目を取得」アクションに、/Users/your account/Library/Mail/Envelope Indexファイルをドロップします。「SQLを実行」アクションでvacuum subjectsします。

SQLでメール本文を取得できれば、なんか色々使えそう、と思って、試しに「select * from messages」を実行してテキストに書き出してみたのですが、盛大に文字化けしてダメでした。ああ、こーいうところがジョブズなんだよね…(苦笑)

ちなみにmessagesというテーブル名ですが、SQLite3のプロンプトで、.tablesと打つとデータベースファイルに存在するテーブル名を取得できます。

追記

SQLiteのvacuumはdb全体に適用されて、テーブル名は無視するので最後の行は

sqlite> vacuum;

だけでいいのです。どうでもいいことなんですが気になってしまった。
http://d.hatena.ne.jp/ogijun/20070307

The index or table name argument is now ignored
http://www.sqlite.org/lang_vacuum.html

おお、なるほどマニュアルにもちゃんと書いてありますね。

ちなみにこの高速化Tips、メールが1万通位ないとほとんど意味がないようです。