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

23 ноября 2023

ID 56941

Если во время первоначальной настройки приложения вы пропустили автоматическую интеграцию программы с почтовым сервером, вам требуется интегрировать приложение Kaspersky Security 10 для Linux Mail Server с почтовым сервером вручную.

Вы можете настроить интеграцию с почтовым сервером вручную только при работе в Astra Linux Special Edition 1.7 с выключенным режимом мандатного управления доступом.

Вы можете вручную интегрировать Kaspersky Security 10 для Linux Mail Server с почтовым сервером Exim методом "до передачи сообщения в очередь" (before-queue-интеграция) с использованием динамически подгружаемой библиотеки (dlfunc). В этом случае сообщения передаются на проверку приложению Kaspersky Security 10 для Linux Mail Server до размещения в очереди почтового сервера Exim.

В зависимости от дистрибутива операционной системы вам требуется внести изменения в один или несколько конфигурационных файлов почтового сервера Exim. В Astra Linux Special Edition версии 1.6 и 1.7 почтовый сервер Exim может быть настроен как с помощью нескольких файлов в подкаталогах /etc/exim4/conf.d, так и с помощью одного файла.

Чтобы выполнить before-queue-интеграцию Kaspersky Security 10 для Linux Mail Server с Exim:

  1. Убедитесь, что почтовый сервер Exim поддерживает функции динамически загружаемой библиотеки dlfunc. Для этого выполните команду:

    exim -bV

    Положительным ответом является результат: Expand_dlfunc.

  2. Сделайте резервную копию конфигурационных файлов Exim.
  3. Внесите изменения в список контроля доступа для acl_smtp_data. Для этого в конфигурационном файле (файлах) Exim найдите строку вида

    acl_smtp_data = acl_check_data (вместо acl_check_data может быть другая переменная или макрос)

    и после строки вида

    acl_check_data: (или строки, содержащей другую переменную или макрос)

    добавьте следующие строки:

    # Manual klms-exim-filter-dlfunc begin

    #

    warn set acl_m_klms_input_directory = ${spool_directory}/input

    set acl_m_klms_lookup_result = ${lookup {$message_id-D} dsearch {$acl_m_klms_input_directory}}

    warn condition = ${if eq {$acl_m_klms_lookup_result}{}{yes}{no}}

    # A split_spool_directory option is set

    set acl_m_klms_input_directory = ${spool_directory}/input/${substr{5}{1}{$message_id}}

    warn set acl_m_klms_answer = ${dlfunc{DLFUNC_LIBRARY_FULLPATH}{scan}{$acl_m_klms_input_directory}}

    defer condition = ${if eq {$acl_m_klms_answer}{}{yes}{no}}

    log_message = KLMS check failed (empty answer)

    message = Temporary local problem - please try later

    warn set acl_m_klms_result_code = ${if match {$acl_m_klms_answer}{\N^([0-9]{3}) .*\N}{$1}{}}

    set acl_m_klms_result_message = ${if match {$acl_m_klms_answer}{\N^[0-9]{3} (.*)\N}{$1}{}}

    # Anything except details in brackets

    set acl_m_klms_result_short_message = ${if match {$acl_m_klms_result_message}{\N^([^\(]+)( \(.+\))?$\N}{$1}{}}

    defer condition = ${if match {$acl_m_klms_result_code}{^[245]}{no}{yes}}

    log_message = KLMS check failed, unexpected answer: $acl_m_klms_answer

    message = Temporary local problem - please try later

    defer condition = ${if eq {${substr_0_1:$acl_m_klms_result_code}}{4}{yes}{no}}

    log_message = KLMS check defer: $acl_m_klms_answer

    message = $acl_m_klms_result_code $acl_m_klms_result_short_message

    deny condition = ${if eq {${substr_0_1:$acl_m_klms_result_code}}{5}{yes}{no}}

    log_message = KLMS check reject: $acl_m_klms_answer

    message = $acl_m_klms_result_code $acl_m_klms_result_short_message

    warn condition = ${if eq {${substr_0_1:$acl_m_klms_result_code}}{2}{yes}{no}}

    logwrite = KLMS check accept: $acl_m_klms_answer

    #

    # Manual klms-exim-filter-dlfunc ends here

    где DLFUNC_LIBRARY_FULLPATH – путь к библиотеке dlfunc. Если используется exim daemon heavy из состава ОС Astra Linux Special Edition, путь выглядит следующим образом:

    • для Exim с версии 4.96 до версии 5.0 невключительно – /opt/kaspersky/klms/lib/libklms-exim-abi60.so
    • для Exim с версии 4.94 до версии 4.96 невключительно – /opt/kaspersky/klms/lib/libklms-exim-abi41.so
    • для Exim с версии 4.93 до версии 4.94 невключительно – /opt/kaspersky/klms/lib/libklms-exim-abi31.so
    • для Exim с версии 4.90 до версии 4.93 невключительно – /opt/kaspersky/klms/lib/libklms-exim-abi20-2.so
    • для Exim с версии 4.86 до версии 4.90 невключительно – /opt/kaspersky/klms/lib/libklms-exim-abi20-1.so
    • для Exim с версии 4.64 до версии 4.86 невключительно – /opt/kaspersky/klms/lib/libklms-exim-abi11.so
  4. После завершения правок конфигурационного файла при необходимости перегенерируйте основной файл конфигурации Exim.
  5. Добавьте пользователя kluser к группе, в которую входит пользователь, от имени которого запускается процесс exim.

    В Astra Linux Special Edition 1.6 и 1.7 по умолчанию такой группой является Debian-exim.

  6. Добавьте пользователя, от имени которого запускается процесс exim, к группам klusers и kl_var_users.

    В Astra Linux Special Edition 1.6 и 1.7 по умолчанию таким пользователем является Debian-exim.

  7. В файле параметров фильтров /etc/opt/kaspersky/klms/filters.conf в секции [global] установите следующие значения параметров:

    scanner=unix:/var/run/klms/klms_scanner_sock

    header-guard=false

    • Если в Unit-файле Exim параметр PrivateTmp установлен в false или не указан:

      workdir=/tmp

    • Если в Unit-файле Exim параметр PrivateTmp установлен в true:

      workdir=/var/opt/kaspersky/klms/tmp

  8. Откройте файл /var/opt/kaspersky/klms/installer.dat
  9. Добавьте в файл следующие строки:

    MTA_INTEGRATION_METHOD=dlfunc

    MTA_INTEGRATION_MODE=prequeue

    filters_workdir=<значение в зависимости от условий в п. 7>

    mta=manual

    START_SMTP_PROXY=0

    START_MILTER=0

  10. Перезапустите службу klms.
  11. Перезапустите почтовый сервер Exim.

Интеграция с Exim будет завершена.

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!