みちのぶのねぐら

Logo 工作室 // 厚生部 // 政治局

Debain 9 で Dovecot の SSL/TLS を設定する

Update: 2017-12-02

久しぶりにメールサーバのセットアップをしています。

まず、 Debian 9 にはデフォルトで入っているけど使い慣れない exim4 を削除して、 Postfix や Dovecot のパッケージはこのくらい入れたらいいだろう、たぶん。

# apt-get remove exim4-base exim4-config exim4-daemon-light
# apt autoremove
# apt-get install postfix dovecot-imapd libsasl2-modules sasl2-bin

ローカルから SSL/TLS 無しでログインしてみます。

# telnet host.domain 143
Trying 100.200.300.400...
Connected to host.domain.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID \
  ENABLE IDLE STARTTLS AUTH=PLAIN] Dovecot ready.
a login "user id" "password"
a OK [CAPABILITY IMAP4rev1 ... ] Logged in
b logout
* BYE Logging out
b OK Logout completed (0.000 + 0.000 secs).
Connection closed by foreign host.

OSユーザでログインできてしまいました。 PAM の設定とかしなくていいのですね。

で Dovecot の SSL/TLS が利用できるようにしようとドキュメントを見たのですが、こんだけでいいの ^^)?

https://wiki2.dovecot.org/SSL/CertificateCreation

https://wiki2.dovecot.org/SSL/DovecotConfiguration

昔のことは全然覚えていないけど、簡単になってないかな ^^)?

とはいえドキュメントに記載されている doc ディレクトリは見当たらないので、それらしい場所を探して、 SSL証明書を作ります。

# cd /usr/share/dovecot/
# ./mkcert.sh 

/etc/dovecot/conf.d/10-ssl.conf は以下のように。

ssl = yes
ssl_cert = </etc/dovecot/dovecot.pem
ssl_key = </etc/dovecot/private/dovecot.pem

サービスをリスタートします。

# service dovecot restart

リモートから SSL/TLS 無しでログインしてみます。

# telnet host.domain 143
 ... ...
a login "user id" "password"
* BAD [ALERT] Plaintext authentication not allowed without SSL/TLS, \
  but your client did it anyway. If anyone was listening, 
  the password was exposed. 
  a NO [PRIVACYREQUIRED] Plaintext authentication disallowed 
  on non-secure (SSL/TLS) connections.

ダメだって言われました。

ローカルから SSL 接続を試してみます。

# openssl s_client -connect host.domain:imaps
CONNECTED(00000003)
 ... ...
* OK [CAPABILITY IMAP4rev1 ... ] Dovecot ready.
a login "user id" "password"
a OK [CAPABILITY IMAP4rev1 ... ] Logged in
b logout
* BYE Logging out
b OK Logout completed (0.000 + 0.000 secs).
Connection closed by foreign host.

リモートから SSL 接続するとつながりません。。。 あ、ポート開けてなかったわ。使わないつもりだからそのままで。

STARTTLS を試してみます。

# telnet host.domain 143
 ... ...
a STARTTLS
a OK Begin TLS negotiation now.
b bye
Connection closed by foreign host.

できてるよ。いいのかこれで ^^)?

短いドキュメントを読み直してみた感じ、 Self-signed の証明書でよければこんなものみたいです。

Tag: debian dovecot imap ssl tls STARTTLS