Ubuntu Postfix Mail Server 設定筆記 (六) SMTP/POP3/IMAP TLS 加密 (Let’s Encrypt 免費證書)

本系列第六篇: 使用 Let’s Encrypt 免費證書加密 SMTP

前面第四篇已設定好了 Dovecot SMTP 認證,
但在多數 MUA 上無法啓用連綫加密,原因是我們未設定好加密的證書。

轉眼距離上一篇已經兩年多,
現在已經是全民加密,免費證書的年代了,就用 Let’s Encrypt 搞個免費證書吧。

1. 安裝 Apache 和 Let’s Encrypt Apache 套件

apt-get install apache2 python-letsencrypt-apache

Let’s Encrypt 是用 ACME Protocol 管理並發出證書的
方法是對目標 Domain 發起 HTTPS request, 以進行 Domain Validation
所以要先安裝 Apache, 並從 Firewall 打開 Port 80 和 443
當然 Domain 要指向 Mail Server 啦

2. 向 Let’s Encrypt 要求簽發證書

有多個 Subdomain 的話, 可以用多個 -d 指定

letsencrypt --apache -d domain1.com

letsencrypt --apache -d domain1.com -d smtp.domain1.com -d pop3.domain1.com -d imap.domain1.com

3. 設定證書自動更新

Let’s Encrypt 的證書每 90 天就會過期,過期前 30 天可以更新

所以要設定 Crontab 自動更新證書

vim ~/letsencrypt-renew.sh

#!/bin/sh

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
letsencrypt renew

crontab -e 加入這行

0 0 * * * ~/letsencrypt-renew.sh

chmod +x ~/letsencrypt-renew.sh

因為直接在 crontab 運行 letsencrypt renew 會遇到莫名的錯誤, 所有要弄個 Bash Shell 來 Set Path

3. 設定 Postfix (SMTP)

修改 /etc/postfix/main.cf, 把兩個設定指向 Cert 和 Private Key

smtpd_tls_cert_file=/etc/letsencrypt/live/domain1.com/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/domain1.com/privkey.pem

提高 TLS 安全性, 停用不安全的 Ciphers

smtpd_tls_ciphers = high
smtpd_tls_protocols = TLSv1,!SSLv2,!SSLv3
smtpd_tls_exclude_ciphers = aNULL,DES,3DES,MD5,DES+MD5,RC4

4. 設定 Dovecot (POP3/IMAP)

修改 /etc/dovecot/conf.d/10-ssl.conf, 把 tls 啓用並兩個設定指向 Cert 和 Private Key

ssl = yes

ssl_cert = </etc/letsencrypt/live/domain1.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/domain1.com/privkey.pem

提高 TLS 安全性, 停用不安全的 Ciphers

ssl_protocols = !SSLv2:!SSLv3
ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL:!RC4::!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS

修改 /etc/dovecot/conf.d/10-auth.conf

關閉先前打開的 Plain Text 登入

disable_plaintext_auth = no
auth_mechanisms = plain

完成!SMTP/POP3/IMAP 現在有正式的加密證書了
用您熟悉的 MUA 嘗試建立加密連線吧

有需要的話, 也可以把前一篇建立的 Webmail 設定 HTTPS 加密
有關 HTTPS 的設定, 可以參考另一篇 Blog

Let’s Encrypt for Apache on Ubuntu 16.04/14.04

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.