平衡点
2010/11/11
_ Wanderlust で GnuPG を使う場合
何を使うのが最良なのか, ちょっと良くわからなくなってます((って話をしたら, 木下さんは Mew と使い分けているとのこと. むぅ)). 調べてみたら 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 関連の mime は emacs でそのまま扱うようにする必要がある. うーん...なんかかえって面倒な気がしてきたな(笑) ~/.mailcap に xdg-open 書いておいた方が良いのかしら.
暗号化/署名されたメールの扱いについてはやっぱり Mew が楽, という結論に. 使いわけますかね.
_ Wanderlust のアドレス補完に LDAP を使う
内部ネットにいる時には LDAP サーバにアクセスしてアドレスを補完したい場合.
(let ((ipaddr (format-network-address (car (network-interface-info "eth0")))))
(if ipaddr
(when (string-match "^XXX.YYY" ipaddr)
(setq wl-use-ldap t)
(setq wl-ldap-server "ldapサーバ")
(setq wl-ldap-port "ldap port")
(setq wl-ldap-base "ou=ほげほげ,dc=へろへろ,dc=へろへろ"))))
我ながら ad hoc. emacs 内でドメイン調べるとか, もっとスマートにできんもんかな.
_ sudo-ext.el がうまく動かないので Tramp を久々に使ってみたり
id:rubikitch さんが公開しているsudo-ext.el(Emacsの中でsudoする方法)を使っていたのだけれど, いつの間にやら M-x sudoedit でファイルを指定しても, ファイルが開けなくなっていた(久々に emacs で root 権限が必要なモノを開いて気がついた). プロセスを見ると sudoedit ファイル名 ってプロセス自体は起動しているのだけれども...はて?
とりあえず, 以前やっていた tramp 用の設定に戻す. とは言え, zsh の PROMPT の設定をゴニョっとするだけ
if [ ! "$TERM" = "dump" ]; then
RPROMPT=$chroot$vcs$dirs
PROMPT=$'%U%(!.%B%{%{$fg[magenta]%}%}.%{%{$fg[white]%}%})[%n@%m:%j:%(!.#.%%)%u%B>%b %f'
fi
とか. zsh で TERM が dump の場合に PROMPT/RPROMPT を設定しないようにすると tramp で localhost にログインしてファイルの編集が可能に. 以前は tramp でファイルを開くまで結構待たされた記憶があるのだけれども, 流石に localhost だと一瞬でファイルが開けるのであまり気にならなかった.
sudo-ext がなんで駄目なのかは, あとで調べてみよう.