2018年11月13日火曜日

壊れたThunderbirdのメールボックス(mbox)を復旧する

残念なことに、度々Thunderbirdのメールボックスは破損する。
ウイルススキャンのタイミングだったり、再起動中だったりなのだけれども、何にしろ「4GBを超ているinbox」を使用していると壊しがちなので、
何にしろzipの壁である4gbを超えないようにせねばならない。

で、不注意で壊してしまった場合は、だらだらと続く(文字化けした)テキストファイルをみながら、どこまでが1メールなのかを追わなければならなかったりとか、地獄がスタートする(そしてあきらめる)のだが、
最近いいやり方があることを知った。

http://www.multiburst.net/sometime-php/2007/10/mboxthunderbirdbecky/

------------------
このコマンドを用いて下記のようにコマンドを打てば、メール毎にファイル分割してくれる。

csplit -f "x" -b "%04d"  (mbox形式のファイル名) '/^From .*/' '{*}'

オプションについての詳細は上記参考サイトを参照して頂きたい。

が、上記の場合、一つのファイルで一つのメールということになってしまい。すさまじいファイル数になる。いちいちこれを全部Beckyでインポートするのも面倒なので、100通ずつ今度は結合してみた。

cat x1* > mbox1
cat x2* > mbox2
cat x3* > mbox3
cat x4* > mbox4



といった感じ。

このファイルをBeckyでインポートすることでインポートを完了することができた。
-----------------

僕の場合は何故か引用符「>」が頭についてしまったので、
csplit -f "x" -b "%06d" mboxfilename '/^>From .*/' '{*}'
とする。
で、「>From」だと都合が悪いので、sedで
find x0* |xargs sed -i "s/>Fr/Fr/g"
として、引用府をとった。
エラーが出ているメールの部分は、ファイルサイズがおかしくなっていたりするから、バラの時に並べ替えて、内容を変更。
部分で結合していって、エラーが出たらそれを分析でもいい(が、thunderbirdといったりきたりをしないといけない)。
あとは本記事と同じように結合して修了。
cat x00* > inboxx00
cat x01* > inboxx01
cat x02* > inboxx02
.........

thundebirdのMailディレクトリに入れてやれば完了。
これのおかげで、全てのメールをロストするという最悪の事態を初めてまぬがれた。
コメントで感謝を示したかったが、コメントを付けられなさそうだったのでここで。
4gbを超えるとろくなことはない。

0 件のコメント:

コメントを投稿