ダイナミックリンキングを使用した before-queue 統合

2023年8月21日

ID 43915

before-queue 統合方式を使用するには、ソースコードからダイナミックライブラリをコンパイルする際に dlfunc サポートが必要であることを指定する必要があります。一部の Linux ディストリビューションのリポジトリにはコンパイル済みの Exim バージョンが含まれていることがありますが、手動でのコンパイルが必要な場合もあります。

手動でコンパイルする場合は、Makefile に次の行を追加する必要があります:

EXPAND_DLFUNC=yes

EXTRALIBS= -export-dynamic

ダイナミックライブラリによる before-queue 統合を使用する場合は、フィルターがスキャンするメッセージを ServiceSocket 経由で ScanLogic に転送する必要があります。このソケットは、本製品の設定で指定する必要があります。

オペレーティングシステムによっては、編集の必要がある Exim メールサーバー設定ファイルが 1 つの場合と複数の場合があります。たとえば、Debian および Ubuntu では、Exim メールサーバーの設定は /etc/exim/conf.d ディレクトリの複数のファイルまたは単独のファイルで構成されます。

動的に読み込まれるライブラリを使用して Kaspersky Security 8 for Linux Mail Server と Exim の before-queue 統合を実行するには:

  1. Exim メールサーバーが dlfunc ベースのコンテンツフィルタリングをサポートしていることを確認します。この確認には、exim -bV コマンドを実行します。

    実行結果に Expand_dlfunc が含まれていれば、サポートしています。

  2. Exim 設定ファイルのバックアップコピーを作成します。
  3. acl_smtp_data のアクセス制御リストを編集します。そのためには、Exim の設定ファイルで次のような行を見つけます:

    acl_smtp_data = acl_check_dataacl_check_data ではないアクセス制御リストが指定されている場合があります)

    見つけたら、

    acl_check_data: の行(または、別のアクセス制御リストを含む行)の後に

    の後に、次の各行を追加します:

    #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. exim プロセスが属するグループにユーザー kluser を追加します。
  6. フィルター設定ファイル klms_filter.conf[global] セクションで header-guardfalse に設定します。
  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 が現在のフォルダーに表示されます。

この記事はお役に立ちましたか?
改善できる点がありましたらお聞かせください。
フィードバックをいただき、ありがとうございました。改善に向けて取り組んでまいります。
フィードバックをいただき、ありがとうございました。改善に向けて取り組んでまいります。