ワイルドカードSSL証明書を前に取得してて、Apacheにしか使ってなかったので、そろそろメールにも
ということで、まずはDovecotにSSLの設定をしてみた。
設定は結構簡単で、10-ssl.confに証明書と認証鍵と中間証明書のファイルを指定するだけ。
中間証明書はssl_caで指定する。
証明書関連のファイルの名前は次の通りとする。
- 証明書: example.com.crt
- 認証鍵: example.com.key
- 中間証明書: example.com.ca-bundle
/etc/dovecot/conf.d/10-ssl.conf
ssl_cert = </etc/pki/tls/certs/example.com.crt ssl_key = </etc/pki/tls/certs/example.com.key ssl_ca = </etc/pki/tls/certs/example.com.ca-bundle
Dovecotをリロードして設定を反映させる。
/etc/init.d/dovecot reload
ログの最後にTLSという表記がでるので、SSL/TLS通信で認証できたか確認できる。
dovecot: imap-login: Login: user=, method=CRAM-MD5, rip=XXX.XXX.XXX.XXX, lip=XXX.XXX.XXX.XXX, mpid=XXXX, TLS
SSL/DovecotConfiguration – Dovecot Wiki
昔、DovecotでSSLを設定したときは証明書を中間証明書と結合したファイルを作って〜みたいな作業があったと思うんだけど、ssl_caでできるようになったみたい。
これでApacheと同じファイルを使えるようになったのはいいね。
設定の”=”の前に”<“が書いてあるんだけど、はずして設定してみるとログにエラーが出てたので”<“は必要なようだ。
(“<“が何を意味するのかまではわからなかった・・・)
imap-login: Fatal: Can't load ssl_cert: There is no valid PEM certificate. (You probably forgot '<' from ssl_cert=</etc/pki/tls/certs/example.jp.crt)
あと、SSLを有効にしようとして/etc/dovecot/dovecot.confに
#protocols = imap pop3 lmtp protocols = imap pop3 imaps pop3s lmtp
と書いたら怒られた。
dovecot: doveconf: Warning: Obsolete setting in /etc/dovecot/dovecot.conf:21: protocols=imaps is no longer necessary, remove it dovecot: doveconf: Warning: Obsolete setting in /etc/dovecot/dovecot.conf:21: protocols=pop3s is no longer necessary, remove it
もう古い書き方らしい。なので、元の設定にもどしておいた。
protocols = imap pop3 lmtp
/etc/dovecot/conf.d/10-ssl.confに書いてあるssl = yesのデフォルトの設定で、imaps (993)、pop3s (995)のポートが開くことがわかった。
ssl = yes
# netstat -na |grep '99[35]' |grep LISTEN tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN tcp 0 0 :::993 :::* LISTEN tcp 0 0 :::995 :::* LISTEN
SSL通信を強制する場合はrequiredを設定する。
ssl = required
ワイルドカードSSL証明書なのでCommon Nameが”*.example.com”みたいになってるのでメーラーが対応してるかちょっと心配だったけど、ThunderbirdでもMacのMailでもiPhoneでも大丈夫だったのでよかった。
ちなみに、STARTTLSでも別ポートを使ったSSL/TLS通信でもどちらにも対応していた。