Skip to content

iCloud Mail v0.2.5 · 收件归档修复与 IMAP 同步优化

Choose a tag to compare

@t508708 t508708 released this 15 Oct 19:29

iCloud Mail v0.2.5:邮件归档升级修复与 IMAP 批量同步优化。

修复与优化

  • 修复网页按需收件已保存正文重建版、随后 IMAP 获取相同 UID 的完整 MIME 时,出现 stage mailbox archive: archived message identity conflicts with an existing file 并导致整个批次提交失败的问题。仅在非空 Message-ID 一致、旧文件大小和校验和正确且具有网页重建标记时允许升级;完整原文使用独立不可变路径,事务成功后清理旧投影。
  • 归档升级保留原归档 ID、邮箱本地 UID 与取码记录;后续网页读取不会覆盖完整原文。原始 MIME 内容冲突、损坏文件及身份不一致继续报错,失败不删除已提交文件,不推进增量游标。
  • 同一增量批次的匹配正文合并为一次 UID FETCH,减少逐封网络往返。默认每批最多处理 32 条 UID,保留正文大小限制、超大邮件元数据与逐批原子提交;不支持批量读取的服务器保留逐封回退,取消或失败清理已暂存文件。
  • 手动单次与批量创建按实际选择的通道确认待处理候选。新通道已过期时可使用旧通道,已知来自新通道的候选不再阻塞旧通道;同通道或来源不明的候选仍先确认,身份、容量和转发目标检查保持。

验证与升级

  • SQLite 与隔离 PostgreSQL 验证网页投影升级、邮件身份保持及事务回滚;覆盖损坏文件、Message-ID 不匹配、过期观察、同 UID 冲突及后续网页重放。
  • IMAP 离线夹具覆盖单个命令读取整批正文、逐封兼容回退、连接复用、取消清理和 UID 游标边界;不支持的响应顺序保持失败且不前移游标。受影响 Go 包、重点 race、go vet 与版本元数据检查通过。
  • 本地受控增量同步约 2.7 秒完成,状态恢复正常;该次没有新增匹配邮件,不代表大批次吞吐或真实投影升级的现场性能。
  • Docker 默认继续使用应用与配套 PostgreSQL 的多架构 latest,另提供 v0.2.5 标签、源码与 Linux amd64 离线镜像包。升级保留数据库、密钥、邮件归档和原计划;本次收件修复无新增 schema 迁移。

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

Docker 与下载

  • ghcr.io/t508708/icloud-mail:latest 与 ghcr.io/t508708/icloud-mail-postgres:latest 已同步更新,也可使用 v0.2.5 标签;支持 linux/amd64、linux/arm64。
  • 更新:git pull --ff-only && docker compose pull && docker compose up -d --wait。保留 .env 和数据卷,升级前备份数据库、密钥和邮件归档。
  • 附件包含源码 ZIP、应用与 PostgreSQL 预构建镜像的 Linux amd64 离线 ZIP、SHA256SUMS。
  • 发布提交:5e7864fb28b03bfd73fda23abd2fa82930fe3e49。来源和许可关系见 NOTICE。