mhcompact

mhcompact

MH形式(Sylpheed,Mew,Wanderlust等)のメールファイルから不要な部分を削除することで、ハードディスク容量をちょっとでも減らそうという今の大容量記憶装置時代に取り残されてしまった人向けのツール(Rubyスクリプト)です:-p。

メールの内容によってだいぶ異なるのですが、私の場合、61,257KBが54,109KBと、7,148KB(12%)分小さくできました。

メールの中の不要な部分とは?

メールは、大きく分けると「ヘッダ部」「ボディ部」という2つのパートからなっています。簡単に言えば「ヘッダ部」が宛先などの部分、「ボディ部」が送信内容となります。 その「ヘッダ部」には、経路情報など、それが無くてもメーラで使う分には影響がないという情報が結構あります。 mhcompactはそれらの情報を削除することでメール自体のサイズを小さくします。

デフォルトの状態で、mhcompactが削除するヘッダは、

Received, Delivered-To, Posted, Precedence, User-Agent, Resent, Return-Path, Errors-To, X-, Sender

の項目で、上記以外のヘッダには手をつけません(削除対象外)。ただし、上記ヘッダのうち、

X-Face, X-Mailer, X-UIDL

の各項目は削除対象外とします。

必要条件(というか確認した動作環境)

以下に示すモノをそれぞれのドキュメントに従って、先にインストールしておいてください。

RedHat9
ruby-1.6.x , ruby-1.8.0 (2003-07-11) 

実行方法

実行する前にメーラを終了させておいてください。 直接メールファイルを上書きしてしまうので、実行する前に必ず$HOME/Mail配下全てをバックアップとっておいてください。

  1. mhcompactをダウンロードする。
  2. chmod +x mhcompact
  3. mhcompact(または、ruby mhcompact)

これで、~/Mail/配下の全てのメールが対象となります。メールの量によりますが、結構時間がかかりますんで(場合によっては数時間(^^;))注意してください(その間、メーラはいっさい使わないようにしてください)。

引数として、対象ディレクトリも指定可能です。~/Mail/ruby/ 配下のみを対象にする場合は、

$ mhcompact ~/Mail/ruby

とすればOKです。

それから、Ver 1.3から、高速化のために履歴を取って、次回からはまだ対象となっていない新しいファイルのみが対象となるようにしました。逆に、すでに対象となっているファイルも再度対象にしたい場合は"-a/--all" オプションをつけてください。

$ mhcompact -a ~/Mail/ruby

それから、 -v/--version, -h/--help でmhcompactの情報を表示するようにしました。

$ mhcompact -v

カスタマイズしたりする

直接、mhcompactの頭の方の変数の内容を変更することで削除対象とするヘッダをカスタマイズできます。

remove_headers

削除対象のヘッダです。行頭からの文字列を指定します。例えば、ヘッダのうち、PostedやPrecedenceなど、先頭がPで始まるもの全てを対象としたいのであれば"P"と指定します。大文字小文字は無視します。

デフォルトでは以下のようになっています。

remove_headers = ["Received", "Delivered-To", "Posted", "Precedence", "Lines", "User-Agent", 
                  "Resent", "Return-path", "Errors-to", "X-", "Sender"]

not_remove_headers

削除しないヘッダを明示的に指定します。削除対象ヘッダで指定しても、こちらでの設定が優先されます。 これは、主に、"X-"系のヘッダに使います。上のremove_headersの指定では、"X-"系の指定は全て削除対象になってしまいますので、デフォルトでは以下のようにして、X-Face, X-Mailer, X-UIDLに関しては削除対象外にしています。

not_remove_headers = ["X-Face", "X-Mailer", "X-UIDL"]

ライセンス

Copyright (C) 2000,2001 Masao Mutoh <mutoh@highwhay.ne.jp>

本ソフトウェアはGNU General Public License Version 2(GNU一般公有使用許諾書バージョン2)に基づいてリリースされるフリーソフトウェアです。また、本プログラムは無保証です。本プログラムの利用により何らかのトラブルが生じても、当方は一切責任を負いません。

ChangeLog

2001/10/27 Masao Mutoh <mutoh@highway.ne.jp>
  • version 1.3
  • ~/.mhcompact/historyというファイルに履歴を残し、次回からはそれ以降のみ対応とすることで大幅な速度アップを図った。引数に-a/--allオプションを使うと履歴に関係せずすべてのファイルを再実行する。
  • 引数を指定しない場合~/Mailを指定するように変更した。
  • -v, --version, -h, --helpオプション追加。両方ともバージョン・使用方法表示。
  • 開始時間を終了時に表示させるようにした。
  • 終了時にどのくらいファイルサイズを削減できたか表示するようにした。
2001/01/01 Masao Mutoh <mutoh@highway.ne.jp>
  • version 1.2
  • クラス化と高速化。少しだけ速くなりました(^^;)。
  • ファイルを変更したら.(ドット)を表示することで、なんとなく進捗状況がわかるようになりました。まぁ、なんとなくですけど(^^;)。
  • 削除対象・非削除対象のヘッダを指定する変数名称を変更しました。
  • 英語のドキュメントも用意しました。英語になってないかもしれませんが。
2000/09/22 Masao Mutoh <mutoh@highway.ne.jp>
  • version 1.1
  • 文字列の連結を+から<<に変更。<<の方がオブジェクトを生成しない分速いんだそうです。JavaでいうところのStringBufferとStringの関係という感じでしょうか。
2000/09/22 Masao Mutoh <mutoh@highway.ne.jp>
  • version 1.0 初リリース
更新日時:2004/04/28 01:36:01
キーワード:
参照:[よたらぼ 保管庫]