搬瓦工部署 Plunk 邮件平台教程
Plunk 是一款开源的邮件平台,提供事务邮件和营销邮件两大功能。它拥有简洁现代的界面,内置了邮件模板编辑器、联系人管理、自动化工作流和邮件分析等功能。Plunk 可以作为 SendGrid、Mailchimp 等商业邮件服务的自托管替代品,让你完全掌控邮件基础设施。本文将介绍如何在搬瓦工 VPS 上部署 Plunk。部署前请确保已安装 Docker 和 Docker Compose。
一、Plunk 核心功能
- 事务邮件 API:通过 REST API 发送注册确认、密码重置等事务邮件。
- 营销邮件:创建和发送批量营销邮件。
- 模板编辑器:可视化邮件模板编辑器,支持变量替换。
- 联系人管理:管理订阅者列表,支持标签和分组。
- 自动化:基于事件触发的邮件自动化工作流。
- 分析统计:追踪邮件打开率、点击率和退订率。
二、系统要求
- 操作系统:Ubuntu 20.04+ 或 Debian 11+。
- 内存:至少 1GB,推荐 2GB。
- 磁盘:至少 5GB 可用空间。
- Docker:已安装 Docker 和 Docker Compose。
- SMTP 服务:需要一个可用的 SMTP 服务(如 Amazon SES、Mailgun 等)。
搬瓦工 VPS 方案推荐参考 全部方案,购买时使用优惠码 NODESEEK2026 可享 6.77% 折扣,购买入口:bwh81.net。
三、创建项目目录
mkdir -p /opt/plunk && cd /opt/plunk
四、创建环境变量文件
cat > /opt/plunk/.env <<'EOF'
DATABASE_URL=postgresql://plunk:your_db_password@plunk-db:5432/plunk
REDIS_URL=redis://plunk-redis:6379
SECRET=your_secret_key_here
JWT_SECRET=your_jwt_secret_here
APP_URI=https://your_domain.com
API_URI=https://your_domain.com/api
AWS_REGION=us-east-1
AWS_ACCESS_KEY_ID=your_aws_access_key
AWS_SECRET_ACCESS_KEY=your_aws_secret_key
AWS_SES_CONFIGURATION_SET=plunk
DISABLE_SIGN_UP=false
EOF
生成密钥:
openssl rand -hex 32
openssl rand -hex 32
五、编写 Docker Compose 配置
cat > /opt/plunk/docker-compose.yml <<'EOF'
version: '3.8'
services:
plunk-db:
image: postgres:15
restart: always
environment:
POSTGRES_DB: plunk
POSTGRES_USER: plunk
POSTGRES_PASSWORD: your_db_password
volumes:
- plunk_db_data:/var/lib/postgresql/data
plunk-redis:
image: redis:7-alpine
restart: always
plunk:
image: driaug/plunk:latest
restart: always
ports:
- "3000:3000"
env_file: .env
depends_on:
- plunk-db
- plunk-redis
volumes:
plunk_db_data:
EOF
六、启动服务
cd /opt/plunk
docker compose up -d
访问 http://your_server_ip:3000,注册管理员账户。
七、配置 SMTP 发送
Plunk 支持 Amazon SES 和自定义 SMTP。如果使用自定义 SMTP,在环境变量中配置:
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USER=your_smtp_user
SMTP_PASSWORD=your_smtp_password
SMTP_FROM=noreply@your_domain.com
注意:许多 VPS 提供商默认封锁 25 端口,建议使用 587 或 465 端口。使用第三方 SMTP 服务(如 Amazon SES、Mailgun、Postmark)可获得更好的送达率。
八、使用事务邮件 API
在控制台中创建 API Key 后,通过 REST API 发送事务邮件:
curl -X POST https://your_domain.com/api/v1/send \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_key" \
-d '{
"to": "user@example.com",
"subject": "欢迎注册",
"body": "<h1>欢迎加入我们</h1><p>您的账户已创建成功。</p>"
}'
九、配置反向代理
cat > /etc/nginx/sites-available/plunk <<'EOF'
server {
listen 80;
server_name your_domain.com;
location / {
proxy_pass http://127.0.0.1:3000;
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/plunk /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d your_domain.com
十、创建邮件模板
在 Plunk 控制台的 Templates 页面,使用可视化编辑器创建邮件模板。模板支持变量语法,在发送时动态替换内容。
十一、常见问题
邮件发送失败
检查 SMTP 配置是否正确,查看容器日志获取详细错误信息:
docker compose logs plunk
邮件被标记为垃圾邮件
配置发送域名的 SPF、DKIM 和 DMARC 记录,使用受信任的 SMTP 服务提供商。
总结
Plunk 是一款简洁实用的开源邮件平台,特别适合需要事务邮件 API 和基础营销邮件功能的中小项目。通过自托管你可以完全掌控邮件数据和发送成本。选购搬瓦工 VPS 请参考 全部方案,购买时使用优惠码 NODESEEK2026 可享 6.77% 折扣。