メールサービスの暗号化をはじめました 〜ASAHIネット

先日からASAHIネットがPOP over SSLSMTP over SSLSMTP authに対応したのでとりあえず設定してみた。(とりあえず経路の暗号化だけ。サーバー認証はまた後で。)
まず、POP。fetchmailを使っているので、~/.fetchmailrcのASAHIネットの個所に以下を追加するだけでOK。

ssl
# sslcertck
# sslcertpath /etc/ssl/certs

お次にSMTPWanderlustを使っているので、~/.wlに以下を追加。で、wl付属のssl.elをload-pathの通ったところに置いておく。

(require 'ssl)
(setq ssl-certificate-directory "/etc/ssl/certs/")
(setq ssl-certificate-verification-policy 1)
    :    :    :    :    :
(setq wl-draft-send-config-alist
	  '*1
    :    :    :    :    :
		("^From:.*hirose31@example.jp" ; ASAHIネットのメールアドレス
		 (wl-smtp-posting-server . "mail.asahi-net.or.jp")
		 (wl-message-id-domain   . wl-smtp-posting-server)
		 (wl-envelope-from       . "hirose31@example.jp")
		 (wl-from                . "hirose31@example.jp")
		 (wl-smtp-posting-port   . "465")
		 (wl-smtp-connection-type   . 'ssl)
		 (wl-smtp-posting-user      . "ASAHINET-ID") ; ASAHIネットのID
		 (wl-smtp-authenticate-type . "CRAM-MD5"))
    :    :    :    :    :

wl-draft-send-config-alistは

(add-hook 'wl-draft-send-hook
		  '(lambda ()
			 (setq wl-draft-config-exec-flag t)
			 (wl-draft-config-exec wl-draft-send-config-alist)
			 (wl-draft-subject-check)
			 ))

なふうに送信時に実行されるwl-draft-config-execの設定です。
ミソはwl-smtp-posting-portでSMTP over SSLのポート番号(465)を明示的に指定するのと、英数字のランダムっぽい文字列のASAHIネットのユーザーIDをwl-smtp-posting-userで指定しているところす。

2004-05-29追記
証明書チェーンを辿って検証するようにしてみた。
証明書チェーンを確認すると、

 0 s:/C=JP/ST=Tokyo/L=Chuo-ku/O=ASAHI Net, Inc./OU=ASAHI-NET/CN=pop.asahi-net.or.jp
   i:/C=US/O=Entrust.net/OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/OU=(c) 1999 Entrust.net Limited/CN=Entrust.net Secure Server Certification Authority
 1 s:/C=JP/ST=Tokyo/L=Chuo-ku/O=ASAHI Net, Inc./OU=ASAHI-NET/CN=pop.asahi-net.or.jp
   i:/C=US/O=Entrust.net/OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/OU=(c) 1999 Entrust.net Limited/CN=Entrust.net Secure Server Certification Authority
 2 s:/C=US/O=Entrust.net/OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/OU=(c) 1999 Entrust.net Limited/CN=Entrust.net Secure Server Certification Authority
   i:/C=US/O=GTE Corporation/CN=GTE CyberTrust Root

となっていたので、EntrustとGTE CyberTrustの証明書を探す。
EntrustのはEntrust Certificate Servicesから、GTE CyberTrustのは買収先の買収先のbeTRUSTedで見つからなかったので、InstantSSLのサポートページから入手。
それぞれを/etc/ssl/certs/に置いて、

ln -s xxx.pem $(openssl x509 -noout -hash < xxx.pem).0

としてhashをとってsymlinkをはる。
あとはアプリケーションの設定。
fetchmailは~/.fetchmailrcの当該部分に

ssl
sslcertck
sslcertpath /etc/ssl/certs

のようにsslcertckとsslcertpathを追加する。
wl (ssl.el) は、

(require 'ssl)
(setq ssl-certificate-directory "/etc/ssl/certs/")
(setq ssl-certificate-verification-policy 0)

のようにssl-certificate-verification-policyを0にする。

*1:t : : : : : (wl-smtp-posting-port . "25") (wl-smtp-connection-type . nil) (wl-smtp-authenticate-type . nil