Hermes может получать и отвечать на электронные письма, используя стандартные протоколы IMAP и SMTP. Отправьте письмо на адрес агента, и он ответит в той же ветке — не требуется специальный клиент или API бота. Работает с Gmail, Outlook, Yahoo, Fastmail или любым провайдером, поддерживающим IMAP/SMTP.
info Без внешних зависимостей
Адаптер Email использует встроенные модули Python imaplib, smtplib и email. Никаких дополнительных пакетов или внешних сервисов не требуется.
Предварительные требования
Выделенный почтовый аккаунт для вашего агента Hermes (не используйте личную почту)
IMAP включён в настройках почтового аккаунта
Пароль приложения при использовании Gmail или другого провайдера с двухфакторной аутентификацией
Настройка Gmail
Включите двухфакторную аутентификацию в вашем аккаунте Google
Большинство почтовых провайдеров поддерживают IMAP/SMTP. Проверьте документацию вашего провайдера для получения:
IMAP-хоста и порта (обычно порт 993 с SSL)
SMTP-хоста и порта (обычно порт 587 с STARTTLS)
Информации о необходимости пароля приложения
Шаг 1: Настройка Hermes
Самый простой способ:
hermesgatewaysetup
Выберите Email в меню платформ. Мастер запросит ваш email-адрес, пароль, IMAP/SMTP-хосты и список разрешённых отправителей.
Ручная настройка
Добавьте в ~/.hermes/.env:
# RequiredEMAIL_ADDRESS=hermes@gmail.com
EMAIL_PASSWORD=abcdefghijklmnop# 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
# OptionalEMAIL_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: Запуск Gateway
hermesgateway# Run in foreground
hermesgatewayinstall# Install as a user service
sudohermesgatewayinstall--system# Linux only: boot-time system service
При запуске адаптер:
Проверяет подключения к IMAP и SMTP
Помечает все существующие сообщения во входящих как «прочитанные» (обрабатывает только новые письма)
Начинает опрос новых сообщений
Как это работает
Получение сообщений
Адаптер опрашивает IMAP-входящие на наличие непрочитанных сообщений с настраиваемым интервалом (по умолчанию: 15 секунд). Для каждого нового письма:
Тема письма включается в контекст (например, [Subject: Deploy to production])
Ответные письма (тема начинается с Re:) пропускают префикс темы — контекст ветки уже установлен
Вложения кэшируются локально:
Изображения (JPEG, PNG, GIF, WebP) → доступны для инструмента vision
Документы (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 следует тому же шаблону, что и все остальные платформы Hermes:
EMAIL_ALLOWED_USERS задан → обрабатываются только письма с этих адресов
Белый список не задан → неизвестные отправители получают код для привязки
EMAIL_ALLOW_ALL_USERS=true → принимаются любые отправители (используйте с осторожностью)
**Всегда настраивайте `EMAIL_ALLOWED_USERS`.** Без этого любой, кто знает email-адрес агента, сможет отправлять команды. По умолчанию агент имеет доступ к терминалу.
Устранение неполадок
Проблема
Решение
«IMAP connection failed» при запуске
Проверьте EMAIL_IMAP_HOST и EMAIL_IMAP_PORT. Убедитесь, что IMAP включён в аккаунте. Для Gmail включите его в Настройках → Пересылка и POP/IMAP.
«SMTP connection failed» при запуске
Проверьте EMAIL_SMTP_HOST и EMAIL_SMTP_PORT. Убедитесь, что пароль указан верно (используйте пароль приложения для Gmail).
Сообщения не приходят
Проверьте, что email отправителя указан в EMAIL_ALLOWED_USERS. Проверьте папку со спамом — некоторые провайдеры помечают автоматические ответы как спам.
«Authentication failed»
Для Gmail необходимо использовать пароль приложения, а не обычный пароль. Убедитесь, что сначала включена двухфакторная аутентификация.
Дублирование ответов
Убедитесь, что запущен только один экземпляр gateway. Проверьте hermes gateway status.
Медленный ответ
Интервал опроса по умолчанию — 15 секунд. Уменьшите с помощью EMAIL_POLL_INTERVAL=5 для более быстрого ответа (но это увеличит количество IMAP-подключений).
Ответы не группируются в ветки
Адаптер использует заголовки In-Reply-To. Некоторые почтовые клиенты (особенно веб-версии) могут неправильно группировать автоматические сообщения.
Безопасность
**Используйте выделенный почтовый аккаунт.** Не используйте личную почту — агент хранит пароль в `.env` и имеет полный доступ к почтовому ящику через IMAP.
Используйте пароли приложений вместо основного пароля (требуется для Gmail с двухфакторной аутентификацией)
Установите EMAIL_ALLOWED_USERS, чтобы ограничить круг лиц, которые могут взаимодействовать с агентом
Пароль хранится в ~/.hermes/.env — защитите этот файл (chmod 600)
По умолчанию IMAP использует SSL (порт 993), а SMTP — STARTTLS (порт 587) — соединения зашифрованы