Skip to content

OTSMail Android 0.3.4

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 08 Nov 12:50

新增功能

本版没有新增面向用户的功能,以第三方邮箱连接安全加固、协议健壮性与详情页操作一致性调整为主。

变更

  • 第三方邮箱详情页底栏与主账号统一:改用与主账号详情相同的图标底栏(回复 / 回复全部 / 转发 / 删除 / 更多),五项对齐;星标、标记已读/未读收进「更多」浮层。
  • 第三方链路上不支持的服务端能力明确置灰:「移动到分类」「翻译 / AI 摘要 / 智能回复」「标记为垃圾邮件」在「更多」中置灰,点击会说明这些能力依赖 otsmail 服务端、第三方邮件不在服务端库中,需在邮箱网页版操作。

修复

  • 补上 TLS 主机名校验:探测、IMAP、SMTP、STARTTLS 共七个调用点统一走 ExtTls.wrap,握手前显式设置 endpointIdentificationAlgorithm = "HTTPS"。此前裸 SSLSocket 只验证书链、不验主机名,而这条通道传输的是明文 IMAP LOGIN 与 SMTP AUTH PLAIN。
  • 无 UIDPLUS 的服务器上删除不再误删:此前在没有 UIDPLUS 时会退化成无条件 EXPUNGE,清掉信箱里所有带 \Deleted 的邮件(可能包括其他客户端标记待删的信)。现在只 COPY 到 Trash 并标记 \Deleted,不再执行 EXPUNGE。
  • IMAP 协议响应增加大小上限:单行协议响应上限 64KB,单封邮件 literal 上限 32MiB;超限明确报错并中止读取,不再无界分配内存,也不会把超长的邮件正文当成协议行继续读。
  • data: 附件改为解码前估算大小:先按 Base64 文本长度估算解码后字节数,超过 10MB 直接拒绝,避免整份解码后才发现超限导致峰值内存不受控。

已知问题

  • 没有 UIDPLUS 的 IMAP 服务器上,删除只把邮件复制到 Trash 并标记 \Deleted,不会立即从当前信箱的服务器存储中物理清除;多数服务器会在自身清理周期处理,表现为「稍后才消失」。这是为避免误删其他邮件的有意选择,不是遗漏。
  • TLS 主机名校验开启后,证书主机名与连接域名不匹配的服务器会直接失败,不再降级放行;个别配置不规范的企业邮箱可能因此无法连接。

安装提示

  • 同签名可直接覆盖安装,登录态与本地邮件缓存保留。
  • 覆盖安装会重置通知权限(POST_NOTIFICATION 回到 ignore),装完需到系统设置里手动重新开启一次,否则新邮件提醒不会弹出。
  • 回退旧版需要先卸载,本地邮件缓存会清空。

本版仍未经真机验证的项

  • TLS 主机名校验:只在本地编译与单元测试中通过,尚未连接真实 IMAP/SMTP 服务器(QQ / 163 / Gmail 都未实测)。
  • 无 UIDPLUS 的删除路径:未在缺少 UIDPLUS 的真实服务器上验证「复制到 Trash + 标记 \Deleted、不 EXPUNGE」的实际表现与后续服务器清理时机。
  • IMAP 响应上限:未构造超限响应做端到端验证,只确认正常路径与既有单测不受影响。
  • 第三方邮箱详情页新底栏与「更多」浮层:未做真机交互验证,包括窄屏排布、深色主题、浮层位置与置灰项提示文案。
  • data: 附件估算拒绝:未用接近 10MB 的真实 data: 附件做真机验证。

正式签名包,可直接覆盖升级。SHA-256:837ef54b4cfd50adaa0d61c588e09b47ef80628cb7449410fb8dff2b091373e1

该版本的 R8 混淆映射不随 Release 公开,仅归档在本次 Actions artifact(保留 90 天,文件名 mapping-v0.3.4.txt)。