用户首先获取SSL证书,配置Postfix的SSL部分,配置Dovecot的SSL部分,检查配置,重启服务,测试连接,设置防火墙,日志排错,设置自动续期。需要参考官方文档或者一些教程,确保每个步骤正确。还需要测试发送和接收邮件,用Thunderbird或者Outlook配置账户,验证是否能够通过SSL/TLS连接成功。因此配置Postfix和Dovecot的SSL/TLS加密需要多个步骤,下面我详细说一下:

1. 获取SSL证书

推荐使用Let's Encrypt的免费证书:

bash

sudo apt install certbot

sudo certbot certonly --standalone -d mail.example.com

证书路径通常为:

证书文件:/etc/letsencrypt/live/mail.example.com/fullchain.pem

私钥文件:/etc/letsencrypt/live/mail.example.com/privkey.pem

2. 配置Postfix的SSL/TLS

编辑主配置文件 /etc/postfix/main.cf:

bash

启用TLS

smtpd_use_tls = yes

smtpd_tls_cert_file = /etc/letsencrypt/live/mail.example.com/fullchain.pem

smtpd_tls_key_file = /etc/letsencrypt/live/mail.example.com/privkey.pem

smtpd_tls_security_level = may  # 或强制加密改为 encrypt

提高安全性(可选)

smtpd_tls_protocols = !SSLv2, !SSLv3

smtpd_tls_ciphers = high

修改子配置文件 /etc/postfix/master.cf:

启用465(SMTPS)和587(Submission)端口:

bash

submission inet n       -       y       -       -       smtpd

o syslog_name=postfix/submission

o smtpd_tls_security_level=encrypt  # 强制加密

o smtpd_sasl_auth_enable=yes

smtps     inet  n       -       y       -       -       smtpd

o syslog_name=postfix/smtps

o smtpd_tls_wrappermode=yes

o smtpd_sasl_auth_enable=yes

3. 配置Dovecot的SSL/TLS

编辑SSL配置文件 /etc/dovecot/conf.d/10-ssl.conf:

bash

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

检查认证配置 /etc/dovecot/conf.d/10-auth.conf:

bash

auth_mechanisms = plain login

确保端口监听正确(/etc/dovecot/conf.d/10-master.conf):

bash

service imap-login {

inet_listener imaps {

port = 993

ssl = yes

}

service pop3-login {

inet_listener pop3s {

port = 995

ssl = yes

}

4. 重启服务并测试

bash

sudo systemctl restart postfix dovecot

测试命令:

检查端口监听:

bash

sudo netstat -tuln | grep -E '25|465|587|993|995'

测试SMTP加密:

bash

openssl s_client -connect mail.example.com:465 -starttls smtp

测试IMAPS:

bash

openssl s_client -connect mail.example.com:993

5. 防火墙设置

bash

sudo ufw allow 25,465,587,993,995/tcp

6. 证书自动续期

编辑Crontab:

bash

sudo crontab -e

添加:

bash

0 3 * * * certbot renew --quiet --post-hook "systemctl reload postfix dovecot"

7. 高级安全配置(可选)

HSTS(HTTP严格传输安全):在邮件客户端支持的场景下配置。

DNSSEC/DANE:增强证书验证的安全性。

SPF/DKIM/DMARC:配置反垃圾邮件策略。

常见问题排查

权限问题:确保私钥可读(sudo chmod 600 /etc/letsencrypt/live/mail.example.com/privkey.pem)。

日志检查:查看/var/log/mail.log或journalctl -u postfix。

服务冲突:确保端口未被占用(如Nginx占用443需暂停后再续期证书)。

用户通过完成以上六个步骤后,邮件服务器将通过SSL证书加密通信,提升安全性。建议使用邮件客户端(如Thunderbird)测试发送和接收功能。