[EdMax雑記]
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というWindows95/98/NT用のメーラーがあります。(作者の方のページ/ユーザーの方による詳しい解説のページ)
非常にカスタマイズ機能が豊富で、なおかつ基本的な機能がしっかりしています。EdMaxには基本機能のみで今後機能追加のない(バグフィックスはちゃんとやってくれる)フリー版と、英文スペルチェック機能や複数アカウントをシームレスに扱う(アカウント切り替えをせずにすべてのアカウントのフォルダを開いて操作できる;切り替え式の複数アカウントはフリー版にもある)機能やウェブ掲示板巡回機能などのついたシェアウェア版があります。
このEdMaxは暗号化ソフトPGPに対応しているのですが、処理をMS-DOSコマンドライン経由で行うため、残念ながらバージョン2.6.3iaという古いバージョンにしか対応していません。(PGPについては、PGP国際版のホームページ(日本語版)やOfficial PGP home page in JapanやPGP (Pretty Good Privacy)を参照してください)
そこで、EdMaxを 無理矢理 PGPバージョン5.5.3iや6.0.2iに対応させようというのがこのページの主旨です。無理矢理ですので、ちょっと不自然なところがありますが、そこはそれ大目に見てください。
(私のやり方はかなりいいかげんですので、その点はご理解のうえ利用してください。もっとちゃんとしたやり方を考えてくれる方がいらっしゃれば大歓迎です)
一応の最低限のこととして、基本的なWindowsの知識(PATHの設定方法は知っておいてください)、圧縮書庫の扱い方(*.zip, *.lzhファイルを解凍できるくらい)、EdMaxの使い方、PGPの知識(鍵の作り方、公開鍵の扱い方、暗号化・復号化のやり方など)は、別のところで勉強して知っているものとして書いていきます。 これらについてうまくいかなくてもここで紹介しているソフトウェア作者の方々や私に聞かないでください。 |
まず、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なら環境変数の設定パネルを使用して指定できます)
次に以下の内容の 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ヶ所ある pgpmsg55
を pgpmsg60
に書き換えることも忘れないようにしてください。
@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
次にEdMaxの設定ファイルを書き換えます。ちょっと慎重にやってもらわないといけません。
必ずEdMaxを終了してください。常駐とかしてないかちゃんと確認してください。
EdMaxをインストールしたディレクトリ内にある edmax.ini ファイルをメモ帳かテキストエディタで開きます(EdMaxで開かないように)。
そのファイルの中にある PgpExeName=pgp
という行を PgpExeName=pgp.bat
と書き換えてください( .bat を付けるだけです)。そして保存してファイルを閉じます。
(註:元に戻したくなった時は PgpExeName=pgp.bat を PgpExeName=pgp に書き戻すだけです。忘れてしまって「PGP 2.6.3iaに戻そうとしたら動かなくなった」と騒がないように)
手順3までで通常のPGPの使用はちゃんとできるようになったのですが、EdMaxは公開鍵をメールに添付することもできるように機能が用意されているので、それを生かすためのPGPMsg*.DLL用の細工を施します。
EdMaxをインストールしたディレクトリに、crlf.txt というファイル名で改行1個だけのファイルを作ってください(メモ帳かテキストエディタを使用してください)。
基本的には普通にEdMaxの機能から使ってもらえばいいのですが、注意といいますか、無理矢理 やったことで出てくるやむをえない欠点があります。
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がちゃんと認識してくれます。
コマンドラインのパラメータからアドレスを取り出し、このファイルを前処理して以下のように変えます。こんにちは。暗号化メールを送ります。 ほげほげ より
このファイルをTo: nantoka@xxx.nantoka.xx.xx From: hogehoge@hogehoge.xx.xx こんにちは。暗号化メールを送ります。 ほげほげ より
pgpmsg55
/ pgpmsg60
に -p
オプション無しで渡せば、適切な鍵をPGPMsg*.DLLが自動的に使用してくれます。どなたかこの実装をやってください(ちゃんとした「ヘッダを取り除く」方法を考えるのが面倒で…。他力本願)。BATでなくプログラムを組めば実現は簡単だと思いますし、そうでなくてもsedやawkでやれないことはないと思います。
[EdMax雑記]
武藤 潤 (Jun MUTO)