flags провереноважноПишет Хаб

Упакованные переключатели поведения

Битовое поле, хранящее переключатели поведения из консоли — те, у которых нет своей колонки.

Подробно

Сюда упакованы семь выборов, которые числами не являются, и карта битов измерена на стенде: переключали по одному и читали колонку после каждого сохранения — бит 0 (1) timeout_means_delivered, бит 1 (2) lost_means_delivered, бит 3 (8) prefer_idle_connections, бит 5 (32) greylisted_src_ip, бит 6 (64) greylisted_dst_ip, бит 7 (128) retry_bind_errors. Биты 2 и 4 вместе несут троичный intro_error: 4 — «идти к следующему MX», 16 — «доложить об отказе», оба сброшены — «уважать код ответа». В каждой паре установленный бит означает строгий или утвердительный вариант: строгий грейлистинг, таймаут, засчитанный как доставка, ошибка привязки, достойная повтора. Поле шириной в восемь бит хранится в колонке со знаком, поэтому всё, где стоит бит 7, читается отрицательным: -128 — это один retry_bind_errors, -1 — все восемь битов. Сам по себе flags не говорит, что настроено — его читают вместе с meaningful, где сказано, какие биты выставлены намеренно. Бит, выключенный в meaningful, наследуется из встроенных умолчаний, что бы ни лежало в flags, — поэтому свежесозданный профиль имеет 0 / 0 и ничего не меняет. Это же и безопасное значение для записи Хабом.

Что будет, если ошибиться

Хаб пишет flags, а meaningful остаётся равным 255 от прежнего профиля.Тогда каждый переключатель объявлен намеренным с тем, что случайно лежит в flags: грейлистинг падает до мягкого, таймауты после тела засчитываются как доставки. В интерфейсе об этом ни слова — консоль показывает значения так, будто их выбрал оператор.проверено опытом · проверено