Listmonk:自托管新闻通讯完全指南:邮件列表管理的完整教程
背景
邮件营销是企业和内容创作者与受众保持联系的重要渠道。Mailchimp、ConvertKit 等 SaaS 服务提供了便捷的邮件营销功能,但存在订阅名单限制、高昂费用、数据隐私等问题。
Listmonk 正是为解决这一需求而生的自托管邮件营销平台。它将 newsletter 和邮件列表管理功能整合在一起,提供了强大而简洁的解决方案,让用户完全掌控自己的邮件营销数据。
本文将提供一份保姆级教程,详细讲解 Listmonk 的部署与配置,帮助读者快速搭建完全自主掌控的邮件营销平台。
一、项目概述
1.1 Listmonk 简介
Listmonk 是一款开源的自托管邮件营销和新闻通讯平台,GitHub Star 数超过 10K。它采用 Go 语言开发,以高性能和低资源占用著称。
Listmonk 的核心特点:
- 自托管:数据完全自主掌控
- 高性能:Go 语言开发,高效处理
- 订阅者管理:强大的订阅者管理功能
- 邮件模板:可视化模板编辑
- 自动化:支持自动化邮件序列
- 统计追踪:详细的发送和追踪统计
- 事务邮件:支持发送事务性邮件
1.2 核心功能
1.2.1 订阅者管理
Listmonk 提供了强大的订阅者管理:
- 订阅列表:创建和管理多个列表
- 订阅者配置:收集自定义字段
- 导入导出:支持 CSV 导入导出
- 双 opt-in:支持订阅确认
- 订阅偏好:管理订阅者偏好设置
1.2.2 邮件发送
- 批量发送:一次发送大量邮件
- 模板编辑:可视化模板编辑器
- 变量替换:个性化邮件内容
- 定时发送:安排发送时间
- A/B 测试:测试不同邮件版本
1.2.3 统计分析
- 发送统计:送达、打开、点击统计
- 转化追踪:追踪转化目标
- 退订追踪:监控退订率
- ROI 分析:分析邮件效果
1.2.4 自动化
- 欢迎邮件:新订阅者自动发送
- 自动化序列:多步骤邮件序列
- 触发邮件:基于行为的邮件
- 循环发送:定期发送新闻通讯
二、Docker Compose 部署
2.1 环境准备
确保服务器已安装:
- Docker 20.10+
- Docker Compose 2.0+
- 内存:最低 512MB,推荐 1GB+
- 磁盘:根据订阅者数量和邮件量
Listmonk 需要 PostgreSQL 数据库存储数据。
2.2 创建部署目录
mkdir -p /opt/listmonk
cd /opt/listmonk
# 创建数据目录
mkdir -p ./uploads ./data
2.3 创建配置文件
cat > config.toml << 'EOF'
[app]
# 应用地址
ADDRESS = "0.0.0.0:9000"
# 上传目录
UPLOADS_PATH = "./uploads"
# 数据库
DB_HOST = "db"
DB_PORT = 5432
DB_USER = "listmonk"
DB_PASSWORD = "your_db_password"
DB_NAME = "listmonk"
DB_SSL_MODE = "disable"
# 邮件发送配置(后续配置)
[smtp]
# SMTP 配置在界面中设置
# 管理员账户
[admin]
# 管理员信息在首次启动后创建
EOF
2.4 创建 docker-compose.yml
cat > docker-compose.yml << 'EOF'
version: "3.8"
services:
listmonk:
image: listmonk/listmonk:latest
container_name: listmonk
ports:
- "9000:9000"
volumes:
- ./config.toml:/listmonk/config.toml
- ./uploads:/listmonk/uploads
restart: unless-stopped
depends_on:
- db
db:
image: postgres:15-alpine
container_name: listmonk-db
environment:
- POSTGRES_USER=listmonk
- POSTGRES_PASSWORD=your_db_password
- POSTGRES_DB=listmonk
volumes:
- postgres_data:/var/lib/postgresql/data
restart: unless-stopped
volumes:
postgres_data:
EOF
2.5 启动服务
# 启动服务
docker compose up -d
# 查看服务状态
docker compose ps
# 查看日志
docker compose logs -f
2.6 访问 Listmonk
服务启动后,访问 http://your-server-ip:9000。
首次访问会自动跳转到初始化页面,引导创建管理员账户。
2.7 Nginx 反向代理
cat > /etc/nginx/sites-available/listmonk << 'EOF'
server {
listen 80;
server_name listmonk.your-domain.com;
location / {
proxy_pass http://127.0.0.1:9000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
EOF
ln -s /etc/nginx/sites-available/listmonk /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx
# 启用 HTTPS
apt-get install -y certbot python3-certbot-nginx
certbot --nginx -d listmonk.your-domain.com
三、快速入门
3.1 界面布局
Listmonk 管理界面主要包含:
- 仪表盘:统计概览
- 订阅者:订阅者管理
- 列表:邮件列表管理
- 活动:发送活动
- 模板:邮件模板
- 设置:系统设置
3.2 创建订阅列表
3.2.1 新建列表
- 点击"列表" → “新建列表”
- 填写列表信息:
- 名称:列表名称
- 描述:列表说明
- 订阅者ID:选择订阅者ID格式
- 点击"保存"
3.2.2 列表设置
| 设置项 | 说明 |
|---|---|
| 允许订阅 | 是否开放订阅 |
| 双 opt-in | 是否需要确认邮件 |
| 默认状态 | 新订阅者默认状态 |
| 标签 | 列表标签 |
3.3 添加订阅者
3.3.1 手动添加
- 点击"订阅者" → “新建订阅者”
- 填写订阅者信息:
- 邮箱:必填
- 名字、姓氏:可选
- 状态:已订阅/已暂停/已退订
- 点击"保存"
3.3.2 CSV 导入
- 点击"订阅者" → “导入”
- 选择 CSV 文件
- 映射字段
- 开始导入
3.4 创建邮件模板
3.4.1 新建模板
- 点击"模板" → “新建模板”
- 选择模板类型:
- 纯文本:简单的文本邮件
- HTML:使用 HTML 编辑器
- 填写模板内容
3.4.2 模板变量
支持以下变量:
| 变量 | 说明 |
|---|---|
| {{.FirstName}} | 订阅者名字 |
| {{.LastName}} | 订阅者姓氏 |
| {{.Email}} | 订阅者邮箱 |
| {{.UUID}} | 订阅者 UUID |
| {{.SubscriptionURL}} | 订阅管理链接 |
| {{.UnsubscribeURL}} | 退订链接 |
3.4.3 模板示例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>{{.Subject}}</title>
</head>
<body>
<h1>Hello {{.FirstName}} {{.LastName}},</h1>
<p>感谢您订阅我们的新闻通讯。</p>
<p>点击<a href="{{.SubscriptionURL}}">这里</a>管理您的订阅。</p>
<p><a href="{{.UnsubscribeURL}}">退订</a></p>
</body>
</html>
四、发送邮件活动
4.1 创建活动
4.1.1 新建活动
- 点击"活动" → “新建活动”
- 填写活动信息:
- 名称:活动名称
- 主题:邮件主题
- 发件人:发件人信息
- 收件人:选择列表
- 点击"下一步"
4.1.2 选择模板
选择要使用的邮件模板,可以预览效果。
4.1.3 配置发送
| 选项 | 说明 |
|---|---|
| 立即发送 | 立即发送 |
| 定时发送 | 设置发送时间 |
| A/B 测试 | 测试不同版本 |
4.2 发送设置
4.2.1 发送选项
| 选项 | 说明 |
|---|---|
| 追踪打开 | 追踪邮件打开率 |
| 追踪点击 | 追踪链接点击 |
| Google Analytics | 集成 GA 追踪 |
4.2.2 频率限制
设置发送速率,避免被标记为垃圾邮件:
[smtp]
BATCH_SIZE = 100
MESSAGE_RATE = 50
4.3 查看统计
活动发送后,可以查看:
- 发送数:已发送邮件数
- 送达数:成功送达数
- 打开数:被打开的次数
- 点击数:链接被点击次数
- 退订数:退订数量
五、自动化配置
5.1 欢迎邮件
新订阅者自动发送欢迎邮件:
- 点击"自动化" → “新建自动化”
- 选择触发类型:“新订阅”
- 设置延迟时间(可选)
- 选择要发送的邮件模板
5.2 邮件序列
多步骤邮件序列:
- 点击"自动化" → “新建自动化”
- 选择"序列"
- 添加多个步骤:
- 步骤1:发送欢迎邮件(立即)
- 步骤2:3天后发送介绍
- 步骤3:7天后发送优惠
5.3 触发邮件
基于订阅者行为的邮件:
- 点击"自动化" → “新建自动化”
- 选择触发事件
- 配置发送条件
- 选择邮件模板
六、SMTP 配置
6.1 配置发件服务
Listmonk 支持多种 SMTP 服务:
6.1.1 使用本地 SMTP
[smtp]
HOST = "localhost"
PORT = 25
6.1.2 使用第三方 SMTP
[smtp]
HOST = "smtp.example.com"
PORT = 587
USER = "user@example.com"
PASSWORD = "your_password"
FROM = "newsletter@example.com"
6.1.3 AWS SES
[smtp]
HOST = "email-smtp.us-east-1.amazonaws.com"
PORT = 587
USER = "your-ses-key"
PASSWORD = "your-ses-secret"
6.2 在界面中配置
也可以在界面中配置 SMTP:
- 进入"设置" → “SMTP”
- 点击"新建配置"
- 填写 SMTP 信息
- 测试发送
七、备份恢复
7.1 备份数据
# 备份数据库
docker compose exec -T db pg_dump -U listmonk > listmonk_backup_$(date +%Y%m%d).sql
# 备份上传文件
tar -czf listmonk_uploads_$(date +%Y%m%d).tar.gz /opt/listmonk/uploads
7.2 恢复数据
# 恢复数据库
docker compose exec -T db psql -U listmonk < listmonk_backup_20260325.sql
八、常见问题
8.1 部署问题
Q:服务启动失败
A:检查配置文件和数据库连接:
docker compose logs listmonk
Q:邮件发送失败
A:检查 SMTP 配置,确保发件服务可用。
8.2 使用问题
Q:如何添加自定义字段
A:在"订阅者" → "字段"中添加自定义字段。
Q:如何创建退出链接
A:在模板中使用 {{.UnsubscribeURL}} 变量。
九、总结
Listmonk 作为自托管的邮件营销平台,以其高性能、功能完整和数据自主掌控的特点,为企业和内容创作者提供了一个优秀的邮件营销解决方案。
通过本文的保姆级教程,读者应该已经掌握了:
- Docker 部署:使用 Docker Compose 快速部署 Listmonk
- 订阅者管理:创建列表、添加订阅者
- 模板编辑:创建和管理邮件模板
- 发送活动:创建和发送邮件活动
- 自动化:配置欢迎邮件和邮件序列
- SMTP 配置:配置邮件发送服务
对于需要自托管邮件营销平台的团队,Listmonk 是一个值得信赖的开源选择。
© 版权归无边界科技所有,版权所有。
370



被折叠的 条评论
为什么被折叠?



