POP・IMAPのTLS(暗号)化

最終更新日:2011年5月29日

以下では dovecot を使った暗号化の手段について説明を行います。 なお、dovecot の基本的な設定は既に完了しているものとして、以下では暗号化に関する部分だけ説明します。

1.プレーンテキストの危険性

dovecotに限りませんが、メールクライアントソフトからサーバにアクセスするには、ユーザID と パスワード が必要です。 その際、パケットのデータを暗号化しない場合には、それらIDやパスワードはそのままの文字列(プレーンテキスト)でパケットとして通信が行われてしまいます。
これは、悪意ある人間がこのパケットを何らかの方法で採取できると、容易にIDとパスワードを取得することができる事を意味します。
例えば以下は、ID/パスワードが「"testuser" / "testpass" 」であるユーザのメールクライアント(192.168.100.100)と、IMAPメールサーバ(192.168.100.23)のパケットを採取したログです。
ここで赤線の部分では、クライアントからサーバに対して認証をプレーンテキスト(生テキスト)で送信するリクエストをした後、認証IDとパスワード(BASE64でエンコードされた形式)のデータとして "AHRlc3R1c2VyAHRlc3RwYXNz" が渡されたことが見て取れます。BASE64でエンコードされたデータは簡単にデコードが可能で、この内容は "\0testuser\0testpass" を意味します。(http://hogehoge.tk/tool/ とかでデコードを試せます)
このようにプレーンテキストのパケット内容から、ユーザID="testuser"、パスワード="testpass"であることが容易に判断できます。
さらに POP3 では、BASE64形式どころか、IDとパスワードがそのままのテキストで流れるので、もっと簡単にIDとパスワードを解析できてしまいます。

dovecot ではプレーンテキスト形式での認証方法の際に、先にパケットそのものを暗号化させるためのTLS(SSL)をサポートしており、これを使うことで上記のようにパケットを採取されても中のデータを解析できないようにする方法が用意されています。 すでに dovecotのインストールが完了しているなら以下のようにしてTLS化します。

2.dovecot のTLS化手順

2-1.サーバ証明書の入手

こちらを参考にSSL用のサーバ証明書を入手してください。(Postfix用として作成した証明書で構いません) ここではPostfixのTLS化で使ったサーバ証明書を使うものとして説明します。なお、pop用またはIMAP用のサーバ証明書を独自に作りたいなら、こちらをご覧下さい。
作成/入手したサーバ証明書およびプライベートキーは以下のようになっているものとします。
設定内容 Debian・Ubuntu  Redhat・CentOS・SL-Linux
CAに認証されたサーバ証明書  /etc/ssl/certs/mail-server.pem  /etc/pki/tls/certs/mail-server.pem
サーバのプライベートキー  /etc/ssl/private/nopass_mail-server.key  /etc/pki/tls/private/nopass_mail-server.key

2-2.POP・IMAP のTLS(SSL)の設定

/etc/dovecot/conf.d/10-master.conf の修正
::
::
# Internal user is used by unprivileged processes. It should be separate from
# login user, so that login processes can't disturb other processes.
#default_internal_user = dovecot

service imap-login {
inet_listener imap {
port = 143
}
inet_listener imaps {
port = 993
ssl = yes

}
::
::
}
::
::
service pop3-login {
inet_listener pop3 {
port = 110
}
inet_listener pop3s {
port = 995
ssl = yes

}
}
::
::
/etc/dovecot/conf.d/10-ssl.conf の修正
##
## SSL settings
##

# SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
ssl = yes

# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
# dropping root privileges, so keep the key file unreadable by anyone but
# root. Included doc/mkcert.sh can be used to easily generate self-signed
# certificate, just make sure to update the domains in dovecot-openssl.cnf
ssl_cert = </etc/pki/tls/certs/mail-server.pem--- CAに認証されたサーバ証明書
ssl_key = </etc/pki/tls/private/nopass_mail-server.key --- サーバのプライベートキー(パスワード解除したもの)
::
::

以上でTLS化の設定は完了です。 dovecot を再起動すればTLSによる接続が可能になります。

Home

Mailwebmaster@robata.org

Copyright© 1998-2003 ROBATA.ORG