Intégration before-queue à l'aide d'une bibliothèque au chargement dynamique

21 août 2023

ID 43915

Pour pouvoir utiliser la méthode d'intégration avant la mise du message en file d'attente (intégration before-queue) lors de la compilation d'une bibliothèque de codes sources au chargement dynamique, il faut indiquer que la prise en charge de dlfunc est indispensable. La sauvegarde de certaines distributions Linux contient des versions compilées Exim. D'autres distributions nécessitent une compilation manuelle.

En cas de compilation manuelle, il faut ajouter les lignes suivantes dans Makefile :

EXPAND_DLFUNC=yes

EXTRALIBS= -export-dynamic

Lors de l'intégration before-queue à l'aide d'une bibliothèque au chargement dynamique, le filtre doit soumettre les messages à l'analyse du module Scan Logic via le socket ServiceSocket. Vous devez désigner ce socket dans la configuration de l'application.

En fonction de la distribution du système d'exploitation, vous devez apporter des modifications dans un ou plusieurs fichiers de configuration du serveur de messagerie Exim. Par exemple, dans Debian et Ubuntu le serveur de messagerie Exim peut être configuré à l'aide de plusieurs fichiers dans le répertoire /etc/exim/conf.d ou à l'aide d'un seul fichier.

Pour réaliser une intégration before-queue de Kaspersky Security 8 for Linux Mail Server à Exim à l'aide d'une bibliothèque au chargement dynamique, procédez comme suit :

  1. Assurez-vous que le serveur de messagerie Exim prend en charge la fonction du filtrage du contenu dlfunc. Pour ce faire, effectuez la commande exim -bV.

    La réponse positive est le résultat : Expand_dlfunc.

  2. Faites une copie de sauvegarde des fichiers de configuration Exim.
  3. Apportez des modifications dans la liste du contrôle de l'accès pour acl_smtp_data. Pour ce faire, localisez dans le fichier (les fichiers) de configuration Exim la ligne du type

    acl_smtp_data = acl_check_data (une autre liste de contrôle peut être indiquée au lieu de acl_check_data)

    et après la ligne du type

    acl_check_data: (ou après la ligne qui contient une autre liste du contrôle de l'accès)

    ajoutez les lignes suivantes :

    #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 reject: ${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

    où LIBDIR désigne le chemin d'accès à la bibliothèque libklms-exim.so :

    • pour FreeBSD (32 bits) - /usr/local/lib/kaspersky/klms/libklms-exim.so,
    • pour FreeBSD (64 bits) - /usr/local/lib/kaspersky/klms/compat64/libklms-exim.so,
    • pour Linux (32 bits) - /opt/kaspersky/klms/lib/libklms-exim.so,
    • pour Linux (64 bits) - /opt/kaspersky/klms/lib64/libklms-exim.so.
  4. Compilez le module .so conformément aux paramètres de votre système d'exploitation (facultatif).
  5. Ajoutez l'utilisateur kluser au groupe auquel appartient le processus exim.
  6. Dans le fichier des paramètres des filtres klms_filter.conf, indiquez, dans la section [global]; la valeur false au paramètre header-guard.
  7. Ouvrez le fichier /var/opt/kaspersky/klms/installer.dat (pour Linux) ou /var/db/kaspersky/klms/installer.dat (pour FreeBSD).
  8. Ajouter la ligne suivante dans le fichier :

    EXIM_INTEGRATION_TYPE=dlfunc

  9. Relancez le service klms.
  10. Relancez le serveur de messagerie Exim.

Le paquet d'installation de Kaspersky Security 8 for Linux Mail Server contient une bibliothèque compilée au chargement dynamique dlfunc pour tous les systèmes d'exploitation pris en charge par l'application. Les fichiers sources indispensables pour la bibliothèque dlfunc se trouvent dans le répertoire /opt/kaspersky/klms/share/src/dlfunc (pour Linux) ou dans le répertoire /usr/local/share/klms/src/dlfunc (pour FreeBSD).

Dans certains cas, une compilation manuelle est nécessaire.

Pour réaliser une compilation manuelle de la bibliothèque au chargement dynamique dlfunc, procédez comme suit :

  1. Installez les bibliothèques sources du serveur de messagerie Exim.
  2. Installez la bibliothèque libevent, version 2.0.10 ou supérieure.
  3. Installez la bibliothèque boost, version 1.47.0 ou supérieure.
  4. Passez au répertoire /opt/kaspersky/klms/share/src/dlfunc (pour Linux) ou au répertoire /usr/local/share/klms/src/dlfunc (pour FreeBSD).
  5. Exécutez la commande ./configure --with-exim=<path to exim headers> --with-boost=<path to boost> --with-libevent=<path to libevent>.
  6. Exécutez la commande suivante : # make.

Le fichier libklms-exim.so apparaît dans le répertoire en cours.

Cet article vous a-t-il été utile ?
Que pouvons-nous améliorer ?
Merci de nous faire part de vos commentaires. Vous nous aidez à nous améliorer.
Merci de nous faire part de vos commentaires. Vous nous aidez à nous améliorer.