feat: unify email identity and administrator security
Docker Release / Check web and api (push) Waiting to run
Docker Release / Resolve release tag (push) Blocked by required conditions
Docker Release / Build and publish all-in-one (push) Blocked by required conditions
Docker Release / Build and publish api (push) Blocked by required conditions
Docker Release / Build and publish web (push) Blocked by required conditions
Docker Release / Build and publish dovecot (push) Blocked by required conditions
Docker Release / Build and publish postfix (push) Blocked by required conditions
Docker Release / Build and publish rspamd (push) Blocked by required conditions
Docker Release / Create GitHub release (push) Blocked by required conditions
Docker Release / Check web and api (push) Waiting to run
Docker Release / Resolve release tag (push) Blocked by required conditions
Docker Release / Build and publish all-in-one (push) Blocked by required conditions
Docker Release / Build and publish api (push) Blocked by required conditions
Docker Release / Build and publish web (push) Blocked by required conditions
Docker Release / Build and publish dovecot (push) Blocked by required conditions
Docker Release / Build and publish postfix (push) Blocked by required conditions
Docker Release / Build and publish rspamd (push) Blocked by required conditions
Docker Release / Create GitHub release (push) Blocked by required conditions
This commit is contained in:
+6
-5
@@ -10,9 +10,9 @@
|
||||
bash <(curl -fsSL https://raw.githubusercontent.com/zxyszx/NewSzxcn-Email/main/install.sh)
|
||||
```
|
||||
|
||||
安装脚本会依次询问防火墙配置、邮件服务器域名、管理员用户名和密码,以及 Web 部署方式。选择“自动配置 Nginx + SSL”时,脚本会安装 Nginx,并使用官方 `acme.sh` 申请 Let's Encrypt 证书。
|
||||
安装脚本会依次询问防火墙配置、邮件服务器域名、邮箱地址域名、管理员邮箱和密码,以及 Web 部署方式。选择“自动配置 Nginx + SSL”时,脚本会安装 Nginx,并使用官方 `acme.sh` 申请 Let's Encrypt 证书。
|
||||
|
||||
安装完成后,请记录终端中显示的访问地址、管理员用户名和初始密码。初始密码仅在安装时显示;如果以后在后台修改密码,请以新密码为准。
|
||||
安装完成后,请记录终端中显示的访问地址、管理员邮箱和初始密码。初始密码仅在安装时显示;如果以后在后台修改密码,请以新密码为准。
|
||||
|
||||
## 登录入口
|
||||
|
||||
@@ -23,7 +23,7 @@ bash <(curl -fsSL https://raw.githubusercontent.com/zxyszx/NewSzxcn-Email/main/i
|
||||
| 邮箱前台 | `https://mail.example.com/` | 收发邮件、申请邮箱和账号设置 |
|
||||
| 管理后台 | `https://mail.example.com/admin` | 管理域名、账号、邮箱、DNS 和系统设置 |
|
||||
|
||||
管理员账号是安装时填写的用户名,默认为 `admin`。管理员用户名不是邮箱地址。
|
||||
管理员账号是安装时创建的完整邮箱地址,默认为 `admin@邮箱地址域名`。前台和后台都只能使用完整主登录邮箱 + 密码登录,显示名称仅用于页面展示。
|
||||
|
||||
## 首次配置
|
||||
|
||||
@@ -105,13 +105,14 @@ sudo newszxcn-email rollback
|
||||
sudo newszxcn-email guide
|
||||
sudo newszxcn-email credentials
|
||||
sudo newszxcn-email reset-password
|
||||
sudo newszxcn-email reset-2fa
|
||||
```
|
||||
|
||||
命令行更新会创建完整回滚快照、校验 SQLite 数据库备份、拉取最新镜像并执行健康检查。`rollback` 命令会先备份当前数据库并要求确认,然后恢复上次更新前的镜像、数据库、Compose、环境、安装脚本和 Nginx 配置。回滚镜像会保持锁定,下一次执行更新时解除。
|
||||
|
||||
`guide` 命令会读取当前安装地址、管理员用户名、证书到期时间和 acme.sh 续期状态,重新生成仅 root 可读的 `/root/newszxcn-email-guide.txt`。
|
||||
`guide` 命令会读取当前安装地址、管理员邮箱、证书到期时间和 acme.sh 续期状态,重新生成仅 root 可读的 `/root/newszxcn-email-guide.txt`。
|
||||
|
||||
`credentials` 显示安装或最近一次命令行重置时记录的管理员登录信息。数据库只保存 bcrypt 密码哈希,无法反向查看真实密码;若管理员后来在网页修改过密码,记录值可能已经失效。忘记密码时执行 `reset-password`,脚本会先备份并校验数据库,然后重置配置管理员的统一登录密码,同时同步该管理员名下邮箱的 SMTP/IMAP 密码。该操作不会修改普通用户或其邮箱。
|
||||
`credentials` 显示安装或最近一次命令行重置时记录的管理员登录信息。数据库只保存 bcrypt 密码哈希,无法反向查看真实密码;若管理员后来在网页修改过密码,记录值可能已经失效。忘记密码时执行 `reset-password`,脚本会先备份并校验数据库,然后按管理员邮箱重置唯一管理员的统一登录密码,同时同步该管理员名下邮箱的 SMTP/IMAP 密码。该操作不会修改普通用户或其邮箱。唯一管理员因双因素认证无法登录时,可执行 `reset-2fa` 应急关闭管理员 2FA,登录后应重新绑定并保存新的恢复码。
|
||||
|
||||
超级管理员也可以点击管理后台侧栏中的版本号,在版本更新页面检查并安装新版本。
|
||||
|
||||
|
||||
@@ -0,0 +1,176 @@
|
||||
# NewSzxcn Email 问题台账
|
||||
|
||||
本文件是 NewSzxcn Email 的单一问题台账。所有问题保留唯一编号和完整历史,不重复建立“历史问题”副本。
|
||||
|
||||
## 管理模式
|
||||
|
||||
- 当前任务是唯一长期运行的 NewSzxcn 项目任务。
|
||||
- 内部按项目总览、问题中心、前端、后端、邮件核心、部署运维、质量复核、文档发布分类管理。
|
||||
- 用户提出问题后,默认在同一任务内完成分类、资料查询、代码/服务器调查、修复、测试、复核和发布门禁。
|
||||
- 只有问题确实复杂且用户同意时,才临时开启专项任务。
|
||||
- 用户明确说“先记录”“不要修改”“等问题多了一起处理”时,只登记和调查,不实施产品代码修改。
|
||||
|
||||
## 状态
|
||||
|
||||
允许状态:新反馈、待复现、待确认、待处理、处理中、待验收、已完成、已归档。
|
||||
|
||||
固定流程:收集问题 -> 复现 -> 用户确认批次 -> 实现 -> 回归 -> CI -> 全部镜像完成 -> Release -> 通知更新 -> 线上验收。
|
||||
|
||||
发布门禁:CI 未通过不得进入 Release;全部镜像未完成不得通知更新。
|
||||
|
||||
## 模块职责
|
||||
|
||||
| 分类 | 责任 |
|
||||
| --- | --- |
|
||||
| 项目总览 | 统一编号、状态流转、批次确认、冲突协调、发布门禁 |
|
||||
| 问题中心 | 问题收集、复现证据、影响面、严重度、完整历史 |
|
||||
| 前端 | Web 页面、交互、批量操作、权限可见性、前端构建 |
|
||||
| 后端 | API、鉴权、数据库、业务校验、后台任务 |
|
||||
| 邮件核心 | IMAP/SMTP、Postfix、Dovecot、Rspamd、Maildir、投递与同步 |
|
||||
| 部署运维 | install.sh、Docker、Compose、Nginx、CI/CD、服务器调查 |
|
||||
| 质量复核 | 独立复核、回归测试、风险确认、验收建议 |
|
||||
| 文档发布 | 版本说明、部署说明、Release 文案、更新通知 |
|
||||
|
||||
## 问题列表
|
||||
|
||||
| 编号 | 日期 | 状态 | 模块 | 现象 | 严重度 | 目标版本 | 发布状态 |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| NSX-20260804-001 | 2026-08-04 | 已完成 | 前端主责;后端、邮件核心协作 | 全部邮箱批量移动到自定义文件夹失败 | S2 | v1.2.14 | 随 v1.2.14 发布 |
|
||||
| NSX-20260804-002 | 2026-08-04 | 已完成 | 前端/UI/响应式布局 | 邮箱选择器展开后宽度变窄 | S3 | v1.2.14 | 随 v1.2.14 发布 |
|
||||
| NSX-20260805-003 | 2026-08-05 | 已完成 | 前端/UI/布局稳定性 | 邮箱页与设置页侧栏宽度/边框位置不一致 | S3 | v1.2.14 | 随 v1.2.14 发布 |
|
||||
|
||||
## NSX-20260804-001
|
||||
|
||||
| 字段 | 内容 |
|
||||
| --- | --- |
|
||||
| 编号 | NSX-20260804-001 |
|
||||
| 日期 | 2026-08-04 |
|
||||
| 状态 | 已完成 |
|
||||
| 模块 | 前端主责;后端、邮件核心协作;质量复核待后续介入 |
|
||||
| 现象 | 全部邮箱批量移动到自定义文件夹失败 |
|
||||
| 截图 | 待用户补充 |
|
||||
| 复现步骤 | 待补充。已知描述:选择全部邮箱后,批量移动到自定义文件夹失败。 |
|
||||
| 影响 | 影响批量整理邮件,用户可能只能逐封或分批移动;是否造成数据错位或丢失待复现确认。 |
|
||||
| 严重度 | S2 |
|
||||
| 根因 | 全部邮箱视图中批量移动沿用单邮箱移动路径,目标自定义文件夹没有按消息所属邮箱分别解析/创建,跨邮箱消息会出现 `failed to move message`。 |
|
||||
| 关联提交 | 未提交;关联工作区文件:`apps/api/internal/app/mail_handlers.go`、`apps/web/src/pages/mail.tsx`、`apps/web/src/lib/api.ts`、`apps/api/internal/app/app_test.go`。 |
|
||||
| 目标版本 | v1.2.14 |
|
||||
| 测试结果 | 已完成 Go 全量测试、go vet、前端 check/build、安装脚本测试和 ShellCheck;批量移动回归测试覆盖跨邮箱、自定义文件夹及部分失败结果。 |
|
||||
| 发布状态 | 随 v1.2.14 发布。 |
|
||||
|
||||
### 分派
|
||||
|
||||
| 分类 | 处理方式 |
|
||||
| --- | --- |
|
||||
| 项目总览 | 已纳入本批实施,当前状态待验收,未进入发布。 |
|
||||
| 问题中心 | 已补充根因和实现证据;等待完整回归和用户线上验收。 |
|
||||
| 前端 | 已接入批量移动接口并展示中文成功/失败明细。 |
|
||||
| 后端 | 已实现批量移动接口,按消息所属邮箱隔离处理目标文件夹和权限。 |
|
||||
| 邮件核心 | 已保持消息所属邮箱和文件夹映射隔离,完整运行回归待主任务执行。 |
|
||||
| 部署运维 | 暂无服务器动作;涉及线上日志或容器状态时再介入。 |
|
||||
| 质量复核 | 修复后独立复核批量移动、部分失败、权限边界、回归风险。 |
|
||||
| 文档发布 | 进入版本批次后整理发布说明;全部镜像完成后才可通知更新。 |
|
||||
|
||||
### 历史
|
||||
|
||||
| 时间 | 记录 |
|
||||
| --- | --- |
|
||||
| 2026-08-04 | 用户指定切换为精简单任务模式,并要求“全部邮箱批量移动到自定义文件夹失败”继续只调查不修改,等待汇总更多问题。 |
|
||||
| 2026-08-04 | 项目总控建立唯一问题编号 NSX-20260804-001,状态设为待复现。 |
|
||||
| 2026-08-05 | 用户确认本批继续实施;已实现可靠批量移动接口并接入前端批量移动入口,状态流转为待验收。 |
|
||||
|
||||
## NSX-20260804-002
|
||||
|
||||
| 字段 | 内容 |
|
||||
| --- | --- |
|
||||
| 编号 | NSX-20260804-002 |
|
||||
| 日期 | 2026-08-04 |
|
||||
| 状态 | 已完成 |
|
||||
| 模块 | 前端/UI/响应式布局;质量复核待后续介入 |
|
||||
| 现象 | 左侧栏选择具体邮箱账号后,顶部邮箱选择器和展开菜单比“全部邮箱”状态明显变窄,邮箱地址显示为 `crrhuawei@new...`,下拉项也被过早截断。右侧复制按钮占位后,选择器宽度发生变化。 |
|
||||
| 截图 | `/var/folders/wg/mx262rx107b8j614sq2mnmy00000gn/T/codex-clipboard-fadc6a64-ce13-4a5e-ae8f-5de7e7756e62.png` |
|
||||
| 复现步骤 | 1. 打开邮箱左侧栏。 2. 从“全部邮箱”切换到具体邮箱账号。 3. 展开顶部邮箱选择器。 4. 观察选择器宽度、展开菜单宽度、邮箱地址截断和复制按钮出现后的布局变化。 |
|
||||
| 影响 | 影响账号切换区域的可读性和稳定性;邮箱地址过早截断,复制按钮出现时造成布局跳变。 |
|
||||
| 严重度 | S3 |
|
||||
| 根因 | 邮箱选择器右侧复制按钮只在具体邮箱状态占位,触发区域宽度随状态变化;下拉菜单宽度跟随被挤压后的触发区域,导致邮箱地址过早截断。 |
|
||||
| 关联提交 | 未提交;关联工作区文件:`apps/web/src/pages/mail.tsx`。 |
|
||||
| 目标版本 | v1.2.14 |
|
||||
| 测试结果 | 前端 check/build 通过;桌面浏览器验证“全部邮箱”和具体邮箱状态均保留复制按钮固定槽位,具体邮箱触发区宽 225px;390×844 移动端无横向溢出。 |
|
||||
| 发布状态 | 随 v1.2.14 发布。 |
|
||||
|
||||
### 期望
|
||||
|
||||
邮箱选择器在“全部邮箱”和具体邮箱两种状态下保持原来的稳定长度;展开菜单宽度与选择区域协调,尽量完整显示邮箱地址;复制按钮出现时不能挤压选择器或造成布局跳变。
|
||||
|
||||
### 关联
|
||||
|
||||
与此前“全部邮箱选择器长度、复制按钮出现后布局变化”反馈关联;本条作为可复现回归继续保留,不合并归档。
|
||||
|
||||
### 分派
|
||||
|
||||
| 分类 | 处理方式 |
|
||||
| --- | --- |
|
||||
| 项目总览 | 已纳入本批实施,当前状态待验收,未进入发布。 |
|
||||
| 问题中心 | 保留截图路径、现象、期望和关联背景;已补充根因和实现证据。 |
|
||||
| 前端 | 已固定复制按钮占位和下拉菜单宽度,等待桌面/移动验收。 |
|
||||
| 后端 | 暂无介入需求。 |
|
||||
| 邮件核心 | 暂无介入需求。 |
|
||||
| 部署运维 | 暂无介入需求。 |
|
||||
| 质量复核 | 修复后复核“全部邮箱”和具体邮箱两种状态、展开菜单、长邮箱地址、复制按钮出现前后布局稳定性。 |
|
||||
| 文档发布 | 进入版本批次后整理发布说明;全部镜像完成后才可通知更新。 |
|
||||
|
||||
### 历史
|
||||
|
||||
| 时间 | 记录 |
|
||||
| --- | --- |
|
||||
| 2026-08-04 | 用户新增“邮箱选择器展开后宽度变窄”待处理问题,要求只登记,不修改。 |
|
||||
| 2026-08-04 | 项目总控建立唯一问题编号 NSX-20260804-002,状态设为待处理。 |
|
||||
| 2026-08-05 | 用户确认本批继续实施;已固定复制按钮占位和下拉菜单宽度,状态流转为待验收。 |
|
||||
|
||||
## NSX-20260805-003
|
||||
|
||||
| 字段 | 内容 |
|
||||
| --- | --- |
|
||||
| 编号 | NSX-20260805-003 |
|
||||
| 日期 | 2026-08-05 |
|
||||
| 状态 | 已完成 |
|
||||
| 模块 | 前端/UI/布局稳定性;质量复核待后续介入 |
|
||||
| 现象 | 邮箱页面左侧栏明显更宽,设置页面侧栏变窄,垂直分隔边框与主内容起点改变;点击齿轮切换时产生页面左右跳动和“页面变来变去”的感觉。 |
|
||||
| 截图 | 邮箱页:`/var/folders/wg/mx262rx107b8j614sq2mnmy00000gn/T/codex-clipboard-e293b3f1-7797-49ec-b5f9-b7de08ba4c6c.png`;设置页:`/var/folders/wg/mx262rx107b8j614sq2mnmy00000gn/T/codex-clipboard-89b85640-d262-4b1c-8996-cd097036614e.png` |
|
||||
| 复现步骤 | 1. 打开邮箱页面。 2. 观察左侧栏宽度、垂直分隔线、顶部栏高度和主内容起点。 3. 点击齿轮进入设置页面。 4. 对比设置页侧栏宽度、分隔线位置和主内容起点。 5. 返回邮箱页,观察页面是否左右跳动。 |
|
||||
| 影响 | 影响应用壳层稳定性和页面切换体验;邮箱页与设置页布局不一致会造成明显跳动,并可能影响邮箱选择器可用宽度。 |
|
||||
| 严重度 | S3 |
|
||||
| 根因 | 邮箱页和设置页分别使用独立侧栏宽度,设置页硬编码宽度小于邮箱页,导致切换时分隔线与主内容起点变化。 |
|
||||
| 关联提交 | 未提交;关联工作区文件:`apps/web/src/index.css`、`apps/web/src/pages/profile.tsx`、`apps/web/src/pages/mail.tsx`。 |
|
||||
| 目标版本 | v1.2.14 |
|
||||
| 测试结果 | 前端 check/build 通过;桌面浏览器实测邮箱页与设置页侧栏均为 288px,页面宽 1440px 且无横向溢出;390×844 移动端邮箱和设置页面均无横向溢出、遮挡或控制台错误。 |
|
||||
| 发布状态 | 随 v1.2.14 发布。 |
|
||||
|
||||
### 期望
|
||||
|
||||
邮箱和设置页面使用统一的应用壳层尺寸;侧栏宽度、垂直分隔线、顶部栏高度和主内容起点保持一致,只替换内部导航内容。后续方案需核对桌面与移动端,不允许使用会挤压邮箱选择器的临时宽度。
|
||||
|
||||
### 批次关联
|
||||
|
||||
纳入即将给用户确认的前端/UI/布局稳定性候选批次。与 NSX-20260804-002 均涉及邮箱页左侧区域布局稳定性,但本条关注跨页面应用壳层尺寸一致性,保持独立编号。
|
||||
|
||||
### 分派
|
||||
|
||||
| 分类 | 处理方式 |
|
||||
| --- | --- |
|
||||
| 项目总览 | 已纳入本批实施,当前状态待验收,未进入发布。 |
|
||||
| 问题中心 | 保留两张截图路径、现象、期望和验收注意事项;已补充根因和实现证据。 |
|
||||
| 前端 | 已统一邮箱页与设置页应用壳层侧栏宽度变量,等待桌面/移动验收。 |
|
||||
| 后端 | 暂无介入需求。 |
|
||||
| 邮件核心 | 暂无介入需求。 |
|
||||
| 部署运维 | 暂无介入需求。 |
|
||||
| 质量复核 | 修复后独立复核桌面与移动端页面切换稳定性,确认不会挤压邮箱选择器或造成新的布局跳变。 |
|
||||
| 文档发布 | 进入版本批次后整理发布说明;全部镜像完成后才可通知更新。 |
|
||||
|
||||
### 历史
|
||||
|
||||
| 时间 | 记录 |
|
||||
| --- | --- |
|
||||
| 2026-08-05 | 用户新增“邮箱页与设置页侧栏宽度/边框位置不一致”待处理问题,要求只登记并纳入即将确认的批次方案,现在不要修改。 |
|
||||
| 2026-08-05 | 项目总控建立唯一问题编号 NSX-20260805-003,状态设为待处理。 |
|
||||
| 2026-08-05 | 用户确认本批继续实施;已统一应用壳层侧栏宽度变量,状态流转为待验收。 |
|
||||
Reference in New Issue
Block a user