このセクションの内容
•Dr.Web MailDを設定する
•MTAを設定する
•一部のMTAの設定例
この統合方法では、メールメッセージスキャン用の外部フィルターとしてDr.Web MailDをメールサーバーに直接接続することになります。Milter、Spamd、またはRspamdインターフェースを使用するあらゆるメールサーバー(Exim、Sendmail、Postfixなど)がサポートされています。Postfixメールサーバーを使用する場合、コンポーネントはSMTPモードでも動作します(SMTPモードの動作原理の詳細については、Dr.Web vxCubeとの統合を参照)。
Dr.Web MailDのパラメータを設定する
1. Milter、Spamd、Rspamd経由の接続
お使いのメールサーバーにDr.Web MailDを統合するには、設定ファイルの[MailD]で次のパラメータの値を編集します。
•Dr.Web MailDのMTAとの統合パラメータ。まず、使用するインターフェース(Milter、Spamd、Rspamd)を決定し、MTA接続のパラメータと、選択したインターフェースで受信するメールスキャンのパラメータを指定する必要があります。特定のインターフェースを介してMTAとの統合を制御するDr.Web MailDのすべてのパラメータには、その名前にそれぞれのプレフィックス(Milter*、Spamd*、Rspamd*)が付いています。
1.<interface>Socketは、対応するインターフェースを介してMTAからスキャン済みメールメッセージを取得するためにDr.Web MailDによって使用されるUNIXまたはネットワークソケットです。
2.メールメッセージスキャンの長さとリソース強度を制限するパラメータ(ScanTimeout、HeuristicAnalysis、PackerMaxLevel、ArchiveMaxLevel、MailMaxLevel、ContainerMaxLevel、MaxCompressionRatio)。詳細な調整が必要ない場合は、これらのパラメータの値を変更しないでください。
3.メールフィルタリングルールの詳細な設定については、デフォルトのメールスキャン用Luaスクリプトを編集してください。
•メールメッセージスキャン中のDr.Web MailDの一般的な動作パラメータ。TemplateContactsパラメータでは、脅威やスパムが検出された場合のメッセージ送信先となるメールサーバー管理者のアドレスを指定します。ReportLanguagesパラメータでは、サービスレポートの生成時に使用する言語を指定します。
RepackPasswordパラメータの値で、再圧縮(repack)時にメールメッセージに追加される、脅威を含む保護されたアーカイブ用のパスワードの生成方法を指定します。これらのパラメータの詳細については、該当するセクションを参照してください。
すべての設定を調整したら、Dr.Web for UNIX Mail Serversを次のコマンドで再起動します。
設定デーモンDr.Web ConfigDは、次のコマンドでも再起動できます。
# service drweb-configd restart
|
|
Milterを介してMTAとやり取りする場合、Luaスクリプトはメッセージに適用されるアクションを返します。
Spamdを介して対話する場合、Luaスクリプトは、SPAMまたはTHREATという単語を含むreport変数を返します。その結果はMTAの設定(Eximの場合はACLなど)に従って処理され、メッセージが拒否されるか、送信者が警告を受けることになります。
Rspamdを介して対話する場合、Luaスクリプトは、ADD_HEADERまたはREJECTのいずれかの値を持つアクション変数を返します。その結果はMTAの設定(Eximの場合はACLなど)に従って処理され、ヘッダーが結果に追加される(さらに、受信者に送信される)か、または拒否されます。
|
2. SMTPモードの接続
お使いのメールサーバーにDr.Web MailDを統合するには、設定ファイルの[MailD]セクションで次のパラメータの値を編集します。
1.SmtpSocket - MTAからチェック対象のメールメッセージを取得するためにDr.Web MailDによって使用されるUNIXまたはネットワークソケット。
2.SmtpSenderRelay - 処理済みのメールメッセージを送信するためにDr.Web MailDによって使用されるUNIXまたはネットワークソケット。
3.追加パラメータ(タイムアウト、利用可能な通信プロトコル、デバッグログへの出力)。パラメータにはSmtpプレフィックスが付きます。詳細な調整が必要ない場合は、これらのパラメータの値を変更しないでください。
4.メールフィルタリングルールの詳細な設定については、デフォルトのメールスキャン用Luaスクリプトを編集してください。
すべての設定を調整したら、Dr.Web for UNIX Mail Serversを次のコマンドで再起動します。
設定デーモンDr.Web ConfigDは、次のコマンドでも再起動できます。
# service drweb-configd restart
|
MTAのパラメータを設定する
1. Milter、Spamd、Rspamd経由の接続
MTAとDr.Web MailDの間のインタラクションを有効にするには、メールサーバーの設定を編集します。
1.メールメッセージをスキャンするときにMTAとDr.Web MailDのインタラクションに使用されるインターフェース(Milter、Spamd、Rspamd)を指定します。
2.選択したインターフェースを介してMTAをDr.Web MailDに接続するためのパラメータを指定します(使用するソケットは、Dr.Web MailD設定にある、対応するインターフェースの<interface>Socketパラメータで指定されているものと一致する必要があります)。
3.インタラクションインターフェースを介してメールのスキャン結果を受信した後に、MTAが実行するアクションを指定します。
設定の変更後、MTAを再起動します。
2. SMTPモードの接続
MTAとDr.Web MailDの間のインタラクションを有効にするには、メールサーバーの設定を編集します。
1.Dr.Web MailDにメールメッセージを送信するためのクライアントのパラメータを設定します。
2.Dr.Web MailDによってチェックされたメッセージを送信するためのMTAのパラメータを設定します。
3.指定したソケットを介したDr.Web MailDへのMTA接続のパラメータを設定します。
よく使われるMTAの設定例
以下はMTA Postfix、Sendmail、Exim、CommuniGate Proの典型的な設定の例です。SMTPモードに加えて、Milter、Spamd、Rspamdのインターフェースを介し、メールメッセージの外部フィルターとしてDr.Web MailDを接続します。
|
以下の例では、<MailD socket>、<MailD IP address>、および<MailD port>の値を、Dr.Web MailD設定の<interface>Socketパラメータで指定されているDr.Web MailDソケットのパラメータに置き換える必要があります。ここで<interface>は、選択したMTAインターフェースに対応するパラメータの名前にある、またはSmtpSocketパラメータ(SMTPモードの場合)にあるプレフィックスです。SMTPモードではさらに、<Postfix socket>の値を、Dr.Web MailD設定のSmtpSocketRelayパラメータで指定したPostfixソケットの値に置き換える必要があります。
たとえば、Dr.Web MailDがネットワークソケットを使用してMilterインターフェース経由でMTAと統合され、MTAとDr.Web MailDの両方がローカルホスト上で動作し、Dr.Web MailDがポート12345でMilter経由の接続をリッスンする場合、この値は、Dr.Web for UNIX Mail Servers設定ファイルの[MailD]セクションでMilterSocketパラメータとして指定する必要があります。MTA設定では、<MailD socket>変数の値に127.0.0.1:12345を、<MailD IP address>変数のアドレスに127.0.0.1を、<MailD port>変数の値に12345をそれぞれ指定する必要があります。
場合によっては、Dr.Web MailDとの接続のソケットアドレスに、プレフィックス<type>と、MTA設定で使用されるアドレスのタイプ(inet、inet6、unix)を追加する必要があります。
|
1. Postfix
•Milter:
MTA設定ファイルmain.cfに以下の行を追加します。
smtpd_milters = <type>:<MailD socket>
milter_content_timeout = 300s
milter_default_action = tempfail
milter_protocol = 2
|
|
smtpd_miltersおよびmilter_protocolパラメータのみが必須です。それ以外のパラメータは省略できます。
|
•SMTPモードの場合:
▫MTA設定ファイルmain.cfに以下の行を追加します。
# Client parameters for sending email messages to MailD to be checked
scan unix - - n - 10 smtp
-o smtp_send_xforward_command=yes
-o disable_mime_output_conversion=yes
-o smtp_generic_maps=
# MTA parameters for sending messages checked by Dr.Web MailD
<Postfix socket> inet n - n - 10 smtpd
-o content_filter=
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks,no_milters
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_relay_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o smtpd_authorized_xforward_hosts=127.0.0.0/8
|
▫MTA設定ファイルmain.cfに以下の行を追加します。
content_filter = scan:<MailD socket>
receive_override_options = no_address_mappings
|
|
Dr.Web MailDとPostfixのホストが異なる場合、mynetworksとauthorized_xforward_hostsの値はDr.Web MailDホストの値に置き換える必要があります。
|
2. Sendmail
•Milter:
MTAプロトタイプ設定ファイルsendmail.mcに以下の行を追加します。
INPUT_MAIL_FILTER(`drweb-milter', `S=<MailD socket>, F=T')
|
サンプルファイルsendmail.mcを変更したら、次のいずれかのコマンドで、このファイルをアクティブな設定ファイルsendmail.cfに変更します。
make -C /etc/mail
sendmailconfig
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
|
|
上記のコマンドはすべて、Sendmailの設定ファイルが/etc/mailディレクトリにあることを前提としています。
|
3. Exim
•Spamd:
MTA設定ファイルexim.confに以下の行を追加します。
spamd_address = <MailD socket>
acl_smtp_data = acl_check_data
acl_check_data:
warn spam = nobody:true
add_header = X-Spam_score: $spam_score\n\
X-Spam_score_int: $spam_score_int\n\
X-Spam_bar: $spam_bar\n\
X-Spam_report: $spam_report
deny message = This message scored $spam_score spam points.
spam = nobody:true
condition = ${if >{$spam_score_int}{10000}{true}{false}}
accept message = This message scored $spam_score spam points.
spam = nobody:true
condition = ${if >{$spam_score_int}{1000}{true}{false}}
remove_header = Subject
add_header = Subject: [SPAM] $rh_Subject
|
•Rspamd:
MTA設定ファイルexim.confに以下の行を追加します。
spamd_address = <MailD socket> variant=rspamd
acl_smtp_data = acl_check_data
acl_check_data:
# Add header fields
warn spam = nobody:true
add_header = X-Spam_score: $spam_score\n\
X-Spam_score_int: $spam_score_int\n\
X-Spam_bar: $spam_bar\n\
X-Spam_report: $spam_report
# Reject the message with proper description if Rspamd filter tells to do so
deny spam = nobody:true
message = ${extract{2}{:}{$spam_action}}
condition = ${if eq{${extract{1}{:}{$spam_action}}}{reject}}
# Accept the message otherwise
accept
|
|
Dr.Web MailDとの統合はバージョン4.6(またはそれ以降)のEximで、オプションWITH_CONTENT_SCAN=yesでコンパイルした場合に利用できます。
|
4. CommuniGate Pro
•Rspamd:
1.CommunigateProと連動するには特別なモジュールが必要です。これはDr.Webリポジトリに含まれており、標準のパッケージマネージャーを介してインストールできます。
Debian、Ubuntu、Mintの場合:
# apt-get install drweb-cgp-plugin
|
Red Hat Enterprise LinuxとCentOSの場合:
# yum install drweb-cgp-plugin
|
Fedoraの場合:
# dnf install drweb-cgp-plugin
|
2.モジュールは/opt/drweb.com/share/cgp/にインストールされます。このディレクトリに移動し、ファイルCgpDrweb_AS_AV.pyを次のように実行可能にします。
# cd /opt/drweb.com/share/cgp/
# chmod +x CgpDrweb_AS_AV.py
|
3.Webインターフェースを使用してCommuniGate Proを設定します。
▫Setting → General → Helpersに移動します。次のようにモジュールをCommuniGate Proに接続します。
▪Content Filteringセクションで新しいフィルターを設定し、Enabledに切り替えます。
▪フィルター名を指定します(例:CgpDrweb_AS_AV)。
▪Program Pathパラメータで、スクリプトファイルへのパス(GNU/Linuxの場合は/opt/drweb.com/share/cgp/CgpDrweb_AS_AV.py)と、スクリプトを起動するためのオプション(-rはソケットのアドレスとポート、-uまたは--rspamd-unix-socketはUNIXソケットへのパス、--debugはデバッグモードで起動)を指定します。
Helpersを使用できるように、ExpertまたはAdvancedビューモードを有効化します(CommunigatePro設定のPreferences → Interface)。
可能なすべてのオプションのリストを表示するには、次のコマンドを実行します。
# ./CgpDrweb_AS_AV.py --help
|
▪変更内容を保存します。
▫Setting → Mail → Rulesに移動します。
▪新しいルール名(CgpDrweb_AS_AVなど)を指定し、Add Ruleをクリックします。
▪Highestルール設定を選択し、変更内容を保存します。
▪ルール名の右側にあるEditをクリックします。
▪DataドロップダウンメニューでMessage Sizeを選択し、Operationフィールドでless thanを選択し、Parameterフィールドで40960000を指定します。
▪ActionフィールドでExternalFilterを選択し、Parameterで、以前に作成したフィルターの名前(この場合はCgpDrweb_AS_AV)を選択します。
▪変更内容を保存します。
▫脅威検出レスポンスルールを追加し、その名前(Drweb_threatsなど)を指定して、Add Ruleをクリックします。
▪ルールのプライオリティー5を指定し、変更内容を保存します。
▪ルールの右側にあるEditをクリックします。ルールの条件を2回追加します。
·DataドロップダウンリストでHeader Fieldを選択し、Operationフィールドでisを選択し、ParameterフィールドでX-Spam-Action: rejectを指定します。
·DataドロップダウンリストでHeader Fieldを選択し、Operationフィールドでisを選択し、ParameterフィールドでX-Spam-Symbol-1: threat*を指定します。
ActionフィールドでReject withを選択します。Parameterでテキスト(The message contains threat(s)など)を指定します。
変更内容を保存します。
▫脅威検出レスポンスルールを追加し、その名前(Drweb_spamなど)を指定して、Add Ruleをクリックします。
▪ルールのプライオリティー5を指定し、変更内容を保存します。
▪ルールの右側にあるEditをクリックします。ルールの条件を追加します。
·DataドロップダウンメニューでHeader Fieldを選択します。
·Operationフィールドでisを選択します。
·ParameterフィールドでX-Spam-Action: tagを選択します。
▪ActionフィールドでTag Subjectを選択し、Parameterでヘッダープレフィックス([SPAM]など)を指定します。
▪変更内容を保存します。
4.以下のファイルのコンテンツをコピーして、hook.luaとして保存します。
--Message scanning procedure,
--transmitted using the Rspamd protocol
function rspamd_hook(ctx)
--Message scanning to detect threats
if ctx.message.has_threat() then
return {
score = 900,
threshold = 100,
action = "reject",
symbols = {
{
name = "threat",
score = 900
}
}
}
end
--Message scanning to detect spam
if ctx.message.spam.score > 100 then
return {
score = ctx.message.spam.score,
threshold = 100,
action = "tag",
symbols = {
{
name = "spam",
score = ctx.message.spam.score
}
}
}
end
return {
score = ctx.message.spam.score,
threshold = 100,
action = "accept",
symbols = {
{
name = "The message is clean",
score = 0
}
}
}
end
|
5.次のコマンドを実行します。
# drweb-ctl cfset MailD.RspamdHttpSocket <socket address>:<port>
# drweb-ctl cfset MailD.RspamdHook <path to hook>
|
フックのコード(hook.lua)を編集する場合は、変更後に次のようにDr.Web ConfigDを再起動する必要があります。
# service drweb-configd restart
|
|