CentOS7に構築したメールサーバーでSSLが使えるようにする

メールサーバーでSSLが使えるようにしてみたいと思います。メールサーバーに使用する証明書はWebサーバー用にLet’s Encryptで取得したものを流用できます。
CentOS7にpostfix+dovecotで構築したメールサーバーが運用できていて、webサーバー用にLet’s Encryptで証明書を取得してssl設定と公開が完了しているのが前提になります。

Let’s Encrypt証明書の確認

Let’s Encryptで取得した証明書のファイルは4つあります。

ファイルの保存先は/etc/letsencrypt/live/mydomain.com/になります。

※mydomain.comはご自身のドメインです。

cert.pemサーバー証明書
chain.pem中間証明書
fullchain.pemサーバー証明書と中間証明書をまとめたもの
privkey.pem秘密鍵

Let’s Encrypt証明書の設定

postfixのファイルへ設定

まずPostfixを確認します。

[root@fserver ~]# rpm -qa | grep postfix
postfix-2.10.1-7.el7.x86_64

Let’s Encryptのファイルを/etc/postfix/main.cfに設定します
4つのファイルのうちcert.pemprivkey.pemfullchain.pemの3つのファイルを/etc/postfix/main.cfの最下行に設定します。
※mydomain.comはご自身のドメインにしてください。
※nanoエディタの場合の例です。

[root@fserver ~]# nano /etc/postfix/main.cf  #最下行にLet's Encryptのファイルを設定# 
smtpd_tls_cert_file = /etc/letsencrypt/live/mydomain.com/cert.pem 
smtpd_tls_key_file = /etc/letsencrypt/live/mydomain.com/privkey.pem 
smtpd_tls_CAfile = /etc/letsencrypt/live/mydomain.com/fullchain.pem

dovecotのファイルへ設定

/etc/dovecot/conf.d/10-ssl.confへ証明書のファイルを設定します。
設定ファイルはfullchain.pemprivkey.pemの2つです。
※mydomain.comはご自身のドメインにしてください。

[root@fserver ~]# /etc/dovecot/conf.d/10-ssl.conf 
#8行目の先頭#を入れてrequiredをyesに書き換えて追記# 
#ssl = required 
ssl = yes 
#dovecotの証明書設定ファイルの15.16行目に#を入れ無効化します# 
#ssl_cert = </etc/pki/dovecot/certs/dovecot.pem 
#ssl_key = </etc/pki/dovecot/private/dovecot.pem 
#17.18行目にLet's Encryptのファイルを設定# 
ssl_cert = </etc/letsencrypt/live/mydomain.com/fullchain.pem 
ssl_key = </etc/letsencrypt/live/mydomain.com/privkey.pem</pre

送信ポート設定

送信ポート設定を変更します。初期の設定では送信に25番ポートを使用するようになっているのでSSL用に変更します。

設定ファイルは/etc/postfix/master.cfになります。

465番ポートを使用する場合

[root@fserver ~]# nano /etc/postfix/master.cf 
#26行目~29行目の#を削除して有効にします# 
smtps    inet  n       -      n          -          -        smtpd 
 -o syslog_name=postfix/smtps 
 -o smtpd_tls_wrappermode=yes 
 -o smtpd_sasl_auth_enable=yes

587番ポートを使用する場合

プロバイダーによりOP25B対策がされているときはサブミッションポートを使用します。

[root@fserver ~]# nano /etc/postfix/master.cf 
#16行目と19行目の#を削除して有効にします# 
submission inet n      -       n         -         -        smtpd 
# -o syslog_name=postfix/submission 
# -o smtpd_tls_security_level=encrypt 
-o smtpd_sasl_auth_enable=yes

firewalldの設定

#受信に995番ポート(pop3s)使用する場合# 
[root@takemon ~]# firewall-cmd --permanent --add-service=pop3s 
#受信に993番ポート(imaps)使用する場合# 
[root@takemon ~]# firewall-cmd --permanent --add-service=imaps 
#送信に465番ポート(smtps)使用する場合# 
[root@takemon ~]# firewall-cmd --permanent --add-service=smtps 
#送信に587番サブミッションポート(submission)使用する場合# 
[root@takemon ~]# firewall-cmd --permanent --add-service=smtp-submission 
#firewalldの設定を反映#
[root@takemon ~]# firewall-cmd --reload

ポート開放とポートチェック

各設定が完了したらルーターのポート開放をします。

995番ポートまたは993番ポート

465番ポートまたは587番ポート

ルーターの設定が完了したら下記のサイトで外部からポートが開いているかチェックします。

ポートチェック【外部からポート開放確認】
サーバー管理者用の支援ページです。管理中のサーバーが外部からPortアクセス可能かをリアルタイムにチェック確認できます。

各項目に入力してPortチェック実行をクリックします。その他のポートもチェックします。

結果が表示されるのでアクセスできましたの表示を確認します。アクセスできない場合はルーターとfirewalldの設定をもう一度見直してください。