Repository navigation
iCloud Mail v0.2.6 · 并发取件与主号独立保活
iCloud Mail v0.2.6:并发取件、主号独立保活与目录补充优化。
修复与优化
-
Apple Account 保活按到期主号独立执行,同号最多一个在途任务并跨轮去重;取消固定 4 个全局名额,一个主号的慢请求或操作等待不占其他主号的名额。保留每号 4~6 分钟随机计划、25 秒执行上限、持久化退避与明确失效停止规则。
-
只读目录增加 Apple Account 补充通道:优先使用 iCloud Web,仅在该通道登录缺失或认证失效时尝试已保存的新通道;限流、服务故障和响应结构错误沿原路径处理。目录转发归属、账户身份及重复项校验保持严格,目录缺项不删除本地地址,停用、删除和创建前后核验继续使用既有流程。
-
连接管理显示最近成功续期、下次计划与失败重试时间,区分暂时退避和需要重新登录;状态读取仅访问本地记录,响应只包含公开连接元数据。
-
共享取件取消同主号 64 个在途及全站每秒 100 次的一刀切限制;不同隐藏邮箱复用主号收件,HTTP 入口改为有界等待,并为普通读取预留容量。
-
并发、队满与排队超时返回可重试的
503 PICKUP_BUSY;429 用于刷新速率超限。同 root 额度内并发读者共享同步,完成与取消只释放自身引用,不重置冷却。 -
Pool 取码本地复验改用共享读锁,避免所有读请求串行;保留凭据轮换、租约释放与退役复验。首次同步耗尽等待预算时执行最终本地读取,返回新码或正常
no_code。 -
冷恢复按服务端日期定位时间窗口,再按 UID 分页,不再丢弃最后 128 封以外的本次新信;窗口起点与游标同事务持久化,跨批次及重启继续。新增 SQLite/PostgreSQL 一致、幂等的
imap_active_windows表,完成后清除;不下载窗口前的历史正文。 -
修正文档中的批大小:服务入口为每批 128 条 UID,底层库默认 32;批大小限制单次处理量,不限制隐藏邮箱并发数量。
-
后台 Pool 项目列表复用已加载数据,减少切换和刷新时的重复请求;补齐加载状态、窄屏表格滚动和无障碍提示。管理页面禁止代理改写响应,保留本地 JS/CSS 与原主题。
验证与升级
- 离线 TLS IMAP 夹具覆盖 200 个 root 共享收件、冷启动与连接复用;测试环境冷取件约 1.20 秒、复用读取约 3 毫秒,属于本地夹具结果。实际 Apple 网络与投递耗时另受上游影响。
- 保活验证覆盖 32 个主号同时到期、同号跨轮去重,以及前 4 个主号等待各自操作锁时第 5 个仍可执行。只读目录验证账户身份、转发归属、错误分类和缺项不删除。
- 以实际发布内容导出的隔离源码通过 Go 全套测试、全套
go vet、保活及目录重点 race 检查;前端 248 项测试与 Vite 构建通过。 - 新增
imap_active_windows持久化最近收件窗口,SQLite 与 PostgreSQL 迁移一致且幂等;升级保留数据库、密钥、邮件归档和创建计划。创建、退役与删除继续沿用原合同。 - Docker 默认继续提供应用与配套 PostgreSQL 的多架构
latest,并提供v0.2.6标签及 Linux amd64 离线镜像包。升级前备份数据库、密钥与邮件归档。
完整源码比较:v0.2.5...v0.2.6。
Docker 与下载
ghcr.io/t508708/icloud-mail:latest与ghcr.io/t508708/icloud-mail-postgres:latest已同步更新,也可使用v0.2.6标签;支持 linux/amd64、linux/arm64。- 更新:
git pull --ff-only && docker compose pull && docker compose up -d --wait。保留 .env 和数据卷,升级前备份数据库、密钥和邮件归档。 - 附件包含源码 ZIP、应用与 PostgreSQL 预构建镜像的 Linux amd64 离线 ZIP、SHA256SUMS。
- 发布提交:
c18ebcab012b9c953060a4404e3717ffca2448c0。来源和许可关系见 NOTICE。