SMTP-форвардинг из CommuniGate Pro
{{ВИДЕО}}
Эта инструкция настраивает передачу копий писем из CommuniGate Pro в Клавдий по SMTP. CommuniGate Pro оставляет обычную доставку писем без изменений и дополнительно передаёт копию архиватору через правило обработки почты и скрипт resubmitter.pl.
Если Клавдий должен сам забирать сообщения из CommuniGate Pro по IMAP, используйте источник IMAP вместо этой схемы.
Как работает схема
- Письмо попадает в очередь CommuniGate Pro и подпадает под правило
resubmitter. - Правило вызывает внешний фильтр
resubmitter.pl. - Скрипт меняет только SMTP-конверт: адрес получателя
user@domainпреобразуется вuser%domain@<адрес-Клавдия>, после чего файл помещается вSubmitted/. - Движок доставки CommuniGate Pro отправляет файл по маршруту Router на SMTP-слушатель Клавдия.
- Клавдий принимает письмо, а задача
smtp_collectionприменяет правила хранения.
Скрипт resubmitter.pl сам не устанавливает сетевое соединение с Клавдием. Порт и конечный адрес задаются в Router CommuniGate Pro.
Исходные адреса письма
Скрипт изменяет только SMTP-команду RCPT TO:. Заголовки From:, To: и Cc: остаются без изменений, поэтому Клавдий сохраняет исходных отправителя и получателя, например user1@cgp.lab → user2@cgp.lab. Скрипт также добавляет исходные адреса в Return-Path: и Envelope-To:.
Правила хранения по отправителю и получателю используют адреса из заголовков сообщения, а не изменённый SMTP-конверт.
Перед началом
Подготовьте:
- работающий CommuniGate Pro с доменом и почтовыми ящиками;
- настроенный Клавдий минимум по Быстрому старту, включая группу хранилищ и правило хранения;
- сетевую доступность SMTP-порта Клавдия с сервера CommuniGate Pro.
Полезные материалы производителя:
- документация CommuniGate Pro;
- установка на Linux;
- правила обработки почты;
- внешние фильтры (Helpers);
-
SMTP и Router, включая синтаксис
host.port._relay.
Шаг 1. Настройте SMTP-приёмник Клавдия
- Откройте [Сбор почты] → [SMTP-сервер].
- В блоке [Глобальные настройки SMTP] задайте:
-
[Порт] — порт приёма. Если CommuniGate Pro и Клавдий работают на одном хосте и порт
25уже занят, можно использовать8025; если конфликта нет —25; - [Шифрование] — [Без TLS (LAN/MX)] для тестового стенда или [STARTTLS] для рабочей эксплуатации;
-
[Имя сервера (hostname)] — например
klvd.local.
-
[Порт] — порт приёма. Если CommuniGate Pro и Клавдий работают на одном хосте и порт
- Нажмите [Сохранить настройки].
- Откройте [Кластер] → [Узлы], выберите узел с ролью SMTP и настройте [Размещение слушателей]:
-
[SMTP IP] — адрес приёма, например
0.0.0.0или конкретный IP; -
[Сети SMTP] — сеть CommuniGate Pro в CIDR, например
127.0.0.1/32при размещении на одном хосте или192.168.1.0/24в общей сети. Из доверенных сетей письма принимаются без SMTP-AUTH.
-
[SMTP IP] — адрес приёма, например
- Убедитесь, что роль SMTP включена.
Сохраните адрес Клавдия и порт SMTP-слушателя: они потребуются при настройке скрипта и Router.
Шаг 2. Создайте правило хранения для SMTP
Клавдий сохраняет письма только при наличии подходящего правила хранения. Письмо, принятое по SMTP без подходящего правила, будет пропущено и зафиксировано в журнале.
- Откройте [Хранение] → [Правила хранения].
- Создайте правило с условием [Источник] = [Сбор из потока SMTP]. Источник создаётся автоматически после первого принятого SMTP-письма; при необходимости его можно создать заранее в разделе [Источники].
- Задайте срок хранения и категорию, если она требуется.
Шаг 3. Установите resubmitter.pl
Скрипт размещается в каталоге данных CommuniGate Pro, обычно /var/CommuniGate.
-
Сохраните resubmitter.pl в
/var/CommuniGate/resubmitter.pl. -
В блоке
BEGIN CONFIGукажите адрес Клавдия:my @ScannerAddresses = ( '127.0.0.1', );Для нескольких экземпляров Клавдия можно указать несколько адресов для циклического распределения (round-robin(!)). Адрес должен быть доступен с сервера CommuniGate Pro.
-
Сделайте файл исполняемым:
chmod +x /var/CommuniGate/resubmitter.pl -
Проверьте наличие Perl:
perl -v
Если CommuniGate Pro работает в Docker, скрипт можно добавить в образ, например:
COPY resubmitter.pl /opt/CommuniGate/resubmitter.pl
Другой вариант — примонтировать файл в /var/CommuniGate/ как том Docker. Адрес Клавдия при сборке собственного образа можно подставить в конфигурацию скрипта на этапе сборки.
Шаг 4. Зарегистрируйте Helper(!) в CommuniGate Pro
-
Откройте WebAdmin CommuniGate Pro, по умолчанию
http://<сервер-CGP>:8010, и войдите какpostmaster. -
Перейдите в [Установки] → [Общее] → [Помощники (Helpers)].
-
В свободной строке таблицы [Фильтрация данных] укажите:
Поле Значение Имя программы resubmitterУровень журнала Подробностидля настройки, затемПроблемыПуть к программе /var/CommuniGate/resubmitter.plТайм-аут 60 секАвторестарт 1 сек -
Включите
resubmitterи нажмите [Модифицировать].
Успешный запуск подтверждается строкой resubmitter.pl started в журнале. Ошибка запуска обычно означает неверный путь или недостаточные права.
Шаг 5. Настройте Router(!)
Если Клавдий принимает SMTP не на стандартном порту 25, Router CommuniGate Pro должен явно направлять сообщения на нужный порт.
-
Откройте [Установки] → [Почта] → [Маршрутизатор].
-
Добавьте правило в формате
адрес = хост.порт._relay, например:127.0.0.1 = 127.0.0.1.8025._relayЛевая часть должна совпадать с адресом, который
resubmitter.plподставляет в SMTP-конверт. Правая часть указывает адрес и порт SMTP-слушателя Клавдия. -
Если используется стандартный порт
25, отдельное правило не обязательно; при необходимости его можно задать явно как127.0.0.1 = 127.0.0.1._relay. -
Нажмите [Обновить конфигурацию] или [Модифицировать].
Запись host.port._relay отключает MX-разрешение и направляет сообщение непосредственно на host:port.
Шаг 6. Создайте правило обработки почты
Правило вызывает внешний фильтр resubmitter для локальных писем и исключает повторную обработку сообщений, уже направленных в Клавдий.
-
Откройте [Установки] → [Почта] → [Правила].
-
Создайте общесерверное правило
resubmitterи нажмите [Изменить]. -
Задайте условия:
Данные Операция Параметр Любой Маршрут is LOCAL*Submit Address not in SMTP[<адрес-Клавдия>*]Submit Address is not PIPE*LOCAL*выбирает письма для локальных ящиков, а условие поSubmit Addressпредотвращает повторную отправку письма в Клавдий. -
Задайте действие:
Действие Параметр Внешний Фильтр resubmitter -
Сохраните и включите правило. Оно должно находиться выше правил, которые прекращают дальнейшую обработку.
Шаг 7. Проверьте передачу
- Отправьте через CommuniGate Pro письмо
user1@<домен-CGP>→user2@<домен-CGP>с темойcgp-klvd-push-001. - Проверьте
SystemLogs/<год>-<месяц>-<день>_resubmitter.log. Для сообщения должна появиться строкаdone ... transfered. - В Клавдии проверьте:
- [Клавдий] → [Обзор] → [Системные метрики]: счётчик SMTP-приёма увеличился на 1;
- в [Задачах] задача
smtp_collectionзавершилась без ошибки; - письмо
cgp-klvd-push-001появилось в архиве, если правило хранения из шага 2 подходит.
- Если письмо принято, но не сохранено, проверьте журнал на запись о пропуске и скорректируйте правило хранения.
Диагностика типовых проблем
| Симптом | Вероятная причина | Что сделать |
|---|---|---|
resubmitter.log пуст |
правило CommuniGate Pro не срабатывает | проверить LOCAL*, Submit Address и временно повысить уровень журнала «Установка в Очередь» до «Подробности» |
REJECTED can't create ...tmp |
нет прав на запись в Submitted/ |
проверить права /var/CommuniGate/Submitted/; владельцем должен быть процесс CommuniGate Pro |
.sub создан, но письмо не приходит в Клавдий |
ошибка Router, порта или сети | проверить правило Router и TCP-доступ к <адрес-Клавдия>:<порт> |
| SMTP-письмо принято, но отсутствует в архиве | нет подходящего правила хранения | создать или исправить правило для SMTP-источника и проверить журнал на skip |
| письмо повторно циркулирует между CGP и Клавдием | отсутствует исключение not in SMTP[<адрес-Клавдия>*] |
добавить или исправить условие правила |
bind() failed на порту 25 |
порт занят другим MTA | перенести SMTP-слушатель Клавдия на другой порт и обновить Router |
При необходимости используйте диагностику и справочник кодов ошибок; SMTP-ошибки имеют префикс #ERROR_KLVD_SMTP_*.
См. также
- Сервер SMTP — встроенный приёмник Клавдия (настройка порта, TLS, trusted networks).
- Источники писем — IMAP/EWS как альтернатива форвардингу.
- Правила хранения — без правила SMTP-письма не сохраняются.
-
Коды ошибок — расшифровка
#ERROR_KLVD_SMTP_*. - HTTP API и Swagger — программное управление Клавдием.
Навигация по книге
- Следующая статья: Доступ к HTTP API и Swagger