Wanderlust で GnuPG を使う場合

何を使うのが最良なのか, ちょっと良くわからなくなってます*1. 調べてみたら wl-mime 内で easypg がある場合にはそれを使うようになっていたので, メモ.

easypg が導入されていると

  • message buffer で
    • C-c : d (復号)
    • C-c : v (署名検証)

が可能.
あとは暗号化と署名だけだな, とじたばたするもうまくいかない...自分の署名が不正な署名になってしまう. うーん?
...どうも, wl-draft の文字コードiso-2022-jp じゃないと送信時に文字コードの変換を行なっている模様で, 試しに

(add-hook 'wl-draft-mode-hook
          '(lambda ()
             (set-buffer-file-coding-system 'iso-2022-jp)))

なんてのを ~/.wl につっこんでみたら解決しました. というわけで, 設定は以下の通りに

...
(add-hook 'wl-draft-mode-hook
          '(lambda ()
             (set-buffer-file-coding-system 'iso-2022-jp)))
;; draft で C-c \ s でクリア署名
(define-key wl-draft-mode-map "\C-c\\s" 'epa-mail-sign)
;; draft で C-c \ e で暗号化
(define-key wl-draft-mode-map "\C-c\\e" 'epa-mail-encrypt)
;; summary でメッセージを復号する関数
(defun my-epa-wl-decrypt-message ()
  (interactive)
  (save-window-excursion
    (wl-summary-jump-to-current-message)
    (wl-message-decrypt-pgp-nonmime)))
;; summary で C-c \ d でメッセージを復号
(define-key wl-summary-mode-map "\C-c\\d" 'my-epa-wl-decrypt-message)
;; summary で署名を検証する関数
(defun my-epa-wl-verify-message ()
  (interactive)
  ;; 次のメッセージに行く場合はともかく,
  ;; summary-mode からフォルダモードに移ると
  ;; 検証後の結果が常に残ってしまうので, ちょっと修正する必要がある
  (save-selected-window
    (wl-summary-jump-to-current-message)
    (wl-message-verify-pgp-nonmime)))
;; summary で C-c \ v でメッセージを復号
(define-key wl-summary-mode-map "\C-c\\v" 'my-epa-wl-verify-message)
...

使い方は

  • メール作成(draft mode)では
    • C-c \ s でクリアサイ
    • C-c \ e で暗号化
    • C-c m C-s で分離署名
  • メール一覧表示(summary mode)では
    • C-c \ v で署名検証
    • C-c \ d で復号
  • メッセージ表示(mime-view)では
    • C-c : v で署名検証
    • C-c : d で復号

あとは application/pgp-signature にカーソル合わせて"v"を押すと分離署名の検証もできる.

ちなみに以前, Wanderlust の mime-view で xdg-open で mime をハンドリングする関数だと application/pgp-signature を xdg-open (私の環境では exo-open) で開いてしまうため, 署名の検証ができない. というわけで, pgp 関連の mimeemacs でそのまま扱うようにする必要がある.
うーん...なんかかえって面倒な気がしてきたな(笑) ~/.mailcap に xdg-open 書いておいた方が良いのかしら.

暗号化/署名されたメールの扱いについてはやっぱり Mew が楽, という結論に. 使いわけますかね.

*1:って話をしたら, 木下さんは Mew と使い分けているとのこと. むぅ