Интеграция с MTA в качестве фильтра

На главную  Назад  Вперед

Этот вариант интеграции предполагает подключение Dr.Web MailD к почтовому серверу напрямую, в качестве внешнего фильтра проверки писем. Можно подключиться к любому почтовому серверу (например, Exim, Sendmail, Postfix), использующему интерфейсы Milter, Spamd, Rspamd.

1) Настройка параметров Dr.Web MailD

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

1.1) Общие параметры работы Dr.Web MailD при проверке писем

При помощи параметров TemplateContacts и ReportLanguages определите параметры генерации писем при перепаковке сообщений с угрозами и/или спамом. В значении параметра RepackPassword укажите способ генерации паролей для защищенных архивов с угрозами, которые будут добавляться в письма при перепаковке (значение None, заданное по умолчанию, позволяет отказаться от защиты архивов при помощи пароля, что допустимо, но не рекомендуется).

1.2) Параметры интеграции Dr.Web MailD с MTA

Для начала необходимо определить используемый интерфейс сопряжения (Milter, Spamd или Rspamd), и задать параметры подключения MTA и параметры проверки писем, получаемых на проверку через выбранный интерфейс. Все параметры Dr.Web MailD, регулирующие его сопряжение с MTA через некоторый интерфейс, имеют соответствующий префикс в своем имени:

Milter* – для интерфейса Milter.

Spamd* – для интерфейса Spamd.

Rspamd* – для интерфейса Rspamd.

Необходимо задать значения следующих параметров (где <interface> – префикс в имени параметра, соответствующий выбранному для сопряжения с MTA интерфейсу):

1.<interface>Socket – сокет, который будет использован Dr.Web MailD для получения проверяемых писем от MTA через соответствующий интерфейс. Допускается использование UNIX-сокета или сетевого сокета.

2.Параметры сканирования писем (<interface>ScanTimeout, <interface>HeuristicAnalysis, <interface>PackerMaxLevel, <interface>ArchiveMaxLevel, <interface>MailMaxLevel, <interface>ContainerMaxLevel, <interface>MaxCompressionRatio), ограничивающие длительность и ресурсоемкость проверки писем. При отсутствии необходимости в тонкой настройке рекомендуется оставить для данных параметров значения по умолчанию.

3.<interface>BlockUnchecked – реакция Dr.Web MailD на невозможность проверки поступившего письма (превышение при проверке заданных ограничений (см. предыдущий пункт), нарушение структуры сообщения, ошибка антивирусного ядра, наличие вложенных архивов, защищенных паролем и т.п.). Если данный параметр установлен в Yes, то в случае невозможности проверки письма и/или его вложений, к MTA будет отправлено предписание отвергнуть данное письмо.

4.Для более тонкой настройки правил фильтрации сообщений электронной почты (в зависимости от условий) отредактируйте правила проверки <interface>RuleSet.

После внесения изменений в настройки следует перезапустить Dr.Web для почтовых серверов UNIX (используйте команду drweb-ctl reload). Также вы можете выполнить перезапуск демона управления конфигурацией Dr.Web ConfigD (используйте команду service drweb-configd restart).

Если для взаимодействия Dr.Web MailD с MTA используется интерфейс Spamd/Rspamd, то единственное действие, которое гарантированно может совершить Dr.Web MailD в рамках этого взаимодействия – сообщить MTA, является ли почтовое сообщение чистым или оно классифицировано как спам. То есть при нарушении почтовым сообщением любого ограничения, установленного в правилах, или при наличии в сообщении любой угрозы или иного нежелательного содержимого, в MTA передается вердикт «Почтовое сообщение является спамом». Все действия по обработке такого сообщения (например – добавление или модификация заголовков, отклонение сообщения, передача его получателю и т.п.) должны быть определены в настройках на стороне MTA. Также в этом случае не гарантируется, что Dr.Web MailD сможет вернуть в MTA модифицированное почтовое сообщение, следовательно, возможность выполнения действия типа REPACK («перепаковать» сообщение, удалив вредоносные вложения и вставив в него уведомление о наличии нежелательного содержимого) также не гарантируется.

Для возврата в MTA причины отклонения почтового сообщения через интерфейс Spamd/Rspamd используйте действие REJECT <description>. Указанный параметр <description> будет использован как значение заголовка 'Message', добавленного MTA к почтовому сообщению после сообщения результатов проверки. Кроме того, <description> может быть использован в правилах MTA для распознавания причины отвергания сообщения и применения к нему соответствующего действия, в зависимости от причины. Пример использования действия REJECT <description>:

SpamdRuleSet0 = threat_category in (KnownVirus, VirusModification, UnknownVirus) : REJECT "The message contains a THREAT"
SpamdRuleSet1 = body match (".*купи.*") : REJECT "This is a SPAM message"

2) Настройка параметров MTA

Для обеспечения взаимодействия между MTA и Dr.Web MailD требуется отредактировать конфигурацию почтового сервера с целью подключения возможности использования Dr.Web для почтовых серверов UNIX в качестве внешнего фильтра, проверяющего сообщения электронной почты, обрабатываемые MTA.

1.Указать интерфейс, используемый для взаимодействия MTA с Dr.Web MailD при проверке писем (Milter, Spamd, Rspamd).

2.Указать параметры подключения MTA к Dr.Web MailD через выбранный интерфейс (используемый сокет должен совпадать с тем, что указан в параметре <interface>Socket для соответствующего интерфейса в настройках Dr.Web MailD).

3.Настроить поведение MTA в ответ на получение через интерфейс взаимодействия результатов проверки писем.

После внесения изменений в настройки MTA следует перезапустить его.

3) Примеры настроек для некоторых MTA

Ниже приведены типовые примеры настроек для MTA Postfix, Sendmail и Exim для подключения Dr.Web MailD в качестве внешнего фильтра почтовых сообщений через интерфейсы Milter, Spamd и Rspamd.

В приведенных ниже примерах необходимо заменить значение <сокет MailD>, <IP-адрес MailD> и <порт MailD> на параметры того сокета Dr.Web MailD, который задан в настройках Dr.Web MailD, в параметре <interface>Socket, где <interface> – префикс в имени параметра, соответствующий выбранному для сопряжения с MTA интерфейсу.

Например, если планируется интегрировать Dr.Web MailD с MTA через интерфейс Milter, с использованием сетевого сокета, при этом MTA и Dr.Web MailD работают оба на локальном узле, и Dr.Web MailD прослушивает порт 12345 для соединений через Milter, то это значение необходимо указать как значение параметра MilterSocket в секции [MailD] в файле конфигурации Dr.Web для почтовых серверов UNIX. В качестве переменной <сокет MailD> в настройках MTA следует использовать значение 127.0.0.1:12345, переменной <IP-адрес MailD> – адрес 127.0.0.1, а переменной <порт MailD> – значение 12345.

В некоторых случаях в настройках MTA необходимо предварить адрес сокета для связи с Dr.Web MailD префиксом <тип> с типом используемого адреса (inet, inet6, unix).

1. Postfix

Milter:

Добавьте следующие строки в файл настроек MTA main.cf:

smtpd_milters = <тип>:<сокет MailD>
milter_content_timeout = 300s
milter_default_action = tempfail
milter_protocol = 6

Обратите внимание, что к обязательным настройкам относится только параметр smtpd_milters, остальные могут быть опущены.

2. Sendmail

Milter:

Добавьте следующую строку в файл прототипа настроек MTA sendmail.mc:

INPUT_MAIL_FILTER(`drweb-milter', `S=<сокет MailD>, F=T')

После изменения файла sendmail.mc не забудьте выполнить его преобразование в действующий файл конфигурации sendmail.cf, выполнив любую из команд:

make -C /etc/mail
sendmailconfig
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

Обратите внимание, что все вышеприведенные команды предполагают, что файлы конфигурации Sendmail располагаются в каталоге /etc/mail.

3. Exim

Spamd:

Добавьте следующие строки в файл настроек MTA exim.conf:

spamd_address = <сокет MailD>
acl_smtp_data = acl_check_data
 
acl_check_data:
warn  spam    = nobody:true
add_header = X-Spam_score: $spam_score\n\
X-Spam_score_int: $spam_score_int\n\
X-Spam_bar: $spam_bar\n\
X-Spam_report: $spam_report\n\
condition  = ${if match {$spam_report}{SPAM}}
deny  spam    = nobody:true
condition  = ${if match {$spam_report}{THREAT}}
accept

Rspamd:

Добавьте следующие строки в файл настроек MTA exim.conf:

spamd_address = <сокет MailD> variant=rspamd
acl_smtp_data = acl_check_data
 
acl_check_data:
warn  spam    = nobody:true
add_header = X-Spam_score: $spam_score\n\
X-Spam_score_int: $spam_score_int\n\
X-Spam_bar: $spam_bar\n\
X-Spam_report: $spam_report\n\
condition  = ${if match {$spam_report}{SPAM}}
deny  spam    = nobody:true
condition  = ${if match {$spam_report}{THREAT}}
accept

Указанные примеры настроек предполагают использование Exim версии 4.6 (или новее), собранного с опцией WITH_CONTENT_SCAN=yes. Кроме того, предполагается, что Dr.Web MailD вернет сообщение, содержащее слово SPAM или THREAT (т.е. должно быть применено действие REJECT <text>, и в строке <text> должно встретиться слово SPAM или слово THREAT соответственно), вследствие чего Exim применит к письму действие warn или deny (см. пример действия REJECT выше.)