min-free-space

<signals>

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

Данные для выгрузки копятся файлами в отдельном каталоге — /var/lib/pmta/sparkpost на Unix — и удаляются после успешной отправки. Строка задаёт порог свободного места, ниже которого узел начинает удалять их не отправив. Умолчание — 20M.

🔴 Удалённое теряется навсегда, и в отчётах службы остаются дыры. Вендор говорит это прямо.

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

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

Главная ловушка — оставить умолчание на узле с общим разделом. Двадцать мегабайт — очень мало. Если каталог выгрузки лежит на том же разделе, что спул и учёт, порог сработает позже, чем кончится место у них, — то есть предохранитель защитит не то.
Что делает Хаб. Не пишет: выгрузкой во внешнюю аналитику мы не пользуемся. События парка приходят к нам напрямую, вебхуком учёта, и отдавать их наружу незачем.
Рекомендуемые значения

Выбор здесь короткий:

Значение Когда
20M (умолчание) отдельный раздел под выгрузку
1G и больше общий раздел со спулом и учётом
0 никогда: диск кончится целиком
Умолчание 20M, каталог хранения, удаление после успешной отправки и безвозвратность удаления — из руководства (§ 11.1.6.2.15). Замечание про общий раздел — наше.
Пример в конфигурации
# каталог выгрузки на общем разделе — порог поднимаем
<signals>
    api-key 0123456789abcdef012345678901234567890123
    min-free-space 1G</signals>
Порог решает, чем жертвовать при отказе службы: местом или данными.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Оставляют умолчание на разделе, общем со спулом

наш опыт

Чем чреватоДвадцать мегабайт — меньше, чем нужно спулу и учёту. Порог сработает после того, как место кончится у них.
Как заметитьПри отказе службы первым встал приём почты, а не выгрузка.
Как правильноПоднять порог до величины, соразмерной разделу, либо вынести каталог отдельно.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
min-free-space <size>
Значения
N с множителем b, k, m, g или t; 0 отключает
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<signals>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Наследования нет: строка живёт внутри <signals>, а такой блок на узле один. Охват выгрузки по потокам задаётся не здесь, а строкой enable-signals с тремя уровнями.
Как проверить на узле
Накопление видно по каталогу выгрузки:
du -sh /var/lib/pmta/sparkpost 2>/dev/null; df -h /var/lib/pmta
Растущий каталог означает, что служба не принимает данные. Разбираться надо с ней, а не с порогом.
В Хабе
Цена ошибки
безопасно: неверное значение ничего не ломает
Сценарии
Собрать телеметрию