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

25 апреля 2024

ID 56941

Если во время первоначальной настройки приложения вы пропустили автоматическую интеграцию программы с почтовым сервером, вам требуется интегрировать приложение KSMG с почтовым сервером вручную.

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

В зависимости от дистрибутива операционной системы вам требуется внести изменения в один или несколько конфигурационных файлов почтового сервера Exim:

  • В операционных системах Red Hat Enterprise Linux, Rocky Linux изменения вносятся в основной конфигурационный файл /etc/exim/exim.conf.
  • В операционных системах Ubuntu:
    • Если конфигурационный файл генерируется из монолитного шаблона, изменения вносятся в файл шаблона /etc/exim4/exim4.conf.template.
    • Если конфигурационный файл генерируется из разделенного шаблона, изменения вносятся в файл шаблона /etc/exim4/conf.d/acl/40_exim4-config_check_data или аналогичный по смыслу.

Чтобы выполнить before-queue-интеграцию KSMG с Exim:

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

    exim -bV

    Почтовый сервер Exim поддерживает функции динамически загружаемой библиотеки dlfunc, если в секции Support for есть строка Expand_dlfunc.

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

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

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

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

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

    # Manually added block ksmg-exim-filter-dflunc begin

    warn set acl_m_ksmg_input_directory = ${spool_directory}/input

      set acl_m_ksmg_lookup_result = ${lookup {$message_id-D} dsearch {$acl_m_ksmg_input_directory}}

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

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

    warn set acl_m_ksmg_answer = ${dlfunc{DLFUNC_LIBRARY_FULLPATH}{scan}{$acl_m_ksmg_input_directory}}

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

      log_message = KSMG check failed, unexpected answer: $acl_m_ksmg_answer

    defer condition = ${if match {$acl_m_ksmg_answer}{^4}{yes}{no}}

      log_message = KSMG check defer: $acl_m_ksmg_answer

    deny condition = ${if match {$acl_m_ksmg_answer}{^5}{yes}{no}}

      log_message = KSMG check reject: $acl_m_ksmg_answer

      message = This message is blocked due to security reason

    warn condition = ${if match {$acl_m_ksmg_answer}{^2}{yes}{no}}

      logwrite = KSMG check accept: $acl_m_ksmg_answer

    # Manually added block ksmg-exim-filter-dlfunc ends here

    где DLFUNC_LIBRARY_FULLPATH – путь к библиотеке dlfunc. Путь к библиотеке зависит от версии Exim и может выглядеть следующим образом:

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

    По умолчанию в операционных системах Red Hat Enterprise Linux и Rocky Linux такая группа называется exim, в операционных системах Ubuntu – Debian-exim.

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

    По умолчанию в операционных системах Red Hat Enterprise Linux и Rocky Linux имя этого пользователя – exim, в операционных системах Ubuntu – Debian-exim.

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

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

    header-guard=false

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

      workdir=/tmp

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

      workdir=/var/opt/kaspersky/ksmg/tmp

  8. В файле /var/opt/kaspersky/ksmg/installer.dat установите следующие значения параметров:

    MTA_INTEGRATION_METHOD=dlfunc

    MTA_INTEGRATION_MODE=prequeue

    filters_workdir=<значение параметра workdir из п. 7>

    mta=manual

    START_SMTP_PROXY=0

    START_MILTER=0

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

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

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