Hope MSG Gateway — руководство администратора
Актуально на 19 октября 2026.
Руководство описывает Hope MSG Gateway 0.2: установку, первичную настройку и ежедневную работу администратора. Разделы идут в том порядке, в каком шлюз обычно вводят в работу.
Назначение и путь письма
Hope MSG Gateway стоит на границе сети (в DMZ) между Интернетом и почтовым сервером организации. Он принимает входящую почту, проверяет её и передаёт дальше, а исходящую подписывает DKIM и доставляет по MX получателей. Кроме того, у шлюза есть собственные ящики с веб-почтой, IMAP, ActiveSync и CalDAV.
Входящее письмо проходит три рубежа. На первом шлюз решает, разговаривать ли с сервером отправителя. На втором проверяет само письмо. На третьем кладёт принятое письмо в очередь на диске и доставляет его, повторяя попытки при сбоях.

Исходящие письма сотрудников не проверяются антиспамом и SPF, DKIM, DMARC: шлюз подписывает их DKIM и отправляет через ту же очередь.
Установка и обновление
Шлюз ставится на Debian или Ubuntu одним скриптом install_msg.sh; с Windows его запускает deploy_msg.cmd из папки _deploy. Повторный запуск безопасен: скрипт обновляет бинарник, сохраняя данные и настройки.
Что делает скрипт:
- Создаёт пользователя
hopemsg— служба работает от него, без прав root. - Кладёт бинарник в
/usr/local/bin/hope-msg-gateway, данные — в/var/lib/hope-gateway/msg_local_data. - Создаёт мастер-ключ
/etc/hope-msg/master.key(только root). Им шифруются ключи сертификатов, пароли S3, VRRP, прокси и ключ бэкапов. Сохраните копию ключа: без него секреты не расшифровать. - Регистрирует службу systemd
hope-msg-gatewayи открывает порты в ufw или firewalld. - Ставит keepalived (плавающий IP) и ClamAV (если памяти не меньше 2 ГБ; отключить —
HOPE_SKIP_CLAMAV=1). - Ставит три root-помощника для действий, которые служба сама сделать не может: применение настроек keepalived, установка обновлений шлюза и обновление антивирусных баз. Каждый сам перепроверяет то, что ему передала служба.
- Сохраняет текст лицензионного соглашения в
/usr/local/share/doc/hope-msg-gateway/EULA.txt(командойhope-msg-gateway --eula).
ClamAV и keepalived не входят в поставку шлюза: скрипт ставит их из репозитория ОС, и они используются на условиях своих лицензий (GNU GPL v2).
Служба запускается без аргументов. Допустимы только --version, --eula (текст соглашения с редакцией и SHA‑256) и --help; любой другой аргумент печатает подсказку и завершает работу с кодом 2, не запуская шлюз.
Обновление из панели и номера выпусков
Выпуски нумеруются, как в HopeDC: v22, v23, … Номер виден в разделе «Настройки MSG → Обновления», в шапке панели и в ответе hope-msg-gateway --version (hope-msg-gateway 22 (semver=22.0.0)). Пакет обновления называется hope-msg-gateway_v22.gz, в манифесте номер пишется без буквы: "version": "22" (с буквой v22 тоже принимается). До v22 версии были вида 1.0.21; v22 считается новее 1.0.21, а пакет 1.0.21 на v22 распознаётся как откат на старую версию.
Манифест онлайн-источника:
{
"stable": { "version": "22", "url": "hope-msg-gateway_v22.gz", "sha256": "<SHA-256 файла .gz>", "notes": "v22: …" },
"beta": { "version": "23-beta", "url": "…", "sha256": "…", "notes": "…" }
}
Обновление с 1.0.21 до v22. Онлайн — как обычно: сервер 1.0.21 возьмёт номер 22 из манифеста. Из архива (закрытый контур) — в поле «Версия» укажите 22: сервер 1.0.21 не умеет сам читать номер выпуска из пакета и без этого поля откажет. Начиная с v22 номер определяется сам.
Номер выпуска для сборки — старший номер версии в Cargo.toml (22.0.0 → v22); при следующем выпуске его увеличивают на единицу. Обновление ставит root-помощник hope-msg-update.path (его устанавливает скрипт развёртывания): бэкап бинарника, установка, перезапуск, при неудаче — откат.
| Порт | Назначение | Как изменить |
|---|---|---|
| 25 | Приём почты из Интернета (SMTP) | MSG_SMTP_PORT в юните |
| 6443 | Админка (HTTPS) | MSG_API_PORT в юните |
| 6444 | Веб-почта, CalDAV, CardDAV, ActiveSync | Админка, «Сетевой доступ» |
| 587, 465 | Отправка из почтовых программ (только с паролем) | MSG_SUBMISSION_PORT, MSG_SMTPS_PORT |
| 143, 993 | IMAP | MSG_IMAP_PORT, MSG_IMAPS_PORT |
Первый вход в админку — https://<IP шлюза>:6443, логин admin, пароль 123456; система сразу попросит его сменить. Затем полный администратор принимает лицензионное соглашение (см. «Лицензия и лицензионное соглашение»). Дальнейшие обновления шлюза можно ставить из админки («Настройки MSG → Обновления»): онлайн или пакетом «Из архива». Если новая версия не запустится, шлюз сам вернёт прежнюю.
Первичная настройка
После установки нужно сказать шлюзу, для каких доменов он принимает почту и куда её передавать, а затем опубликовать записи DNS.
Тот же порядок ведёт панель «Начало работы» (см. ниже).
- Домены. Свой домен с ящиками на самом шлюзе — раздел «Домен», только в лицензии Enterprise. Это внутренний домен шлюза: к AD и LDAP шлюз не подключается, учётные записи и пароли ящиков свои. Домены, почта которых живёт на другом сервере (например, в Hope Mail), — маршруты в «Правила фильтрации → Relay»: домен и адрес сервера, куда передавать письма.
- Доверенные отправители. В том же разделе Relay укажите серверы организации, которым разрешено отправлять почту во внешний мир. Их письма не проверяются антиспамом и подписываются DKIM.
- Имя и IP шлюза. «Правила фильтрации → SPF, DKIM, DMARC → Отправка», шаг 1: внешнее имя (например,
mail.hopedc.ru) и постоянный внешний IP. Под этим именем шлюз представляется другим серверам. Имена вродеlocalhostилиlocaldomainкрупные почтовые службы отвергают. - Ключ DKIM. Там же, шаг 3: создайте ключ для каждого домена. Подпись включается сразу, поэтому запись в DNS публикуйте сразу же.
- Записи DNS. Шаг 2 на той же закладке показывает готовые значения для каждого домена; кнопка «Проверить» сверяет их с DNS.
| Запись | Имя | Значение (пример) | Где создать |
|---|---|---|---|
| A | mail.hopedc.ru |
203.0.113.10 |
DNS домена |
| MX | hopedc.ru |
10 mail.hopedc.ru |
DNS домена |
| PTR | 203.0.113.10 |
mail.hopedc.ru |
У провайдера, выдавшего IP |
| TXT (SPF) | hopedc.ru |
v=spf1 ip4:203.0.113.10 ~all |
DNS домена |
| TXT (DKIM) | hope202610._domainkey.hopedc.ru |
v=DKIM1; k=rsa; p=… (из админки) |
DNS домена |
| TXT (DMARC) | _dmarc.hopedc.ru |
v=DMARC1; p=none; rua=mailto:dmarc@hopedc.ru |
DNS домена |
Несколько доменов. Внешнее имя шлюза (FQDN) одно на сервер — это имя самого шлюза, а не домена: им шлюз представляется в SMTP, на него указывают MX всех доменов, ему соответствует PTR внешнего IP. Через один шлюз публикуется сколько угодно доменов: у каждого свой маршрут в Relay, свой ключ DKIM (подпись выбирается по домену в From) и свои записи SPF, DKIM, DMARC; MX всех доменов указывает на одно имя, например 10 mail.hopedc.ru. Проверка подлинности (DMARC) смотрит на домен из DKIM-подписи и конвертного отправителя, поэтому общее имя шлюза ей не мешает. Ограничение одно: собственный домен с ящиками на самом шлюзе (раздел «Домен», Enterprise) пока один; несколько — в плане релиза 1.0.
SPF начинайте с ~all, DMARC — с p=none: через 2–4 недели без жалоб переводите в -all и p=quarantine. Проверка после настройки: отправьте письмо в Gmail или Яндекс, откройте «Показать оригинал» — должно быть spf=pass dkim=pass dmarc=pass.
Путеводитель: «Начало работы» и подсказки
В панель встроен путеводитель (как в HopeDC и Hope Mail Server). Кнопки — в верхней строке рабочей области.
«Начало работы N/M» — чек-лист первичной настройки шлюза (только для полного администратора; при первом входе открывается сам). «Перейти» открывает нужный раздел.
| Пункт | Когда считается выполненным |
|---|---|
| Имя и IP шлюза | Заданы внешнее имя (FQDN) и внешний IP (SPF, DKIM, DMARC → «Отправка») |
| Куда передавать почту | Есть активный маршрут Relay или собственный домен |
| Ключ DKIM | Создан хотя бы один включённый ключ DKIM |
| STARTTLS для входящей почты | Включён STARTTLS и выбран сертификат (Сетевой доступ) |
| Антивирус | Включена проверка ClamAV |
| Копия мастер-ключа | Отмечается вручную: шлюз не может проверить, сохранена ли копия /etc/hope-msg/master.key |
| Резервное копирование | Включено расписание резервных копий |
| Учётные записи панели | Кроме admin есть ещё хотя бы одна учётка |
| Сетевой доступ | Включён белый список адресов админки и в нём есть активные записи |
| Лицензия (необязательно) | Действующая платная лицензия |
| Кластер HA (необязательно) | Кластер включён |
| Отправка в SIEM (необязательно) | Включена отправка журнала в SIEM |
Состояние пунктов проверяется по реальным настройкам при каждом открытии. Пункт, сделанный иначе, полный администратор может отметить вручную («Отметить» / «Снять отметку»); ручные отметки общие для шлюза.
Подсказки по разделам. При первом открытии раздела панель подсвечивает ключевые элементы и объясняет их. «Далее» / «Назад» (стрелки ←/→), «Пропустить» или Esc, «Не показывать подсказки» — выключить для своей учётки. Кнопка «?» повторяет подсказку текущего раздела; «Показать подсказки заново» — внизу панели «Начало работы». Подсказки видят все пользователи, но только по доступным им разделам.
Прогресс хранится на шлюзе по каждой учётной записи в onboarding.json каталога данных, зашифрованным мастер-ключом. API: GET /api/onboarding, POST /api/onboarding с action: tour_done (+id), tours_reset, tours_off, tours_on, checklist_seen, mark (+id, done; только полный администратор).
Тема оформления и язык панели
В верхней строке рабочей области, рядом с кнопками путеводителя, — переключатель темы из трёх кнопок: ☀ «Светлая тема», ☾ «Тёмная тема», 🖥 «Как в системе» (следует настройке ОС и меняется вместе с ней). Тема меняется сразу, без перезагрузки, с плавным переходом; при открытии страницы нет вспышки светлого экрана.
Тема и язык — личные настройки учётной записи. Они хранятся на сервере и восстанавливаются при входе с любого браузера и устройства; на общем компьютере у каждого администратора своя тема. Язык по-прежнему переключается внизу бокового меню. При первом входе учётки тема светлая (а не та, что выбрал предыдущий пользователь в этом браузере), а язык запоминается тот, с которым вошли. Страница входа одинакова в обеих темах.
Настройки хранятся на шлюзе в ui_prefs.json каталога данных, зашифрованном мастер-ключом. В кластере файл не реплицируется: настройки хранятся на узле, где их выбрали.
API. GET /api/prefs → { "theme": "", "lang": "" } текущей учётки (пусто — не выбирали). POST /api/prefs с полями theme (light | dark | system) и/или lang (ru | en); другие значения — ошибка 400.
Приём почты и фильтрация
Проверки идут от дешёвых к дорогим: сначала по адресу сервера, потом по адресам отправителя и получателя, и только затем по содержимому. Белый список и доверенные серверы (Relay) пропускают антиспам и SPF/DKIM/DMARC, но не антивирус.
- Подключение. Белый и чёрный списки по IP (адреса, подсети CIDR, IPv6), затем DNSBL, лимит подключений с одного IP и проверка PTR.
- Отправитель (MAIL FROM). Белый и чёрный списки по адресу и домену.
- Получатель (RCPT TO). Домен должен быть своим или из Relay; здесь же срабатывает грейлистинг.
- Текст письма (DATA). Правила «Regex контент», затем антивирус и запрещённые вложения, SPF/DKIM/DMARC и оценка спама.
Лимиты сессии: письмо до 50 МБ, до 100 получателей, строка команды до 4096 байт, простой до 5 минут, до 20 неверных команд.
SPF, DKIM, DMARC (закладка «Приём»). Каждая проверка включается отдельно. Отсутствие записи у домена отправителя — не ошибка, а ошибки DNS никогда не ведут к отказу. По умолчанию SPF fail даёт +3 балла спама, неверная подпись DKIM — +2, а письмо, не прошедшее DMARC, уходит в карантин (а не отклоняется), чтобы ничего не потерять. Проверка «Что будет с письмом от отправителя?» показывает решение шлюза до того, как партнёр пожалуется.
Антиспам считает баллы и сравнивает с тремя порогами.
| Признак | Баллы |
|---|---|
| IP в чёрном списке DNSBL (за каждую зону) | +5 |
| SPF fail, DMARC fail | +3 за каждый |
| Подмена имени отправителя | +2,5 |
| Неверная подпись DKIM | +2 |
| Нет PTR у IP отправителя | +1,5 |
| Спам-фразы в тексте | до +4 |
| Нет заголовков Date или Message-ID | +1 |
Пороги по умолчанию: от 5 — пометить (тема с [SPAM] и заголовок X-Spam-Flag: YES), от 8 — в карантин, от 15 — отклонить. Грейлистинг откладывает первое письмо от незнакомого отправителя на 5 минут и помнит прошедших 36 дней. Spamhaus не отвечает на запросы через публичные DNS (8.8.8.8 и подобные) — используйте свой DNS-сервер.
Антивирус и обновление баз
Каждое письмо проверяется ClamAV (служба clamd). Настройки — «Правила фильтрации → Антивирус → Настройки»:
- Адрес clamd —
unix:/var/run/clamav/clamd.ctlна этом сервере илиtcp:хост:3310на другом. clamd нужно около 1,5 ГБ памяти. - Найден вирус — отклонить (554) или в карантин.
- Антивирус недоступен — принимать без проверки (с записью в журнал) или временно отклонять (451), чтобы отправитель повторил позже.
- Опасные вложения — блокировка по расширению (exe, scr, js, iso и другие), в том числе «двойному» (
счёт.pdf.exe) и внутри пересланных писем. Работает и без ClamAV.
Кнопка «Проверить антивирус (EICAR)» отправляет безопасную тестовую строку: если clamd её не опознал, баз нет или они не загружены.
Обновление баз
Базами управляет сам шлюз (закладка «Обновление баз»); системный freshclam установщик отключает, чтобы два обновлятеля не мешали друг другу. Вверху закладки видны версии main, daily и bytecode, дата выпуска и версия, загруженная в clamd. База daily старше 2 дней помечается жёлтым, старше 7 — красным.
Онлайн. Шлюз запускает freshclam по расписанию (от раза в час до раза в сутки, по умолчанию каждые 4 часа) или по кнопке «Обновить сейчас». Источник:
- Серверы ClamAV (
database.clamav.net). С 2022 года они отказывают российским IP с ошибкой 403. - Зеркало — например,
https://packages.microsoft.com/clamav, или своё зеркало в локальной сети (утилита cvdupdate:cvd update, затемcvd serve). При смене источника шлюз сбрасывает паузу, которую freshclam делает после отказа 403/429. - При необходимости — HTTP-прокси с логином и паролем (пароль хранится зашифрованным).
Первая загрузка — около 250 МБ, дальше скачиваются только изменения. Журнал freshclam последнего запуска открывается прямо на закладке.
Офлайн. Для серверов без Интернета: загрузите файлы main, daily, bytecode (.cvd или .cld) или архив с ними (.tar, .tar.gz, .zip) и нажмите «Установить». Где взять файлы:
- На другом шлюзе Hope MSG с Интернетом — кнопка «Скачать базы (.tar)» на этой же закладке.
- На компьютере с Python:
pip install cvdupdate,cvd update— файлы в~/.cvdupdate/database. - На Linux с ClamAV:
freshclam, файлы из/var/lib/clamav. - С зеркала напрямую, например
https://packages.microsoft.com/clamav/daily.cvd.
Перед установкой шлюз проверяет заголовок, контрольную сумму и цифровую подпись ClamAV и сравнивает версию с установленной. Более старую версию он поставит только с флажком «Разрешить более старую версию». После установки clamd перечитывает базы без остановки проверки. Если за 3 минуты он не загрузил новую версию, шлюз сам вернёт прежние базы. Все операции попадают в «Историю обновлений» и в журнал аудита.
Если clamd работает на другом сервере, закладка показывает только загруженную версию: базы обновляются на том сервере.
Отправка и очередь доставки
Каждое принятое письмо сначала ложится в очередь на диске (msg_local_data/queue), поэтому сбой сервера получателя или перезапуск шлюза не теряет почту. Доставка идёт в 8 потоков.
- Повторы. Временная ошибка (код 4xx, нет связи) — повтор через 1, 5, 15, 30 минут, затем 1, 2, 4 и 8 часов, всего до 5 суток.
- Отказ. Постоянная ошибка (5xx, домен не существует) или истечение 5 суток — отправитель получает отчёт о недоставке.
- Раздел «Очередь доставки» показывает письма в ожидании с причиной последней неудачи и историю. Письмо можно отправить повторно сразу (одно или все) или удалить.
- DKIM-подпись. Подписываются письма из веб-почты, почтовых программ (587/465 с паролем) и доверенных серверов Relay, если домен в заголовке From совпадает с доменом ключа. Почта из Интернета не подписывается.
- Квоты. Письмо в переполненный ящик шлюза не принимается; отправитель получает отказ.
Многие провайдеры закрывают исходящий порт 25. Если письма висят в очереди с ошибкой соединения со всеми получателями сразу, попросите провайдера его открыть.
Карантин, журнал и SIEM
Карантин хранит письма, задержанные антивирусом, антиспамом, DMARC или правилами Regex, с причиной задержки. «Выпустить» кладёт письмо в очередь доставки и показывает результат; «Удалить» удаляет его безвозвратно. Чтобы партнёр с неверными записями DNS не попадал туда снова, добавьте его в белый список.
Жалобы пользователей на спам — вторая вкладка карантина. Сотрудник ящика шлюза жалуется кнопкой «Это спам» в веб-почте или переносом письма в папку «Спам» из Outlook, Thunderbird (IMAP) или с телефона (ActiveSync). Письмо уходит в «Спам», отправитель — в личный список блокировки сотрудника (его следующие письма этому сотруднику сразу попадают в «Спам»; список виден в «Настройках» веб-почты, «Не спам» снимает блокировку и отзывает жалобу). Жалоба попадает на вкладку: одна строка на отправителя, счётчик сотрудников, кто и когда пожаловался, пример письма.
- Порог. Когда пожаловались N разных сотрудников (по умолчанию 3), отправитель автоматически попадает в чёрный список «Списков доступа» (тип «email», комментарий «Жалобы на спам…») и отклоняется при приёме кодом 550. Порог и автоблокировка настраиваются на вкладке; права — «Карантин» (просмотр/изменение).
- Решение администратора. «Заблокировать» — в чёрный список сразу; «Не спам» — жалоба закрыта, блокировка, поставленная по жалобам, снимается из чёрного списка.
- Точный адрес сильнее домена. Блокируется адрес (spammer@gmail.com), а не домен. Запись «email» в чёрном списке теперь срабатывает, даже если домен отправителя в белом списке (например доверенный gmail.com); явная запись «email» в белом списке по-прежнему главнее. Белый список по IP клиента, как и раньше, отключает проверки отправителя.
- Внутренние адреса (собственный домен шлюза) автоматически не блокируются.
- При доставке в ящик шлюз добавляет
Return-Pathс конвертным отправителем — по нему ведутся жалобы. Письма, помеченные антиспамом (X-Spam-Flag: YES), доставляются в ящики шлюза сразу в «Спам»; правила ящика и автоответ к письмам в «Спаме» не применяются.
Жалобы от Hope Mail Server. Если почтовые ящики живут в Hope Mail за шлюзом, их жалобы тоже могут учитываться на шлюзе. На вкладке «Жалобы пользователей» нажмите «Создать ключ» (ключ показывается один раз), в Hope Mail откройте «Настройки сервера → Шлюз MSG»: адрес https://<шлюз>:6443, ключ в поле «Ключ интеграции», «Получить и закрепить» для самоподписанного сертификата, флажок «Передавать жалобы на спам», «Проверить соединение». Жалобы Hope Mail отмечены источником («Hope Mail <имя сервера>») и считаются в пороге вместе с жалобами ящиков шлюза, «Не спам» в Hope Mail отзывает жалобу. Домены из Relay считаются своими и автоматически не блокируются. Приём идёт по POST /api/integration/complaint с ключом в Authorization: Bearer; если включён белый список IP для API («Сетевой доступ»), добавьте туда адрес Hope Mail. «Новый ключ» заменяет прежний, «Отозвать» отключает приём.
Ответ на HTML-письма в веб-почте сохраняет оформление: цитата вставляется как в Gmail и Outlook («дата, отправитель пишет:» и исходное письмо с полосой слева), ответ и пересылка уходят в HTML, черновики сохраняют форматирование. Из цитаты удаляются скрипты, обработчики событий, стили страницы и формы.
Журнал аудита записывает входы и выходы администраторов, каждое изменение настроек (кто, что, результат), события антивируса, антиспама и очереди. Он хранится в msg_local_data/audit/audit.jsonl: до 5 файлов по 20 МБ, старые удаляются автоматически.
SIEM («Настройки MSG → SIEM») пересылает те же события в вашу систему мониторинга:
- формат — CEF, syslog (RFC 5424) или JSON;
- транспорт — UDP или TCP, адрес и порт приёмника;
- по желанию — события почтового потока (каждое принятое и отклонённое письмо), а не только административные.
Кнопка «Тестовое сообщение» передаёт пробное событие; рядом показан пример события в выбранном формате. Журнал можно выгрузить в CSV.
Кластер, безопасность и резервные копии
Кластер. Два шлюза делят плавающий IP через keepalived (VRRP): если на активном узле перестал отвечать порт SMTP, адрес переезжает на второй. Настройки — «Настройки MSG → Кластер»: роль (MASTER или BACKUP), сетевой интерфейс, номер группы VRRP, приоритет, плавающий IP и пароль (кнопка генерирует случайный; на обоих узлах он должен совпадать). Очередь, ящики и антивирусные базы у каждого узла свои: письма из очереди отказавшего узла уйдут, когда он вернётся.
Безопасность.
- Служба работает без прав root; файлы данных создаются с правами 0600.
- Секреты в настройках зашифрованы AES-256-GCM ключом
/etc/hope-msg/master.key; сам ключ лежит вне каталога данных, поэтому копия каталога секреты не раскрывает. - Доступ администраторов разграничен ролями: для каждого раздела — право на просмотр или изменение («Настройки MSG → Роли и права»).
- Доступ к панели открывается после принятия лицензионного соглашения (см. ниже).
Белые списки IP панели («Настройки MSG → Сетевой доступ», вкладки «Доступ к Панели (UI)» и «Доступ к API»). Оба списка действуют на весь порт админки 6443: запрос пропускается, если адрес клиента есть хотя бы в одном включённом списке. Поэтому если включён только список API, в нём должны быть и адреса администраторов, и адрес Hope Mail Server (жалобы на спам). Запись — адрес (192.0.2.10, 2001:db8::1), подсеть CIDR (192.0.2.0/24) или маска (192.0.2.*).
- Тумблер и список — черновик: добавлять, выключать и удалять записи можно и при выключенном ограничении. Действовать изменения начинают после кнопки «Сохранить» под списком; «Отмена» возвращает сохранённое состояние.
- Под списком показан ваш адрес, каким его видит шлюз, и кнопка «Добавить мой адрес», если его нет в списке.
- Защита от самоблокировки. Шлюз не сохраняет изменение, после которого адрес администратора, нажавшего «Сохранить», потеряет доступ: включить ограничение без своего адреса или удалить и выключить запись, по которой вы сейчас работаете, нельзя.
- Доступ с самого сервера (127.0.0.1, ::1) разрешён всегда. Если доступ всё же потерян (например, сменился ваш внешний адрес), зайдите через SSH‑туннель:
ssh -L 6443:127.0.0.1:6443 <шлюз>, затем откройтеhttps://127.0.0.1:6443/и исправьте список. - Если перед шлюзом стоит обратный прокси (nginx, HAProxy, балансировщик), он обязан передавать адрес клиента. Для nginx — во всех
location, ведущих на 6443:proxy_set_header X-Real-IP $remote_addr;иproxy_set_header X-Forwarded-For $remote_addr;(именно$remote_addr, а не$proxy_add_x_forwarded_for); для HAProxy —option forwardfor. Без этого все запросы через прокси выглядят как пришедшие с самого сервера (127.0.0.1), белый список их пропускает и фактически не работает. - Заголовки
X-Real-IP/X-Forwarded-Forучитываются только от доверенных прокси изMSG_TRUSTED_PROXIES(по умолчанию 127.0.0.1 и ::1; адреса или подсети через запятую). Прокси на другой машине добавьте туда — от остальных адресов заголовки игнорируются, чтобы клиент не мог подставить чужой адрес. - Проверка. Откройте «Сетевой доступ» с рабочего места: строка «Ваш адрес» под списком должна показывать адрес рабочего места, а не
127.0.0.1и не адрес прокси.
Лицензия и лицензионное соглашение
Редакции. Без ключа шлюз работает в редакции Free: приём, фильтрация и пересылка почты, антиспам, антивирус, SPF/DKIM/DMARC, карантин и очередь. Платная лицензия (Standard) добавляет кластер (HA), Enterprise — собственный почтовый домен с ящиками. Ключ привязан к серверу (идентификатор машины и установки); при переносе на другой сервер или переустановке ОС нужен новый ключ. Шлюз не обращается к вендору при активации и проверке ключа: отпечаток передаётся вендору файлом .req из раздела «Лицензия».
Окончание срока. Удалённого отключения нет. Когда срок истёк, действует редакция Free: почта принимается и доставляется, уже созданные собственные домены, ящики и настроенный кластер продолжают работать, но изменить их нельзя. На продление лицензионное соглашение даёт 30 дней (п. 3.7). Раздел «Лицензия» показывает предупреждение.
Лицензионное соглашение (EULA). Текст встроен в шлюз. При первом входе в панель (и после новой редакции) вместо разделов открывается окно с текстом, галочкой «Я прочитал(а)… принимаю от имени организации… подтверждаю полномочия» и кнопками «Принимаю» / «Не принимаю».
- Принять может только полный администратор (роль с правом
*); остальные видят «Соглашение должен принять полный администратор панели». - До принятия API панели отвечает
428("code": "eula_required"), кроме входа и выхода, проверки прав, самого соглашения и приёма жалоб от Hope Mail Server. Почта работает всегда: SMTP, веб‑почта, IMAP, ActiveSync, CalDAV/CardDAV, очередь, антиспам и антивирус от принятия не зависят. - Факт принятия — редакция, SHA‑256 текста, учётная запись, IP, браузер и время — сохраняется в
eula_acceptance.jsonкаталога данных, зашифрованным мастер‑ключом, и в журнал аудита. У каждого узла кластера своя запись. - В разделе «Лицензия» — карточка: кто и когда принял, кнопка «Открыть соглашение». Публичная страница с текстом —
https://<IP шлюза>:6443/eula, ссылка на неё есть на странице входа. В английском интерфейсе — пометка, что юридически действует русский текст. - Для автоматизированных стендов:
HOPE_MSG_EULA_ACCEPTED=1в юните.
Документы «Лицензионное соглашение» (EULA.html) и «Компоненты третьих лиц» (THIRD_PARTY.html, THIRD_PARTY_NOTICES.txt) — в комплекте документации; перечень компонентов в шлюз не встраивается и предоставляется по запросу.
Резервные копии. Раздел «Резервное копирование» создаёт архив настроек и почты вручную или по расписанию, по желанию зашифрованный паролем. В архив секреты попадают расшифрованными, чтобы его можно было восстановить на другом сервере с другим мастер-ключом, — поэтому задавайте пароль архива и храните его отдельно.
Диагностика
Большинство проблем видно в админке: «Трафик шлюза» (журнал соединений), «Очередь доставки» и история обновления баз. На сервере пригодятся команды:
journalctl -u hope-msg-gateway -n 100 # журнал службы шлюза
journalctl -t hope-msg-avdb -n 50 # помощник обновления антивирусных баз
systemctl status hope-msg-avdb.path hope-msg-update.path hope-msg-keepalived.path
cat /run/hope-msg-avdb/status.json # итог последнего обновления баз
ss -ltn | grep -E ':(25|6443|6444)\b' # слушают ли порты
| Симптом | Вероятная причина | Что сделать |
|---|---|---|
| Почта из Интернета не приходит | Нет MX или A, закрыт порт 25 на внешнем межсетевом экране | «Отправка» → «Проверить» у домена; проверить проброс порта 25 |
| Письма копятся в очереди со всеми получателями | Провайдер закрыл исходящий порт 25 | Попросить провайдера открыть, затем «Повторить все» в очереди |
| Gmail или Яндекс отклоняют или кладут в спам | Нет PTR, неверный SPF или DKIM, имя шлюза вида localdomain | «Отправка», шаги 1–3: все строки должны быть зелёными |
| Письма партнёра уходят в карантин по DMARC | У партнёра неверные записи DNS | Выпустить из карантина, добавить его в белый список, сообщить его администратору |
| Базы антивируса помечены красным, в истории ошибка 403 | Официальные серверы ClamAV недоступны из России | Выбрать зеркало или обновить из файлов |
| «Помощник обновления баз не отвечает» | Не запущен hope-msg-avdb.path |
Переустановить шлюз скриптом install_msg.sh |
| «clamd недоступен» в журнале | Службе не хватило памяти или нет баз | systemctl status clamav-daemon; при нехватке памяти — clamd на отдельном сервере (tcp:хост:3310) |
| Панель отвечает «Доступ запрещён для IP: …» | Адреса нет во включённом белом списке | SSH‑туннель на 127.0.0.1:6443, добавить адрес в «Сетевой доступ» и нажать «Сохранить» |
| Белый список включён, но через прокси панель открывается с любого адреса; «Ваш адрес: 127.0.0.1» | Прокси не передаёт адрес клиента | Добавить в прокси X-Real-IP $remote_addr и X-Forwarded-For $remote_addr; прокси на другой машине — в MSG_TRUSTED_PROXIES |
| «Изменение не применено: после него ваш адрес … потеряет доступ» | Защита от самоблокировки | Сначала добавить свой адрес или подсеть в список, затем включить ограничение |
| Изменения DNS не видны проверке | Запись ещё не разошлась (TTL) | Подождать от нескольких минут до нескольких часов |