メールの設定
目次
Hermes は標準の IMAP と SMTP を使ってメールを受け取り、返信できます。エージェント用のアドレスにメールを送ると、同じスレッドの中で返事が返ってきます。専用のクライアントやボット用 API は要りません。Gmail、Outlook、Yahoo、Fastmail など、IMAP/SMTP に対応した提供元ならどこでも使えます。
これは同梱の Himalaya メールスキル とは別ものです。あちらはエージェントが端末のコマンドからメールを操作するためのもので、外部の himalaya CLI と Himalaya の設定ファイルが必要になります。
| 用途 | 設定するもの | 外部の依存 |
|---|---|---|
| 人が Hermes のエージェントにメールを送り、返信を受け取れるようにする | このページのメールゲートウェイアダプター | IMAP/SMTP のメールアカウント以外は不要 |
| エージェントが端末のツールからメールを読み、書き、移動し、管理できるようにする | Himalaya メールスキル | himalaya CLI と ~/.config/himalaya/config.toml |
事前に必要なもの
- Hermes のエージェント専用のメールアカウント(個人用のメールは使わないでください)
- アカウントで IMAP が有効になっていること
- Gmail など二要素認証を使う提供元なら アプリパスワード
Gmail の設定
- Google アカウントで二要素認証を有効にします
- App Passwords を開きます
- 新しいアプリパスワードを作ります(「メール」か「その他」を選びます)
- 表示された 16 文字のパスワードを控えます。通常のパスワードの代わりにこれを使います
Outlook / Microsoft 365
- Security Settings を開きます
- 二要素認証が未設定なら有効にします
- 「セキュリティ情報の追加」からアプリパスワードを作ります
- 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 に次を書き足します。
# Required
EMAIL_ADDRESS=hermes@gmail.com
EMAIL_PASSWORD=abcd efgh ijkl mnop # App password (not your regular password)
EMAIL_IMAP_HOST=imap.gmail.com
EMAIL_SMTP_HOST=smtp.gmail.com
# Security (recommended)
EMAIL_ALLOWED_USERS=your@email.com,colleague@work.com
# Optional
EMAIL_IMAP_PORT=993 # Default: 993 (IMAP SSL)
EMAIL_SMTP_PORT=587 # Default: 587 (SMTP STARTTLS)
EMAIL_POLL_INTERVAL=15 # Seconds between inbox checks (default: 15)
EMAIL_HOME_ADDRESS=your@email.com # Default delivery target for cron jobsステップ 2: ゲートウェイを起動する
hermes gateway # Run in foreground
hermes gateway install # Install as a user service
sudo hermes gateway install --system # Linux only: boot-time system service起動したとき、アダプターは次の順に動きます。
- IMAP と SMTP の接続を確かめます
- 受信箱にすでにあるメールをすべて「既読」にします(新しいメールだけを処理するためです)
- 新しいメールの取得を始めます
動きのしくみ
メールを受け取る
アダプターは IMAP の受信箱を一定の間隔(初期値は 15 秒)で見に行き、未読のメールを拾います。新しいメールごとに次のように扱われます。
- 件名 が文脈として渡されます(たとえば
[Subject: Deploy to production]) - 返信メール(件名が
Re:で始まるもの)では件名の前置きを省きます。スレッドの流れがすでに伝わっているためです - 添付ファイル は手元に保存されます。
- 画像(JPEG、PNG、GIF、WebP)→ 画像認識ツールから使えます
- 書類(PDF、ZIP など)→ ファイルとして読めます
- HTML だけのメール はタグを取り除いて本文だけを取り出します
- 自分あてのメール は返信の無限ループを防ぐため除外されます
- 自動送信や noreply の送信者 は黙って無視されます。
noreply@、mailer-daemon@、bounce@、no-reply@のほか、Auto-Submitted、Precedence: bulk、List-Unsubscribeのヘッダーが付いたメールが対象です
返信を送る
返信は SMTP で送られ、スレッドが正しくつながるようになっています。
- In-Reply-To と References のヘッダーでスレッドを保ちます
- 件名 は
Re:を付けて引き継ぎます(Re: Re:と重ねません) - Message-ID はエージェントのドメインで作られます
- 本文はプレーンテキスト(UTF-8)で送られます
ファイルの添付
エージェントは返信にファイルを添付できます。応答の中に MEDIA:/path/to/file と書けば、そのファイルが送信するメールに添付されます。
添付を読み飛ばす
届いた添付をすべて無視したいとき(マルウェア対策や通信量の節約など)は、config.yaml に次を書き足します。
platforms:
email:
skip_attachments: true有効にすると、添付と本文に埋め込まれたパートが、中身を取り出す前に読み飛ばされます。メール本文のテキストはこれまでどおり処理されます。
アクセスの制御
メールのアクセス制御は、チャット系のプラットフォームより初期状態が厳しめです。
EMAIL_ALLOWED_USERSを設定している → そのアドレスから来たメールだけを処理します- 許可リストがない → 知らない送信者は黙って無視されます
EMAIL_ALLOW_ALL_USERS=true→ どの送信者も受け付けます(扱いには注意してください)platforms.email.unauthorized_dm_behavior: pair→ 知らない送信者にペアリング用のコードを返します
困ったときは
| 症状 | 対処 |
|---|---|
| 起動時に "IMAP connection failed" と出る | EMAIL_IMAP_HOST と EMAIL_IMAP_PORT を確かめます。アカウントで IMAP が有効かも確認してください。Gmail なら「設定 → メール転送と POP/IMAP」で有効にします。 |
| 起動時に "SMTP connection failed" と出る | EMAIL_SMTP_HOST と EMAIL_SMTP_PORT を確かめます。パスワードが正しいかも確認してください(Gmail はアプリパスワードを使います)。 |
| メールが届かない | EMAIL_ALLOWED_USERS に送信者のアドレスが入っているか確かめます。迷惑メールフォルダーも見てください。自動返信を迷惑メール扱いにする提供元があります。 |
| "Authentication failed" と出る | Gmail では通常のパスワードではなくアプリパスワードが必要です。先に二要素認証を有効にしてください。 |
| 同じ返信が二重に届く | ゲートウェイが一つだけ動いているか確かめます。hermes gateway status で確認できます。 |
| 返事が遅い | 取得の間隔は初期値で 15 秒です。EMAIL_POLL_INTERVAL=5 にすると速くなります(そのぶん IMAP への接続は増えます)。 |
| 返信がスレッドにまとまらない | アダプターは In-Reply-To ヘッダーを使っています。メールクライアントによっては(とくにブラウザで使うもの)自動送信のメールをうまくまとめないことがあります。 |
セキュリティ
- 主パスワードではなく アプリパスワード を使います(Gmail で二要素認証を使う場合は必須です)
EMAIL_ALLOWED_USERSを設定して、エージェントとやり取りできる相手を絞ります- パスワードは
~/.hermes/.envに保存されます。このファイルは守ってください(chmod 600) - IMAP は SSL(ポート 993)、SMTP は STARTTLS(ポート 587)が初期値です。通信は暗号化されます
環境変数の一覧
| 変数 | 必須 | 初期値 | 説明 |
|---|---|---|---|
EMAIL_ADDRESS |
はい | — | エージェントのメールアドレス |
EMAIL_PASSWORD |
はい | — | メールのパスワード、またはアプリパスワード |
EMAIL_IMAP_HOST |
はい | — | IMAP サーバーのホスト(例: imap.gmail.com) |
EMAIL_SMTP_HOST |
はい | — | SMTP サーバーのホスト(例: smtp.gmail.com) |
EMAIL_IMAP_PORT |
いいえ | 993 |
IMAP サーバーのポート |
EMAIL_SMTP_PORT |
いいえ | 587 |
SMTP サーバーのポート |
EMAIL_POLL_INTERVAL |
いいえ | 15 |
受信箱を見に行く間隔(秒) |
EMAIL_ALLOWED_USERS |
いいえ | — | 許可する送信者のアドレス(カンマ区切り) |
EMAIL_HOME_ADDRESS |
いいえ | — | cron ジョブの既定の送り先 |
EMAIL_ALLOW_ALL_USERS |
いいえ | false |
すべての送信者を許可します(おすすめしません) |