Before-queue-Integration mithilfe einer dynamisch geladenen Bibliothek

21. August 2023

ID 43915

Zur Verwendung der Integrationsmethode "vor dem Verschieben der Nachricht in die Warteschleife" (before-queue-Integration) muss bei der Kompilierung der aus den Ausgangscodes dynamisch geladenen Bibliothek angegeben werden, dass die Unterstützung von dlfunc erforderlich ist. In einigen Distributionen von Linux sind im Speicher kompilierte Exim-Versionen enthalten, in anderen ist eine manuelle Kompilierung erforderlich.

Bei der manuellen Kompilierung müssen der Makefile folgende Zeilen hinzugefügt werden:

EXPAND_DLFUNC=yes

EXTRALIBS= -export-dynamic

Bei der before-queue-Integration unter Verwendung einer dynamisch geladenen Bibliothek muss der Filter die Nachrichten zur Untersuchung an Scan Logic über den Socket ServiceSocket übergeben. Dieser Socket muss in der Programmkonfiguration angegeben werden.

Je nach Lieferumfang des Betriebssystems müssen Sie eine oder mehrere Konfigurationsdateien von Exim ändern. Zum Beispiel, kann der Mailserver in Debian und Ubuntu wie mithilfe mehrerer Dateien im Verzeichnis /etc/exim/conf.d, so auch mithilfe einer Datei konfiguriert werden.

Gehen Sie folgendermaßen vor, um eine before-queue-Integration von Kaspersky Security 8 für Linux Mail Server mit Exim unter Verwendung einer dynamisch geladenen Bibliothek auszuführen:

  1. Stellen Sie sicher, dass der Mailserver Exim die Funktion der Inhaltsfilterung dlfunc unterstützt. Für diesen Zweck führen Sie den Befehl exim -bV aus.

    Als positive Antwort gilt das Ergebnis: Expand_dlfunc.

  2. Erstellen Sie eine Sicherungskopie der Konfigurationsdateien von Exim.
  3. Tragen Sie Änderungen in die Liste für die Zugriffskontrolle von acl_smtp_data ein. Suchen Sie dafür in der Konfigurationsdatei (-dateien) von Exim nach der Zeile des Typs

    acl_smtp_data = acl_check_data (statt acl_check_data kann eine andere Liste für die Zugriffskontrolle angegeben werden)

    und nach der Zeile des Typs

    acl_check_data: (oder der Zeile, die eine andere Liste für die Zugriffskontrolle enthält)

    folgende Zeilen hinzu:

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

    wo LIBDIR – Pfad zur Bibliothek libklms-exim.so:

    • für FreeBSD (32-Bit) - /usr/local/lib/kaspersky/klms/libklms-exim.so,
    • für FreeBSD (64-Bit) - /usr/local/lib/kaspersky/klms/compat64/libklms-exim.so,
    • für Linux (32-Bit) - /opt/kaspersky/klms/lib/libklms-exim.so,
    • für Linux (64-Bit) - /opt/kaspersky/klms/lib64/libklms-exim.so.
  4. Kompilieren Sie das Modul .so entsprechend den Einstellungen Ihres Betriebssystems (optional).
  5. Fügen Sie den Benutzer kluser zur Gruppe hinzu, welcher der Vorgang exim zugeordnet ist.
  6. Legen Sie in der Filterkonfigurationsdatei klms_filter.conf, im Abschnitt [global] den Wert false für die Einstellung header-guard fest.
  7. Öffnen Sie die Datei /var/opt/kaspersky/klms/installer.dat (für Linux) oder /var/db/kaspersky/klms/installer.dat (für FreeBSD).
  8. Fügen Sie der Datei folgende Zeile hinzu:

    EXIM_INTEGRATION_TYPE=dlfunc

  9. Starten Sie den Dienst klms neu.
  10. Starten Sie den Mailserver Exim neu.

Im Lieferumfang von Kaspersky Security 8 für Linux Mail Server ist eine kompilierte dynamisch geladene Bibliothek dlfunc für alle Betriebssysteme enthalten, die vom Programm unterstützt werden. Erforderliche Ausgangsdateien für die dlfunc-Bibliothek befinden sich im Verzeichnis /opt/kaspersky/klms/share/src/dlfunc (für Linux) oder im Verzeichnis /usr/local/share/klms/src/dlfunc (für FreeBSD).

In einigen Fällen ist jedoch eine manuelle Kompilierung erforderlich.

Gehen Sie folgendermaßen vor, um eine manuelle Kompilation der dynamisch geladenen Bibliothek auszuführen:

  1. Installieren Sie die Ausgangsbibliotheken von Exim.
  2. Installieren Sie die Bibliothek libevent der Version 2.0.10 oder höher.
  3. Installieren Sie die Bibliothek boost der Version 1.47.0 oder höher.
  4. Wechseln Sie zum Verzeichnis /opt/kaspersky/klms/share/src/dlfunc (für Linux) oder zum Verzeichnis /usr/local/share/klms/src/dlfunc (für FreeBSD).
  5. Führen Sie den Befehl ./configure --with-exim=<path to exim headers> --with-boost=<path to boost> --with-libevent=<path to libevent> aus.
  6. Führen Sie den folgenden Befehl aus: # make.

Im aktuellen Verzeichnis wird die Datei libklms-exim.so angezeigt.

War dieser Artikel hilfreich?
Helfen Sie uns, diesen Artikel zu verbessern. Wählen Sie den Grund für Ihre Bewertung:
Danke für Ihr Feedback! Sie helfen uns, besser zu werden.
Danke für Ihr Feedback! Sie helfen uns, besser zu werden.