发布🏤
本地邮件守护进程、MCP服务器和CLI——完全用Swift构建。
📖 阅读公告→
建筑
邮寄是一个包裹中的三件事:
postd --守护进程
一个轻量级的过程,维护与所有配置的邮件服务器的持久IMAP连接。可选地,它可以在任何邮箱(收件箱、已发送邮件、自定义文件夹等)上使用IMAP IDLE,以便在邮件到达或更改时获得即时推送通知。当检测到更改时,它可以触发自定义命令——一个shell脚本、一个webhook调用,无论你需要什么。
MCP服务器
守护进程兼作 主控程序 (模型上下文协议)服务器,将您的电子邮件暴露给AI代理。代理可以通过标准化的工具界面列出服务器、搜索消息、获取内容、下载附件、移动/复制/标记消息、起草电子邮件等。
post --CLI
用于搜索、阅读、下载和管理电子邮件的快速命令行客户端。通过本地Bonjour+HTTP与正在运行的守护进程通信——不需要单独的IMAP连接。
post list --server work --limit 10
post fetch 12199 --server work
post fetch 12198,12199 --eml --out ./backup
post search --from "amazon" --since 2025-01-01
post move 12345 Archive
post attachment 12199 --output ./downloads
post attachment 12199 --cid "image-content-id"
post draft --to colleague@example.com --subject "Update" --body email.md运作原理
┌─────────────┐ ┌──────────────────┐
│ post CLI │◄── Bonjour + HTTP ─────►│ │
└─────────────┘ │ │──── IMAP IDLE ──► Mail Server 1
│ postd daemon │──── IMAP IDLE ──► Mail Server 2
┌─────────────┐ │ │──── IMAP IDLE ──► Mail Server 3
│ AI Agents │◄── MCP (TCP) ──────────►│ │
└─────────────┘ └──────────────────┘守护进程保存所有IMAP连接。CLI和AI代理都与守护进程通信,但从不直接与邮件服务器通信。这意味着:
- 单连接池 --没有重复的IMAP会话
- 默认情况下仅限本地 --守护进程仅接受来自本地主机的连接(默认情况下是安全的)
- 即时发现 --CLI通过Bonjour在本地计算机上查找守护程序
- 始终保持最新状态 --IDLE保持邮箱状态新鲜
- 触发器脚本 --新邮件到达时运行自定义命令
主要特点
🔐 安全凭证存储
将凭据直接存储在配置中(简单)或硬件绑定的macOS Keychain中(推荐)。Post创建了一个用Mac硬件UUID加密的私钥链——凭据永远不会离开你的机器。
📝 Markdown电子邮件草稿
从普通的markdown文件起草丰富的HTML电子邮件。Post在您的邮件客户端中处理转换并创建草稿,随时可以查看和发送。
post draft --to team@company.com \
--subject "Weekly Update" \
--body weekly-update.md🔑 多代理访问控制
创建限定范围的API密钥,以限制哪些代理可以访问哪些邮件服务器。非常适合沙盒代理或多租户场景。
post api-key create --servers work # Work-only token
post api-key create --servers personal # Personal-only token⚡ IMAP空闲推送通知
邮件到达时收到即时通知。非常适合发票处理、时事通讯归档或通知路由等自动化工作流程。
📬 邮件室自动化
将IDLE与处理程序脚本相结合,构建一个自动对收到的邮件进行排序的“邮件室”:
- 通讯→ 存档为markdown
- 服务通知→ 按发件人组织
- Spam → 使用AI过滤(沙盒,无法访问个人数据)
- 个人邮件→ 留在收件箱中以引起您的注意
目标: Inbox Zero通过智能、自动化的分诊。
入门指南
需求
- macOS 14.0+
- Swift 6.0+
构建与运行
# Build
swift build
# Add credentials to secure keychain
post keychain add personal --host imap.gmail.com --port 993
# Create config
echo '{ "servers": { "personal": {} } }' > ~/.post.json
# Start the daemon
postd start📖 守护程序设置和配置→ --配置选项、IMAP空闲、启动代理设置、凭据管理
依赖项
| 包装 | 用途 |
|---|---|
| SwiftMail | IMAP/SMTP客户端库 |
| SwiftMCP | 模型上下文协议服务器框架 |
| Swifttext | HTML/PDF/DOCX到降价转换 |
| 快速参数分析器 | CLI参数解析 |
| swift日志 | 结构化日志记录 |
相关项目
路线图
- 基于身份的访问控制 --为不同的代理分配不同的身份,限制每个代理可以看到的邮箱和服务器
- 权限级别 --细粒度访问层:
- 只读 - 仅存档 - 允许垃圾/删除 - 允许创建草稿 - 允许发送
- 多代理隔离 --确保特工只看到他们应该看到的东西
- 自制分销 --易于安装
brew install cocoanetics/tap/post - ClawHub技能 --预打包的OpenClaw技能,便于集成
许可证
麻省理工学院——见 许可证 了解详情。
______________________________________________________________________
