在 CentOS 7 的 Postfix 啟用 TLS
安裝 acme.sh 取得 SSL 憑證。
我用的方式是 Standalone tls alpn mode,port 443 必須先空出來,不能被使用。
# 一開始要拿憑證的時候一直出現錯誤
# 後來在網路上看到可以加 --set-default-ca --server letsencrypt
# 加上後就成功了
acme.sh --set-default-ca --server letsencrypt --issue --alpn -d YOUR.DOMAIN.COM
Postfix 設定方式如下:
smtpd_use_tls = yes
smtpd_tls_auth_only = no
smtpd_tls_cert_file = /etc/letsencrypt/..../fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/..../privkey.pem
tls_random_source = dev:/dev/urandom
smtpd_tls_received_header = yes
smtp_use_tls = yes
smtp_tls_note_starttls_offer = yes
再修改 /etc/postfix/master.cf,下面三行拿掉註解。
smtps inet n - n - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
重新啟動 Postfix
systemctl restart postfix
記得要修改 Firewall 設定,讓 TCP port 465 可以通行(SMTP uses port 25, but SSL/TLS encrypted SMTP uses port 465)。
再來要修改 SELinux 規則,因為 acme.sh 的相關檔案都放在 root 家目錄,其他服務要讀取會有問題。
# 安裝工具
yum install setroubleshoot*
再到 /var/log/messages 看相關訊息,跟著訊息下指令安裝 SELinux 規則,規則安裝好後,似乎要重新開機才可以正常運作。
參考連結: