delete-file-holders

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

Удалять ли временные держатели файлов после доставки
в конфигурации это строкаdelete-file-holders falseвнутри блока <spool>
Экономия ввода-вывода ценой файлов в каталоге

Умолчание — false. Строка решает судьбу держателей файлов — временных файлов, которые MTA намеренно оставляет в каталоге спула, чтобы сэкономить на вводе-выводе.

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

Со значением true держатели удаляются после доставки письма — каталог остаётся чистым, но каждое новое письмо заводит файл заново.

Это классический размен: место и число файлов против скорости записи.

Главная ловушка — число файлов, а не их размер. Держатели малы, и место они занимают небольшое. Занимают они записи в каталоге, а файловые системы на каталогах с сотнями тысяч файлов работают заметно медленнее — включая сам MTA, который этот каталог перечитывает.

То есть экономия ввода-вывода на одном письме оборачивается его потерей на всех остальных. Где проходит граница, зависит от файловой системы и объёма — узнать это можно только счётом файлов в каталоге.

Что делает Хаб. Пишет yes — держатели удаляются. Строка пришла из эталонной конфигурации Protosender, с которой у Хаба общий формат, и стоит в обоих шаблонах.

Для парка это верный выбор: узлы живут долго и без присмотра, объём у них неровный, и накопление файлов в спуле — та поломка, которую заметят поздно. Экономия на создании файла при наших объёмах несопоставима с риском.

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

Что ставить. Размен считают по объёму и по присмотру:

Значение Когда
false (умолчание) ровный высокий поток и присмотр за спулом: экономия ввода-вывода окупается
true неровный поток или узел без присмотра — каталог остаётся чистым

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

Умолчание false и назначение держателей — экономия ввода-вывода — из руководства, § 3.3.2.1. Разбор про число файлов в каталоге и разбивка случаев наши.
Пример в конфигурации
# так пишет конфигурацию Хаб — каталог остаётся чистым
<spool /var/spool/pmta>
    deliver-only no
    delete-file-holders yes</spool>
Пара строк описывает поведение единственного каталога узла: он рабочий и не копит временные файлы.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

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

наш опыт

Чем чреватоДержатели копятся, число файлов в каталоге растёт, и файловая система начинает работать медленнее — вместе с самим MTA, который этот каталог перечитывает. Замечают это поздно, по общему замедлению.
Как заметитьФайлов в каталоге спула кратно больше, чем писем в очереди.
Как правильноВключить удаление держателей: цена — создание файла на письмо, и она невелика.

Считают держатели неисправностью и чистят вручную

§ 3.3.2.1

Чем чреватоЭто штатный приём MTA, а не мусор после сбоя. Удаление руками во время работы узла может забрать файл, который MTA собирался переиспользовать.
Как заметитьВ каталоге спула регулярно запускают чистку по расписанию.
Как правильноЗадать поведение строкой и не трогать каталог руками.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
delete-file-holders <boolean>
Значения
yes | no | true | false
Умолчание
false § 3.3.2.1
Применение
reload, перезапуск не нужен
Очередь
затронет и то, что уже стоит в очереди
Где писать
<spool>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Директива живёт в <spool> и относится к одному каталогу. Наследования между каталогами нет: у каждого расположения свой размен, и на быстром диске он может быть другим, чем на медленном.
Как проверить на узле
Строку видно в конфигурации, следствие — счётом файлов в каталоге:
grep -n -A4 '^<spool' /etc/pmta/config
find /var/spool/pmta -type f | wc -l
Число файлов должно быть сопоставимо с числом писем в очереди. Заметно большее означает накопившиеся держатели — и повод включить их удаление.
В Хабе
Управляется
Аналитика → Учёт узла
Значение
Хаб подбирает сам — темп, стадия прогрева, метрики
Цена ошибки
безопасно: неверное значение ничего не ломает
Сценарии
Подготовить узел к отправке