NetscapeMail から EudoraPro
へのメール乗り換え手順
(1997/07/05)
世界的に有名なメールソフト
である、EudoraPro を試してみたくてデモ版で遊んでいたのだが、正式にこれに乗り換えることにした。 私はメーラーというものはOSと同様にセキュリティーをも任せるものであるから、実績のあるもので「世界的に」使われているものを使う必要があると常々思っている。 この点で選択肢としては、マイクロソフトのメーラー、ネットスケープ・ナビゲータ内蔵のメーラー、EudoraPro の3つに絞る事ができる。 それぞれ良い点と足りない点があるのだが、おおむねネットスケープナビゲータ3.01J内蔵のメーラーに満足していた。 ネットスケープナビゲータでは、ウィンドウの右下にメールが到着すると ! マークが現われる。 ここがいたく気に入っているのだ。 しかしながら、複数のPOP3アカウントを扱えない。 小さなプログラムを書いて、これに対応していたのだが、やはり本体そのものにこの機能が欲しい。
ある日、とある海外からの信頼できる人からの e-mail のヘッダを眺めているうちに、この人が EudoraPro を使っている事に気付いて「マネ」してみようと思ったのが、EudoraPro に目を向けたきっかけであった。
EudoraPro の良いところ
EudoraPro は日本語版が写真のようなパッケージソフトとしてクニリサーチから発売されており、私の Windows NT3.51(SP5) と NT4.0 の両方(もちろん Windows95 も)で動作する。 この点も EudoraPro に乗り換えるのに十分な動機のひとつであった。 あとで知ったのだが、EudoraPro はプログラム起動時に指定したワークディレクトリにあるメールデータ一式を使用する。 これは大変便利で、NT3.51 から NT4.0 に(同じマシンで)スイッチしてもメールの格納ディレクトリを同じディレクトリを指定することにより、同じ環境を保つことが簡単にできる。 同様にLANで繋がっているファイルサーバーにメールボックスを置く事も可能だ。
他にも EudoraPro の素晴らしい機能(フィルタやプラグイン)はまだまだたくさんあって、これについて書くときりがないので今回は割愛するが、設計思想(仕様)が素晴らしいソフトであると言っておくことにする。 プログラムの設計に携わる人はこのソフトのよさを手本にして欲しいと思う。 コーディングや画面デザインに関してはいささか感心できない(よく落ちる、画面が単純)が、設計の良さはそれを上回っている。 プログラマであればすぐにでも乗り換えるのがいい。
引っ越しは簡単に思えたが
さて、EudoraPro に乗り換えるに際して、それまで使っていたネットスケープナビゲータにあるメールを引っ越す必要がでてくる。 これは、いままでも マイクロソフトのメーラーで受信したメールをネットスケープに移行しようとしたことがあったが結局断念してしまった。 乗り換えツールも探したが、私には見つからなかった。 同様にネットスケープから EudoraPro への移行ツールも見つかっていない。(もしあれば教えていただきたい)
EudoraPro のメール本文は、"受信.mbx" というファイルがテキストファイルに格納されていて、これは日本語を含め完全に読める形となって保存されている。 そして "受信.toc" というファイルが補助情報ファイルのようだ。
他方、NetscapeNavigator のメールは、Mail というサブディレクトリに格納されている "Inbox" という拡張子無しのファイルに格納されていて、これもテキストファイルである。 しかしこのファイル中の日本語は宇宙語(やたら $B$...など$ばかり)になっている。 また、ステータスやインデックスなどは "Inbox.snm" というバイナリファイルに保存されているようである。
この両者のテキスト形式のメール本文ファイルが似ているので、試しに EudoraPro に NetscapeNavigator の Inbox ファイルを Inbox.mbx としてコピーしてみたところ、EudoraPro はこれを認識してくれた。 その結果、Inbox.toc という管理ファイルは自動生成されたのだ。
日本語メール本文の変換 - ページブラウザというソフト
これで、いとも簡単にメールを EudoraPro に移すことができた。英語メールの場合はこれで移行完了である。 問題は日本語の宇宙語メールである。 しかし、本文についてはあるツールのおかげで解決できた。
そのツールは、「ページブラウザー」というオンラインソフトで窓の社よりダウンロードする事ができる。ファイル名は pgbr32.lzh だ。 これを解凍した PGBROW32.EXE というプログラムが今回大活躍したツールである。 これを作成した笹川さんに感謝する。
このツールでまずは、メニュー「オプション−開く」で「自動判定に迷ったら問い合わせる」のチェックをオンにしておき、さきの NetscapeNavigator の Inbox ファイルをオープンする。 ちゃんと読める日本語に変換できたら、「名前を付けて保存」で現われるダイアログの「保存形式の設定」ボタンで Windows用シフトJIS を選び、ファイルを NetscapeInbox.mbx として保存する。
このファイルを EudoraPro のメールディレクトリ(受信.mbxがあるディレクトリ)にコピーしてから EudoraPro を起動すると、"NetscapeInbox" というメールボックス名が自動的に現われる。
日本語メール標題はBase64エンコード
しかしながら、まだメールの標題(Subject)が日本語のものは宇宙語で読む事ができない。標題の宇宙語は本文の宇宙語とは異なり、"=?iso-2022-jp?B?GyRCJGQkIiRkJCIbKEo=?=" などというものである。
これは何かを調べていくと、「Base64 でエンコードされたJISコード」ということだとわかった。 7bit の文字ベース(つまり、アルファベット)でバイナリデータを送る規格らしい。 Base64 というのは、RFC1521 で定められているようで、英文だが読んでみるとなんとか理解できた。 この Base64 というのは簡単に言うと、定められたアルファベットのテーブルから、24bitバイナリデータをアルファベット4文字で表現することだ。 実際のデータ量よりも 33% 大きくなると書いてあるのは、4文字(8bitx4=32bit) で送れるデータは 24bit ということから納得できる。
また、それとは別にインターネットにおけるメールヘッダの規格として RFC1522 というものがある。"MINE Part Two" というこの文書は、
"=?" (キャラクタセット) "?" (エンコード方法) "?" (エンコードされたテキスト) "?="
というまとまりを定めている。 日本語メール標題の "=?iso-2022-jp?B?.....?=" というのはこの事だった。 エンコード方法というのに "Q" と "B" があり、私が目にしていたのが "B" の Base64(RFC1521) のエンコード方法だった。
暗号解読のようで面白くなってきたので、勉強続行することにした。
"=?iso-2022-jp?B?GyRCJGQkIiRkJCIbKEo=?="には何が書いてあるのか
テーマにトライしてみた。 まず RFC1522 より、この文字列は次のように3つの部分に分ける事が出来る。
"=?iso-2022-jp"
これは日本語のキャラクタセットiso-2022-jp(他にもある)を意味する。
"?B"
は Base64 でエンコードされていることを意味している。
"?GyRCJGQkIiRkJCIbKEo=" の最初の "?" を除いた
"GyRCJGQkIiRkJCIbKEo="
が Base64 エンコーデッドテキストだ。
そして "?=" で締めくくられる。
日本語の標題は、"GyRCJGQkIiRkJCIbKEo=" である。 これを解読してみることにした。
Base64 デコード - 標題が読めた
Base64 はアルファベット 4 文字単位で区切っていく。
RFC1521 の Base64 Table から、最初の "GyRC" を対応する値に直すと
文字 値(10進) G 6 y 50 R 17 C 2 となる。
これを 24bit の値に直すとこうなる。
文字 値(10進) 6bitシフト G 6 x64x64x64 y 50 x64x64 R 17 x64 C 2 x1 和 10進数 1778754 和 16進数 1B2442 最後の値に注目だ。 1B 24 42。 これは ESC, "$", "B" となり、漢字IN に相当する。 同様にこの計算を続けると、"GyRCJGQkIiRkJCIbKEo=" という文字列は次のようになる。
HEX 1B 24 42 24 64 24 22 24 64 24 22 1B 28 4A 文字 ESC "$" "B" "や" "あ" "や" "あ" ESC "(" "J" やっと解読成功だ。 メールの標題は "やあやあ" だったわけだ。
この中で出てくる、ESC $ B や ESC ( J というシーケンスは、RFC1468 で定められている。 簡単にいうと JIS コードの漢字IN,漢字OUTである。 また、"GyRCJGQkIiRkJCIbKEo=" の最後の "=" は PAD(パディング) といって、エンコード元のデータ全体の長さが 24bit で割り切れない時に追加される。
→ このようにして、Base64 文字列はデコードできる。 簡単なプログラムを書いてみた。このプログラムは、Base64エンコードされた文字列を受け取って、デコードされたテキストを返す関数を書いた。 まず、Base64 エンコードされた文字列を4文字単位で3バイト(24bit)のバイナリコードの配列に格納しなおして、後で配列をなめて漢字IN,OUTを判断しながら、漢字コードであれば、_mbcjistojms() 関数を使ってシフトJISに直すといったものである。 上図のように Base64 エンコードテキストを入力して、ボタンを押すとデコード結果を表示させるものだ。 試してみたい人はやってみて欲しい。
なお、漢字IN,OUT と書いたが、実際にはもう少しいろいろなシーケンスがある。このプログラムでは、エラー処理を省いてあるので実験用として遊んでいただきたい。
インターネットに隠された多くの知恵
これを元にプログラムを書いて、フィルターを作成すれば、最後の問題であった「日本語メール標題」も読めるようにファイルを変換できることがわかった。(このフィルタはまだ書いていない。改行がまだ理解できていない)
今回のように、原理を知るとインターネットの先人達の考えた知恵がわかってとても楽しい解析勉強だった。まだまだインターネットにはこのようなものがたくさんあり、すべてを理解するのはとても大変なことだが、プログラミングの息抜きにチョット勉強してみるととても楽しい。
Copyright(C) 1997 GAOGAO(S.Ieiri)