IS04マニヤックス/Eメールアプリのデータ解析「アカウント」編
IS04の唯一最大といってもいい大欠点。
それは
どうしようもなく使えないEZWEBメールアプリ
でしょう。
不具合で落ちたりデータが消えたりするのは、ある意味論外だが、これは治してくれさえすればいい。
それよりもっと理解しがたいのは、以下のような意味不明の仕様だ。
まぁほかにもいっぱいあるんだけど、なんせガラケーじゃ普通にできてたことがぜんぜんできない!
こりゃダメだろ・・・
IS03のメーラーはしごくまともで上記の欠点はかけらもないらしいのでアンドロイドだから、ってもんでもないはず。
なんとかしてくださいよ・・・・
ってことで、メーラのデータを解析してみた。
いずれPCでメンテツールでも作ってみたいなぁ、、、とかおもいつつ、なんか心が折れたから誰かつくってくれませんかね??
ということで、現時点での解析結果です。
お約束の警告
ここに書いてあることをマネしてデータが吹っ飛んだりIS04がモノリスになっても俺が悪いんじゃなくてマネしたあなたが全部悪いのでそのつもりで読んでくださいね!
まずメーラーの機能でSDにアカウントのバックアップをとる。
SDにつくられたフォルダ com.aplixcorp.email をPCにコピーする。
フォルダ com.aplixcorp.email\backup_accounts\にあるSQLiteのデータベースを"PupSQLite"みたいなSQLiteのDB扱えるツールで開く
まずメールフォルダの操作。
メールフォルダーはメール本文も設定も全部含めてDB化されている。
DBのファイル名は 1abc23d4-ef56-7890-12g3-456h7ij890k1.db みたいなランダムな英数字になってる。
テーブル localFoldersは受信フォルダの定義
テーブルの定義はこうなっている
CREATE TABLE localFolders(id INTEGER PRIMARY KEY,name TEXT,displayname TEXT,passwd TEXT,isdeletelocked INTEGER,ispasswordlocked INTEGER);
このテーブルをSELECTすると以下のような情報が見れる
id name displayname isdeletelocked ispasswordlocked INTEGER
1 cac23af2-1234-4b6f-945e-9d43f614f24e メルマガ 0 0
2 0d287ab1-5678-4afe-92c2-f3fef68d68d8 友人 0 0
6 1ea25a9a-9abc-49d3-a39c-6d4f949564fd 会社 0 0
この name は後でいろいろ使うので、nameとdisplayNameの対応を覚えておく。
テーブルmessagesは受信したメールそのもの。
テーブルの定義はこうなっている
CREATE TABLE messages(id INTEGER PRIMARY KEY,uid TEXT,subject TEXT,fromAddress TEXT,recipientaddress TEXT,sdate INTEGER,rdate INTEGER,flags INTEGER,datatype INTEGER,source BLOB,folder TEXT,seen TEXT);
このテーブルを直接操作したら受信ボックスの中身に反映する。
たとえば列fromaddressをwhere句に指定してfolderにアップデートをかけて振り分け設定前のメールを後振り分けすることは可能。
例「info@mailmagazine.com」からのメールをフォルダ「メルマガ」に後から振り分ける。
update messages set folder='cac23af2-1234-4b6f-945e-9d43f614f24e' where fromaddress = 'info@mailmagazine.com';
また列rdateを閾値にして古いメールはズバっと消すことも可能
例 2011年5月31日より前のメールをズバっと消すなら
delete from messages where sdate < strftime('%s','2011-05-31 00:00:00') * 1000;
もちろんテーブルをまるごとtruncateすれば全てのメールが一撃で消せる。しかし素人にはオススメできない。
当然だがこのあたりの操作はSQL文が皆目わからない人がやると地獄をみるのは言うまでもない。
SQLって何?という人は誰か俺以外の親切な人がズバっと解決なツールを作ってくれるのを待ちましょう!
テーブルhistoryAddressesには送受信メールの履歴。
テーブルの定義はこうなっている
CREATE TABLE historyAddresses(id INTEGER PRIMARY KEY,emailaddress TEXT,emailpersonal TEXT,date INTEGER,historyaddresstype TEXT);
単純にいらない行を消せば送受信履歴から消える模様
まぁテーブルをまるごとtruncateすれば一括で消せて便利かな?
データベース backup_accounts\accounts.dbを開く
テーブル preferencesはアカウントの設定情報がいろいろ入っているようです。
テーブルの定義はこうなっている
CREATE TABLE preferences(id INTEGER PRIMARY KEY,uuid TEXT,key TEXT,value TEXT);
この中でkey=FILTERING_MANAGERの行に振り分け設定が入っている。
そして振り分けデータが列 valueにXMLでベターっと入っている。
たとえば、「info@mailmagazine.com」からのメールをフォルダ「メルマガ」(テーブル localFolders によれば name "cac23af2-1234-4b6f-945e-9d43f614f24e")に振り分ける設定は
<FilteringSet folderName="cac23af2-1234-4b6f-945e-9d43f614f24e"> <FilterRuleList name="anonymous"> <FilterRule name="anonymous"> <FilterCondition name=""> <FromFilter email="info@mailmagazine.com" /> </FilterCondition> </FilterRule> </FilterRuleList> </FilteringSet>
フォルダ「メルマガ」に複数の振り分けアドレスを作りたいなら<filterrule>〜</filterrule>を繰りかえして記述する。
<FilteringSet folderName="cac23af2-1234-4b6f-945e-9d43f614f24e"> <FilterRuleList name="anonymous"> <FilterRule name="anonymous"> <FilterCondition name=""> <FromFilter email="info@mailmagazine.com" /> </FilterCondition> </FilterRule> <FilterRule name="anonymous"> <FilterCondition name=""> <FromFilter email="sales@shop.co.jp" /> </FilterCondition> </FilterRule> </FilterRuleList> </FilteringSet>
豚の梨本さん並のMの人にしかオススメできない「実験」ですのでよろしく。
フォルダが複数ある場合もfilteringsetのエレメントから複数作ればいいだけのことだ。
このへんは先にIS04でいくつか設定してからデータをぶっこぬいて眺めてみたらだいたいわかるだろう。
なんせ上記のXMLをエディタなどで作り、「改行をすべて削除」してpreferencesテーブルのkey=FILTERING_MANAGERの行のvalue列にペーストしたらよい。
当然だがこのあたりの操作はXML文が皆目わからない人がやると地獄をみるのは言うまでもない。
XMLって何?という人は誰か俺以外の親切な人がズバっと解決なツールを作ってくれるのを待ちましょう!
これらの操作をしたら、SDからアカウントにレストアする。
そうしたら、メールボックスの中身と振り分け設定が希望どおりの状態になる。
無論、失敗したら全部吹っ飛ぶのはいうまでもない。
というかココに書いてあるとおりにやってもヘタしたらふっとぶ可能性もある。それぞれの環境は千差万別だしソフトのリビジョンもよくわからんからだ。仕様がかわってたらたぶんデータも違う。
それに、ただ吹っ飛ぶだけじゃなくてメーラーが再起不能になって修理送りになる可能性もある。
ちなみに、フォルダ com.aplixcorp.email\addressbook\にはEメール連絡先のバックアップが入っている。
とった日付ごとにファイルが addressbook_*.db で作られる模様。
こちらは現在解析中。
[PR]