Интеграция с почтовым сервером Exim вручную
03 июля 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:
- Убедитесь, что почтовый сервер Exim поддерживает функции динамически загружаемой библиотеки dlfunc. Для этого выполните команду:
exim -bV
Почтовый сервер Exim поддерживает функции динамически загружаемой библиотеки dlfunc, если в секции
Support for
есть строкаExpand_dlfunc
. - Сделайте резервную копию конфигурационных файлов Exim.
- Внесите изменения в список контроля доступа для
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
- При необходимости после завершения правок конфигурационного файла перегенерируйте основной файл конфигурации Exim.
- Добавьте пользователя
kluser
к группе, в которую входит пользователь, от имени которого запускается процесс exim.По умолчанию в операционных системах Red Hat Enterprise Linux и Rocky Linux такая группа называется exim, в операционных системах Ubuntu – Debian-exim.
- Добавьте пользователя, от имени которого запускается процесс exim, к группам
klusers
иkl_var_users
.По умолчанию в операционных системах Red Hat Enterprise Linux и Rocky Linux имя этого пользователя – exim, в операционных системах Ubuntu – Debian-exim.
- В файле параметров фильтров /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
- Если в Unit-файле Exim параметр
- В файле /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
- Перезапустите службу ksmg.
- Перезапустите почтовый сервер Exim.
Интеграция с Exim будет завершена.