# STARTTLS 检查：测试邮件服务器 SMTP/IMAP 的 TLS

> 检查 SMTP 25/587、IMAP 143、POP3 110、FTP、XMPP、PostgreSQL 的 STARTTLS 证书和协议，也支持 465/993/995。

Source: https://ssl.sh/zh/tools/starttls-checker/
Last updated: 2026-11-10

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

STARTTLS 检查用来测试先明文连接、再用 `STARTTLS` 命令切换到 TLS 的服务，最常见的是邮件服务器，也包括 FTP、XMPP 和 PostgreSQL。选好协议、填主机名、点 **检查 SSL**，结果页的内容和 [SSL 证书检查](https://ssl.sh/zh/tools/ssl-checker/)一样：证书、证书链、协议版本一应俱全。

## 怎么用

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 测试同样的内容：

```bash
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 配置生成器](https://ssl.sh/zh/tools/tls-config-generator/)里有 Postfix 和 Dovecot 的配置。
- **DANE**：如果域名发布了 TLSA 记录，证书必须与之匹配，换私钥前先用 [TLSA 生成器](https://ssl.sh/zh/tools/tlsa-generator/)更新记录。


## FAQ

**邮件服务器该测哪个端口？**

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

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

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

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

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