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

201 lines
4.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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服务器
```bash
cd go_stalwart_client
go build -o bin/stalwart-web-server cmd/web_server/main.go
```
### 2. 准备配置文件
确保`config/config.yaml`文件已正确配置特别是API Key
```yaml
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 复制文件到服务器
```bash
# 创建目录
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 设置权限
```bash
ssh user@your-server "chmod +x /usr/local/bin/stalwart-web-server"
```
#### 3.3 创建用户和组(如果需要)
```bash
ssh user@your-server "useradd -r -s /bin/false stalwart"
```
#### 3.4 生成API Token并更新服务文件
在服务器上运行一次Web服务器以生成API Token
```bash
/usr/local/bin/stalwart-web-server -c /etc/stalwart/config.yaml
```
复制生成的API Token然后更新服务文件
```bash
sudo vim /etc/systemd/system/stalwart-api.service
# 将YOUR_API_TOKEN替换为生成的Token
```
#### 3.5 启动服务
```bash
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使用示例
### 创建用户
```bash
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
}'
```
响应:
```json
{
"id": 123,
"username": "newuser",
"email": "newuser@evnmail.com",
"password": "A8f2@xLp9q!Z",
"success": true,
"message": "用户创建成功"
}
```
### 获取用户列表
```bash
curl -X GET "http://your-server:8080/api/list_users?limit=10&page=1" \
-H "Authorization: Bearer YOUR_API_TOKEN"
```
### 获取用户信息
```bash
curl -X GET "http://your-server:8080/api/get_user?email=user@evnmail.com" \
-H "Authorization: Bearer YOUR_API_TOKEN"
```
### 获取邮件
```bash
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请求失败
- 检查请求格式和参数
- 查看服务器日志获取详细错误信息