计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
billionmail【效率与协作】Use when setting up self-hosted email marketing and transactional email — SMTP relay, newsletter campaigns, bounce handling, delivery analytics. BillionMail: self-hosted email marketing platform with multi-tenant support.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
name: billionmail description: "Use when setting up self-hosted email marketing and transactional email — SMTP relay, newsletter campaigns, bounce handling, delivery analytics. BillionMail: self-hosted email marketing platform with multi-tenant support." tags:
项目地址: https://github.com/Billionmail/BillionMail
官网: https://www.billionmail.com/
官方文档: https://docs.billionmail.com/
许可证: AGPL-3.0(社区版)| 最新版本: v4.9(2025-12)
BillionMail 主要能力:
BillionMail 由宝塔面板团队(aaPanel)出品,强调开箱即用、面板化运维。
git clone https://github.com/Billionmail/BillionMail
cd BillionMail
cp env_init .env
# 编辑 .env:DOMAIN、DB 密码、MX/SMTP 配置等
docker compose up -d
cd /opt && git clone https://github.com/aaPanel/BillionMail && cd BillionMail && bash install.sh
| 端口 | 服务 |
|---|---|
| 25 / 587 / 465 | SMTP |
| 143 / 993 | IMAP |
| 110 / 995 | POP3(可选) |
| 80 / 443 | Web 控制台 + WebMail |
⚠️ 多数云厂商默认封锁 25/587 端口,需提交工单解封;建议使用海外 VPS 或专用邮件 IP。
为发件域 mail.example.com 配置:
| 类型 | 主机 | 值 |
|---|---|---|
| A | <服务器 IP> | |
| MX | @ | mail.example.com |
| TXT | @ | v=spf1 mx ip4:<IP> ~all |
| TXT | default._domainkey | v=DKIM1;k=rsa;p=...(管理后台生成) |
| TXT | _dmarc | v=DMARC1;p=quarantine;rua=mailto:... |
| PTR | mail.example.com(联系机房设置反向解析) |
访问 https://your-server/:
{{name}}、{{unsubscribe_url}})发送过程中实时显示成功/失败/退信。
curl -X POST https://your-server/api/v1/mail/send \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Content-Type: application/json' \
-d '{
"from": "noreply@example.com",
"to": ["user@x.com"],
"subject": "欢迎注册",
"template_id": 12,
"variables": { "name": "张三" }
}'
Webhook 回调:
POST https://yourapp.com/hooks/billionmail
{
"event": "delivered|bounced|opened|clicked|unsubscribed",
"message_id": "...",
"to": "...",
"ts": 1700000000
}
{{unsubscribe_url}}控制台 → 设置 → 域名健康检查;或:
dig TXT default._domainkey.example.com
dig TXT _dmarc.example.com
mail-tester.com # 免费送达率打分
目标分数:≥ 9/10。
docker compose logs -f postfix dovecotmailq(容器内)# 部署
git clone https://github.com/Billionmail/BillionMail && cd BillionMail
cp env_init .env
# 编辑 .env:DOMAIN、数据库密码、SMTP 配置
docker compose up -d
# 查看运行状态
docker compose ps
docker compose logs -f postfix dovecot
# DNS 校验
dig TXT default._domainkey.example.com
dig TXT _dmarc.example.com
dig MX example.com
# SMTP 测试
swaks --to test@example.com --server localhost --port 587 --tls
# 送达率检测
# 访问 https://www.mail-tester.com 获取测试邮箱,发送一封测试邮件
# 1. 部署
git clone https://github.com/Billionmail/BillionMail
cd BillionMail
cp env_init .env
# 编辑 .env:DOMAIN=mail.example.com, 数据库密码
docker compose up -d
# 2. DNS 配置(在域名管理后台)
# A mail → <服务器IP>
# MX @ → mail.example.com
# TXT @ → "v=spf1 mx ip4:<IP> ~all"
# TXT default._domainkey → "v=DKIM1;k=rsa;p=..." (管理后台生成)
# TXT _dmarc → "v=DMARC1;p=quarantine;rua=mailto:admin@..."
# 3. 控制台操作
# ① 添加发件域 → 生成 DKIM → 配置 DNS
# ② 导入订阅者 CSV(邮箱,姓名,标签)
# ③ 创建模板(HTML + 变量 {{name}}, {{unsubscribe_url}})
# ④ 新建发送任务 → 选择分组 → 限速 100封/小时(预热期)
# ⑤ 查看统计:到达率/打开率/点击率/退订率
# 4. 验证送达率
# mail-tester.com → 目标 ≥ 9/10
# 5. API 触发事务邮件
curl -X POST https://mail.example.com/api/v1/mail/send \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Content-Type: application/json' \
-d '{
"from": "noreply@example.com",
"to": ["user@x.com"],
"subject": "欢迎注册",
"template_id": 12,
"variables": {"name": "张三"}
}'
1. **导出 Mailchimp 数据**:Audience → Export CSV(含邮箱/姓名/标签/状态)
2. **导入 BillionMail**:订阅者 → 导入 CSV,映射字段
3. **重建模板**:复制 Mailchimp 模板 HTML,替换变量为 `{{name}}` 格式
4. **保留退订列表**:将 Mailchimp 退订名单导入黑名单
5. **IP 预热**:从 50/day 起,每 2-3 天翻倍,直到目标量
6. **并行运行 1-2 周**:新旧系统同时发,确认送达率一致后切换 DNS
mail-tester.com 打分,目标是 ≥ 9/10{{unsubscribe_url}},否则违反 CAN-SPAM/GDPR| 场景 | 推荐方案 |
|---|---|
| 少量事务邮件(<100/天) | 第三方 API(SendGrid/Mailgun 免费额度) |
| 企业自建 Newsletter | BillionMail |
| 超大规模(百万级) | BillionMail + 多 IP 池 + 专业 ESP |
| 仅需 SMTP 中转 | Postfix + Dovecot,无需 BillionMail |
| 问题 | 解决 |
|---|---|
| Gmail 进垃圾箱 | 修复 SPF/DKIM/DMARC;预热 IP;降低发送量 |
| 25 端口被封 | 联系云厂商 / 用 587 + Relay |
| 退订链接无效 | 检查 UNSUBSCRIBE_BASE_URL;TLS 证书 |
| WebMail 无法登录 | 检查 Dovecot 与账号密码;查看容器日志 |
| 大文件附件失败 | 调整 message_size_limit |