所有部署指南 部署

邮件服务器的 SSL/TLS 配置(Postfix、Dovecot、Exchange)

保护你网站的同一个 Let’s Encrypt 证书也可以加密你的邮件连接。本指南涵盖最常见邮件服务器的 TLS 配置。

为什么邮件需要 TLS

没有 TLS,邮件流量(包括密码和邮件内容)以明文发送:

  • SMTP(发送邮件)— 端口 25/587 默认未加密
  • IMAP(读取邮件)— 端口 143 默认未加密
  • POP3(读取邮件)— 端口 110 默认未加密

TLS 加密这些连接的方式与 HTTPS 加密 Web 流量相同。现代邮件客户端期望 TLS 并会对未加密连接发出警告。

证书设置

你可以将 GetHTTPS 生成的同一套证书文件同时用于 Web 服务器和邮件服务器——只要证书覆盖了邮件服务器使用的主机名(如 mail.example.com)。

获取覆盖邮件主机名的证书:

  1. 在 GetHTTPS 中,添加 mail.example.com(或 MX 记录指向的任何主机名)
  2. 你可以将它与 Web 域名一起包含:example.com + www.example.com + mail.example.com
  3. 下载文件:fullchain.pemprivkey.pem

Postfix (SMTP)

编辑 /etc/postfix/main.cf

# TLS for outbound mail (sending)
smtp_tls_security_level = may
smtp_tls_loglevel = 1

# TLS for inbound mail (receiving) — STARTTLS on port 25/587
smtpd_tls_cert_file = /etc/ssl/gethttps/fullchain.pem
smtpd_tls_key_file = /etc/ssl/gethttps/privkey.pem
smtpd_tls_security_level = may
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_loglevel = 1

对于 submission(端口 587),编辑 /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

重新加载:sudo systemctl reload postfix

Dovecot (IMAP/POP3)

编辑 /etc/dovecot/conf.d/10-ssl.conf

ssl = required
ssl_cert = </etc/ssl/gethttps/fullchain.pem
ssl_key = </etc/ssl/gethttps/privkey.pem
ssl_min_protocol = TLSv1.2
ssl_prefer_server_ciphers = no

注意文件路径前的 <——Dovecot 使用此语法来内联读取文件内容。

重新加载:sudo systemctl reload dovecot

IMAP/POP3 端口

服务未加密STARTTLS隐式 TLS(推荐)
IMAP143143(升级)993
POP3110110(升级)995
SMTP submission587587(升级)465 (smtps)

现代邮件客户端应连接到隐式 TLS 端口(993、995、465)。在 Dovecot 和 Postfix 中同时配置这些端口和 STARTTLS 端口。

验证邮件 TLS

# Test SMTP STARTTLS
openssl s_client -connect mail.example.com:587 -starttls smtp

# Test IMAP implicit TLS
openssl s_client -connect mail.example.com:993

# Test SMTP implicit TLS (smtps)
openssl s_client -connect mail.example.com:465

查找 Verify return code: 0 (ok) 和你的证书详情。

续签

当你续签 Let’s Encrypt 证书时,替换文件并同时重新加载 Web 服务器和邮件服务器:

sudo systemctl reload nginx      # web
sudo systemctl reload postfix    # SMTP
sudo systemctl reload dovecot    # IMAP

如果使用 Certbot 配合 --deploy-hook,将邮件服务器的重新加载添加到 hook 脚本中。

常见问题

可以将同一个证书用于 Web 和邮件吗?

可以——只要证书的 SAN(Subject Alternative Name)包含邮件服务器的主机名。如果你的 MX 指向 mail.example.com,在申请证书时包含该名称。

Let’s Encrypt 适用于邮件服务器吗?

适用。Let’s Encrypt 证书是标准的 X.509 证书,可与任何支持 TLS 的服务配合使用——不仅仅是 Web 服务器。证书不关心它被用于 HTTPS、SMTP、IMAP 还是其他任何用途。

每个邮件协议都需要单独的证书吗?

不需要。一个证书可以同时用于 SMTP(Postfix)、IMAP(Dovecot)和你的 Web 服务器。将所有服务指向相同的 fullchain.pemprivkey.pem

Microsoft Exchange 怎么处理?

Exchange 使用 PFX/PKCS#12 格式。将你的 PEM 文件转换为 PFX,然后通过 Exchange Admin Center → Servers → Certificates → Import 导入。过程类似于 IIS 证书安装

相关文章

快速开始 2026-05-08
如何获取免费 SSL 证书(分步指南)
5 分钟从 Let's Encrypt 获取免费 SSL 证书 — 无需安装软件、无需注册账号。涵盖 4 种方法、两种验证方式、6 个平台的安装教程和故障排除。
部署 2026-05-08
如何在 Nginx 上安装 SSL 证书
在 Nginx 上安装 SSL 证书的分步指南。涵盖文件上传、完整 server 块配置、TLS 最佳实践、HTTP/2、HSTS、重定向设置、测试以及 6 个常见错误的排查方法。
SSL 与证书 2026-05-07
SSL 证书格式:PEM、PFX、DER 详解
理解 PEM、PFX/PKCS#12 和 DER 证书格式。了解你的服务器需要哪种格式,以及如何使用 OpenSSL 在它们之间转换。
在浏览器中获取免费 SSL 证书
无需安装,无需账号。私钥始终留在你的设备上。
获取证书