使用动态连接执行前端队列集成

2023年8月21日

ID 43915

要使用“前端队列”集成方法,您必须指定通过源代码编译相应动态库时需要 dlfunc 支持。某些 Linux 分发的存储库已包含编译的 Exim 版本,在其他情况下需要手动编译。

如果手动编译,您必须将以下行添加到 Makefile:

EXPAND_DLFUNC=yes

EXTRALIBS= -export-dynamic

当使用通过动态库进行前端队列集成时,过滤器必须通过 ServiceSocket 将要扫描的邮件传输给 ScanLogic。此套接字必须在配置程序时指定。

根据操作系统的具体分发,您必须修改 Exim 邮件服务器的一个或多个配置文件。例如,在 Debian 和 Ubuntu 中,Exim 邮件服务器配置可能包含 /etc/exim/conf.d 目录下的几个文件,或仅包含一个文件。

使用动态加载的库执行 Kaspersky Security 8 for 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: (or line containing another access control list)

    后面添加以下行:

    #klms-filter-begin

    warn set acl_m_klms_headers =

    set acl_m_klms_result =

    set acl_m_klms_answer = ${dlfunc{LIBDIR/libklms-exim.so}{scan}{${spool_directory}/input}}

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

    log_message = LMS check failed (empty answer)

    message = Temporary local problem - please try later

    defer condition = ${if match {$acl_m_klms_answer}{\N^451\N}{yes}{no}}

    log_message = LMS check defer: ${if match {$acl_m_klms_answer} \

    {\N^451 Mail processing aborted(.+\n?.*\n)*$\N}{$1}{}}\\

    ${if eq {$acl_m_klms_result}{}{}{, result is \

    '$acl_m_klms_result\'}}\

    , temporary file $acl_m_klms_tempfile

    message = Temporary local problem - please try later

    defer condition = ${if match {$acl_m_klms_answer}{\N^452\N}{yes}{no}}

    log_message = LMS check defer: ${if match{$acl_m_klms_answer} \

    {\N^451 Mail processing timed out(.+\n?.*\n)*$\N}{$1}{}}\

    ${if eq {$acl_m_klms_result}{}{}{, result is \

    '$acl_m_klms_result\'}}\

    , temporary file $acl_m_klms_tempfile

    message = Temporary local problem - please try later

    deny condition = ${if match {$acl_m_klms_answer}{\N^550\N}{yes}{no}}

    log_message = LMS check reject: ${if match {$acl_m_klms_answer} \

    {\N^550 Rejected by malware filter(.+\n?.*\n)*$\N}{$1}{}}\

    ${if eq {$acl_m_klms_result}{}{}{, result is \

    '$acl_m_klms_result\'}}\

    , temporary file $acl_m_klms_tempfile

    deny condition = ${if match {$acl_m_klms_answer}{\N^554\N}{yes}{no}}

    log_message = LMS check reject: ${if match {$acl_m_klms_answer} \

    {\N^554 Mail processing failed(.+\n?.*\n)*$\N}{$1}{}}\

    ${if eq {$acl_m_klms_result}{}{}{, result is \

    '$acl_m_klms_result\'}}\

    , temporary file $acl_m_klms_tempfile

    message = ${if match {$acl_m_klms_answer} \

    {\N^554 Mail processing failed(.+\n?.*\n)*$\N} \

    {Mail processing failed:$1}{}}

    warn condition = ${if match {$acl_m_klms_answer}{\N^250\N}{yes}{no}}

    logwrite = LMS check accept: ${if match {$acl_m_klms_answer} \

    {\N^250 (.+)$\N}{$1}{}} \

    ${if eq {$acl_m_klms_result}{}{}{, result is \

    '$acl_m_klms_result\'}}

    set acl_m_klms_answer =

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

    logwrite = LMS check: $acl_m_klms_answer

     

    #klms-filter-end

    其中,LIBDIR – libklms-exim.so 库的路径:

    • 对于 FreeBSD(32 位)- /usr/local/lib/kaspersky/klms/libklms-exim.so,
    • 对于 FreeBSD(64 位)- /usr/local/lib/kaspersky/klms/compat64/libklms-exim.so,
    • 对于 Linux(32 位)- /opt/kaspersky/klms/lib/libklms-exim.so,
    • 对于 Linux(64 位)- /opt/kaspersky/klms/lib64/libklms-exim.so。
  4. 根据您的操作系统设置编译 .so 模块(可选)。
  5. 将用户 kluser 添加到 exim 进程所属的组。
  6. [global] 区域中,为 klms_filter.conf 过滤器设置文件的 header-guard 设置设置 false 值。
  7. 打开文件 /var/opt/kaspersky/klms/installer.dat(Linux 环境下)或 /var/db/kaspersky/klms/installer.dat(FreeBSD 环境下)。
  8. 在文件中添加下列行:

    EXIM_INTEGRATION_TYPE=dlfunc

  9. 重新启动 klms 服务。
  10. 重新启动 Exim 邮件服务器。

Kaspersky Security 8 for Linux Mail Server 安装包为程序支持的所有操作系统都包含一个已编译的动态加载 dlfunc 库。dlfunc 库所需的源文件位于目录 /opt/kaspersky/klms/share/src/dlfunc(Linux 环境下)或 /usr/local/share/klms/src/dlfunc(FreeBSD 环境下)下。

在某些情况下,需要手动编译。

执行动态加载的 dlfunc 库的手动编译:

  1. 安装 Exim 邮件服务器的源库。
  2. 安装 libevent 库(版本 2.0.10 或更高)。
  3. 安装 boost 库(版本 1.47.0 或更高)。
  4. 更改到 /opt/kaspersky/klms/share/src/dlfunc 目录(在 Linux 上)或 /usr/local/share/klms/src/dlfunc 目录(在 FreeBSD 上)。
  5. 运行以下命令:./configure --with-exim=<exim 标头的路径> --with-boost=<boost 的路径> --with-libevent=<libevent 的路径>。
  6. 运行以下命令:# make

libklms-exim.so 文件将出现在当前文件夹中。

Did you find this article helpful?
What can we do better?
Thank you for your feedback! You're helping us improve.
Thank you for your feedback! You're helping us improve.