Главная
Возможности
Модули
Интеграция
База PMTA
База MailerQ
Стоимость
Блог
D
e
m
o
Главная
Возможности
Модули
Интеграция
База PMTA
База MailerQ
Стоимость
Блог
D
e
m
o
Главная
Возможности
Модули
Интеграция
База PMTA
База MailerQ
Стоимость
Блог
База знаний PMTA
›
Сценарий
Подключить платформу отправки
записей в сценарии: 107
always-allow-relaying
Global
критично
Хаб задаёт сам
Директива
То, ради чего узел вообще отправляет почту, — и то, что делает его открытым релеем, если выдано не тому источнику.
default-virtual-mta
<source>
критично
Хаб задаёт сам
Директива
Применяется, когда поток не выбран ничем выше — заголовком, правилом или переменной слияния.
process-x-virtual-mta
<source>
критично
Хаб задаёт сам
Директива
Разрешение источнику — с ним заголовок выбирает поток и снимается перед доставкой, без него не делает ничего и уезжает получателю.
smtp-listener
Global
критично
Хаб задаёт сам
Директива
Если не объявлен ни один приёмник, узел молча поднимает его на 0.0.0.0:25.
smtp-service
<source>
критично
Хаб задаёт сам
Директива
Выключение закрывает подачу для источника, не трогая остальных.
api-key
<transmissions-api>
Директива
Строка объявляет ключ, который приложение передаёт в заголовке Authorization; директиву повторяют, чтобы завести несколько ключей.
invalid-virtual-mta-fallback
Global
Директива
Вместо отказа письмо уходит названным здесь потоком; работает только при подаче и только если отказ выключен в источнике.
jobid-prefix
<source>
Директива
Значение приписывается спереди к метке, пришедшей в заголовке; зарезервированное значение подставляет логин подавшего пользователя.
process-x-job
<source>
Хаб задаёт сам
Директива
Разрешение источнику: с ним значение заголовка становится меткой задания письма, и по ней потом работают отбор в очереди и остановка одной рассылки.
reject-invalid-virtual-mta
<source>
Директива
Умолчание — отвергать; это же умолчание тихо отменяет запасной поток, пока его не выключить здесь.
reserved-smtp-in
<source-group>
Директива
Резервирует за группой названное число слотов из общего предела узла: их не займут другие, даже когда узел загружен.
source
<smtp-user>
Хаб задаёт сам
Директива
Привязывает логин к именованному блоку источника; его настройки действуют после входа и перекрывают то, что дал бы адрес соединения.
source
<smtp-listener>
Директива
Привязывает приёмник к именованному блоку источника, отменяя для его соединений обычный подбор по адресу.
tls-certificate
<smtp-listener>
Директива
Сертификат и пароль к ключу для соединений именно этого адреса и порта; наследуется от сертификата узла.
use-inbound-proxy
<smtp-listener>
Директива
Требует заголовок PROXY в начале соединения и берёт настоящий адрес клиента из него; по умолчанию выключено.
accept-invalid-recipients
<source>
Директива
Неверные по синтаксису адреса принимаются и тут же отбиваются, вместо того чтобы быть отвергнутыми прямо в сессии подачи; доставлены они не будут в любом случае.
add-date-header
<source>
Директива
Дописывает письму дату, когда подающая сторона её не поставила; третье значение переписывает и уже имеющуюся.
add-message-id-header
<source>
Хаб задаёт сам
Директива
Дописывает письму идентификатор, когда подающая сторона его не поставила; уже стоящий не переписывается.
add-received-header
<source>
Хаб задаёт сам
Директива
Обычное поведение почтового сервера — отметиться в цепочке передачи; выключают ради того, чтобы получатель не видел, откуда письмо подано.
allow-mailmerge
<source>
Директива
Открывает подающей стороне команды слияния, которыми одно письмо рассылается многим получателям с подстановкой значений.
allow-smtputf8
<source>
Директива
Объявляет расширение SMTPUTF8, разрешая адреса не только из латиницы; отправка при этом не гарантирована — приёмник может его не поддерживать.
always-allow-api-submission
<source>
Директива
Одна строка вместо перечисления прав, которых требует подача через API вендора; на сегодня равносильна разрешению слияния.
await-slot
<smtp-listener>
Директива
Решает для одного приёмника, ждать ли освободившийся слот или отвечать отказом; общая для узла строка задаёт то же для всех остальных.
command
<domain>
Директива
Обязательна для очереди вида pipe; в строке раскрываются подстановки со свойствами письма.
disconnect-on-transient-error
<source>
Директива
Вместо ответа 4xx MTA обрывает соединение — на случай подающей стороны, которая временные отказы обрабатывать не умеет.
file-destination
<domain>
Директива
Путь с подстановками: дату, домен и получателя можно вставить прямо в имя.
file-format
<domain>
Директива
Файл на письмо, файл на письмо с адресами конверта или общий ящик mbox.
header
<pattern-list>
Директива
Единственное правило с параметром — сначала имя заголовка, потом образец; сверяется всё содержимое заголовка вместе с пробелами и переносами.
http-delivery-url
<domain>
Директива
Обязателен для очереди вида http-delivery; абсолютный адрес без учётных данных и строки запроса.
immediate-tls
<smtp-listener>
Директива
Вместо STARTTLS узел начинает шифрование сразу, как только соединение принято; это отдельный способ подачи, обычно на порту 465.
inbound-proxy-timeout
<smtp-listener>
Директива
Предел ожидания заголовка PROXY в начале соединения; умолчание пять секунд, ноль означает «ждать всегда».
jobid-header
<source>
Директива
Называет другой заголовок письма, из которого берётся метка задания; при этом обычный способ и переменная слияния имеют преимущество.
mail-from
<pattern-list>
Хаб задаёт сам
Директива
Сверяет адрес из SMTP MAIL FROM — тот, куда возвращаются отказы, — а не адрес From, который видит получатель.
max-message-size
<transmissions-api>
Директива
Предел на размер полезной нагрузки запроса к API подачи; множитель размера обязателен, а значение больше двух гигабайт MTA не примет.
max-rcpt-per-message
<source>
Директива
Потолок на приёме: сколько адресов узел согласен взять в одном письме от подающей системы.
max-smtp-in
<source-group>
Директива
Ограничивает, сколько соединений разом группа источников может держать к узлу; умолчание не ограничивает ничего.
pickup
Global
Директива
Задаёт пару путей: откуда читать поданные файлы и куда складывать те, что обработать не удалось. Каталог поддерживается только один.
process-x-schedule
<source>
Директива
Разрешение источнику: с ним MTA доставляет письмо только внутри промежутков, названных в заголовке, без него доставляет обычным порядком.
rcpt-to
<pattern-list>
Директива
Сверяет адрес из SMTP RCPT TO; при нескольких получателях поток первого совпадения применяется ко всему письму.
relay-debug
Global
Директива
Переводит контроль релея в отладочный режим: вместо окончательного отказа узел отвечает временным, и письмо остаётся у отправителя, а не отбивается.
smtp-await-slot
Global
Директива
Когда свободных слотов входящих соединений нет, узел либо ждёт освобождения, либо отвечает приветствием 421 и закрывает соединение.
source-group
<source>
Директива
Называет группу, к которой приписан источник; общие для группы пределы задаются в блоке группы, а не здесь.
suppress-local-dsn
<source>
Хаб задаёт сам
Директива
Выключает письма-отчёты об отказе, задержке и доставке для подачи от этого источника; записи учёта при этом пишутся как обычно.
tls-min-version
<smtp-listener>
Директива
Самая старая версия протокола, принимаемая на этом адресе и порту; умолчание — TLS 1.2, как и у узла.
too-many-rcpts-fails-message
<source>
Директива
Вместо отказа лишним получателям MTA отвергает письмо на команде DATA; действует вместе с пределом числа получателей.
total-max-smtp-in
Global
Хаб задаёт сам
Директива
Ограничивает число одновременных входящих соединений SMTP на весь узел.
allow-chunking
<source>
Директива
Разрешает подающей стороне передавать письмо командой BDAT вместо DATA; умолчание — разрешать.
allow-empty-x-virtual-mta
<source>
Директива
С этой строкой письмо с пустым заголовком принимается и уходит потоком по умолчанию, без неё — это неверный поток и отказ.
auto-qualify-domain
<source>
Хаб задаёт сам
Директива
Адрес вида user@host, пришедший в MAIL FROM или RCPT TO, достраивается до полного добавлением суффикса; умолчание — достраивать.
date-header-time
<source>
Директива
Выбирает между временем приёма письма и временем фактической доставки; действует только там, где дату дописывает сам узел.
domain-suffix
Global
Директива
Суффикс, приписываемый к домену из одной части при достройке адресов; работает только вместе с самой достройкой.
http-delivery-extra-headers
<domain>
Директива
Единственное место, куда кладут авторизацию: в самом адресе учётные данные запрещены.
log-data
<transmissions-api>
Директива
Более подробная запись, чем журнал запросов API подачи; по умолчанию выключена.
log-inbound-proxy
<smtp-listener>
Директива
Пишет в журнал полученный заголовок PROXY; работает только при включённом приёме такого заголовка.
log-requests
<transmissions-api>
Директива
Пишет в журнал факт каждого запроса Transmissions API; по умолчанию выключено.
log-tls
<source>
Директива
Подробности согласования шифрования с подающим клиентом в журнал узла; умолчание — не записывать.
log-tls
<transmissions-api>
Директива
Переключатель подробной записи согласования шифрования при обработке запросов HTTP API; по умолчанию выключен.
macro-variables-preserve-case
<domain>
Директива
Касается только $to и $from: имя получателя и его домен приводятся к нижнему регистру всегда.
mailmerge-expands-undefined-variables
Global
Директива
С умолчанием неопределённая переменная превращается в пустоту; со значением false она остаётся в письме как есть, вместе со скобками.
process-x-envid
<source>
Директива
Разрешение источнику: с ним значение заголовка становится идентификатором конверта письма и заголовок снимается, без него он игнорируется и остаётся в письме.
replace-message-id-header
<source>
Директива
Переписывает уже стоящий Message-Id своим; на письмо без идентификатора не действует вовсе.
retain-x-dkim-options
<source>
Директива
Решает, увидит ли получатель заголовок с настройками подписи; умолчание — снимать.
retain-x-job
<source>
Директива
Решает, увидит ли получатель метку задания; работает только тогда, когда чтение заголовка разрешено и заголовок в письме есть.
retain-x-schedule
<source>
Директива
Решает, увидит ли получатель окна отправки, назначенные письму; умолчание — снимать.
retain-x-virtual-mta
<source>
Директива
Умолчание — снимать; оставленный заголовок доносит до получателя внутренние имена потоков.
smtp-command-timeout
<source>
Директива
Предел ожидания данных от подающей стороны во время обмена командами; парная строка к пределу на передачу тела.
smtp-data-timeout
<source>
Директива
Предел ожидания данных от подающей стороны после команды DATA или BDAT; касается только входящих соединений.
tls-ca-file
<smtp-listener>
Директива
Список корневых сертификатов для проверки клиентов на этом входе; наследования от списка узла руководство не обещает.
tls-cipher-server-preference
<smtp-listener>
Директива
С этой строкой шифр выбирается по нашему порядку, а не по порядку клиента; умолчание — по клиенту.
tls-ciphers
<smtp-listener>
Директива
Список допустимых шифров в записи OpenSSL для соединений этого входа; действует по TLS 1.2 включительно.
tls-max-version
<smtp-listener>
Директива
Самая новая версия протокола, принимаемая на этом адресе и порту; по умолчанию не ограничена.
tls-v1.3-ciphersuites
<smtp-listener>
Директива
Отдельный список для версии 1.3 на этом входе; умолчание перечисляет пять современных наборов.
total-max-transmissions-api
Global
Директива
Сколько подающих соединений по HTTP узел обслуживает разом; MTA верхней границы не проверяет — её задаёт операционная система.
pickup-remove-dot
Global
Директива
Уступка программам, которые экранируют точку по правилам SMTP там, где этого не требуется — в файлах каталога подхвата.
Кому разрешено сдавать почту и для кого её принимать
критично
Механизм
Из коробки узел принимает подачу только с самой машины; два разных вопроса — «кто может слать через нас» и «на чьи адреса мы принимаем» — решаются разными директивами.
Заголовки, которыми отправитель управляет доставкой
критично
Механизм
Шесть служебных заголовков позволяют подающей стороне выбрать поток, пометить письмо заданием, задать настройки и ключ подписи, идентификатор конверта и расписание; каждый разрешается отдельно и по источникам.
Что нужно обвязке подачи
Механизм
Что должно быть на стороне подающего, чтобы обвязка заработала: библиотека, права и членство в группе.
Что подающая система собирает перед отправкой
Механизм
Все пять языковых обвязок дают три одинаковых предмета — соединение с узлом, письмо и его получателей, — собираемых в неизменном порядке.
Умолчание источника — нижняя ступень, привязанная к тому, кто подключается
Механизм
Блок источника, совпавший с адресом отправителя, может назвать поток по умолчанию; он применяется, когда выше по лестнице выбор не сделан.
Разбор и правка разметки
Механизм
Отслеживание открытий и переходов в режиме
sparkpost
правит разметку письма с помощью встроенного разборщика gumbo-parser; письмо, разметку которого разобрать не удалось, по умолчанию отбивается.
Персонализация внутри MTA
Механизм
Переменные задаются по каждому получателю, а подставляет их узел при доставке — одно поданное письмо уходит многим с разным содержимым.
Метрики узла в стандартном формате
Механизм
Узел отдаёт счётчики, датчики и сводки в общепринятом формате: трафик, соединения, ошибки, глубина очереди и задержки.
Подача — сетевая служба, и в неё можно войти
Механизм
Подающее приложение соединяется с узлом по имени или адресу и порту — либо без входа, либо с именем и паролем, которые узел настроен принимать.
Выбор адреса отправки по содержимому письма
Механизм
Регулярные выражения сопоставляются с заголовком, обратным адресом или получателем и выбирают адрес отправки либо назначают приоритет; списки умеют вызывать друг друга.
Как обвязка сообщает об ошибке
Механизм
Обвязка C++ сообщает об ошибке исключением, после которого объект выбрасывают; обвязка C — возвратом признака и отдельным запросом последней ошибки.
Формат подачи по HTTP
Механизм
Вместо готового письма запрос по HTTP может нести отправителя, тему, заголовки, текст, HTML, AMP и вложения отдельными полями — узел сам соберёт и закодирует письмо.
Требование к переводам строк
Механизм
Строки подаваемого письма заканчиваются парой CRLF; одиночный LF — самая частая ошибка самописной подающей программы, и разбирают её записью сессии.
Слияние через расширения SMTP
Механизм
Слияние по SMTP:
XMRG
вместо
MAIL FROM
,
XDFN
с переменными перед каждым получателем и
XPRT
вместо
DATA
для каждой части.
Авторизация при доставке
Механизм
Узел входит на стороне приёмника логином и паролем из блока
<domain>
— CRAM-MD5, LOGIN или PLAIN, если приёмник их поддерживает.
Подача письма записью файла в каталог
Механизм
Письмо кладётся файлом в каталог, а конверт передаётся особыми заголовками в его начале; MTA забирает файл в спул и доставляет.
Пять способов очереди отдать письмо
Механизм
Очередь не обязана ходить по SMTP: она умеет писать в файл, запускать программу, стучаться по HTTP или выбрасывать.
Поток следует за адресом, на который вы подключились
Механизм
Именованный блок источника подключается к слушателю и действует на всех, кто соединился с этим адресом и портом, — значит, отправитель выбирает поток выбором точки подключения.
Кодировки при подаче
Механизм
Данные письма в обвязке добавляются как 7-бит, 8-бит или base64: первые два не меняют данных, кроме перевода одиночного LF в CRLF, base64 кодирует на лету; данные слияния — только 7-бит и 8-бит.
Как письмо попадает в MTA
Механизм
Шесть описанных способов подачи: расширенный SMTP, четыре языковые обвязки и каталог, за которым узел следит на диске.
Подача по HTTPS на своём приёмнике, по образцу SparkPost
Механизм
Отдельный вход: свой приёмник с сертификатом, свои ключи и зарезервированное имя источника, через которое к такой почте применяются обычные настройки подачи.
Заголовок балансировщика на входе
Механизм
Узел читает заголовок PROXY в начале входящего соединения и считает источником адрес из него; работает у обоих видов входа.
Национальные алфавиты
Механизм
Файлы конфигурации — в UTF-8, поэтому национальные домены и адреса пишут как есть; письмо с национальным адресом в конверте уйдёт, только если приёмник поддерживает SMTPUTF8.
Обвязка подачи на C
Механизм
Обвязка на C: те же операции функциями с приставками
PmtaConn
,
PmtaMsg
и
PmtaRcpt
, с явным выделением и освобождением объектов и запросом последней ошибки.
Обвязка подачи на C++
Механизм
Обвязка на C++: классы соединения, письма и получателя в трёх заголовочных файлах; ошибка бросает исключение и делает объект негодным.
Обвязка подачи на Java
Механизм
Обвязка на Java:
pmta.jar
в classpath и файл провайдера для JavaMail; описание — в JavaDoc.
Первоначальная настройка
критично
Процедура
Руководство требует задать руками две вещи: адрес ответственного и управление ретрансляцией — источники подающих машин с
always-allow-relaying
; правила приёма нужны, только если узел принимает входящую почту.
Разбор приёма писем
Процедура
Порядок разбора, когда письма не принимаются: включить журналирование соединений и команд для источника, посмотреть сессию, выключить обратно.
<source>
критично
Блок конфигурации
Правила для того, кто подключается для подачи: разрешён ли релей, какие управляющие заголовки слушать, какие пределы и нужна ли авторизация.
<smtp-listener>
Блок конфигурации
Настройки, действующие на соединения одного адреса и порта: шифрование, права через именованный источник, поведение при исчерпании потолка.
Подача письма по HTTP
Точка API
Принимает письмо JSON-запросом по HTTPS вместо сессии SMTP — с получателями, подстановками и содержимым.
Принято
Запись учёта
Письмо успешно подано на узел — почтовой сессией или через интерфейс подачи.
Задержки на приёме
Метрика
Число подач и время по этапам приёма.