Listmonk 邮件订阅管理部署教程
Listmonk 是一款使用 Go 语言编写的高性能开源邮件列表和 Newsletter 管理系统。它可以替代 Mailchimp、Sendinblue 等商业邮件营销服务,让你完全掌控订阅者数据和邮件发送过程。Listmonk 性能出色,单实例可以管理数百万订阅者,并以每分钟数千封的速度发送邮件。
一、Listmonk 功能特点
- 高性能:Go 语言编写,单实例支持百万级订阅者和高速批量发送。
- 邮件模板:内置 HTML 模板编辑器,支持可视化和代码编辑。
- 订阅管理:支持多个邮件列表、订阅者分组和标签管理。
- 营销活动:创建和管理邮件营销活动(Campaign),支持定时发送。
- 统计分析:跟踪邮件打开率、点击率等核心指标。
- 多 SMTP:支持配置多个 SMTP 服务器,分散发送压力。
- API 接口:完整的 REST API 用于程序化管理。
- 订阅表单:自动生成嵌入式订阅表单和公开订阅页面。
二、环境准备
- 搬瓦工 VPS 一台,512MB 内存即可(使用优惠码 NODESEEK2026 享受 6.77% 折扣)。
- 已安装 Docker 和 Docker Compose(参考 Docker 安装教程)。
- 一个 SMTP 邮件发送服务(可以使用自建邮件服务器或 Amazon SES 等服务)。
三、Docker Compose 部署
mkdir -p /opt/listmonk
cat > /opt/listmonk/docker-compose.yml <<'EOF'
version: '3.8'
services:
db:
image: postgres:15-alpine
restart: always
environment:
POSTGRES_PASSWORD: listmonk_password
POSTGRES_USER: listmonk
POSTGRES_DB: listmonk
volumes:
- pg_data:/var/lib/postgresql/data
listmonk:
image: listmonk/listmonk:latest
restart: always
depends_on:
- db
ports:
- "9000:9000"
command: [sh, -c, "yes | ./listmonk --install && ./listmonk"]
environment:
TZ: Asia/Shanghai
volumes:
- /opt/listmonk/config.toml:/listmonk/config.toml
volumes:
pg_data:
EOF
3.1 创建配置文件
cat > /opt/listmonk/config.toml <<'EOF'
[app]
address = "0.0.0.0:9000"
admin_username = "admin"
admin_password = "your_admin_password"
[db]
host = "db"
port = 5432
user = "listmonk"
password = "listmonk_password"
database = "listmonk"
ssl_mode = "disable"
max_open = 25
max_idle = 25
max_lifetime = "300s"
EOF
四、启动服务
cd /opt/listmonk
docker compose up -d
首次启动会自动初始化数据库。访问 http://VPS_IP:9000 使用管理员账号登录。
五、配置 SMTP
登录后进入「Settings」>「SMTP」配置邮件发送服务器:
- Host:SMTP 服务器地址
- Port:SMTP 端口(587 或 465)
- Auth protocol:认证方式(通常选 login)
- Username/Password:SMTP 账号密码
- TLS:启用 TLS 加密
如果你已经部署了 Mailcow 或 Mailu,可以直接使用自建邮件服务器作为 SMTP。也可以使用 Amazon SES、SendGrid 等第三方发送服务。
六、创建邮件列表和活动
6.1 创建邮件列表
- 进入「Lists」页面,点击「New list」。
- 输入列表名称和描述。
- 选择类型:Public(公开订阅)或 Private(手动管理)。
- 选择订阅确认方式:Single opt-in 或 Double opt-in。
6.2 创建邮件模板
在「Campaigns」>「Templates」中创建邮件模板。Listmonk 使用 Go 模板语法,支持变量替换:
<!-- 模板中的变量 -->
{{ .Subscriber.Name }} - 订阅者姓名
{{ .Subscriber.Email }} - 订阅者邮箱
{{ .Campaign.Name }} - 活动名称
{{ .UnsubscribeURL }} - 退订链接
6.3 发送邮件活动
- 创建新 Campaign,选择邮件模板和目标列表。
- 编辑邮件内容。
- 预览确认无误后,点击发送或设置定时发送。
七、配置反向代理
cat > /etc/nginx/sites-available/listmonk <<'EOF'
server {
listen 80;
server_name mail.yourdomain.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 -sf /etc/nginx/sites-available/listmonk /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d mail.yourdomain.com
八、嵌入订阅表单
Listmonk 自动生成订阅表单 HTML 代码,可以嵌入到你的网站中。在「Lists」页面中获取表单代码并粘贴到你的网站 HTML 中。
九、数据备份
docker compose exec db pg_dump -U listmonk listmonk > /opt/listmonk/backup_$(date +%Y%m%d).sql
十、常见问题
邮件进入垃圾箱
确保 SMTP 发送域名的 SPF、DKIM、DMARC 记录正确配置。使用专业的邮件发送服务(如 Amazon SES)可以获得更好的送达率。
发送速率限制
在「Settings」中可以配置发送速率限制,避免触发 SMTP 服务商的限制。
总结
Listmonk 是自建 Newsletter 平台的最佳开源方案之一,性能强大且功能完善。搭配 Ghost 平台 使用可以同时实现博客和 Newsletter 功能。选购搬瓦工 VPS 请访问 bwh81.net,使用优惠码 NODESEEK2026 享受 6.77% 折扣。