Интеграция с почтовым сервером 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:
- Убедитесь, что почтовый сервер Exim поддерживает функции динамически загружаемой библиотеки dlfunc. Для этого выполните команду:
exim -bV
Положительным ответом является результат:
Expand_dlfunc
. - Сделайте резервную копию конфигурационных файлов Exim.
- Внесите изменения в список контроля доступа для
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
- После завершения правок конфигурационного файла при необходимости перегенерируйте основной файл конфигурации Exim.
- Добавьте пользователя
kluser
к группе, в которую входит пользователь, от имени которого запускается процессexim
.В Astra Linux Special Edition 1.6 и 1.7 по умолчанию такой группой является
Debian-exim
. - Добавьте пользователя, от имени которого запускается процесс exim, к группам
klusers
иkl_var_users
.В Astra Linux Special Edition 1.6 и 1.7 по умолчанию таким пользователем является
Debian-exim
. - В файле параметров фильтров /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
- Если в Unit-файле Exim параметр
- Откройте файл /var/opt/kaspersky/klms/installer.dat
- Добавьте в файл следующие строки:
MTA_INTEGRATION_METHOD=dlfunc
MTA_INTEGRATION_MODE=prequeue
filters_workdir=<значение в зависимости от условий в п. 7>
mta=manual
START_SMTP_PROXY=0
START_MILTER=0
- Перезапустите службу klms.
- Перезапустите почтовый сервер Exim.
Интеграция с Exim будет завершена.