ダイナミックリンキングを使用した 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 統合を実行するには:
- Exim メールサーバーが dlfunc ベースのコンテンツフィルタリングをサポートしていることを確認します。この確認には、
exim -bV
コマンドを実行します。実行結果に
Expand_dlfunc
が含まれていれば、サポートしています。 - Exim 設定ファイルのバックアップコピーを作成します。
acl_smtp_data
のアクセス制御リストを編集します。そのためには、Exim の設定ファイルで次のような行を見つけます:acl_smtp_data = acl_check_data
(acl_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
- オペレーティングシステムの設定に従って
so
モジュールをコンパイルします(オプション)。 exim
プロセスが属するグループにユーザーkluser
を追加します。- フィルター設定ファイル klms_filter.conf の
[global]
セクションでheader-guard
をfalse
に設定します。 - ファイル /var/opt/kaspersky/klms/installer.dat(Linux 環境)または /var/db/kaspersky/klms/installer.dat(FreeBSD 環境)を開きます。
- 次の行をファイルに追加します:
EXIM_INTEGRATION_TYPE=dlfunc
- klms サービスを再開します。
- 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 ライブラリを手動でコンパイルするには:
- Exim メールサーバーのソースライブラリをインストールします。
- libevent ライブラリ(バージョン 2.0.10 以降)をインストールします。
- boost ライブラリ(バージョン 1.47.0 以降)をインストールします。
- ディレクトリ /opt/kaspersky/klms/share/src/dlfunc(Linux 環境)または /usr/local/share/klms/src/dlfunc(FreeBSD 環境)に移動します。
- 次のコマンドを実行します:
./configure --with-exim=<exim ヘッダーのパス> --with-boost=<boost のパス> --with-libevent=<libevent のパス>
- 次のコマンドを実行します:
# make
ファイル libklms-exim.so が現在のフォルダーに表示されます。