process-x-schedule

<source>

Читать ли заголовок x-schedule и соблюдать окна отправки
в конфигурации это строкаprocess-x-schedule falseвнутри блока <source>
Разрешение отдать время отправки самому письму

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

Устройство самих окон описано отдельно — scheduled-delivery. Оттуда же два следствия, которые нужно знать до включения: расписание отменяет срок жизни письма, и окно — это разрешение пробовать, а не обещание отправить.

Главная ловушка — разрешение меняет правила выбытия писем. Пока его нет, письмо живёт по настроенному сроку и отбивается, когда срок вышел. С ним срок к письму не применяется вовсе: оно живёт до конца последнего окна.

То есть строка, выглядящая как «разрешить расписание», на самом деле передаёт подающей стороне решение, когда сдаваться. Письмо с окнами на неделю вперёд будет занимать спул неделю.

Что делает Хаб. Не пишет: разрешение остаётся в вендорском умолчании, заголовок с окнами Хаб не ставит.

Расписание прогрева Хаб держит у себя — планировщик решает, когда подать письмо, и подаёт в этот момент. Пропущенную отправку он при таком устройстве видит сам; отдав расписание в письмо, он бы этого не увидел.

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

Что ставить. Ответ зависит от того, кто отвечает за пропущенное окно:

Значение Когда
no (умолчание) временем отправки распоряжается планировщик подающей стороны
yes письма подаются пачкой заранее, а разносить их по времени должен узел

Второе избавляет от заданий по расписанию на подающей стороне, но взамен прячет неудачу: окно может закрыться внутри узла без единой попытки, и подающая сторона об этом не узнает.

Умолчание false и поведение при выключенном разрешении — из руководства, § 3.3.7.58. Отмена срока жизни и поведение в режиме повторов — § 11.13. Разбивка случаев наша.
Пример в конфигурации
# окна приходят в письме, разрешение выдаётся источнику
<source 10.0.0.0/24>
    process-x-schedule true</source>
Письмо с окнами в заголовке будет доставляться только внутри них, и отобьётся, когда окна кончатся, — а не когда выйдет настроенный срок жизни.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Включают, не заметив отмену срока жизни

§ 11.13

Чем чреватоНастроенный срок к письмам с расписанием не применяется. Письма с далёкими окнами лежат в спуле до конца последнего окна и занимают место, отведённое под живую очередь.
Как заметитьВ очереди накапливаются письма старше настроенного срока.
Как правильноОграничить последнее окно на подающей стороне и следить за спулом после включения.

Ставят заголовок, не выдав разрешения

§ 3.3.7.58

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

Считают, что окно гарантирует попытку

§ 11.13

Чем чреватоЕсли очередь в момент подачи в режиме повторов, попыток внутри окна не будет: доставка начнётся после выхода очереди из этого режима, возможно уже за пределами окна.
Как заметитьПисьма с расписанием остались в очереди, хотя окно прошло.
Как правильноЗадавать несколько окон подряд, а не одно, и не считать расписание заменой планировщику.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
process-x-schedule <boolean>
Значения
yes | no | true | false
Умолчание
false § 3.3.7.58
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<source>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Директива живёт в <source> и подчиняется слиянию источников: соединение попадает под все адресные блоки, которые его накрывают, и узкий перекрывает широкий. Разрешение, выданное в блоке 0/0, достанется всем — то есть право занимать спул до конца своих окон получит любая подача.
Как проверить на узле
Разрешение видно в конфигурации, расписание писем — отдельным столбцом перечисления:
grep -n 'process-x-schedule' /etc/pmta/config /etc/pmta/virtualhost.txt
pmta list --schedule --maxitems=20
Пустой столбец расписания означает, что окна не поставились: либо разрешения нет, либо заголовок пришёл не в том виде. У нас он пуст всегда — механизм не задействован.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Подключить платформу отправки