Mutt-i, GnuPG and PGP Howto Andres Seco and J.Horacio M.G. v1.2, February 2000 高橋全 v1.2j February 2000 この文書は、どうすれば Mutt-i、PGP、そしてGnuPG を異なるバージョン (PGP 2.6.x と 5.x そして GnuPG) において設定できるかを、かいつまんで説 明します。その際、署名したり暗号化したりされたメールを、 RFC2015 に規 定されている通りの PGP/MIME 対応が出来ていないメールクライアントや他の オペレーティングシステムに送って読まれるときに起き得る、よくある問題に ついても触れます。さらに、procmail の設定例として、公開鍵を要求する電 子メールに自動で鍵を送り返すという、鍵サーバのようなものまで含んでいま す。 (訳注: この文書が対象とする Mutt のバージョンは 0.95 前後です。そ れより新しい Mutt については mutt-gnupg-howto や、パッケージおよびソー スに付属する PGP-Notes.txt, gpg.rc, pgp2.rc, pgp5.rc, pgp6.rc 等をご覧 ください) ______________________________________________________________________ 目次 1. はじめに 2. 著作権、および責任の免除 3. メールをインターネットへ送り、インターネットから受け取る 4. Mutt の設定 5. PGP と GnuPG 5.1 PGP2 5.2 PGP5 5.3 GnuPG 6. PGP と Mutt との統合 6.1 付加的な設定ファイル 6.2 一般的な設定変数 6.3 PGP2 の設定変数 6.4 PGP5 の設定変数 6.5 GnuPG の設定変数 6.6 混合時の設定変数 7. Mutt の面白いマクロ 7.1 PGP5 で、PGP/MIME を使わずメッセージ本文に署名する 7.2 GnuPG で、PGP/MIME を使わずにメッセージ本文を署名する 7.3 エイリアスファイルを編集して再読み込みする 7.4 さらなるマクロの例 8. Procmail のメモと小技 8.1 自分の公開鍵を自動で送信するよう Procmail を設定する 8.2 PGP/MIME でないメッセージに自動で検証と復号化をする 8.3 鍵が内部にあるが PGP/MIME でないメッセージの MIME タイプを変える 9. 異なる MUA やプラットフォーム間での署名/暗号化メッセージの交換 10. 使用したプログラムおよびそのバージョン 11. さらなる情報 12. 日本語訳について ______________________________________________________________________ 1. はじめに この文書は、どうやって Mutt-i、PGP、そしてGnuPG を異なるバージョン (PGP 2.6.x と 5.x そして GnuPG) において設定するか説明し、暗号とディジ タル署名の機能を持つメールリーダをすぐ使い始められるようにします。(訳 注: 対象となる Mutt のバージョンは 0.95 前後です。) この目的のためにサンプルの設定ファイルが含まれており、それを使って始め られるようになっています。性能を最大限に引き出すため、また使用するプロ グラムの機能をぜんぶ使うためには、そのプログラムの添付説明文書を読み、 サンプルファイルを設定しなおす必要があります。 (訳注: 最近の Mutt には gpg.rc, pgp2.rc, pgp5.rc, pgp6.rc 等が含まれています。新しいバージョン の Mutt を使いたいなら、PGP-Notes.txt や manual.txt 等とともにそれらの 設定例を読み、この文書中で説明されているように source コマンドで呼び出 すことができます) さらに、Linux や他のオペレーティングシステムの多くのメールユーザエー ジェントが PGP/MIME に関する RFC2015 推奨基準を使わないということに起 因する問題にも言及することにします。 付属の procmail 設定例では、メールクライアントが要求に応じて公開鍵を送 ることができるようにします。 この文書は Andres Seco AndresSH@ctv.es のスペイン語の原文から翻訳さ れ、 Jordi Mallach Perez jordi-sd@softhome.net と J.Horacio M.G. homega@ciberia.es によって改訂および修正がなされてきました。完成したの は 1999 年の十月です。我々は Roland Rosenfeld roland@spinnaker.de、Christophe Pernod xtof.pernod@wanadoo.fr、 Denis Alan Hainsworth denis@cs.brandeis.edu そして Angel Carrasco acarrasco@jet.es の訂正や提案に感謝いたします。 2. 著作権、および責任の免除 この文書は copyright (C) 1999 Andres Seco and J.Horacio M.G. であり、 フリーです。GNU General Public License の規定のもとで配布することがで き、その規定は http://www.gnu.org/copyleft/gpl.html で読めます。非公式 の訳文もインターネットのどこかから入手でき、たとえばスペイン語の翻訳は http://visar.csustan.edu/~carlos/gpl-es.html や Lucas http://www.lucas.org にあります。 この文書中の情報や内容には最善を尽くしたとはいえ、誤りをおかしているか もしれません。従って、この文書で与えられる指示に従うかどうかはあなたが 判断すべきことです。 ここに含まれる情報の使用に起因する、あなたのコンピュータへのいかなる損 害、またいかなる他の損失についても、一切だれにも責任がありません。 THE AUTHORS AND MAINTAINERS ARE NOT RESPONSIBLE FOR ANY DAMAGE INCURRED DUE TO ACTIONS TAKEN BASED ON INFORMATION CONTAINED IN THIS DOCUMENT. (この文書に含まれる情報に基づく行為によって引き起こされたあ らゆる損害について、著者および保守管理者は責任を負いません) もちろん我々は、この文書の内容への、どんな種類の提案や修正も歓迎いたし ます。 3. メールをインターネットへ送り、インターネットから受け取る この文書はローカルなマシンと (ローカルエリアネットワーク内およびインタ ーネット越しの) 他ノードとの間のメールメッセージのやりとりは扱いませ ん。このやりとりはメッセージトランスファエージェント (MTA)、つまり sendmail http://www.sendmail.org、qmail http://www.qmail.org、exim http://www.exim.org、smail ftp://ftp.planix.com/pub/Smail といったもの によって実行されるはずです。 この文書の中ではこうした外部へのメッセージ送受信の手段はすでに備えられ ており、正常に動作していることを前提としています。メッセージを送ったり メールを読んだりできるかどうかは、自分のコンピュータのコマンドラインか ら mail コマンドを次のように入力し、 $ mail -s <題名> <ユーザ名@ドメイン.net> ここに文章を書き、半角の点だけの行を次に打って終わります . メールの読み書きが出来るならば、なんらかの種類の MTA が既にインストー ルされていて、メッセージを転送できるようになっているはずです。そうでな ければ、文書を読んで設定するという方法もあり、smail のマニュアル $ man smail またはお手持ちの MTA と fetchmail のマニュアル $ man fetchmail あるいは、それらのプログラムに言及している同様の文書を読んで設定してく ださい。 4. Mutt の設定 以下の行は Mutt を基本的な方法で使い始めるための実例で、エイリアスファ イル、送信済みメッセージ、送信待ちメッセージの各々へのパスを含んでいま す。これをさらに、Mutt のマニュアルの指示や、 /usr/doc/mutt/ または /usr/doc/mutt-i/ の内容に留意しながら自分用に設定していくことができま す。 (訳注: /usr/share/doc/mutt-doc 等にも文書があるかもしれません。 sample.muttrc, sample.muttrc-tlr 等も参考になるはずです) 簡単な ~/.muttrc の例 set folder=~/Mail set alias_file=.alias set postponed=.postponed set record=SendMessages set signature=.signature my_hdr From: 姓 名 <名前@ドメイン名.com> source =.alias (訳注: 日本語を使うときには EUC-JP で保存する必要があるかもしれません) ~/Mail というディレクトリが存在している必要があります。これは .muttrc 設定ファイルで「イコール」記号で表わされるものです (つまり =.alias は Mutt にとっての ~/Mail/.alias であり、=.postponed は Mutt には ~/Mail/.postponed のことなのです)。しかしながら、それらのファイルを別 の場所に置くことも可能です。使う権限のあるディレクトリの場所を ~/.muttrc に指定すればよいのです。 さらに、my_hdr の行に名前と必要な電子メールアドレスを入力して、自分用 にすることも必要になります。~/Mail/.signature ファイルには、あらゆる送 信メールに現われることになる署名を書いておくことができます。 この設定ファイルは最終的には巨大なものになりかねません。それで普通はい くつかのコマンドごとに分割して、別々のファイルにしておきます。さしあた り、 PGP または GnuPG の設定の行を簡単に分離できますし、あとで自分用に 設定するキーボードマクロも分離できます。そうするために、下記の行を ~/.muttrc ファイルに追加することが必要になってきます: source = ~/Mail/.mutt.macros source = ~/Mail/.gnupgp.mutt この場合 ~/Mail/.mutt.macros と ~/Mail/.gnupgp.mutt というファイルを使 うので、後述するキーボードマクロと PGP または GnuPG の設定をそこに入れ る必要があります。 Mutt の使用と設定、また新機能に関して、さらなる膨大で完全な情報を得る には、Mutt のマニュアル http://www.mutt.orgをご覧ください。 (訳注: 日 本語のマニュアルもあります) 5. PGP と GnuPG どのバージョンの PGP を Mutt-i で使うにしても、最初に PGP を適切に設定 して、公開鍵ファイル (公開鍵束) と秘密鍵ファイル (秘密鍵束) を存在させ ておかなくてはなりません。事前にコマンドラインから、 PGP が正確に署名 や暗号化を行なうことを確実にしておくのがよいでしょう。 Unix 版で存在する PGP のバージョンには 2.6.3(i) と 5.0(i) があり、それ ぞれ順番に、PGP2 と PGP5 と呼ばれています。 GnuPG は新しい暗号システム です。最近になって開発されてきたものですが、先進的な開発形態のオープン ソースでフリーであり、多くの面において PGP より優れています (GnuPG mini howto http://www.dewinter.com/gnupg_howto をご覧ください)。 さらに PGP が、アメリカ合衆国で開発されているプログラムであるため、暗 号関連コードを含むプログラムに関する輸出制限の法律にひっかかるというこ とを明らかにしておきましょう ― このために、ほとんどすべてのバイナリバ ージョンに国際版が存在しており、それは「i」という文字で区別されます (pgp - pgpi)。 5.1. PGP2 PGP2 は RSA http://www.rsa.com アルゴリズムで鍵を生成し、IDEA http://www.ascom.ch を暗号化アルゴリズムに使用します。両方とも使用に制 約のあるアルゴリズムであり、それぞれの特許によって使用が制限されていま す。 (訳注: この記述について、状況が変わっているという指摘もあります) 正しく動作させるためには、それをインストールしておき、~/.pgp という ディレクトリを用意し、その中に設定ファイル pgp-i.conf と、秘密鍵および 公開鍵の鍵束ファイルである pubring.pgp および secring.pgp を入れておく 必要があります。 5.2. PGP5 PGP5 によって生成される鍵は DSS/DH (Digital Signature Standard / Diffie-Helman) 方式です。PGP5 は CAST と Triple-DES、また IDEA を暗号 化アルゴリズムに用います。PGP5 は RSA (PGP2) で署名や暗号化をされたデ ータも扱うことができますし、その鍵 (つまり PGP2 で生成された鍵で す。PGP5 はその鍵を造ることができませんから) を使って署名や暗号化を行 なうことができます。しかし一方、PGP2 は PGP5 の DSS/DH な鍵を使えませ ん ― このため非互換性の問題が生じています。なぜなら PGP2 を Unix/Linux で使用し続けている人も多いからです。 PGP5 が正しく動作するように、~/.pgp ディレクトリに公開鍵と秘密鍵の鍵束 (それぞれ pubring.pkr また secring.skr となります)、そして設定ファイル pgp.cfg を置いておきましょう。 両方のバージョンの PGP をインストールしてある (PGP5 の前に PGP2 のイン ストールと設定をしていた) 場合には、下記のように PGP5 の設定ファイル ~/.pgp/pgp.cfg を ~/.pgp/pgp-i.conf という設定ファイルのシンボリックリ ンクとして作成して、 ~/.pgp$ ln -s pgp-i.conf pgp.cfg こういう行を ~/.pgp/pgp-i.conf というファイルの末尾に加えましょう: PubRing = "~/.pgp/pubring.pkr" SecRing = "~/.pgp/secring.skr" RandSeed = "~/.pgp/randseed.bin" 異なるバージョンの鍵束のファイルは何の問題もなく同一ディレクトリに共存 することができるのです。 5.3. GnuPG GnuPG は前述のものと同一の機能を持つプログラムです。PGP との違い は、GnuPG が特許による制限のあるアルゴリズムを使用しない点です。 PGP は個人的な使用は自由ですが、商業的な仕事はその限りではありません。さら に開発は非公開です。GnuPG はいかなる作業での使用も自由であり、我々の大 好きなオペレーティングシステムがそうであるのと同様、ソースが公開されて います (さらに、この実装および開発は主として Linux においてなされてい ます)。 GnuPG によって生成された鍵は DSA/ElGamal (Digital Signature Algorithm すなわち DSS) という種類のものです。これは制限のある特許アルゴリズムで ある RSA と IDEA の使用を除けば完全に PGP と互換しています。とはい え、PGP2 や PGP5 と相互運用するためのある程度の互換性も実現することが できます (GnuPG mini howto http://www.dewinter.com/gnupg_howto を参 照)。 6. PGP と Mutt との統合 送信メッセージに行なう動作 (署名か暗号化、またはその両方) は、「y」を 押して送信してしまう前に、「p」オプションで見ることのできるオプション メニューの中で正確に選択しましょう。その動作を選んでも、画面ではメッセ ージヘッダのうちの PGP 行しか変化しません。しかし「y」キーでメッセージ を送信するときには、メッセージの署名を有効にするためにパスフレーズが聞 かれたり、暗号化のためにどの公開鍵を使うか (これは公開鍵束の中に受信者 の鍵が見あたらない場合ですが) 聞かれたりします。 MEMO: パスフレーズが聞かれたときに打ち間違うと Mutt が「ハング」したよ うになります; しかしそうではなく、再入力を待っているのです。再入力する ためには、 キーを押してから F ( を押しながら F) を 押してメモリからパスフレーズを消去してください。その次にメッセージ送信 を (「y」で) 再試行し、パスフレーズを再入力します。 この手続きをすると Mutt は PGP/MIME をメッセージ送信に使います。する と、(署名だけを選択したときは) 送信するファイルの一覧には一つ、署名の ファイルが増えます。または、メッセージ全体 (あらゆる MIME パーツ) を暗 号化して、二つの MIME パーツだけにしてしまいます。そのときの最初の一つ は PGP/MIME のバージョンで、二番目のは暗号メッセージ (その中にすべての MIME パーツが入っている) で、もし署名も選択していたなら、そのパーツに は署名もされています。 Memo: 何らかの理由で受信者のメールユーザエージェントが MIME を使えない なら、署名をメッセージ本体に含める必要があるかもしれません。 ``PGP5'' と ``GnuPG'' の、application/pgp についての章をご覧ください。 Mutt は、PGP/MIME を使った受信メールには自動で署名の検証や復号化を試み ます。``Procmail のメモと小技'' をご覧ください。そこでは、MIME タイプ を正しく設定していないメッセージが来たときに自動的に MIME タイプを変え る方法が注解されています。 6.1. 付加的な設定ファイル 次の章には ``PGP2'' や ``PGP5''、また ``GnuPG'' を簡単に使えるようにす る Mutt 設定ファイルの編集方法が書いてあります。 (訳注: ただし、新しい Mutt を使っているなら、それらは動作しないかもしれません。PGP- Notes.txt, gpg.rc, pgp2.rc, pgp5.rc, pgp6.rc 等があればそちらを参照す るようお勧めします) 編集するのは、.gnupgp.mutt という名前の新しい設定ファイルです (これは 自分で決める名前なので、メイン設定ファイル ~/.muttrc で設定しておけ ば、他のどんな名前にすることもできます) 。 ~/.muttrc ファイルの最後の行にその新しい設定ファイルの絶対パス (場所) を含めることによって、使うことができるようになります。このファイルや他 の付加的な設定ファイルを入れるディレクトリは、適切な権限があればどこで もかまいません (前の章では ~/Mail/ に入れました)。つまりホームディレク トリの中ならどこでも結構ですし、どんな名前にでもできます。 ~$ mkdir mutt.iroiro では、そこに付加的な設定ファイル .gnupgp.mutt をコピー (または作成) し て、次にその呼び出し地点を .muttrc ファイルの中で source コマンドに よって指定しましょう。下記のようになります。 source ~/mutt.iroiro/.gnupgp.mutt これで Mutt は、.gnupgp.mutt の中で設定した変数を、あたかも直接 .muttrc で設定したかのように受け入れるようになります。 これは設定ファイルが巨大になったり、その中の順番がバラバラになったりす るのを防ぐ、良い方法です。さらに他のあらゆる変数の設定も、こうやって別 々のファイルで行なうことができます。例えば、上記と同様 vim を Mutt の デフォルトのエディタに使いながらも、コマンドラインから vim を使うとき の .vimrc とは別の設定ファイルを使うように .muttrc へ書くことができま す。最初に、~/.vimrc を付加的な設定ファイルのディレクトリ ~/mutt.iroiro/ にコピーしてください。そして名前を別のものにします (例 vim.mutt)。 $ cd /home/jibun ~$ cp .vimrc mutt.iroiro/vim.mutt 次に、vim が Mutt のエディタとして使われるときに変化してほしい変数の設 定を変えて、最後に .muttrc を編集してこの変更を反映させます。 set editor="/usr/bin/vim -u ~/mutt.iroiro/vim.mutt" この最後の一行によって、Mutt が外部エディタに Vim を、必要なオプション をつけて使うように設定しているのです。 6.2. 一般的な設定変数 Mutt には三つの公開鍵暗号プログラムに共通して使用する変数があります。 これらの変数は二値です。つまり set (有効) か unset (無効) で設定しま す。 設定ファイル (~/.muttrc および ~/mutt.iroiro/.gnupgp.mutt、また何でも 自分の使っているもの) において、記号「#」以下はコメントであり、無視さ れます。それで、ここからはその記号を使って各変数にコメントすることにし ましょう。 unset pgp_autosign # この変数が有効だと、Mutt はすべての送信メッセージに署名 # するかどうかを聞いてきます ``(1)'' unset pgp_autoencrypt # この変数が有効だと、Mutt はすべての送信メッセージに暗号化 # するかどうかを聞いてきます ``(1)'' set pgp_encryptself # 暗号化したい送信メッセージを、暗号で保存します # (一般的な設定変数 set copy=yes が必要) # (訳注: 最近の Mutt には存在しないようです) set pgp_replysign # 署名されたメッセージに返事を出すときに、返信メッセージもまた # 署名されるようになります set pgp_replyencrypt # 暗号化されたメッセージに返事を出すときに、返信メッセージもまた %num; 暗号化されるようになります set pgp_verify_sig=yes # 署名された受信メッセージを自動的に検証したいですか? # もちろんそうでしょう! set pgp_timeout= # パスフレーズを入力後 秒後にメモリキャッシュから # 消去する ``(2)'' set pgp_sign_as= # 送信メッセージを署名するためにどの鍵を使いたいですか? # Memo: これをユーザ ID にすることも可能ですが、 # 異なる鍵に同じユーザ ID があると混乱のもとになりかねません set pgp_strict_enc # PGP が求めたときには「quoted-printable」形式を使います # (訳注: 日本人は unset しておいた方がよいかもしれません) unset pgp_long_ids # 64 ビットの鍵 ID を使わず、32 ビット鍵 ID を使います set pgp_sign_micalg= # メッセージ内容証明アルゴリズムです(訳注: 最近の Mutt には # 存在しない変数です)。この は次のうちのいずれかです ``(3)'' o pgp-mda5 これは RSA 鍵用 o pgp-sha1 これは DSS (DSA) 鍵用 o pgp-rmd160 続く三つの章では PGP の各バージョンに対する設定変数が説明されます。四 つ目の章では複数のバージョンの PGP を使っているときにそれらの変数をど う変更すればよいか説明します。 (1) 署名するたび、また暗号化するなら受信者を選ぶたびに Mutt がパスフレ ーズの入力を要求するので、この変数を有効にすると不便かもしれません。た ぶんこの変数を無効にしたいと思うことでしょう。これは特に、メッセージ受 信者全員の公開鍵がないときに暗号化するなら有効にしておくべき変数と言え ます。 (2) 署名したり復号化したりするメッセージの量に応じて、キャッシュメモリ の中にパスフレーズを保存しておく時間を増減させたいと思うことでしょう。 このオプションは、新規メッセージを署名したり受信メッセージを復号化した りするたびにパスフレーズを入力する手間を省いてくれます。Warning (警 告): パスフレーズをキャッシュメモリに保存するのは安全とは言えません。 ネットワークに接続されているシステムなら特にそうです。 (3) これは署名に使う鍵にだけ必要です。鍵がコンポーズメニューから選ばれ ると、Mutt はそのアルゴリズムで計算をすることになります。 6.3. PGP2 の設定変数 PGP2 を Mutt-i で使うには下記の行を ~/mutt.iroiro/.gnupgp.mutt ファイ ルに追加する必要があります。 (訳注: くりかえしますが、最近の Mutt で は、付属してくる pgp2.rc の方が適切です) set pgp_default_version=pgp2 set pgp_key_version=default set pgp_receive_version=default set pgp_send_version=default set pgp_sign_micalg=pgp-md5 set pgp_v2=/usr/bin/pgp set pgp_v2_pubring=~/.pgp/pubring.pgp set pgp_v2_secring=~/.pgp/secring.pgp ご存じのとおり、~/.pgp/pubring.pgp と secring.pgp というファイルが存在 していなくてはなりません。PGP2 のさらなる情報は man pgp コマンドでどう ぞ。 6.4. PGP5 の設定変数 PGP5 を Mutt-i で使うためには、下記の行を ~/mutt.iroiro/.gnupgp.mutt ファイルに追加する必要があります。 (訳注: くりかえしますが、最近の Mutt では、付属してくる pgp5.rc の方が適切です) set pgp_default_version=pgp5 set pgp_key_version=default set pgp_receive_version=default set pgp_send_version=default set pgp_sign_micalg=pgp-sha1 set pgp_v5=/usr/bin/pgp set pgp_v5_pubring=~/.pgp/pubring.pkr set pgp_v5_secring=~/.pgp/secring.skr お分かりでしょうが、~/.pgp/pubring.pkr と secring.pkr というファイルが 存在していなくてはなりません。PGP5 に関するさらなる情報は man pgp5 と いうコマンドでどうぞ。 6.5. GnuPG の設定変数 GnuPG を Mutt-i で使うには、下記の行を ~/mutt.iroiro/.gnupgp.mutt ファ イルに追加する必要があります。 (訳注: くりかえしますが、最近の Mutt で は、付属してくる gpg.rc の方が適切です) set pgp_default_version=gpg set pgp_key_version=default set pgp_receive_version=default set pgp_send_version=default set pgp_sign_micalg=pgp-sha1 set pgp_gpg=/usr/bin/gpg set pgp_gpg_pubring=~/.gnupg/pubring.gpg set pgp_gpg_secring=~/.gnupg/secring.gpg ご存じのとおり、~/.gnupg/pubring.gpg および secring.gpg というファイル が存在していなければなりません。man gpg.gnupg, man gpgm, man gpg とい うコマンドで、さらに GnuPG の情報をご覧ください。 6.6. 混合時の設定変数 複数の PGP ソフトウェアを使いたいならば、前述の変数をいくつか修正する 必要があります。ただ実際には、無駄なバージョンの変数を消すだけです。 たとえば、もし GnuPG をデフォルトの署名道具として使うとすると、 GnuPG/PGP を使う Mutt のあらゆるメニューコマンドはこのプログラムを署 名、復号化、暗号化、検証、等々の動作に使用することになります。そのよう にするため、いったん $pgp_default_version という設定変数を有効にしなく てはなりません。それで、こうしてください。 set pgp_default_version=gpg さて、三種類すべてのプログラムを使うには ~/mutt.iroiro/.gnupgp.mutt ファイルがこんな感じになっていればよいでしょう。 (訳注: この内容も最近 の Mutt の設定変数とは異なっています。新しい Mutt では gpg.rc, pgp2.rc, pgp5.rc, pgp6.rc 等の好みの内容を混合すれば動くと思われます) set pgp_default_version=gpg # デフォルトで使うバージョン set pgp_key_version=default # デフォルトで使う鍵 # この場合は gnupg になります set pgp_receive_version=default # 復号化のデフォルトのバージョン set pgp_send_version=default # 最初の行で定義したデフォルト (gpg) になります set pgp_gpg=/usr/bin/gpg # どこに GnuPG 実行ファイルがあるか set pgp_gpg_pubring=~/.gnupg/pubring.gpg # GnuPG 用の公開鍵ファイル set pgp_gpg_secring=~/.gnupg/secring.gpg # GnuPG 用の秘密鍵ファイル set pgp_v2=/usr/bin/pgp # どこに PGP2 実行ファイルがあるか set pgp_v2_pubring=~/.pgp/pubring.pgp # PGP2 用の公開鍵ファイル set pgp_v2_secring=~/.pgp/secring.pgp # PGP2 用の秘密鍵ファイル set pgp_v5=/usr/bin/pgp # どこに PGP5 実行ファイルがあるか set pgp_v5_pubring=~/.pgp/pubring.pkr # PGP5 用の公開鍵ファイル set pgp_v5_secring=~/.pgp/secring.skr # PGP5 用の秘密鍵ファイル 7. Mutt の面白いマクロ Mutt は高度に設定することができ、.muttrc 内部で設定変数をうまく設定す れば作業中のモードを非常に柔軟に変更することもできます。 ここでは、PGP/MIME 規格に従った署名メッセージを扱えない受信者に送るた めに、PGP/MIME 規格を用いない署名メッセージを生成するよう助けるマクロ が出てきます。それから、エイリアスファイルを編集して Mutt を抜けること なく再読み込みするというマクロもあります (これは PGP/GnuPG とは無関係 ですが、ただ Mutt のマクロの底力を見せる一例として書いておきます)。 PGP/GnuPG 関連で使いたいキーの割り当てを Mutt に命令することも可能で す。設定ファイルの変更によって、オプションがすでに設定されているときで さえも簡単に変えたり追加したりすることができるようにします。 7.1. PGP5 で、PGP/MIME を使わずメッセージ本文に署名する PGP/MIME ができる前は、メッセージの署名はメッセージ本文に含められてい ました。これは署名メッセージを送るときのとても一般的な形式で、たくさん のメールユーザエージェントがこの形式を使っています。 このように署名したいのなら二つの選択肢があります。つまりメッセージの MIME タイプを、そのまま残すか application/pgp にするか、ということで す。 (訳注: これについても最近の Mutt の実装について PGP-Notes.txt 等 を参照するようお勧めします。pgp_create_traditional という変数が実装さ れているはずです) これら二つの署名形式を Mutt に実装するため、下記の行を ~/mutt.iroiro/mutt.macros ファイルに追加しましょう。その前に、この付加 的なファイルの場所を主設定ファイル .muttrc の中で設定しなければなりま せん (``付加的な設定ファイル'' を参照ください)。 macro compose \Cp "F/usr/bin/pgps\ny" macro compose S "F/usr/bin/pgps\ny^T^Uapplication/pgp; format=text; x-action=sign\n" こうすると、メッセージを送信する直前に p か S を押せば、カーソル のあるメッセージパーツに署名を含めることができるようになります。 7.2. GnuPG で、PGP/MIME を使わずにメッセージ本文を署名する 前述の場合と同様ですが、GnuPG の場合、マクロはこうなります。 (訳注: こ れについても最近の Mutt の実装について PGP-Notes.txt 等を参照するよう お勧めします。pgp_create_traditional という変数が実装されているはずで す) macro compose \CP "Fgpg --clearsign\ny" macro compose \CS "Fgpg --clearsign\ny^T^Uapplication/pgp; format=text; x-action=sign\n" 7.3. エイリアスファイルを編集して再読み込みする このマクロを ~/mutt.iroiro/macros.mutt の中に入れれば、 Mutt を抜ける ことなく、a を押すだけで エイリアスファイルを vi (行の内容を変え れば他のエディタも使えます) で編集することができます。 (訳注: create- alias という機能が通常「a」キーに割り当てられており、新しいエイリアス を作るのに役立つはずです。manual.txt を参照してください) macro index \ea "!vi ~/Mail/.alias\n:source =.alias\n" 7.4. さらなるマクロの例 次に挙げた一覧表は Roland Rosenfeld からもらったもので、デフォルトの署 名/暗号化ソフトウェアを変更したり GnuPG で PGP/MIME なしの署名をする マクロです。 (訳注: 時代遅れであることが下で指摘されていますが、今では さらに不適切になっている部分もあるようです。使用には注意が必要です) # ~/Mail/.muttrc.macros # Mutt-i 用キーボード設定ファイル # 複写、変更、翻訳を下記のオリジナルから行ないました。 # ################################################################ # The ultimative Key-Bindings for Mutt # # # # (c) 1997-1999 Roland Rosenfeld # # # # $ Id: keybind,v 1.36 1999/02/20 19:36:28 roland Exp roland $ # ################################################################ # (Mutt 用キー割り当て完全版) # # 使用に際しては、~/.muttrc に次の行を加えてください。 # source ~/Mail/.muttrc.macros # # 一般的なキー割り当て # (ページャを除く、Mutt のあらゆるメニュー) # 以下の三つによって、暗号化のデフォルトに選択されたソフトウェアを変更できます。 # 1 で GnuPG を使用 macro generic \e1 ":set pgp_default_version=gpg ?pgp_default_version\n"\ "GNU-PG に切り換え" # 2 で PGP2 を使用 macro generic \e2 ":set pgp_default_version=pgp2 ?pgp_default_version\n"\ "PGP 2.* に切り換え" # 5 で PGP5 を使用 macro generic \e5 ":set pgp_default_version=pgp5 ?pgp_default_version\n"\ "PGP 5.* に切り換え" #MEMO: 前のマクロの終わりのところまでバックスペースしていかないよう注意して ください。行を書いたら、次の行を続けて同じ行に書いてはいけないのです。 # index, OpMain, MENU_MAIN # (メインメニュー) # 次のマクロはメインメニュー (Mutt を起動したときに出てくる画面) からのみ # 実行されます。もしメッセージに公開鍵があれば (これはメッセージラインの # K という文字で分かりますが) K キーで公開鍵を取り出せるようにします。 macro pager \Ck ":set pipe_decode pgp_key_version=pgp2\n\e\ek:set pgp_key_version=pgp5\n\e\ek:set pgp_key_version=gpg\n\e\ek:set pgp_key_version=default nopipe_decode\n"\ "Extract PGP keys to PGP2, PGP 5, and GnuPG keyrings" # pager, OpPager, MENU_PAGER # (ページャメニュー) # 前述のものと同じ鍵の組み合わせですし同じ動作をしますが、 # ここではページャメニューからの実行に関して設定します。 macro pager \e1 ":set pgp_default_version=gpg ?pgp_default_version\n"\ "GNUPG に切り換え" macro pager \e2 ":set pgp_default_version=pgp2 ?pgp_default_version\n"\ "PGP 2.* に切り換え" macro pager \e5 ":set pgp_default_version=pgp5 ?pgp_default_version\n"\ "PGP 5.* に切り換え" # compose, OpCompose+OpGerneric, MENU_COMPOSE # (コンポーズメニュー) # 次の動作はコンポーズメニューから使われます。 # つまり、メッセージを書き終わって、送るためにそれをまず閉じてから、 # MTA に送るために「Y」キーを押すまでの間のことです。 # ここでは、「p」を押したときにメニューが出てくるようにします。 # このメニューでの選択は MENU_PGP に代入されます。これは # メーンオプションです (暗号化と署名、ともに使います)。 bind compose p pgp-menu # PGP/MIME を使えないプログラムが (特に M$ 社のものに) 多いので、 # P キーで「古代にしていたように」署名するようにします。 # (Application/PGP) (訳注: MIME タイプは text/plain のままです) macro compose \CP "Fgpg --clearsign\ny" # 次に、S を押すとデフォルトに定義した秘密鍵で PGP/MIME を使った署名を # するようにします。同じことが「P」で出るメニューからできるので、このマクロ # は必要ではありませんが。 macro compose \CS "Fgpg --clearsign\ny^T^Uapplication/pgp; format=text; x-action=sign\n" まだマクロを追加することもできますし、新バージョンの Mutt には、もうい くつかデフォルトで設定されています。こういうオプションなどです。 o K (メッセージから公開鍵を抽出する) o K (メッセージに公開鍵を添付する) o F (メッセージの署名や復号化にパスフレーズを使うと、それがメモ リに残ってしまいます。この操作でそれをメモリから消去できます) o 等々…… この他にどんなオプションが有効なのか見るには、自分のいるメニューからヘ ルプメニューに (「?」キーで) 行くべきです。 8. Procmail のメモと小技 8.1. 自分の公開鍵を自動で送信するよう Procmail を設定する このハウトゥの目的とは違いますが、だれからの公開鍵を入手するにせよ、 もっとも安全な方法は、それを直に手渡ししてもらうことだと言っておきま しょう。 長い間 (なんと長いことか) そうなのですが、これには簡単な方法がありませ ん。公開鍵を電子メールで送ったり鍵サーバで探したりすることはできます が、そのどちらも、入手した鍵が本当に思っているとおりの人のものだと確証 するものではないのです。それを確証できるのは、「セキュア (安全)」だと みなされている他のコミュニケーション手段 (電話帳でその持ち主を探して本 人に鍵の「指紋」を読んでもらい、それをセキュアでない経路から入手した鍵 の指紋と照らし合わせてみる、など) を用いたときだけです。 これから出てくる「小技」は、それを .procmailrc に組み込むと、定義した とおりの文章が Subject 行にあるメッセージを受け取ったときに は、Procmail というメールプロセッサから自分の公開鍵を差し出し人に自動 で送り返すようにするというものです。 :0 h * ^Subject:[ ]+\/(|send)[ ]+key pub\>.* | mutt -s "Re: $MATCH" `formail -rtzxTo:` Subject: アップデートのお知らせ To: お困りの皆様方へ お困りの皆様方へ: このたび弊社の reboot99 オペレーティングシステムをお買い求め いただきますと、O.E.プログラムの最新バージョンが入手できる ことをお知らせいたします。お値段は破格の ... etc -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: KUHASIKU WA http://www.gnupg.org/ WO GORANKUDASAI iD8DBQE774UNVQzjC/gBPiwRAmyNAJ4qzf1nlqD96c51sa1TJoxpONeYVQCfY8ve Fiksuk/T8ahgPfWA1RWM0zk= =kM6m -----END PGP SIGNATURE----- これを検証するには、ファイルに保存してコマンドラインを使うことが必要で す (訳注: いいえ、今では check-traditional-pgp という機能があります。 これは既定値として「P」に割り当てられているはずです。 manual.txt を参照してください)。しかし、Procmail で MIME メッセージタイプを変換し て、Mutt がそれを PGP/MIME として認識するようにすることが可能です。す るべきことは、これを .procmailrc に書き足すことだけです。 :0 * !^Content-Type: message/ * !^Content-Type: multipart/ * !^Content-Type: application/pgp { :0 fBw * ^-----BEGIN PGP MESSAGE----- * ^-----END PGP MESSAGE----- | formail \ -i "Content-Type: application/pgp; format=text; x-action=encrypt" :0 fBw * ^-----BEGIN PGP SIGNED MESSAGE----- * ^-----BEGIN PGP SIGNATURE----- * ^-----END PGP SIGNATURE----- | formail \ -i "Content-Type: application/pgp; format=text; x-action=sign" } ご覧のとおり、これは application/pgp な署名メッセージと暗号メッセージ に適用されます。 8.3. 鍵が内部にあるが PGP/MIME でないメッセージの MIME タイプを変える 公開鍵を PGP/MIME 未対応の MUA から受信したときには、そのメッセージ本 文をディスク内に保存して、それから、その鍵を公開鍵束に入れなくてはなり ません (訳注: 未確認ですが、これも check-traditional-pgp で解決されて いるかもしれません)。しかし、この行を .procmailrc ファイルに含めておく と、直接 mutt から取り込むことができるようになります。 :0 fBw * ^-----BEGIN PGP PUBLIC KEY BLOCK----- * ^-----END PGP PUBLIC KEY BLOCK----- | formail -i "Content-Type: application/pgp-keys; format=text;" この procmail のメモをくれた Denis Alan に感謝します。 9. 異なる MUA やプラットフォーム間での署名/暗号化メッセージの交換 初期には、PGP 署名は署名する文章の中に含められていました。後に、署名は application/pgp という MIME タイプの中に入れられて、その添付ファイルが 署名か暗号化をされた PGP メッセージだとわかるようになりました。そして 最後には PGP/MIME 規格によって、署名をその対象となる原文から分離させる ことが可能になりました。これによって、原文がまったく変更されることがな くなり、PGP のない人がそれを (署名メッセージのみに関しては) 原文のま ま、つまり冒頭や末尾に PGP の文章が付くことなく読むことができるように なりました。 実状はといえば、ほんのいくつかのメールユーザエージェント (MUA) しか PGP/MIME 規格を使えるように PGP を組み込んでいないため、相手が PGP/MIME を認識できないことを知っているときには旧式 PGP 署名でメッセー ジを送る必要があります。 Linux で PGP/MIME 対応のメールユーザエージェントには mutt-i と pine が あります。Windows では、Eudora メールクライアントのバージョン 3.x と 4.x だけが PGP/MIME を使えます。もし他に対応しているメールユーザエー ジェントをご存じならメールで (訳注: その人の理解できる原語で) お知らせ ください。ここにその情報を入れることにいたします。 (訳注: かなり状況が 変わっているはずです。この文書は古いです) 10. 使用したプログラムおよびそのバージョン この文書の作成にあたっては、次のバージョンの Mutt を使用してきました。 o Mutt 0.93i - このバージョンでは GnuPG を使えません。 o Mutt 0.95.3i - あらゆるバージョンの PGP と GnuPG が使用できます。 そして次のバージョンの PGP と GnuPG を使用しました。 o PGPi 5.0 o GnuPG 0.4.3 o GnuPG 0.9.4 11. さらなる情報 この文書のもとになった文書は「mutt」「pgp」「pgp5」「gnupg」 「procmail」のそれぞれの man ページや、/usr/doc (訳注: または /usr/share/doc) のそれぞれのディレクトリの中、またワールドワイドウェブ のサイトにあります。 o Mutt Official Home Page - http://www.mutt.org o GnuPG Main Page - http://www.gnupg.org o PGP International Page - http://www.pgpi.com o Procmail Official Home Page - http://www.procmail.org この文書で参照した推奨基準 (Request For Comments, RFC) は以下のとおり です。 o 1847 - Security Multiparts for MIME: Multipart/signed and Multipart/encripted o 1848 - MIME Object Security Services o 1991 - PGP Message Exchange Formats o 2015 - MIME Security with Pretty Good Privacy (PGP) o 2440 - OpenPGP Message Format これらは /usr/doc/doc-rfc の中やワールドワイドウェブの種々のサイト、た とえば http://metalab.unc.edu や http://nic.mil で見ることができま す。RFC からの情報を RFC-INFO@ISI.EDU で得ることもできます。 12. 日本語訳について 誤訳・誤字・脱字等については、JF@linux.or.jp までお知らせください。 翻訳:高橋全 校正:Seiji Kaneko Yuji Senda