Anil-matcha/open-agent-email
Open-source email infrastructure for AI agents: secure inboxes, REST and MCP APIs, SMTP, human approval workflows, signed webhooks, and Python and TypeScript SDKs. Self-host with Docker and PostgreSQL.
Open Agent Email – AIエージェントのためのメール受信トレイ(セルフホスト型)
概要
- 各AIエージェントに独自の実際のメールアドレスとメールボックスを提供するセルフホスト型サービスです。受信SMTPを処理してメッセージを保存し、エージェントがメールの読み取り、返信、転送、スケジュール設定を行ったり、リスクのあるメールを送信する前に人間の承認を要求したりできるようにします。
- REST API、PythonおよびTypeScript SDK、CLI、WebSocketライブストリーム、webhooks、およびMCP(Claude CodeやCursorなどで使用されるプロトコル)を通じて機能を提供します。
AIエージェントにとっての重要性
- 人とやり取りするエージェントは、多くの場合メール(サポート、サインアップ、請求書など)を必要とします。汎用的な送信サービスを使用すると、エージェントにアイデンティティやスレッド履歴がなく、安全ガードレールも存在しません。
- Open Agent Emailは、エージェントごとの受信トレイ、会話のスレッド化、SPF/DKIM/DMARC検証、プロンプトインジェクションのスクリーニング、およびオプションの人間による承認ゲートを提供します。
仕組み
People / other agents → MX record → Open Agent Email (SMTP listener) → store in DB
↑
│
Agent ↔ REST / SDK / MCP / Webhooks / CLI
- 受信メールは、存在する受信トレイ宛のもののみが受け入れられ、検証(SPF/DKIM/DMARC)され、AI特有の攻撃がスキャンされて保存されます。
- 送信メールは、設定した任意のSMTPリレー(SES、SendGrid、Resendなど)を通じて送信されます。承認ゲートが有効な場合、人間が承認/拒否リンクをクリックするまでメッセージは保留されます。
主な機能
| カテゴリ | ハイライト |
|---|---|
| 受信トレイとスレッド | 無制限の受信トレイ、適切な返信スレッド、ラベル、検索、ゴミ箱/復元、スケジュール送信(最大90日)、10MB以下の添付ファイル、署名付きダウンロードリンク |
| 安全性 | プロンプトインジェクション検出、オプションのウイルススキャン、有効期限付き承認ゲート、受信トレイごとのAPIキー(読み取り専用、送信、レビュー)、受信者ブロック、ワンクリック登録解除 |
| 認証と検証 | メッセージごとにSPF/DKIM/DMARCチェックを保存。厳格なDMARC失敗は拒否 |
| 送信 | 任意のSMTPリレー、バックオフ付き再試行、べき等キー、完全な送信履歴 |
| 配信追跡 | SESイベント処理(配信、バウンス、苦情)と自動抑制を内蔵 |
| ドメインサポート | カスタムドメインの追加、DNSレコードの取得、ドメインごとの送信メールへのDKIM署名 |
| Webhooksとイベント | 署名付きwebhooks、再試行ロジック、リプレイ、検索可能なイベントログ、受信トレイごとまたはグローバルなエンドポイント |
| 連絡先とテンプレート | アドレス帳、CSVインポート、同意メモ、フォローアップリマインダー、プレビュー付き再利用可能テンプレート |
| 開発者ツール | OpenAPI仕様、PythonおよびTypeScript SDK(ランタイム依存なし)、oae CLI、96個のMCPツール、カーソルスタイルのページネーション、構造化されたエラーコード |
| 運用 | SQLite(デフォルト)またはPostgreSQL、Alembicマイグレーション、メトリクスエンドポイント、バックアップ/復元スクリプト、Docker Compose、nginxデプロイ例 |
典型的なユースケース
- チャットボットのサポート受信トレイ:
support@brand.comがチケットを読み取り、返信を下書きし、リスクのある回答を人間が確認するまで保留します。 - サインアップ認証: エージェントがユーザーを作成し、自身のメールボックスから確認コードを読み取ります。
- 安全策付きのアウトバウンドアウトリーチ: キャンペーンの下書き、送信スケジュール設定、メール送信前の承認要求を行います。
- エージェント間通信: 各エージェントが実際のメールアドレスを持つことで、サービス間でのメールベースのワークフローが可能になります。
- イベント駆動型ワークフロー: 受信メールがn8n/Zapier/webhooksをトリガーし、さらなる自動化を開始します。
- パーソナルコンシェルジュ: ローカルエージェントがライブストリーム経由で受信トレイを監視し、返信を下書きし、ユーザーが簡単なリンクで承認します。
はじめに
- リポジトリをクローンし、開発スクリプトを実行します(Python 3.11が必要)。サーバーが
http://127.0.0.1:8000で起動し、管理キーが表示されます。 - (オプション)Next.jsダッシュボードを実行します:
cd client && npm install && npm run dev(http://localhost:3000)。 - API/CLI経由で受信トレイを作成し、SMTPリレーを設定し、ドメインのMXレコードをサーバー(ポート25)に向けます。
- PythonまたはTypeScript SDK、MCPコマンド、または単純な
curl呼び出しを使用して、メールのリスト表示、読み取り、送信を行います。
技術スタック
- サーバー: Python 3.11, FastAPI, async SQLAlchemy, Alembic,
aiosmtpd(SMTPリスニング用)。 - データベース: SQLite(デフォルト)または PostgreSQL。
- ダッシュボード: Next.js 16, React, Tailwind CSS。
- SDK: Python および TypeScript、ランタイム依存ゼロ。
- パッケージング: Docker Compose + 本番デプロイ例(nginx, バックアップスクリプト)。
ステータスとコミュニティ
- 活発に開発中。現在はシングルユーザー(管理キー1つ、マルチテナントアカウントは未実装)。
- ローカルおよびAmazon SES統合を備えたPostgreSQL 16環境でテスト済み。
- Discordに参加するか、GitHubでIssue/PRを作成してください。
ライセンス: Apache 2.0。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト