Как письмо уходит с узла

delivery interfaces
Введение называет два, конфигурация добавляет три

Введение перечисляет два способа доставки: обычный расширенный SMTP к серверу получателя и передача письма локальной программе.

Список неполон — и это видно из самого руководства. Строка type в блоке приёмника добавляет доставку в файл, доставку по HTTP и отбрасывание; «локальная программа» из введения — это доставка через канал, pipe. То есть введение даёт заготовку, которую глава про конфигурацию расширяет, а не заменяет.

Практический смысл списка — в том, что SMTP не единственный. Приёмник, для которого настроена доставка в файл или отбрасывание, ведёт себя совсем иначе: писем к нему не уходит вовсе, а в учёте они выглядят по-своему.

Отбрасывание стоит знать отдельно. Это способ настроить приёмника так, чтобы почта к нему исчезала молча, — полезно для проб и опасно в бою.

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

Прочие способы у нас не используются. Ближайший по смыслу механизм — гашение писем на роль-адреса (postmaster@, abuse@, dmarc@), но сделано оно приёмом и списком адресов, а не сменой способа доставки.

Отбрасывание пригодилось бы на стенде: приёмник, к которому письма уходят в никуда, позволяет проверять отправку, ничего не отправляя. Но на боевом узле такая строка — источник тихой потери почты.

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

Пять способов, из которых введение называет два:

Способ Где описан Когда встречается
SMTP к приёмнику введение умолчание, обычная доставка
локальной программе, через канал введение обработка своим кодом
в файл блок приёмника архив, проверка
по HTTP блок приёмника доставка в чужую службу
отбрасывание блок приёмника проба; в бою опасно

Способ задаётся у приёмника, а не глобально. Значит нестандартный может стоять у одного домена и остаться незамеченным.

Отбрасывание помечать комментарием. Строка, из-за которой почта исчезает, обязана объяснять себя тому, кто читает конфигурацию.

Таблица пяти способов собрана нами из двух мест руководства: два первых — из введения (§ 1.3), остальные — из строки type блока приёмника (§ 3.3.10.60).
Пример в конфигурации
# проверочный приёмник, к которому почта не уходит вовсе
<domain test.example.com>
    type discard        # письма исчезают молча — только для стенда</domain>
Выделенная строка и есть та, что делает потерю почты незаметной: узел считает такую доставку успешной, и в учёте она выглядит успешной тоже.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Оставляют пробное отбрасывание в конфигурации

§ 3.3.10

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

Пишут нестандартный способ в общий блок приёмника

§ 3.3.10

Чем чреватоСлияние идёт от общего к точному: способ, записанный в блок со звёздочкой, достанется всем приёмникам сразу.
Как заметитьОтправка прекратилась ко всем доменам одновременно, при этом ошибок нет.
Как правильноЗадавать нестандартный способ только в точном блоке и проверять действующее значение у соседних приёмников.

Считают список введения полным

§ 1.3

Чем чреватоВведение называет два способа, конфигурация добавляет три. Разбор чужого конфига по списку из введения оставит нераспознанными три значения из пяти.
Как заметитьВ блоке приёмника встретилось значение способа доставки, которого «не бывает».
Как правильноДержать в голове полный список из пяти. Введение даёт заготовку, а не перечень.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Наследование
Способ доставки задаётся в блоке приёмника и сливается по обычному правилу — от общего образца к точному и по уровням узла, пула и адреса отправки. Значит нестандартный способ, записанный в общий блок, достанется всем приёмникам сразу.
Как проверить на узле
Проверять надо конфигурацию: по поведению отправки нестандартный способ не виден:
grep -n -B2 'type ' /etc/pmta/config | grep -A2 '<domain'
pmta show settings test.example.com/mta-news-1 | grep '^type'
Вторая команда печатает действующий способ доставки для конкретной очереди — это и есть надёжный ответ. Значение, отличное от обычного, стоит объяснять комментарием прямо в конфигурации.
В Хабе
Цена ошибки
безопасно: неверное значение ничего не ломает