检查

STARTTLS 检查

检查邮件服务器等“先明文、再用 STARTTLS 升级”的服务的证书和 TLS 配置。

填 MX 记录指向的主机名。25 端口用 STARTTLS;465、993、995 一连上就是 TLS。

最后核实

STARTTLS 检查用来测试先明文连接、再用 STARTTLS 命令切换到 TLS 的服务,最常见的是邮件服务器,也包括 FTP、XMPP 和 PostgreSQL。选好协议、填主机名、点 检查 SSL,结果页的内容和 SSL 证书检查一样:证书、证书链、协议版本一应俱全。

怎么用

  1. 选择协议,端口会自动填好(SMTP 25、邮件提交 587、IMAP 143、POP3 110、FTP 21、XMPP 5222、PostgreSQL 5432),也可以改。
  2. 填服务器主机名。查收信服务器时,先查 MX 记录(dig MX example.com,或在阿里云解析、DNSPod 控制台里看),测 MX 指向的主机,而不是裸域名。
  3. 隐式 TLS 端口选 SMTPS 465、IMAPS 993 或 POP3S 995,这些一连上就是 TLS,不用 STARTTLS。

本地用 OpenSSL 测试同样的内容:

openssl s_client -connect mail.example.com:587 -starttls smtp -servername mail.example.com </dev/null

STARTTLS 和隐式 TLS

STARTTLS 是客户端先发几行明文,双方再把同一个连接升级为 TLS;隐式 TLS 是一连上就开始 TLS 握手。RFC 8314(2018 年)建议邮件客户端优先用 465 和 993/995 的隐式 TLS;服务器之间的 25 端口始终是 STARTTLS。

常见问题

  • 证书域名不匹配:证书只有 example.com,但 MX 主机是 mail.example.com。申请证书时把 MX 主机名加进 SAN。
  • 缺中间证书:很多邮件软件只读一个证书文件,要配置完整证书链(Postfix 用 smtpd_tls_chain_files,Dovecot 的 ssl_cert 指向 fullchain)。
  • 还开着旧协议:邮件服务器上 TLS 1.0/1.1 很常见,TLS 配置生成器里有 Postfix 和 Dovecot 的配置。
  • DANE:如果域名发布了 TLSA 记录,证书必须与之匹配,换私钥前先用 TLSA 生成器更新记录。

常见问题

邮件服务器该测哪个端口?

25 是服务器之间投递邮件用的(别人给你发信时连这个),587 是客户端用 STARTTLS 提交邮件,465 是客户端用隐式 TLS 提交,993/995 是 IMAPS/POP3S 收信。

25 端口连接超时是怎么回事?

通常是防火墙或安全组没放行 25 端口、邮件服务没监听在这个地址,或者填的不是 MX 记录里的主机名。云服务器还要检查安全组是否放行了 25 端口的入方向。

邮件服务器需要公开信任的证书吗?

587/465 提交和 IMAP/POP3 收信需要,邮件客户端会像浏览器一样校验证书。服务器之间的 25 端口,大多数发件方在没有 DANE 或 MTA-STS 时不强制校验,但仍然强烈建议用有效证书。

资料来源

  1. RFC 3207: SMTP STARTTLS
  2. RFC 8314: 邮件隐式 TLS
  3. RFC 7672: SMTP DANE