用途
MailFathom 旨在解决个人邮箱作为最大且最不可用的存档的问题。它把 IMAP 邮箱同步到用户自托管的 PostgreSQL 数据库,索引整个邮件副本,使其可被搜索、阅读和引用问答,并通过模型上下文协议(Model Context Protocol, MCP)将邮件作为工具暴露给 AI 代理。
主要能力
- 同步与索引:将 IMAP 账户同步到自有的 PostgreSQL 数据库,并建立检索索引。
- 本地读取:所有读取操作均基于本地副本,不联系邮件服务器,速度快,服务器离线时仍可用,且不会改变远端邮件状态(如 \Seen 标记)。
- AI 代理接入:通过 MCP 提供 21 个工具,AI 代理可列举、搜索、阅读邮件,并基于存档进行引用问答。
- 语义检索与问答:支持语义检索,能够回答跨存档的问题。
- 受控写入:标记、草拟、发送等写入操作需要显式授权,且每个账户和凭据分别授予。发送默认关闭,受收件人策略和周期上限约束。
- 安全性设计:MCP 端点默认关闭;启用时需声明是否要求凭据;凭据不存储在配置文件中,仅保存引用(文件路径、systemd credential、环境变量等);邮件内容、元数据、提取文本和搜索摘录绝不记录日志或出现在错误消息中。
- 部署形态:推荐使用 Docker Compose 安装,也支持 Podman Quadlet、Kubernetes 和原生 systemd 进程。容器镜像精简且无 shell、无包管理器、无 HTTP 客户端,以非特权用户运行于只读根文件系统。
使用方式
- 安装:推荐 Docker Compose,该方式会为用户配置 PostgreSQL,并将端口发布在回环地址上,默认不对其他机器开放。也提供 Podman Quadlet、Kubernetes 和原生 systemd 的安装指南。
- 快速尝试:通过一个脚本询问邮箱位置、写入配置、启动服务栈、提供 schema 步骤、记录用户和邮箱,并生成聊天客户端连接使用的密钥。但该脚本仅适用于单机测试,使用明文 HTTP,凭据保存在 checkout 下的文件中,且不提供备份。
- 本地开发:可在 checkout 中使用本地 Aspire 编排,自动配置 PostgreSQL 并应用 schema。
- 管理:0.8.0 起,用户、邮件账户、凭据及角色权限作为数据库记录,通过 mfctl 在运行时管理,支持多人共用、共享邮箱及多副本部署。
- 升级:从 0.7.0 升级相当于在备份上进行全新安装,应用 schema 会丢弃存储的邮件(同步会重新获取),且不会导入 0.7.0 配置中声明的邮箱或凭据,需通过 mfctl 重新记录。
- 文档:官方文档站提供搜索、从源码生成的 API 参考和版本选择器。也可将文档交给 AI 助手辅助安装、配置或使用。
适用场景
- 个人或团队管理大量历史邮件,需要跨整个存档进行搜索和问答。
- 希望 AI 代理基于本地邮件副本执行读取、草拟等操作,且对写入有严格控制。
- 注重数据隐私,要求邮件副本、数据库和部署均自托管,不依赖第三方服务。
- 需要在多人之间共享邮箱或部署多个副本的企业级场景。
限制
- 项目处于活跃开发中,1.0.0 之前任何版本间可能发生破坏性变更,包括 MCP 工具、配置、数据库 schema 或部署方式。
- 每次升级前需阅读 changelog 并保留可回退的备份。
- 发送功能默认关闭,且仅在部署非只读、已配置收件人策略和周期上限,并为凭据显式授予权限时才会执行。
- 夜间构建(nightly)不是正式发布,schema 可能领先于任何已发布迁移,无升级路径,且会随新构建积累而被删除。
- 开发在 Linux 上进行,其他平台未经验证。
- 客户端(Web 和桌面)为 alpha 版本,不完整且可能随版本变化,建议使用 MCP 工具作为受支持的访问方式。
技术栈与许可
- 基于 .NET 10 的洁净架构模块化单体,边界强制,编译器与分析器诊断视为错误。
- 许可证:AGPL-3.0-only。
- 镜像多架构,基于固定补丁的基础镜像,发布前扫描,附签名构建溯源。
- 当前版本:0.8.0。