Документация / Лимиты отправки и защита от спама

Лимиты отправки и защита от спама

Объём почты, уходящей с вашего домена, определяют три разные вещи, и ведут они себя по-разному:

ОграничениеЧто этоЧто происходит при достижении
Лимиты тарифаОплаченный объём в час и в месяцПисьмо не принимается
Разгон доменаСуточный и часовой потолок на доставку, для каждого домена Письмо принимается и уходит позже — отказа нет
Проверки на злоупотребленияОценка содержимого и аномалии объёма Ничего, пока не превышен порог; после этого отправка останавливается

Лимиты тарифа

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

При превышении часового лимита API отвечает HTTP 400:

HTTP/1.1 400 Bad Request
Content-Type: application/json

{
    "non_field_errors": ["Hourly limit exceeded"]
}

Для месячного лимита формулировка — Monthly limit exceeded. На SMTP-релее те же два лимита проверяются при передаче тела письма, и сессия получает ответ 550 hourly limit exceeded или 550 monthly limit exceeded. Эти ошибки имеет смысл повторять с выдержкой: лимиты освобождаются сами.

Разгон домена

Принимающий сервер считает объём по домену отправителя, а не по IP-адресу, с которого письмо пришло. Домен, который никогда ничего не отправлял и вдруг начинает слать десятки тысяч писем, для Gmail выглядит одинаково — и когда это настоящий запуск продукта, и когда это взломанный аккаунт. Поэтому каждый домен разгоняется от того объёма, который за ним уже наблюдали:

  • Домен начинает с 200 писем в сутки. Этот минимум одинаков на всех тарифах, платных и бесплатном: платный тариф покупает объём, а не право обойти разгон, и принимающий сервер о вашем счёте ничего не знает.
  • Дальше суточный потолок — это удвоенный максимум фактически доставленных писем за сутки, взятый по последним 30 дням. Он пересчитывается раз в сутки автоматически.
  • Суточный объём вдобавок распределяется по часам, чтобы дневная норма не уходила получателю одним всплеском сразу после полуночи.
  • Потолок никогда не превышает месячный лимит тарифа.

Удвоение в сутки — это быстро: неделя реальной отправки доводит домен от 200 до более чем 12 000 писем в день, девять дней — до более чем 50 000. На практике разгон перестаёт быть заметен раньше: на любом тарифе первым упираешься в месячный лимит. Домен, молчавший все 30 дней окна, возвращается к минимуму: спящий домен, внезапно заработавший на полном объёме, — как раз тот случай, ради которого разгон и существует.

Разгон никогда не отклоняет письмо. Всё сверх потолка принимается, встаёт в очередь и уходит по мере освобождения нормы: вы видите более медленную отправку, а не ошибку, и ничего не теряется. Вебхуки о доставке и журнал событий отрабатывают как обычно, когда письмо уйдёт.

Если предстоит запуск, который не может ждать разгона, напишите на support@help.postwing.app заранее — потолок можно поднять вручную для конкретного домена, и этот разговор гораздо лучше вести до отправки, чем после того, как получатели начали ограничивать ваш домен.

Проверки содержимого и объёма

Каждое письмо при приёме оценивается на признаки спама. По этой оценке ничего не отклоняется: одно письмо не является доказательством, и необычное письмо гораздо чаще оказывается сообщением клиенту об оплате, чем рассылкой.

Отслеживается картина по недавнему трафику домена. Проверка идёт постоянно и смотрит на две вещи:

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

Доля отказов и отклонений «как спам» со стороны принимающих серверов тоже измеряется, но по ней решение принимает человек, а не автоматика.

Что именно ищет проверка содержимого

Больше всего весят правила, у которых нет безобидного прочтения, — не тема письма и не продающие формулировки:

  • Смешение алфавитов внутри одного слова (латиница и кириллица) или цифры вместо букв — классические способы обойти фильтры.
  • Ссылки напрямую на исполняемый файл или на «голый» IP-адрес.
  • Ссылка, у которой видимый текст — один домен, а адрес перехода — другой.
  • Выдача себя за известный бренд с домена, который ему не принадлежит.
  • Скрытый текст — display:none, нулевой размер шрифта, белым по белому.

Обычные маркетинговые письма к этому не относятся. «Летняя распродажа, −30%, подробнее» — это обычная рассылка, ради которой сервис и нужен, и лёгкие признаки (капслок в теме, сокращатели ссылок, продающая лексика) сами по себе не могут набрать подозрительную оценку.

Если отправка остановлена

Блокировка намеренно заметна, и это не то же самое, что низкая репутация:

  • Всем пользователям домена приходит письмо с причиной.
  • Причина показывается на странице домена в панели, рядом с меткой «Заблокирован».
  • Новые письма не принимаются: HTTP 403 в API, а на SMTP отказ происходит на этапе аутентификации с сообщением Sending from this domain has been stopped.
  • Очередь удерживается, а не удаляется. Ничего не помечается ошибкой и не теряется: если блокировку снимут, письма уйдут.
HTTP/1.1 403 Forbidden
Content-Type: application/json

{
    "detail": "Sending from this domain has been stopped: Sending spam",
    "code": "domain_banned",
    "reason": "spam"
}

detail написан для человека и переводится; code и reason остаются на английском — именно по ним стоит ветвиться в интеграции. reason принимает значения spam, phishing, malware, purchased_list, spam_content, spam_velocity, terms, fraud, requested или other.

Как снять блокировку

Ответьте на письмо или напишите на support@help.postwing.app, указав домен и что изменилось. Автоматические блокировки существуют потому, что быстро и обратимо ошибиться лучше, чем дать рассылке уйти: если она сработала по ошибке — скажите об этом, и решение пересмотрят.

Удалить домен и добавить заново — не способ снять блокировку. Действующая блокировка следует за именем домена, в том числе между аккаунтами, поэтому повторное добавление просто создаст её заново, а сделанное намеренно — само по себе нарушение правил использования. Лучше напишите нам.

Как со всем этим не столкнуться

  1. Пишите только тем, кто согласился. Купленные, собранные и арендованные базы — самая частая причина блокировки, и они дают такую долю отказов и жалоб, которую не спрячет никакая техническая настройка.
  2. Наращивайте объём постепенно. Начните с самых активных получателей и увеличивайте объём в течение нескольких дней — заодно поднимется и разгон домена.
  3. Разведите транзакционные письма и рассылки по разным доменам (или поддоменам). Тогда их репутации не связаны, и неудачная рассылка не остановит восстановление паролей.
  4. Чистите список. Сразу убирайте жёсткие отказы и переставайте писать тем, кто не открывал письма месяцами.
  5. Помечайте рассылки флагом mass_mail, чтобы к ним добавлялись заголовки отписки в один клик, — см. документацию по API.
  6. Пишите письма так, как они есть. Без искажённых написаний, без скрытого текста, ссылки ведут туда, куда написано.

См. также репутацию домена — она считается отдельно и может остановить отправку сама по себе.