跳到正文
Hacker News· rahimnathwani·· 7 天前AI 评分48

Mailbox Viewer:把 FOIA 邮件转成类 Gmail 静态站点

Show HN: Mailbox Viewer – publish FOIA email dumps as a static Gmail-like site

AI 导读

Mailbox Viewer 可将 mbox 或 PST 文件转成外观与操作都类似 Gmail 的静态网站,支持会话、标签、附件、Gmail 搜索操作符和浏览器内语义搜索,全程无需服务器。

正文 · AI 翻译

CI Demo License

把 mbox 或 PST 文件变成一个外观和功能都像 Gmail 的静态网站:会话、标签、附件、Gmail 的搜索运算符以及浏览器内语义搜索。无需服务器。构建过程会写出 Parquet 文件,你可以托管在 Cloudflare R2 或任何静态文件托管服务上,而查看器是一个静态站点,通过 DuckDB-WASM 在浏览器中查询这些文件。

它是为公共记录和 FOIA 响应而构建的,这些响应往往以 PST 或 mbox 形式送达,大多数人无法打开,更不用说搜索或分享了。

试试在线演示(一个虚构的邮箱,完全按照文档描述的方式提供服务:查看器在 Vercel 上,数据在 Cloudflare R2 上) · 文档

The inbox of the demo mailbox

安装

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 查询
会话 搜索
A conversation Search with filter chips

工作原理

mbv build 解析邮件,重建会话,提取附件文本,并写出 Parquet 表以及按词项排序的单词索引,因此搜索只下载包含其单词的少数行组。嵌入使用与浏览器之后用于查询的同一个 transformers.js 模型计算。在浏览器中,DuckDB-WASM 读取这些文件的字节范围;服务器上不需要其他任何东西。架构涵盖了设计决策、性能和安全模型。

隐私

没有登录:任何有链接的人都可以阅读你发布的内容,因此在发布前用 mbv preview 检查邮箱。不会为你做任何脱敏处理。

贡献

欢迎提交错误报告和拉取请求;参见 CONTRIBUTING.md。请私下报告安全问题(SECURITY.md)。

许可证

MIT

来源:Hacker News · github.com