Commit Graph

241 Commits

Author SHA1 Message Date
LanQin_ 095d3ad247 feat(mail): 优化邮件编辑器与邮件同步行为
- 新增已发送文件夹导入测试,并让同步时自动将非收件箱邮件标记为已读。
- 优化编辑器工具栏交互,增强下拉菜单与按钮的悬停/选中态表现,并修复部分按钮点击时的选区丢失。
- 为加粗、列表、对齐等命令加入乐观切换,提升工具栏状态反馈的即时性。
2026-06-17 14:14:48 +08:00
LanQin_ a8c2fc852c feat(mail): 支持草稿与定时发送
- 新增草稿保存、草稿编辑/删除、定时发送列表与取消接口,并在后台加入待发送任务表与定时发送工作协程。
- 邮件撰写页支持草稿自动保存、定时发送弹窗、草稿入口识别,以及待发送视图与状态标记。
- 同步补充前端 API 类型与调用,并增加定时发送流程的后端测试。
2026-06-17 13:43:19 +08:00
LanQin_ f0044e477c feat(auth): 优化登录注册页面与人机验证展示
- 调整登录、注册页布局为更一致的卡片式结构,提升表单可读性与视觉层级。
- 为登录/注册按钮与状态区补充图标和文案,优化交互反馈。
- 让 Turnstile 验证组件支持自适应宽度并使用更合适的展示尺寸。
2026-06-17 10:35:56 +08:00
LanQin_ d008638046 feat(mail): 升级写信编辑器并移除 Markdown 依赖。
- 将正文编辑器改为富文本 `contentEditable`,支持字体、字号、颜色、高亮、对齐、列表、缩进等格式化操作。
- 新增抄送/密送显示切换与“分别发送”能力,优化收件人发送方式。
- 移除 `marked` 依赖,并同步精简 `turnstile-box` 的边框样式。
2026-06-17 09:44:46 +08:00
LanQin c21ebe43aa chore(deploy): 配置已发送邮件自动归档
- 为 `submission` 和 `smtps` 启用 `sender_bcc_maps`,将已认证发件人自动抄送到 `发件人+Sent@域名`。
- 补充 Postfix 与 Dovecot 的 `recipient_delimiter` 和 `lmtp_save_to_detail_mailbox` 配置,确保 `Sent` 文件夹可落盘保存。
- 更新部署文档,说明第三方客户端发信后的“已发送”同步流程。
2026-06-17 00:19:40 +08:00
LanQin 2029c8804a chore(deploy): 清理邮件服务 TLS 示例配置
- 移除 `docker-compose.yml` 中未启用的 TLS 证书环境变量示例,保持部署配置更简洁。
2026-06-17 00:08:36 +08:00
LanQin 811267e5b6 feat(deploy): 支持配置邮件客户端 TLS 证书
- 新增 `LANQIN_TLS_CERT_FILE` 和 `LANQIN_TLS_KEY_FILE`,让 Postfix 与 Dovecot 使用外部证书。
- 在单容器与分服务启动脚本中统一回退到 `localhost` 自签证书,并在证书不可读时给出告警。
- 补充部署文档与示例配置,说明第三方客户端校验证书的挂载方式。
2026-06-17 00:05:23 +08:00
LanQin 27ab80adb9 ci(docker): 简化 Docker 构建工作流
- 改用 `docker` 作为 Buildx driver,移除自定义 BuildKit 镜像配置。
- 删除构建缓存的 `cache-from` 和 `cache-to` 配置,精简镜像构建步骤。
2026-06-16 23:39:55 +08:00
LanQin 095607e35b ci(workflow): 指定 Docker Buildx 构建驱动镜像
- 为 `actions/setup-buildx-action` 配置 `driver-opts`。
- 固定 `buildkit` 镜像版本,提升构建环境一致性。
2026-06-16 23:36:01 +08:00
LanQin 5821d9aa30 feat(mail): 支持发件人名称展示与存储
- 为邮件消息新增 `fromName` 字段,并同步扩展数据库迁移、API 类型与前后端查询/入库逻辑。
- 解析入站邮件时提取并保存发件人名称,发信时将邮箱显示名写入 MIME `From` 头。
- 邮件列表、详情、通知与引用内容改为优先展示发件人名称,提升可读性。
2026-06-16 23:29:23 +08:00
LanQin 045132146b feat(mail): 增加签名管理与客户端配置
- 新增邮件签名的数据表、接口和前端管理页,支持全局/邮箱默认签名的创建、编辑、删除与查询。
- 写信时自动带入当前邮箱的默认签名,并优化手动输入内容时的覆盖行为。
- 补充第三方邮件客户端配置页,展示 IMAP/POP3/SMTP 连接信息及公共主机名。
- 扩展部署配置,开放 POP3S/SMTPS 端口并启用 Dovecot POP3 服务。
2026-06-16 23:15:35 +08:00
LanQin 9a0e039767 feat(mail): 增加新邮件通知提醒
- 新增收件箱轮询探测,用于发现新邮件到达。
- 在收到新邮件时触发站内提示、桌面通知和提示音。
- 补充通知状态缓存与自动刷新联动,避免重复提醒。
2026-06-16 22:45:10 +08:00
LanQin 9a8c38f51d ci(.github/workflows): 忽略 Docker 缓存写入错误
- 为 GitHub Actions 的 `cache-to` 配置补充 `ignore-error=true`,避免缓存写入失败影响构建流程。
2026-06-16 22:33:42 +08:00
LanQin b0cc425f61 chore(mail): 优化邮件投递超时与服务配置
- 为 SMTP 连接与前端发信请求增加更明确的超时控制。
- 调整 Postfix 与 Rspamd 代理配置,缩短相关处理超时并统一运行参数。
2026-06-16 22:28:04 +08:00
LanQin 4882a65e43 docs(admin): 精简 SMTP 配置说明
- 移除发信通道卡片中的重复提示文案。
- 保留页面内的默认配置说明,减少信息冗余。
2026-06-16 22:13:12 +08:00
LanQin 78e588264d chore(postfix): 配置 Postfix 的默认 TLS 证书
- 在 `postfix` 容器镜像中安装 `ssl-cert`。
- 为 `smtpd` 指定 snakeoil 证书和私钥路径,启用默认 TLS 配置。
2026-06-16 22:10:29 +08:00
LanQin b9b76c6b8c fix(smtp): 适配内置 Postfix 发信链路
- 后端按 SMTP 端口区分普通连接、STARTTLS 和隐式 TLS,避免发信流程在不同中继场景下异常。
- 前端调整管理员页的发信说明与字段文案,强调默认使用内置 Postfix。
2026-06-16 22:10:15 +08:00
LanQin 57fa0d0b57 chore(deploy): 兼容不同环境下的 rspamd 启动用户
- 在 `supervisord.conf` 中改为按用户存在情况动态选择 `rspamd` 启动参数。
- 当 `_rspamd` 和 `rspamd` 用户都不存在时,回退为 `--insecure` 启动。
2026-06-16 21:53:02 +08:00
LanQin 7788e93f0e chore(deploy): 调整 rspamd 与 dovecot 启动配置
- 为 `rspamd` 指定运行用户/组,提升容器内启动一致性。
- 将 `dovecot` 配置格式整理为多行块,保持配置可读性。
- 在 `rspamd` 入口脚本中按可用账号选择启动参数,并保留兜底启动方式。
2026-06-16 21:48:42 +08:00
LanQin_ 4fc933bc89 docs(deploy): 补充 SMTP 发信排查说明
- 说明单容器部署下 Webmail 发信的默认 Postfix 配置。
- 补充 `smtp delivery failed: EOF` 的排查命令与 `SMTP Require TLS` 注意事项。
- 调整 `deploy/postfix/master.cf` 中 `smtp/submission` 的监听标志,避免本机提交会话异常。
2026-06-16 21:21:56 +08:00
LanQin_ d87f635899 feat(admin,mail,profile): 增强邮件管理与交互体验
- 新增统一确认弹窗,替换多个删除/清理操作的直接执行。
- 管理后台支持首次配置引导、域名/邮箱/别名创建入口,以及邮件列表分页加载更多。
- 邮箱页改为分页拉取邮件,补充无邮箱状态、批量删除确认和“写邮件”可用性控制。
- 个人中心为联系人、清理、规则、拦截操作增加二次确认。
- 将 DKIM 密钥长度提升为 2048 位,增强安全性。
2026-06-16 15:40:38 +08:00
LanQin_ 3093be2222 fix(mail): 发送失败时返回 SMTP 错误
- 发送邮件时若 `SMTP` 投递失败,直接返回 `502 Bad Gateway`。
- 新增测试覆盖投递失败场景,确认错误信息会透出。
2026-06-16 15:10:28 +08:00
LanQin_ c1eb616759 feat(admin): 优化 DNS 记录展示与解析
- 为 DNS 记录补充说明文案,帮助理解 MX、SPF、DKIM、DMARC 的作用。
- 将 MX 记录目标改为 `PublicHostname`,避免固定指向 `mail` 子域。
2026-06-16 11:15:03 +08:00
LanQin_ bce4b5980e fix(dns): 修正 DNS 记录生成与展示
- 将 MX 记录指向 `mail.<域名>`,避免 `PublicHostname` 与域名相同导致 MX 回指自身。
- 优化管理页 DNS 记录与检测结果的说明和样式,提升可读性。
2026-06-16 11:07:45 +08:00
LanQin_ 5a1cc158a1 chore(deploy): 切换为本地目录挂载部署
- 将 `docker-compose` 中的数据、邮箱和 DKIM 存储从命名卷改为本地目录挂载。
- 删除不再需要的 `volumes` 声明,简化部署配置。
2026-06-16 10:52:04 +08:00
LanQin_ 8492a8bcf7 docs(README): 重写项目介绍与部署说明
- 补充技术栈徽章、功能特性与架构概览。
- 重新整理开发启动、部署流程与收发说明。
- 更新环境要求与默认管理员配置说明。
2026-06-16 10:45:58 +08:00
LanQin_ 061311d524 i18n(app): 本地化认证与邮箱申请提示
- 将登录、注册、双因素认证和邮箱申请相关错误提示改为简体中文。
- 统一优化校验失败、权限不足、资源冲突等场景的反馈文案。
2026-06-16 10:40:37 +08:00
LanQin_ 556389b734 feat(auth): 增强注册流程并完善默认邮箱初始化
- 注册页支持选择可用域名并自动创建邮箱,密码输入改为可见性切换组件。
- 后端默认管理员不再依赖固定密码,未配置时自动生成随机密码并创建对应域名、邮箱和欢迎消息。
- 公共配置接口返回可注册域名,补充 404 页面与相关路由。
- 更新测试以适配新的默认种子数据和邮箱创建逻辑。
2026-06-16 10:39:49 +08:00
LanQin_ 45122162d0 feat(auth): 重构认证流程并补充前端登录态保护
- 拆分后端认证处理与会话创建逻辑,支持登录、注册、退出、个人资料和改密接口
- 增加二次验证挑战、Turnstile 人机校验与旧版邮箱迁移清理
- 新增前端认证守卫、管理员访问控制、退出 Hook 与验证工具
- 统一抽离接口类型,优化登录页、注册页和个人资料页的认证交互
2026-06-16 10:10:21 +08:00
LanQin be8cd4be31 feat(mailbox): 支持用户自助申请邮箱
- 后端新增邮箱申请配置与接口,限制可申请域名并校验保留前缀。
- 管理后台系统设置增加自助申请邮箱开关、开放域名和禁止前缀配置。
- 个人中心新增申请邮箱入口,并在邮箱页优化当前邮箱切换与空列表处理。
- 补充相关测试与环境变量示例配置。
2026-06-16 00:51:41 +08:00
LanQin b9e43f211d fix(login): 始终显示注册入口
- 取消对 `openRegistration` 的显示限制,让未进入验证码流程时都能看到注册按钮。
2026-06-16 00:13:50 +08:00
LanQin f7e6165b72 feat(auth): 支持开放注册
- 新增注册接口与注册页面,开放注册时可创建普通用户并自动登录。
- 公共配置增加开放注册状态,登录页可跳转注册入口。
- 补充注册流程测试,验证关闭注册、账号创建与登录行为。
2026-06-15 23:57:56 +08:00
LanQin f8ff2a814b chore(deploy): 将 DKIM 组件切换为 Rspamd
- 用 Rspamd 替换 OpenDKIM 及其相关镜像、编排和启动脚本。
- 调整 Postfix、单容器镜像与 Docker 配置,改为对接 Rspamd milter。
- 增加 DKIM 私钥同步脚本与 Rspamd 本地配置,支持从 SQLite 周期导出签名密钥。
- 更新 API 启动与测试逻辑,兼容新的默认管理员邮箱与邮箱加载方式。
2026-06-15 23:41:21 +08:00
LanQin 2a5c4fcc0c chore(deploy): 优化 Docker 部署说明与安装脚本
- 将默认部署切换为拉取 GHCR 镜像,并补充本地源码构建的 override 用法。
- 新增单容器与多容器的构建编排文件,支持镜像版和源码构建版部署。
- 新增 `install.sh`,用于自动生成 `.env`、拉取镜像并启动服务。
2026-06-15 22:38:40 +08:00
LanQin f91b3143da chore(deploy): 更新 GHCR 默认镜像与部署说明
- 将部署示例中的默认镜像改为仓库对应的 GHCR 地址。
- 补充单容器部署时的镜像确认说明。
- 更新 GitHub Actions 的路径忽略规则,避免文档和示例配置变更触发发布流程。
2026-06-15 22:19:24 +08:00
LanQin 913a0ef420 chore(deploy): 增强 Docker 构建与发布流程
- 新增 GitHub Actions Docker 工作流,自动执行前端检查、后端测试并发布 GHCR 镜像。
- 为单容器与多容器部署补充镜像配置、使用说明和环境变量示例。
- 优化各 Dockerfile 的构建缓存与镜像体积,提升构建速度并减少无关文件进入镜像。
2026-06-15 22:05:41 +08:00
LanQin 85fb05d031 feat(mail): 增强邮件规则与阅读体验
- 将收件规则升级为支持多条件、多动作、应用现有邮件和终止继续处理。
- 新增规则构建与显示模式设置,优化规则列表与邮件详情展示。
- 增加邮件列表简洁模式、批量操作、手动刷新和更精细的已读状态控制。
2026-06-15 21:50:44 +08:00
LanQin_ 96822486af feat(mail): 支持邮件标签与富文本写信
- 新增标签数据结构、接口与路由,支持创建/删除邮件标签、按标签筛选邮件和查看星标邮件。
- 邮件详情与列表补充标签展示,发送/移动/删除/已读等操作同步刷新相关数据。
- 前端重构邮件页,加入标签侧栏、标签管理弹层,并将写信编辑器升级为 Markdown 富文本。
- 顺带优化登录态超时处理与部分导航入口,调整前端依赖版本。
2026-06-15 17:37:40 +08:00
LanQin 1f964eefe2 feat(deploy): 增加单容器部署方案
- 新增 `deploy/all-in-one` 构建与启动配置,将 API、Web、Nginx、Postfix、Dovecot、OpenDKIM 集成到一个容器中。
- 调整 `deploy/docker-compose.yml` 默认指向单容器部署,并补充分体调试编排 `deploy/docker-compose.stack.yml`。
- 更新 `README.md`、`deploy/README.md` 和 `.env.example`,同步说明新的部署方式与本地投递配置。
2026-06-15 00:57:34 +08:00
LanQin 8a042ae3dc feat(admin): 扩展后台管理与登录安全能力。
- 新增用户、域名、邮箱、别名、邮件、系统设置与模板的管理接口和页面。
- 支持双因素认证、Turnstile、人机验证与管理员 SMTP 测试。
- 增加无人收件/未注册邮件归档、Maildir 同步和数据库迁移支持。
- 更新前端导航、个人中心 2FA 配置以及相关部署示例。
2026-06-15 00:38:51 +08:00
LanQin 3ef8caa319 feat(email): 初始化自建邮箱 MVP
- 新增 Go + SQLite 后端,支持登录、域名、邮箱、别名、联系人、规则、统计与邮件收发。
- 新增 Webmail 前端,支持多邮箱切换、邮件列表/阅读/写信、附件、搜索、主题切换与个人中心。
- 新增 Docker Compose 部署骨架,补充 Postfix、Dovecot、OpenDKIM、Nginx 配置与部署说明。
2026-06-15 00:38:50 +08:00