核心用法
Fruitmail 是一款专为 macOS Apple Mail.app 设计的本地邮件搜索工具,通过直接读取 SQLite 数据库(~/Library/Mail/V{9-11}/MailData/Envelope Index)实现毫秒级邮件检索。相比 AppleScript 遍历 13 万封邮件需 8 分钟以上的性能,该工具仅需约 50ms 即可完成同等规模查询。
主要功能:
- 多维度搜索:支持按主题、发件人、时间范围(--days)、未读状态等条件组合筛选
- 全文读取:通过 AppleScript 获取完整邮件正文内容(
fruitmail body <id>) - 系统集成:可直接唤起 Mail.app 打开指定邮件(
fruitmail open <id>) - 数据导出:支持 JSON 格式输出,便于管道处理(配合
jq等工具)
显著优点
1. 性能飞跃:SQLite 索引查询比原生 AppleScript 快 1000 倍以上
2. 只读安全:默认只读模式,不会修改邮件数据;可选 --copy 模式先复制数据库再查询,双重保险
3. 零配置依赖:直接读取 Mail.app 本地存储,无需 IMAP/SMTP 凭证
4. 轻量 CLI:单二进制文件,Node.js 全局安装即可使用
潜在局限
- 平台锁定:仅限 macOS,依赖 Apple Mail.app 的数据库结构
- 功能边界:仅能搜索/读取/打开邮件,无法发送邮件(需配合 himalaya 等 IMAP 工具)
- 数据库耦合:若 Apple Mail 未来更新数据库结构(如 V12+),工具可能需适配
- 权限敏感:首次运行需授予磁盘访问权限(访问
~/Library/Mail)
适合人群
- 日均处理大量邮件的 macOS 重度用户
- 需要将邮件数据自动化导出至其他工作流(Obsidian/Notion/数据分析)的开发者
- 对 Apple Mail 原生搜索速度不满,寻求替代方案的专业人士
常规风险
| 风险类型 | 说明 | 缓释措施 |
|---------|------|---------|
| 隐私泄露 | 工具可读取全部本地邮件内容 | 代码开源可审计;离线运行不上传数据 |
| 数据库锁定 | 若 Mail.app 正在写入,直接读取可能短暂冲突 | 使用 `--copy` 模式创建快照后查询 |
| 误操作覆盖 | 虽然只读,但 AppleScript 理论上具备写权限 | 核心查询模块使用 SQLite 只读句柄,与写操作隔离 |
| 供应链攻击 | npm 包被篡改 | 建议 pin 版本号,从 GitHub 源码构建 |
安全等级说明
该工具仅通过读取本地 SQLite 数据库和调用有限 AppleScript 接口实现功能,无网络传输、无远程服务器、无邮件发送能力。开源代码(MIT 许可)可直接审计。综合评估为 A 级 —— 功能受限但风险可控,适合本地自动化工作流集成。