关于 Envelope
Envelope 将现有 IMAP 和 SMTP 邮箱接入统一收件箱,并提供面向 Agent 的命令行和 MCP 工具。它支持多账户邮件操作,Agent 草拟的邮件在发送前会等待批准。
主要功能
- 01跨账户统一收件箱
- 02访问 IMAP 和 SMTP 邮箱
- 03支持 JSON 输出的命令行
- 04面向 Agent 的 MCP 工具
- 05草稿审批与排队发送
- 06搜索、归档和稍后处理
适用场景
- 01集中阅读和搜索多个邮箱
- 02让 Agent 准备待审批的邮件草稿
- 03跨账户归档或稍后处理邮件
MCP 相关
向 MCP 客户端提供操作已连接邮箱的邮件工具。Agent 发送邮件受草稿和审批控制。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
📧 Envelope
U+1F4E7 — 懂的都懂。
一个收件箱,汇集所有电子邮件账户,并与 Agent 共享。
为什么是 U1F4E7? 这是 📧 的 Unicode 码点。人类看到的是仓库名称,Agent 看到的是一个信封。
设置 • 旅行 • CLI • 规则 • MCP • Agent 插件 • 与其他方案对比 • 仪表板 • 商业许可 • 许可证
Envelope 会连接你现有的电子邮件账户(Gmail、Fastmail、iCloud、自有域名或任何 IMAP 服务),并将它们汇集到一处。在浏览器中打开统一收件箱,即可一并阅读所有账户的邮件、同时搜索所有账户,并一次性跨账户归档或暂缓处理邮件。你的 Agent 也可以通过 CLI、JSON 输出或 MCP 操作同一批邮箱,而它们起草的邮件都会等待你批准。
你无需更改 DNS、设置新域名,也不用按邮件数量付费。只需为每个地址添加应用专用密码即可。
envelope accounts add --email [email protected]
envelope accounts add --email [email protected]
envelope serve # every account in one inbox at http://localhost:3141
envelope inbox --account [email protected] --json # the same mail, for your agent
安装
# macOS or Linux: downloads the release binary for your OS and CPU, checks it
# against the release's SHA-256 file, and installs it to ~/.local/bin (no sudo).
curl -fsSL https://u1f4e7.com/install.sh | bash
# Homebrew (macOS or Linux) installs the same release binary.
brew install tymrtn/u1f4e7/envelope
# `tymrtn/u1f4e7/u1f4e7` is a live compat alias for the same formula.
也可以自行构建:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh && source "$HOME/.cargo/env"
git clone https://github.com/tymrtn/U1F4E7
cd U1F4E7
cargo build --release
# Add `--features governor` to build in the Governor send gate (see below).
cp target/release/envelope ~/.local/bin/envelope
配置好 Apple 凭据后,发布工作流会对 macOS 二进制文件进行签名和公证(docs/release-signing.md);在此之前,macOS 发布版二进制文件均未签名。如果 macOS 拒绝运行你从浏览器下载的未签名 tarball,请清除隔离标记:
xattr -d com.apple.quarantine ~/.local/bin/envelope。
快速开始
Envelope 使用密码或应用专用密码登录 IMAP 和 SMTP,并使用 Google 登录登录 Gmail。可用的邮箱取决于你使用的登录方式:
- Fastmail 和 iCloud Mail: 在服务提供商的安全设置中创建应用专用密码。
- Gmail: 运行
envelope accounts add --provider google --email [email protected],即可在浏览器中使用 Google 登录;运行envelope accounts reauth [email protected] --provider google,可将通过密码添加的账户切换为 Google 登录。Envelope 的 Google 应用处于 Google 测试阶段期间,只有列入测试用户名单的地址才能登录,而且 Google 会每 7 天要求重新验证一次。能够创建应用专用密码的账户仍可使用该方式登录。在其他设备上添加--paste(通过 SSH 时会自动启用),或者现在运行--paste --no-wait,并在 24 小时内运行--finish -。 - Migadu、自托管 Dovecot 和大多数其他 IMAP 主机: 使用常规邮箱密码。
- Proton Mail: 通过 Proton Mail Bridge 使用,需要付费 Proton 套餐。请参阅 Proton Mail 了解设置方法。
- Outlook.com、Hotmail、Live 和 Microsoft 365: 暂不支持。Microsoft 已为 Outlook.com 账户和 Exchange Online停用 IMAP 密码登录,因此应用专用密码也无法解决这一问题。
Envelope 会使用密码短语加密保存的凭据。在终端中,它会提示你输入密码短语。脚本、Agent 和下面通过管道运行的命令无法通过终端提示输入,因此请先为 Envelope 提供一个密码短语文件:
# Create a random passphrase readable only by you, and point Envelope at it.
# Add the export line to your shell profile, and back the file up: without it
# the saved credentials cannot be decrypted.
(umask 077 && openssl rand -base64 32 > "$HOME/.envelope-passphrase")
export ENVELOPE_MASTER_PASSPHRASE_FILE="$HOME/.envelope-passphrase"
# Add an account. Envelope finds the IMAP/SMTP servers from the email domain
# and logs in before saving; a rejected login fails here and prints what to fix.
# (--skip-login-check saves without logging in, for offline setup.)
printf '%s\n' "$APP_PASSWORD" | envelope accounts add --email [email protected] --password-stdin
# Verify setup end-to-end (paths → account → IMAP auth → inbox peek)
envelope quickstart
# See folders with unread counts
envelope folders
# Read the inbox
envelope inbox --limit 20
# Read a message (does not mark it as read)
envelope read 42
# Send with attachment
envelope send --to [email protected] --subject "Report" --body "Attached." --attach report.pdf
# Reply in-thread as a reviewable draft
envelope draft reply 42 --body "Thanks."
# Snooze until Monday
envelope snooze set 42 --until monday --reason waiting-reply
# Watch for new mail in real time (IMAP IDLE push)
envelope watch --json
# Retrieve a verification-code JSON result for unattended automation (bounded and fail-closed)
envelope --json code --account [email protected] --from [email protected] --wait 60
# Schedule a send for business hours
envelope send --to [email protected] --subject "Report" --body "..." --at "monday 9am"
# Import contacts from your inbox, then create a contact-based rule
envelope contacts import --from-inbox
envelope rule create --name "VIP" --match-contact-tag vip --action flag=\\Flagged
# Agent scores a message, creates a rule, Envelope enforces it forever
envelope tag set 42 --score urgent=0.1 --tag newsletter
envelope rule create --name "Junk newsletters" --match-tag newsletter --match-score-below interesting=0.3 --action move=Junk
envelope rule run --confirm
# Unsubscribe from a mailing list (dry-run by default)
envelope unsubscribe 99
# Open the local dashboard at http://localhost:3141 (loopback, no auth — single-user local trust)
envelope serve
# Expose it to agents/devices on your tailnet — REQUIRES auth first.
# Option A (humans): allowlist tailnet identities; `tailscale serve` proves them.
envelope config set dashboard.tailscale_allow "[email protected],[email protected]"
# Option B (agents/scripts): a bearer token (stored 0600, never echoed).
envelope config set dashboard.auth_token "$(openssl rand -hex 32)"
tailscale serve --bg 3141
# See where Envelope is storing local state
envelope paths
控制面板以三栏邮件界面的形式打开。统一收件箱是默认的只读界面,数据来自本地邮件索引;只有显式刷新或选择账户/文件夹时,才会访问实时 IMAP 邮箱。
实际发送会优先进入发件箱。默认情况下,获准发送的邮件会排队等待安全冷却期,之后由计划发送任务执行 SMTP 传输。每次 Agent 发送都必须声明事实属性,Envelope 会根据其可观察到的信息检查这些属性,之后才会排队或发送。
Governor 评分是构建时启用的 Cargo 功能,默认关闭。Homebrew 和发布归档均在不启用此功能的情况下构建,因此其发送不会由 Governor 评分,发送结果和审计事件会将门控记录为 mode: "off"。在这些构建中,草稿模式上限仍会约束携带 Agent 令牌的 MCP 会话,但拥有 shell 访问权限的 Agent 可以通过 envelope send 发送(默认使用 autonomous-send),因此应向 Agent 提供带 Agent 令牌的 MCP,而不是 shell。使用 cargo build --release --bin envelope --features governor(或 cargo install --path crates/cli --features governor)构建的版本会在 SMTP 发送前立即生成经过净化的上下文属性,并通过 governor score --catalog envelope 请求 Governor 评分;只有 Governor 返回不透明的 allow 时才会发送。这些构建要求 Governor 二进制文件位于 SMTP_GOVERNOR_BIN 中指定的路径(crates/email/src/outbound.rs),若该文件缺失,所有发送都会以安全失败的方式停止。邮件正文、完整收件人地址、附件字节和机密信息绝不会进入 Governor 请求。
--json 输出中的控制面板 URL 元数据会在每次构建界面或处理请求时重新发现,来源是活动的本地 tailscale serve HTTPS 路由,其根代理目标为 http://127.0.0.1:3141。否则会回退到 http://localhost:3141。
每个面向 Agent 的 ui 对象都会通过 dashboard_origin_source(tailscale_serve 或 localhost_fallback)报告此决策,并且仅在发现过程需要关注时添加非机密的 dashboard_origin_warning。
MCP 结果会省略这些 ui 对象,且除非调用传入 include_ui_links: true,否则会跳过 Tailscale 发现,以便默认不将主机的 tailnet 名称纳入模型上下文。
dashboard_path 始终可移植,并继续作为 Agent 的规范句柄;dashboard.base_url 和旧版控制面板基础 URL 环境变量仅为兼容性保留,不会影响生成的 Agent 界面链接。
Tailscale Serve 会将控制面板限制在 tailnet 内;Tailscale Funnel 则会将其发布到公共互联网,因此除非有意公开,否则不要对邮箱控制面板使用 Funnel。
认证(在暴露给任何非环回地址之前必须完成)
在 127.0.0.1 上,仪表板是无需认证的单用户本地界面——
信任边界与 shell 相同。REST API 可以读取和删除邮件、
管理账户并将邮件加入发送队列,因此一旦其他设备能够访问它
(使用非环回地址的 --bind,或通过 tailscale serve 前端访问),就必须
要求提供凭据。请配置以下任一方式:
- Tailscale 身份允许列表(
dashboard.tailscale_allow)——请求中的Tailscale-User-Login标头(由tailscale serve注入)若在允许列表中, 即通过授权。用户只需打开.ts.netURL,无需输入令牌。 仅适用于由tailscale serve提供保护的场景,它会设置并移除该标头。 - Bearer 令牌(
dashboard.auth_token或ENVELOPE_DASHBOARD_TOKEN)—— 通过Authorization: Bearer <token>(或X-Envelope-Token)发送,并以 恒定时间进行比对。适用于 Hermes/OpenClaw Agent 和脚本。
配置任一方式后,所有 /api 路由在没有有效凭据时都会返回 401——包括
通过 tailscale serve 转发环回地址的情况。若未配置认证方式,
envelope serve --bind <non-loopback> 将拒绝启动。
/api/health 仍可供存活探针访问,但只有经过授权的调用方才能获取本地
文件系统路径。CORS 允许列表仅用于浏览器防护,并非访问控制机制。
为什么不选 Himalaya / Cloudflare / Resend?
与 Himalaya 相比
Himalaya 是一款出色的 CLI 邮件客户端。Envelope 是一款为 Agent 打造的 CLI 邮件客户端。
| Envelope | Himalaya | |
|---|---|---|
| 撰写 / 回复 / 转发 | ✅ | ✅ |
| 收件箱 / 搜索 / 文件夹 | ✅ | ✅ |
| 移动 / 复制 / 删除 / 标记 | ✅ | ✅ |
| 附件(发送 + 下载) | ✅ | ✅ |
| JSON 输出 | ✅ | ✅ |
| 多个账户 | ✅ | ✅ |
| 自动发现(邮箱 + 密码,完成) | ✅ | ❌ 手动配置 |
| 延后处理 + 取消延后 | ✅ | ❌ |
| 线程处理(支持 11 种语言的主题规范化) | ✅ | ❌ |
| 规则引擎(经 Agent 训练的垃圾邮件过滤器) | ✅ | ❌ |
| 邮件评分 + 标记 | ✅ | ❌ |
| 取消订阅(RFC 8058 一键操作) | ✅ | ❌ |
| Sieve 导出 | ✅ | ❌ |
IMAP IDLE 推送(envelope watch) | ✅ | ❌ |
| 验证码提取 | ✅ | ❌ |
| MCP 服务(Claude Code、Cursor、Zed) | ✅ | ❌ |
定时发送(--at) | ✅ | ❌ |
| 支持规则集成的联系人 | ✅ | ❌ |
| Webhook 规则操作 | ✅ | ❌ |
| 本地主机仪表板(Web UI) | ✅ | ❌ |
与 Cloudflare Email Service 相比
Cloudflare 的 Email Service(2026 年 4 月公开测试版)是面向 Cloudflare 平台的电子邮件基础设施。Envelope 则让你全面掌控现有邮箱。
| Envelope | Cloudflare Email | |
|---|---|---|
| 使用自己的邮箱(现有邮箱) | ✅ | ❌ Cloudflare 路由 |
| 需要设置 DNS | 无需 | Cloudflare DNS |
| 读取收件箱(完整 IMAP) | ✅ | ❌ 仅入站路由 |
| 可自托管 | ✅ | ❌ Workers 平台 |
| 单封邮件成本 | $0 | 付费 Workers 计划 |
| 原生支持 Agent | ✅ CLI + JSON | ✅ Workers SDK |
| 规则引擎 | ✅ 本地 + Sieve | Workers AI |
| 离线可用 | ✅ | ❌ 仅限云端 |
| 支持任意服务商 | ✅ Gmail、Fastmail、iCloud、Migadu,以及任何基于密码的 IMAP 主机 | ❌ 仅限 Cloudflare |
| 开源 | ✅ FSL-1.1-ALv2 | 仅参考应用 |
与 Resend / Mailgun / SendGrid 相比
| Envelope | Resend | Mailgun | SendGrid | |
|---|---|---|---|---|
| 使用自己的邮箱 | ✅ 现有邮箱 | ❌ 新域名 | ❌ 新域名 | ❌ 新域名 |
| DNS 设置 | 无需 | SPF/DKIM/DMARC | SPF/DKIM/DMARC | SPF/DKIM/DMARC |
| 单封邮件成本 | $0 | $0.001+ | $0.001+ | $0.001+ |
| 读取收件箱 | ✅ 完整 IMAP | ❌ 仅发送 | ⚠️ 有限支持 | ⚠️ 有限支持 |
| 可自托管 | ✅ | ❌ | ❌ | ❌ |
| 开源 | ✅ | ❌ | ❌ | ❌ |
服务商支持
Envelope 会通过 DNS 根据你的电子邮件域名自动发现 IMAP/SMTP。已测试的服务商:
| 服务商 | 身份验证 | 备注 |
|---|---|---|
| Gmail | Google 登录或应用专用密码 | 自动处理 [Gmail]/ 文件夹前缀 |
| Outlook.com / Microsoft 365 | 暂不支持 | Microsoft 要求通过 OAuth 登录 IMAP;Envelope 目前尚不支持 OAuth |
| Migadu | 密码 | 标准文件夹 |
| Fastmail | 应用专用密码 | 标准文件夹 |
| iCloud Mail | 应用专用密码 | 标准文件夹 |
| Proton Mail | 通过 Proton Mail Bridge 使用 Bridge 密码(需付费 Proton 套餐) | 使用 --trust-cert 信任 Bridge 的证书;请参阅 Proton Mail |
| 自托管 Dovecot | 密码 | 检测到 INBOX. 点分隔符 |
| 通用 IMAP | 密码 | 任何符合 RFC 3501 的服务 |
Proton Mail
Proton Mail Bridge 在你的计算机上运行,通过 127.0.0.1 使用 IMAP 和 SMTP 提供 Proton 邮箱服务。Bridge
仅适用于付费 Proton Mail 套餐。
Envelope 的 Bridge 支持已通过一个模拟服务器进行测试,该服务器提供的证书与 Bridge 的证书格式相同。尚无人使用 Bridge 本身进行过测试,因此请反馈你的使用情况。
- 安装 Bridge,登录并打开账户的邮箱详情。记下 Bridge 显示的密码;Envelope 使用该密码登录 Bridge,你的 Proton 账户密码无法使用。Bridge 默认使用 IMAP 端口 1143 和 SMTP 端口 1025(默认设置),两者均使用 STARTTLS,除非你更改了连接模式。
- Bridge 会使用设置时生成的自签名证书加密这些连接。从设置 → 高级设置 → 导出 TLS 证书中导出证书。Bridge 会将
cert.pem和key.pem写入你选择的文件夹。Envelope 只需要cert.pem;它会跳过文件中的任何私钥,也绝不会存储私钥。 - 添加账户:
printf '%s\n' "$BRIDGE_PASSWORD" | envelope accounts add \
--email [email protected] --password-stdin \
--imap-host 127.0.0.1 --imap-port 1143 --imap-security starttls \
--smtp-host 127.0.0.1 --smtp-port 1025 \
--trust-cert ~/Downloads/cert.pem
--trust-cert 会让此账户对其 IMAP、SMTP 和 ManageSieve 连接仅接受该证书,以此取代公共证书颁发机构。其他所有账户仍按原样检查证书。如果你将 Bridge 的 IMAP 连接模式设为 SSL,请使用 --imap-security tls。请让 Bridge 的 SMTP 保持为 STARTTLS:Envelope 仅在端口 465 上对 SMTP 使用 SSL。
Bridge 的证书变更时,Envelope 会在登录前拒绝连接,并打印受信任证书和所提供证书的指纹。导出新证书,然后使用 envelope accounts tls --account [email protected] --trust-cert cert.pem 信任它。
envelope accounts tls --account [email protected] 会显示账户当前信任的证书,而 openssl x509 -noout -fingerprint -sha256 -in cert.pem
会以相同格式打印文件的指纹。
MCP 服务
envelope mcp 通过 stdio 启动 Model Context Protocol 服务,可直接用于 Claude Code、Cursor、Zed 或任何 MCP 运行时中的邮件处理。
消息格式遵循 MCP stdio 规范:stdout 上每行一条以换行符分隔的 JSON-RPC 消息,该流中不输出其他内容(日志发送到 stderr)。服务接受 stdin 上以换行符分隔的 JSON;对于基于 1.1.0 之前版本编写的调用方,也接受旧版 Content-Length: 格式的消息帧——逐条消息检测。
# Print a ready-to-paste config snippet
envelope mcp --config
# Output (paste into your MCP config):
# {
# "mcpServers": {
# "envelope": {
# "command": "/path/to/envelope",
# "args": ["mcp"]
# }
# }
# }
工具包括 inbox、read、search、send、reply、create_reply_draft、create_forward_draft、modify_draft、get_draft、send_draft、move_message、flag、folders、tag、contacts、accounts、bulk、thread、rules_preview、rules_run、watch_status、snooze,以及 threat_show 和 governor_catalog。Envelope 是唯一能与任何 IMAP 服务提供商配合使用的 MCP 邮件服务。
若要获取一份可直接交给新 Agent 的完整操作指南,请参阅 Envelope Agent 技能。
若要了解如何使用作用域策略,通过一个共享收件箱运行多个 Agent,请参阅 Agent 概览。
Dockerfile 可在容器中运行 MCP 服务(docker build -t envelope .,然后运行 docker run -i --rm envelope)。将数据目录挂载到 /home/envelope/data,并传入为其中的 Agent 创建的 ENVELOPE_AGENT_TOKEN。如果尚无数据库,则无需令牌即可启动容器。此时容器会在空数据存储中创建一个临时 Agent,该 Agent 没有邮件账户,因此 MCP 目录可以启动服务并列出其工具。
在 Agent 中使用 Envelope
Envelope 提供 Claude Code、Codex 和 Cursor 插件,也可作为 skills.sh 上的技能使用。每种安装方式都会添加两个技能:用于处理邮件的 envelope,以及用于首次设置的 envelope-setup。此外,还会添加本地 MCP 服务(envelope mcp)。
前提条件: PATH 中有 envelope 二进制文件。如果缺少该文件,envelope-setup 技能会引导你完成安装。
curl -fsSL https://u1f4e7.com/install.sh | bash
# or
brew install tymrtn/u1f4e7/envelope
tymrtn/u1f4e7/u1f4e7 是指向同一 formula 的有效 Homebrew 兼容别名。
接下来添加账户并为 Agent 创建令牌。请在自己的终端中运行这两项操作,确保密码和令牌不会经过 Agent:
envelope accounts add --email [email protected]
envelope agent create claude-code
Agent 名称必须唯一,免费套餐最多允许两个活跃 Agent(运行 envelope agent list 即可查看)。每个工具使用一个名称,也可以在多个工具中重复使用同一个 Agent 的令牌。
Claude Code(安装时会提示输入令牌):
/plugin marketplace add tymrtn/U1F4E7
/plugin install envelope@envelope
Codex(会从 shell 环境中转发 ENVELOPE_AGENT_TOKEN):
codex plugin marketplace add tymrtn/U1F4E7
codex plugin add envelope@envelope
然后,在编辑器中将令牌添加到启动 Codex 的 shell 配置文件中(例如 ~/.zshrc)。在提示符处输入令牌会将其留在 shell 历史记录中。
export ENVELOPE_AGENT_TOKEN=<token>
Cursor Marketplace 插件: 从 Marketplace 安装 Envelope,然后在“插件 → 配置”中设置 ENVELOPE_AGENT_TOKEN。列表介绍文案见 MARKETPLACE.md。
Claude Desktop(MCP Bundle):从最新版本下载 envelope-<version>.mcpb 并打开。Claude 会要求输入令牌;如果设置了 ENVELOPE_MASTER_PASSPHRASE_FILE,还会要求提供密码短语文件。该 Bundle 自带适用于 macOS 和 Linux 的 envelope 二进制文件,并与 CLI 使用相同的账户和数据。
仅使用技能(适用于 skills.sh 支持的任何 Agent):
npx skills add https://github.com/tymrtn/U1F4E7/tree/main/skills
| 路径 | 作用 |
|---|---|
skills/envelope/、skills/envelope-setup/ | 所有工具共享的技能 |
.claude-plugin/ | Claude Code 清单和 Marketplace |
.codex-plugin/、.agents/plugins/marketplace.json | Codex 清单、MCP 配置和 Marketplace |
.cursor-plugin/plugin.json、mcp.json | Cursor 清单和 MCP 配置 |
packaging/mcpb/ | MCP Bundle 清单、启动器和图标;scripts/package-mcpb.sh 会在发布时将其打包 |
插件版本与 Envelope 发布版本保持一致;ci/check-agent-plugins.sh 会对此进行检查。
规则引擎
Agent 负责智能判断。Envelope 负责执行。
# 1. Agent reads inbox and scores each message
envelope inbox --json | jq -r '.[].uid' | while read uid; do
envelope tag set "$uid" --score urgent=0.1 --score interesting=0.2 --tag newsletter
done
# 2. Agent creates rules from observed patterns
envelope rule create --name "Junk newsletters" \
--match-tag newsletter --match-score-below interesting=0.3 \
--action move=Junk
# 3. Preview, then explicitly confirm rule execution
# Preview is read-only; --confirm is required for mailbox mutation.
envelope rule preview
envelope rule run --confirm
# 4. Export to Sieve for server-side filtering
envelope rule export
大模型会教 Envelope 需要查找什么。Envelope 会确定性地应用这些模式。只有出现新情况时,大模型才会再次介入。
rShield
rShield 会在你的机器上为每条消息检测钓鱼和恶意软件,并给出 clean、suspicious、dangerous 结果;若某个必须给出结果的分析器无法完成分析,则显示 unavailable。默认启用六个本地分析器,不会向任何地方发送数据。
envelope threat scan # score the newest INBOX messages
envelope threat explain 4812 # the signals and arithmetic behind a verdict
envelope threat report 4812 # draft a report to APWG (never sends)
两个可选分析器默认关闭,需手动启用:
| 分析器 | 启用方式 | 离开本机的数据 |
|---|---|---|
| ClamAV | brew install clamav,启动 clamd,然后运行 envelope config set threat.clamd.address unix:/path/to/clamd.sock | 附件字节数据,发送给你配置的 clamd |
| Spamhaus DBL | envelope config set threat.reputation.provider spamhaus-dbl(可选设置 threat.reputation.dqs_key) | 发件人和链接中的域名,作为 DNS 查询发送给 Spamhaus |
threat report 还会通过 RDAP 查询发件域名的滥用联系信息,以及仿冒域名(如果存在)的滥用联系信息,并将这些域名发送给其注册机构。每次外部查询都会记录为 lookup_performed 事件。Spamhaus 对其黑名单的免费和商业用途有限制;请先阅读其使用条款。设置详情、权重和 clamd 操作指南请参阅 docs/rshield.md。
控制面板
envelope serve 会在 http://localhost:3141 启动本地主机 Web UI。
- 左侧邮箱侧边栏包含统一收件箱、今天/需要处理、已延后、 已发送、草稿、所有邮件和各账户邮箱
- 中间为邮件列表,右侧为固定的阅读窗格
- 审核页面显示等待你批准的 Agent 草稿;日志页面显示 每个 Agent 的历史记录
- 回复/回复全部,自动关联邮件头
- 撰写邮件,支持切换 text/html 格式和添加文件附件
- ★ 已延后虚拟文件夹,突出显示已逾期邮件
- 搜索所有账户,支持 Gmail 风格的运算符(
from:、subject:、is:unread、before:)
旅行
Envelope Travel 是一个可自托管的行程与家庭协作工作区,位于
/travel。它使用你已有的 Gmail 或 Google Workspace
邮箱地址,无需转发地址或新建旅行账户。
- 开启 Google 两步验证并创建应用专用密码。
- 运行
envelope serve,打开 Travel,输入邮箱地址和应用专用 密码。Envelope 会先验证 Gmail,再保存加密后的凭据。全新安装 macOS 时会自动使用 Keychain;现有的加密 文件存储会保持不变。在无头 Linux 主机上,请在启动服务前设置ENVELOPE_MASTER_KEY或ENVELOPE_MASTER_PASSPHRASE_FILE。 - 将确认邮件留在已配置的 Gmail 文件夹中(默认为 INBOX),在 Travel 设置中选择
[Gmail]/All Mail以纳入已归档的确认邮件,或将确认邮件粘贴到收据处理台。邮箱扫描为只读操作: IMAPEXAMINE加BODY.PEEK[]不会将邮件标记为已读。
工作区会将航班、住宿、铁路、租车和活动归入各个行程;
保留源收据和解析器来源信息;将不确定的详情隔离以供审批;检测邮件中的变更和取消;安排提醒;
并提供共享任务。家庭共享链接可撤销,且在结构上不会包含确认码、收据文本、私人备注和解析器元数据。每个共享行程还会获得独立的只读 .ics 访问凭据,因此 Apple Calendar、
Google Calendar 或其他订阅者都无法获得编辑任务的权限。
如果仅在个人电脑上安装,需要同步、提醒、家庭页面或日历刷新时,请保持 envelope serve 运行;
笔记本电脑进入睡眠状态后无法轮询 Gmail。若要从家人的设备访问,推荐使用 Quick start 中的 Tailscale 配置。对于始终在线的 Linux 主机,请按照
docs/install-linux.md 安装
systemd 用户服务,将 ENVELOPE_HOME 放在持久化加密存储上,启用仪表板身份验证,
并通过 Tailscale Serve 或可信的反向代理终止 TLS。请勿匿名公开邮箱仪表板。当 Envelope 直接绑定到非环回地址时,Gmail 入门设置会被有意禁用:只能通过 localhost,或通过 Envelope 监听器仍绑定在环回地址上的 HTTPS/Tailscale 代理输入应用专用密码。自定义代理必须将 X-Forwarded-Proto 覆盖为面向客户端的实际协议;Gmail 凭据设置会拒绝明文代理请求以及与浏览器来源冲突的 HTTP 请求。
目前,Travel 中的变更和延误信息来自 Gmail 收到的邮件。实时登机口、飞机、行李转盘和运营延误数据需要单独的航班状态服务商;如果航空公司没有发送更新,系统不会推断这些信息。计划提醒会显示在 Travel 工作区中;此版本尚不支持在浏览器关闭时发送推送通知。
商业许可
个人使用免费。商业部署采用固定年费,按单个主域上的邮箱用户数量确定:
| 计划 | 价格 | 适用范围 | 支持 |
|---|---|---|---|
| 个人版 | 免费 | 个人非商业用途,仅限使用由你个人拥有并运营的邮箱 | 通过 GitHub issues 提供社区支持 |
| 团队版 | $240/年 | 单个组织的商业用途,单个主域上最多 10 位邮箱用户 | 电子邮件支持,尽力在下一个工作日内回复 |
| 成长版 | $960/年 | 单个组织的商业用途,单个主域上最多 25 位邮箱用户 | 优先电子邮件支持,目标是在下一个工作日内回复 |
| 企业版 | 联系我们 | 26 位及以上用户、多域部署、嵌入式/OEM、经销商条款或定制安全审查 | 定制支持协议 |
“商业用途”是指公司、团队、代理机构或付费项目以任何方式使用 Envelope,包括内部运营、客户工作流,或将 Envelope 嵌入产品中。“邮箱用户”是指在许可域上配置为由 Envelope 读取、发送邮件或执行自动化操作的不同人员或服务邮箱身份。同一人拥有同一邮箱的多个别名时,计为一位用户。“域”是指一个主电子邮件域;该主域的子域也包含在内,其他无关域则需要企业版许可。
许可按年计费,不可转让给其他组织,并在签发周年日续期。请通过 [email protected] 申请年度许可。
证据包
envelope evidence 会收集限定查询范围的本地证据包,同时保持源邮箱只读。收集时会使用 IMAP EXAMINE 打开所请求的文件夹,并通过 BODY.PEEK[] 获取规范的原始 RFC822 邮件。
envelope evidence collect \
--account [email protected] \
--folder '[Gmail]/All Mail' \
--query 'FROM "[email protected]" SUBJECT "contract"' \
--include-thread \
--out ./evidence-bundle
envelope evidence verify --from ./evidence-bundle
envelope evidence verify --from ./evidence-bundle --strict
结构化筛选条件可以替代 --query,也可以与其组合使用:--from-address、--to-address、--subject、--since、--before、--body 和可重复指定的 --keyword。除非原始查询明确为 ALL,否则至少需要一个筛选条件。
线程扩展由邮件头驱动,并有数量限制。默认情况下,--include-thread 最多获取 500 封邮件,同时沿着 Message-ID、In-Reply-To 和 References 链接追踪;可通过 --max-thread-messages 调整上限。达到上限时,证据包会记录一条警告。
证据包会有意包含邮件元数据、账户身份、IMAP 主机/用户名以及本地源路径,以便追溯来源。即使证据包不会序列化密码、OAuth 令牌或凭据文件路径,也应将其视为敏感信息。
证据包布局:
evidence-bundle/
manifest.json
index.csv
README.md
SHA256SUMS
bundle.sha256
messages/<encoded-folder>/<uidvalidity>-<uid>.eml
线程内容仅根据 Message-ID、In-Reply-To 和 References 纳入;绝不会以主题匹配作为后备方式。哈希文件可用于本地篡改检测,但不构成外部签名。MVP 的非目标包括:ZIP 打包、分离签名、PST/mbox 转换、多账户收集、修改邮箱,以及恢复/导入到邮箱。
CLI 参考
| 命令 | 描述 |
|---|---|
envelope accounts add/list/remove | 管理账户(自动发现主机) |
envelope accounts tls --account <a> [--trust-cert <pem>] [--imap-security tls|starttls] | 查看或更改账户固定的证书和 IMAP STARTTLS 选项 |
envelope folders | 列出文件夹及未读/总数 |
envelope inbox [--folder] [--limit] | 列出邮件 |
envelope read <uid> | 阅读邮件(BODY.PEEK — 不会自动标记为已读) |
envelope search "<query>" | IMAP 搜索 |
envelope send --to --subject --body [--attach] | 通过发件箱排队/发送邮件(在 governor 构建中还需通过 Governor 审核) |
envelope move/copy/delete <uid> | 邮件管理 |
envelope flag add/remove <uid> <flag> | IMAP 标记 |
envelope attachment list/download <uid> | 附件 |
envelope draft create/list/send/discard | 草稿(基于 IMAP) |
envelope snooze set/list/cancel | 使用灵活的时间解析设置稍后提醒;cancel --forget 会删除邮件已不存在的稍后提醒,不移动任何内容 |
envelope unsnooze [--once] | 返回到期的稍后提醒邮件 |
envelope thread show/list/build | 会话线程 |
envelope tag set/show/list | 为邮件评分和添加标签 |
envelope rule create/list/test/run/export | 邮件规则(支持 webhook 操作) |
envelope backup export/verify/restore | 将邮箱暂存到本地 RFC822 存档(离线验证,仅追加恢复) |
envelope evidence collect/verify | 按查询范围生成 RFC822 证据包,并支持离线验证 |
envelope unsubscribe <uid> [--confirm] | List-Unsubscribe(默认试运行) |
envelope watch [--webhook] [--json] | IMAP IDLE 推送 — 实时接收新邮件事件 |
envelope code --from <sender> [--wait 120] | 从发件人提取验证码/OTP 代码;邮件提供商必须已验证其 From 域(DMARC 或对齐的 DKIM);用于自动化的 --json 还需要 --account,并会在返回前等待状态稳定。操作员可通过 envelope config set otp.allow_unverified_senders <account> 为每个账户允许未验证的发件人 |
envelope paths | 显示解析后的数据库/凭据路径和 HOME 漂移警告 |
envelope contract [--surface <name>] | 导出带版本的 Agent JSON/MCP 契约 |
envelope mcp [--config] | 面向 Claude Code、Cursor、Zed 的 MCP 服务(stdio) |
envelope send --at "monday 9am" | 使用灵活的日期时间格式安排发送 |
envelope scheduled list/hold/cancel | 管理已安排的邮件(hold 取消排队并保留草稿;cancel 则丢弃草稿) |
envelope contacts add/list/show/tag/import | 支持规则集成的联系人存储 |
envelope serve | 本地主机仪表板 |
每个命令都支持供 Agent 使用的 --json。
架构
┌──────────────┐ ┌────────────────────────────┐ ┌──────────────┐
│ AI Agent │────▶│ Envelope (Rust) │────▶│ Your SMTP │
│ │ │ │ │ (Gmail, │
│ CLI / JSON │ │ crates/cli binary │ │ Migadu, │
│ │◀────│ crates/email IMAP/SMTP │◀────│ Fastmail) │
│ │ │ crates/store SQLite │ │ │
│ │ │ crates/dashboard web UI │ │ IMAP/SMTP │
└──────────────┘ └────────────────────────────┘ └──────────────┘
开发
cargo build # Build all crates
cargo build --release # Optimized release binary
cargo test --all --features governor # Also test with the Governor gate built in
cargo test # 194 tests, 0 failures
cargo clippy # Lint
./ci/check-orphans.sh # Verify every .rs file is reachable via mod
各版本的说明请参见 CHANGELOG.md。
许可证
FSL-1.1-ALv2 — 源码可用,不得提供竞争性服务。 另有年度商业许可证,可用于组织部署、支持、Enterprise/OEM 条款以及公共许可证范围之外的用途。公共许可证将在每个版本发布两年后转为 Apache 2.0。
版权所有 © 2026 Tyler Martin。
由 Tyler Martin 构建
你的 Agent 不该为了发送邮件而需要每月支付 50 美元购买 Resend 方案。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。