跳至内容

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.com

25 端口要求

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 作为全量拒绝策略,以防止地址采集。