Mailman – 智能邮件管理系统
开源:https://github.com/seongminhwan/mailman
🚀 主要特性
📧 邮件管理
- 多账户支持:管理多个邮件账户(Gmail、Outlook、IMAP等)
- OAuth2认证:支持Gmail、Outlook等OAuth2安全认证
- 实时同步:自动同步邮件,支持增量同步和定时同步
- 智能解析:自动解析邮件内容,提取关键信息和附件
- 全局搜索:强大的全局邮件搜索,支持高级过滤和实时搜索
- 邮件提取:智能提取邮件中的结构化数据
- 邮件工具:丰富的邮件处理工具集
🤖 AI集成
- 多AI支持:支持OpenAI、Claude、Gemini等多种AI提供商
- 数据库配置:通过Web界面灵活配置和管理AI服务
- 智能提取:使用AI提取邮件中的结构化数据和关键信息
- 模板生成:AI助手生成邮件提取模板和处理规则
- 内容分析:智能分析邮件内容,提取业务数据
- 可视化配置:拖拽式AI配置界面,无需编程知识
⚡ 自动化功能
- 触发器系统:基于条件的邮件处理自动化
- 定时任务:邮件同步和处理的定时调度
- 事件监听:实时监听邮件事件
- 工作流管理:复杂的邮件处理工作流
🛡️ 安全特性
- 多重认证:支持用户名密码、OAuth2等多种认证方式
- OAuth2集成:完整的OAuth2流程,支持Gmail、Outlook等主流邮件服务
- 会话管理:安全的用户会话管理和自动过期机制
- 数据加密:敏感数据加密存储,API密钥安全管理
- 权限控制:基于角色的访问控制和细粒度权限管理
- 安全传输:HTTPS/WSS加密通信
界面预览
主界面
邮件账户管理
邮件管理
同步配置
邮件监听和提取
邮件取件模板
AI助手
🚀 快速开始
环境要求
- Go: 1.23+
- Node.js: 18+
- MySQL: 8.0+
- Docker: 最新版本(推荐)
- Docker Compose: 最新版本
Mailman支持多种部署方式,满足不同场景的需求:
快速开始 (推荐)
使用Docker All-in-One镜像,一键启动完整系统:
docker run -d \
--name mailman \
-p 3000:3000 \
-v mailman_data:/app/data \
mailman:latest
使用Docker Compose部署(推荐)
克隆项目
git clone https://github.com/seongminhwan/mailman.git
cd mailman
配置环境变量
cp .env.example .env
# 编辑.env文件,设置必要的环境变量
启动服务
docker-compose up -d
访问应用
使用All-in-One镜像部署
All-in-One镜像包含了完整的前端和后端服务,是最简单的部署方式。
使用SQLite数据库(推荐)
# 基础部署 - 使用SQLite数据库
docker run -d \
--name mailman \
-p 80:80 \
-p 8080:8080 \
-v mailman_data:/app \
ghcr.io/seongminhwan/mailman-all:latest
数据持久化配置
为了确保数据持久化,建议使用以下配置:
# 创建数据目录
mkdir -p ./data
# 运行容器并挂载数据目录
docker run -d \
--name mailman \
-p 80:80 \
-p 8080:8080 \
-v $(pwd)/data:/app \
-e DB_DRIVER=sqlite \
-e DB_NAME=/app/mailman.db \
ghcr.io/seongminhwan/mailman-all:latest
使用MySQL数据库
# 连接外部MySQL数据库
docker run -d \
--name mailman \
-p 80:80 \
-p 8080:8080 \
-e DB_DRIVER=mysql \
-e DB_HOST=your_mysql_host \
-e DB_PORT=3306 \
-e DB_USER=your_mysql_user \
-e DB_PASSWORD=your_mysql_password \
-e DB_NAME=mailman \
ghcr.io/seongminhwan/mailman-all:latest
完整配置示例
# 包含所有常用配置的完整示例
docker run -d \
--name mailman \
-p 80:80 \
-p 8080:8080 \
-v $(pwd)/data:/app \
-e DB_DRIVER=sqlite \
-e DB_NAME=/app/mailman.db \
# -e OPENAI_API_KEY=your-openai-api-key \ # 已废弃,现在通过Web界面配置AI服务
-e LOG_LEVEL=INFO \
--restart unless-stopped \
ghcr.io/seongminhwan/mailman-all:latest
重要注意事项
⚠️ 数据库文件挂载注意事项:
- 数据目录权限:确保挂载的数据目录有正确的读写权限
- SQLite文件位置:SQLite数据库文件默认保存在
/app/mailman.db
- 数据备份:定期备份
/app
目录中的数据文件 - 容器更新:更新容器时,数据目录挂载确保数据不丢失
📋 端口说明:
80
: 前端Web界面8080
: 后端API服务
🔧 环境变量配置:
DB_DRIVER
: 数据库类型(sqlite
或mysql
)DB_NAME
: 数据库名称或SQLite文件路径OPENAI_API_KEY
: OpenAI API密钥(已废弃,现在通过Web界面配置AI服务)LOG_LEVEL
: 日志级别(DEBUG, INFO, WARN, ERROR)
本地开发部署
后端部署
进入后端目录
cd backend
安装依赖
go mod download
配置数据库
# 启动MySQL数据库
docker run -d --name mailman-mysql \
-e MYSQL_ROOT_PASSWORD=rootpassword \
-e MYSQL_DATABASE=mailman \
-e MYSQL_USER=mailman \
-e MYSQL_PASSWORD=mailmanpassword \
-p 3306:3306 \
mysql:8.0
设置环境变量
export DB_HOST=localhost
export DB_PORT=3306
export DB_USER=mailman
export DB_PASSWORD=mailmanpassword
export DB_NAME=mailman
# export OPENAI_API_KEY=your-openai-api-key # 已废弃,现在通过Web界面配置AI服务
运行后端服务
go run cmd/mailman/main.go
前端部署
进入前端目录
cd frontend
安装依赖
npm install
配置环境变量
cp .env.local.example .env.local
# 编辑.env.local文件设置API地址
启动开发服务器
npm run dev
生产环境部署
构建前端
cd frontend
npm run build
构建后端
cd backend
go build -o mailman cmd/mailman/main.go
使用生产配置
docker-compose -f docker-compose.yml up -d
⚙️ 配置说明
环境变量
数据库配置
DB_DRIVER=mysql
DB_HOST=localhost
DB_PORT=3306
DB_USER=mailman
DB_PASSWORD=mailmanpassword
DB_NAME=mailman
DB_SSLMODE=disable
AI服务配置
⚠️ 重要变更:AI服务配置已改为通过Web界面管理,不再使用环境变量。
部署完成后,请通过前端界面配置AI服务:
- 登录到前端界面
- 进入”设置”或”AI配置”页面
- 添加您的AI服务提供商配置(OpenAI、Claude、Gemini等)
- 设置API密钥、基础URL和模型等参数
服务器配置
SERVER_HOST=0.0.0.0
SERVER_PORT=8080
LOG_LEVEL=INFO
邮件账户配置
支持的邮件协议:
- IMAP: Gmail, Outlook, Yahoo Mail等
- Exchange: Microsoft Exchange Server
- POP3: 传统POP3协议
配置示例:
{
"provider": "gmail",
"email": "user@gmail.com",
"password": "app-password",
"imap_host": "imap.gmail.com",
"imap_port": 993,
"smtp_host": "smtp.gmail.com",
"smtp_port": 587,
"use_tls": true
}
📚 API文档
Swagger文档
启动后端服务后,可访问:
- URL: http://localhost:8080/swagger/index.html
- 格式: OpenAPI 3.0
主要API端点
认证相关
POST /api/auth/login
– 用户登录POST /api/auth/logout
– 用户登出GET /api/auth/user
– 获取用户信息
邮件账户
GET /api/accounts
– 获取邮件账户列表POST /api/accounts
– 添加邮件账户PUT /api/accounts/{id}
– 更新邮件账户DELETE /api/accounts/{id}
– 删除邮件账户
邮件管理
GET /api/emails
– 获取邮件列表GET /api/emails/{id}
– 获取邮件详情POST /api/emails/sync
– 同步邮件POST /api/emails/search
– 全局邮件搜索GET /api/emails/search/global
– 高级全局搜索POST /api/emails/extract
– 邮件数据提取GET /api/emails/stats
– 邮件统计信息
触发器
GET /api/triggers
– 获取触发器列表POST /api/triggers
– 创建触发器PUT /api/triggers/{id}
– 更新触发器DELETE /api/triggers/{id}
– 删除触发器
OAuth2认证
GET /api/oauth2/providers
– 获取支持的OAuth2提供商POST /api/oauth2/authorize
– 发起OAuth2授权GET /api/oauth2/callback/{provider}
– OAuth2回调处理POST /api/oauth2/refresh
– 刷新访问令牌DELETE /api/oauth2/revoke
– 撤销授权
AI功能
GET /api/ai/config
– 获取AI配置列表POST /api/ai/config
– 创建AI配置PUT /api/ai/config/{id}
– 更新AI配置DELETE /api/ai/config/{id}
– 删除AI配置POST /api/ai/config/{id}/test
– 测试AI配置POST /api/ai/extract
– AI内容提取POST /api/ai/template/generate
– AI生成提取模板GET /api/ai/templates
– 获取AI模板列表
同步配置
GET /api/sync/config
– 获取同步配置POST /api/sync/config
– 创建同步配置PUT /api/sync/config/{id}
– 更新同步配置POST /api/sync/start
– 启动邮件同步POST /api/sync/stop
– 停止邮件同步
🔧 功能使用指南
添加邮件账户
- 登录系统后,点击”账户管理”
- 点击”添加账户”按钮
- 选择邮件提供商(Gmail、Outlook等)
- 输入邮件地址和认证信息
- 测试连接并保存
配置OAuth2认证
- 进入”设置” → “OAuth2配置”
- 选择邮件提供商(Gmail、Outlook等)
- 填写OAuth2应用信息:
- 客户端ID (Client ID)
- 客户端密钥 (Client Secret)
- 重定向URI
- 保存配置并测试连接
- 完成OAuth2授权流程
配置AI服务
- 进入”设置” → “AI配置”
- 点击”添加AI配置”
- 选择AI提供商(OpenAI、Claude、Gemini)
- 填写配置信息:
- 配置名称
- API密钥
- 模型名称(可选)
- API端点(可选)
- 测试配置连接
- 设置为默认AI服务(可选)
全局邮件搜索
- 在顶部导航栏找到搜索框
- 输入搜索关键词
- 使用高级搜索选项:
- 发件人过滤
- 时间范围
- 邮件状态
- 账户筛选
- 查看搜索结果并进行操作
邮件同步管理
- 进入”邮件” → “同步管理”
- 配置同步设置:
- 同步频率(实时/定时)
- 同步范围(全量/增量)
- 邮件数量限制
- 启动自动同步
- 监控同步状态和日志
使用AI功能
- 在邮件详情页面,点击”AI助手”
- 选择AI功能:
- 内容提取:提取邮件中的关键信息
- 智能分类:自动分类邮件类型
- 内容摘要:生成邮件摘要
- 模板生成:创建提取模板
- 配置AI参数和提示词
- 执行AI分析并查看结果
- 保存或应用AI处理结果