首页/网络/协议速查/手工测试邮件协议

手工测试邮件协议

线上排障最可靠的手段:直接用 openssl/nc 开一条会话,逐条敲命令看真实应答,比在任何客户端里点菜单都快。

协议速查网络更新于 2026-10-13

手工测试邮件协议

邮件协议都是纯文本行协议,最可靠的排障方式就是自己开一条会话,逐条敲命令看真实应答:客户的图形客户端做了什么、服务器拒绝了哪一步,一眼就能看出来,比在界面上反复点菜单快得多。命令行的 openssl s_client 或 nc 加上对应端口即可,TLS 端口连接即加密,明文端口需要先发 STARTTLS。

基本信息

IMAPSTCP 993,连接即 TLS
POP3STCP 995,连接即 TLS
SMTP 提交TCP 587 配合 STARTTLS,或 465 隐式 TLS
SMTP 传统TCP 25,多用于服务器间投递
常用工具openssl s_client、nc、swaks
凭据要求外部客户端通常只能用应用专用密码

各协议关键命令

协议命令作用
IMAPa1 LOGIN 用户 密码登录
IMAPa2 LIST "" *列出邮箱文件夹
IMAPa3 SELECT INBOX选中收件箱
IMAPa4 FETCH 1 (FLAGS)查看第一封的标记
POP3STAT 与 RETR 1统计与取信
SMTPEHLO、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 LOGOUT

POP3S 与 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。

易错点

  • 用 telnet 连 993 或 995 会直接卡死:这两个端口连接即 TLS,必须用 openssl s_client
  • SMTP 明文会话忘记加 -crlf,交互时回车不被正确识别,表现为命令无响应
  • 在生产会话里用主账号密码做测试,事后忘记清理历史与凭据
  • 只测登录成功就下结论,没有实际发一封信验证投递链路

数据来源与参考

  • RFC 8314 §3(端口与 TLS 建议)
  • RFC 5321

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌