Одновременное подключение нескольких компонентов Receiver/Sender

Существует возможность подключать к drweb-maild одновременно несколько компонентов Receiver и/или Sender. Это может понадобиться в следующих случаях:

для одновременной работы с несколькими MTA или SMTP/LMTP-прокси;

для организации разной настройки каждой пары Receiver/Sender (что позволит, к примеру, прослушивать разные интерфейсы);

для получения возможности перенаправлять сообщения из одних MTA в другие (т.е. для маршрутизации).

warning

Обратите внимание, что роль компонентов Sender и Receiver могут выполнять различные исполняемые модули (например, в качестве Receiver может выступать не только модуль drweb-receiver, но также drweb-milter, drweb-cgp-receiver, в зависимости от того, какой способ интеграции с MTA реализован при установке и настройке Dr.Web MailD).

Полный перечень модулей, и роли (Sender, Receiver), которые они исполняют с точки зрения Dr.Web MailD, перечислен в разделе Используемые модули.

В данном разделе предполагается, что в роли компонента Sender запускается модуль drweb-sender, а в роли компонента Receiverdrweb-receiver.

Возможность запуска одновременно нескольких компонентов осуществляется следующим образом:

каждому компоненту необходимо присвоить уникальный идентификатор (т.е. у каждого элемента из группы компонентов Receiver и группы компонентов Sender будет уникальный ID, при этом ID какого-либо Receiver должен совпадать с ID какого-либо Sender);

затем каждому компоненту необходимо сообщить, откуда ему получать свои настройки;

потом каждому письму, принятому компонентом Receiver, присваивается в качестве тега уникальный идентификатор данного компонента;

после обработки сообщения drweb-maild ищет доступный компонент Sender с тем же идентификатором. Если он не найден, то письмо будет отправлено в Sender, заданный по умолчанию (это компонент Sender, у которого уникальный идентификатор не задан – такой Sender может быть только один), который должен быть всегда доступен.

список доступных компонентов Sender инициализируется при старте и обновляется при получении сигнала SIGHUP;

проблема маршрутизации писем, сгенерированных в drweb-notifier, решается при помощи настройки параметра MsgIdMap секции [Notifier] конфигурационного файла Dr.Web MailD. Этот параметр позволяет определять, в какой Sender требуется отправлять отчеты в ответ на письма от заданных компонентов Receiver.

Уникальный идентификатор задается для Receiver и Sender через параметр командной строки --unique-id. При запуске с заданным параметром компоненты создают в каталоге %var_dir/msgs/{in|out} набор подкаталогов для своей очереди писем, а в каталоге %var_dir/ipc/ для Sender создается специальный UNIX-сокет (название каталога и UNIX-сокета определяются на основе заданного уникального идентификатора).

Когда запускается второй экземпляр одного и того же компонента (например, второй экземпляр Receiver), то необходимо выполнить дополнительную настройку компонента, т.е. определить, как вторая копия будет получать свою уникальную конфигурацию. Для получения конфигурации можно использовать два способа:

создавать новую копию конфигурационного файла;

модифицировать существующий конфигурационный файл.

Последний вариант более прост, но менее гибок.

Чтобы модифицировать существующий *.conf файл, необходимо:

создать у Dr.Web Agent новый .amc файл для Dr.Web MailD и добавить в него информацию о новой копии компонента. Имя файла может быть произвольным.

Пример:

Application "MAILD"

 

id

40

ConfFile

"/etc/drweb/maild_smtp.conf"

Components

 

drweb-sender2

General, Logging, Sender2

 drweb-receiver2

General, Logging, /Maild/ProtectedNetworks, /Maild/ProtectedDomains,\

/Maild/IncludeSubdomains, SASL, Receiver2

drweb-sender3

General, Logging, Sender3

 drweb-receiver3

General, Logging, /Maild/ProtectedNetworks, /Maild/ProtectedDomains,\

/Maild/IncludeSubdomains, SASL, Receiver3

drweb-sender4

General, Logging, Sender4

 drweb-receiver4

General, Logging, /Maild/ProtectedNetworks, /Maild/ProtectedDomains,\

/Maild/IncludeSubdomains, SASL, Receiver4

drweb-sender5

General, Logging, Sender5

 drweb-receiver5

General, Logging, /Maild/ProtectedNetworks, /Maild/ProtectedDomains,\

/Maild/IncludeSubdomains, SASL, Receiver5

Здесь drweb-receiver* и drweb-sender* – новые названия компонентов, под которым они будут известны Dr.Web Agent, а Receiver* и Sender* – новые названия уникальных копий соответствующих секций в конфигурационном файле.

Остальной список параметров надо скопировать из настройки оригинального компонента. Подробнее о синтаксисе *.amc файлов можно почитать в описании компонента Dr.Web Agent.

сделать копию основной секции настроек компонента в *.conf файл, переименовать ее, указав название, которое было задано на предыдущем этапе, и изменить остальные настройки в новой секции для второго компонента по своему усмотрению;

запустить/перезапустить модуль компонента Dr.Web Agent, чтобы он прочитал новую информацию;

запустить модуль новой копии компонента, указав ему дополнительно параметры командной строки --unique-id, --component, --section.

Пример:

drweb-receiver --unique-id id2 --component drweb-receiver2 --section Receiver2
drweb-sender --unique-id id2 --component drweb-sender2 --section Sender2

Создание новой копии конфигурационного файла

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

Для его реализации потребуется:

создать копию оригинального основного файла конфигурации Dr.Web MailD и настроить в нем параметры по своему усмотрению (обратите внимание, что при этом никаких секций переименовывать не требуется!);

создать новый файл .amc, в который надо включить только информацию по новому компоненту(-ам). Также в нем надо указать путь к конфигурационному файлу Dr.Web MailD, созданному на предыдущем шаге;

запустить/перезапустить модуль компонента Dr.Web Agent, чтобы он прочитал новую информацию;

запустить модуль новой копии компонента, указав ему дополнительно параметры командной строки --unique-id, --component.

Пример:

drweb-receiver --unique-id id2 --component drweb-receiver2
drweb-sender --unique-id id2 --component drweb-sender2

Для обоих способов запуска можно настроить Dr.Web Monitor на использование новых компонентов. Для этого в *.mmc файл компонента Dr.Web Monitor для Dr.Web MailD необходимо добавить строки по запуску новых компонентов.

Подробнее о синтаксисе файлов .mmc можно почитать в описании компонента Dr.Web Monitor.