~/.authinfo を GPG で暗号化しておく

smtp や nntp、pop、imap など複数のサーバを Gnus から使っているとアカウントとパスワードが増えて管理が面倒になってくる。パスワードはともかくアカウント情報ならば .gnus に直接書いて設定しておく手もあるのだろうがそれも気が奨まないし、.gnus のあちこちに散乱するのもいただけない(まとめればいいんだろうけど)。

そんなとき Gnus では .authinfo というファイルが使える。ftp などで利用される .netrc と同様にホスト毎にアカウントやパスワードを設定しておくことができる。書式もほぼ同じ。更にこの .authinfo ファイルを gpg で暗号化したまま利用することも可能だ*1。以下はその手順のメモ。

gpg を用意する

当然ながら gpg が使える状態でないといけない。

.authinfo ファイルを作る

これも言わずもがな。ファイルのパーミッションは 600 にしておきましょう。

.authinfo を暗号化する

% gpg -c --cipher-algo aes ~/.authinfo

シェルからおもむろに上記のコマンドを叩く。これで .authinfo が gpg で暗号化され、ファイル名が .authinfo.gpg に変更される。

Gnus の設定

Gnus の認証ファイルはデフォルトで ~/.authinfo を探すようになっているのでこれを変更する。gpg で暗号化した後、.authinfo にファイル名を戻してやればファイル指定は不要だが、.gpg のサフィックス付きのままのほうが後述の gpg.el 使うときにちょっとだけ便利。

;; authinfo ファイルの指定
(setq nntp-authinfo-file "~/.authinfo.gpg")
(setq nnimap-authinfo-file "~/.authinfo.gpg")
(setq smtpmail-auth-credentials "~/.authinfo.gpg")
;; 暗号化方式の指定
(setq encrypt-file-alist '(("~/.authinfo.gpg" (gpg "AES"))))
;(setq password-cache-expiry nil)	; パスワードをキャッシュする

これでおーけー。Gnus がパスワードが必要になると gpg のパスフレーズを聞いてくるのでそれに答えれば後は滞りなく認証を行なってくれる。

gpg.el をインストール

おまけ。Mew の山本さん作の gpg.el をインストールしておくと暗号化されたファイルを透過的に編集できるようになる。便利。

*1:リリース版でなく No Gnus でないと無理ですけど