Письмо подаётся запросом HTTP, и один запрос может нести как одного получателя, так и нескольких. Тело письма можно собирать подстановками по образцу слияния.
Собирается вход из трёх частей. Приёмник <transmissions-api-listener> — обязательно с сертификатом, потому что снаружи это HTTPS. Блок <transmissions-api> — там живут ключи api-key и настройки журналирования. И блок источника с зарезервированным именем {transmissions-api}, через который к такой почте применяются обычные настройки подачи: разрешения на служебные заголовки, выбор потока и всё прочее.
Постоянные соединения поддерживаются по правилам RFC 7230. Но с оговоркой, которая ловит клиентов: каждый запрос в таком соединении обязан нести Content-Length, иначе ответом будет 400 bad request. Заголовок keep-alive со своими параметрами MTA не понимает.
Форма запроса намеренно близка к интерфейсу SparkPost — вплоть до того, что неподдерживаемые поля того интерфейса названы причиной отказа. Клиент, написанный под SparkPost, чаще всего работает, а где не работает — получает внятный отказ.
Вторая половина — сжатие. Сжатое тело запроса принимается, и руководство тут же советует ограничить наибольший размер письма: без предела сжатый запрос превращается в способ исчерпать память узла разворачиванием.
Собственный HTTP-вход у Хаба на узле всё-таки есть, но другой: веб-монитор и API управления с ключом http-api-key. Он про управление узлом, а не про подачу почты, и путать их не стоит.
# три части входа: приёмник с сертификатом, ключи и настройки источника <transmissions-api-listener 1.2.3.4:8585> tls-certificate /etc/pmta/transmissions-api-certificate.pem</transmissions-api-listener> <transmissions-api> api-key 14ac5499cfdd2bb2859e4476d2e5b1d2bad079bf max-message-size 100M </transmissions-api> <source {transmissions-api}> process-x-virtual-mta yes process-x-job yes </source>
что делают не так и чем это кончается3 ошибки▶
§ 8.1
§ 8.1.1
§ 8.1
3 связи
Персонализация внутри MTAТело письма собирается подстановками по тому же образцу. § 8.1
grep -n -A4 '^<transmissions-api' /etc/pmta/config
curl -sS -o /dev/null -w '%{http_code}\n' -H 'Authorization: <ключ>' https://<адрес-узла>:8585/api/v1/transmissions
3 статьи
◇Как письмо попадает в MTAШесть описанных способов подачи: расширенный SMTP, четыре языковые обвязки и каталог, за которым узел следит на диске.◇Кому разрешено сдавать почту и для кого её приниматьИз коробки узел принимает подачу только с самой машины; два разных вопроса — «кто может слать через нас» и «на чьи адреса мы принимаем» — решаются разными директивами.◇Заголовки, которыми отправитель управляет доставкойШесть служебных заголовков позволяют подающей стороне выбрать поток, пометить письмо заданием, задать настройки и ключ подписи, идентификатор конверта и расписание; каждый разрешается отдельно и по источникам.