Files
webmail-gateway/README.md
porsche5130 b3c8c28672 Initial commit: WebMail Gateway with PKCE support
- Multi-tenant routing support
- Keycloak SSO integration with PKCE
- Basic inbox functionality
- Redis session management
2026-03-04 01:17:25 +08:00

116 lines
2.6 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.
# WebMail Gateway
多租戶 WebMail Gateway整合 Keycloak SSO 和 IMAP/SMTP 郵件服務。
## 功能
- 🔐 Keycloak SSO 整合 (支援 PKCE)
- 📧 IMAP/SMTP 郵件收發
- 🏢 多租戶支援 (路徑參數路由)
- 🔄 Redis Session 管理
- 🎨 多主題支援 (待恢復)
- 📎 附件支援 (待恢復)
## 技術架構
- **後端**: FastAPI + Python 3.11
- **資料庫**: PostgreSQL (Virtual MIS Database)
- **快取**: Redis
- **認證**: Keycloak OAuth 2.0 + PKCE
- **郵件**: IMAP (port 143) / SMTP (port 587)
- **部署**: Docker + Traefik
## 開發環境
### 目錄結構
```
webmail-gateway/
├── app.py # 主程式
├── requirements.txt # Python 依賴
├── Dockerfile # Docker 映像檔定義
├── docker-compose.yml # Docker Compose 配置
└── README.md # 說明文件
```
### 本地開發
```bash
# 安裝依賴
pip install -r requirements.txt
# 設定環境變數
export REDIS_HOST=10.1.0.20
export REDIS_PORT=6379
export REDIS_PASSWORD=DC1qaz2wsx
export REDIS_DB=2
export DATABASE_URL=postgresql://admin:DC1qaz2wsx@10.1.0.20:5433/virtual_mis
export KEYCLOAK_SERVER_URL=https://auth.lab.taipei
# 啟動開發伺服器
uvicorn app:app --host 0.0.0.0 --port 8000 --reload
```
### 部署到正式環境
```bash
# 1. 推送到 Gitea
git add .
git commit -m "Update WebMail Gateway"
git push origin main
# 2. SSH 到伺服器
ssh porsche@10.1.0.254
# 3. 拉取最新代碼
cd /home/porsche/services/webmail-gateway
git pull
# 4. 重建並啟動容器
docker compose down
docker compose build
docker compose up -d
```
## 多租戶路由
### 訪問方式
- **vmis-admin 租戶**: https://webmail.lab.taipei/vmis-admin
- **porsche1 租戶**: https://webmail.lab.taipei/porsche1
- **其他租戶**: https://webmail.lab.taipei/{tenant_code}
### 自動導向邏輯
1. 使用者訪問 `/{tenant_code}`
2. 查詢租戶資訊 (從 Virtual MIS Database)
3. 取得對應的 Keycloak Realm
4. 生成 PKCE 參數
5. 導向 Keycloak 登入頁面
6. 回調處理並驗證 PKCE
7. 建立 Session 並導向收件匣
## Keycloak 配置
每個租戶的 Realm 都需要建立 `webmail` client
- **Client ID**: webmail
- **Client Type**: Public Client
- **PKCE**: Enabled (S256)
- **Standard Flow**: Enabled
- **Redirect URI**: https://webmail.lab.taipei/{tenant_code}/callback
## 待辦事項
- [ ] 恢復完整 Gmail 風格 UI
- [ ] 恢復主題切換功能
- [ ] 恢復郵件詳情 Modal
- [ ] 恢復批次刪除功能
- [ ] 恢復 Rich Text 編輯器
- [ ] 建立 Gitea 遠端倉庫
- [ ] 設定 CI/CD 流程
## 版本歷史
- **v1.0** (2026-03-04): 基礎 PKCE 支援 + 多租戶路由