min-free-space

<spool>Хаб задаёт сам

Порог свободного места, ниже которого каталог не принимает письма
в конфигурации это строкаmin-free-space 0внутри блока <spool>
То же имя ещё 1:<signals><spool>— часть из них другие настройки, часть та же самая
Предохранитель, а не настройка

Умолчание — 0, то есть предохранителя нет.

Строка останавливает приём писем в этот каталог, когда свободного места на его файловой системе становится меньше порога. Как только место возвращается, приём возобновляется сам — вмешательства не требуется.

На Unix счёт идёт по месту, доступному непривилегированным пользователям: та часть файловой системы, что зарезервирована за администратором, в этот подсчёт не входит.

Синтаксис требует множителя размера: B, K, M, G или T.

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

Есть и устаревшая форма того же на уровне узла — spool-min-free-space.

Главная ловушка — умолчание 0. Предохранителя нет, и каталог принимает письма, пока на диске есть хоть байт. Дальше кончившееся место останавливает не приём, а весь узел: писать некуда ни спулу, ни учёту, ни журналу.

Разница существенная. С порогом узел отвечает подающей стороне временным отказом и продолжает доставлять то, что уже принял. Без порога он перестаёт работать целиком, и восстанавливать придётся руками.

Что делает Хаб. Пишет — с 29.08.2026, значением, которое считает от диска узла: пять процентов, но не меньше гигабайта и не больше десяти. На узлах парка это выходит 2 ГБ и 1 ГБ.

Почему пять процентов. Порог включается примерно там же, где наблюдение за узлом уже ставит «плохо» (95 % занятого), а предупреждение человек получил на 90 %. Нижняя граница нужна маленьким узлам, верхняя — чтобы на большом диске не резервировать десятки гигабайт впустую.

Что это даёт. Единственный механизм узла, который чинит себя сам: приём встаёт, доставка продолжается, очередь сокращается, место освобождается, приём включается обратно. Наблюдение предупредит в рабочее время — порог сработает ночью. Заодно защищены записи учёта: при подавленных отчётах это единственный канал сведений об исходах доставки, и лежит он на том же разделе.

Рекомендуемые значения

Что ставить. Порог считают от того, что ещё должно работать, когда приём остановится:

Значение Когда
0 (умолчание) никогда не бывает правильным выбором на боевом узле
1G–5G общий раздел: места должно хватить учёту, журналу и доставке уже принятого
меньше спул на отдельном разделе, и кроме него на нём ничего нет

Ориентир: остатка должно хватить, чтобы доставить всё, что уже в очереди, и записать об этом в учёт.

Умолчание 0, обязательный множитель, автоматическое возобновление приёма и оговорка про место для непривилегированных пользователей — из руководства, § 3.3.2.4. Разбивка значений наша.
Пример в конфигурации
# предохранитель: приём встанет раньше, чем кончится место у всего узла
<spool /var/spool/pmta>
    min-free-space 2G</spool>
Ниже порога каталог перестаёт принимать письма, а доставка уже принятых продолжается. Когда место вернётся, приём возобновится сам.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

Типичные ошибки и проблемы

что делают не так и чем это кончается3 ошибки▶

Оставляют вендомский ноль на боевом узле

наш опыт

Чем чреватоКончившееся место останавливает не приём, а весь узел: писать некуда ни спулу, ни учёту, ни журналу. Восстанавливать приходится руками, и часть записей учёта теряется навсегда.
Как заметитьУзел перестал работать целиком, на разделе ноль свободного места.
Как правильноЗадать порог с запасом на доставку уже принятого и на записи учёта об этом.

Считают порог от размера раздела, а не от того, что на нём ещё живёт

§ 3.3.2.4

Чем чреватоСпул, учёт и журнал часто лежат на одном разделе. Порог, рассчитанный только на спул, оставит без места учёт — и сведения об исходах пропадут ровно тогда, когда нужнее всего.
Как заметитьПриём остановлен, а записи учёта перестали писаться.
Как правильноСчитать остаток на всё, что пишет на этот раздел, а не только на очередь.

Пишут число без множителя

§ 3.3.2.4

Чем чреватоМножитель обязателен. Конфигурация не применяется целиком, и узел остаётся на прежней.
Как заметитьПроверка конфигурации сообщает об ошибке в этой строке.
Как правильноПисать 2G, а не 2.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
min-free-space <size>
Значения
число с обязательным множителем B, K, M, G или T, либо 0
Умолчание
0 § 3.3.2.4
Применение
reload, перезапуск не нужен
Очередь
затронет и то, что уже стоит в очереди
Где писать
<spool>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Директива живёт в <spool> и относится к одному каталогу — точнее, к его файловой системе. Наследования между каталогами нет; устаревшая форма на уровне узла задавала то же самое сразу для всех.
Как проверить на узле
Порог видно в конфигурации, фактическое место — на диске:
grep -n -A4 '^<spool' /etc/pmta/config
df -h /var/spool/pmta /var/log/pmta
Смотреть надо оба раздела: если спул и журнал на одном, порог должен оставлять место обоим. Отсутствие строки означает вендомский ноль — предохранителя нет.
В Хабе
Значение
Хаб подбирает сам — темп, стадия прогрева, метрики
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Планирование мощности · Подготовить узел к отправке