【免费下载链接】mailcheap
Newsletters where you pay for the emails you send, not for dormant subscribers, at a fraction of the price of beehiiv and the like. Open source: self-host it, or use mailcheap.ai.
MailCheap 是一个开源的 Newsletter(邮件通讯)应用:写内容、发给订阅者、自动发布成可被搜索引擎收录的独立网站。自托管部署后,发送走你自己的Amazon SES 账号,只按实际发出的邮件付费——比 beehiiv、Substack 这类"按订阅者收费"的平台便宜得多,代码还是完整开放的。
为什么值得自己搭一套?
传统平台的痛点是:你为"睡着的"订阅者付费。而 MailCheap 的自托管模式是——
- 💸成本极低:SES 约 $0.10–0.16 / 1000 封。1 万读者 × 每月 4 期 ≈ 4 万封,一个月只要$4–6
- 🔓完全开源(AGPL-3.0):整套应用就是这个仓库,README.md 本身就是自托管指南
- 🚫没有套餐、没有上限:自托管模式下不限邮件数、不限订阅读数(每个账号最多 3 个 Newsletter)
- 🛡️送达保护内置:新域名自动预热、列表自动清理、退订/投诉超阈值自动暂停
部署前需要准备什么
| 服务 | 用途 | 费用 |
|---|---|---|
| MongoDB Atlas | 存订阅者、活动、统计 | 免费档够用 |
| Amazon SES | 实际发送邮件 | $0.10–0.16 / 1000 封 |
| Upstash QStash | 后台批量发送与定时任务 | 免费档起步 |
| Node.js 22+ 主机 | 运行应用 | Vercel 免费档即可 |
| Resend(可选) | 发送登录验证码 | 免费版够用 |
| Redis / S3 或 Blob(可选) | 跨实例限流 / 编辑器图片上传 | 免费档够用 |
所有可选配置在 .env.example 里都有逐项说明。下面按 6 步完成部署,全程约 1 小时(大部分时间在等 DNS 生效和 SES 审批)。
快速上手:本地先跑起来
本地开发只需 MongoDB(可用 Docker 起一个mongodb://127.0.0.1:27017/mailcheap)和几个核心变量:
MONGODB_URI=mongodb://127.0.0.1:27017/mailcheap BETTER_AUTH_SECRET=<openssl rand -base64 48> SUPPRESSION_HASH_KEY=<另一个随机值,同上生成> ADMIN_EMAILS=you@example.com EMAIL_FROM=MailCheap <login@example.com>git clone https://gitcode.com/gh_mirrors/mai/mailcheap && cd mailcheap npm install cp .env.example .env.local npm run dev本地跑起来时登录验证码会直接打印在服务器控制台([signin] Code for ...),开发阶段不用配置任何邮件服务。
关键一步:Amazon SES 配置详解
SES 部分建议用一个全新的 AWS 账号,因为 SES 的信誉和发送额度是按账号隔离的,别让 Newsletter 影响你其它业务的邮件。
- 申请生产访问权限:新账号默认处于沙盒模式(每天限 200 封且只能发给已验证地址)。在Account dashboard → Request production access中选择 Marketing,说明读者是主动订阅的、退订和投诉会自动抑制,AWS 通常一天内回复。
- 创建 SNS 事件主题,并切换为签名版本 2(SHA256):
aws sns set-topic-attributes \ --topic-arn <topic-arn> \ --attribute-name SignatureVersion \ --attribute-value 2然后创建 HTTPS 订阅,endpoint 填https://<你的域名>/api/webhooks/ses。应用部署完成后会自动确认订阅,送达/退信/投诉事件都会推到这里。 3.创建专用 IAM 用户:只授予 MailCheap 需要的 SES 权限(发送邮件、管理 tenant / 发信域名 / 配置集),并生成 Access Key。权限策略原文见 README.md 的 "Amazon SES" 小节。 4.添加环境变量后重新部署(完整定义见 .env.example):
SES_REGION=us-east-1 SES_ACCESS_KEY_ID=<你的 key> SES_SECRET_ACCESS_KEY=<你的 secret> SES_AWS_ACCOUNT_ID=<12 位 AWS 账号 ID> SES_SNS_TOPIC_ARN=<主题 ARN>MailCheap 会为每个账号自动创建独立的 SES tenant(独立域名、独立抑制列表、独立暂停开关),互不牵连。所有 AWS 调用都集中在 lib/ses.js 一个文件里——想换成别的邮件提供商,只需要动这一层。
💡 如果不用 Resend,登录验证码也会通过 SES 发送,那么
EMAIL_FROM所在域名需要先在 AWS 里完成验证(Identities → Create identity → Domain,用 Easy DKIM);沙盒模式下登录邮箱本身也要先验证。
后台发送:接入 Upstash QStash
批量发送和定时发送都由 QStash 调度:在 Upstash 控制台复制QSTASH_TOKEN和两个签名密钥,填入后重新部署。QStash 会回调APP_URL/api/jobs/...逐批发信,且每批任务都会校验 QStash 签名,防止伪造。本地调试可运行npx @upstash/qstash-cli dev拿到本地可用的配置。
开启发送:域名验证与第一封邮件
- 在Domains页面添加发信域名,强烈建议用子域名(如
mail.example.com),这样即使某周发送表现差,也不牵连主域名的邮件。 - 按页面提示添加 DKIM、return path、DMARC 记录,点Check now逐项验证。
- 创建 Newsletter:发件地址必须在已验证域名下,页脚必须填真实邮政地址(反垃圾邮件法规要求)。
- 设置
SENDING_ENABLED=true并重新部署——这是总开关,没打开时一封读者邮件都不会发出,登录验证码和告警不受影响。 - 先发给自己测试,再正式发送。首次发送给新联系人时,系统会自动先发 5% 做预热,3 小时后若退信/投诉率健康再发其余的。
部署完成后的体验
打开总览页,发送量、送达率、打开率、点击率、退信率、投诉率一屏看全;Review步骤会在发送前自动检查主题、预览文本、退订链接、Gmail 的 100 KB 截断限制、邮政地址和发件人;还可以从 beehiiv、Substack、Mailchimp、Ghost 等平台的 CSV 直接导入订阅读(保留状态和订阅日期)。每个 Newsletter 都会自动生成一个带订阅表单的独立网站:
内置保护机制同样重要:
- 🧹列表清理(默认开启):连续多期未打开的读者会收到一封"你还想继续吗"确认邮件,不再打开则停止发送
- 🧹导入清洗:自动剔除无效地址、拼写错误的域名(如 gmial.com)、spam trap、角色地址、一次性邮箱和重复地址
- ⏸️自动熔断:硬退信超过 2% 或投诉超过 0.08% 时暂停发送;超过 5% / 0.3% 直接封停该账号
发信最佳实践速查
| 实践 | 说明 |
|---|---|
| 用子域名发送 | 保护主域名信誉,坏一周不连累日常邮件 |
| 完整认证 | DKIM + SPF(自定义 return path)+ 根域名 DMARC |
| 只发主动订阅的人 | 永不导入购买或抓取的列表,保持 confirmed opt-in |
| 新域名缓慢放量 | 先发给最活跃的读者,几周后逐步扩大 |
| 盯紧投诉与退信 | 投诉 < 0.1%、退信 < 2%,Gmail 垃圾率可在/admin连接 Google Postmaster Tools 每日读取 |
| 控制邮件体积 | 保持 100 KB 以内,否则 Gmail 会截断并隐藏退订链接 |
写在最后
MailCheap 的自托管门槛不高:一个免费 MongoDB + 一个 SES 账号 + 一个免费档 Node 主机,约一小时就能上线;之后每月只为真正发出的邮件付几美元。核心源码结构在 lib/ 与 models/ 目录,完整的环境变量参考见 .env.example,逐步部署细节以 README.md 为准。
项目采用 AGPL-3.0 开源协议(见 LICENSE):自由使用、修改,若你修改后对外提供服务,则需开源你的改动版本。
【免费下载链接】mailcheap
Newsletters where you pay for the emails you send, not for dormant subscribers, at a fraction of the price of beehiiv and the like. Open source: self-host it, or use mailcheap.ai.
相关推荐
Gradio 应用自托管部署实战:用 Disco 一键把应用部署到自己的 Ubuntu 服务器
Gradio 应用自托管部署实战:用 Disco 一键把应用部署到自己的 Ubuntu 服务器 导读 :Gradio 是一个开源的 Python 库,只需几行代
AI 应用前端后端Happier自托管快速上手:一条命令部署你自己的AI Agent中转服务器
Happier自托管快速上手:一条命令部署你自己的AI Agent中转服务器 Happier 是一款免费开源的 AI Agent 编排客户端,覆盖 Web、桌面
EasyInvoicePDF自托管部署指南:免费开源发票系统本地与服务器搭建完整步骤
EasyInvoicePDF自托管部署指南:免费开源发票系统本地与服务器搭建完整步骤 EasyInvoicePDF 是一款免费、开源的在线发票生成器:无需注册、
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考