跳转到主要内容

AI MemMail:让 Dense-Mem 帮你分拣和回复商务邮箱

一篇实用部署教程:用开源 Rust 邮件智能体 ai-memmail 监听 IMAP 邮箱,从 Dense-Mem 取回业务上下文,并通过 SMTP 安全地回复、转发或不处理邮件。

9 分钟阅读
分享:
AI 驱动

AI 驱动 · 每小时限 20 次请求

一位业务经营者正在使用连接到记忆图谱的 AI 邮件仪表盘
AI MemMail 把繁忙的收件箱变成由 Dense-Mem 上下文支撑的 AI 辅助工作流。

快速答案

ai-memmail 是一个开源 Rust 邮件智能体,适合那些每天收到太多邮件、无法全部手动处理的个人经营者。

它会监听 IMAP 邮箱,先检查每封新邮件是否安全,再判断邮件类型,从 Dense-Mem 通过 MCP 取回相关业务上下文,然后选择三种结果之一:

  • 当答案被允许且有上下文支撑时,通过 SMTP 自动回复
  • 当请求需要人工判断时,转发给人工审核地址
  • 当没有安全或有用的动作时,不处理

实际使用场景很简单:独立业务经营者可以把服务介绍、政策、定价、项目历史、产品事实和路由偏好放进 Dense-Mem,然后让 ai-memmail 利用这层知识来处理常规来信,而不是把每一封邮件都当成需要亲自处理的任务。

试用在线演示

[email protected] 已接入一个在线 ai-memmail 演示。你可以先给这个地址发一封邮件,体验完整流程,再决定是否自己部署。

最适合测试的是正常的产品或支持类问题,主题围绕 Dense-Mem 或 ai-memmail,例如:

Subject: Dense-Mem and ai-memmail question

Hi, can Dense-Mem help ai-memmail answer questions about an open-source project, and when should the email agent forward to a human instead?

不要在测试邮件里放密码、API 密钥、私人账号信息、付款信息,或者任何机密内容。请把这个邮箱当作公开的自动化演示,而不是私人通道。

你要搭起来的东西

入站邮件依次经过安全扫描、分类、记忆召回、回复和人工审核结果
这条流水线的顺序是先安全、再记忆、最后发送。

v1 应用在一个从 ghcr.io/markhuangai/ai-memmail:latest 拉取的 Docker app 进程里运行两条路径:

  • Rust Axum Web API,用来提供 React 控制面板
  • worker,用来轮询 IMAP、执行 AI 决策、调用配置好的 Dense-Mem MCP 服务,并通过 SMTP 发送

PostgreSQL 会保存处理状态、邮件历史元数据、分类、规则匹配、出站动作和操作日志。邮件成功处理后,源邮件会被标记为 Seen。去重使用邮箱 ID 加 IMAP UIDVALIDITY 和 UID,避免重复轮询时发出重复回复。

为什么 Dense-Mem 是关键

大多数邮件自动化会掉进两个坑。

纯规则系统很可控,但太浅。它可以匹配标题,却不知道你的服务、历史决策、项目术语,也分不清真正的合作机会和模板化销售邮件。

普通 AI 邮件智能体更灵活,但上下文不足。如果模型没有你的业务知识,它就会猜、问太多追问,或者写出看起来很自信但其实不可靠的回复。

ai-memmail 用的是更合理的分层:

职责
ai-memmail拉取邮件、执行安全检查、应用规则、校验结构化动作、发送回复或转发。
Dense-Mem保存持久知识:政策、偏好、项目事实、历史决策和业务上下文。
AI 模型读取当前邮件和召回的上下文,然后生成结构化决策。

这正是它对单人业务有用的地方。邮件智能体不需要把所有事实都硬编码进 prompt。它可以根据当前邮件的发件人、标题和正文,去记忆层里取回相关上下文。

开始之前

不要一上来就用你的主私人邮箱测试。先用一个次要邮箱,或者专门的地址,例如 [email protected][email protected][email protected]

你需要这些东西:

  • Docker 和 Docker Compose
  • curl
  • 兼容 OpenAI 的聊天 API 端点和 API 密钥
  • 一个 Dense-Mem 服务器和 API 密钥
  • 一个启用了密码认证的 IMAP 和 SMTP 的邮箱账号
  • 一个可以接收可疑邮件转发的人工审核地址

如果你使用 Gmail、Outlook、Fastmail、Zoho 或其他托管邮箱,尽量使用应用专用密码或邮箱专用凭证。OAuth2 不在 ai-memmail v1 范围内。

步骤 1:准备 Dense-Mem

ai-memmail 的效果取决于它能召回什么知识。接入邮箱之前,先把真实业务上下文写进 Dense-Mem。

适合一开始保存的记忆可以这样写:

Remember for my business inbox: I do not want paid SEO, lead-generation, PR, backlink, or generic marketing vendor pitches. Politely decline when safe.
Remember for my business inbox: credible open-source contributors, concrete technical integration questions, and serious project opportunities should be forwarded to me for review.
Remember for my business inbox: support questions about Dense-Mem should use the public docs and project facts in memory. If the answer needs private account access, forward to a human.

补充未来邮件智能体会用到的事实:

记忆类型示例
服务内容你卖什么、不卖什么、支持哪些服务、公开项目链接。
政策退款政策、预约规则、回复语气、升级给人工的条件。
路由哪些主题可以回答,哪些必须转发,哪些发件人不值得继续沟通。
上下文项目名称、可公开给客户看的事实、产品差异、常见回答。

不要保存密码、付款信息、私钥,或者任何你不希望配置的 AI 服务商处理的内容。Dense-Mem 是上下文层,不是密码管理器。

如果你还没有运行 Dense-Mem,可以先看 Dense-Mem 快速开始,或者用 Dense-Mem 托管演示理解流程。真正接业务邮箱时,请使用你自己控制的 Dense-Mem server。

步骤 2:创建运行目录

运行 ai-memmail 不需要克隆完整源码仓库。创建一个小的运行目录,放入 Compose 文件、配置文件和发布镜像会用到的 prompt 文件即可。

bash
mkdir ai-memmail
cd ai-memmail
curl -fsSLO https://raw.githubusercontent.com/markhuangai/ai-memmail/main/docker-compose.yml
mkdir -p config prompts
curl -fsSL https://raw.githubusercontent.com/markhuangai/ai-memmail/main/config/config.example.yaml -o config/config.yaml
for file in safety-scan.md email-classifier.md rule-action.md outbound-review.md support-agent.md; do
  curl -fsSL "https://raw.githubusercontent.com/markhuangai/ai-memmail/main/prompts/$file" -o "prompts/$file"
done

config/config.yaml 是本地运行配置。它会包含邮箱、AI 服务商和 Dense-Mem 密钥,所以不要提交到 Git,不要截进图里,也不要放进共享目录。

步骤 3:设置控制面板密钥

控制面板使用 CONTROL_PANEL_KEY 作为登录密钥。

bash
export CONTROL_PANEL_KEY="replace-with-a-long-local-panel-key"

这个密钥用来保护本地控制面板。它不是邮箱密码,不是 AI 服务商密钥,也不是 Dense-Mem 密钥。

步骤 4:配置 AI 服务商

打开 config/config.yaml,更新 ai 配置块:

yaml
ai:
  protocol: openai
  AI_API_URL: "https://api.openai.com/v1"
  AI_API_SECRET: "replace-with-your-ai-api-key"
  AI_MODEL: "gpt-4.1-mini"
  review:
    enabled: false
    prompt_path: "outbound-review.md"

代码会调用兼容 OpenAI 的 /chat/completions 端点,并把温度参数设为 0。如果你的服务商已经给出了完整的 /chat/completions URL,ai-memmail 也能处理。

第一次测试时先保持出站审核关闭。基础流程跑通后,再给风险更高的邮箱打开第二轮审核。

步骤 5:接入 Dense-Mem

在同一个配置文件里,配置 Dense-Mem MCP 服务器。

yaml
mcp_servers:
  dense_mem_primary:
    transport: streamable_http
    command:
    args: []
    env:
      DENSE_MEM_API_KEY: "dm_replace_with_your_dense_mem_key"
    url: "https://your-dense-mem.example.com/mcp"

当前 worker 会从 urlDENSE_MEM_MCP_URL 读取 MCP URL,并从 DENSE_MEM_API_KEY 读取 API 密钥。关键点是:这个 URL 必须能从 ai-memmail 应用容器内访问。

如果 Dense-Mem 运行在公开 HTTPS 主机上,就使用那个 URL。如果 Dense-Mem 和 ai-memmail 在同一个 Docker 网络里,类似 http://dense-mem:8080/mcp 的服务 URL 可以工作。如果 Dense-Mem 只跑在宿主机上,请先确认容器能解析并访问宿主机地址,再把它用于真实邮件。

步骤 6:配置一个邮箱

先从一个专用邮箱开始。运行之前替换所有示例值。

yaml
mailboxes:
  - id: support
    address: [email protected]
    enabled: true
    poll_interval_seconds: 60
    safety_forward_to: ["[email protected]"]
    accepted_conditions:
      - recipients: ["[email protected]"]
        subject_regex: []
    mcp_servers: ["dense_mem_primary"]
    agent:
      system_prompt_path: "support-agent.md"
      default_forward_to: ["[email protected]"]
    imap:
      host: imap.example.com
      port: 993
      tls: true
      username: [email protected]
      password: "replace-with-imap-password"
      folder: INBOX
    smtp:
      host: smtp.example.com
      port: 587
      starttls: true
      username: [email protected]
      password: "replace-with-smtp-password"
      from: [email protected]

accepted_conditions 会让 worker 聚焦在发给这个邮箱地址的邮件上。safety_forward_todefault_forward_to 应该指向真实人工审核地址。

步骤 7:启动服务栈

用发布到 GHCR 的镜像运行本地服务栈:

bash
docker compose up

默认控制面板地址是:

http://127.0.0.1:18080

如果 18080 已经被占用,可以换一个宿主机端口:

bash
AI_MEMMAIL_HTTP_PORT=18081 docker compose up

PostgreSQL 默认暴露在 127.0.0.1:15432。应用容器会通过内部 Postgres 服务的 5432 端口连接数据库。

步骤 8:打开控制面板

打开本地面板,用刚才导出的 CONTROL_PANEL_KEY 登录。

控制面板提供这些运维视图:

  • 概览指标
  • 邮件历史
  • 分类规则
  • 邮箱设置
  • MCP 服务器设置
  • 安全名单
  • 提示词和日志设置

ai-memmail 会初始化一些默认标签,例如 marketing_vendorgreetingquestionproject_opportunityother。它还会给每个邮箱初始化一条启用中的规则,用来自动婉拒营销供应商推销。你可以在规则视图里调整哪些邮件应该回答、转发或忽略。

步骤 9:发送一封安全测试邮件

从另一个账号给配置好的邮箱发送测试邮件:

Subject: Question about your AI memory project

Hi, I found your Dense-Mem project. Can you point me to the best quick-start guide and explain whether it can be used by more than one AI client?

然后观察 app logs:

bash
docker compose logs -f app

再去控制面板的 History 视图检查结果。一个好的首次结果应该能看到 processing run、classification、memory recall、chosen action 和 outbound decision。如果邮件被回复了,检查接收账号,确认回复准确,而且邮件线程正确。

只有安全测试通过后,才应该发送更真实的邮件。

安全流程如何工作

一封可疑邮件被隔离等待人工审核,安全邮件继续进入回复流程
不可信邮件必须先通过扫描,之后才可能接触记忆工具或发送动作。

每封邮件都被当成不可信数据处理。邮件正文永远不能变成 system instruction。

处理顺序是:

  1. 从 IMAP 获取未读邮件。
  2. 保存元数据并创建 processing run。
  3. 检查 banned senders 和 sender-review state。
  4. 运行 safety scan,此阶段没有 MCP tools,也没有发送能力。
  5. 隔离 prompt injection、jailbreak、恶意 hacking 或敏感信息外泄尝试。
  6. 对安全邮件做 category 和 topic 分类。
  7. 应用匹配的 mailbox rules。
  8. 如果没有规则处理,就运行 mailbox agent,而且只允许使用该邮箱配置过的 MCP servers。
  9. 可选地运行 outbound review。
  10. 只有结构化 action 通过确定性校验后才发送。

这很重要,因为邮件本身就是对抗性输入面。邮件可以写“ignore previous instructions”,也可以要求泄露 secrets。ai-memmail 会先检查这些内容,再允许 mailbox agent 召回记忆或起草回复。

规则和 Dense-Mem 各放什么

每次都必须执行的政策放进 rules。AI 理解邮件时需要的背景知识放进 Dense-Mem。

放进 rules放进 Dense-Mem
婉拒 marketing vendor outreach。你的业务做什么、哪些服务可以公开说明。
法律、财务、账号或凭证请求必须转发。常用解释和产品事实。
明显低价值类别直接 no-op。已知项目、集成、公开 roadmap 说明和常见支持回答。
安全敏感请求升级给人工。你偏好的语气,以及什么算认真机会。

这样系统会更容易维护。Rules 负责划边界。Dense-Mem 让边界内的回答有足够知识。

生产使用注意事项

在重要邮箱上使用 ai-memmail 之前,先收紧设置。

  • 使用专用邮箱,不要使用私人主邮箱或大杂烩 catch-all。
  • 使用 app password 或邮箱专用凭证。
  • 不要把 config/config.yaml 提交到 Git,也不要把它截进图里。
  • 把人工审核转发地址指向有人看的邮箱。
  • 任何可能讨论金钱、合同、客户私密数据或账号操作的邮箱,都应先打开 outbound review。
  • Dense-Mem 里的记忆应该是事实型、可公开安全使用、并且经过你审核的。
  • 如果 history 和 audit trail 重要,请备份 PostgreSQL。

最大的运维错误,是把 AI 邮件自动化当成一个开关。先从窄邮箱、窄 accepted conditions 和保守规则开始。审过真实历史后,再逐步扩大范围。

当前 v1 限制

这个项目很实用,但不是魔法。

  • v1 使用 password-authenticated IMAP/IMAPS 和 SMTP/SMTPS。
  • OAuth2 不在 v1 范围内。
  • Secrets 存在本地 YAML config 里,所以本地文件管理很重要。
  • worker 依赖 IMAP UNSEEN 和把已处理邮件标记为 Seen
  • AI 负责起草决策,但应用负责校验、收件人、线程、转发和发送。

最后一点最重要。你希望模型理解语言和上下文,但不应该让它无限制地控制你的邮箱。

下一步

阅读并收藏项目:github.com/markhuangai/ai-memmail

如果你想直接体验在线演示,可以给 [email protected] 发送一封关于 Dense-Mem 或 ai-memmail 的问题邮件。

如果你还不熟悉 Dense-Mem,先把 Dense-Mem 跑起来:

长期来看,这个模式不只适用于邮件。Dense-Mem 是业务知识层,ai-memmail 是它上面的一种智能体接口。你不需要从零训练每一个自动化流程,而是维护同一层记忆,再让边界清晰的智能体安全使用它。

许可

Article text © 2026 Mark Huang. Licensed under Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) unless otherwise noted. 文章文本可在非商业场景下分享或翻译,但需标注原文 URL。商业使用需事先取得书面许可,并清楚引用原始来源。

代码片段、截图、第三方素材和网站源码可能适用单独条款。

建议署名: Based on "AI MemMail:让 Dense-Mem 帮你分拣和回复商务邮箱" by Mark Huang, originally published at https://markhuang.ai/zh/blog/ai-memmail-dense-mem-email-agent.

订阅更新

Go、AI/LLM 和分布式系统的技术文章,绝不滥发。