手工测试邮件协议
邮件协议都是纯文本行协议,最可靠的排障方式就是自己开一条会话,逐条敲命令看真实应答:客户的图形客户端做了什么、服务器拒绝了哪一步,一眼就能看出来,比在界面上反复点菜单快得多。命令行的 openssl s_client 或 nc 加上对应端口即可,TLS 端口连接即加密,明文端口需要先发 STARTTLS。
基本信息
| IMAPS | TCP 993,连接即 TLS |
|---|---|
| POP3S | TCP 995,连接即 TLS |
| SMTP 提交 | TCP 587 配合 STARTTLS,或 465 隐式 TLS |
| SMTP 传统 | TCP 25,多用于服务器间投递 |
| 常用工具 | openssl s_client、nc、swaks |
| 凭据要求 | 外部客户端通常只能用应用专用密码 |
各协议关键命令
| 协议 | 命令 | 作用 |
|---|---|---|
| IMAP | a1 LOGIN 用户 密码 | 登录 |
| IMAP | a2 LIST "" * | 列出邮箱文件夹 |
| IMAP | a3 SELECT INBOX | 选中收件箱 |
| IMAP | a4 FETCH 1 (FLAGS) | 查看第一封的标记 |
| POP3 | STAT 与 RETR 1 | 统计与取信 |
| SMTP | EHLO、AUTH、MAIL FROM | 握手、认证、声明发件人 |
IMAPS 手工会话
IMAPS 手工会话
openssl s_client -connect imap.example.com:993 -quiet
a1 LOGIN user@example.com 应用密码
a2 LIST "" *
a3 SELECT INBOX
a4 FETCH 1 (FLAGS BODY.PEEK[HEADER.FIELDS (SUBJECT)])
a5 LOGOUTPOP3S 与 SMTP 提交
POP3S 与 SMTP 提交
openssl s_client -connect pop3.example.com:995 -quiet
USER alice
PASS 应用密码
STAT
QUIT
openssl s_client -starttls smtp -connect smtp.example.com:587 -crlf -quiet
EHLO test.example.com
AUTH LOGIN典型使用场景
- 确认服务器到底支持哪些能力:EHLO 的应答直接列出 AUTH 机制与大小限制
- 区分「密码错」「被策略拒」「端口不通」三类问题,客户端往往只给一句模糊提示
- 验证应用专用密码是否生效,排除客户端缓存旧凭证的干扰
- 检查 TLS 协商与证书链,确认客户端报的证书错误是否真实存在
- 核对邮箱容量与文件夹结构,定位客户端同步异常
手工会话会把凭据留在终端历史里:请使用应用专用密码而非主密码,测试结束后清理 shell 历史。共享屏幕或录屏排障时,注意先清屏再输入凭据。
应答码读法:SMTP 里 250 表示命令被接受、535 表示认证失败、550 表示策略拒绝;IMAP 里 OK 是成功、NO 是失败、BAD 是命令写错。把服务器返回的原文完整记下来再对照,能快速区分认证问题与命令格式问题,结论也可以直接写进工单。测试结束用 QUIT 或 LOGOUT 正常退出,别让会话挂在服务器上白占连接数。端口与加密方式要成对记忆:993 与 995 是连接即 TLS,587 才需要 STARTTLS。