У каждой очереди есть два состояния. В обычном действуют привычные лимиты; в щадящем — их двойники, отдельные директивы с приставкой backoff-. Двойник есть у всего существенного: у темпа писем, объёма данных, темпа подключений, числа соединений и расписания повторов.
Очередь — это пара «приёмник плюс адрес отправки». Режим включается у пары, а не у домена: gmail.com с одного адреса может быть в щадящем режиме, а с другого — в обычном.
Сам собой режим не включается. Вход происходит по совпадению ответа приёмника с образцом из <smtp-pattern-list>, у которого прописано действие mode=backoff. Нет списка образцов — нет и входа: механизм присутствует, но бездействует. Руководство разбирает это на своём примере со списком ошибок AOL.
Что происходит при входе. Всё, что настроено: письмо-уведомление (backoff-notify), другое расписание повторов (backoff-retry-after), сниженный темп (backoff-max-msg-rate) и, если задано, переброс писем на другой адрес отправки (backoff-reroute-to-virtual-mta).
Переброс — самая сильная из этих мер. Письма переезжают в очередь того же приёмника, но другого адреса, и дальше действуют настройки того адреса целиком. Новые письма тоже едут туда, пока исходная очередь в щадящем режиме. Цепочки поддерживаются: один адрес уводит на второй, второй на третий. Петли MTA обнаруживает сам и молча игнорирует переброс.
Выход настраивается отдельно — и по умолчанию не настроен вовсе.
backoff-max-msg-rate 5/h · backoff-retry-after 1h,3h,6h,12h · backoff-to-normal-after 1h · backoff-to-normal-after-delivery yes; плюс backoff-max-smtp-out 2, backoff-notify и переброс на резервный адрес, когда они заданы. Адресам под прогревом ни одна из этих строк не пишется.
Оба условия возврата включены осознанно — щадящий режим у нас означает «почти остановиться и подождать», а не «замереть навсегда».
Резервный адрес Хаб генерирует сам — отдельным блоком с суффиксом в имени, и переброс на него работает только потому, что SPF домена заранее разрешает все адреса узла. Иначе переброшенные письма ушли бы с адреса, которого нет в записи SPF.
🔴 Что не решено. Внутри узла режимом управляет MTA — он реагирует прямо в соединении. Снаружи тем же занимается планировщик Хаба, но по телеметрии, приходящей секундами и минутами позже. Кто из них главный, когда сработали оба, не определено — это вопрос к устройству продукта, а не к конфигурации.
Своих значений у режима нет — их задают директивы-двойники. Важно не то, какие числа выбрать, а то, что каждое из них умалчивает в обычное значение:
| Двойник | Умолчание | Что это значит на деле |
|---|---|---|
| backoff-max-msg-rate | как обычный темп | без своей строки режим не медленнее обычного |
| backoff-retry-after | как обычное расписание | повторы не разрежаются |
| backoff-max-smtp-out | 20 | соединений столько же, сколько было |
| backoff-to-normal-after | never | выхода нет |
| backoff-to-normal-after-delivery | false | выхода нет |
Отсюда правило: задавать двойники парами с выходом. Набор из одного сниженного темпа без условия возврата — это очередь, которая замедлилась навсегда. Пресеты Хаба ставят оба условия возврата и резко понижают темп: у «Сбалансированного» 5/h против 10/m в обычном режиме.
Щадящий режим — не то же, что режим повторов. Руководство говорит это прямо: очередь, ушедшая в щадящий режим, в режим повторов автоматически не уходит. Если нужно и то и другое, в списке образцов есть отдельное действие defer-queue.
# вход — по образцу; выход — двумя условиями; и то и другое обязательно <smtp-pattern-list block-errors> reply /^421 .* too many errors/ mode=backoff</smtp-pattern-list> <virtual-mta mta-news-1> <domain *> smtp-pattern-list block-errors max-msg-rate 500/h backoff-max-msg-rate 1/h backoff-to-normal-after 1h backoff-to-normal-after-delivery yes backoff-reroute-to-virtual-mta mta-news-1-backoff-vmta </domain> </virtual-mta>
что делают не так и чем это кончается4 ошибки▶
§ 3.3.10.53
§ 11.5.2
§ 3.3.10.41
§ 3.3.10.59
3 связи
Четыре способа сказать «медленнее»У каждого лимита есть двойник, который заменяет его, пока очередь в щадящем режиме. § 3.3.10.41max-errors-per-connection<domain>Повторяющиеся ошибки — то, ради чего щадящий режим и существует; обрыв соединения его не заменяет. § 3.3.10.1bounce-after<domain>Щадящий режим замедляет повторы, но срока не продлевает: у очереди в backoff остаётся столько же времени и меньше попыток. § 3.3.10.10backoff-max-msg-rate<domain>Режим, в котором действует это значение вместо обычного. § 3.3.10.41backoff-max-data-volume-rate<domain>Режим, в котором действует это значение вместо обычного. § 3.3.10.45backoff-max-connect-rate<domain>Режим, в котором действует это значение вместо обычного. § 3.3.10.95
pmta show queues pmta show settings gmail.com/mta-news-1 pmta set queue --mode=normal gmail.com
3 статьи
◇Как складывается политика для приёмникаНастройки собираются от самого общего образца к самому точному; порядок блоков в файле не значит ничего.◇Как узел отвечает на слова приёмникаСопоставляет ответы SMTP с регулярными выражениями и по совпадению меняет режим очереди — тот самый спусковой крючок, которого ждёт вся машинерия щадящего режима.◇Наблюдение за репутацией внутри узлаMTA сам следит за ответами приёмников и по совпадению с образцом меняет режим очереди — реакция внутри соединения, а не по телеметрии.