Mailman - 智能邮件管理系统

Mailman 是一个功能强大的现代化邮件管理系统,提供邮件同步、智能解析、触发器自动化和AI助手等功能。支持多种邮件协议,具有直观的Web界面和强大的后端API。

开源: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助手

AI示例

🚀 快速开始

环境要求

  • Go: 1.23+
  • Node.js: 18+
  • MySQL: 8.0+
  • Docker: 最新版本(推荐)
  • Docker Compose: 最新版本

Mailman支持多种部署方式,满足不同场景的需求:

快速开始 (推荐)

使用Docker All-in-One镜像,一键启动完整系统:

1
2
3
4
5
docker run -d \
--name mailman \
-p 3000:3000 \
-v mailman_data:/app/data \
mailman:latest

使用Docker Compose部署(推荐)

克隆项目

1
2
git clone https://github.com/seongminhwan/mailman.git
cd mailman

配置环境变量

1
2
cp .env.example .env
# 编辑.env文件,设置必要的环境变量

启动服务

1
docker-compose up -d

访问应用

使用All-in-One镜像部署

All-in-One镜像包含了完整的前端和后端服务,是最简单的部署方式。

使用SQLite数据库(推荐)

1
2
3
4
5
6
7
# 基础部署 - 使用SQLite数据库
docker run -d \
--name mailman \
-p 80:80 \
-p 8080:8080 \
-v mailman_data:/app \
ghcr.io/seongminhwan/mailman-all:latest

数据持久化配置

为了确保数据持久化,建议使用以下配置:

1
2
3
4
5
6
7
8
9
10
11
12
# 创建数据目录
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数据库

1
2
3
4
5
6
7
8
9
10
11
12
# 连接外部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

完整配置示例

1
2
3
4
5
6
7
8
9
10
11
12
# 包含所有常用配置的完整示例
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

重要注意事项

⚠️ 数据库文件挂载注意事项

  1. 数据目录权限:确保挂载的数据目录有正确的读写权限
  2. SQLite文件位置:SQLite数据库文件默认保存在 /app/mailman.db
  3. 数据备份:定期备份 /app 目录中的数据文件
  4. 容器更新:更新容器时,数据目录挂载确保数据不丢失

📋 端口说明

  • 80: 前端Web界面
  • 8080: 后端API服务

🔧 环境变量配置

  • DB_DRIVER: 数据库类型(sqlitemysql
  • DB_NAME: 数据库名称或SQLite文件路径
  • OPENAI_API_KEY: OpenAI API密钥(已废弃,现在通过Web界面配置AI服务)
  • LOG_LEVEL: 日志级别(DEBUG, INFO, WARN, ERROR)

本地开发部署

后端部署

进入后端目录

1
cd backend

安装依赖

1
go mod download

配置数据库

1
2
3
4
5
6
7
8
# 启动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

设置环境变量

1
2
3
4
5
6
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服务

运行后端服务

1
go run cmd/mailman/main.go

前端部署

进入前端目录

1
cd frontend

安装依赖

1
npm install

配置环境变量

1
2
cp .env.local.example .env.local
# 编辑.env.local文件设置API地址

启动开发服务器

1
npm run dev

生产环境部署

构建前端

1
2
cd frontend
npm run build

构建后端

1
2
cd backend
go build -o mailman cmd/mailman/main.go

使用生产配置

1
docker-compose -f docker-compose.yml up -d

⚙️ 配置说明

环境变量

数据库配置

1
2
3
4
5
6
7
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服务:

  1. 登录到前端界面
  2. 进入”设置”或”AI配置”页面
  3. 添加您的AI服务提供商配置(OpenAI、Claude、Gemini等)
  4. 设置API密钥、基础URL和模型等参数

服务器配置

1
2
3
SERVER_HOST=0.0.0.0
SERVER_PORT=8080
LOG_LEVEL=INFO

邮件账户配置

支持的邮件协议:

  • IMAP: Gmail, Outlook, Yahoo Mail等
  • Exchange: Microsoft Exchange Server
  • POP3: 传统POP3协议

配置示例:

1
2
3
4
5
6
7
8
9
10
{
"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文档

启动后端服务后,可访问:

主要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 - 停止邮件同步

🔧 功能使用指南

添加邮件账户

  1. 登录系统后,点击”账户管理”
  2. 点击”添加账户”按钮
  3. 选择邮件提供商(Gmail、Outlook等)
  4. 输入邮件地址和认证信息
  5. 测试连接并保存

配置OAuth2认证

  1. 进入”设置” → “OAuth2配置”
  2. 选择邮件提供商(Gmail、Outlook等)
  3. 填写OAuth2应用信息:
    • 客户端ID (Client ID)
    • 客户端密钥 (Client Secret)
    • 重定向URI
  4. 保存配置并测试连接
  5. 完成OAuth2授权流程

配置AI服务

  1. 进入”设置” → “AI配置”
  2. 点击”添加AI配置”
  3. 选择AI提供商(OpenAI、Claude、Gemini)
  4. 填写配置信息:
    • 配置名称
    • API密钥
    • 模型名称(可选)
    • API端点(可选)
  5. 测试配置连接
  6. 设置为默认AI服务(可选)

全局邮件搜索

  1. 在顶部导航栏找到搜索框
  2. 输入搜索关键词
  3. 使用高级搜索选项:
    • 发件人过滤
    • 时间范围
    • 邮件状态
    • 账户筛选
  4. 查看搜索结果并进行操作

邮件同步管理

  1. 进入”邮件” → “同步管理”
  2. 配置同步设置:
    • 同步频率(实时/定时)
    • 同步范围(全量/增量)
    • 邮件数量限制
  3. 启动自动同步
  4. 监控同步状态和日志

使用AI功能

  1. 在邮件详情页面,点击”AI助手”
  2. 选择AI功能:
    • 内容提取:提取邮件中的关键信息
    • 智能分类:自动分类邮件类型
    • 内容摘要:生成邮件摘要
    • 模板生成:创建提取模板
  3. 配置AI参数和提示词
  4. 执行AI分析并查看结果
  5. 保存或应用AI处理结果