Настройка электронной почты

Hermes может получать и отправлять электронные письма, используя стандартные протоколы IMAP и SMTP. Отправьте письмо на адрес агента, и он ответит в том же ответе — не требуется специальный клиент или API-бота. Работает с Gmail, Outlook, Yahoo, Fastmail или любым провайдером, поддерживающим IMAP/SMTP.

ℹ️ Info

Без внешних зависимостей Адаптер электронной почты использует встроенные модули Python imaplib,smtplib иemail. Никаких дополнительных пакетов или внешних сервисов не требуется.


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

Настройка 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 gateway setup

Выберите Электронная почта в меню платформы. Мастер запросит ваш адрес электронной почты, пароль, 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 (IMAP SSL)
EMAIL_SMTP_PORT=587                    # По умолчанию: 587 (SMTP STARTTLS)
EMAIL_POLL_INTERVAL=15                 # Секунд между проверками входящих (по умолчанию: 15)
EMAIL_HOME_ADDRESS=your@email.com      # Адрес доставки по умолчанию для cron-задач

Шаг 2: Запуск шлюза

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

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


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

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

Адаптер опрашивает IMAP-входы на наличие непрочитанных сообщений с настраиваемым интервалом (по умолчанию: 15 секунд). Для каждого нового письма:

Отправка ответов

Ответы отправляются через SMTP с логичной организацией веток:

Вложения файлы

Агент может отправлять файлы в приложениях в ответах. Включите в ответ MEDIA:/path/to/file, и файл будет прикреплён к исходному письму.

Пропуск вложений

Чтобы включить все соединения вложения (для защиты от конкурентных программ или экономии трафика), страницы в config.yaml:

platforms:
  email:
    skip_attachments: true

При включении этих дополнительных устройств и встроенных частей обеспечивается декодирование полезной нагрузки. Текст письма обрабатывается как обычно.


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

Доступ по электронной почте следует тому же шаблону, что и все остальные платформы Hermes:

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

Устранение неполадок

Проблема Решение
"Не удалось подключиться к IMAP" при запуске Проверьте EMAIL_IMAP_HOST и EMAIL_IMAP_PORT. Убедитесь, что IMAP включен в компонент аккаунта. Для Gmail его в Настройках → Пересылка и POP/IMAP.
"SMTP-соединение не удалось" при запуске Проверьте EMAIL_SMTP_HOST и EMAIL_SMTP_PORT. Убедитесь, что пароль правильный (для приложений Gmail с паролем).
Сообщения не приходят Проверьте, что EMAIL_ALLOWED_USERS включает адрес отправителя. Отметьте меткой «Спам» — некоторые провайдеры помечают автоматические ответы как спам.
"Аутентификация не удалась" Для Gmail необходимо использовать пароль приложения, а не обычный пароль. Убедитесь, что двухфакторная аутентификация включена.
Дублирующиеся ответы Убедитесь, что запущен только один экземпляр шлюза. Проверьте статус шлюза Гермеса.
Медленный ответ Интервал опроса по умолчанию — 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) — соединения шифруются.


Справочник по окружению

Переменная Обязательная По умолчанию Описание
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 Нет ложь Разрешить всех отправителей (не рекомендуется)