🤖HermesBlog
Hermes Messaging Platforms · パート 78/9/2026

メール — AIがメールの送受信を行う

Email — AI Sends and Receives Mail — easy-to-understand guide based on official docs

messaging-email

メール — AIがメールの送受信を行う

こんなシナリオを想像してみてください。AIエージェントにメールを送ると、同じスレッド内で返信が届く。特別なチャットアプリも、ボットAPIも、追加ソフトウェアも不要。ただの普通のメールだけです。それがまさに、HermesのEmailゲートウェイアダプタが実現する機能です。

この記事では、セットアップ方法、内部の動作仕組み、そして受信トレイのセキュリティを保つ方法について解説します。

なぜメールなのか?

メールは普遍的なものです。誰もがメールアドレスを持っています。標準のIMAP(受信用)とSMTP(送信用)を介してHermesをメールボックスに接続するだけで、Gmail、Outlook、Yahoo、Fastmail、またはこれらのプロトコルをサポートするあらゆるプロバイダーで動作する会話型AIを利用できます。

そして何より素晴らしいのは、外部依存関係がゼロであることです。このアダプタはPython標準搭載のimaplibsmtplibemailモジュールを使用します。追加パッケージも、サードパーティサービスも不要です。

注: これは同梱のHimalayaメールスキルとは異なります。Himalayaスキルはエージェントがターミナルコマンドでメールボックスを管理するもので、外部のhimalaya CLIが必要です。このゲートウェイアダプタは、よりシンプルで自己完結型の方法です。

始める前に

必要なものは3つです:

  1. エージェント専用のメールアカウント(個人の受信トレイは使わないでください)
  2. そのアカウントでIMAPが有効になっていること
  3. Gmailや二段階認証を採用しているプロバイダーを使用する場合はアプリパスワード

Gmailの場合:2FAを有効にして、myaccount.google.com/apppasswordsでアプリパスワードを作成します。16文字のパスワードが発行されるので、通常のパスワードの代わりにそれを使用します。

Outlook/Microsoft 365の場合:2FAを有効にし、「追加のセキュリティオプション」でアプリパスワードを作成し、IMAPにはoutlook.office365.com、SMTPにはsmtp.office365.comを使用します。

その他のプロバイダーの場合は、IMAP/SMTPホストとポートをドキュメントで確認してください(通常、IMAP SSLは993、SMTP STARTTLSは587)。

ステップ1: Hermesの設定

最も簡単な方法はセットアップウィザードです:

hermes gateway setup

メニューからEmailを選択し、プロンプトに従います。メールアドレス、アプリパスワード、IMAP/SMTPホスト、許可送信者を尋ねられます。

手動設定がお好みですか?~/.hermes/.envに以下を追加します:

# 必須
EMAIL_ADDRESS=hermes@gmail.com
EMAIL_PASSWORD=abcd efgh ijkl mnop    # アプリパスワード(通常のパスワードではありません)
EMAIL_IMAP_HOST=imap.gmail.com
EMAIL_SMTP_HOST=smtp.gmail.com

# セキュリティ(推奨)
EMAIL_ALLOWED_USERS=your@email.com,colleague@work.com

# オプション
EMAIL_IMAP_PORT=993                    # デフォルト: 993
EMAIL_SMTP_PORT=587                    # デフォルト: 587
EMAIL_POLL_INTERVAL=15                 # 受信トレイ確認の間隔(秒)
EMAIL_HOME_ADDRESS=your@email.com      # cronジョブのデフォルト配信先

ステップ2: ゲートウェイの起動

hermes gateway              # フォアグラウンドで実行
hermes gateway install      # ユーザーサービスとしてインストール
sudo hermes gateway install --system   # Linux: 起動時のシステムサービス

起動時に、アダプタはIMAPとSMTPの両方の接続をテストし、既存の受信トレイのメッセージをすべて「既読」にマークして(新着メールのみを処理するため)、ポーリングを開始します。

動作の仕組み

メッセージの受信。 アダプタはデフォルトで15秒ごとに未読メールをチェックします。各新着メッセージについて:

  • 件名がコンテキストとして含まれます(例:[Subject: Deploy to production]
  • 返信(Re:で始まる件名)は件名プレフィックスをスキップします — スレッドコンテキストがすでに存在するためです
  • 添付ファイルはローカルにキャッシュされます:画像はビジョンツールで利用可能になり、PDFやZIPなどのドキュメントはファイルアクセス用になります
  • HTMLのみのメールはタグが除去され、プレーンテキストが抽出されます
  • 自分自身からのメッセージは返信ループを防ぐためにフィルタリングされます
  • 自動送信者は黙って無視されます — noreply@mailer-daemon@bounce@、およびAuto-SubmittedPrecedence: bulkList-Unsubscribeヘッダーを含むメール

返信の送信。 返信は適切なスレッド管理でSMTP経由で送信されます:In-Reply-ToReferencesヘッダーが会話をまとめ、件名はRe:プレフィックスを維持します(二重のRe: Re:は付けません)、応答はプレーンなUTF-8テキストとして送信されます。

ファイル添付。 エージェントにファイルを送信させたいですか?応答にMEDIA:/path/to/fileを含めるだけで、自動的に添付されます。

添付ファイルのスキップ。 マルウェアや帯域幅が心配ですか?config.yamlに以下を追加します:

platforms:
  email:
    skip_attachments: true

メール本文テキストは通常どおり処理されます — 添付ファイルのみが無視されます。

アクセス制御:デフォルトで厳格に

メールはチャットプラットフォームよりも設計上、より厳しくロックダウンされています:

  1. EMAIL_ALLOWED_USERSが設定されている → これらのアドレスからのメールのみが処理されます
  2. 許可リストなし → 不明な送信者は黙って無視されます
  3. EMAIL_ALLOW_ALL_USERS=true → 任意の送信者を受け入れます(注意して使用してください!)
  4. platforms.email.unauthorized_dm_behavior: pair → 不明な送信者にペアリングコードが送信されます

黄金律: 専用の受信トレイを使用し、常にEMAIL_ALLOWED_USERSを設定してください。メールのペアリングはオプトインです。共有受信トレイには無関係な未読メッセージが含まれることが多く、Hermesがデフォルトでそれらの連絡先に返信すべきではないからです。

トラブルシューティング

問題 解決策
起動時に**「IMAP接続に失敗しました」** EMAIL_IMAP_HOSTEMAIL_IMAP_PORTを確認してください。アカウントでIMAPが有効になっていることを確認してください(Gmail: 設定 → 転送とPOP/IMAP)

まとめ

Emailゲートウェイアダプタは、標準のメールボックスをAIエージェントのコミュニケーションチャネルに変えます。外部依存関係も、特別なクライアントも不要 — IMAP、SMTP、そして少しの設定だけです。専用アカウントを設定し、許可送信者をロックダウンして、メールの流れに任せましょう。

楽しいメールライフを!📧

📖 公式ドキュメント

この記事は Hermes Agent の公式ドキュメントに基づいています:公式ドキュメント › user-guide/messaging/email