mcpField
E
email-deliverability-audit

email-deliverability-audit

github.com/growthenginenowoslawski营销与增长79068 次安装3 周前更新
代码仓库

关于 email-deliverability-audit

email-deliverability-audit 是用于审查冷邮件发送状况的技能,面向管理 Smartlead 邮箱和营销活动的团队。它汇总 DNS 身份验证、邮箱健康度、发送与回复指标,并按样本量门槛标记问题。

主要功能

  1. 01检查 SPF、DKIM 和 DMARC
  2. 02汇总邮箱状态与发送容量
  3. 03分析回复率和退信率
  4. 04可选运行垃圾邮件投递测试
  5. 05按样本门槛标记异常

适用场景

  1. 01回复率下降时排查投递问题
  2. 02退信率升高时检查域名与名单
  3. 03扩大营销活动前检查发送基础设施
  4. 04定期审计 Smartlead 账户

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/growthenginenowoslawski/coldoutboundskills --skill email-deliverability-audit

安装后在 Claude Code 中输入/email-deliverability-audit确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
dns-records.md
scripts/
audit-inboxes.ts
audit-performance.ts
check-domain-auth.ts
run-spam-test.ts

详细介绍

电子邮件送达率审计

如果你的正面回复率正在下降,却不知道原因,请从这里开始。 大多数时候,问题出在送达率上——你的邮件没有进入收件箱。此技能会告诉你出了什么问题。

检查内容

层面检查内容检查方式
DNS 身份验证每个发信域名是否配置了 SPF、DKIM、DMARCdig 命令
收件箱健康状况预热状态、信誉、拦截、连接失败Smartlead email-accounts API
发送量健康状况每日发送趋势、容量利用率Smartlead analytics
每个收件箱的发送量和回复率回溯期内的发送数、回复数、回复率 %Smartlead campaign analytics
退信率过去 30 天内每个收件箱和域名的退信率Smartlead campaign analytics
垃圾邮件投放情况通过 Smartlead Smart Delivery 进行真实的收件箱与垃圾邮件测试可选

1% 规则——以及决定是否适用该规则的最低门槛

健康的域名在发送 200 封邮件后,回复率应达到 1% 或更高。 在有参考意义的样本中低于 1%,就说明出了问题;如果问题持续存在,该域名就会被停用。

1% 规则是一个数字:在此处触发域名标记的同一个 1%,也是在 /inbox-lifecycle-manager 中将其停用的界线。“标记”和“停用”之间的区别,不在于设置了一个更宽松的第二阈值,而在于最低门槛。低于最低门槛时,结论是“目前还无法判断”——这是合理的结果,而非失败。

判断计入判断前的最低门槛
回复率统计周期内发送 200 封
退信率发送 50 封
退信类型(属于哪个类别)该域名有30 封已分类退信
任何停用决定域名年龄达到30 天;年龄未知则视为较新
投放测试每次测试使用 100-300 个发件人

将发送 14 封后的 0.00% reply 报告为失败,或判定一个尚未完成预热的三周龄域名有问题,都会导致健康域名被误杀。

回复率(发送数 ≥200)判定
≥ 1.5%确实表现良好。不必处理。
1.0 - 1.5%健康。符合规则。
< 1.0%已受损。交由 /inbox-lifecycle-manager 处理——但前提是同时满足 200 封发送和 30 天的最低门槛。
发送数 ≥150,回复数为 0结论明确。完全没有回复所需的样本量低于回复率低但非零的情况。

域名回复率低于界线时,可能的原因如下(审计会尝试找出具体原因):

  • 邮件进入了垃圾邮件文件夹——运行垃圾邮件投放测试
  • 域名信誉受损——检查 DMARC 报告和退信代码
  • 邮件文案有问题——重新运行 /spam-word-checker;通过对照发件集群的投放测试确认
  • 邮件列表不活跃或不符合 ICP——检查退信率;如果 >3%,问题在列表,而非域名
  • 收件箱预热不足——检查预热状态和域名年龄
域名与文案隔离测试

投放率低本身无法说明是域名受损还是文案有问题。使用已知良好的对照发件集群发送相同文案:

你的发件集群对照发件集群结论
< 100%~100%域名问题。 你的发信基础设施有问题。
< 100%< 100%文案问题。 在更换任何域名之前,先重写文案。
≥ 85%≥ 85%两者都不是。基础设施正常——问题在于目标受众或产品方案。
对照集群无法测试—假设是文案问题。修正文案成本更低,而且可以撤销。

使用时机

  • 回复率环比下降 >30% → 运行完整审计
  • 退信率飙升至 2% 以上 → 检查身份验证和垃圾邮件投放情况
  • 扩大营销活动规模之前(确保基础设施已准备就绪)
  • 作为常规维护,每月运行一次
  • 接手一个并非由你设置的 Smartlead 账号时

输入

  • SMARTLEAD_API_KEY(环境变量)
  • 可选:限定审计范围
    • --client-id=X(用于子客户端)
    • --campaign-id=X(仅审计一个营销活动的收件箱)
    • --domain=example.com(仅审计一个域名)
    • --tag=active(仅审计标记为 active 的收件箱)

步骤

1. 拉取收件箱清单
npx tsx scripts/audit-inboxes.ts --all --out=/tmp/audit/inboxes.csv

每个收件箱的输出:id、email、domain、warmup_status、reputation、max_warmup/day、sent_today、smtp_ok、imap_ok、is_blocked、tags。

2. 检查域名身份验证
npx tsx scripts/check-domain-auth.ts --from-csv=/tmp/audit/inboxes.csv --out=/tmp/audit/auth.csv

针对每个唯一域名,运行:

dig TXT <domain> +short                             # SPF
dig TXT _dmarc.<domain> +short                      # DMARC

# DKIM has NO single selector. Present if ANY of these resolves:
dig TXT   google._domainkey.<domain>    +short      # Google / Gmail-backed — the common one
dig CNAME selector1._domainkey.<domain> +short      # Microsoft 365 — a CNAME, TXT returns nothing
dig CNAME selector2._domainkey.<domain> +short      # Microsoft 365, second key
dig TXT   default._domainkey.<domain>   +short      # generic fallback, frequently empty

⛔ 切勿只检查 default._domainkey。 在大多数实际发信系统中,它都是空的,而只检查 default 会将每个域名都报告为“缺少 DKIM”——这会把真正已被封禁的域名送去“修复 DNS”,并浪费一周时间重新发布已经存在的记录。脚本会尝试全部四项,并报告成功解析的是哪一项。

输出:domain、spf_present、spf_strict、dkim_present、dmarc_present、dmarc_policy(none/quarantine/reject)。

3. 拉取每个营销活动/收件箱的发送、回复和退信指标
npx tsx scripts/audit-performance.ts --days=30 --out=/tmp/audit/performance.csv

遍历所有活跃营销活动,拉取过去 30 天内每个收件箱的分析数据。输出列:inbox_id, email, domain, type, tags, sent, replies, bounces, reply_rate_pct, bounce_rate_pct, flag_low_reply, flag_high_bounce。

自动标记:

  • 如果 sent ≥200 且 reply_rate_pct < 1.0,则 flag_low_reply = TRUE(1% 规则)
  • 如果 sent ≥50 且 bounce_rate_pct > 3.0,则 flag_high_bounce = TRUE
4.(可选)运行 Smart Delivery 垃圾邮件投递测试
npx tsx scripts/run-spam-test.ts --campaign-id=12345 --senders=100 --out=/tmp/audit/spam-test.json

这会通过 Smartlead 的 Smart Delivery API 创建真实的收件箱投递测试:

  • 使用仅有的可用服务商池:G Suite + Office365(provider_ids 20, 21)
  • 向约 200 个种子邮箱发送邮件,使用你的 100 个发件人
  • 等待测试完成(5-20 分钟)
  • 拉取:providerwise、spam-filter-details、dkim-details、spf-details、blacklist

输出会显示邮件进入收件箱、垃圾邮件和推广内容的比例,并按你的发件人和接收方服务商分类。这才是真实情况。

5. 汇总报告

读取三个 CSV 文件(inboxes.csv、auth.csv、performance.csv),以及你运行测试时生成的垃圾邮件测试 JSON 文件,然后手动按以下格式编写报告。没有生成器脚本;汇总需要自行判断,下面的模板就是报告应采用的格式:

# Deliverability Audit — 2026-04-17

## Summary

- 80 inboxes audited across 40 domains
- 3 inboxes blocked (4% of fleet)
- 5 domains missing DKIM
- 2 domains with DMARC policy=none (no enforcement)
- Fleet performance (last 30d):
    Sent:           42,384
    Replies:          523
    Overall reply rate: 1.23% (PASS — above 1% threshold)
    Bounces:           382
    Bounce rate:      0.90% (PASS — below 2%)
- 4 inboxes failed the 1% rule (sent ≥200, reply rate <1%)
- Spam placement (test run): 83% inbox / 14% spam / 3% tabs (ACCEPTABLE but not great)

## Critical issues (fix within 24h)

1. Domain trygrowth.co has no DMARC record. Add: v=DMARC1; p=none; rua=mailto:[email protected]
2. Inbox [email protected] blocked in warmup — likely flagged by warmup network. Rotate out of campaigns.
3. 12 inboxes have 0 daily sent today despite being in active campaigns. Check campaign schedule.
4. Inbox [email protected] failed the 1% rule: 347 sent, 1 reply (0.29% reply rate). Investigate:
   - Check spam placement for this inbox
   - Compare copy vs. a sibling inbox that's passing
   - Rotate inbox out if bad reputation is confirmed

## Warnings (fix within 1 week)

- 5 domains missing DKIM record at default._domainkey
- 3 inboxes reputation dropped "fair" → "bad"
- Spam filter trigger DKIM_INVALID firing 8% of the time — likely for a subset of domains

## Action items (prioritized)

1. [HIGH] Add missing DKIM records to: trygrowth.co, othergrow.co, ...
2. [HIGH] Rotate out blocked inboxes: [email protected], [email protected], ...
3. [MED] Tighten DMARC to p=quarantine on all domains after 2 weeks of p=none observation
4. [MED] Replace 3 bad-reputation inboxes (tag them "retired", provision new)
5. [LOW] Re-run spam placement test after fixing DKIM issues
6. 执行行动项

将行动项交给相应的技能处理:

  • 缺少 DKIM / SPF → 使用 /zapmail-domain-setup-public 通过 Zapmail 重新连接域名
  • 收件箱被封禁 → 使用 /smartlead-inbox-manager 标记为“retired”,并轮换使用备用邮箱
  • 营销活动计划问题 → 检查 Smartlead 营销活动计划设置
  • 标记为不良的邮件文案 → 对营销活动文案运行 /spam-word-checker

解读数据

退信率
  • <1% — 极佳。名单状况良好。
  • 1-2% — 冷邮件营销中的正常水平。无需采取行动。
  • 2-3% — 黄色预警。检查名单质量,邮件地址可能已过时。
  • >3% — 红色预警。验证名单(MillionVerifier),考虑暂停发送。
  • >5% — 立即停止。你正在损害域名声誉。
垃圾邮件投递情况
  • >90% 进入收件箱 — 很好。继续增加发送量。
  • 85-90% 进入收件箱 — 状况良好。域名必须达到这一标准,才算合格。
  • 70-84% 进入收件箱 — 状况变差。查看 spam-filter-details,找出触发因素。
  • <70% 进入收件箱 — 红色预警,也是硬性门槛:不要将此域名关联到营销活动。暂停发送,并在继续发送前修复身份验证和文案。

使用 100-300 个发件人进行测试。较小的样本每次测试之间可能会出现两位数的波动。

DMARC 策略
  • None — 域名启用后的前 2 周可以接受。之后应收紧策略。
  • Quarantine — 长期推荐。身份验证失败的邮件会进入垃圾邮件。
  • Reject — 最严格的策略。只有在收到 30 天以上的干净 rua= 报告,并确认所有合法邮件都通过身份验证后,才使用。
预热信誉度
  • Smartlead 将信誉度显示为 0-100。越高越好。
  • ≥98% — 将备用收件箱提升到正在运行的营销活动前必须达到此水平。
  • 80-98% — 可以发送,但不要在此水平提升新备用收件箱。
  • 50-80% — 继续预热,不要用于重要邮件发送。
  • <50% — 不要从此收件箱发送邮件;参与预热的同伴收件箱看不到它发来的邮件。

⚠️ 关闭预热不代表信誉度为零,而是完全没有读数。 关闭预热的收件箱不会报告任何数据,因此无法评估。将其视为暂缓使用:不计入容量、不关联到营销活动,并报告给人工处理。不要为了显示一个数字而悄悄重新开启预热——这会篡改你试图衡量的信号。

常见根本原因

  • SPF 过于宽松 — v=spf1 +all 会将所有人列入白名单。使用 v=spf1 include:zapmail.com ~all 或类似设置。
  • 缺少 DKIM — 域名较新,尚未发布选择器。Zapmail 默认会在 default._domainkey 发布记录。
  • DMARC 对齐失败 — From 域名与 SPF/DKIM 域名不匹配。通常是回复地址配置错误或第三方发送方导致的。
  • 每个域名的收件箱过多 — Gmail 会将拥有 >3-5 个收件箱的域名标记为可疑。每个域名保持 2 个收件箱。
  • 评估的域名太新或太冷清 — 域名使用时间不足 30 天或发送量不足 200 封时,数据无法区分域名已被封禁还是只是碰上了倒霉的一周。这不是根本原因,而是缺乏证据;这也是健康域名遭到弃用最常见的原因。
  • 预热提速过快 — 一周内从每天 5 封跃升到 40 封 = 会触发标记。应在 2-4 周内逐步提升。
  • 与垃圾邮件流量共用发送 IP — Zapmail 和大多数服务提供商都使用共享 IP 池。如果其他人通过你的 IP 发送了垃圾邮件,你也会受到影响。除了等待 IP 池轮换,没有太多可做的。

接下来怎么做

如果触发了任何标记: 使用 /deliverability-incident-response → 根据触发的情况(回复率低、退信率高、收件箱被封等)进入相应的分流决策树。

如果确认域名已被封禁: 使用 /inbox-lifecycle-manager → 决定取消、提升或购买,并通过防护机制避免因取消导致发送量不足。

如果一切正常: 下周一再次运行。这项审计是 /cold-email-weekly-rhythm 中周一要完成的任务。

也可以等待: 如果你刚应用了修复,请等待 7 天后重新审计。信誉度变化传播得很慢。

相关技能

  • /smartlead-inbox-manager — 执行待办操作(轮换、重新标记、预热设置)
  • /zapmail-domain-setup-public — 在域名提供商处修复 DNS/身份验证问题
  • /spam-word-checker — 检查文案中是否包含会触发垃圾邮件过滤的短语
  • /deliverability-test-public — 更轻量地比较 SMTP、Gmail 和 Outlook 的回复/退信情况
  • /inbox-lifecycle-manager — 根据结论采取行动:取消、提升备用收件箱、规划购买

脚本

  • scripts/audit-inboxes.ts — 获取并整理收件箱清单
  • scripts/check-domain-auth.ts — 基于 dig 检查 SPF/DKIM/DMARC
  • scripts/audit-performance.ts — 从营销活动分析中获取各收件箱的发送量 / 回复数 / 退信数 / 比率(应用 1% 规则)
  • scripts/run-spam-test.ts — 创建、轮询并获取 Smart Delivery 测试结果

参考资料

  • references/dns-records.md — SPF/DKIM/DMARC 记录模板及解读指南

评论

支持 Markdown