Способ подачи один и тот же во всех обвязках: открыть соединение с узлом, создать письмо, создать получателей и прицепить их к письму, добавить заголовки и тело, отдать на отправку. Всё остальное в главе — свойства одного из этих трёх предметов.
И читать главу стоит именно так. Предмет, которому принадлежит настройка, и говорит, на что она распространяется: настройка письма действует на всех его получателей, настройка получателя — на одного человека. Вопрос «почему у одного получателя вышло иначе» почти всегда решается тем, на каком уровне была задана настройка.
Руководство честно о выгоде. Обвязки не быстрее обычного соединения по SMTP — кроме случая слияния, когда на одно письмо приходится несколько получателей. То есть берут их ради персонализации и управления отдельным письмом, а не ради скорости.
Транспорт — изменённый SMTP, поэтому подача бывает и локальной, и удалённой; разницы в модели это не создаёт.
Главное для тех, кто обвязки не использует: те же решения доступны и по обычному SMTP — через управляющие заголовки письма (control-headers). Что подающая система вправе решить, знать полезно, даже если сама обвязка не нужна.
Но управляющие заголовки он использует: в письмо добавляется X-Virtual-MTA с именем адреса отправки, и при необходимости другие заголовки. Это ровно то, о чём говорит эта запись, — решение принимает подающая сторона, просто выражено оно заголовком, а не вызовом обвязки.
Поэтому запись полезна и нам: знание о том, что подающая система вправе решить, переносится с обвязок на заголовки без изменений.
Своих значений у модели нет — есть уровни, на которых настройка задаётся:
| Уровень | На кого действует | Пример решения |
|---|---|---|
| соединение | на всё, что через него подано | к какому узлу и под каким входом |
| письмо | на всех получателей письма | адрес отправки, задание, кодировка |
| получатель | на одного человека | переменные слияния, уведомления |
Правило выбора простое: чем ниже уровень, тем дороже. Настройка получателя означает, что письмо нельзя передать одной передачей всем сразу. Если персонализации нет, всё, что можно, стоит задавать на уровне письма.
По SMTP доступно то же самое — управляющими заголовками, и с той же осторожностью: заголовок, оставшийся в письме, уедет получателю. Заголовки, которые узел не должен пропускать наружу, снимаются настройкой блока подачи.
# то же решение двумя способами: обвязкой и заголовком # обвязка: свойство письма # msg.setVirtualMTA("mta-news-1") # обычный SMTP: тот же выбор управляющим заголовком X-Virtual-MTA: mta-news-1X-Job: campaign-4417
что делают не так и чем это кончается3 ошибки▶
§ 7
§ 7
§ 7
3 связи
Как письмо попадает в MTAТот же способ подачи среди прочих: обвязки — одна из дверей на узел. § 7
Обвязка подачи на C++Смежный механизм: они работают вместе. § 7.4Обвязка подачи на PerlТа же настройка на другом уровне. § 7.2Обвязка подачи на JavaТа же настройка на другом уровне. § 7.3Обвязка подачи на .NETТа же настройка на другом уровне. § 7.6Подача по HTTPS на своём приёмнике, по образцу SparkPostДругой способ передать то же самое: там протокол SMTP, здесь запрос HTTP с телом в JSON. § 8.1
grep -m5 'campaign-4417' /var/log/pmta/acct*.csv pmta show jobs
3 статьи
◇Как письмо попадает в MTAШесть описанных способов подачи: расширенный SMTP, четыре языковые обвязки и каталог, за которым узел следит на диске.◇Кому разрешено сдавать почту и для кого её приниматьИз коробки узел принимает подачу только с самой машины; два разных вопроса — «кто может слать через нас» и «на чьи адреса мы принимаем» — решаются разными директивами.◇Заголовки, которыми отправитель управляет доставкойШесть служебных заголовков позволяют подающей стороне выбрать поток, пометить письмо заданием, задать настройки и ключ подписи, идентификатор конверта и расписание; каждый разрешается отдельно и по источникам.