在 Debian 上搭建支持 SSL/TLS 加密的邮件服务器,通常包含三个部分:
下面给你一套最常见、可用的实战方案(Debian 11/12 通用)。
sudo apt update
sudo apt install postfix dovecot-core dovecot-imapd \
dovecot-pop3d certbot -y
假设你的邮件域名是:
mail.example.com
sudo certbot certonly --standalone -d mail.example.com
证书位置:
/etc/letsencrypt/live/mail.example.com/
├── fullchain.pem
└── privkey.pem
sudo nano /etc/postfix/main.cf
添加或修改:
myhostname = mail.example.com
mydomain = example.com
myorigin = $mydomain
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
smtpd_tls_protocols = !SSLv2, !SSLv3, TLSv1.2, TLSv1.3
smtp_tls_security_level = may
smtp_tls_protocols = !SSLv2, !SSLv3, TLSv1.2, TLSv1.3
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
编辑:
sudo nano /etc/postfix/master.cf
启用:
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
sudo systemctl restart postfix
sudo nano /etc/dovecot/conf.d/10-ssl.conf
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
sudo nano /etc/dovecot/conf.d/10-master.conf
确保:
service imap-login {
inet_listener imaps {
port = 993
ssl = yes
}
}
service pop3-login {
inet_listener pop3s {
port = 995
ssl = yes
}
}
sudo systemctl restart dovecot
sudo ufw allow 25,465,587,993,995/tcp
sudo crontab -e
添加:
0 3 * * * certbot renew --quiet && systemctl reload postfix dovecot
openssl s_client -connect mail.example.com:993
openssl s_client -connect mail.example.com:465
看到 Verify return code: 0 (ok) 就成功了。
✅ DNS 要配置:
✅ 邮件客户端配置:
如果你愿意,我可以:
你现在是新装还是已有邮件服务器要加 SSL?