ssl/tls证书为邮件服务器提供端到端加密和身份验证,核心是让smtp(端口465/587)、imap(端口993)和pop3(端口995)启用加密通道;需匹配域名、设正确权限,配置postfix的smtpd_tls_*参数及dovecot的ssl=required等,并重启服务验证。

SSL/TLS 证书为邮件服务器提供端到端加密和身份验证,核心是让 SMTP、IMAP 和 POP3 服务在传输层启用加密通道,避免账号密码和邮件内容以明文暴露在网络中。
明确要保护的协议与端口
邮件系统涉及三类主要协议,每类都有对应的安全端口:
- SMTP(发信):普通端口 25(不加密),推荐使用 端口 465(SMTPS,隐式 TLS) 或 端口 587(STARTTLS)
- IMAP(收信/同步):普通端口 143,加密端口为 993(IMAPS)
- POP3(收信/下载):普通端口 110,加密端口为 995(POP3S)
配置前需确认你的邮件服务(如 Postfix + Dovecot)是否监听这些加密端口,并确保防火墙放行。
获取并准备证书文件
证书必须与你的邮件域名完全匹配(如 mail.example.com),否则客户端会报“证书不信任”或“域名不一致”。有两种主流方式:
- 用 Let’s Encrypt 免费申请(推荐生产环境):运行
certbot --postfix或手动获取证书,生成fullchain.pem(含公钥+中间证书)和privkey.pem(私钥) - 自签名证书(仅限测试或内网):执行
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mail.key -out mail.crt,但需手动导入客户端信任库
证书文件建议统一存放在 /etc/ssl/certs/,私钥放在 /etc/ssl/private/,并设权限为 600(仅 root 可读)。
Postfix 配置 TLS 加密(发信服务)
编辑 /etc/postfix/main.cf,添加或修改以下关键参数:
-
smtpd_tls_security_level = may(允许 STARTTLS)或= encrypt(强制加密,适合 587 端口) smtpd_tls_cert_file = /etc/ssl/certs/mail.crtsmtpd_tls_key_file = /etc/ssl/private/mail.key-
smtpd_tls_CAfile = /etc/ssl/certs/ca-bundle.crt(若使用 Let’s Encrypt,可省略或指向 fullchain.pem) - 启用 465 端口需额外配置
master.cf中的smtps服务段,取消注释并设置-o smtpd_tls_wrappermode=yes
Dovecot 配置 TLS 加密(收信服务)
编辑 /etc/dovecot/conf.d/10-ssl.conf:
-
ssl = required(强制所有连接使用 TLS) ssl_cert =ssl_key =- 确保
/etc/dovecot/conf.d/10-master.conf中的imaps和pop3s服务监听 993/995 端口且ssl = yes
重启服务后,用 openssl s_client -connect mail.example.com:993 -servername mail.example.com 测试证书链是否完整、域名是否匹配。











