IMAP4を利用することにして、Mewからnotmuch Emacs clientに乗り換えたのだが、なかなか機能の全容が分からず、電子メールの消化が進まなかった。
PGPで暗号化されたメッセージを受信した場合に、紫色のDecryption Error
が表示されて、復号できずに困っていたので、
どのようにすれば良いか書いておく。
まず前提としてGnuPG 2を使っている。
notmuch Emacs clientはGnuPG 2を使うのが標準のようなので、特に追加の設定はしていない。
Decryption Error
の意味は、GnuPG 2がパスフレーズを知らない状態を示しているようだ。
もしかしたら、~/.gnupg/gpg-agent.conf
にpinentry-program /usr/pkg/bin/pinentry-tty
ではなく、
pinentry-program /usr/pkg/bin/pinentry-emacs
を設定しておけば良いのかもしれないが、
今回の話はpinentry-tty
を使っている場合である。
pinentry-tty
は、GnuPG 2から呼ばない場合には、どうやら使えないようである。
また、gpg-agent
コマンドも--allow-preset-passphrase
コマンドライン引数か、
allow-preset-passphrase
を~/.gnupg/gpg-agent.conf
に設定しておく必要があった。
私はzshをログインシェルにしているので、~/.zlogin
に、以下のように設定した。
現在はevalはしないで良いような気もするのだが、確認していないので、従前の設定を踏襲してある、
eval `gpg-agent -s --daemon --allow-preset-passphrase`
次に、パスフレーズをキャッシュしておく。
パスフレーズをキャッシュするには、/usr/pkg/libexec/gpg-preset-passphrase
を使うのだが、
このコマンドにはkeygripという値を引数で指定する必要があるので、まずkeygripを確認する。
$ gpg2 --with-keygrip -K (snip) sec rsa4096 2004-07-12 [SC] 82A2DC9176E0A10A8ABBFD1BF40427FAC7D115F3 Keygrip = keygrip1keygrip1keygrip1keygrip1keygrip1 uid [ultimate] Ryo ONODERAuid [ultimate] Ryo ONODERA uid [ultimate] Ryo ONODERA uid [ultimate] Ryo ONODERA ssb rsa4096 2004-07-12 [E] Keygrip = keygrip2keygrip2keygrip2keygrip2keygrip2 (snip)
ここで使うのは、keygrip2keygrip2keygrip2keygrip2keygrip2
の方のkeygripの値である。
keygrip1keygrip1keygrip1keygrip1keygrip1
ではないので注意しなくてはいけない。
これを使って、以下のように実行する。
$ /usr/pkg/libexec/gpg-preset-passphrase --preset keygrip2keygrip2keygrip2keygrip2keygrip2 INPUT_YOUR_PASSPHRASE[enter key]これによって、パスフレーズがキャッシュされた。
こうしておくことで、notmuch Emacs clientでも復号できる。 Emacsにうまく統合するのが正しいのだろうが、事前にキャッシュするのは、これはこれでできて欲しい操作ではあると思うので書いておく。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。