POPs,IMAPs ( STARTTLS or SSL/TLS )を使うための設定
POP3s,IMAPs ( STARTTLS or SSL/TLS )を使うための設定は、メールのためのSSL用の証明書を作成する手順まで sendmail設定(3)Submissionポート(サブミッション・ポート)& SMTP-AUTH(認証)& STARTTLSを使ってみる で説明しているSTARTTLS と同じです。
以降は、サーバー証明書の作成から簡単に解説します。
メールサーバーの証明書(SSL用)を作成する。
Dovecotで POP3s,IMAPs ( STARTTLS or SSL/TLS ) に対応 する場合は、
SSLサーバー証明書ファイル 、SSLサーバー秘密鍵ファイル が必要になります。
そのSSLサーバー証明書などは、通常、会社などの公的な場面で管理・運営する場合は、公的なパブリック認証局から有料にて発行してもらうべきでしょう。
ただ、ここでは、サーバー証明書などを使った暗号化を利用したよりセキュアなDovecotの運用について解説したいだけですので、
プライベート認証局を自前で用意(もちろん無料)し、サーバー証明書を発行し使用するもとします。
大きな作成の流れは、以下のとおりです。
また、これらの作成手順は、プライベート認証局の証明書、サーバー証明書、クライアント証明書の作成方法について にて詳しく解説していますので、そちらを参照してください。
- OpenSSLをインストールします。→ 参照: OpenSSLのインストールする
- プライベート認証局の証明書を作成します。→ 参照: 認証局証明書を作成する
- サーバー証明書、秘密鍵を作成します。→ 参照: サーバー証明書を作成する。
ここでは、先の証明書作成解説記事 にて作成した PEM形式のものと利用するものとして、
以下のファイル名を使用して解説します。
(サーバー証明書作成時に、 Common Name に mail.exmaple.com を指定して作成したものとします。)
dovecot の設定を行う。
次に、dovecot の設定を行います。
CentOS 5, CentOS 6, ScientificLinux 6 までは、/etc/dovecot.conf を編集します。
...
protocols = imap imaps pop3 pop3s
...
ssl_disable = no
...
ssl_cert_file = /etc/pki/CA/certs/mail.example.com.pem
ssl_key_file = /etc/pki/CA/private/mail.example.com.key
...
|
プロトコルとして、imaps,pop3s を有効にしておきます。
SSLを有効(no)にしておきます。
メールのためのSSL用証明書のありかを設定(mail.example.com.pem)します。
CentOS 7 では、/etc/dovecot/conf.d/10-ssl.conf を編集します。
...
ssl = yes
...
ssl_cert_file = /etc/pki/CA/certs/mail.example.com.pem
ssl_key_file = /etc/pki/CA/private/mail.example.com.key
...
|
続けて、使用するプロトコルの設定は、conf.d/10-master.conf を編集することになります。
...
service imap-login {
inet_listener imap {
}
inet_listener imaps {
port = 993
ssl = yes
}
...
}
...
service pop3-login {
inet_listener pop3 {
}
inet_listener pop3s {
port = 995
ssl = yes
}
...
}
...
|
dovecot を再起動(再読み込み)する。
dovecot の設定を終えたら、dovecot を再起動(再読み込み)を行います。
その前に、ここで使用するプロトコル(imaps,pop3s) が使用するポートが iptables などで閉じている場合は、開いておきます。
$ /sbin/iptables -A INPUT -p tcp --dport 110 -j ACCEPT
$ /sbin/iptables -A INPUT -p tcp --dport 143 -j ACCEPT
$ /sbin/iptables -A INPUT -p tcp --dport 993 -j ACCEPT
$ /sbin/iptables -A INPUT -p tcp --dport 995 -j ACCEPT
|
最後にDovecotを再起動(再読み込み)します。
CentOS 5,
CentOS 6,
ScientificLinux 6 の場合
$ service dovecot restart
...
|
CentOS 7 の場合
$ systemctl restart dovecot.service
...
|
各サービスを起動・停止は、service コマンドを使うのが主流でしたが、CentOS 7 では、systemctl コマンドを使うようになりました。
service コマンドも自動でリダイレクトしてくれるので使えますが、これからは、systemctl へ完全移行するのでしょうね。
また、もっと古い /etc/init.d/dovecot は、完全に無くなりました。
メールクライアントからメールを受信してみる
メールの受信確認には、メールクライアントソフトを使って確認するのが間違いが少ないでしょう。
ここでは、フリーメールクライアントソフトのThunderBirdを使ってみます。
ThunderBirdでメールを受信してみる
メニューの[ ツール ] – [ アカウント設定 ]でアカウント設定画面を開きます。
アカウント設定画面から、テストに用いるメールアカウントの [ サーバー設定 ] を選択します。
- サーバー名:
正しいメールサーバー名あるいはIPアドレスを設定します。
ここでは、例としてmail.example.comを入力しています。
- ユーザ名:
メールの受信ユーザ名になります。
ここでは、例としてhogeを入力しています。
- ポート番号:
- 接続の保護:
ここでは、先のポート番号時と同様、なし、STARTTLS、SSL/TLSのいずれかを選択します。
- 認証方式:
ここでは、通常のパスワード認識を選択します。
編集を終えたら、OKボタンをクリックして変更内容を保存したら、適当な外部サーバーから(例えばYahoo!のフリーメールなど)ここで設定したメールアドレス宛てにメールを送信してみましょう。
メールクライアントでメールが受信できればOKです。
サーバー証明書に関する警告メッセージについて
接続の保護が、STARTTLS、SSL/TLSの場合、初回は、以下のようなメッセージが表示され、受信できないかもしれません。
このメッセージは、「証明書は、勝手に自前で作成した証明書なので、信用性がありません。」という趣旨のものです。
とりあえず、セキュリティ例外をクリックすると以降、メール送信できるようになります。
更に、その上のチェックボックスにチェックを入れておけば、それ以降、この画面は表示されません。
または、あらかじめ
プライベート認証局の証明書( こちらの記事 の例では、
CentOS : /etc/pki/CA/cacert.pem, Debian Ubuntu : /etc/ssl/CA/cacert.pem )を
あらかじめメールクライアントツールにインストールしておけば、上記のようなメッセージは表示されません。
以下は、ThunderBirdでの例です。先のプライベート認証局の証明書をダウンロード済として解説します。
- メニュー [ツール] – [オプション] をクリックします。
- オプション画面上の[詳細]をクリック、[証明書]タブを選択します。
[証明書を表示]ボタンをクリックします。
- 証明書マネージャ画面上の[認証局証明書]タブを選択します。
[インポート]ボタンをクリックし、先にダウンロードしたプライベート認証局の証明書を指定しインポートすれば OK です。
これで、インストールしたプライベート認証局で作成・発行したサーバー証明書を自動的に許容します。
ただし、先の記事 でサーバー証明書を作成する際に Common Name で指定した
サーバー名と一致していることが前提になります。
例えば、先の記事 のように www.exmple.com と指定したにもかかわらず、
メールサーバーのIPアドレスでメール受信しようとした場合は、上記と同様、警告メッセージが表示されることがありますので、十分、気をつけましょう。
受信できない場合のチェックポイント
もし、受信できない場合は、まず、ポートの確認をしてみましょう。
クライアント側で、telnetで 先のメールクライアントの設定で指定したポート番号( 以下の例は pop3のポート 110 )を確認してみましょう。
C:\> telnet 11.22.33.44 110
+OK Dovecot ready.
quit
+OK Logging out
|
上記の例は、dovecotのIPアドレスが11.22.33.44だったとして記述しています。
これがOKの場合は、mail_location の設定に誤りがあるか、メールクライアントの設定に誤りがあるかも知れません。
もう一度、dovecot の設定、およびメールクライアントの設定を確認してみましょう。
これがNGの場合は、ポートがオープンされていないか、dovecotが起動していないでしょう。
ポートが開いているか確認するには、サーバー側で、iptablesを使うと良いでしょう。
$ iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:pop3
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
|
tcp dpt:pop3の状態を確認します。ここでは、ACCEPTになっていますから、ポートはオープンされていることになります。
もし、開いていないようなら、pop3のポート(デフォルト110)を開くようにしましょう。
$ iptables -A INPUT -p tcp --dport 110 -j ACCEPT
|
こんな感じです。
どうだったでしょうか?
メール受信側は、メール送信以上に簡単でした。
STARTTLS とSSL/TLSとでは、メールの送信と同様に、SSL/TLSがよりセキュアです。
会社などのビジネスメールは、この程度のセキュリティは設定しておくできでしょうね。
もし、まだ設定していないなら、設定しましょうね。
コメントを投稿 :