LanQin_
|
2a572bf13a
|
feat(mail): 增强邮件认证与审计能力
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
- 新增邮件认证结果解析、存储与前端展示,支持查看 SPF、DKIM、DMARC 及原始头信息。
- 扩展邮件规则条件,支持抄送、附件、大小、日期及嵌套条件组合。
- 增加邮箱容量统计与发送前配额校验,超限时返回明确错误。
- 新增管理端发送审计页面与接口,支持按邮箱、事件、Message-ID 和时间筛选。
|
2026-06-24 17:16:01 +08:00 |
|
LanQin_
|
2b846ac671
|
feat(mail): 增加发送队列管理
- 新增发送队列与投递时间线接口,支持查看、筛选、重试和取消发送任务。
- 扩展邮箱页面,加入发送队列入口、状态筛选和时间线弹窗。
- 更新发送队列状态流转,支持 `canceled` 并补充相关测试与前端类型定义。
|
2026-06-24 16:39:40 +08:00 |
|
LanQin_
|
b3669f189e
|
feat(imap): 补充邮件 IMAP 元数据支持
- 为文件夹和消息增加 `UID/ModSeq` 字段,并在迁移时回填与建索引。
- 让收发、移动、标记、删除、草稿等流程同步维护 `imap_uid` 和 `imap_modseq`。
- 扩展后端与前端类型,并补充相关测试覆盖。
|
2026-06-24 16:23:45 +08:00 |
|
LanQin_
|
d28ed4adcc
|
feat(admin): 增加 Maildir 同步健康状态
- 新增后端健康检查接口与同步追踪,记录运行状态、最近结果、错误摘要和统计信息。
- 前端管理页在存储设置中展示 Maildir 同步健康卡片,并支持手动刷新。
- 补充相关类型定义与测试,覆盖未配置和同步成功两类场景。
|
2026-06-24 16:08:48 +08:00 |
|
LanQin_
|
b36adfdac2
|
fix(maildir): 同步 IMAP 移动、标记与删除状态
- 让 maildir 同步在消息移动到其他文件夹时更新 `folder_id` 和 `raw_path`。
- 根据文件名中的 maildir 标记同步已读、星标状态。
- 增加缺失消息清理,避免数据库残留已被删除的 maildir 邮件。
- 补充回归测试覆盖移动、重复副本、标记更新和删除场景。
|
2026-06-24 15:46:17 +08:00 |
|
LanQin_
|
632a8a4896
|
fix(maildir): 同步邮件已读状态到 maildir 标记
- 读取邮件时同步更新 maildir 的 `S` 标记,避免数据库已读状态与文件名不同步。
- 写入邮件到 `maildir` 时保留已有非托管标记,并确保已读/星标标记正确拼接。
- 补充测试,校验已发送邮件和草稿的原始路径包含已读标记。
|
2026-06-24 15:33:56 +08:00 |
|
LanQin_
|
f8d058f7e4
|
fix(maildir): 同步消息标记到 Maildir
- 标记已读、加星时同步重写 `raw_path`,保持数据库与文件系统状态一致。
- 新增 Maildir 标记路径计算与迁移逻辑,支持读/星标变化后调整目录和文件名。
- 补充测试覆盖已读、未读、加星场景的 Maildir 路径变化。
|
2026-06-24 15:27:30 +08:00 |
|
LanQin_
|
1788d49a59
|
feat(maildir): 支持邮件写入与同步联动
- 为已发送邮件、草稿、收件与规则移动增加 maildir 文件写入、重写和删除流程。
- 补充 SQLite 仅有消息的回填逻辑,并在同步时补齐现有 raw_path。
- 调整 Dovecot 共享邮箱行为为订阅方式,避免重复创建文件夹。
- 新增覆盖发送、草稿、移动、删除和回填场景的测试。
|
2026-06-24 15:18:06 +08:00 |
|
LanQin_
|
adcc822c9a
|
fix(mail): 优化邮件 HTML 与样式保留
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
- 支持整页邮件文档的清洗与渲染,保留 `<html>`、`<head>`、`<body>` 和 `<style>` 等结构。
- 提取并校验安全的邮件样式块,阻止包含外链、脚本式内容的 CSS。
- 补充 `dompurify` 类型声明以支持 `WHOLE_DOCUMENT` 配置。
|
2026-06-24 14:19:31 +08:00 |
|
LanQin_
|
18db36d937
|
feat(mail): 优化邮件正文渲染与样式保留
- 邮件正文改为在 `iframe` 中渲染,提升排版隔离和显示稳定性。
- 扩展前端清洗配置,保留邮件常见布局样式与表格属性。
- 收紧后端 HTML 策略的样式白名单,兼顾邮件样式保留与安全过滤。
- 补充测试,验证邮件布局样式可保留且危险内容仍会被拦截。
|
2026-06-24 13:55:09 +08:00 |
|
LanQin_
|
65e4c4f6b5
|
fix(send_queue): 修复已投递标记恢复逻辑
- 新增投递标记文件持久化,避免重启后重复发送已投递的队列项。
- 在恢复卡住的发送任务时,识别已存在的投递标记并直接修复数据库状态。
- 同步补充回归测试,覆盖陈旧投递标记不应触发重发的场景。
|
2026-06-24 13:35:37 +08:00 |
|
LanQin_
|
d3bee62acd
|
refactor(submission): 重构发件入库的去重流程。
- 将发件消息插入与附件保存改为事务内执行,避免去重键存在但消息缺失时产生脏数据。
- 抽出可注入的数据库执行器,便于在同一事务中复用消息与附件写入逻辑。
- 补充异常场景测试,覆盖“去重键存在但未命中消息”的失败行为。
|
2026-06-24 13:26:53 +08:00 |
|
LanQin_
|
d1876691dd
|
fix(submission): 调整 SMTP 提交与发件授权逻辑。
- 启用 SMTP submission 时改为强制使用可读证书文件,并禁止使用容器自带测试证书。
- 收紧发件人校验,拒绝未授权的 From 地址,并支持别名多目标授权。
- 优化发送队列重入与重复消息处理,避免重复记录冲突。
- 让提交证书按需热加载,并稳定 MIME 头序列化顺序。
- 更新部署示例与文档,明确 submission 的证书配置要求。
|
2026-06-24 13:10:24 +08:00 |
|
LanQin_
|
2476fe0c19
|
fix(send_queue): 修复重复消息 ID 的失败重排并清理 MIME
- 投递成功后清空 `mime_base64`,避免已投递队列项保留原始 MIME。
- 当同一 `message_id` 的旧队列项已达到最大失败次数时,允许复用并重新入队。
- 补充测试覆盖已投递项清理与终态失败重排场景。
|
2026-06-24 11:33:40 +08:00 |
|
LanQin_
|
7b0717412c
|
feat(app): 引入发送队列与可授权发件人
- Webmail/API 与第三方提交统一先写入已发送,再入发送队列异步投递。
- 新增队列重试、失败审计、陈旧任务恢复与发送状态追踪。
- 支持本人邮箱、启用别名和 `send_as_grants` 显式授权的 send-as。
- 更新 README 与部署文档,说明新的外发流程和排障方式。
|
2026-06-24 11:27:32 +08:00 |
|
LanQin_
|
5c9bea075a
|
chore(deploy): 优化 split stack 的 SMTP 配置
- 为 `docker-compose.stack.yml` 的 API 容器默认注入 `LANQIN_SMTP_HOST/PORT`,避免 Webmail 发信配置漂移。
- 补充 `.env.example` 和 `README`,说明 split stack 默认走 `postfix`,以及外部 SMTP 的覆盖方式。
- 新增 `sent_message_dedupe_keys` 表和相关读写逻辑,确保已发送消息去重可回收,并补充对应测试。
|
2026-06-24 11:03:01 +08:00 |
|
LanQin_
|
fa450c9f9b
|
feat(mail): 支持 SMTP Submission 由 API 接管
- 新增 `465/587` 提交服务与 TLS 配置,支持 StartTLS 和隐式 TLS。
- 提交时校验认证邮箱、权限和 `From` 一致性,先写入 `Sent` 再转发到后端 SMTP。
- 增加 `Message-ID` 去重与失败回滚,避免重复保存发送副本。
- 调整部署与文档,移除 Postfix 的 submission 监听,改由 LanQin API 对外提供提交端口。
|
2026-06-24 10:47:16 +08:00 |
|
LanQin_
|
f2457c63ee
|
refactor(mail): 统一邮件认证策略请求与返回格式。
- 将 `auth-policy` 调整为读取 `login`、`remote` 等字段,并返回数值型 `status`。
- 支持按邮箱定位用户与邮箱箱体,补充 IMAP/POP3 认证策略校验。
- 更新 Dovecot 与 Postfix 配置,移除原有的发件人 BCC 依赖。
- 补充相关测试并同步部署说明。
|
2026-06-23 21:52:05 +08:00 |
|
LanQin_
|
8d434b9ca8
|
chore(app): 修正 maildir 目录配置读取
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
- 启动 maildir worker 时改为读取 `a.cfg.MaildirRoot`,避免使用未确认的入参值。
|
2026-06-23 15:32:12 +08:00 |
|
LanQin_
|
23b04bd343
|
feat(mail): 增强邮件限流与配额配置
- 新增 IMAP/POP3 事件表与清理任务,并接入 Dovecot auth policy。
- 暴露默认权限限额接口,前端权限组页面改为动态读取。
- 为 Dovecot 配置用户配额、连接数限制和 auth policy。
|
2026-06-23 11:25:38 +08:00 |
|
LanQin_
|
36b4c4c60f
|
feat(权限组): 增加账号配额与邮件发送限制
- 为权限组与用户新增配额字段,支持附件大小、SMTP/IMAP/POP3 频率限制。
- 后端补充权限组配额校验、迁移与 SMTP 发送限流,邮件发送/定时发送时统一生效。
- 前端在管理页、邮件撰写页和个人资料页展示并编辑配额信息。
|
2026-06-23 11:09:36 +08:00 |
|
killerprojecte
|
c8dff253cc
|
chore: optimize code
|
2026-06-22 20:20:44 +08:00 |
|
killerprojecte
|
77187e76ce
|
fix: wrong code syntax
|
2026-06-22 20:12:56 +08:00 |
|
killerprojecte
|
84cc47e3cf
|
chore: revert some wrong changes
|
2026-06-22 20:04:11 +08:00 |
|
killerprojecte
|
8d29dbd126
|
chore: improve label status handling
|
2026-06-22 20:04:11 +08:00 |
|
killerprojecte
|
74f456ef7d
|
chore: improve tag delete
|
2026-06-22 20:04:10 +08:00 |
|
killerprojecte
|
7720b6b404
|
feat: better tag system & fix layout problem when width under 640px
|
2026-06-22 20:04:09 +08:00 |
|
LanQin_
|
0b982a5ff4
|
feat(mail): 重构邮箱权限体系并细化前台能力控制
- 新增邮箱前台权限与默认普通用户权限迁移,拆分读信、发信、草稿、定时、整理、标签、附件、联系人等能力。
- 收紧后端路由与处理逻辑,按权限限制邮箱前台、个人中心和定时发送相关接口。
- 前端根据权限动态隐藏或禁用邮件、个人中心中的对应功能入口与操作。
- 补充权限迁移与访问控制测试,覆盖普通用户邮箱前台、发信和定时发送的权限校验。
|
2026-06-22 15:54:15 +08:00 |
|
LanQin_
|
5571dcc511
|
fix(app): 清理旧版系统权限组
- 将旧版默认权限组 ID 纳入清理列表,确保初始化时自动删除遗留数据。
- 补充测试验证旧版权限组会在默认权限组修复流程中被移除。
|
2026-06-22 15:02:25 +08:00 |
|
LanQin_
|
acdf298811
|
fix(permission): 调整默认权限组与用户权限继承
- 将“普通用户”权限组纳入默认权限继承,创建和更新用户时自动合并其权限。
- 放宽“普通用户”系统组的可编辑性,但仍禁止删除;继续限制超级管理员组被修改。
- 更新管理端权限组操作状态,避免对不可删除或不可编辑项提供错误入口。
- 补充相关测试,覆盖默认权限组编辑、删除与用户权限继承场景。
|
2026-06-22 14:42:37 +08:00 |
|
LanQin_
|
8cbcc22a74
|
refactor(permissions): 精简默认权限组初始化逻辑
- 将固定默认权限组收敛为基础组,并新增对历史默认权限组的清理流程。
- 兼容保留已被用户引用的旧权限组,避免误删现有授权关系。
- 更新测试以覆盖新权限组创建与旧权限组迁移场景。
|
2026-06-22 14:34:57 +08:00 |
|
LanQin_
|
31435c1e97
|
feat(admin): 引入细粒度权限组管理
- 新增权限目录、系统权限组与用户权限组分配,后台路由改为按权限粒度控制。
- 支持创建、编辑、查看和删除自定义权限组,并为用户绑定权限组。
- 前端后台界面按权限动态展示菜单与操作项,补充用户/权限组相关类型与交互。
|
2026-06-22 14:31:10 +08:00 |
|
killerprojecte
|
5604b59501
|
fix: improve RFC 2047 decode & fix trim space
|
2026-06-19 22:49:20 +08:00 |
|
killerprojecte
|
d312076d4b
|
chore: handle more encodes & fix idx range
|
2026-06-19 22:15:00 +08:00 |
|
killerprojecte
|
f0c175e7f6
|
fix: decode RFC 2047 encoded words in mail sender display name
|
2026-06-19 21:27:05 +08:00 |
|
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
|
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
|
b0cc425f61
|
chore(mail): 优化邮件投递超时与服务配置
- 为 SMTP 连接与前端发信请求增加更明确的超时控制。
- 调整 Postfix 与 Rspamd 代理配置,缩短相关处理超时并统一运行参数。
|
2026-06-16 22:28:04 +08:00 |
|
LanQin
|
b9b76c6b8c
|
fix(smtp): 适配内置 Postfix 发信链路
- 后端按 SMTP 端口区分普通连接、STARTTLS 和隐式 TLS,避免发信流程在不同中继场景下异常。
- 前端调整管理员页的发信说明与字段文案,强调默认使用内置 Postfix。
|
2026-06-16 22:10:15 +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_
|
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
|
f7e6165b72
|
feat(auth): 支持开放注册
- 新增注册接口与注册页面,开放注册时可创建普通用户并自动登录。
- 公共配置增加开放注册状态,登录页可跳转注册入口。
- 补充注册流程测试,验证关闭注册、账号创建与登录行为。
|
2026-06-15 23:57:56 +08:00 |
|