OSXのMail.appで重複メールを削除するツール

2009Jul0107:33
以下は過去に会社のブログで書いてた内容です。その旧ブログを閉鎖するにあたって、あるエントリーだけエライ需要があるのでここに移設します。

このMacOSX付属のメールソフトMail.app向けツールは、Mac専門誌で取り上げられた事もあってかなり反響がありました。他のメーラーから乗り換えた際や、データ復旧などの際に何故か重複してメールが登録されるなんてことがあったので自作しました。

では以下、むかーしに書いたエントリーです。
前の投稿でも書いたけど、何故かMail.appを使っているとメッセージが重複して登録されてしまうことがある。手でいちいち消すのは面倒なので、ネットでそれらしいツールが無いか調べてみた。

んが、ない。見つけられない。

なので、Mail.app for MacOSX用の、重複メール削除ツールを作った。基本的にはmbox形式なので他のソフトでも対応出来そうだ。

必要な人がいたら声かけて下さい。っていうか、この症状オレだけなのかな...。

(2005/06/08 追記)

結構反響があったので公開します

ツールというのは、ごくごく単純なperlスクリプトです。なので最低でも「ターミナル」の操作が出来る人、そんでもってある程度OSXのディレクトリ構成を把握している人しか使えないという代物です。とはいえ、説明の通りにやれば大丈夫だと思います。

Tigerになってから、Mail.appのメール保存形式は「1メール1ファイル」になりました(らしいです。Panther以前の事は忘れました)。ファイルは12345.emlxってな感じです。拡張子emlx。

ツールはこれらのファイル群を検査して行って、メールヘッダ中Message-IDをキーに重複しているかどうかを判断します。そして、重複しているメールがあったらそれをプログラムが勝手に作ったディレクトリ(具体的にはDuplicateMessages)に移動します。削除したりしませんので安心です。もし問題があれば移動されたメールを元の位置に戻せばオッケー。

それでは使い方を簡単に説明します。

まず、Mail.appは終了させておきましょう。そしてメールが保存されているディレクトリの確認です。自分の場合の例を示します。

「ホーム>ライブラリ>Mail>POP-akane@sqz.jp」

この中にINBOX.mboxというディレクトリがあります。これ、いわゆる「受信箱」に相当するものです。このディレクトリ内に、配布のchk_emlx.plを(解凍して)置きます。そして、「アプリケーション>ユーティリティ>ターミナル.app」からこのプログラムを実行するんですが、分からない人の為にここも詳しく説明しておきます。

ターミナルが起動したら、'cd 'と打った後に、FinderからINBOX.mboxディレクトリをドラッグ&ドロップでターミナル画面上に持って行きます。すると、

cd /Users/akane/Library/Mail/POP-akane@sqz.jp/BOX.mbox/

こんな感じになりますんで、Return。該当のディレクトリに移動したことになります。そしてすかさず(でなくても構いません)、

perl chk_emlx.pl

とやったら終わりです。ダラダラそれらしい文字列が出て来たら重複メールがあって、処理されている証拠です。何事も無く最後に「files:xxx」とか出たら重複メールは無かった、ということです。

プログラムと同じ階層に「DuplicateMessages」というディレクトリが出来ていますので、そこを開いてみて下さい。移動した重複メールが入っているはずです。移動元はMessagesディレクトリですので、何か問題があればそこに戻してやって下さい。

これらの処理が終わったら、Mail.appを立ち上げて該当のメール箱(ここでは受信箱)を選択し、メニューから「メールボックス>再構築」を行って下さい。重複メールが消えているはずです(きっと)。

あと補足ですが、上の例は「受信箱」が対象でした。んが、「送信済み」でやりたいとか、個々で作ったディレクトリでやりたいとかいう場合は、その都度ディレクトリを移って上と同じやり方をする必要があります。個々で作ったディレクトリの場合は少し位置が違っていて、例えば自分は「過去」というディレクトリを作っていますが、その場所は、

「ホーム>ライブラリ>Mail>Mailboxes>過去.mbox」

という感じです。

以上でございます。ご質問などがありましたらakane@sqz.jpまで。

(2005/06/10 追記)

Mailの重複とはちょっと違うんですが、メール検索をかけた時に同じメールが重複して表示されるという現象に悩まされました。しかも重複した一方のメールは"存在しない"事になってしまってます。これ、メールボックスの「再構築」をしたりすると起こるっぽいですが、一応解決方法を見つけたので書いておきます。

まず例によってMail.appを終了させた状態で、

「ホーム>ライブラリ>Mail>Envelope Index」

を削除...すると心配なのでデスクトップにでも移動させておきましょう。そしてMail.appを起動すると「メールボックスを読み込みます」的なメッセージが出るのでそのまま進めます。結構時間がかかりますのでお茶でも飲みながら待ちます。ちなみに自分の場合はPowerBookG4(1GHz/1GB)で6万通のメールを読むのに15分くらいでした。

これで検索してみると...やった!検索結果の重複が直った!

ずっとSpotlightのせいだと勘違いして何度もIndexを張り直したのがバカみたいだ。

CATEGORY

コメントする

TRACKBACK

トラックバックURL: http://akane.sqz.jp/mt/mt-tb.cgi/329