核心用法
fruitmail 是一款专为 macOS Apple Mail.app 设计的命令行搜索工具,通过直接读取本地 SQLite 数据库(Envelope Index)实现毫秒级邮件检索,彻底告别 AppleScript 全量遍历的分钟级等待。
主要命令:
fruitmail search— 复合条件搜索(主题、时间、未读状态)fruitmail sender <domain>— 按发件人域名筛选fruitmail unread— 快速列出未读邮件fruitmail body <id>— 调用 AppleScript 读取完整邮件正文fruitmail open <id>— 一键在 Mail.app 中打开邮件fruitmail stats— 查看数据库统计信息
性能对比: 对于 13 万封邮件的搜索场景,传统 AppleScript 遍历需 8 分钟以上,而 SQLite 直读仅需约 50 毫秒,提升超过 9600 倍。
显著优点
1. 极致性能:绕过 Mail.app 应用层,直接查询底层数据库,适合海量邮箱用户
2. 零配置依赖:仅依赖 Node.js 与 npm,安装后即用
3. 安全设计:默认只读模式,可选 --copy 参数先复制数据库再查询,彻底避免对生产数据的任何风险
4. 结构化输出:支持 --json 输出,便于与 jq 等工具链整合自动化处理
5. 精准定位:支持邮件 ID 直达打开,快速定位历史邮件
潜在缺点与局限性
- macOS 独占:完全依赖 Apple Mail 的数据库结构,无法用于 Linux 或 Windows
- 只读约束:仅能搜索和阅读,无法发送、回复或修改邮件状态(需配合
himalaya等工具) - 数据库版本敏感:支持 Mail V9/V10/V11 数据库格式,未来 macOS 更新可能导致兼容性问题
- 正文读取仍依赖 AppleScript:虽然搜索极快,但读取完整邮件正文时仍需调用 AppleScript,性能回退
- 无图形界面:纯 CLI 工具,对非技术用户有一定门槛
适合人群
- 邮箱体量巨大(10万+邮件)的 Mac 重度用户
- 需要将邮件数据自动化导出、分析的开发者和数据工作者
- 追求效率、习惯命令行工作流的极客用户
- 需快速审计历史邮件的财务/法务人员
常规风险
| 风险类型 | 等级 | 说明 |
|---------|------|------|
| 数据损坏 | 极低 | 只读查询 + 可选 `--copy` 模式,理论上零风险 |
| 隐私泄露 | 低 | 本地执行,不经过云端;但 JSON 输出可能意外暴露敏感内容 |
| 兼容性 | 中 | macOS 或 Mail.app 升级可能破坏数据库路径解析 |
| 误操作 | 低 | CLI 操作需准确输入邮件 ID,建议配合 `open` 命令可视化确认 |
建议定期关注上游仓库更新,确保与新版本 macOS 兼容。