轻量级邮件接收聚合系统 - 统一管理多个邮箱账户,通过自动化机制与其他产品和系统集成。
重要:本项目包含敏感信息管理功能,请注意:
.test-config 存储测试账号(已在 .gitignore 中)./check-commit-security.sh 检查安全性详见:Git 提交安全规范
# 1. 克隆项目
git clone <repository-url>
cd fusionmail
# 2. 完整启动(自动启动所有服务)
./start.sh
就这么简单!脚本会自动:
# 显示帮助信息
./start.sh -h
# 开发模式(热重载)
./start.sh -w
# 仅启动后端
./start.sh -b
# 仅启动前端
./start.sh -f
# 清理数据后启动
./start.sh -c
# 调试模式
./start.sh -d
# 组合使用
./start.sh -w -d # 开发模式 + 调试日志
详细说明请查看:启动指南
# 停止前后端服务(保留数据库)
./stop.sh
# 停止所有服务(包括 Docker)
./stop.sh -a
# 停止并清理所有数据
./stop.sh -c
首次启动后,系统会自动创建管理员账号:
backend/passwd 文件中curl -X POST http://localhost:3333/api/v1/accounts \
-H "Content-Type: application/json" \
-d '{
"email": "your@qq.com",
"provider": "qq",
"protocol": "imap",
"auth_type": "password",
"password": "your_authorization_code",
"sync_enabled": true,
"sync_interval": 5
}'
# 替换为您的账户 UID
export ACCOUNT_UID="acc_xxx"
curl -X POST http://localhost:3333/api/v1/sync/accounts/$ACCOUNT_UID
# 获取邮件列表
curl "http://localhost:3333/api/v1/emails?account_uid=$ACCOUNT_UID&page=1&page_size=10"
# 搜索邮件
curl "http://localhost:3333/api/v1/emails/search?q=通知"
# 获取未读邮件数
curl "http://localhost:3333/api/v1/emails/unread-count?account_uid=$ACCOUNT_UID"
curl -X POST http://localhost:3333/api/v1/rules \
-H "Content-Type: application/json" \
-d "{
\"name\": \"自动归档通知邮件\",
\"account_uid\": \"$ACCOUNT_UID\",
\"conditions\": \"[{\\\"field\\\":\\\"subject\\\",\\\"operator\\\":\\\"contains\\\",\\\"value\\\":\\\"通知\\\"}]\",
\"actions\": \"[{\\\"type\\\":\\\"archive\\\"},{\\\"type\\\":\\\"mark_read\\\"}]\",
\"enabled\": true
}"
# 自动测试所有邮件 API
ACCOUNT_UID=$ACCOUNT_UID ./scripts/test-email-api.sh
fusionmail/ ├── backend/ # Go 后端项目 ├── frontend/ # React 前端项目 ├── docker-compose.dev.yml # 开发环境 Docker 配置 ├── scripts/ # 开发脚本 │ ├── dev-start.sh # 启动开发环境 │ ├── dev-stop.sh # 停止开发环境 │ └── README.md # 脚本说明 ├── .kiro/ # Kiro IDE 配置 │ ├── specs/ # 项目规格文档 │ └── steering/ # Kiro 指导文档 └── docs/ # 项目文档
FusionMail 提供完整的 Swagger API 文档,方便开发和测试。
backend/.env 文件:SWAGGER_ENABLED=true
http://localhost:3333/swagger/index.html
生产环境请务必关闭 Swagger 文档:
SWAGGER_ENABLED=false # 默认值
.kiro/specs/fusionmail/requirements.md.kiro/specs/fusionmail/design.md.kiro/specs/fusionmail/tasks.md.kiro/steering/development-setup.md.kiro/steering/api-standards.md.kiro/steering/code-conventions.md# 启动开发环境
./scripts/dev-start.sh
# 停止开发环境
./scripts/dev-stop.sh
# 查看服务状态
docker-compose -f docker-compose.dev.yml ps
# 查看日志
docker-compose -f docker-compose.dev.yml logs -f
# 进入 PostgreSQL
docker exec -it fusionmail-postgres psql -U fusionmail -d fusionmail
# 进入 Redis
docker exec -it fusionmail-redis redis-cli -a fusionmail_redis_password
git checkout -b feature/AmazingFeature)git commit -m 'feat: Add some AmazingFeature')git push origin feature/AmazingFeature)FusionMail 支持多种部署方式,选择最适合你的:
| 平台 | 适用场景 | 部署时间 |
|---|---|---|
| Fly.io | 生产环境推荐 | 5 分钟 |
| HuggingFace | 快速体验 | 3 分钟 |
| Docker | 自有服务器 | 10 分钟 |
| Render | Git 自动部署 | 8 分钟 |
# 1. 安装 CLI
brew install flyctl
# 2. 登录并创建应用
flyctl auth login
flyctl apps create fusionmail
# 3. 配置环境变量
flyctl secrets set -a fusionmail \
DB_HOST=your-db-host \
DB_USER=postgres.your-project-ref \
'DB_PASSWORD=your-password' \
'JWT_SECRET=your-jwt-secret' \
ENCRYPTION_KEY=your-encryption-key
# 4. 部署
flyctl deploy -a fusionmail --remote-only
注意: 这是一个开发中的项目,当前处于 MVP 阶段。