Навык: Почта 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.
Порядок поиска пароля:
- Для IMAP:
channels.email.imapPassword. - Для SMTP:
channels.email.smtpPassword. - Если отдельного 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.
channels.email.
Для внутреннего сервера со сломанным сертификатом можно использовать channels.email.insecureSsl=true, но только если понятен сетевой риск.
Команды
Основной скрипт: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 нельзя повторять отправку из-за ошибки сохранения копии в папке отправленных. - Удаление, архивирование, перенос писем, отметка прочитанным и флаги не реализованы по умолчанию.
