Перейти к содержанию

Email

On this page Hermes может получать и отправлять электронные письма, используя стандартные протоколы IMAP и SMTP. Отправьте письмо на адрес агента — и он ответит в той же переписке; никакого специального клиента или Bot API не требуется. Работает с Gmail, Outlook, Yahoo, Fastmail и любым провайдером, поддерживающим IMAP/SMTP. No External Dependencies Адаптер электронной почты использует встроенные модули Python: imaplib, smtplib и email. Никаких дополнительных пакетов или внешних сервисов не требуется.


Предварительные требования​

  • Отдельный почтовый аккаунт для вашего агента Hermes (не используйте личную почту)
  • IMAP включён в настройках почтового аккаунта
  • Пароль приложения в случае использования Gmail или другого провайдера с двухфакторной аутентификацией

Настройка Gmail​

  1. Включите двухфакторную аутентификацию в вашем аккаунте Google
  2. Перейдите в Пароли приложений
  3. Создайте новый пароль приложения (выберите «Почта» или «Другое»)
  4. Скопируйте 16-символьный пароль — вы будете использовать его вместо обычного пароля

Outlook / Microsoft 365​

  1. Перейдите в Параметры безопасности
  2. Включите двухфакторную аутентификацию, если ещё не включена
  3. Создайте пароль приложения в разделе «Дополнительные параметры безопасности»
  4. IMAP-хост: outlook.office365.com, SMTP-хост: smtp.office365.com

Другие провайдеры​

Большинство почтовых провайдеров поддерживают IMAP/SMTP. Уточните в документации вашего провайдера: * IMAP-хост и порт (обычно порт 993 с SSL) * SMTP-хост и порт (обычно порт 587 с STARTTLS) * Требуются ли пароли приложений


Шаг 1: Настройте Hermes​

Самый простой способ: [code] hermes gateway setup

[/code] Выберите Email в меню платформ. Мастер запросит ваш email-адрес, пароль, IMAP/SMTP-хосты и список отправителей, которым разрешено взаимодействие.

Ручная настройка​

Добавьте в ~/.hermes/.env: [code] # Обязательные
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 (IMAP SSL)  
EMAIL_SMTP_PORT=587                    # По умолчанию: 587 (SMTP STARTTLS)  
EMAIL_POLL_INTERVAL=15                 # Секунд между проверками входящих (по умолчанию: 15)  
EMAIL_HOME_ADDRESS=your@email.com      # Адрес для доставки по умолчанию для cron-задач

[/code]


Шаг 2: Запустите шлюз​

[code] hermes gateway # Запуск в интерактивном режиме
hermes gateway install # Установка как пользовательский сервис
sudo hermes gateway install --system # Только Linux: системный сервис автозагрузки

[/code] При запуске адаптер: 1. Проверяет подключения IMAP и SMTP 2. Помечает все существующие сообщения во входящих как «прочитанные» (обрабатываются только новые письма) 3. Начинает опрос на предмет новых сообщений


Как это работает​

Получение сообщений​

Адаптер опрашивает папку «Входящие» IMAP на наличие НЕПРОЧИТАННЫХ сообщений с настраиваемым интервалом (по умолчанию: 15 секунд). Для каждого нового письма: * Тема письма включается как контекст (например, [Subject: Deploy to production]) * Ответные письма (тема начинается с Re:) пропускают префикс темы — контекст переписки уже установлен * Вложения кэшируются локально: * Изображения (JPEG, PNG, GIF, WebP) → доступны инструменту vision * Документы (PDF, ZIP и т.д.) → доступны для работы с файлами * Письма только в HTML очищаются от тегов для извлечения текста * Собственные сообщения отфильтровываются для предотвращения циклов ответов * Автоматические отправители и no-reply молча игнорируются — 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: [code] platforms:
email:
skip_attachments: true

[/code] При включении этой настройки вложения и встроенные части пропускаются до декодирования содержимого. Текст письма обрабатывается как обычно.


Контроль доступа​

Доступ по электронной почте следует тому же принципу, что и все остальные платформы Hermes: 1. EMAIL_ALLOWED_USERS указан → обрабатываются только письма с этих адресов 2. Белый список не задан → неизвестные отправители получают код для привязки 3. EMAIL_ALLOW_ALL_USERS=true → принимаются письма от любого отправителя (используйте с осторожностью)

warning Всегда настраивайте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_ALLOWED_USERS включает email отправителя. Проверьте папку «Спам» — некоторые провайдеры помечают автоматические ответы как спам.
«Authentication failed» Для Gmail необходимо использовать пароль приложения, а не основной пароль. Убедитесь, что двухфакторная аутентификация включена.
Дублирующиеся ответы Убедитесь, что запущен только один экземпляр шлюза. Проверьте hermes gateway status.
Медленный ответ Интервал опроса по умолчанию — 15 секунд. Уменьшите с помощью EMAIL_POLL_INTERVAL=5 для более быстрого ответа (но это увеличит количество IMAP-подключений).
Ответы не формируют цепочку Адаптер использует заголовки In-Reply-To. Некоторые почтовые клиенты (особенно веб-версии) могут некорректно группировать автоматические сообщения в цепочки.
* * *
## Безопасность​
warning
Используйте отдельный почтовый аккаунт. Не используйте личную почту — агент хранит пароль в .env и имеет полный доступ к папке «Входящие» через IMAP.
* Используйте пароли приложений вместо основного пароля (обязательно для Gmail с двухфакторной аутентификацией)
* Установите EMAIL_ALLOWED_USERS, чтобы ограничить круг лиц, взаимодействующих с агентом
* Пароль хранится в ~/.hermes/.env — защитите этот файл (chmod 600)
* IMAP использует SSL (порт 993), а SMTP — STARTTLS (порт 587) по умолчанию — соединения шифруются

Справочник переменных окружения​

Переменная Обязательная По умолчанию Описание
EMAIL_ADDRESS Да — Email-адрес агента
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 Разрешить всех отправителей (не рекомендуется)
* Предварительные требования
* Настройка Gmail
* Outlook / Microsoft 365
* Другие провайдеры
* Шаг 1: Настройте Hermes
* Ручная настройка
* Шаг 2: Запустите шлюз
* Как это работает
* Получение сообщений
* Отправка ответов
* Вложения файлов
* Пропуск вложений
* Контроль доступа
* Устранение неполадок
* Безопасность
* Справочник переменных окружения