marclou/mailcheap · 上手攻略
- 仓库:marclou/mailcheap
- 链接:https://github.com/marclou/mailcheap
- 分类:agent / 自托管 Newsletter 平台 / 邮件 SaaS
- 作者:spark
- 更新:2026-10-15
§0 自检(三证 checklist)
- ✅ GitHub URL 已 fetch:仓库 README(2026-10-14 抓取)含完整功能描述、组件清单、Vercel 部署按钮、依赖服务表。
- ⚠️ 顶会/学术 venue:本仓库是 AGPL-3.0 应用层产品,无 anchor 学术 venue。
- ✅ README 子模块 anchor 已列:
/api/v1REST API、/mcpMCP server、/docsSwagger UI、/llms.txt、截图目录docs/screenshots/、MailCheap Cloud (MAILCHEAP_CLOUD=true)开关位。
关键事实 verbatim 来自 README:AGPL-3.0、Self-hosted 价格 = "Free, plus what your provider charges per email"、Cloud 起步 $19/month、bounce 暂停阈值 2% / 5 个硬退、0.08% / 2 个投诉、Cloud 首 30 天渐进 24→16→12→8 小时窗口、QStash "One message sends 50 emails" 等。setup 时长 "about an hour" 也是 README 原话。版本号、QStash 当前定价、Resend 价格未独立核实,凡涉成本数字均以官方账单为准。
1. 它是什么?解决什么问题?
MailCheap 是开源的 newsletter 应用,定位:"the affordable newsletter for the agentic era"——一次性给你写邮件、列表、signup、统计、公开 archive、AI 友好的 REST + MCP 接口。整套就是一个 Next.js 应用。
它要解决两难:
- Substack / Beehiiv / ConvertKit 这种平台,按订阅数每月收钱——10,000 读者 4 期/月 = 40,000 封,MailCheap + SES 约 $4~$6。
- 自己拼开源,要从 IMAP、IP 信誉、unsubscribe link、bounce/complaint 反馈一个个填坑——MailCheap 把这些都内置好了,直接对接 Amazon SES 或 PostShiba 就完事。
核心差异化:"AI agent 友好"——所有 dashboard 行为都同时暴露为 REST API 和 MCP server,自动化一条龙。
2. 快速部署
2.1 一键 Vercel(README 主推)
仓库 README 给了官方 Vercel 部署按钮:
https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fmarclou%2Fmailcheap
&project-name=mailcheap
&repository-name=mailcheap
&env=MONGODB_URI,BETTER_AUTH_SECRET,ADMIN_EMAILS,EMAIL_FROM
需要 4 个环境变量:
| 变量 | 含义 | 示例 / 生成方式 |
|---|---|---|
MONGODB_URI |
MongoDB 连接串 | mongodb+srv://user:pwd@cluster0.xxxx.mongodb.net/mailcheap?retryWrites=true(库名加在 ? 之前) |
BETTER_AUTH_SECRET |
签名密钥,≥32 字符 | openssl rand -base64 48 |
ADMIN_EMAILS |
允许登录并进 /admin 的邮箱 |
你的邮箱 |
EMAIL_FROM |
验证码 / 通知邮件的发件人 | MailCheap <hi@yourdomain.com>,域名必须先在 Resend / SES / PostShiba 验证 |
可选变量(影响具体功能):
RESEND_API_KEY— 让验证码走 Resend,最快搞定登录邮件EMAIL_PROVIDER+ SES 或 PostShiba 凭据 — 真正给读者发 newsletterQSTASH_TOKEN— Upstash QStash 后台分批发送S3/CloudFront或BLOB_READ_WRITE_TOKEN(Vercel Blob)— 编辑器图床UPSTASH_REDIS_REST_*— 多实例共享 rate limit
⚠️ README 原话:短于 32 字符的
BETTER_AUTH_SECRET直接拒启动,日志会说明原因。
2.2 任意 Node.js 主机
npm ci && npm run build && npm start
环境变量同上,跑在 HTTPS 后。健康检查:GET /api/health 返回 200,否则 503 + 修复提示。
2.3 自建预计耗时
README 原话:"Plan for about an hour, most of it waiting for DNS and for your provider to approve production sending." 大头是等 SES 批生产权限(通常 1 天内),DNS 解析传播 5~30 分钟。
3. 核心用法
3.1 编辑器(Editor)
- 实时邮件预览,slash 命令 + 块(boxes)
- 图片:拖入 / 粘贴 / 从历史图床选;支持 Markdown + 原始 HTML
- 每发送前自动检查:subject、preview text、unsubscribe 链接、Gmail 100 KB clip 阈值、邮政地址(法律要求)、域名已验证
- 测试邮件、调度、QStash 分批发送
阶梯发送(README 重点功能):首发给从没发过的联系人群时自动分阶——先发 5% 切片,3 小时后根据退信/投诉情况发剩下:
"A first send to contacts never mailed goes out in steps by itself: a 5% slice, then the rest 3 hours later if its bounces and complaints stay low."
Cloud 模式额外对新账号前 30 天有 24 → 16 → 12 → 8 小时 的渐进节奏。
3.2 增长(列表管理)
- 公开 archive 内嵌 signup 表单 + signup API(用 API key)
- 默认 confirmed opt-in + welcome 邮件
- CSV 导入清洗:跳过无效、拼错(
gmial.com)、垃圾陷阱、role 邮箱、临时邮箱、重复、被压制的地址,并记录用户同意 - signup 表单拒绝拼错的邮箱,并给建议
- 手动加联系人(已确认同意前提下)立即入列表,无需 confirm
- 全套默认 rate limit:signup / signin / unsubscribe / slug 修改 / API / dashboard 测试邮件 / 发送 / 导入 / 上传。账号的 API key / 接的 App / dashboard 共用配额,多 key 不提升额度——避免被多个 key 绕过。
3.3 健康度(发送防护)
暂停阈值(README verbatim):
| 触发条件 | 阈值 |
|---|---|
| 硬退信率 | > 2%(至少 5 封) |
| 投诉率 | > 0.08%(至少 2 个) |
| 滥用 block | send / 首发送切片 / 过去 7 天 > 5%(≥10)硬退或 0.3%(≥3)投诉 / 垃圾陷阱命中 / 邮件服务商封号 |
单次投诉不会停任何东西——避免偶发投诉误杀账号。被 block 时所有发送停止,包括 welcome 邮件,等 admin 解封。
- One-click unsubscribe(RFC 8058
List-Unsubscribeheader)+ 签名 unsubscribe 页面 - 自动列表清理(默认开):连续多次不读的读者会收到一封"还想继续吗?",不回就停发
- 自有域上的打开 / 点击追踪,过滤 link scanner
3.4 公开 archive + 统计
- 公开 issue 页、作者页、分享图、sitemap,archive 可挂在自己的子域
- 总览:订阅者趋势、每小时发送量、投递 / 打开 / 点击 / 退信 / 投诉率
- 按 邮箱服务商(Gmail / Outlook / Yahoo / iCloud / ...)拆分的 campaign 报告
- 域名页:每个域的 DKIM / return-path 状态 + 要加的 DNS 记录
3.5 账号
- 邮箱验证码登录 / Google 登录;自托管只允许白名单邮箱
- 每人 1 个账号,最多 3 个 newsletter,共享账号的 domain 和 API key
- Admin 看所有账号,可 block / unblock,Cloud 模式可送免费 plan
- 账号删除:立即停服,30 天后真删数据,期间登录可恢复
3.6 给 Agent 用的接口
| 入口 | 说明 |
|---|---|
GET /api/v1/... |
REST API,跟 dashboard 用同一套 API key、同样的发送前校验 |
/mcp |
MCP server(同套凭据) |
/docs |
Swagger UI |
/llms.txt |
给你 LLM / agent 读的精简文档 |
这是 MailCheap 跟同类最大的差异——一个 newsletter 平台,居然原生暴露 MCP。
4. 典型适用场景
- 个人 / 小团队 newsletter:不想被 Substack 抽成 10%,有 SES 账号能直接搞定
- 公司内刊 / 产品更新邮件:域名可控、API/MCP 可集成到产品里
- AI 自动化营销:agent 通过 MCP 直接撰写 + 调度 + 发送 newsletter
- 多刊团队:一个账号最多 3 个 newsletter,适合产品矩阵
- 隐私 / 合规自托管:全部数据在自己 MongoDB,无第三方平台
5. 坑与注意
- "No support" 是产品定位,不是 bug。README 第一屏大字声明:"Issues are off, and setup questions go unanswered." 选型前必须接受"自己读文档 + 自己 fork"。
- AGPL-3.0 协议:对外提供服务的衍生版本必须开源——SaaS 改造前先看 LICENSE,商业 fork 涉及法务。
- 默认发送被关——首次部署后,必须接着配 SES 或 PostShiba + DNS + 等批生产权限,不然连你自己都发不出去。
- Vercel 没有固定 IP:MongoDB Atlas 的 Network Access 必须 allow
0.0.0.0/0,否则连不上;这跟"静态 IP 安全白名单"思路不兼容。 - 没 Redis = rate limit 不跨实例共享:无 Redis 时,serverless 部署每次冷启都重置计数。接 signup 表单到繁忙页面前必须先加 Upstash Redis。
- 没 S3 / Blob = 不能上传图;HTML / Markdown 邮件引用外链图依然能用。
- PostShiba 目前仅邀请制,自托管用户首选还是 SES;SES 沙盒首日仅 200 封 + 必须验证收件人,要生产发请早申请批生产权限。
- API key 不放大配额:这是反爬虫 / 反滥用的设计,但自动化集成方需要预估 rate,提前申请扩额。
APP_URL影响所有邮件里的链接(直到 newsletter 自己的 archive 子域生效),第一次发送前必须设对,改一次就废一批邮件。- AWS SES 推荐单租户账号:SES reputation / 限额是 per AWS account,别跟其它业务共用。
- Cloud 模式部署 ≠ 自托管:虽然跑同一份代码,但
MAILCHEAP_CLOUD=true会启用 Stripe 计费 / 计划 / 我们自己的发件账号——自己跑留 false,别打开。 - marketing site 不开源:README 明示landing / pricing / legal 页不在开源里,别 fork 后改这些页(就是 README 公开警告的边界)。
- 删除账号 30 天后真删——这是 GDPR / privacy 设计,但用户没看清就删会救不回来,运营流程要写进 onboarding。
- Mailcheap.ai 的 SLA、定价细则 README 没列,打算用 Cloud 必须去官网单独查。
6. 与同类对比
| 平台 | 自托管 | 价格模型 | Agent / API | 多刊 | 退信防护 | 协议 |
|---|---|---|---|---|---|---|
| MailCheap | ✅ | 自托管 = 仅付 SES / PostShiba 发件成本;Cloud $19+/月 | ✅ REST + MCP(原生) | 1 账号 3 刊 | 内置 2% / 0.08% 自动暂停 | AGPL-3.0 |
| Substack | ❌ | 抽成 10% | ❌ | 1 | 基础 | 闭源 |
| Beehiiv | ❌ | 阶梯订阅 | 有限 API | 多 | 基础 | 闭源 |
| ConvertKit | ❌ | 按订阅 | Zapier 集成 | 多 | 基础 | 闭源 |
| Ghost(自托管 newsletter) | ✅ | 自己付 SES | REST / Webhooks | 多 | 需配置 | MIT |
| Listmonk | ✅ | 自己付 SMTP | REST | 多 | 基础 + 自配 | AGPL-3.0 |
MailCheap 独特定位:原生 MCP server + 内置阶梯发送 + bounce/complaint 自动暂停。对 AI 工作流友好的程度在 newsletter 圈独一档。
7. 一句话推荐
你的 newsletter 要走 AI 自动化 + 自托管 + 不想被平台抽成,接 SES 就能 5 分钟上线——MailCheap 是当下唯一原生 MCP + 内置发件防护的选项;但必须接受"No support / 自己读文档 / AGPL-3.0"这三个边界。
8. 资源链接
- 仓库:https://github.com/marclou/mailcheap
- Cloud 版:https://mailcheap.ai
- Vercel 一键部署:README 内的
vercel.com/new/clone?...链接 - 自托管文档:README 主体(无独立 docs 站)
- REST API:
/api/v1(同仓库) - MCP server:
/mcp(同仓库) - 截图:
docs/screenshots/(overview / editor / report / contacts / archive / issue) - 配套服务:MongoDB Atlas、AWS SES、PostShiba、Upstash QStash、Upstash Redis、Vercel Blob、AWS S3 + CloudFront、Resend