Перейти к основному содержимому

Список подавления

Список подавления — общий для организации список адресов, которым MailInfra не доставляет письма, даже если вы передаёте их в to/cc/bcc. Защищает репутацию домена и IP от отправки на адреса, которые гарантированно вернутся ошибкой или жалобой.

Управление списком (просмотр, ручное добавление, удаление) — в дашборде: Организация → Список подавления.

Как адреса попадают в список

У каждой записи есть пара полей: reason (почему адрес заблокирован) и source (как именно он попал в список).

sourcereasonЧто произошло
AUTOHARD_BOUNCEПринимающий сервер вернул 5xx — адрес не существует или закрыт
AUTOCOMPLAINTПолучатель пожаловался на спам (FBL)
MANUALUNSUBSCRIBE / MANUAL / любойДобавлен через API или дашборд (например, после нажатия «Отписаться»)

Как это видно в API отправки

При вызове POST /v1/emails каждый адрес из to, cc, bcc сверяется со списком. Подавлённые тихо исключаются и возвращаются в skipped_recipients:

{
"data": {
"id": "018e1b7a-1111-7000-aaaa-111111111111",
"status": "QUEUED",
"skipped_recipients": [
{ "email": "blocked@example.com", "reason": "HARD_BOUNCE" }
]
}
}

Если все получатели подавлены — письмо не создаётся, ответ 422:

{
"error": {
"code": "all_recipients_suppressed",
"message": "All recipients are in the suppression list"
}
}

Причины подавления

ЗначениеКогда возникает
HARD_BOUNCEАдрес не существует или домен не принимает почту
COMPLAINTПолучатель пометил письмо как спам
UNSUBSCRIBEПолучатель отписался (через ваш сайт или ссылку отписки)
MANUALДобавлен оператором

Удаление из списка

Удалять адрес стоит только если вы уверены, что причина исчезла: пользователь подтвердил, что хочет получать письма; адрес действительно существует. Повторная отправка на несуществующий адрес ухудшает репутацию домена и IP.

HARD_BOUNCE особенно: если адрес действительно умер, его повторная попытка снова закончится bounce — и подавление вернётся.


API списка подавления

Список подавления общий для всей организации, поэтому базовый префикс — /v1/organizations/{organization_id}/suppressions. Управление — часть Management API.

МетодПутьМинимальная рольЧто делает
GET/suppressionsVIEWERСписок с фильтрацией
POST/suppressionsDEVELOPERДобавить адрес вручную
DELETE/suppressions/{id}DEVELOPERУдалить запись

Просмотр

GET /v1/organizations/{organization_id}/suppressions
Authorization: Bearer <session_token>

Поддерживает фильтры:

ПараметрТипОписание
emailstringПоиск по конкретному адресу
reasonHARD_BOUNCE | COMPLAINT | UNSUBSCRIBE | MANUALФильтр по причине
limitint1–500, по умолчанию 100
GET /v1/.../suppressions?email=user@example.com
GET /v1/.../suppressions?reason=HARD_BOUNCE&limit=50

Ответ:

{
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"email": "user@example.com",
"reason": "HARD_BOUNCE",
"source": "AUTO",
"notes": null,
"created_at": "2026-05-11T20:00:00Z"
}
]
}

Ручное добавление

Пригодится для серверной реализации кнопки «Отписаться» на вашем сайте: пользователь нажимает — вы кладёте адрес в список подавления, MailInfra перестаёт ему писать.

POST /v1/organizations/{organization_id}/suppressions
Authorization: Bearer <session_token>
Content-Type: application/json
{
"email": "user@example.com",
"reason": "UNSUBSCRIBE",
"notes": "Пользователь отписался через форму на сайте"
}
ПолеТипПо умолчаниюОписание
emailstringАдрес, который добавляем
reasonHARD_BOUNCE | COMPLAINT | UNSUBSCRIBE | MANUALMANUALПричина подавления
notesstring | nullnullСвободный комментарий, виден только в дашборде

В ответе вернётся запись с source: "MANUAL" — поле source отличает ручные записи от автоматических (source: "AUTO"), которые MailInfra ставит на bounce и FBL.

Удаление

DELETE /v1/organizations/{organization_id}/suppressions/{suppression_id}
Authorization: Bearer <session_token>

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