AI MemMail:让 Dense-Mem 帮你分拣和回复商务邮箱
一篇实用部署教程:用开源 Rust 邮件智能体 ai-memmail 监听 IMAP 邮箱,从 Dense-Mem 取回业务上下文,并通过 SMTP 安全地回复、转发或不处理邮件。
AI 驱动 · 每小时限 20 次请求

快速答案
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 文件即可。
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"
doneconfig/config.yaml 是本地运行配置。它会包含邮箱、AI 服务商和 Dense-Mem 密钥,所以不要提交到 Git,不要截进图里,也不要放进共享目录。
步骤 3:设置控制面板密钥
控制面板使用 CONTROL_PANEL_KEY 作为登录密钥。
export CONTROL_PANEL_KEY="replace-with-a-long-local-panel-key"这个密钥用来保护本地控制面板。它不是邮箱密码,不是 AI 服务商密钥,也不是 Dense-Mem 密钥。
步骤 4:配置 AI 服务商
打开 config/config.yaml,更新 ai 配置块:
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 服务器。
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 会从 url 或 DENSE_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:配置一个邮箱
先从一个专用邮箱开始。运行之前替换所有示例值。
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_to 和 default_forward_to 应该指向真实人工审核地址。
步骤 7:启动服务栈
用发布到 GHCR 的镜像运行本地服务栈:
docker compose up默认控制面板地址是:
http://127.0.0.1:18080如果 18080 已经被占用,可以换一个宿主机端口:
AI_MEMMAIL_HTTP_PORT=18081 docker compose upPostgreSQL 默认暴露在 127.0.0.1:15432。应用容器会通过内部 Postgres 服务的 5432 端口连接数据库。
步骤 8:打开控制面板
打开本地面板,用刚才导出的 CONTROL_PANEL_KEY 登录。
控制面板提供这些运维视图:
- 概览指标
- 邮件历史
- 分类规则
- 邮箱设置
- MCP 服务器设置
- 安全名单
- 提示词和日志设置
ai-memmail 会初始化一些默认标签,例如 marketing_vendor、greeting、question、project_opportunity 和 other。它还会给每个邮箱初始化一条启用中的规则,用来自动婉拒营销供应商推销。你可以在规则视图里调整哪些邮件应该回答、转发或忽略。
步骤 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:
docker compose logs -f app再去控制面板的 History 视图检查结果。一个好的首次结果应该能看到 processing run、classification、memory recall、chosen action 和 outbound decision。如果邮件被回复了,检查接收账号,确认回复准确,而且邮件线程正确。
只有安全测试通过后,才应该发送更真实的邮件。
安全流程如何工作

每封邮件都被当成不可信数据处理。邮件正文永远不能变成 system instruction。
处理顺序是:
- 从 IMAP 获取未读邮件。
- 保存元数据并创建 processing run。
- 检查 banned senders 和 sender-review state。
- 运行 safety scan,此阶段没有 MCP tools,也没有发送能力。
- 隔离 prompt injection、jailbreak、恶意 hacking 或敏感信息外泄尝试。
- 对安全邮件做 category 和 topic 分类。
- 应用匹配的 mailbox rules。
- 如果没有规则处理,就运行 mailbox agent,而且只允许使用该邮箱配置过的 MCP servers。
- 可选地运行 outbound review。
- 只有结构化 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.
相关文章

不给 AI 登录信息的智能体浏览器自动化
一篇面向初学者的教程:用 Selenium、noVNC 手动登录和受限 API 封装,构建按计划或队列运行的智能体浏览器自动化,让智能体在看不到凭证、也不控制你个人电脑的情况下创建网站表单草稿。
阅读文章
5 分钟试用 Dense-Mem 托管演示
一篇快速教程:使用托管的 Dense-Mem 测试实例,把 Claude Code 和 Codex 接到同一份临时记忆,并观察共享上下文如何让 AI 更聪明地工作。
阅读文章
Dense-Mem 快速开始:让 Claude Code 和 Codex 使用同一份记忆
一篇面向初学者的教程:启动本地 Dense-Mem 服务器,创建第一把 memory key,并把 Claude Code 和 Codex 接到同一个共享 AI 记忆大脑。
阅读文章订阅更新
Go、AI/LLM 和分布式系统的技术文章,绝不滥发。