Проект

Общее

Профиль

Интеграция с антивирусными и антиспамовыми системами

Choose a language: RU | EN | ZH

Table of contents

Интеграция сервера TEGU с антиспамовыми и антивирусными система возможен двумя способами:
  • Установка антивирусного и антиспамового ПО в качестве почтового релея перед почтовым сервером TEGU. Это вариант тривиальный и в документации не описывается.
  • Более предпочтительный вариант - использование протокола Milter.

Milter – это протокол, название которого образуется из двух слов Mail и Filter. Это протокол, которому MTA передает сообщение до того, как передаст его на доставку или отправку.

Какими могут быть сервера для Milter-обработки? Чаще всего агенты Milter решают следующие задачи:

  • Проверка сообщений электронной почты на спам;
  • Проверка сообщение на вирусы;
  • Фильтрация нежелательных вложений;
  • Интеграция с DLP-системами;
  • Архивирование корреспонденции;
  • Сбор и сохранение статистики;
  • Добавление дисклеймеров;
  • Изменение маршрутизации;
  • Абсолютно любая ваша функция, которая выходит за рамки штатных возможностей.

На рисунке представлена схема встраивания протокола Milter в SMTP-сессию MTA почтового сервера Tegu:

Работа по установке и настройке Milter-сервера Dr.Web Mail Security Suite состоит из двух этапов:

  1. Установка и настройка Dr.Web Mail Security Suite;
  2. Настройка Tegu.

Установка Dr.Web Mail Security Suite (для UNIX)

  1. Установите Dr.Web Mail Security Suite для UNIX согласно инструкции производителя;
  2. Включите Компонент Maild;
  3. Настройте параметры транспортного соединения между MTA и Dr.Web;
  4. Оптимизируйте Dr.Web, изучив алгоритм его работы в синхронном и асинхронном режимах (для высоконагруженных систем).

Установка drweb mail suite через репозиторий в среде Debian и интеграция с tegu по протоколу milter .

(Антиспам в стандартную лицензию не входит, он приобретается отдельно)

Получите ключ drweb.gpg

wget https://repo.drweb.com/drweb/drweb.gpg

Подключите репозиторий.

echo "deb https://repo.drweb.com/drweb/debian 11.1 non-free" > /etc/apt/sources.list.d/drweb.list

Для установки Dr.Web Mail Security Suite из репозитория выполните команды:

apt-get update && install drweb-mail-servers -y

Для входа на web страницу drweb mail suite, добавьте его ip адрес в секцию HTTPD в конфиг /etc/opt/drweb.com/drweb.ini

пример:

[HTTPD]
AdminListen = 10.199.199.137:4443

Для включения компонента maild по протоколу Milter добавьте его milter socket в секцию MailD в конфиг /etc/opt/drweb.com/drweb.in

пример:

[MailD]
ReportLanguages = en
ReportLanguages = ru
MilterSocket = 10.199.199.137:3001
MilterHook = "local dw = require ""drweb"" 

После внесения изменений в настройки чтобы перезагрузить конфигурацию Dr.Web Mail Security Suite, нужно выполнить команду:

drweb-ctl reload

Чтобы перезапустить Dr.Web Mail Security Suite, нужно перезапустить демон управления конфигурацией Dr.Web ConfigD с помощью команды:

service drweb-configd restart

логин и пароль в web интерфейс, это данные от этого хоста.

пример:

Вход в web интерфейс:

https://10.199.199.137:4443

login: root
pass:  88fkjherc

Настройка Антиспам модуля на принятие всех писем с пометкой SPAM.

По умолчанию письма, которые распознаны как спам, отклоняются - действием reject

Чтоб сохранить все письма необходимо заменить часть кода написанного языке LUA в модуле spamd в web интерфейсе.

Пример кода по умолчанию:


-- Reject the message if it is likely spam
if ctx.message.spam.score >= 100 then
dw.notice("Spam score: " .. ctx.message.spam.score)
return {action = "reject"}
else
-- Assign X-Drweb-Spam headers in accordance with spam report
ctx.modifier.add_header_field("X-DrWeb-SpamScore", ctx.message.spam.score)
ctx.modifier.add_header_field("X-DrWeb-SpamState", ctx.message.spam.type)
ctx.modifier.add_header_field("X-DrWeb-SpamDetail", ctx.message.spam.reason)
ctx.modifier.add_header_field("X-DrWeb-SpamVersion", ctx.message.spam.version)
end

Пример кода для сохранения всех писем и пометка заголовков SPAM

local dw = require "drweb" 

function milter_hook(ctx)
    dw.notice("Spam score: " .. ctx.message.spam.score)
    if ctx.message.spam.score >= 100 then
        local old_value = ctx.message.header.value("Subject") or "" 
        local new_value = "[SPAM] " .. old_value
        ctx.modifier.change_header_field("Subject", new_value)
    end

    -- Assign X-Drweb-Spam headers in accordance with spam report
    ctx.modifier.add_header_field("X-DrWeb-SpamScore", ctx.message.spam.score)
    ctx.modifier.add_header_field("X-DrWeb-SpamState", ctx.message.spam.type)
    ctx.modifier.add_header_field("X-DrWeb-SpamDetail", ctx.message.spam.reason)
    ctx.modifier.add_header_field("X-DrWeb-SpamVersion", ctx.message.spam.version)

    -- Check if the message contains viruses, repack if so
    for threat, path in ctx.message.threats { category = { "known_virus", "virus_modification", "unknown_virus", "adware", "dialer" } } do
        ctx.modifier.repack()
        dw.notice(threat.name .. " found in " .. (ctx.message.part_at(path).name or path))
    end
    -- Repack if unwanted URL has been found
    for url in ctx.message.urls { category = { "infection_source", "not_recommended", "owners_notice" } } do
        ctx.modifier.repack()
        dw.notice("URL found: " .. url .. "(" .. url.categories[1] .. ")")
    end
    -- Assign X-AntiVirus header
    local x_antivirus = ctx.gen.x_antivirus_header_field()
    if x_antivirus then
        ctx.modifier.add_header_field(x_antivirus.name, x_antivirus.value)
    end
    -- Accept the message with all scheduled transformations applied
    return { action = 'accept', modifications = ctx.modifier.modifications() }
end

Настройка почтового сервера

Откройте настройки сервера Tegu:

1. Установить чекбокс "Enable antivirus and/or antispam scan" (Использовать Антивирус) в меню "Настройка" административной панели сервера Tegu;
2. Заполните поля host и port (3001);
3. Задайте название поля заголовка электронной почты для оценки спама. (в правилах обработки входящих писем этот заголовок будет использован в условии по рейтингу спама);

4. Для настройки обработки рейтинга спама, необходимо перейти в меню "Глобальные правила обработки входящих писем" и добавить правила обработки спама.

Программирование собственных сценариев обработки почтовых сообщений

В сервере Tegu есть несколько уровней настройки обработок почтовых сообщений на уровне администратора и пользователей. Однако, вы можете легко написать собственный сервер для обработки сообщений по протоколу Milter. Для этого существует свободные библиотеки на C, Python и др. Если вы используете Dr.Web Mail Security Suite для UNIX, то вам "из коробки" для программирования сценариев доступен язык LUA. Подробнее см. здесь.

Интеграция с KSMG

Для выполнения настроек milter в KSMG, необходимо получить доступ в Technical Mode посредством консоли ksmg по ssh. Для включения такового, необходимо, в Web-консоли в разделе «Параметры – Доступ к программе – Доступ SSH». Нажать «Добавить ключ» и загрузить, предварительно созданный, открытый ключ ssh. После этого, зайти, пользователем root, с использованием данного ключа в Technical Mode-консоль, посредством любого ssh-клиента и выполнить настройку, согласно приведённым далее, файлам конфигурации:

  1. В файле /var/opt/kaspersky/ksmg/installer.dat добавить START_MILTER=1
START_SMTP_PROXY=1
installation_id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
EULA_AGREED=yes
PRIVACY_POLICY_AGREED=yes
INSTALL_DATE=1677815353
ip=<_IP-АДРЕС-KSMG_>
port=9045
START_MILTER=1
  1. В файле /etc/opt/kaspersky/ksmg/filters.conf добавить/исправить секцию
[milter]
# socket to listen on (milter syntax)
socket=inet:10025@<_IP-АДРЕС-KSMG_>

После чего выполнить рестарт ВМ ksmg

В Веб-консоли KSMG, необходимо отключить проверку DNS/SPF/DKIM для внешних сервисов!
"Параметры - Внешние службы - KSN/KSPN - включить "Использовать KSN"
а в: "Параметры - Общие - Защита - Внешние службы - отключить "Разрешить подключение в DNS-серверу".

Для получения более подробной информации обращайтесь к документации или в поддержку KSMG.