[EdMax雑記]

Obsolete

EdMaxがVer2.64にて、PGP 6.5.1i以降(6.5.1i, 6.5.1Int, 6.5.1ckt, 6.5.2a, 6.5.3)に対応しました。PGP/MIME形式にも(添付ファイルの署名/暗号化も含め)完全に対応しています。

EdMaxフリー版やPGP 5.5.x, 6.0.xを使用されている方のためにしばらくの間はページを残しておきますが、確実なPGP対応のためにEdMaxの最新バージョンとPGP 6.5.1i以降を使用することをお勧めいたします。

EdMaxでPGP 5.5.3i/6.0.2iを使う方法

EdMaxでPGP6.5.8を使う方法
EdMaxでPGP 6.5.1i/6.5.1Int/6.5.1cktを使う方法

EdMaxというWindows95/98/NT用のメーラーがあります。(作者の方のページ/ユーザーの方による詳しい解説のページ

非常にカスタマイズ機能が豊富で、なおかつ基本的な機能がしっかりしています。EdMaxには基本機能のみで今後機能追加のない(バグフィックスはちゃんとやってくれる)フリー版と、英文スペルチェック機能や複数アカウントをシームレスに扱う(アカウント切り替えをせずにすべてのアカウントのフォルダを開いて操作できる;切り替え式の複数アカウントはフリー版にもある)機能やウェブ掲示板巡回機能などのついたシェアウェア版があります。

このEdMaxは暗号化ソフトPGPに対応しているのですが、処理をMS-DOSコマンドライン経由で行うため、残念ながらバージョン2.6.3iaという古いバージョンにしか対応していません。(PGPについては、PGP国際版のホームページ(日本語版)Official PGP home page in JapanPGP (Pretty Good Privacy)を参照してください)

そこで、EdMaxを 無理矢理 PGPバージョン5.5.3iや6.0.2iに対応させようというのがこのページの主旨です。無理矢理ですので、ちょっと不自然なところがありますが、そこはそれ大目に見てください。

(私のやり方はかなりいいかげんですので、その点はご理解のうえ利用してください。もっとちゃんとしたやり方を考えてくれる方がいらっしゃれば大歓迎です)


手順

一応の最低限のこととして、基本的なWindowsの知識(PATHの設定方法は知っておいてください)、圧縮書庫の扱い方(*.zip, *.lzhファイルを解凍できるくらい)、EdMaxの使い方、PGPの知識(鍵の作り方、公開鍵の扱い方、暗号化・復号化のやり方など)は、別のところで勉強して知っているものとして書いていきます。
これらについてうまくいかなくてもここで紹介しているソフトウェア作者の方々や私に聞かないでください。

手順1

まず、PGPMsg*.DLLを手に入れます。S-YAMADA@WEBのSoftwareページで入手できます。

PGP 5.5.3i用(pgpm5041.lzh)とPGP 6.0i(6.0.2i)用(pgpm6041.lzh)がありますので、自分が使っているPGPのバージョンに合ったものを手に入れてください。

この pgpm????.lzh をPATHの通ったディレクトリに解凍してください。(環境変数PATHはWindows95/98なら AUTOEXEC.BAT ファイルを編集してWindowsを再起動することで、NTなら環境変数の設定パネルを使用して指定できます)

手順2

次に以下の内容の pgp.bat ファイルを、同じく環境変数PATHで指定されているディレクトリに作ってください。(範囲選択してコピーするなどして、メモ帳や任意のテキストエディタでファイルを作ってください。ワードパッドやMS Wordや一太郎は使わないほうがいいです)

その際必ず、2行目の set DIR_OF_EDMAX="C:\Program Files\EDMAX" の "C:\Program Files\EDMAX" については、EdMaxをインストールしたディレクトリ名に書き換えてください。(例えば C:\EdMax にインストールしたのであれば、set DIR_OF_EDMAX="C:\EdMax" とします)

また、PGP 6.0.2iとpgpm6041.lzhを使う場合は、6ヶ所ある pgpmsg55pgpmsg60 に書き換えることも忘れないようにしてください。


@echo off
set DIR_OF_EDMAX="C:\Program Files\EDMAX"
if "%1"=="-ea" goto e
if "%1"=="-sea" goto es
if "%1"=="-sat" goto s
if "%1"=="+batchmode" goto d
if "%1"=="-kxa" goto x
goto end
:e
pgpmsg55 e -l -p "%3" > "%DIR_OF_EDMAX%\Work\$$pgptm1.asc"
goto end
:es
pgpmsg55 es -l -p "%4" > "%DIR_OF_EDMAX%\Work\$$pgptm1.asc"
goto end
:s
pgpmsg55 s -l -p "%4" > "%DIR_OF_EDMAX%\Work\$$pgptm1.asc"
goto end
:d
if "%3"=="-o" goto ds
if "%4"=="-o" goto de
goto end
:ds
pgpmsg55 d -l -p "%2" > "%4"
goto end
:de
pgpmsg55 d -l -p "%3" > "%5"
goto end
:x
pgpmsg55 x "%DIR_OF_EDMAX%\crlf.txt" > "%4"
goto end
:end

手順3

次にEdMaxの設定ファイルを書き換えます。ちょっと慎重にやってもらわないといけません。

必ずEdMaxを終了してください。常駐とかしてないかちゃんと確認してください。

EdMaxをインストールしたディレクトリ内にある edmax.ini ファイルをメモ帳かテキストエディタで開きます(EdMaxで開かないように)。

そのファイルの中にある PgpExeName=pgp という行を PgpExeName=pgp.bat と書き換えてください( .bat を付けるだけです)。そして保存してファイルを閉じます。
(註:元に戻したくなった時は PgpExeName=pgp.bat を PgpExeName=pgp に書き戻すだけです。忘れてしまって「PGP 2.6.3iaに戻そうとしたら動かなくなった」と騒がないように)

手順4

手順3までで通常のPGPの使用はちゃんとできるようになったのですが、EdMaxは公開鍵をメールに添付することもできるように機能が用意されているので、それを生かすためのPGPMsg*.DLL用の細工を施します。

EdMaxをインストールしたディレクトリに、crlf.txt というファイル名で改行1個だけのファイルを作ってください(メモ帳かテキストエディタを使用してください)。

以上で準備は終了です。


使い方

基本的には普通にEdMaxの機能から使ってもらえばいいのですが、注意といいますか、無理矢理 やったことで出てくるやむをえない欠点があります。

  1. 暗号化をする際に、EdMaxの元々の機能では宛先(To:)やCc:、Bcc:に指定されているメールアドレスをPGPに自動的に渡すようになっているのですが、この方法ではそれができません。
    起動後開かれるウィンドウで送り先のIDをダブルクリックして指定してください。

  2. EdMaxからPGPの機能を使う際のほとんどの場面で、ダイアログボックスが開きいろいろな入力を促してきますが、これらEdMaxが表示しているダイアログボックスで入力した内容は、この方法ではPGPMsg*.DLLに渡されません。想定外の動作をする恐れがありますので(いちおう一通りのチェックはしたつもりですが)、できるだけパスフレーズ以外の部分には何も入力しないようにしてください。パスフレーズは何も入力しないままで済ませることができないので、空白か適当な文字を1文字入力してください。
    EdMaxのダイアログをパスした後で、PGPMsg*.DLL(やPGP本体)が表示するウィンドウが開きますので、そちらで送り先の指定やパスフレーズの入力などをしてください。
    (ダイアログボックスやウィンドウが表示された時に、EdMaxが表示しているものかPGPMsg*.DLLが表示しているものか、最初のうちは区別が付きにくいと思います。タスクバーを見ていると区別が付くのですが、これはある程度は慣れですので、使いはじめのうちは何度も実践練習を繰り返してみてください)

制限事項

PGPMsg*.DLLとEdMaxの仕様により、7bitの英字(US-ASCII)と日本語コード(JIS(ISO-2022-JP)、Shift JIS(処理の前に自動的にJISに変換されます))の文字コードしか扱えません。

日本語以外のアジア系2バイト文字コードはEdMax、PGPMsg*.DLLともに対応していませんので処理できません。

8bitの1バイト欧文特殊文字(ウムラウトやアクセント記号付きの文字やダブルクォーテイション " の逆向き記号など)についてもこの方法では適正に処理できないので、文章をすべて選択してクリップボードにコピーするなどしてPGPtrayやPGPtoolsを使用してください(必要なら適切なコード変換ツールも併用しましょう)。

改良案

暗号化をする際に、EdMaxの元々の機能では宛先(To:)やCc:、Bcc:に指定されているメールアドレスをPGPに自動的に渡すようになっているのですが、この方法ではそれができません。

これを改善する方法です。EdMaxからコマンドラインで渡されている宛先や送信元のメールアドレスを、それぞれ適切なメールヘッダ(To: や From:)としてPGPMsg*.DLLに渡すファイルの先頭に付けてやります。そして pgpmsg??.exe-p オプション無し(入力ファイルをRFC822形式のインターネットメッセージとみなす)で起動すれば、PGPMsg*.DLLがちゃんと認識してくれます。

例:
宛先nantoka@xxx.nantoka.xx.xxに送信元hogehoge@hogehoge.xx.xxから署名+暗号化メールを送る場合。元テキストファイルが以下のようなものだとすると。
こんにちは。暗号化メールを送ります。

ほげほげ より
コマンドラインのパラメータからアドレスを取り出し、このファイルを前処理して以下のように変えます。
To: nantoka@xxx.nantoka.xx.xx
From: hogehoge@hogehoge.xx.xx

こんにちは。暗号化メールを送ります。

ほげほげ より
このファイルを pgpmsg55 / pgpmsg60-p オプション無しで渡せば、適切な鍵をPGPMsg*.DLLが自動的に使用してくれます。
そして、PGPMsg*.DLLの出力をEdMaxに戻す前に、今度はヘッダ(To: や From: と、PGPMsg*.DLLが付ける Content-Type:, Content-Transfer-Encoding: とヘッダ直後の空行1行)を取り除いてやれば完璧です。

どなたかこの実装をやってください(ちゃんとした「ヘッダを取り除く」方法を考えるのが面倒で…。他力本願)。BATでなくプログラムを組めば実現は簡単だと思いますし、そうでなくてもsedやawkでやれないことはないと思います。


(Update: 3 Dec 2000)

[EdMax雑記]

武藤 潤 (Jun Muto)