前回、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それぞれで参照するように設定を変更すればいい。
2. Postfixの設定変更
Postfixの設定ファイルを変更し、メール送信時の通信をSSLで保護する。 「/etc/postfix/main.cf」に以下の内容を追記する。
/etc/postfix/main.cfsmtpd_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.cfsmtps 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.confssl = 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/crontab00 03 * * * root /usr/local/letsencrypt/certbot-auto renew --force-renew && /bin/systemctl reload httpd
これで、Postfix+DovecotのサーバをLet's Encryptで暗号化させることができた。 設定も簡単だし、もし個人で立ち上げているメールサーバでSSL対応をしていないならば対応しておくとよいだろう。
参考
- Let's Encryptを使ったセキュアなメールサーバの構築(Cent OS7 + Postfix + Dovecot) - Qiita
- SSLメールサーバ構築メモ Let's Encrypt+Postfix+Dovecot | あぱーブログ