Подключить AI-агента можно к отдельному ящику почти в любой корпоративной почте. Для Google Workspace и Microsoft 365 удобнее использовать официальные API и уведомления о событиях, для Яндекс 360 и других IMAP-провайдеров — отдельный ящик с IMAP/SMTP, а для независимого агентного адреса — Cloudflare Email Routing и Worker.

Материал рассчитан на владельцев продукта, технических руководителей и разработчиков, которым нужно выбрать архитектуру и безопасно запустить первый почтовый процесс. Технические сведения по Gmail, Microsoft Graph и Cloudflare проверены по официальной документации 4 сентября 2026 года.

Какой способ подключения выбрать

Уведомления от почтового сервиса сокращают задержку и число запросов, но не отменяют синхронизацию состояния. Например, Gmail предупреждает, что push-сообщения иногда задерживаются или теряются, поэтому приложению нужен резервный периодический вызов history.list.

ПлатформаОсновной способПолучение событийКогда подходит
Google WorkspaceGmail API и Cloud Pub/Sub либо маршрутизация копииPush-уведомленияКастомный агент на корпоративной почте
Microsoft 365Microsoft Graph и shared mailboxChange notificationsКорпоративные и общие ящики команды
Яндекс 360IMAP/SMTP с OAuth, правила обработки писемОпрос или IMAP IDLEРоссийская почтовая инфраструктура
Mail.ru / VK WorkMail и другие IMAP-провайдерыIMAP/SMTP, OAuth или пароль приложенияОпрос или IMAP IDLEОдин-два ящика и небольшая команда
Cloudflare Email ServiceEmail Routing → WorkerВызов обработчика WorkerОтдельный адрес на домене или поддомене
HelpdeskПисьмо преобразуется в тикетВнутренний механизм платформыПоддержка с очередями, ролями и SLA
Unified email APIЕдиный API поверх разных почтовых системСобытия или webhooks прослойкиSaaS-продукт для клиентов с разной почтой

Рабочий контур одинаков для всех вариантов:

flowchart LR
    A["Письмо на отдельный адрес"] --> B["Проверка и дедупликация"]
    B --> C["Классификация и извлечение полей"]
    C --> D["Черновик ответа"]
    D --> E["Задача или запись в рабочей системе"]
    E --> F["Подтверждение человеком"]

Что должен делать почтовый агент

Полезный почтовый агент работает с конкретным процессом и отдельным адресом. Он может:

  • читать тему, тело, отправителя, цепочку и разрешённые вложения;
  • определять тип обращения;
  • извлекать имена, компании, суммы, сроки и другие нужные поля;
  • готовить черновик ответа или уточняющие вопросы;
  • создавать карточку в CRM, тикет или задачу;
  • передавать рискованные действия человеку.

Безопасный режим для первого запуска: агент готовит черновики и структурированные заметки, а человек подтверждает отправку.

Чеклист перед запуском

Для одного процесса выделен отдельный адрес
Приложению доступны только необходимые ящики и операции
Выбран способ получения изменений: push, webhook, IMAP IDLE или опрос
События и письма дедуплицируются
После пропущенных событий можно восстановить состояние
Подписки автоматически продлеваются до истечения
Подлинность входящих webhook-уведомлений проверяется
Вложения проходят проверку типа, размера и безопасности
Текст письма всегда считается недоверенными данными
Деньги, договоры, персональные данные и обязательства требуют подтверждения
Действия агента и решения человека журналируются
OAuth-токены и ключи не попадают в письма, промпты и логи

Google Workspace: Gmail API и Pub/Sub

Для отдельного корпоративного ящика рабочая схема выглядит так:

  1. Создайте адрес, например leads@company.com.
  2. Авторизуйте приложение для нужного ящика.
  3. Создайте тему и подписку Cloud Pub/Sub.
  4. Разрешите сервисному аккаунту Gmail публиковать сообщения в тему.
  5. Вызовите users.watch для метки INBOX.
  6. По полученному historyId запросите изменения через history.list.
  7. Создайте черновик, поставьте метку или передайте данные в рабочую систему.

Актуальный пример запроса из документации Gmail:

POST https://www.googleapis.com/gmail/v1/users/me/watch
Content-Type: application/json

{
  "topicName": "projects/my-project/topics/gmail-inbox",
  "labelIds": ["INBOX"],
  "labelFilterBehavior": "INCLUDE"
}

В ответ Gmail возвращает текущий historyId и время истечения подписки. Само уведомление содержит адрес ящика и новый historyId, а не полное письмо.

⚠️
watch нужно вызывать не реже одного раза в семь дней. Google рекомендует обновлять его ежедневно. Если подписка истечёт, уведомления прекратятся.

У Gmail действует ограничение: не более одного уведомления в секунду для отслеживаемого пользователя. Уведомления могут задерживаться или теряться. Храните последний обработанный historyId, делайте операции идемпотентными и запускайте резервную синхронизацию после периода без событий.

Для пилота обычно достаточно пользовательского OAuth для одного ящика. Делегирование доступа на уровне домена (domain-wide delegation) даёт приложению более широкий административный доступ, поэтому требует минимальных scopes, отдельного сервисного аккаунта, ограничения списка ящиков и аудита.

Если прямой API-доступ нежелателен, используйте маршрутизацию: оставьте письмо в Gmail и отправляйте копию на агентный адрес либо маршрутизируйте только выбранные сообщения.

Официальные источники:

Microsoft 365: Microsoft Graph и shared mailbox

Для заявок, поддержки, тендеров и внутренних сервисных адресов удобно использовать общий ящик (shared mailbox), к которому обращаются сотрудники и интеграции:

  1. Создайте общий ящик, например requests@company.com.
  2. Зарегистрируйте приложение в Microsoft Entra ID.
  3. Выдайте минимальные права и ограничьте доступ нужным ящиком.
  4. Создайте подписку Microsoft Graph на новые сообщения в папке Inbox.
  5. Проверьте запрос валидации endpoint.
  6. При уведомлении получите сообщение либо используйте уведомления с данными ресурса (rich notifications), где содержимое передаётся в зашифрованном виде.
  7. Создайте черновик или запись в рабочей системе.

Поддерживаемый путь ресурса для входящих сообщений имеет вид:

POST https://graph.microsoft.com/v1.0/subscriptions
Content-Type: application/json

{
  "changeType": "created",
  "notificationUrl": "https://your-app.example.com/graph-webhook",
  "resource": "users/requests@company.com/mailFolders('inbox')/messages",
  "expirationDateTime": "<допустимое время истечения>",
  "clientState": "<случайное секретное значение>"
}

expirationDateTime нельзя считать постоянным: подписку нужно продлевать до истечения и отслеживать уведомления жизненного цикла (lifecycle notifications).

🔴
Проверяйте подлинность каждого уведомления. Для базовых уведомлений сверяйте clientState. Для уведомлений с данными ресурса дополнительно валидируйте JWT и целостность зашифрованного содержимого до выполнения бизнес-логики.

Для операций от имени пользователя обычно используют делегированные права. Фоновый сервис обычно использует права приложения (application permissions), поэтому область доступа особенно важно ограничить средствами Microsoft 365 или Exchange Online.

Официальные источники:

Яндекс 360 и другие IMAP/SMTP-провайдеры

Для Яндекс 360 базовая схема состоит из отдельного ящика, IMAP для чтения и SMTP для отправки. При доступности OAuth предпочтительнее использовать его вместо основного пароля.

При отсутствии у конкретного тарифа готового потока событий уровня Gmail Pub/Sub или Microsoft Graph интеграции нужен собственный контроль состояния:

  • опрос ящика либо IMAP IDLE;
  • хранение UID и UIDVALIDITY для каждой папки;
  • дедупликация по идентификаторам сообщения и внутреннему ключу операции;
  • восстановление после разрыва IMAP-соединения;
  • отдельная обработка перемещений между папками;
  • повтор отправки SMTP без создания дубликатов.

Условия тарифов и доступность протоколов могут меняться. Перед внедрением проверьте их для конкретного тарифа и организации по актуальной документации провайдера.

Источники для проверки Яндекс 360:

Для одного-двух ящиков Mail.ru, VK WorkMail или другого провайдера прямое подключение по IMAP/SMTP может быть достаточным. Для множества клиентских подключений стоимость поддержки разных реализаций быстро растёт.

Cloudflare Email Service: отдельный агентный адрес

Cloudflare Email Routing принимает сообщения домена и передаёт их на подтверждённый внешний адрес либо в обработчик Worker. Такой вариант удобен для отдельного адреса вроде brief@ai.company.com, когда основную корпоративную почту переносить не нужно.

Для работы Email Service домен должен использовать Cloudflare DNS. При подключении корневого домена Cloudflare добавляет MX-записи для входящей почты, а также записи SPF и DKIM. Изменение DNS может распространяться до 24 часов, хотя для доменов на Cloudflare обычно занимает 5–15 минут.

Минимальный путь:

  1. Подключите домен или выделенный поддомен к Cloudflare DNS.
  2. Выполните onboarding в разделе Email Routing.
  3. Создайте Worker с обработчиком email.
  4. Добавьте правило для нужного локального адреса.
  5. Выберите действие Send to a Worker.
  6. Отправьте тестовое письмо с другого адреса и проверьте журнал Worker или целевой ящик.
export default {
  async email(message) {
    const sender = message.from;
    const recipient = message.to;
    const subject = message.headers.get("subject") || "";

    console.log(JSON.stringify({ sender, recipient, subject }));
  }
};

Этот пример только проверяет вызов обработчика и пишет основные поля в журнал Worker. Обработку тела письма, вызов модели и хранилище добавьте в этот обработчик по правилам вашей архитектуры; конкретные привязки окружения в примере не задаются.

⚖️
Подключение Email Routing к корневому домену меняет его MX-записи. Если основная почта уже обслуживается Google Workspace, Microsoft 365 или Яндекс 360, используйте отдельный поддомен либо пересылку из действующей почтовой системы.

Официальные источники:

Когда выбрать helpdesk или единый почтовый API

Helpdesk подходит, если письмо уже является обращением поддержки. Zendesk, Front, Freshdesk и Intercom дают очереди, роли, SLA, историю клиента и эскалацию. Собственный агент полезнее для нестандартных процессов: инвестиционных заявок, тендеров, договоров или кадрового intake.

Unified email API сокращает число отдельных интеграций с Gmail, Outlook, Exchange и IMAP. Примеры: Nylas, Unipile и EmailEngine.

У прослойки появляется доступ к почте клиентов. До выбора проверьте модель хранения данных, OAuth scopes, экспорт журналов, юрисдикцию, удаление данных и стоимость на один подключённый ящик.

Практические комбинации

ЗадачаАдрес и извлекаемые данныеРезультат
Продажиleads@...: компания, задача, бюджет, сроки, регионКарточка CRM, следующий вопрос, черновик ответа
Тендерыtender@...: дедлайн, требования, документы, рискиСводка, список действий, предварительное решение по участию
Документыdocs@...: тип, контрагент, сумма, срок, вложенияЗапись в учётной системе и задача согласующему
Кандидатыjobs@...: роль, опыт, ссылки, соответствие вакансииКарточка кандидата и черновик следующего сообщения
Поддержкаsupport@...: категория, продукт, срочность, контекстЧерновик по базе знаний или эскалация

Проверяемый MVP

Начните с одного адреса и одного типа писем. Агент должен классифицировать письмо, извлекать заранее заданные поля, создавать черновик и передавать результат человеку.

Проверка результата:

  1. Отправьте тестовое письмо с уникальным идентификатором в теме.
  2. Убедитесь, что обработка началась один раз.
  3. Сравните извлечённые поля с ожидаемыми.
  4. Проверьте, что создан черновик, но письмо не отправлено автоматически.
  5. Повторно доставьте то же событие и убедитесь, что дубль не создан.
  6. Временно остановите приём событий, затем проверьте восстановление состояния.
  7. Убедитесь, что в журнале нет тела секретов, OAuth-токенов и лишних персональных данных.

Что делать, если агент пропускает или дублирует письма

  • Gmail перестал присылать события: проверьте expiration, ежедневное продление watch, права Pub/Sub и последний сохранённый historyId.
  • Gmail пропустил уведомление: выполните синхронизацию через history.list; push не является единственным источником состояния.
  • Microsoft Graph повторяет доставку: отвечайте endpoint в требуемый срок, проверяйте subscriptionId и делайте обработку идемпотентной.
  • Microsoft Graph прислал неизвестное уведомление: не запускайте бизнес-логику до проверки clientState или validation token.
  • IMAP создаёт дубли: сверяйте UID вместе с UIDVALIDITY и храните собственный ключ обработанной операции.
  • Cloudflare не принимает письмо: проверьте Cloudflare DNS, MX-записи, правило маршрутизации и выбранный Worker.
  • Ответ попал не в ту цепочку: сохраняйте Message-ID и корректно формируйте In-Reply-To и References.
  • Агент следует командам из письма: отделите системные правила от содержимого письма и запретите модели самостоятельно расширять права или вызывать рискованные действия.

Риски и стоп-линии

Письмо, HTML и вложения являются внешними недоверенными данными. Они могут содержать вредные инструкции для модели или попытки получить доступ к другим системам.

🔴
Стоп-линии: агент не переводит деньги, не меняет договоры, не раскрывает персональные данные, не подтверждает обязательства и не расширяет собственные права без решения человека. Доступ ограничивается нужным ящиком, а все действия журналируются.

Для писем с персональными данными граждан РФ отдельно проверьте требования 152-ФЗ к локализации и трансграничной передаче. Конкретная схема зависит от ролей участников, состава данных и инфраструктуры. До запуска зарубежного почтового или AI-сервиса её следует проверить с профильным юристом; этот материал не является юридической консультацией.

Итог

Для Google Workspace используйте Gmail API, Pub/Sub и периодическую сверку истории. Для Microsoft 365 подходит shared mailbox с Microsoft Graph, продлением подписок и обязательной проверкой уведомлений. Для Яндекс 360 и других традиционных провайдеров потребуется устойчивый IMAP/SMTP-контур. Cloudflare удобен для отдельного агентного домена или поддомена, если вы готовы управлять DNS и Worker.

Первый рабочий результат — один адрес, один процесс, структурированная запись и черновик ответа с подтверждением человеком.

Следующий шаг

Google Workspace для бизнеса: руководство для новичка

Если у вас есть поток писем, который нужно превратить в контролируемый процесс, сначала определите один адрес, извлекаемые поля и действия, требующие подтверждения.

Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov