パソコン・メモメモ備忘録

気の向くままパソコン関係等で気になることを書き記す。時々更新!

ファイルスタンプを メールの Date: で設定する

Windows Search 4.0 を便利に使っている。メールを読むのには AlMail を使っており、1メール1ファイル(.alm) で格納されている。これを検索するために、eml と同じ iFilter を使っているつもりだったが、良く見てみると普通の plain text filter が使われていた。が、そんなに実用上困らないし、インデックスを作り直すのが面倒なので、そのまま使っている。ただ、一つ使いづらいのが、検索結果一覧の日時が、ファイルスタンプ(ファイルの更新日時)であること。AlMail 上で、メールを別のフォルダに移動などした際、受信した時のタイムスタンプが上書きされてしまうのだ。せめて、作成日時ならいいのに。ということで、
メールのヘッダの Date: フィールドを読み取って、タイムスタンプを更新してくれるソフトを探したが見つからず。ググってみると、中野さん?の日記にやり方を見つけた。ただし、Linux 用っぽい。

そこで、Cygwin をインストールして、procmail(formail のため)のパッケージがデフォで入らないので、追加して、上記の日記の Perl スクリプトを使わせてもらうことにした。find で対象となる alm ファイルをリストアップして、10 個ずつまとめて Perl スクリプトに投げるような sh スクリプトawk で生成した。

で、実行してみたのだが、かなり時間がかかる。一秒間に3通くらいしか処理できない。24万通くらいあるのだが... 気長に実行することにする...

一晩かかって進行状況 1/3 とか。最近のメールの更新が終わってたみたいなので、とりあえずそこまでにした。タイムスタンプを変更すると、インデックスが作り直されるかな、と思ったのが、そのまま新しく受信したメールがインデックスに追加されていく。インデックスにはタイムスタンプは含まれていないのか。でも検索結果一覧の方は、ちゃんと更新されたタイムスタンプが表示されていて、ソートもできてやっと使える検索になった。

ネットを見ていると、 eml の iFilter を使っても、Date フィールドは見てくれないとか。この方法が他にも必要になることもあるかも。

ちなみに、メールのファイル群自体は、vilivS5 の TrueCrypt の暗号化仮想ドライブにおいてあるのだが、タイムスタンプの変更は拙宅のデスクトップ PC でやろうと、TrueCrypt のコンテナをデスクトップ PC にコピーして、そこで変更処理、また vilivS5 へコンテナを書き戻す、という面倒も同時にやった。それでもあのタイムスタンプ変更の遅さ。Perl の起動とかが遅いのかな。

まぁ、苦労を重ねて、一つ一つ、vilivS5 を便利な道具にしていくのだ。あぁ、でも LOOX U の 2GB メモリと 2GHz CPU が羨ましいなぁ。