核心用法
Fruitmail 是专为 macOS Apple Mail 设计的命令行搜索工具,通过直接读取 SQLite 数据库(~/Library/Mail/*/Envelope Index)实现毫秒级邮件检索。核心命令包括:
- `fruitmail search` — 复合条件搜索(主题、时间、未读状态)
- `fruitmail sender <query>` — 按发件人精确筛选
- `fruitmail body <id>` — 调用 AppleScript 读取完整邮件正文
- `fruitmail open <id>` — 直接在 Mail.app 中打开邮件
支持 JSON 输出与管道集成(--json | jq),便于自动化处理。
显著优点
性能碾压原生方案:13万封邮件搜索耗时从 AppleScript 全遍历的 8分钟以上 降至 ~50毫秒(约10000倍提升)。这得益于直接查询 SQLite 索引而非逐封调用 AppleScript。
零侵入安全设计:默认只读模式,可选 --copy 参数先复制数据库再查询,彻底杜绝误删风险。不触碰邮件存储的原始文件。
原生集成体验:fruitmail open 无缝跳转 Mail.app,兼顾 CLI 效率与 GUI 阅读体验。
潜在缺点与局限性
平台锁死:仅限 macOS,依赖 Apple Mail 的本地数据库结构(V9-V11)。Linux/Windows 用户无法使用。
功能边界明确:仅支持搜索与阅读,无法发送邮件。发件需求需配合 himalaya 等 SMTP 工具。
正文读取仍依赖 AppleScript:虽然元数据搜索走 SQLite 极速通道,但读取完整邮件正文(body 命令)仍需调用 AppleScript,速度较索引查询慢。
非官方实现:Apple 未公开邮件数据库格式,未来 macOS 更新可能破坏兼容性。
适合人群
- 收件箱超 5 万封的「邮件囤积症」macOS 重度用户
- 需要批量导出/审计邮件的运维与合规人员
- 习惯终端工作流、追求
grep级邮件检索效率的开发者
常规风险
| 风险项 | 说明 |
|--------|------|
| 数据一致性 | SQLite 查询时 Mail.app 若正在写入,可能读到短暂不一致状态(建议 `--copy` 模式)|
| 隐私暴露 | 数据库包含完整邮件元数据,多用户系统需确保 `~/Library/Mail` 权限隔离 |
| 依赖维护 | npm 包 `apple-mail-search-cli` 停更将导致安装失败 |
---
一句话:用数据库思维解决邮件搜索痛点,牺牲跨平台能力换取极致的 macOS 本地性能。