SMTP 验证
verify 命令连接目标域名的 MX 服务器,通过 SMTP RCPT TO 检查来判断指定邮箱是否存在。
工作原理
1. 解析目标域名的 MX 记录
2. 连接到主 MX 服务器的 25 端口
3. 发送 EHLO、MAIL FROM 和 RCPT TO 命令
4. 解析服务器响应码:
- 2xx:邮箱存在(已接受)
- 4xx:临时性失败(灰名单、频率限制)
- 5xx:邮箱被拒绝(不存在或策略封锁)基本用法
smtp-probe verify user@example.com25 端口要求
SMTP 验证需要出站 TCP 25 端口的访问权限。大多数云厂商(AWS、GCP、Azure、阿里云)默认封锁此端口。你需要申请 25 端口解封,或在允许出站 25 端口的基础设施上运行 smtp-probe。
check 命令(基于 DNS)无需 25 端口即可正常工作。
绑定 IP
从指定 IP 地址发出 SMTP 连接(适用于服务器有多个出站 IP 的场景):
smtp-probe verify user@example.com --bind-ip 1.2.3.4超时设置
调整连接和响应的超时时间:
smtp-probe verify user@example.com --timeout 30s结合一次性邮箱检测
若域名属于已知的一次性邮箱服务商,则完全跳过 SMTP 握手:
smtp-probe verify user@mailinator.com --disposable结合 IP 池
使用 IP 池实现自动故障转移 — 当一个 IP 被封禁时,自动切换到下一个健康 IP:
smtp-probe verify user@example.com --pool响应码说明
| 码段 | 含义 |
|---|---|
2xx | 邮箱存在(已接受) |
4xx | 临时性拒绝(稍后重试) |
5xx | 永久性拒绝(不存在或策略封锁) |
5xx 响应并不总是意味着邮箱不存在。部分服务商会返回 550 作为全量拒绝策略,以防止地址采集。