spool

Globalустарела

Каталог спула — устаревшая форма записи
в конфигурации это строкаspoolвнутри блока Global
Строка вместо блока

Строка называла каталог, в котором MTA держит файлы писем, пока те ждут доставки.

Директива объявлена устаревшей. Замена — блок <spool>, где имя блока и есть путь к каталогу.

Разница не в том, где хранятся письма, а в том, что о каталоге можно сказать. У блока есть priority — очерёдность использования, min-free-space — порог свободного места, deliver-only — режим опустошения и delete-file-holders — судьба временных файлов. У строки не было ничего из этого.

Поэтому и появилась блочная форма: нескольких каталогов с разными свойствами строкой не описать.

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

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

Что делает Хаб. Не пишет: пользуется блочной формой — <spool /var/spool/pmta> с тремя строками внутри: порог свободного места, режим каталога и судьба держателей файлов.

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

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

Что ставить. Ничего: строку следует заменить блоком.

Значение Когда
не писать всегда: каталог объявляется блоком
путь к каталогу только в старой конфигурации, которую ещё не перевели

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

Назначение и пометка об устаревании с указанием замены — из руководства, § 3.3.1.5. Перечень того, что появилось у блочной формы, — из § 3.3.2. Вывод о причине замены наш.
Пример в конфигурации
# так было раньше — путь без всяких настроек
spool /var/spool/pmta
Сегодня то же пишется блоком, и внутрь можно положить приоритет, порог свободного места и режимы, которых у строки не было.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Остаются на строчной форме и лишаются предохранителя

наш опыт

Чем чреватоУ каталога нет порога свободного места: кончившееся место останавливает не приём, а весь узел — писать некуда ни спулу, ни учёту, ни журналу.
Как заметитьВ конфигурации строка spool, а блока <spool> нет.
Как правильноПеревести на блок и задать внутри порог свободного места.

Держат обе формы одновременно

§ 3.3.1.5

Чем чреватоОдно расположение названо дважды разными способами. Что получится, руководство не оговаривает, и разбираться придётся опытом.
Как заметитьВ конфигурации есть и строка, и блок.
Как правильноОставить блок, строку убрать.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
spool <directory>
Значения
путь к каталогу
Применение
reload, перезапуск не нужен
Очередь
затронет и то, что уже стоит в очереди
Где писать
Global
Сколько раз
можно повторять
Всё здесь — из руководства, с разделом.
Наследование
Директива пишется в корне файла конфигурации. Наследования у неё нет — как и настроек: всё, что можно сказать о каталоге, появилось только у блочной формы.
Как проверить на узле
Устаревшую строку стоит искать вместе с блочной формой:
grep -n '^spool ' /etc/pmta/config
grep -n -A4 '^<spool' /etc/pmta/config
Если нашлась только строка, у каталога нет ни порога свободного места, ни приоритета. Перевод на блок стоит делать вместе с их назначением.
В Хабе
Цена ошибки
безопасно: неверное значение ничего не ломает
Сценарии
Жизненный цикл конфигурации