EmacsでS/MIMEを使ってメールに署名する話

所属機関のメールアドレスにS/MIMEの署名を付けるための証明書を発行できることを知ったので、設定してみた。ここではGnuPGに同梱されているgpgsmを使う。

まず証明書をgpgsmに読み込ませる必要がある。以下のコマンドでできるはずだがパスフレーズが必要なので、ちゃんと覚えておく必要がある。

gpgsm --import your-file.p12

これで一応署名を付けられるはずだが、CRLチェックが上手く行かない場合は署名に失敗するらしい。今回試した設定では以下でCRLチェックを無効化する必要があった。

echo 'disable-crl-checks' >> ~/.gnupg/gpgsm.conf

以下がEmacsの設定である。特に難しいことはないが、 mml-secure-smime-sign-with-sender を使って自動で証明書を選ばせるようにしている。

(leaf mml-smime
  :require (t mml-sec)
  :custom
  (mml-smime-use . 'epg)
  (mml-default-sign-method . "smime")
  (mml-default-encrypt-method . "smime")
  ;; Let Emacs select an appropriate S/MIME signer
  (mml-secure-smime-sign-with-sender . t))

この設定だと自動では署名をしない。 C-c RET s sM-x mml-secure-sign-smimemml-secure-sign-smime を呼び出すと署名用の文字列が挿入されて署名される。