Пять способов очереди отдать письмо

queue type
Очередь — не всегда отправка наружу

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

file — каждое письмо ложится в файл (или дописывается в общий). pipe — на каждого получателя запускается программа, и письмо подаётся ей на вход. http-delivery — письмо уходит запросом POST на указанный адрес в виде объекта JSON. discard — письмо выбрасывается, но запись в учёте появляется.

Настройки видов не мешают друг другу. Руководство прямо говорит: строки раздела discard игнорируются в очередях другого вида, и то же про раздел pipe. Забытая строка от прежнего вида ничего не сломает — но и ничего не сделает.

Главная ловушка — смена вида на непустой очереди. Руководство отдельной строкой предупреждает: если в очереди есть письма, смена вида требует перезапуска PowerMTA. Одного pmta reload мало, а выглядит так, будто настройка применилась.
Что делает Хаб. Пользуется только обычным SMTP: все очереди, которые он описывает, отправляют почту наружу. Входящий поток — отказы, жалобы, письма на роль-адреса — узел разбирает не очередями особого вида, а своими обработчиками отказов и жалоб: распознанное становится записями учёта и уходит вебхуком в Хаб, нераспознанное отбрасывается.
Пример в конфигурации
# четыре вида рядом: отправка, файл, программа, вебхук
<domain gmail.com>
    type smtp</domain>

<domain bounces.example.com>
    type pipe    command "/opt/bounce/parse --envid \"$envid\" \"$user\""
</domain>

<domain archive.example.com>
    type file    file-destination /var/spool/archive/
</domain>

<domain feedback.example.com>
    type http-delivery    http-delivery-url https://hub.example.com/api/v1/feedback
</domain>
Вид задаётся получателю, а не узлу: один узел спокойно ведёт очереди всех пяти видов сразу.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Меняют вид очереди, в которой лежат письма

§ 3.3.10.60

Чем чреватоПерезагрузки конфигурации мало: руководство требует перезапуска службы. Настройка выглядит применённой, а очередь работает по-старому.
Как заметитьpmta show settings печатает прежний вид, хотя в конфигурации стоит новый.
Как правильноДождаться опустошения очереди либо перезапустить службу.

Ждут, что настройки одного вида подействуют на другой

§ 3.3.10.109

Чем чреватоСтроки разделов discard и pipe в очереди другого вида игнорируются. Ошибки не будет, но и действия тоже.
Как заметитьСтрока задана, в выводе настроек присутствует, а поведение не меняется.
Как правильноСверить строку с видом очереди: у каждого вида свой набор.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
⇄

Связанные записи

2 связи

Как проверить на узле
Вид действующей очереди печатает команда настроек — строкой type в самом начале раздела очереди:
pmta show settings bounces.example.com/vmta1 | head -5
pmta show queues | head -20
Если type показывает прежний вид, а конфигурация изменена — почти наверняка в очереди остались письма и нужен перезапуск службы. Хаб виды очередей не показывает: у него они все smtp.
В Хабе
Цена ошибки
опасно: последствия переживут откат
Сценарии
Подключить платформу отправки · Собрать телеметрию