Skip to content

TQZHR/outlookjiema

Repository files navigation

OutlookEmail 多用户版

本仓库是由 TQZHR 维护的 Outlook/Hotmail 邮箱管理和接码工具,基于原 assast/outlookEmail 项目继续改造。当前版本重点是多用户隔离、管理密钥授权、账号池管理、定时刷新、邮件转发,以及本地 Flask、Docker 和 Cloudflare Worker Native Backend 三种运行方式。

核心领域模型、权限边界和运行时约束见 ADT 文档

主要能力

  • 多用户注册、登录、禁用、删除和管理员用户管理。
  • 管理员可管理全部用户和全部邮箱,普通用户只能访问本人数据。
  • 管理密钥按创建者授权,支持生成、轮换、禁用和审计。
  • Outlook/Hotmail OAuth + Microsoft Graph 取信和 refresh token 刷新。
  • 标准 IMAP 账号导入、文件夹解析、邮件详情和附件读取。
  • 邮箱分组、标签、别名、备注、批量移动、批量删除和批量转发开关。
  • 项目账号池接口,支持随机领取、成功完成、失败重置、别名邮箱模式和分组作用域。
  • 邮件验证码提取、收件箱/垃圾邮件/已删除邮件读取、批量标记已读和删除。
  • SMTP、Telegram、企业微信转发,多通道转发日志和失败排查。
  • 本地 APScheduler 定时刷新,Cloudflare Worker Cron 定时刷新和转发。
  • Cloudflare Worker Native Backend 使用 D1 存储,直接提供登录、账号、取信和转发 API,不依赖 Flask 源站代理。

运行方式

方式 适用场景 数据存储
Windows exe 桌面单机使用 %APPDATA%\OutlookEmail
本地 Python 开发、调试、小规模自用 data/outlook_accounts.db
Docker / Docker Compose 服务器部署 ./data volume
Cloudflare Worker Native Backend 无服务器部署、D1 存储、Worker Cron Cloudflare D1

快速开始

方式一:PowerShell 一键脚本

# 本地 Python 运行,会创建 .venv、.runtime/local.env 和 data/
.\scripts\deploy.ps1 -Target local -Port 5000

# Docker 运行,会生成 .env、SECRET_KEY、初始管理员和首次管理密钥
.\scripts\deploy.ps1 -Target docker -Port 5000

# Cloudflare Worker Native Backend + D1
$env:CLOUDFLARE_ACCOUNT_ID="your-account-id"
$env:CLOUDFLARE_API_TOKEN="your-api-token"
.\scripts\deploy.ps1 -Target cloudflare `
  -WorkerName outlookemail-native `
  -D1DatabaseName outlookemail-native `
  -AdminUsername admin `
  -AdminPassword "replace-with-a-strong-password"

启动后访问 http://127.0.0.1:5000 或脚本输出的 Worker 地址。

方式二:本地 Python

git clone https://github.com/TQZHR/outlookjiema.git
cd outlookjiema
pip install -r requirements.txt

export SECRET_KEY="$(python -c 'import secrets; print(secrets.token_hex(32))')"
export ADMIN_USERNAME=admin
export ADMIN_PASSWORD=replace-with-a-strong-password
python web_outlook_app.py

Windows PowerShell 可使用:

$env:SECRET_KEY = python -c "import secrets; print(secrets.token_hex(32))"
$env:ADMIN_USERNAME = "admin"
$env:ADMIN_PASSWORD = "replace-with-a-strong-password"
python web_outlook_app.py

方式三:Docker Compose

cp .env.example .env
# 编辑 .env,至少设置 SECRET_KEY 和 ADMIN_PASSWORD
docker compose up -d --build
docker compose logs -f

docker-compose.yml 默认从当前源码构建本地镜像 outlookemail:local,并把 ./data 挂载到容器内 /app/data

方式四:Cloudflare Worker

cd cloudflare-worker
npm install
npm run check

cd ..
$env:CLOUDFLARE_ACCOUNT_ID="your-account-id"
$env:CLOUDFLARE_API_TOKEN="your-api-token"
.\scripts\deploy.ps1 -Target cloudflare `
  -WorkerName outlookemail-native `
  -D1DatabaseName outlookemail-native `
  -AdminUsername admin `
  -AdminPassword "replace-with-a-strong-password"

脚本会创建或复用 D1 数据库、应用迁移、部署 Worker、写入 SECRET_KEYADMIN_USERNAMEADMIN_PASSWORD Worker secrets。CLOUDFLARE_API_TOKEN 只从当前进程环境读取,不会写入仓库。

初始账号和关键配置

变量 说明 默认值
SECRET_KEY Session、管理密钥哈希和敏感数据加密的根密钥 服务器部署必须显式设置
ADMIN_USERNAME 初始管理员用户名 admin
ADMIN_PASSWORD 初始管理员密码 admin
DATABASE_PATH Flask/SQLite 数据库路径 data/outlook_accounts.db
APP_RUNTIME 运行环境标识 local
SCHEDULER_ENABLED 是否启用 Flask 内置 APScheduler true
CORS_ALLOWED_ORIGINS 允许跨域调用 API 的 Origin,逗号分隔
MANAGEMENT_KEY_BOOTSTRAP 首次部署注入初始管理密钥

生产环境必须固定 SECRET_KEY。更换 SECRET_KEY 会导致已有 Session、管理密钥、refresh token 和邮箱密码无法继续验证或解密。

首次使用流程

  1. 设置 SECRET_KEYADMIN_USERNAMEADMIN_PASSWORD
  2. 启动本地、Docker 或 Worker 运行时。
  3. 使用管理员账号登录。
  4. 登录后立即修改管理员账号和密码。
  5. 按需开启普通用户注册和注册验证码。
  6. 用户分别导入自己的邮箱账号。
  7. 在账号列表点击邮箱后读取邮件和验证码。
  8. 在设置页生成管理密钥,用于外部系统或自动化 API 调用。

GitHub Actions

仓库包含以下工作流:

  • deploy-cloudflare-worker.yml:手动部署 Worker Native Backend + D1。
  • docker-build-push.yml:构建并推送 GHCR 镜像,镜像名随仓库变为 ghcr.io/tqzhr/outlookjiema
  • release.yml:按 vX.Y.Z 标签或手动输入版本构建 Windows 可执行文件、Docker 镜像和 GitHub Release。
  • sync-main-to-dev.yml:把 main 同步到 dev

Cloudflare 部署需要在仓库 Secrets 中配置:

  • CLOUDFLARE_ACCOUNT_ID
  • CLOUDFLARE_API_TOKEN
  • SECRET_KEY
  • ADMIN_PASSWORD

可选:

  • ADMIN_USERNAME
  • D1_DATABASE_ID

目录结构

路径 说明
web_outlook_app.py Flask 兼容入口,按 segment 加载主应用
outlook_web/segments/ Flask 数据模型、路由、取信、刷新、转发和调度逻辑
cloudflare-worker/ Worker Native Backend、D1 迁移和 Wrangler 配置
templates/ Flask 前端模板
static/ 前端 CSS、JS、图标和背景资源
scripts/ 本地、Docker、Cloudflare 一键部署脚本
tests/ Flask 多用户、项目池、IMAP、Worker 源码一致性测试
docs/ API、部署、安全、升级、排障和 ADT 文档

文档

文档 内容
ADT 文档 领域模型、权限不变量和运行时边界
API 文档 Session、管理密钥、对外 API 和业务 API
部署指南 本地、Docker、Worker、Actions 和环境变量
安全说明 密钥、加密、CSRF、XSS、审计和备份
升级指南 Docker、Windows、Python 和 Worker 升级策略
故障排查 登录、取信、密钥、数据库、Worker 和容器问题
Worker Native Backend Worker + D1 后端能力和部署检查
更新记录 TQZHR 维护版变更
发版说明 版本号、标签、Release 和镜像发布流程

上传和安全约定

仓库已通过 .gitignore 排除以下敏感或本地生成内容:

  • .env
  • data/
  • .runtime/
  • .venv/
  • cloudflare-worker/.dev.vars
  • cloudflare-worker/.wrangler/
  • node_modules/
  • 数据库、日志和构建产物

不要把真实 Cloudflare API Token、邮箱密码、refresh token、管理密钥、数据库文件或生产 SECRET_KEY 提交到 GitHub。

免责声明

本项目仅用于学习、研究和技术交流。使用者应遵守邮箱服务商、云平台和相关平台的服务条款,不得用于违规、滥用或非法用途。因使用本项目产生的风险和后果由使用者自行承担。

About

OutlookEmail multi-user Outlook/IMAP mailbox manager maintained by TQZHR.

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors