邮件服务器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证书加密通信能力。