りなざうの標準メーラで保存していたメールデータを、G-mailに移管した作業の備忘録
id:osshy:20130223:1361608662の詳細。
概略
LinuxZaurus SL-C1000の標準メーラで持っていたメールデータをzdbatでCSV化、添付ファイル群共々PCにコピーし、Cygwin上でgawkスクリプトでEMLに変換(スクリプト中でnkf、base64等のコマンドを使用)、ThunderbirdでG-mailにIMAP転送。
まず、りなざうでの作業
以下、PCのCygwin環境上で作業
- CSVを読んで、添付ファイルも取り込んだEMLを出力するgawkスクリプトを作成・実行
- 「複数行に亘る1フィールドを含む、カンマ区切りなレコード」を扱うために、FS、FPAT、RS変数を使用している
- awk内で使用しているコマンド
- あぶのーまるなトコ
- zdbatの問題なのか、元のZaurus DataBase起因なのかは不明だが、zdbatで得られたCSVは、以下の様な問題を含んでいた
- 送信メールのレコードで、受信したメールに対する返信であった場合、HTMLとDMMYフィールドには元の受信メールのデータが入ってしまっている
- 返信ではない送信メールのレコードには、HTML、DMMYともにデータが無い(DMMYは、ヘッダのレコード名のみでその値が無い)
- 送信なので、HTMLはそもそも不要で、含まれる場合は捨てれば良い
- 問題はDMMY、即ち、Message-Id・In-Reply-To・Referenceである
- 受信メールに対する返信メールとする為には、
- 送信メールにMessage-Idの値がある場合、その値は実は返信する受信メールのIdなので、送信メールにあってはIn-Reply-Toになるべき
- 送信メールにIn-Reply-Toの値がある場合、その値は実は返信する受信メールが返信したメールのIdなので、送信メールにあっては上記Message-Idの値に変更されるべき
- 送信メールにReferencesの値がある場合、その値は実は返信する受信メールが返信したメール以前のスレッドのIdなので、受信メールに対する返信である送信メールにあっては、上記Message-Idの値を追加した内容に変更されるべき
- そして残念な事に、以下の仕様にならざるを得ない
- 送信メールは基本、Message-Idは判らない
- 受信メールに対する返信メールとする為には、
- zdbatの問題なのか、元のZaurus DataBase起因なのかは不明だが、zdbatで得られたCSVは、以下の様な問題を含んでいた
- その他
- 送信メールの場合、「
X-Mailer: sharp pda mailer/5.4[ja](SL-C1000/1.0)
」を出力(笑)
- 送信メールの場合、「
- 出来たEMLをThunderbirdでG-mailにIMAP転送
- 省略