邮件服务器SSL证书配置路径要同时覆盖CentOS和Debian系。安全方面要提醒TLS版本限制,现代系统应该禁用SSLv3。还有证书续期问题,特别是crontab自动续期这个实用技巧。下面是 Postfix 和 Dovecot 的 SSL/TLS 配置指南,涵盖证书申请、配置步骤及安全优化建议。适用于 Ubuntu/Debian/CentOS 等主流 Linux 发行版。
一、准备工作:获取 SSL 证书
选项 1:使用 Let's Encrypt(推荐)
bash
复制
下载
安装 Certbot
sudo apt install certbot # Debian/Ubuntu
sudo dnf install certbot # CentOS
申请证书(替换域名和邮箱)
sudo certbot certonly --standalone -d mail.example.com -d example.com --email
admin@example.com --agree-tos --non-interactive
证书位置:
/etc/letsencrypt/live/mail.example.com/fullchain.pem
/etc/letsencrypt/live/mail.example.com/privkey.pem
选项 2:自签名证书(测试用)
bash
复制
下载
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/mail.key \
-out /etc/ssl/certs/mail.crt
二、Postfix 配置 (SMTP)
编辑 /etc/postfix/main.cf:
ini
复制
下载
启用 TLS
smtpd_tls_security_level = may
smtp_tls_security_level = may
证书路径
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.example.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.example.com/privkey.pem
强制加密端口(Submission/SMTPS)
smtpd_tls_wrappermode = yes
协议限制(禁用旧协议)
smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1
smtpd_tls_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1
端口配置(/etc/postfix/master.cf):
ini
复制
下载
启用 587 (Submission)
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
启用 465 (SMTPS)
smtps inet n - y - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
三、Dovecot 配置 (IMAP/POP3)
编辑 /etc/dovecot/conf.d/10-ssl.conf:
ini
复制
下载
启用 SSL/TLS
ssl = required
证书路径
ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem
安全协议设置
ssl_min_protocol = TLSv1.2
ssl_cipher_list = EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
ssl_prefer_server_ciphers = yes
禁用不安全的 SSL 特性
ssl_dh = </etc/dovecot/dhparam.pem # 生成 DH 参数:openssl dhparam -out /etc/dovecot/dhparam.pem 4096
四、重启服务 & 防火墙
bash
复制
下载
重启服务
sudo
systemctl restart postfix dovecot
开放防火墙端口
sudo ufw allow 25 # SMTP
sudo ufw allow 587 # Submission
sudo ufw allow 465 # SMTPS
sudo ufw allow 993 # IMAPS
sudo ufw allow 995 # POP3S
五、验证配置
1. 检查端口监听
bash
复制
下载
sudo ss -tuln | grep -E '25|465|587|993|995'
2. 测试 SSL 连接
bash
复制
下载
测试 IMAPS
openssl s_client
-connect mail.example.com:993 -showcerts
测试 SMTPS
openssl s_client
-starttls smtp -connect mail.example.com:587
3. 在线检测工具
SSL Labs 测试:检查证书和协议安全性
邮件服务器测试
六、自动续期证书(Let's Encrypt)
bash
复制
下载
添加续期后重启服务的钩子
echo "systemctl reload postfix dovecot" | sudo tee -a
/etc/letsencrypt/renewal-hooks/post/mailserver.sh
sudo chmod
+x /etc/letsencrypt/renewal-hooks/post/mailserver.sh
测试续期
sudo certbot renew --dry-run
常见问题解决
1. 证书权限问题
bash
复制
下载
sudo chmod 644
/etc/letsencrypt/live/mail.example.com/fullchain.pem
sudo chmod 640
/etc/letsencrypt/live/mail.example.com/privkey.pem
sudo chown root:postfix /etc/letsencrypt/live/mail.example.com/privkey.pem
2. Dovecot 报错 "SSL_CTX_load_verify_locations failed"
检查证书路径是否正确,或重启 Dovecot 查看详细错误日志:
bash
复制
下载
journalctl -u dovecot -f
3. 客户端无法连接
确认防火墙开放端口
检查 telnet mail.example.com 993 是否通
查看日志:/var/log/mail.log
关键安全建议
定期更新证书(Let's Encrypt 证书 90 天有效期)
禁用 SSLv3/TLSv1.0 等不安全协议
使用强加密套件(如 AES-GCM)
启用 OCSP Stapling(在 Dovecot 中配置 ssl_ocsp_stapling = yes)
通过以上步骤,用户的 Postfix+Dovecot 将具备安全的 SSL证书加密通信能力。