allow-priority-interruption-during-transfer

<domain>

Прерывать соединение сразу или ждать, пока оно освободится
в конфигурации это строкаallow-priority-interruption-during-transfer noвнутри блока <domain>
Оборвать на полуслове или дождаться

Умолчание — no. Строка уточняет как именно происходит прерывание, разрешённое соседней allow-priority-interruption.

С умолчанием прерывание откладывается до тех пор, пока соединение не освободится — то есть текущее письмо досылается, и только потом соединение отдают.

Со значением yes прерывание происходит немедленно — посреди передачи.

Оговорка отдельно: строка касается только очередей SMTP.

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

То есть выигрыш во времени для срочной очереди оплачивается повторной передачей в медленной — и репутационным риском у приёмника, который увидел обрыв.

Умолчание выбрано вендором осознанно: подождать освобождения почти всегда дешевле.

Что делает Хаб. Не пишет — остаётся вендорское no.

Приоритеты Хаб не задаёт вовсе, так что прерывать нечего: строка не проявится ни при каком значении.

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

Что ставить. Умолчание почти всегда верно:

Значение Когда
no (умолчание) обычный случай: подождать освобождения дешевле, чем слать письмо заново
yes срочность выше цены повторной передачи — редкий случай, обычно транзакционная почта в отдельном потоке

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

Умолчание no, разбор «отложить до освобождения против немедленно» и оговорка «только для очередей SMTP» — из руководства, § 3.3.10.13. Оценка цены повторной передачи наша.
Пример в конфигурации
# срочная очередь не ждёт освобождения — ценой повторной передачи
<domain transactional.example>
    queue-priority 90
    allow-priority-interruption-during-transfer true</domain>
Строка касается очередей, у которых соединения отбирают, а не той, ради которой отбирают. Ставить её надо там, где допустим обрыв.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Включают немедленное прерывание в общем блоке

§ 3.3.10.13

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

Ставят строку той очереди, ради которой прерывают

§ 3.3.10.13

Чем чреватоОна касается очередей, у которых соединения отбирают, а не той, ради которой это делается. Поставленная не туда, она не меняет ничего.
Как заметитьСтрока включена у высокоприоритетной очереди, поведение не изменилось.
Как правильноПереносить её к тем получателям, чьи соединения допустимо рвать.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
allow-priority-interruption-during-transfer <boolean>
Значения
yes | no | true | false
Умолчание
no § 3.3.10.13
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<domain>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Директива живёт в <domain> и подчиняется слиянию блоков получателей: более узкий блок перекрывает более широкий. Значение в блоке * разрешит немедленные обрывы у всех получателей сразу — это редко бывает тем, чего хотели.
Как проверить на узле
Строку читают вместе с приоритетами и разрешением прерывать:
grep -n 'allow-priority-interruption' /etc/pmta/config /etc/pmta/virtualhost.txt
grep -i 'connection.*reset\|abort' /var/log/pmta/pmta.log | tail -10
Записи об оборванных соединениях в журнале — признак того, что немедленное прерывание срабатывает. Если их нет, а строка включена, значит приоритеты не расходятся и прерывать нечего.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Разобрать зависшую очередь