Обзор MTA-Hub

Шлюз прокси: порт 25 через SOCKS5

Шлюзы прокси (гейты).
PowerMTA и MailerQ
через SOCKS5.

PowerMTA и MailerQ не умеют слать через SOCKS5 с логином и паролем. Гейт — служба hubgate на самом сервере: принимает соединение от MTA и открывает туннель через нужный прокси.

Страница показывает каждый гейт: версию, время работы, совпадают ли адреса с записанными в Хабе, соединения и сбои туннеля за неделю.

Зачем нужен гейт
hubgateHAProxy PROXY protocolSOCKS5
Прокси-гейт · гейтыИнтерфейс MTA-Hub
Сверка адресовСбои туннеляЗащита
Оригинальные экраны модуляОткрыть в полном размере ↗
01MTAЗаголовок PROXY
02ЯрлыкВыбор нужного прокси
03ТуннельДо порта 25 получателя
04СверкаГейт против записей Хаба

01 / Зачем нужен шлюз прокси

Как письмо выходит на порт 25 через прокси.

Арендованные прокси выдаются с логином и паролем по SOCKS5, а PowerMTA и MailerQ так не умеют. Зато оба умеют работать через посредника по HAProxy PROXY protocol. Гейт — шлюз прокси, который и есть такой посредник: он стоит рядом с MTA и открывает туннель через нужный прокси до порта 25 сервера получателя.

Почему иначе нельзя

PROXY protocol

В заголовке PROXY MTA сообщает гейту, каким адресом представиться и куда идти. Гейт по этому ярлыку находит нужный прокси, открывает туннель и дальше просто передаёт данные в обе стороны — в сам диалог он не лезет.

Где стоит гейт

На узле

Не на Хабе и не на отдельной машине, а на самом сервере отправки, рядом с MTA. Так почта всего парка не идёт через панель управления.

02 / Состояние гейта

Сверка адресов и сбои туннеля за неделю.

По каждому гейту видно, сколько адресов он знает и сколько их должно быть по данным Хаба, сколько соединений прошло за неделю и какой прокси рвёт туннели. Если гейт знает не все адреса, недостающие видно по именам.

Два гейта из примераДанные со снимков экрана

Адреса на узле

Сверка

Гейт знает все 3 адреса набора «Отправка · маркетинг» — отправка через них пойдёт. Если какого-то адреса не хватает, его видно по имени, а исправляется это кнопкой «Записать на узел».

Туннели за неделю

0,6 % сбоев

2 410 удачных соединений и 15 сбоев туннеля. Чаще других туннели рвёт px-03 — 8 сбоев из 793 попыток.

Крупно — неделя, мелко — всё время: счётчики с момента запуска службы стоят ниже и помечены значком ⟡, чтобы их не приняли за текущие.

03 / Кнопки гейта

Управление шлюзом без входа на сервер.

Под кнопками гейта прямо написано, что делает каждая: какая трогает службу, а какая только спрашивает. Записать адреса, перезапустить или обновить гейт можно прямо из кабинета, без входа на сервер.

Выгружает заново

Записать на узел

Адреса и настройки набора заново уходят на сервер.

Без перезапуска

Перечитать таблицу

Гейт перечитывает уже выгруженный файл.

Рвёт туннели

Перезапустить

Поднимает службу заново — открытые туннели обрываются.

Ничего не меняет

Опросить

Только спрашивает у гейта его состояние.

Обновление

Переустановить

Кладёт файл службы из комплекта Хаба и тоже перезапускает её.

Есть обновление

Версия рядом

Рядом с работающей версией видна версия из комплекта: у mta-02 — 1.0.4 → 1.1.0.

04 / Защита шлюза

Гейт пускает только свой сервер.

У PROXY protocol нет пароля: кто добрался до порта гейта, тот получил арендованные адреса для чего угодно, а отвечать будет их владелец. Поэтому гейт пускает только свой сервер — и страница показывает, что это действительно так.

Разрешённые источники

Только свой узел

Гейт принимает соединения только с адреса самого сервера и 127.0.0.1. Чужое подключение получает разрыв и строку в журнале, а плитка «Отбито чужих» считает такие попытки.

Пароли прокси

Права файла

Файл таблицы, где лежат пароли прокси, закрыт правами 640 root:hubgate — Хаб это проверяет. Файрвол сервера Хаб не настраивает: порт виден из сети, и пускает только список источников.

05 / Подробно об интерфейсе

Интерфейс раздела «Гейты» — 6 экранов.

Все экраны раздела о шлюзах прокси: зачем нужен гейт, путь до отправки, два гейта на серверах, узлы без гейта и защита. Над каждым снимком — зачем нужен экран, под ним — что на нём есть.

Зачем гейт и путь до отправки

2 экрана

Первые два экрана объясняют, как работает шлюз прокси, и показывают, готов ли сервер к отправке. Сначала — схема одного письма: от MTA через гейт и прокси до почтового сервера получателя. Затем — путь до отправки для выбранного сервера: шесть шагов от установки гейта до рассылочной платформы. У каждого шага — кнопка на экран, где он делается.

01

Зачем он нужен

MTA не ходит в SOCKS5 с паролем

Первый экран объясняет, зачем серверу отправки нужен шлюз прокси. Схема одного письма в четыре блока: MTA по PROXY protocol сообщает гейту «кто я» и «куда», гейт открывает SOCKS5-туннель через арендованный прокси до порта 25, и почтовый сервер получателя видит адрес прокси, а не сервера. Ниже две строки: почему иначе нельзя — PowerMTA и MailerQ не ходят в SOCKS5 с логином и паролем — и почему гейт стоит на самом сервере отправки, а не на Хабе. Экран достаточно прочитать один раз, чтобы понимать, через что проходит каждое письмо. Дальше на странице — путь до отправки для выбранного сервера и карточки гейтов на mta-01 и mta-02.

MTA-Hub: Зачем он нужен — MTA не ходит в SOCKS5 с паролемУвеличить
Экран 01 · Зачем он нужен. Пример из интерфейса MTA-Hub.
  • MTA — PowerMTA или MailerQ; сам находит почтовый сервер получателя.
  • HUB-Gate — на том же узле; пускает только свой узел.
  • Прокси — арендованный адрес, туннель SOCKS5 до порта 25.
  • MX получателя — видит адрес прокси.
  • Красная строка — ни PowerMTA, ни MailerQ не ходят в SOCKS5 с логином и паролем, а через посредника по PROXY protocol — умеют.
  • Жёлтая строка — гейт живёт на самом узле, иначе почта всего парка шла бы через панель управления.

В сам диалог с почтовым сервером гейт не лезет — только склеивает потоки.

02

Путь до отправки

Шесть шагов для выбранного узла

Блок «Путь до отправки» отвечает на вопрос, готов ли выбранный сервер слать почту через прокси. Шесть шагов идут по порядку: гейт на узле, набор с этим узлом, годные адреса, ввод в отправку, запись на узел и передача рассылочной платформе. На mta-01 пройдены все — у каждого шага зелёная галочка, значит, сервер готов. У каждого шага есть кнопка на экран, где этот шаг делается, так что незаконченный шаг легко довести. Обычно блок свёрнут, на снимке он развёрнут. Открывают блок, когда сервер настроен, а письма через прокси не идут: шаг без галочки и есть место, где искать причину. Сами гейты разобраны на следующих экранах.

MTA-Hub: Путь до отправки — Шесть шагов для выбранного узлаУвеличить
Экран 02 · Путь до отправки. Пример из интерфейса MTA-Hub.
  • 1 · Гейт на узле — hubgate 1.1.0 стоит рядом с MTA.
  • 2 · Набор с этим узлом — наборов: 1; прокси попадает на узел только через набор.
  • 3 · Годные адреса в наборе — 3 из 3 прошли приёмку: отвечают, протокол определён, порт 25 открыт.
  • 4 · Введены в отправку — у каждого свой поддомен, адрес в SPF, записи видны.
  • 5 · Записаны на узел — 3 из 3 — гейт знает все ярлыки.
  • 6 · Отданы рассылочной платформе — точек подачи: 3.

Сервер для проверки выбирается справа вверху; ссылка «свернуть» прячет блок.

Гейты на серверах

2 экрана

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

03

Гейт на mta-01

Всё работает, адреса сходятся

Карточка гейта на mta-01 — пример, когда всё в порядке. В шапке: PowerMTA, гейт на 192.0.2.11:5000 и эхо-порт :5001, hubgate 1.1.0, работает 7 дней 2 часа, набор «Отправка · маркетинг». Ниже — пять кнопок с подписями, счётчики за неделю и с запуска службы, сверка адресов и таблица ярлыков. Главное на экране — сверка: сервер знает все 3 адреса из 3, значит, отправка через них пойдёт. Сбоев туннеля за неделю 0,6 %, и видно, какой прокси подводит чаще других, — здесь px-03. Если адресов на узле меньше, чем по данным Хаба, недостающие видны по именам, а возвращает их кнопка «Записать на узел».

MTA-Hub: Гейт на mta-01 — Всё работает, адреса сходятсяУвеличить
Экран 03 · Гейт на mta-01. Пример из интерфейса MTA-Hub.
  • Шапка — сервер, адрес гейта, версия, время работы, время опроса, набор и состояние «работает».
  • Адресов на узле — 3 из 3 по данным Хаба.
  • Удачных соединений и отказов туннеля — 2 410 и 15 (0,6 %) за неделю; с запуска службы — 2 853 и 17.
  • ⟡ Отбито чужих, через гейт прошло, задержка — 1 771, 469 МБ и 1,2 мс — счётчики самой службы с её запуска.
  • Рвут туннель — px-03 (8 из 793), px-01 (4 из 829), px-02 (3 из 803).
  • Таблица — ярлык — что видит MTA, апстрим — куда идёт гейт, прокси, протокол, состояние и знает ли о нём гейт.

Ярлык — адрес, которым MTA просит гейт представиться. Обычно он равен выходному адресу прокси; у прокси с плавающим выходом ярлык берётся из зарезервированной сети 240.0.0.0/4.

04

Гейт на mta-02

Есть обновление, px-06 в карантине

Вторая карточка — гейт на mta-02, которому пора обновиться. Он работает 14 дней 22 часа на hubgate 1.0.4, а в комплекте Хаба уже 1.1.0 — отсюда жёлтая пометка «есть обновление». Кнопка «Переустановить» обновит службу без входа на сервер. Сбоев туннеля здесь больше — 1,5 % за неделю, и главный виновник, px-06, уже снят правилом «Доставляемость просела»: в таблице сервера его нет, а сбои за неделю остались на счету гейта. Следом по сбоям идут px-05 и px-04. Учтите, что «Переустановить», как и «Перезапустить», поднимает службу заново, и открытые туннели обрываются.

MTA-Hub: Гейт на mta-02 — Есть обновление, px-06 в карантинеУвеличить
Экран 04 · Гейт на mta-02. Пример из интерфейса MTA-Hub.
  • Версия — 1.0.4 → 1.1.0 и пометка «есть обновление»; «Переустановить» обновит службу.
  • Адресов на узле — 2 из 2.
  • За неделю — 1 971 удачное соединение и 31 сбой (1,5 %); с запуска — 4 339 и 69.
  • ⟡ Счётчики службы — отбито 3 733 чужих подключения, прошло 713 МБ, задержка 1,6 мс.
  • Рвут туннель — px-06 (12 из 770), px-05 (10 из 403), px-04 (9 из 829).

px-06 правило «Доставляемость просела» уже отправило в карантин, поэтому в таблице сервера его нет, а сбои за неделю остались на счету гейта.

Без гейта и защита

2 экрана

Внизу — серверы, где гейта ещё нет, и блок о защите. Гейт ставится одной кнопкой на выбранный сервер, после подтверждения. Защита показана проверками, а не обещаниями: какие источники разрешены и какие права у файла с паролями прокси.

05

Узлы без гейта

Отправляют напрямую, со своих адресов

Список серверов, где шлюза прокси ещё нет. Пятнадцать серверов отправляют письма напрямую, со своих адресов, — через прокси они не ходят. Первый шаг к отправке через прокси — кнопка «Поставить гейт» в строке сервера: служба ставится и запускается только на нём и только после подтверждения. Ссылка «Настроить» ведёт на страницу сервера. Названия те же, что во всём кабинете, поэтому нужный сервер легко найти. Серверы, где MTA шлёт письма в обход гейта, страница показала бы отдельной строкой — в примере таких нет. После установки гейта сервер ведут дальше по шагам блока «Путь до отправки»: набор, годные адреса, запись на узел.

MTA-Hub: Узлы без гейта — Отправляют напрямую, со своих адресовУвеличить
Экран 05 · Узлы без гейта. Пример из интерфейса MTA-Hub.
  • Строка сервера — имя и адрес: cl-01, lab-01, mq-01 … tx-02.
  • Поставить гейт — ставит и запускает службу только на выбранном сервере, после подтверждения.
  • Настроить — ведёт на страницу сервера.
  • Подпись внизу — установка кладёт один файл и разрешает ему принимать соединения только с адреса своего узла.

Серверы, где MTA отправляет письма в обход гейта, страница показала бы отдельной строкой — в примере таких нет.

06

Почему гейт пускает только свой узел

Главный риск модуля

Блок о главном риске модуля. У PROXY protocol нет пароля: кто добрался до порта гейта, получил арендованные адреса для чего угодно, а отвечать будет их владелец. Поэтому гейт принимает соединения только с адреса своего сервера и 127.0.0.1, и экран показывает это проверкой, а не обещанием. По обоим гейтам видно, какие источники разрешены и что файл таблицы с паролями прокси закрыт правами 640 root:hubgate. Если в строке источников только адрес сервера и 127.0.0.1, чужое подключение получит разрыв. Файрвол сервера Хаб не настраивает: порт виден из сети, а сколько чужих подключений отбито, считает плитка «Отбито чужих» в карточке гейта.

MTA-Hub: Почему гейт пускает только свой узел — Главный риск модуляУвеличить
Экран 06 · Почему гейт пускает только свой узел. Пример из интерфейса MTA-Hub.
  • Красный блок — кто дотянулся до порта гейта, получил арендованные адреса для чего угодно, а отвечать будет их владелец.
  • Разрешённые источники — у mta-01 — 192.0.2.11 и 127.0.0.1, у mta-02 — 192.0.2.12 и 127.0.0.1.
  • Права на файл таблицы — 640 root:hubgate на обоих серверах.

Файрвол сервера Хаб не настраивает: порт виден из сети, сканеры до него доходят, и не пускает их только список источников.

06 / Вопросы о гейтах

Частые вопросы о шлюзах прокси.

Коротко о том, зачем нужен гейт, где он стоит, что такое ярлык и почему порт гейта не открыт для всех.

Гейт на сервере mta-01
MTA-Hub: Гейт на mta-01 — кнопки, счётчики и таблица адресовУвеличить

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

Зачем нужен гейт, если прокси уже есть?

PowerMTA и MailerQ не умеют слать через SOCKS5 с логином и паролем, а арендованные прокси выдаются именно так. Гейт принимает соединение от MTA по PROXY protocol и открывает туннель через нужный прокси.

Идёт ли почта через Хаб?

Нет. Гейт стоит на самом сервере отправки, рядом с MTA. Хаб только опрашивает гейт и записывает на него адреса.

Что такое ярлык?

Адрес, которым MTA просит гейт представиться: PowerMTA получает его в vMTA, MailerQ — в строке прокси своей базы. Гейт по ярлыку выбирает прокси. Обычно ярлык равен выходному адресу прокси.

Что делать, если гейт знает не все адреса?

Нажать «Записать на узел»: адреса и настройки набора заново уйдут на сервер. Каких адресов не хватает, видно по именам.

Чем «Перечитать таблицу» отличается от «Перезапустить»?

«Перечитать таблицу» просит гейт заново прочитать уже выгруженный файл, туннели не рвутся. «Перезапустить» поднимает службу заново и обрывает открытые туннели.

Как обновить гейт?

Если рядом с версией стоит пометка «есть обновление», нажмите «Переустановить»: Хаб положит новый файл службы из своего комплекта и перезапустит её. Входить на сервер не нужно.

Может ли кто-то чужой подключиться к гейту?

Гейт пускает только адрес своего сервера и 127.0.0.1. Чужое подключение получает разрыв, а плитка «Отбито чужих» считает такие попытки.

Как поставить гейт на новый сервер?

В блоке «Узлы без гейта» нажать «Поставить гейт» у нужного сервера. Служба ставится и запускается только на нём, после подтверждения.

07 / Следующий шаг

Проверьте прокси перед отправкой.

Гейт ведёт письма через прокси, но годится ли сам прокси для почты, решают проверки: отвечает ли он, на каком протоколе говорит и открыт ли порт 25.

Какие адреса гейт должен знать, задаётся в наборах, а весь маршрут — от MTA через гейт до получателя — показан в обзоре модуля.

Интерфейс модуля