条件がいろいろ違う
発掘した場所,元の時代などによっていろいろメールファイルの形態(ヘッダーに含まれる情報や型式,文字コード等)が違いますので,なかなか一筋縄ではいきません.
一応,昔の発掘したメールファイルの回復方法を書いときます.最終的には手作業で,メールヘッダー部分を修正する必要があることが多いです.
取り出して一通ずつ切り分ける
まず,何とかして取り出して,一通ずつに切り分けます.どこからもってくるかによって全部つながっていたり,個別に分かれていたりしますね
メールが数百とかある場合は,Perlスクリプトなどで処理するのが現実的ですね.
文字コードをUTF-8に整える
文字コード変換が必要な場合,扱うOSでネイティブな文字コードに変換してしまうのが楽です.わたしの場合は,MacとLinux + KDEが主なので,迷わずUTF-8です.
nkfを使うか,Kateなどの高機能エディターでUTF-8にします.数が多い場合は,bashでnkfを連続で回すのが良いでしょうね.
ヘッダーを整える
文字コードを変換した場合,ヘッダーの当該部分を,
Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit
にします.数が多ければsedを使うのがよいでしょう.
なお,比較的新しいメールについては,ヘッダー内のタイトル(Subject)はMIME化されていて,また,本文の文字コードと,ヘッダーの上記部分の整合性もいいので,文字コード変更(とそれに伴うヘッダー修正)は行わない方が良いです.
ヘッダーの修正
文字コード以外のヘッダーの修正が必要なことが多いです.
一番引っかかる(IMAPクライアントのヘッダー解析でエラーになってしまう)のが,
>From だれそれ
というヘッダーです.これは,ざっくり削除しました.
sed -i '/^>From /d' *
(Mac OS X付属のsedは,GNU sedではないようで,上記の方法はNGです.)
ただし,手持ちの古いファイルの一部は,このヘッダーのみに日時が含まれている(「だれそれ」の後に付いている)ので,これをDate:行に書き換える必要がありました.
できたファイルをThunderbirdで読み込む
できたファイルの拡張子は,”eml”にします.
IMAPのサーバーでも良いし,ローカルでも良いので空のフォルダーを,Thunderbirdで作ります.そこへ(Thunderbirdへ),整えたemlファイルをdrag & dropします.
確認して必要ならば修正
読み込んだメールの日時やタイトル,本文を確認して,うまくいってなければ個別に文字コードやヘッダーを修正して再度読み込ませます.
Thunderbirdが依然としてエラーを出すヘッダーのあるemlについては,emlをuploadした直後に,downloadに失敗します(uploadはノーチェックのようです)ので,小分けにして読み込ませるのが良いようです.
制限
このようにして,Thunderbirdでは,エラーなく復活できたメールを正常に相手,日時,タイトルなどをリスト表示できて,本文の表示もできます.
いっぽうで,このようにThunderbirdからIMAPサーバーにuploadしたメールについて,Mac OS Xの”Mail”や,iPhoneなどのiOSの「メール」でアクセスすると,リストには日時が正常に表示されず,Thunderbirdでemlをuploadした日時が表示されるものがあります.また,リストには「本文がありません」と表示されるものもあります.
この,Mac OS Xと,iOSのMailでのリスト表示の不具合はなんとも不可思議で,同じように処理したつもりでも,リストに日時が正常に表示されるものと,uploadの日時になってしまうものがあります.両者のヘッダーを穴の開くほど眺めましたが,違いが分かりませんでした.
内容表示は正常なのでよしとします.時間順が重要な場合は,Thunderbirdで読むことにします.
効能^^;
この方法でかなり多くのメールを復活させました.2000年前後が主ですが,1994年頃のものもあります.
この人とは,この頃こういう交流をしていたのだ,などと懐古しています^^;
亡くなった先輩とのメールなど読み返すと,いろいろ思うところがあります.仲の良い先輩で,ある意味友だち付き合いしていました.あんまり失礼な書きぶりがなくてほっとしています.