Files
email-assistant/NYLAS_ANALYSIS.md
hermes d4bf3ed1ad docs: анализ Nylas CLI — не подходит (отклонено)
Nylas — облачный SaaS, а не локальный CLI для произвольного IMAP.
Проблемы: утечка корпоративной почты третьей стороне, платность,
гибель IMAP-гранта при ротации пароля, платный Contacts API.
Вывод: продолжаем с Himalaya; для отправки — SMTP в himalaya/msmtp.
2026-09-11 12:54:11 +00:00

103 lines
6.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Анализ: 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)
1. Создать аккаунт Nylas, приложение, получить API-ключ (платно в проде)
2. Подключить аккаунт через **Hosted OAuth** (пользователь вводит пароль в
браузере/форме Nylas) или **Bring Your Own (BYO)**:
```bash
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
}
}'
```
3. Дальше работать через `nylas email list` / REST API `api.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
1. **Himalaya `message send`** — SMTP уже почти настроен (в
`~/.config/himalaya/config.toml` есть аккаунт `hermes` с SMTP jino.ru;
для vinogorod добавить `[accounts.vinogorod.message.send]` с
`smtp.corpoffice.tech:465`)
2. **msmtp/ssmtp + `mail`** — классика для крон-скриптов
3. Python `smtplib` — если нужна программная отправка с вложениями
## Вывод
Nylas CLI **не подходит**: добавляет облачную зависимость, плату и утечку
корпоративной почты третьей стороне, при этом не даёт ничего, чего бы у
нас уже не было локально. Текущий стек (Himalaya → Python → SQLite →
Ollama → Yandex Disk) закрывает задачу полностью и бесплатно.
**Решение:** продолжать с Himalaya; при необходимости отправки — настроить
SMTP в himalaya-конфиге или использовать msmtp.