Об интеграции с SMTP
SMTP-сервис — это не только личный кабинет, но и библиотека API. Чем шире набор методов, тем больше задач закрывает интеграция: отправка, стоп-листы, статусы, домены, ключи.
Схема интеграции описывает, кто с кем разговаривает и какими методами. Ниже — три рабочие схемы SaM oTPravil: их имеет смысл прочитать до оценки трудозатрат, а не после первого 550.
Глоссарий
Одни и те же слова в трёх схемах значат разное. Сначала термины — потом стрелки.
| Термин | Что это |
|---|---|
| Сервис или SMTP-сервис | Платформа SaM oTPravil |
| Пользователь | Бизнес, который использует SaM oTPravil как поставщика |
| Клиент | Клиент Пользователя — когда Пользователь даёт своим клиентам возможность отправлять рассылки |
| Подписчик | Получатель письма |
| Мастер-система или Система | Система Пользователя, в которую встраивается Сервис |
| White Label | SMTP-сервис под вашим брендом |
| Документация | Документация API SaM oTPravil |
| Клиентская документация | Документация Клиента на основе Документации Сервиса. Пример: docs.selectel.ru/selectel-email-service |
| Рассылка | ID интеграции: доступы, стоп-листы и пул IP. Для SMTP-протокола это ещё и SMTP-логин |
| API-ключ или клиентский ключ | Ключ для методов из Документации |
| Мастер-ключ | Ключ для White Label-методов из Документации |
| Домен | Домен отправителя, с которого уходят письма, например example.com |
| Выпуск | Письмо или группа писем на сегмент получателей |
| Единичная отправка | HTTP-метод one-to-one: в получателях только один адрес |
| Пакетная отправка | HTTP-метод массовой отправки: до 500 000 адресов в одном пакете |
| Email отправителя | Адрес From, например from@example.com |
| Верификация домена | Внесение DNS-записей на домен отправителя. Как верифицировать домен › |
| DNS_KEY | Ключ проверки, что домен соотнесён с рассылкой |
| Webhook | URL сервиса Пользователя или Клиента для статусов отправки |
| Пул IP-адресов | Группа IP рассылки, с которых уходят письма |
Как выбрать тип интеграции
Выбор зависит от двух вопросов: зачем нужен SMTP и кто в терминах глоссария является Пользователем — а кто отправителем писем.
Пользователь = отправитель
Типовая
Свои письма по своей базе: транзакции, триггеры, маркетинг. Рассылки Пользователя есть, клиентских нет.
Пользователь ≠ отправитель
В сервис
Модуль рассылок в вашем SaaS/CRM: письма уходят от имени Клиентов, но методы отправки — те же, что в типовой.
SMTP под вашим брендом
White Label
Клиент получает доступы в вашем ЛК и сам шлёт через типовую интеграцию. Под капотом — наши процессы и экспертиза.
Разница типовой и «в сервис» — не в методах отправки, а в том, совпадают ли Пользователь и отправитель. Во втором случае появляется Клиент. White Label — когда Клиенту нужен свой SMTP-сервис в вашем интерфейсе, а не модуль внутри вашей отправки.
Типовая интеграция
Пользователь отправляет свои письма. Это базовая схема: на ней стоят и модуль рассылок, и White Label — просто с другими ключами и рассылками.
Авторизация
Ключ передаётся в заголовке Authorization без префикса Bearer:
Authorization: {{api_key}}
Ключей может быть несколько — это не ошибка, а способ развести трафик. На ключе задаются:
- IP, с которых уходят письма
- Проверка адреса по глобальному стоп-листу: включить или выключить
- Домены, с которых разрешена отправка
- Локальные стоп-листы копить по домену отправителя или по ключу (по умолчанию — по домену)
В типовой схеме есть пользовательские рассылки и нет клиентских: один бизнес, свои From, свои пулы.
Почему ключей несколько и как не смешать транзакции с маркетингом ›
Единичная отправка
Один получатель: OTP, статус заказа, письмо «ваш пароль». Мастер-система отдаёт выпуск, SMTP-сервис доставляет и возвращает статус.
Id письма из мастер-системы можно передать в поле x_track_id — тогда хуки и issue/status стыкуются с вашим учётом, а не только с нашим.
Пакетная отправка
Много получателей: сегмент, дайджест, акция. Пакет принимает SMTP-сервис — мастер-система не обязана «крутить» скорость сама.
add_json_package package_stop package/status Пакет не нагружает мастер-систему ради скорости: очередь и ретраи — на стороне SMTP-сервиса. На хуки поставьте rate limit, иначе первая большая рассылка может положить ваш приёмник.
Пакетная отправка: лимиты и нарезка › · Вебхуки ›
Стоп-листы
Через API можно вести только локальные стоп-листы — накопленные по домену отправителя. Глобальный список Сервиса вы не правите: его можно включить или выключить на ключе.
Интеграция в сервис
Пользователь — ваш продукт (CRM, LMS, helpdesk, SaaS). Клиент — его арендатор, от имени которого уходят письма. Отправка после подготовки — та же типовая схема, но ключ выбирается по типу трафика, а не «один на всех».
Рассылка здесь — это не «кампания в письмах», а настройка: стоп-листы и пул IP, с которых полетят письма Клиентов.
Процесс: подготовка пулов IP
-
Пользователь
Создаёт минимум две рассылки методом
blist/create— одну под маркетинг, одну под транзакции. -
Пользователь
Для каждой рассылки выпускает ключ методом
authkey/createи сохраняет его у себя. Связь рассылка ↔ ключ — один к одному.
Как резать пулы, если двух мало:
- По гео: РФ / EU
- По риску: high / low
- По типу трафика: транзакции / маркетинг
- По Клиентам: свой пул на каждого
| Связь | Кардинальность | Когда |
|---|---|---|
| Рассылка ↔ API-ключ | Один к одному, уникально | Всегда |
| Клиент ↔ рассылка | Один ко многим | Клиенты делят пулы по типу трафика |
| Клиент ↔ рассылка | Один к одному | Нужна изоляция репутации или биллинга |
Процесс: верификация домена
Клиент
- Добавляет домен в интерфейсе Пользователя.
- Прописывает DNS (DKIM/SPF — константы, которые вы показали в UI).
Пользователь
- Рисует экран верификации: SPF и DKIM как константы, без ручной сборки записи Клиентом «на глаз».
-
Проверяет домен методом
blist/domains/verify -
Добавляет домен в рассылку методом
blist/domains/add - Помечает в своей системе, что этот Клиент может ставить домен в отправителях.
Процесс: отправка
- Клиент Запускает рассылку в интерфейсе Пользователя — не в ЛК SaM oTPravil.
- Пользователь Определяет тип трафика и вызывает типовую интеграцию с ключом из подготовки пулов.
Мастер-ключ здесь нужен на методы рассылок и доменов. Пользовательский ключ — на отправку. Клиентский ключ Клиенту не показывают: он не ходит в API SaM oTPravil напрямую.
White Label SMTP
SMTP-сервис под вашим брендом, с нашими процессами «под капотом». Нужен хостерам (клиенты держат у вас сайты и хотят рассылки) и SaaS, которые продают SMTP как услугу, а не как встроенный модуль «мы сами шлём за клиента».
Продуктовая страница White Label › · Кейс Selectel ›
Чем отличается от модуля в сервисе
Клиент сам отправляет из своей системы типовой интеграцией, своим клиентским ключом. Пользователь выдаёт доступы и рисует ЛК, но не является отправителем каждого письма.
Клиент
- Запрашивает доступы к SMTP в системе Пользователя.
- Добавляет домен в интерфейсе Пользователя.
- Верифицирует домен (DNS).
- Отправляет письма у себя через типовую интеграцию.
Пользователь
-
Создаёт рассылку под Клиента методом
blist/create -
Создаёт ключ Клиента методом
authkey/createи сохраняет его. -
Показывает UI верификации. Параметр dns_key — из ответа
blist/create -
Проверяет домен
blist/domains/verifyи добавляет в рассылкуblist/domains/add - Показывает Клиенту клиентский ключ в интерфейсе.
Мастер-ключ — у Пользователя, на White Label-методы. Клиентский ключ — у Клиента, на типовую отправку.
Готовый WL избавляет от выстраивания антиспама, репутации пулов и стабильной доставки больших объёмов. Если SMTP нужно унести в свой периметр — это уже МТА, не White Label в облаке.
Что учесть на старте
Архитектуру дешевле решить до первой большой рассылки. Ниже — развилки со схем и из статьи про особенности SMTP: там разбор ошибок 550, ttl_date, шаблонов и очередей.
| С чем определиться | Как думаем |
|---|---|
| Сколько пулов IP нужно? | Минимум три: маркетинг с глобальным стоп-листом, триггеры с локальным, транзакции без стоп-листа. Для модуля рассылок те же оси плюс гео, риск и при необходимости пул под Клиента. |
| Ключ на Клиента или на пул? | Отдельный ключ на Клиента — только если потребность очевидна (White Label, изоляция ЛК). Иначе один ключ на пул / тип трафика. |
| Свои служебные домены? | Подключайте, только если это нужно продукту. Заменить домены трекинга можно позже, без переделки интеграции. |
| Какой лимит у приёмника хуков? | После первой большой рассылки приёмник легко «ляжет» от скорости хуков. Заложите rate limit на старте. |
| Будут ли выпуски больше 500 000 адресов? | Тогда не единичный метод, а пакетный: до 400 МБ текста в одном запросе, скорость на стороне SMTP-сервиса. |
| Как отвечать на 550 bounced check filter? | Адрес в стоп-листе. Убирайте его из своей базы, чтобы не платить за повтор. В ответе смотрите ttl_date — дату выхода; «0» значит, что выхода нет. |
| Транзакции и маркетинг с одного ключа? | Нет: два ключа. На транзакциях выключите глобальный стоп-лист, иначе отписка от рассылок отрежет сервисные письма. |
| B2B и корпоративные домены? | До боевых объёмов подключите выделенный сендер: иначе частые недоставки из‑за внутренних фильтров и return-path. |
| SMTP-протокол, не только HTTP? | Сессии рвутся на обновлениях серверов (доступность 99,99%, обновляем не все сразу). Держите менеджер очередей: Postfix, Exim, Rabbit, Kafka. |
Особенности интеграции с SMTP › · Шаблоны и template_id › · Выделенный сендер › · Свой домен трекинга ›
Если схема уже выбрана — отдайте её разработке вместе с документацией. Если нет — разберём задачу на созвоне.