Tsukiji Systems
RSS1.0


googleで
サイト内検索
このブログ
を検索!
  help

巻き戻し中。

2009年
2月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28


2009-02-21(土) 崩壊? [長年日記]

_ PC 会社端末

Thunderbirdのメールスプールが破損の模様。

受信箱の先週以前のメールが読み出せない。

大抵のメールはサブフォルダに仕分けてあるので無事だが、未処理&急ぎのメールは100通弱を受信箱に残している。

確か、暗号化キーを受信途中に引っこ抜いた記憶があるからそれだな。*1

のてぱどで開くと、あるところから解読不能。

幸いにもThunderbirdはインデックスと本分が別ファイルなので、どのメールからおかしいかリストは読める。

丁度年明けから先週ね。

POPでサイボウズと共用するためにサーバー上のスプールは7日間はThunderbirdからの削除を遅延させているけど、年明けは既に残ってないな。

えっと、バックアップは・・・

年末じゃん。_|‾|○ ガクガク

えーっと、他に手段は。。。?

*1 無理矢理ファイルに暗号掛けてるから仕様なんですわ。

_ PC (‾ー+‾)キラーン

をを、我が社はサイボウズも使っておる。

ってことは、サイボウズのメールファイルから加工するべ。

確か、メールごとの番号ファイルになってるけどスプールと同じようなフォーマットだった希ガス。

[WWW-root]/cgi-bin/cbag/[hoge]/file/Personal/[ID]/

覗いたら、過去10年近くのメールが約18,000通*1ほど溜まってるw

まずは1月と2月のファイルを

ls -lg 2*| grep -v 200. | awk '{if ($6 == "Jan" || $6 == "Feb") system ("cp -p "$9" ./tmp")}'

でtmpにコピー。*2

うぅ、960通もあるわ。。・゜・(ノД`)・゜・

さて、このまま「cat >> hoge」でスプール作って読めるかな?と思ったら甘いのね。

1.最初の「空行+Fromで始まる(From [アドレス] [日付])」行が無い。

2.改行がCR+LFに変換されとる。

3.Date:から1行目用に日付を引っ張ると形式が複数あって変換しきれない。

こんなの手で書き換えてらんない。要は、何某かフィルタせねばならぬ。

日付は

Mon, 9 Feb 2009 12:56:20 +0100

18 Feb 2009 00:10:24 +0900

と言った2種類が混在。

条件をよく考えながら、こんなshellを書いた。

もうね、面倒だから後者のパターンの曜日は「Mon」固定。

どうせ、Thunderbirdが日付で計算してくれると信じて。

いやいや、曜日の後ろにあるカンマが邪魔だったり、日付は2桁じゃないとイヤだったり( ゜Д゜)マンドクセー

if文の後のexitは、これがないと最初のFrom:やDate:以外に本文中に同じのがあると拾っちゃうから。

当然ながらprint文だと改行しちゃうので、1行に納めるためにprintf文で「\n」を書かない仕掛け。

テンポラリのファイルに1行目を作ったら、そのお尻にCR+LFのCRを取っ払いつつファイルをappendする。

最後に1個のファイルにどんどん追記と。

で、こいつをconv-spool.shとかで保存して、

ls -T 2* | awk '{system ("./conv-spool.sh "$1)}'

で引数にファイル名を与えながら一気にスプール作成。

鯖のスプールを一時的に置き換えて、無事960通を端末から取得して手動で必要な100通ほどをピックアップ。

┐(´д`)┌ ヤレヤレ

*1 512kB以上のメールはサイボウズで拒否しているので全部じゃないが

*2 確保であります!(`・ω・´)ゝ”

#!/bin/sh
cat $1 | awk '{if ( $1 == "From:" ) {print $0;exit}}' | awk -F"<|>" '{printf "%s  ", "From "$2}' > tmp.$1.addr
cat $1 | awk 'sub(",","")'| awk '{if ( $1 == "Date:" ) {if ( $5 == "2009" ) \
{printf "%s %s ",$2,$4;printf "%.2d",$3;print " "$6" "$5;exit} \
else {printf "Mon %s ",$4;printf "%.2d ",$3;print " "$6" "$5;exit}}}' >> tmp.$1.addr
cat $1 | awk 'sub(/\r$/,"")' >> tmp.$1.addr
cat tmp.$1.addr >> hogehoge2
rm tmp.$1.addr


過去の写真!
良い感じに付いた(・∀・) 削るぜ! オリジナル(すり減ってる) バンジョーはあるんだがw
アクセスカウンター!
累計:
本日:
昨日:
最近のツッコミ