Apple Mail Search Safe (fruitmail)

📧 本地邮件极速检索·安全只读

基于SQLite极速检索Apple Mail本地邮件,50毫秒完成13万封邮件全文搜索,支持macOS独占安全只读模式。

收藏
9.3k
安装
4.3k
版本
5.0.0
CLS 安全性认证2026-07-10
点击查看完整报告 >

使用说明

核心用法

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 本地性能。

安全解读

核心用法

Fruitmail 是一款专为 macOS Apple Mail 设计的命令行搜索工具,通过直接读取本地 SQLite 数据库(~/Library/Mail/V*/MailData/Envelope Index)实现极速邮件检索。相比传统 AppleScript 方案(遍历 13 万封邮件需 8 分钟以上),SQLite 查询仅需约 50 毫秒。

典型工作流:

  • fruitmail search --subject "invoice" --days 30 --unread:复合条件搜索
  • fruitmail sender "@amazon.com":按发件人域名筛选
  • fruitmail body 94695 --json:读取完整邮件正文(通过 AppleScript)
  • fruitmail open 94695:在 Mail.app 中打开指定邮件

显著优点

| 维度 | 表现 |
|------|------|
| **性能** | 130k 邮件规模下从 8 分钟降至 50ms,提升约 9600 倍 |
| **功能完整性** | 支持主题、发件人、时间范围、未读状态等多维度过滤,且能提取完整正文 |
| **安全性** | 默认只读模式,可选 `--copy` 先复制数据库再查询,零数据篡改风险 |
| **集成友好** | JSON 输出支持管道化后续处理(`jq` 等工具链) |

潜在局限

  • 平台锁定:仅支持 macOS,依赖 Apple Mail 的本地数据库结构
  • 发送功能缺失:纯搜索工具,发邮件需配合 himalaya 等 IMAP/SMTP 方案
  • 正文获取依赖 AppleScript:虽然查询极快,但读取完整正文仍需调用 Mail.app,速度受限
  • 数据库版本敏感:需适配 Mail.app 的 V9/V10/V11 数据库格式变化

适合人群

  • 邮箱体量庞大(万封以上)且对搜索速度敏感的 Mac 用户
  • 需要将邮件数据接入自动化工作流(配合 jqgrepawk)的开发者
  • 注重隐私、不愿将邮件索引上传至第三方云服务的安全意识用户
  • 现有 AppleScript 方案性能瓶颈的迁移者

常规风险与缓解

| 风险点 | 实际情况 | 缓解措施 |
|--------|---------|---------|
| 数据库损坏 | 只读模式理论上无写入操作 | `--copy` 模式先复制后查询,双重保险 |
| SQL 注入 | 用户输入直接进入查询条件 | 使用 `better-sqlite3` 参数化查询,无注入漏洞 |
| 隐私泄露 | 邮件数据本地处理 | 零网络请求,数据不出设备 |
| 依赖风险 | npm 包供应链攻击 | 依赖均为知名库(chalk、commander 等),建议定期 `npm audit` |

Apple Mail Search Safe (fruitmail) 内容

bin文件夹
src文件夹
tests文件夹
手动下载zip · 62.4 kB
db-finder.jstext/javascript
请选择文件