Nylas — облачный SaaS, а не локальный CLI для произвольного IMAP. Проблемы: утечка корпоративной почты третьей стороне, платность, гибель IMAP-гранта при ротации пароля, платный Contacts API. Вывод: продолжаем с Himalaya; для отправки — SMTP в himalaya/msmtp.
6.9 KiB
Анализ: Nylas CLI как альтернатива текущему стеку
Дата: 2026-09-11 Статус: ❌ Не подходит — отклонено. Инициатор: Вопрос пользователя «может этот проект поможет упростить получение и отправку писем?»
TL;DR
Nylas — это облачный SaaS (данные идут через серверы Nylas), а не локальный CLI для работы с произвольным IMAP. Для нашего сценария (локальный архив корпоративной почты + LLM-ассистент на bigbox) он добавляет зависимость от провайдера, плату и утечку данных третьей стороне — без выигрыша в функциональности.
Что такое Nylas на самом деле
- Облачный платформенный сервис:
api.us.nylas.com - Три продукта за одним API-ключом: Connect (Email/Calendar/Contacts/Scheduler API), Notetaker (транскрибация встреч), Agent Accounts (API-провижинг почтовых ящиков)
- Есть CLI (
cli.nylas.com) — но он работает только через облако Nylas: нужен API-ключ, OAuth или BYO-грант, аккаунт в Dashboard. Это НЕ локальный инструмент уровняhimalaya, который ходит напрямую по IMAP - Поддерживаемые провайдеры: Google, Microsoft, Exchange (EWS), iCloud, Yahoo, generic IMAP, Zoom
Как подключается IMAP (наш случай mail.corpoffice.tech)
- Создать аккаунт Nylas, приложение, получить API-ключ (платно в проде)
- Подключить аккаунт через Hosted OAuth (пользователь вводит пароль в
браузере/форме Nylas) или Bring Your Own (BYO):
curl -X POST 'https://api.us.nylas.com/v3/connect/custom' \ -H 'Authorization: Bearer <API_KEY>' \ -H 'Content-Type: application/json' \ -d '{ "provider": "imap", "settings": { "imap_username": "e.storozhenko", "imap_password": "...", "imap_host": "mail.corpoffice.tech", "imap_port": 143, "smtp_host": "...", "smtp_port": 465 } }' - Дальше работать через
nylas email list/ REST APIapi.us.nylas.com
Проблемы Nylas для нашего проекта
| # | Проблема | Детали |
|---|---|---|
| 1 | Приватность | Все письма копируются на серверы Nylas (US/EU). Корпоративная почта vinogorod у третьей стороны — неприемлемо |
| 2 | Стоимость | Платная подписка + регистрация домена на Nylas. Локальный стек бесплатен |
| 3 | Contacts API для generic IMAP | Требует активации по контракту (платно). У нас контакты уже работают локально через LLM (81 контакт) |
| 4 | Ротация IMAP-пароля | У нас пароль IMAP ротируется (уже документировано в памяти). Грант Nylas при смене пароля умирает → реавторизация через OAuth |
| 5 | SMTP | Для отправки нужно явно настраивать SMTP в гранте (опция smtp_required), всё равно через облако |
| 6 | UIDVALIDITY re-index | Nylas пере-индексирует папку при смене UIDVALIDITY — на медленных корпоративных IMAP это «не поддерживается» (по их же докам) |
| 7 | Нет выигрыша | Поиск (SQLite FTS5), контакты (LLM), индексация (Qdrant в планах) — всё уже есть или планируется локально |
Сравнение с текущим стеком
| Критерий | Himаlaya + наш пайплайн (сейчас) | Nylas CLI |
|---|---|---|
| Локальность | Прямой IMAP с bigbox, всё на диске | Облако Nylas (письма идут через них) |
| Стоимость | Бесплатно | Платная подписка + домен |
| Отправка | Нужен SMTP-конфиг (у нас только чтение) | SMTP в гранте, но через облако |
| Контакты | Локальный LLM-экстрактор (работает) | Платный контракт для generic IMAP |
| Пароль | Ротация → правка конфига (5 сек) | Ротация → грант умирает, реавторизация |
| Поиск | Локальный SQLite FTS5 | Облачный API |
| Приватность | Полная (данные на bigbox) | Письма копируются Nylas |
Когда Nylas имел бы смысл
- Строим мультипровайдерный SaaS (подключение Gmail/Outlook/iCloud пользователей через OAuth)
- Нужна транскрибация встреч (Notetaker) или API-провижинг ящиков (Agent Accounts) без своей инфраструктуры
- Облачное хранение почты не проблема (не корпоративная/чувствительная)
Что может упростить отправку вместо Nylas
- Himalaya
message send— SMTP уже почти настроен (в~/.config/himalaya/config.tomlесть аккаунтhermesс SMTP jino.ru; для vinogorod добавить[accounts.vinogorod.message.send]сsmtp.corpoffice.tech:465) - msmtp/ssmtp +
mail— классика для крон-скриптов - Python
smtplib— если нужна программная отправка с вложениями
Вывод
Nylas CLI не подходит: добавляет облачную зависимость, плату и утечку корпоративной почты третьей стороне, при этом не даёт ничего, чего бы у нас уже не было локально. Текущий стек (Himalaya → Python → SQLite → Ollama → Yandex Disk) закрывает задачу полностью и бесплатно.
Решение: продолжать с Himalaya; при необходимости отправки — настроить SMTP в himalaya-конфиге или использовать msmtp.