Files
mail_api_go/WEB_API_DEPLOYMENT.md
huangzhenpc a8d25054fc sdd
2025-05-23 23:08:02 +08:00

4.2 KiB
Raw Permalink Blame History

Stalwart 邮件 Web API 部署指南

本文档介绍如何将Stalwart邮件API客户端部署为Web服务通过HTTP API提供邮箱管理功能。

特点

  • RESTful API设计
  • 默认使用API Key认证方式
  • JSON格式请求和响应
  • 支持所有命令行工具的功能
  • 易于集成到现有系统

API端点

端点 方法 描述
/api/create_user POST 创建新邮箱用户
/api/list_users GET 获取用户列表
/api/get_user GET 获取单个用户信息
/api/get_emails POST 获取用户邮件
/health GET 健康检查

构建和部署

1. 编译Web服务器

cd go_stalwart_client
go build -o bin/stalwart-web-server cmd/web_server/main.go

2. 准备配置文件

确保config/config.yaml文件已正确配置特别是API Key

api:
  base_url: https://mail.evnmail.com/api
  disable_proxy: true
user:
  default_domain: evnmail.com
  default_quota: 1073741824
auth:
  basic:
    username: admin
    password: your_password_here
  api_key: api_your_api_key_here

3. 部署到Linux服务器

3.1 复制文件到服务器

# 创建目录
ssh user@your-server "mkdir -p /usr/local/bin /etc/stalwart"

# 复制可执行文件
scp bin/stalwart-web-server user@your-server:/usr/local/bin/

# 复制配置文件
scp config/config.yaml user@your-server:/etc/stalwart/

# 复制服务文件
scp stalwart-api.service user@your-server:/etc/systemd/system/

3.2 设置权限

ssh user@your-server "chmod +x /usr/local/bin/stalwart-web-server"

3.3 创建用户和组(如果需要)

ssh user@your-server "useradd -r -s /bin/false stalwart"

3.4 生成API Token并更新服务文件

在服务器上运行一次Web服务器以生成API Token

/usr/local/bin/stalwart-web-server -c /etc/stalwart/config.yaml

复制生成的API Token然后更新服务文件

sudo vim /etc/systemd/system/stalwart-api.service
# 将YOUR_API_TOKEN替换为生成的Token

3.5 启动服务

sudo systemctl daemon-reload
sudo systemctl enable stalwart-api
sudo systemctl start stalwart-api
sudo systemctl status stalwart-api

4. 部署到Windows服务器

4.1 使用NSSMNon-Sucking Service Manager

  1. 下载NSSM: https://nssm.cc/download
  2. 安装服务:
nssm install StalwartAPI D:\path\to\stalwart-web-server.exe -p 8080 -c D:\path\to\config.yaml -t YOUR_API_TOKEN
nssm set StalwartAPI AppDirectory D:\path\to\
nssm start StalwartAPI

API使用示例

创建用户

curl -X POST http://your-server:8080/api/create_user \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "newuser@evnmail.com",
    "description": "新用户",
    "quota": 1073741824
  }'

响应:

{
  "id": 123,
  "username": "newuser",
  "email": "newuser@evnmail.com",
  "password": "A8f2@xLp9q!Z",
  "success": true,
  "message": "用户创建成功"
}

获取用户列表

curl -X GET "http://your-server:8080/api/list_users?limit=10&page=1" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

获取用户信息

curl -X GET "http://your-server:8080/api/get_user?email=user@evnmail.com" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

获取邮件

curl -X POST http://your-server:8080/api/get_emails \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "user@evnmail.com",
    "password": "userpassword",
    "count": 5
  }'

注意事项

  1. 安全性:

    • 使用HTTPS部署Web服务
    • 保护API Token不要泄露
    • 定期更换API Token
  2. 资源考虑:

    • 对于高负载环境,考虑增加服务器资源
    • 对于大规模部署,考虑负载均衡
  3. 监控:

    • 定期检查服务状态
    • 设置日志轮转
    • 监控API调用频率和响应时间

故障排除

  1. 服务无法启动

    • 检查配置文件路径是否正确
    • 确认API服务器地址可访问
    • 检查端口是否被占用
  2. 认证失败

    • 确认API Token是否正确设置
    • 检查Authorization头格式
  3. API请求失败

    • 检查请求格式和参数
    • 查看服务器日志获取详细错误信息