Mailbox Viewer:把 FOIA 邮件转成类 Gmail 静态站点
Show HN: Mailbox Viewer – publish FOIA email dumps as a static Gmail-like site
Mailbox Viewer 可将 mbox 或 PST 文件转成外观与操作都类似 Gmail 的静态网站,支持会话、标签、附件、Gmail 搜索操作符和浏览器内语义搜索,全程无需服务器。
把 mbox 或 PST 文件变成一个外观和功能都像 Gmail 的静态网站:会话、标签、附件、Gmail 的搜索运算符以及浏览器内语义搜索。无需服务器。构建过程会写出 Parquet 文件,你可以托管在 Cloudflare R2 或任何静态文件托管服务上,而查看器是一个静态站点,通过 DuckDB-WASM 在浏览器中查询这些文件。
它是为公共记录和 FOIA 响应而构建的,这些响应往往以 PST 或 mbox 形式送达,大多数人无法打开,更不用说搜索或分享了。
试试在线演示(一个虚构的邮箱,完全按照文档描述的方式提供服务:查看器在 Vercel 上,数据在 Cloudflare R2 上) · 文档
安装
uv tool install git+https://github.com/rahimnathwani/mailbox-viewer
智能搜索嵌入和构建查看器需要 Node.js 20+;PST 输入需要 readpst(brew install libpst)。或者克隆仓库并使用 uv run mbv,或使用 Docker 镜像。详情:入门指南。
用法
mbv build ~/Downloads/response.pst --slug county-2026-05 --title "County records, May 2026" mbv preview # http://localhost:8000/county-2026-05 mbv publish county-2026-05 # upload to Cloudflare R2
将查看器部署一次(Vercel、Netlify、GitHub Pages 或任何静态托管服务),用 VITE_DATA_URL 指向存储桶。此后,每个新邮箱只需 build 和 publish。参见 发布。
功能
| 任何邮箱导出 | .pst/.ost(通过 readpst)、mbox、Maildir/Maildir++、.eml;可同时处理多个,去重,文件夹保留为标签 |
| Gmail 的界面 | 会话、标签、星标、已读状态、键盘快捷键、深色模式、移动端布局 |
| Gmail 的搜索 | from:、to:、subject:、has:attachment、filename:、before:/after:、label:、"phrases"、-exclusions、OR(所有运算符) |
| 在附件内搜索 | 从 PDF、Word、Excel、PowerPoint、RTF 和附加邮件中提取文本 |
| 智能搜索 | 一个小型嵌入模型在浏览器中运行,按含义查找邮件 |
| 静态且低成本 | 打开一个会话获取约 0.5 MB 数据,即使来自包含 50,000 封邮件的邮箱;无需运行或修补任何东西 |
| 默认安全 | 邮件 HTML 经过清理和沙盒化;远程图片和跟踪像素在你要求之前保持屏蔽 |
| 开放数据 | 每个邮箱都是一组有文档的 Parquet 表,任何人都可以用 DuckDB、Polars 或 pandas 查询 |
| 会话 | 搜索 |
|---|---|
![]() |
![]() |
工作原理
mbv build 解析邮件,重建会话,提取附件文本,并写出 Parquet 表以及按词项排序的单词索引,因此搜索只下载包含其单词的少数行组。嵌入使用与浏览器之后用于查询的同一个 transformers.js 模型计算。在浏览器中,DuckDB-WASM 读取这些文件的字节范围;服务器上不需要其他任何东西。架构涵盖了设计决策、性能和安全模型。
隐私
没有登录:任何有链接的人都可以阅读你发布的内容,因此在发布前用 mbv preview 检查邮箱。不会为你做任何脱敏处理。
贡献
欢迎提交错误报告和拉取请求;参见 CONTRIBUTING.md。请私下报告安全问题(SECURITY.md)。
许可证
来源:Hacker News · github.com


