邮件安全检测 API

检测域名的邮件防伪造配置:SPF、DMARC、DKIM(常见选择器探测)与 MX 记录,给出评分、等级和中文修复建议

数据来源:公共 DNS(Cloudflare / 阿里)

返回统一的 JSON 格式 { code, message, cached, stale, updatedAt, data },支持跨域,免注册每天可免费调用 100 次,注册后每天 10000 次。

检测 SPF / DMARC / DKIM / MX 配置并评分

GET /api/email/security

请求参数

  • domain(必填):域名(支持中文域名);也可以直接传邮箱地址,取 @ 后面的部分,示例 github.com
  • selector:DKIM 选择器(邮件头 DKIM-Signature 中 s= 的值);不传时依次尝试 default、selector1、google 等常见选择器,示例 selector1

返回字段

  • domain(string):检测的域名(ASCII 形式,中文域名已转为 punycode)
  • score(number):评分 0~100:SPF 最多 45 分 + DMARC 最多 55 分(DKIM 无法可靠探测,不计分)
  • grade(string):等级:A(≥90)/ B(≥75)/ C(≥50)/ D(≥25)/ F
  • mx(object):MX 记录(收信服务器)
  • mx.found(boolean):是否有可用的 MX 记录(Null MX 不算)
  • mx.nullMx(boolean):是否为 Null MX(RFC 7505,明确声明该域名不收邮件)
  • mx.records(array):MX 记录,按优先级从高到低(数字从小到大),最多 10 条
  • mx.records[].exchange(string):邮件交换服务器域名;Null MX 为 "."
  • mx.records[].priority(number):优先级,数字越小越优先
  • mx.error(string|null):MX 查询出错时的原因(如 DNS 服务器响应超时);正常或没有记录时为 null
  • spf(object):SPF(发信服务器白名单)检测结果
  • spf.found(boolean):是否有 v=spf1 开头的 TXT 记录
  • spf.record(string|null):SPF 记录原文(多条时为第一条);没有时为 null
  • spf.all(string|null):结尾的 all 机制:-all / ~all / ?all / +all;没有 all 时为 null
  • spf.policy(string|null):对未列出服务器的处理:fail 拒绝 / softfail 软拒绝 / neutral 中立 / pass 放行 / redirect 由 redirect 指向的域名决定;没有 SPF 或没有 all 时为 null
  • spf.lookups(number):需要额外 DNS 查询的机制数(include / a / mx / ptr / exists / redirect,只算本条记录),超过 10 会导致校验失败
  • spf.issues(array):SPF 存在的问题(中文说明),没有问题时为空数组
  • dmarc(object):DMARC(伪造邮件处理策略)检测结果,查询 _dmarc.<域名> 的 TXT 记录
  • dmarc.found(boolean):是否有 v=DMARC1 记录
  • dmarc.record(string|null):DMARC 记录原文;没有时为 null
  • dmarc.policy(string|null):p= 策略:none 仅监控 / quarantine 隔离 / reject 拒收;没有记录或取值无效时为 null
  • dmarc.subdomainPolicy(string|null):sp= 子域名策略;未设置时为 null(沿用 p=)
  • dmarc.percent(number|null):pct= 策略生效比例(0~100,未设置为 100);没有记录时为 null
  • dmarc.reportTo(string|null):rua= 汇总报告接收地址原文(如 mailto:dmarc@example.com);未设置时为 null
  • dmarc.issues(array):DMARC 存在的问题(中文说明),没有问题时为空数组
  • dkim(object):DKIM(邮件签名公钥)探测结果
  • dkim.found(boolean):是否在尝试的选择器中找到了 DKIM 记录
  • dkim.selectors(array):找到 DKIM 记录的选择器
  • dkim.checked(array):尝试过的选择器(传了 selector 时只有它)
  • dkim.note(string|null):没找到时的说明;找到时为 null