Exim メールサーバーとの手動統合

2024年4月16日

ID 56941

本製品の初期設定時にメールサーバーの自動連携をスキップした場合は、KSMG をメールサーバーと手動で連携する必要があります。

動的リンクライブラリ(dlfunc)を使用して、KSMG と Exim メールサーバーの before-queue 連携を手動で設定できます。before-queue 連携を使用すると、KSMG はメッセージが Exim メールサーバーのキューに入る前にメッセージをスキャンします。After-queue 連携はサポートされていません。

オペレーティングシステムによっては、編集の必要がある Exim メールサーバー設定情報ファイルが 1 つの場合と複数の場合があります:

  • Red Hat Enterprise Linux および Rocky Linux では、メイン設定情報ファイル /etc/exim/exim.conf が変更されます。
  • Ubuntuの場合:
    • 設定情報ファイルがモノリシックテンプレートから生成されている場合は、ファイル /etc/exim4/exim4.conf.template が変更されます。
    • 設定情報ファイルが分割テンプレートから生成されている場合は、テンプレートファイル /etc/exim4/conf.d/acl/40_exim4-config_check_data などに変更が加えられます。

KSMG と Exim の before-queue 連携を実行するには、次の手順を実行します:

  1. Exim メールサーバーが dlfunc 動的リンクライブラリの機能をサポートしていることを確認してください。この操作には、次のコマンドを実行します:

    exim -bV

    Exim メール サーバーは、[Support for]セクションに Expand_dlfunc 行が含まれている場合、動的にロードされる dlfunc ライブラリをサポートします。

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

    acl_smtp_data = acl_check_dataacl_check_dataの代わりに別の変数またはマクロを使用できます)

    見つけたら、

    acl_check_data:(または別の変数またはマクロを含む文字列)

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

    # Manually added block ksmg-exim-filter-dflunc begin

    warn set acl_m_ksmg_input_directory = ${spool_directory}/input

    set acl_m_ksmg_lookup_result = ${lookup {$message_id-D} dsearch {$acl_m_ksmg_input_directory}}

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

    set acl_m_ksmg_input_directory = ${spool_directory}/input/${substr{5}{1}{$message_id}}

    warn set acl_m_ksmg_answer = ${dlfunc{DLFUNC_LIBRARY_FULLPATH}{scan}{$acl_m_ksmg_input_directory}}

    defer condition = ${if match {$acl_m_ksmg_answer}{^[245]}{no}{yes}}

    log_message = KSMG check failed, unexpected answer: $acl_m_ksmg_answer

    defer condition = ${if match {$acl_m_ksmg_answer}{^4}{yes}{no}}

    log_message = KSMG check defer: $acl_m_ksmg_answer

    deny condition = ${if match {$acl_m_ksmg_answer}{^5}{yes}{no}}

    log_message = KSMG check reject: $acl_m_ksmg_answer

    message = This message is blocked due to security reason

    warn condition = ${if match {$acl_m_ksmg_answer}{^2}{yes}{no}}

    logwrite = KSMG check accept: $acl_m_ksmg_answer

    # Manually added block ksmg-exim-filter-dlfunc ends here

    DLFUNC_LIBRARY_FULLPATH は、dlfunc ライブラリへのパスです。ライブラリへのパスは Exim のバージョンによって異なり、次のようになります:

    • Exim バージョン 4.86 から 4.90 未満— /opt/kaspersky/ksmg/lib/libklms-exim-abi20-1.so
    • Exim バージョン 4.90 から 4.93 未満 — /opt/kaspersky/ksmg/lib/libklms-exim-abi20-2.so
    • Exim バージョン 4.93 から 4.94 未満 — /opt/kaspersky/ksmg/lib/libklms-exim-abi31.so
    • Exim バージョン 4.94 から 4.96 未満 — /opt/kaspersky/ksmg/lib/libklms-exim-abi41.so
    • 4.96 以降の Exim の場合 — /opt/kaspersky/ksmg/lib/libklms-exim-abi60.so
  4. 必要に応じて、設定情報ファイルの編集が完了したら、メインの Exim 設定情報ファイルを再生成できます。
  5. exim プロセスを開始するユーザーが含まれるグループにユーザー kluser を追加します。

    既定では、このグループは Red Hat Enterprise Linux および Rocky Linux では「exim」、Ubuntu では「Debian-exim」と呼ばれます。

  6. exim プロセスを開始するユーザーを klusers グループkl_var_users グループに追加します。

    既定では、ユーザー名は Red Hat Enterprise Linux および Rocky Linux では「exim」、Ubuntu では「Debian-exim」です。

  7. フィルター設定ファイル /etc/opt/kaspersky/ksmg/filters.conf の[global]セクションで、次のパラメータ値を設定します:

    scanner=unix:/var/run/ksmg/klms_scanner_sock

    header-guard=false

    • PrivateTmpfalse に設定されているか、Exim Unit ファイルで指定されていない場合:

      workdir=/tmp

    • Exim Unit ファイルでPrivateTmp が true に設定されている場合:

      workdir=/var/opt/kaspersky/ksmg/tmp

  8. ファイル /var/opt/kaspersky/ksmg/installer.dat で、次のパラメータ値を設定します:

    MTA_INTEGRATION_METHOD=dlfunc

    MTA_INTEGRATION_MODE=prequeue

    filters_workdir=<手順 7 の「workdir」パラメータ値>

    mta=manual

    START_SMTP_PROXY=0

    START_MILTER=0

  9. ksmg サービスを再起動します:
  10. Exim メールサーバーを再起動します。

Exim との連携が完了しました。

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