mcpField
E
Envelope

Envelope

本地服务
u1f4e7.com通信协作72 周前更新

关于 Envelope

Envelope 将现有 IMAP 和 SMTP 邮箱接入统一收件箱,并提供面向 Agent 的命令行和 MCP 工具。它支持多账户邮件操作,Agent 草拟的邮件在发送前会等待批准。

主要功能

  1. 01跨账户统一收件箱
  2. 02访问 IMAP 和 SMTP 邮箱
  3. 03支持 JSON 输出的命令行
  4. 04面向 Agent 的 MCP 工具
  5. 05草稿审批与排队发送
  6. 06搜索、归档和稍后处理

适用场景

  1. 01集中阅读和搜索多个邮箱
  2. 02让 Agent 准备待审批的邮件草稿
  3. 03跨账户归档或稍后处理邮件

MCP 相关

向 MCP 客户端提供操作已连接邮箱的邮件工具。Agent 发送邮件受草稿和审批控制。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
mcpbenvelope-1.3.26.mcpb

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

📧 Envelope

U+1F4E7 — 懂的都懂。

一个收件箱,汇集所有电子邮件账户,并与 Agent 共享。

为什么是 U1F4E7? 这是 📧 的 Unicode 码点。人类看到的是仓库名称,Agent 看到的是一个信封。

设置 • 旅行 • CLI • 规则 • MCP • Agent 插件 • 与其他方案对比 • 仪表板 • 商业许可 • 许可证

Rust v1.3.26 许可证:FSL-1.1-ALv2


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.net URL,无需输入令牌。 仅适用于由 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 邮件客户端。

EnvelopeHimalaya
撰写 / 回复 / 转发✅✅
收件箱 / 搜索 / 文件夹✅✅
移动 / 复制 / 删除 / 标记✅✅
附件(发送 + 下载)✅✅
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 则让你全面掌控现有邮箱。

EnvelopeCloudflare Email
使用自己的邮箱(现有邮箱)✅❌ Cloudflare 路由
需要设置 DNS无需Cloudflare DNS
读取收件箱(完整 IMAP)✅❌ 仅入站路由
可自托管✅❌ Workers 平台
单封邮件成本$0付费 Workers 计划
原生支持 Agent✅ CLI + JSON✅ Workers SDK
规则引擎✅ 本地 + SieveWorkers AI
离线可用✅❌ 仅限云端
支持任意服务商✅ Gmail、Fastmail、iCloud、Migadu,以及任何基于密码的 IMAP 主机❌ 仅限 Cloudflare
开源✅ FSL-1.1-ALv2仅参考应用
与 Resend / Mailgun / SendGrid 相比
EnvelopeResendMailgunSendGrid
使用自己的邮箱✅ 现有邮箱❌ 新域名❌ 新域名❌ 新域名
DNS 设置无需SPF/DKIM/DMARCSPF/DKIM/DMARCSPF/DKIM/DMARC
单封邮件成本$0$0.001+$0.001+$0.001+
读取收件箱✅ 完整 IMAP❌ 仅发送⚠️ 有限支持⚠️ 有限支持
可自托管✅❌❌❌
开源✅❌❌❌

服务商支持

Envelope 会通过 DNS 根据你的电子邮件域名自动发现 IMAP/SMTP。已测试的服务商:

服务商身份验证备注
GmailGoogle 登录或应用专用密码自动处理 [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 本身进行过测试,因此请反馈你的使用情况。

  1. 安装 Bridge,登录并打开账户的邮箱详情。记下 Bridge 显示的密码;Envelope 使用该密码登录 Bridge,你的 Proton 账户密码无法使用。Bridge 默认使用 IMAP 端口 1143 和 SMTP 端口 1025(默认设置),两者均使用 STARTTLS,除非你更改了连接模式。
  2. Bridge 会使用设置时生成的自签名证书加密这些连接。从设置 → 高级设置 → 导出 TLS 证书中导出证书。Bridge 会将 cert.pem 和 key.pem 写入你选择的文件夹。Envelope 只需要 cert.pem;它会跳过文件中的任何私钥,也绝不会存储私钥。
  3. 添加账户:
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.jsonCodex 清单、MCP 配置和 Marketplace
.cursor-plugin/plugin.json、mcp.jsonCursor 清单和 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)

两个可选分析器默认关闭,需手动启用:

分析器启用方式离开本机的数据
ClamAVbrew install clamav,启动 clamd,然后运行 envelope config set threat.clamd.address unix:/path/to/clamd.sock附件字节数据,发送给你配置的 clamd
Spamhaus DBLenvelope 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 邮箱地址,无需转发地址或新建旅行账户。

  1. 开启 Google 两步验证并创建应用专用密码。
  2. 运行 envelope serve,打开 Travel,输入邮箱地址和应用专用 密码。Envelope 会先验证 Gmail,再保存加密后的凭据。全新安装 macOS 时会自动使用 Keychain;现有的加密 文件存储会保持不变。在无头 Linux 主机上,请在启动服务前设置 ENVELOPE_MASTER_KEY 或 ENVELOPE_MASTER_PASSPHRASE_FILE。
  3. 将确认邮件留在已配置的 Gmail 文件夹中(默认为 INBOX),在 Travel 设置中选择 [Gmail]/All Mail 以纳入已归档的确认邮件,或将确认邮件粘贴到收据处理台。邮箱扫描为只读操作: IMAP EXAMINE 加 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 方案。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。