Skip to content

iCloud Mail v0.2.4 · 创建确认与通道冷却修复

Choose a tag to compare

@t508708 t508708 released this 15 Oct 09:42

iCloud Mail v0.2.4:自动创建确认、通道冷却隔离与后台弱网恢复。

修复与调整

  • 修复待确认地址恢复及单地址详情读取时,新通道限流误将整个自动计划暂停一小时的问题。候选来源与完成 ID 持久保存,限流只冷却受影响通道并遵守更长 Retry-After;旧通道按原时间槽与独立额度继续。已知 ID 只重读原详情,来源不明的旧候选继续保守确认,未知结果不换地址重建。
  • 后台普通读取增加 15 秒等待上限,覆盖连接及响应正文;提交操作使用独立 120 秒上限。请求挂起会显示明确提示,切换页面仍可主动取消,不自动重放已提交操作。
  • 页面启动保留加载提示,等会话检查及目标页面模块就绪后再挂载;资源失败或加载超时提供手动重新加载入口,页面切换模块失败保留当前页面并显示提示。主题脚本延后执行,减少脚本网络阻塞造成的空白。
  • 修复 Apple 单地址详情已确认启用、但目录列表仍遗漏该地址时,手动与自动创建持续显示“待目录确认”的问题。候选和凭据先持久化,再按完成回执的原 ID 读取详情;严格核验地址、ID、存在及启用状态,转发目标必须匹配当前主号。
  • 兼容完成接口返回原候选的 active=false / exists=false、而随后详情已启用的回执差异:收到 ID 后仍读取详情核验,完成回执的标记不作为跳过详情的依据。
  • 旧候选恢复先核对原地址,明确完成或结果未知时保留候选,不因超过 20 分钟且列表缺失就换地址重建。详情异常继续使用目录确认兜底,不把不完整回执当作成功。
  • 修复无会话诊断字段时,管理操作失败日志出现 LogValue panicked 的问题。目录同步仍报告 Apple 实际返回数量,不以本地库存冒充远端目录数量。

合并此前 latest 的通道降级修复

  • 修复新通道认证过期后仍被选中、随后关闭整个自动创建计划的问题。已开启的计划保留;新通道失效且旧通道可用时,在原持久化计划中分散安排每小时最多 5 次旧通道尝试。
  • 新通道重新登录后,后续时间槽自动恢复新通道 19 次、旧通道 4 次的每小时规则,不重排计划,不清空滚动额度或 Apple 冷却。临时续期故障不直接当作退出。
  • 创建时确认新通道认证失效会持久保存该通道失效状态,保留旧通道登录;本次调用不重复创建。旧通道目录失效时暂停远端创建、保留计划,手动关闭的计划保持关闭。
  • 未执行的时间槽不写成远端创建尝试;待确认地址、未知副作用、库存/容量与账户身份检查保持原规则。
  • SQLite 完整离线创建与确认验证:降级创建并入库 5 个,更新登录态后完成 19+4 个。跨调度器重启、两边离线、手动关闭、SQLite/PostgreSQL 滚动额度与冷却测试、受影响 Go 包、重点 race、go vet 及 diff 检查通过;未额外发送真实 Apple 创建探测。
  • README、创建规则、兼容说明和内置 /docs/ 同步更新;此前仅通过 latest 提供的降级补丁纳入本次正式版本。

详细规则见 自动创建通道降级与恢复。

验证与升级

  • 受影响 Go 包测试、go vet、重点竞态检查通过。SQLite 与独立 PostgreSQL 验证候选来源、完成 ID、重启恢复、幂等迁移、主号隔离和独立冷却。
  • 完整 23 槽离线调度联测:新通道候选遇到限流后,原候选保留,旧通道完成 4 次创建并入库;2 小时 Retry-After 不被轮询延长。详情确认、旧候选兼容、fallback 防重复和公共目录限流优先级均覆盖。
  • 前端 247 项测试通过;浏览器故障注入验证入口资源失败、路由模块失败和 API 挂起的恢复提示。正常加载测试不代表用户设备代理或网络速度改善。
  • 本地观察原自动计划:新版本旧通道创建成功并入库,约 8.6 秒;未通过真实限流来验证异常分支,也不承诺 Apple 配额或会话永久有效。
  • Docker 默认继续使用应用与配套 PostgreSQL 的多架构 latest,另提供 v0.2.4 镜像标签、源码与 Linux amd64 离线包。升级保留数据库、密钥、邮件归档和原计划;新增候选辅助表自动迁移,历史来源不明项继续保守核验。

完整源码比较:v0.2.3...v0.2.4。

Docker 镜像与下载

  • 默认部署继续使用 ghcr.io/t508708/icloud-mail:latest 和 ghcr.io/t508708/icloud-mail-postgres:latest;两者亦提供 v0.2.4 标签,支持 linux/amd64、linux/arm64。
  • 更新命令:git pull --ff-only && docker compose pull && docker compose up -d --wait。升级前备份数据库、密钥与邮件归档,保留原 .env 和数据卷。
  • 附件提供源码 ZIP、含应用和配套 PostgreSQL 预构建镜像的 Linux amd64 离线 ZIP,以及 SHA256SUMS。离线包包含 RELEASE.json,记录源码提交和镜像 ID。
  • 发布源码提交:0120994e9dcef6f8be712aa487acde6a8031610a。部署及来源说明见 README 与 NOTICE。