NEW HTTP request forwarding, workflow, queue

让能发邮件的客户端调用受控 API。

MailRelay 跑在你的机器上,收一封带 Token 的邮件,按配置调用 HTTP、Webhook、Workflow 或 Queue,然后把执行结果回信。很适合把 ChatGPT 手机端、快捷指令、NAS 脚本接到你自己的 API。

GomacOSLinux
$go install github.com/becomeopc/opc-mailrelay/cmd/mailrelay@latest
Subject   push
From      me@example.com
Client    ChatGPT iOS
Token     verified

# parser     message=hello
# router     push → http
# request    GET api.example.com/push/hello
# audit      saved to SQLite
# response   SMTP reply queued

收邮件、验身份、跑命令、写记录、回信。

认证、去重、审计、重试、outbox 和 dead letter 都在一条执行链路里。

Sender + tokenSQLite stateOperator replay

从手机、ChatGPT 或脚本发一封邮件。

MailRelay 适合低频、异步、需要留痕的动作。每个客户端都可以沿用发邮件这条路。

01

ChatGPT 手机端调用外部 API

在 ChatGPT 里让它按模板发一封邮件,MailRelay 收到后调用你配置好的 HTTP 接口,再把结果回信。

02

快捷指令触发家里或服务器上的命令

iOS 快捷指令、NAS、低代码工具只要能发邮件,就能触发一条受限命令。服务端不用额外开放入口。

03

把慢任务放进队列

备份、生成报告、同步数据这类任务可以进 Queue。失败会重试,耗尽后停在 dead letter,等你修好再 replay。

04

转发一段 HTTP 请求

邮件正文可以是一段 HTTP/1.1 请求报文。MailRelay 校验发件人和 Token 后,按 allowlist 转发。

邮件是一个很普通、但很好接的入口。

很多环境不能直接调你的内网 API,但可以发邮件。MailRelay 把这封邮件变成受限命令。

01

到处都能发

手机 App、ChatGPT、脚本、NAS 和企业终端基本都能发邮件。

02

断网也能等

邮件天然是异步投递。客户端不需要一直在线等接口返回。

03

格式够用了

Subject 放命令名,Header 放 Token,正文放参数或 HTTP 请求。

04

结果能回到人手里

执行结果通过回信送回去,SQLite 里保留去重、审计和失败记录。

命令说明来自同一份配置。

Command 名称、参数、必填项与示例生成 Catalog、`help` 和 `help deploy`。

Catalog Hash 记录 Added、Removed 与 Updated。

Subjecthelp
Available Commands
deploy   部署项目
backup   备份数据
summary  总结附件
Subjecthelp deploy
deploy
Description  部署项目
Parameters   env* · version
Example      env=prod

从收信到执行,每一步都有边界。

Receiver、Parser、Auth、Router、Handler 与 Reply 分层处理,失败可记录、可恢复。

01Mail接收
02Parser规范化
03Auth认证去重
04Router解析命令
05Handler安全执行
06Reply审计回复

它处理“发起一个动作”这件事。

适合声明式命令、固定目标和审计回放。需要交互式排障时,SSH 或专业平台还是更合适。

方式擅长需要承担
SSH连到机器上操作暴露入口、管理密钥、准备客户端
Chat bot平台内交互接 Bot、维护账号和在线通道
Raw webhook程序直接调用自己补认证、重试、审计和说明文档
Custom dashboard做一套专用界面持续开发、部署、登录和权限

每封邮件都要过同一套检查。

能跑什么、发到哪里,都写在配置里。

发件人、Token、Message-ID、出站网络、审计、重试和回放由运行时统一执行。

01

发件人和 Token 都要对

allowlist 校验发件人,Token 用常量时间比较。

02

同一封邮件只执行一次

Message-ID 会进入 SQLite claim,重复投递不会重复跑命令。

03

回信失败不重跑命令

执行结果写入 outbox。SMTP 临时失败只重试投递。

04

HTTP 出站有边界

目标主机来自配置,path/query 可以映射参数,DNS、IP 和重定向都会检查。

05

失败会留下来

队列任务和回复投递耗尽重试后停在 dead letter,需要人工 replay。

06

敏感值不进审计

密码、Token、完整正文和 sensitive 参数不会写进 SQLite 审计记录。

收到命令后,可以交给不同的 Handler。

常用的 HTTP、HTTP Request、Webhook、Queue 和 Workflow 已经稳定;本地进程、Agent 与 MCP 仍标为实验能力。

stable

HTTP / HTTP Request / Webhook

调用配置好的接口,或者转发邮件里的 HTTP 请求。

stable

Workflow & Queue

把多条命令串起来,或者把任务放到 SQLite 队列里慢慢跑。

experimental

Plugin & Shell

运行固定路径的本地程序,输入输出受限,不经过 shell 拼接。

experimental

Agent & MCP

端点、模型、提示词和 Tool allowlist 都写在配置里。

配置一个 HTTP 命令,给它发封邮件。

初始化配置,检查策略,启动服务,然后从手机、ChatGPT 或脚本发出第一封命令邮件。

01mailrelay init
02mailrelay doctor
03mailrelay run