CentOS 7でPostfix+DovecotにLet’s Encryptの無料SSL証明書を適用して通信を暗号化する
Pocket

前回、Let’s Encryptを使って無料のSSL証明書を取得してWebサーバの暗号化を行ったので、今回はメールサーバ(Postfix+Dovecot)での対応を行う。
なお、すでにPostfix + Dovecotでメールサーバは構築済みの状態とし、同居しているWebサーバはいないものとする。

 

1.Let’s Encryptのインストール

まずは、以下のコマンドでgitをインストールしてLet’s Encryptをダウンロードしてくる。

yum install -y git openssl mod_ssl
git clone https://github.com/letsencrypt/letsencrypt.git

 

次に、以下のコマンドで証明書の発行を行う。

cd letsencrypt
./certbot-auto certonly --standalone -d ドメイン名 -m メールアドレス --agree-tos

 

作成した証明書ファイルは、「/etc/letsencrypt/live/ドメイン名/」配下に出力されている。

  • /etc/letsencrypt/live/ドメイン名/cert.pem … 証明書
  • /etc/letsencrypt/live/ドメイン名/privkey.pem … 秘密鍵
  • /etc/letsencrypt/live/ドメイン名/chain.pem … 中間CA証明書
  • /etc/letsencrypt/live/ドメイン名/fullchain.pem … 証明書+中間CA証明書

 

あとは、この作成された証明書をPostfix・Dovecotそれぞれで参照するように設定を変更すればいい。

Sponsored Links

2.Postfixの設定変更

Postfixの設定ファイルを変更し、メール送信時の通信をSSLで保護する。
「/etc/postfix/main.cf」に以下の内容を追記する。

●/etc/postfix/main.cf

smtpd_use_tls = yes
smtp_tls_security_level = may
smtpd_tls_cert_file = /etc/letsencrypt/live/ドメイン名/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/ドメイン名/privkey.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes

 

次に、「/etc/postfix/master.cf」を以下のように編集しサービス起動時のオプションを変更する。

●/etc/postfix/master.cf

smtps     inet  n       -       n       -       -       smtpd
#  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_reject_unlisted_recipient=no
#  -o smtpd_client_restrictions=$mua_client_restrictions
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING

 

最後にPostfixのサービスを再起動する。

systemctl restart postfix

 

3.Dovecotの設定変更

次に、Dovecotの設定ファイルを変更してメール受信時の通信を保護させる。
「/etc/dovecot/conf.d/10-ssl.conf」にて、以下の項目を変更する。

●/etc/dovecot/conf.d/10-ssl.conf

ssl = yes
ssl_cert = </etc/letsencrypt/live/ドメイン名/fullchain.pem
ssl_key = </etc/letsencrypt/live/ドメイン名/privkey.pem

 

Dovecotのサービスを再起動する。

systemctl restart dovecot

 

4.証明書ファイルの自動更新設定

Let’sEncryptでは2か月で証明書が切れてしまうので、自動更新の設定をする。
まず、gitでとってきたLet’sEncryptのソース等を移動しておく。

mv ~/letsencrypt/ /usr/local/

 

次にcrontabに以下の内容を記述することで、毎日朝3時に証明書の更新を行う。

●/etc/crontab

00 03 * * * root /usr/local/letsencrypt/certbot-auto renew --force-renew && /bin/systemctl reload httpd

 

これで、Postfix+DovecotのサーバをLet’s Encryptで暗号化させることができた。
設定も簡単だし、もし個人で立ち上げているメールサーバでSSL対応をしていないならば対応しておくとよいだろう。

 

【参考】

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。