Skip to main content

Навык: Почта ALOR

alor-mail — устанавливаемый навык для работы с корпоративной почтой ALOR через IMAP и SMTP. Установите его в панели «Навыки» из одного из предустановленных каталогов ALOR. Велес скопирует навык в <workspace>/skills/alor-mail; код этого навыка не входит во встроенный каталог veles/skills. Он нужен, когда Велесу нужно посмотреть новые письма, найти письмо по отправителю или теме, прочитать выбранное сообщение, кратко пересказать переписку или подготовить ответ.

Когда он полезен

Типичные запросы:
  • «Покажи последние письма в корпоративной почте».
  • «Найди письма от mustyatsa@alorbroker.ru».
  • «Прочитай письмо с таким UID».
  • «Сделай краткое резюме этой переписки».
  • «Подготовь ответ на письмо».
  • «Отправь письмо такому-то адресату» — только после явного подтверждения, если пользователь заранее не попросил немедленную отправку.

Как устроено подключение

Навык берёт настройки только из раздела channels.email в активном config.json. Навык и почтовый клиент Nerve используют одну конфигурацию, но решают разные задачи. Клиент Nerve показывает ящик и создаёт новый разговор на основе письма. Навык alor-mail работает внутри сессии Велеса и сохраняет правило явного подтверждения перед отправкой. Не переносите пароль или прямое IMAP/SMTP-подключение на сторону Nerve. Используются те же поля, что и у почтового канала:
  • imapHost, imapPort, imapUsername, imapMailbox, imapUseSsl;
  • smtpHost, smtpPort, smtpUsername, smtpUseTls, smtpUseSsl;
  • fromAddress.
Адрес, сервер, порт, имя пользователя, ящик и отображаемое имя не являются секретами и могут оставаться обычными настройками. Пароли читаются только из локального зашифрованного хранилища секретов Велеса. Скрипт не принимает пароль из обычной переменной окружения и не принимает открытый пароль в config.json. Порядок поиска пароля:
  1. Для IMAP: channels.email.imapPassword.
  2. Для SMTP: channels.email.smtpPassword.
  3. Если отдельного SMTP-пароля нет, используется найденный IMAP-пароль.
Поля channels.email.imapPassword и channels.email.smtpPassword могут быть пустыми или содержать локальную ссылку на секрет:
Ссылки на окружение, файл или команду для почтовых паролей отклоняются. Открытая строка в imapPassword, smtpPassword или password тоже отклоняется. Для чтения локальных секретов процесс Велеса должен видеть VELES_SECRETS_MASTER_KEY. Скрипт сначала находит активный config.json, затем берёт рабочую область из agents.defaults.workspace и читает секреты из <рабочая область>/secrets.

Настройки канала

Для работы навыка настройте channels.email в config.json:
  • fromAddress, imapUsername, imapHost;
  • при необходимости imapPort, imapMailbox, imapUseSsl;
  • при необходимости smtpHost, smtpPort, smtpUsername, smtpUseTls, smtpUseSsl;
  • при необходимости displayName.
Навык не читает переменные окружения для настройки почты ALOR. Не просите модель добавлять их: все параметры подключения должны быть в channels.email. Для внутреннего сервера со сломанным сертификатом можно использовать channels.email.insecureSsl=true, но только если понятен сетевой риск.

Команды

Основной скрипт:
Примеры:
Поиск использует обычный синтаксис IMAP, а не операторы Gmail. Для дат нужен формат DD-Mon-YYYY, например SINCE 01-Jun-2026. Каждое исходящее письмо получает заголовки Date и Message-ID. До отправки скрипт находит доступную для записи IMAP-папку с признаком \Sent, а после подтверждения SMTP сохраняет туда те же байты письма с признаком \Seen. Используется исходное транспортное имя папки, а не переведённая подпись. Если сервер не публикует признак \Sent, передайте точное исходное имя из команды mailboxes через --sent-mailbox. Параметр --no-save-sent-copy нужен только для сервера, который сам сохраняет отправленные через SMTP письма. Для ответа обязательно укажите UID исходного письма через --reply-uid; при необходимости задайте исходное транспортное имя папки через --reply-mailbox. Скрипт читает родительское письмо до SMTP без изменения признака прочтения, требует его Message-ID и сам строит заголовки In-Reply-To и References. Если тема начинается с Re:, но UID не задан, отправка останавливается: одна только тема не связывает письмо с перепиской. Подтверждение SMTP и сохранение копии в IMAP — два разных результата. Если сервер уже принял письмо, но запись копии не удалась, либо SMTP отклонил только часть адресатов, команда сообщает о частичном успехе, завершается с кодом 2 и прямо запрещает автоматическую повторную отправку, поскольку она создаст дубликат. Код 0 означает, что все адресаты приняты и запрошенная копия сохранена. В отчёте после отправки проверяйте принятых адресатов, созданный Message-ID, родительский идентификатор ответа и папку сохранённой копии.

Безопасность

  • Содержимое почты считается личным и конфиденциальным.
  • Сначала нужно получать заголовки и короткие сведения, а полные тела читать только для выбранных сообщений.
  • Нельзя печатать большие тела писем без явного запроса.
  • Нельзя записывать пароль в файлы навыка, открытым текстом в config.json или обычную переменную окружения.
  • Перед отправкой письма Велес должен показать черновик и получить подтверждение, если пользователь не попросил немедленную отправку.
  • Ответ нужно отправлять с --reply-uid, а не только с префиксом Re:. После подтверждения SMTP нельзя повторять отправку из-за ошибки сохранения копии в папке отправленных.
  • Удаление, архивирование, перенос писем, отметка прочитанным и флаги не реализованы по умолчанию.

Связанные страницы