Sun Java ロゴ     前へ      目次      索引      次へ     

Sun ロゴ
Sun Java System Messaging Server 6 2004Q2 管理ガイド 

第 14 章
スパム防止とウィルス防止のプログラムを統合する

この章では、Messaging Server に用意されているソフトウェアのフックを使って、Brightmail および SpamAssassin のスパム防止 / ウィルス防止プログラムを統合し構成する方法について説明します。


この章のスパム防止機能についての参照は、該当する場合には、ウィルス機能にも当てはまります。Brightmail は、スパム防止とウィルス防止の両方の機能を提供します。SpamAssassin はスパム防止のみを提供します。


Messaging Server から見ると、ほとんどのスパム防止ソリューションはほぼ同じことを実行します。Messaging Server は、メッセージを分析し、スパムかどうかの判定を返すスパム防止ソフトウェアに、メッセージのコピーを送信します。SpamAssassin は、スパムスコアを含む判定も返します。スパムスコアは、メッセージがスパムである確率を数値で示すものです。Messaging Server はこの判定を読み取り、Sieve スクリプトを使って何らかの処置をとります。この章では、これら市販のスパム防止プログラムを使用するために Messaging Server に備えられているフックを、設定例とともに説明します。

この章には、以下の節があります。


サードパーティのスパム防止プログラムを配備および設定する

サードパーティのスパム防止プログラムの配備と設定に関して、管理者が決定する必要があることはほんのわずかです。その決定事項は、次のとおりです。


以前のバージョンの Messaging Server でサポートされていたのは、Brightmail フィルタ処理技術のみでした。このため、キーワードとオプションには、sourcebrightmail または Brightmail_config_file のような名前が付けられていました。これらのキーワードとオプションは、sourcespamfilter またはspamfilter_config_file などの、より一般的な名前に変更されています。以前の Brightmail の名前は、互換性のために保持されています。


フィルタ処理を行うメッセージを指定する

Messaging Server には、フィルタするメッセージを指定する方法が多数あります。このシステムでは、メッセージをユーザー、ドメイン、またはドメインごとにフィルタするよう設定できます。この節では以下の内容について説明します。

ユーザーレベルのフィルタ処理を指定するには

どのユーザーをスパムのフィルタ処理の対象にするかを指定できます。このような使い方の例は、スパム防止またはウィルス防止のフィルタ処理を ISP の顧客に対するプレミアムサービスとして提供する場合です。ユーザーレベルのフィルタ処理を指定するための一般的な手順は、次のとおりです。

  1. option.dat ファイルの LDAP_OPTIN を使って、指定したユーザーでスパムフィルタ処理を起動する LDAP 属性を指定します。
  2. LDAP_OPTIN=mailAntiUBEService

  3. mailAntiUBEService をスパムのフィルタ処理の対象となるユーザーエントリに設定します。
  4. mailAntiUBEService の値はサーバーによって異なります。Brightmail の場合、有効な値は spam (スパム用のフィルタ) および virus (ウィルス用のフィルタ) です。SpamAssassin の場合、有効な値を任意の文字列にすることができます。ただし、分かりやすくするために spam にすることをお勧めします。複数値を持つ属性 (Brightmail) として使用する場合、それぞれの値に個別の属性値を入力する必要があります。
    例 :

    mailAntiUBEService: spam
    mailAntiUBEService: virus

この例では、Brightmail が使用されていると仮定しています。また、option.dat ファイルで LDAP_OPTINmailAntiUBEService に設定されているとします。Otis Fanning というユーザーには、そのユーザーエントリの mailAntiUBEService 属性が spam および virus に設定されています。このユーザーのメールには、スパムとウィルスのフィルタ処理が行われます。コード例 14-3 は、Otis Fanning に対して Brightmail が有効になっているユーザーエントリを示しています。

コード例 14-1 Brightmail 用の LDAP ユーザーエントリの例 

dn: uid=fanning,ou=people,o=sesta.com,o=ISP

objectClass: person

objectClass: organizationalPerson

objectClass: inetOrgPerson

objectClass: inetUser

objectClass: ipUser

objectClass: inetMailUser

objectClass: inetLocalMailRecipient

objectClass: nsManagedPerson

objectClass: userPresenceProfile

cn: Otis Fanning

sn: fanning

initials: OTF

givenName: Otis

pabURI: ldap://ldap.siroe.com:389/ou=fanning,ou=people,o=sesta.com,o=isp,o=pab

mail: Otis.Fanning@sesta.com

mailAlternateAddress: ofanning@sesta.com

mailDeliveryOption: mailbox

mailHost: manatee.siroe.com

uid: fanning

dataSource: iMS 5.0 @(#)ims50users.sh 1.5a 02/3/00

userPassword: password

inetUserStatus: active

mailUserStatus: active

mailQuota: -1

mailMsgQuota: 100

mailAntiUBEService: virus

mailAntiUBEService: spam

SpamAssassin を使用する場合、mailAntiUBEService: virus 以外のエントリは同様に扱われます。その他の例と詳細については、この章のサードパーティのソフトウェアについて説明している節を参照してください。

ドメインレベルのフィルタ処理を指定するには

どのドメインをスパムのフィルタ処理の対象にするかを指定できます。この機能の使い方の例は、スパム防止またはウィルス防止のフィルタ処理を ISP ドメインの顧客に対するプレミアムサービスとして提供される場合です。ドメインレベルのフィルタ処理を指定するための一般的な手順は、次のとおりです。

  1. option.dat ファイルの LDAP_OPTIN を使って、指定したドメインでスパムフィルタ処理を起動する LDAP 属性を指定します。
  2. LDAP_DOMAIN_ATTR_OPTIN=mailAntiUBEService

  3. mailAntiUBEService をスパムのフィルタ処理の対象となるドメインエントリに設定します。
  4. mailAntiUBEService の有効な値はサーバーによって異なります。Brightmail の場合、有効な値は spam (スパム用のフィルタ) および virus (ウィルス用のフィルタ) です。SpamAssassin の場合、有効な値を任意の文字列にすることができます。ただし、分かりやすくするために spam にすることをお勧めします。複数値を持つ属性 (Brightmail) として使用する場合、それぞれの値に個別の属性値を入力する必要があります。
    例 :

    mailAntiUBEService: spam
    mailAntiUBEService: virus

ドメインレベルのフィルタ処理の例

この例では、Brightmail が使用されていると仮定しています。また、option.dat ファイルで LDAP_DOMAIN_ATTR_OPTINmailAntiUBEService に設定されているとします。Sun LDAP スキーマ 1 の DC ツリーの sesta.com ドメインエントリでは、mailAntiUBEService 属性は spam および virus に設定されています。Sun LDAP スキーマ 2 の場合、ドメインエントリに mailAntiUBEService を設定して、スパムのフィルタ処理の対象にします。

sesta.com に送信されるすべてのメールは、Brightmail によってスパムおよびウィルス用にフィルタ処理されます。コード例 14-4 に、ドメインエントリを示します。

コード例 14-2 Brightmail 用の LDAP ドメインエントリの例

dn: dc=sesta,dc=com,o=internet

objectClass: domain

objectClass: inetDomain

objectClass: mailDomain

objectClass: nsManagedDomain

objectClass: icsCalendarDomain

description: DC node for sesta.com hosted domain

dc: sesta

inetDomainBaseDN: o=sesta.com,o=isp

inetDomainStatus: active

mailDomainStatus: active

mailDomainAllowedServiceAccess: +imap, pop3, http:*

mailRoutingHosts: manatee.siroe.com

preferredMailHost: manatee.siroe.com

mailDomainDiskQuota: 100000000 100000000

mailDomainMsgQuota: -1 -1

mailClientAttachmentQuota: 5 5

mailAntiUBEService: spam

mailAntiUBEService: virus

SpamAssassin を使用する場合、mailAntiUBEService: virus 以外のエントリは同様に扱われます。その他の例と詳細については、この章の特定のサードパーティのソフトウェアについて説明している節を参照してください。

チャネルレベルのフィルタ処理を指定するには

ユーザーまたはドメインによるスパムのフィルタ処理の指定は基準が明確ですが、チャネルによる指定はあまり明確ではありません。ソースチャネルまたは宛先チャネルによるフィルタ処理を指定する理由は、スパムのフィルタ処理の柔軟性と精度を高めるためです。

Messaging Server により、ソースチャネルまたは宛先チャネルによるフィルタ処理を指定できます。このためのメカニズムは、表 14-1 で説明するチャネルキーワードです。次の例は、チャネルレベルのフィルタ処理の設定方法を示しています。

  1. メッセージを特定のバックエンドメッセージストアのホストに送信するすべての SMTP サーバーの imta.cnf ファイルに書き換えルールを追加します。
    例:
  2. msg_store1.siroe.com   $U@msg_store1.siroe.com

  3. その書き換えルールと対応するチャネルを destinationspamfilteroptin キーワードを使用して追加します。
    例:
  4. tcp_msg_store1 subdirs 20 backoff "pt5m" "pt10" "pt30" "pt1h" ¥
    "pt2h" "pt4h" maxjobs 1 pool IMS_POOL fileinto $U+$S@$D ¥
    destinationspamfilteroptin spam msg_store1.siroe.com

表 14-1 スパムフィルタ用の MTA チャネルキーワード

チャネルキーワード

説明

destinationspamfilteroptin

これらのサービスがユーザーまたはドメインによって LDAP_OPTIN LDAP 属性で指定されていない場合でも、このチャネル宛のすべてのメッセージがフィルタ処理されることを指定する。キーワードの後にはフィルタパラメータが続く。使用できるパラメータはフィルタ処理プログラムによって異なる。たとえば、Brightmail パラメータは spam または virus または spam,virus。SpamAssassin パラメータは spam

この例では、メッセージストア宛のメールはすべて、Brightmail によってスパムまたはウィルスでないかスキャンされる

ims-ms destinationspamfilteroptin spam,virus. . .

sourcespamfilteroptin

これらのサービスがユーザーまたはドメインによって LDAP_OPTIN LDAP 属性で指定されていない場合でも、このチャネルから発信されるすべてのメッセージがフィルタ処理されることを指定する。キーワードの後にはシステム全体のデフォルトフィルタが続く。使用できるパラメータはフィルタ処理プログラムによって異なる。たとえば、Brightmail の場合のパラメータは、spam または virus または spam,virus。SpamAssassin の場合、パラメータは spamswitchchannel が有効な場合、このキーワードは switched-to チャネルに入れられる

チャネルレベルのフィルタ処理の例

例 1 : Brightmail を使って、MTA リレーから siroemail というバックエンドメッセージストアへのすべてのメールを、スパムおよびウィルス用にフィルタ処理します。書き換えルールは、これらのメッセージを tcp_siroemail という MTA チャネル経由で送信するよう設定されています。

  1. メッセージをバックエンドメッセージストアのホストに送信する imta.cnf ファイルに、書き換えルールを追加します。
    例:
  2. msg_store1.siroe.com   $U@msg_store1.siroe.com

  3. その書き換えルールと対応するチャネルを destinationspamfilteroptin キーワードを使用して追加します。
    例:
  4. tcp_msg_store1 subdirs 20 backoff "pt5m" "pt10" "pt30" "pt1h" ¥
    "pt2h" "pt4h" maxjobs 1 pool IMS_POOL fileinto $U+$S@$D ¥
    destinationspamfilteroptin spam, virus msg_store1.siroe.com

例 2 : MTA を通過するすべての受信メールをフィルタ処理します。

tcp_local smtp mx single_sys remotehost inner switchchannel ¥
identnonelimited subdirs 20 maxjobs 7 pool SMTP_POOL ¥
maytlsserver maysaslserver saslswitchchannel tcp_auth ¥ sourcespamfilteroptin spam tcp-daemon

例 3 : MTA を通過するすべてのインターネットへの発信メールをフィルタ処理します。

tcp_local smtp mx single_sys remotehost inner switchchannel ¥
identnonelimited subdirs 20 maxjobs 7 pool SMTP_POOL ¥
maytlsserver maysaslserver saslswitchchannel tcp_auth ¥ destinationspamfilteroptin spam tcp-daemon

例 4 : MTA を通過するすべての発信および受信メールをフィルタ処理します。

tcp_local smtp mx single_sys remotehost inner switchchannel ¥
identnonelimited subdirs 20 maxjobs 7 pool SMTP_POOL ¥
maytlsserver maysaslserver saslswitchchannel tcp_auth ¥ sourcespamfilteroptin spam destinationspamfilteroptin spam ¥
tcp-daemon

例 5 : ローカルのメッセージストア宛の mailAntiUBEService 属性を持つユーザーまたはドメインのメールをフィルタ処理します。

tcp_local smtp mx single_sys remotehost inner switchchannel ¥
identnonelimited subdirs 20 maxjobs 7 pool SMTP_POOL ¥
maytlsserver maysaslserver saslswitchchannel tcp_auth ¥
destinationspamfilteroptin spam tcp-daemon

例 6 : ユーザー単位の optin を使わずに、2 層システムにあるローカルメッセージストア宛のすべてのメールをフィルタ処理します。

ims-ms smtp mx single_sys remotehost inner switchchannel ¥
identnonelimited subdirs 20 maxjobs 7 pool SMTP_POOL ¥
maytlsserver maysaslserver saslswitchchannel tcp_auth ¥
destinationspamfilteroptin spam tcp-daemon

例 7 : Brightmail を使用して、すべての受信および発信メールをスパムおよびウィルス用にフィルタ処理します。

tcp_local smtp mx single_sys remotehost inner switchchannel ¥
identnonelimited subdirs 20 maxjobs 7 pool SMTP_POOL ¥
maytlsserver maysaslserver saslswitchchannel tcp_auth ¥
destinationspamfilteroptin spam,virus sourcespamfilteroptin ¥
spam,virus tcp-daemon

スパムメッセージに対して実行するアクションを指定する

これまでに説明したように、スパム防止プログラムは、メッセージを分析し、スパムかどうかの判定を Messaging Server に返します。そのあと Messaging Server は、メッセージに応じたアクションを実行します。スパム防止プログラムは、通常、文字列または NULL 値を MTA に返して、メッセージがスパムであることを示します。プログラムによってはスパムスコアも返します。スパムスコアは、スパムであるメッセージまたはスパムではないメッセージの確率を示す数値です。このスコアは、アクションシーケンスの一部として使用できます。

アクションは、Sieve メールフィルタ処理言語を使って指定します。指定できる Sieve アクションは、メッセージの破棄、フォルダへのファイリング、ヘッダーの追加、件名へのタグの追加などです。if-then-else ステートメントを含む複雑な Sieve スクリプトも指定できます。複雑な Sieve 構文については、RFC 3028 を参照してください。

Sieve スクリプトは、表 14-2 で説明する MTA スパムフィルタオプションで指定します。主なスパムフィルタアクションのオプションは NULL 値がスパム判定値として返された時に実行される Sieve ルールを指定する Spamfilter_null_action と、文字列がスパム判定として返された時に実行される Sieve ルールを指定する Spamfilter_string_action です。どちらの値も option.dat に格納する必要があります。

例 1: このオプションの行は、NULL 判定値を含むスパムメッセージをファイル SPAM_CAN にファイリングします。

spamfilter_null_action=data:,require "fileinto"; fileinto "SPAM_CAN";

同じアクションを、次の文字列を返すスパムメッセージで実行できます。

spamfilter_string_action=data:,require "fileinto"; fileinto "SPAM_CAN";

例 2: このオプション行は、文字列判定を含むスパムメッセージを、MTA に返された判定文字列のあとに指定されているファイル内にファイリングします。$U がこれを実行します。つまり、返される判定文字列が spam の場合、メッセージは spam というファイルに保存されます。

spamfilter_null_action=data:,require "fileinto"; fileinto "$U";

例 3: この行は、文字列判定値を含むスパムメッセージを破棄します。

spamfilter_string_action=data:,discard

例 4: 次の行により、文字列判定値でスパムであると判断された各メッセージに、ヘッダー Spam-test: FAIL が追加されます。

spamfilter_string_action=data:,require ["addheader"];addheader "Spam-test: FAIL";

例 5: 次の行により、文字列 [PROBABLE SPAM] がスパムメッセージの件名に追加されます。

spamfilter_string_action=data:,addtag "[PROBABLE SPAM]";

例 6: この行により、ヘッダーに resent-from および User-1 がある場合は、文字列判定値が仮定され、スパムメッセージがメールボックス testspam にファイリングされます。このヘッダーがない場合は、単にメッセージが spam にファイリングされます。

spamfilter_string_action=data:,require "fileinto";¥
  if header :contains ["resent-from"] ["User-1"] {¥
  fileinto "testspam";¥
  } else {¥
  fileinto "spam";};

判定文字列はほとんどのスパムフィルタソフトウェアで設定できるため、返される文字列に応じてさまざまなアクションを指定できます。これは、対応するペアの spamfilter_verdict_n オプションと spamfilter_action_n オプションを使って実行できます。

例 7: これらの対応するペアのオプションは、判定文字列 remove が返されたスパムメッセージを破棄します。スパム判定文字列の指定方法については、該当のスパムフィルタの節を参照してください。

spamfilter_verdict_0=kill
spamfilter_action_0=data:,discard

表 14-2 MTA スパムフィルタオプション (options.dat

SpamAssasin 用の MTA オプション

説明

Spamfilter_config_file

SpamAssassin 設定ファイルのフルパスとファイル名。デフォルト : なし

Spamfilter_library

SpamAssassin 共有ライブラリのフルパスとファイル名。デフォルト : なし

Spamfilter_optional

フィルタ処理ライブラリによって報告された障害を、一時的な処理の失敗として処理するか無視するかを制御する。デフォルト値 0 は、スパムのフィルタ処理の問題により一時的な処理の障害が発生すると指定する。この値を 1 に変更すると、スパムフィルタの処理は場合によってはライブラリ障害のフィルタ処理をスキップするが、すべてではない。特に、システムがライブラリコードを返さずにスタックすると、一部の MTA もスタックすることがある

デフォルト : 0

LDAP_optin

ユーザー単位で SpamAssassin を有効にするために使用する LDAP 属性の名前。これは、inetMailUser オブジェクトクラス内の属性である必要がある。定義済みの属性がない場合、mailAntiUBEService を使用する

属性自体 (例 : mailAntiUBEService) には複数の値を指定でき、大文字小文字は区別される。SpamAssassin の場合、値は小文字の spam にする必要がある

デフォルト : なし

LDAP_domain_attr_optin

ドメイン単位で SpamAssassin を有効にするために使用する LDAP 属性の名前。宛先ドメインに適用される。オブジェクトクラス mailDomain 内にある必要がある以外は、前述の LDAP_optin と同様

デフォルト : なし

Spamfilter_null_optin

属性 mailantiUBEservice の値として見つかった場合に、属性がそこにはないかのように MTA を機能させる文字列を指定する。つまり、そのエントリに対するフィルタ処理を無効にする。詳細は、「SpamAssassin でフィルタ処理するメッセージを指定する」を参照

デフォルト : 空の文字列。空の optin 属性は、デフォルトでは無視される。これは、iPlanet Messaging Server 5.2 からの変更である。5.2 では、空の optin 属性は空の optin リストでフィルタ処理をトリガした。5.2 の動作は、SPAMFILTER_NULL_OPTIN を実際には発生することのない文字列に設定することによって復元できる

Spamfilter_null_action

SpamAssassin の判定が NULL で返された場合にメッセージの処理を指定する Sieve ルール。Sieve 式は、ファイル URL を使って外部的に保存できる
例 : file:///var/opt/SUNWmsgsr/config/null_action.sieve
また、サーバーがスパムの送信に使用されていた、関係のない相手に非配信通知を配信する傾向があるため、スパムを拒否するときに Sieve 拒否アクションを使用しないこと
デフォルト : data:,discard;

Spamfilter_string_action

判定が文字列で返された場合にメッセージの処理を指定する Sieve ルール。Sieve 式は、ファイル URL を使って外部的に保存できる
例 : file:///var/opt/SUNWmsgsr/config/null_action.sieve

また、サーバーがスパムの送信に使用されていた、関係のない相手に非配信通知を配信する傾向があるため、スパムを拒否するときに Sieve 拒否アクションを使用しないこと

デフォルト : data:,require "fileinto"; fileinto "$U;

ここで、$U verdict が返した文字列

spamfilter_verdict_n

spamfilter_verdict_n および spamfilter_action_n は対応するペアであり、n は 0 から 9 の数字。これらのオプションにより、任意の判定文字列に Sieve フィルタを指定できる。これは、spamfilter_verdict_n および spamfilter_action_n を、それぞれ判定文字列および Sieve フィルタに設定することによって行われる。ここで、n は 0 から 9 の整数である。たとえば、サイトで「reject」判定によって Sieve 拒否アクションを発生させるには、次のように指定する

spamfilter_verdict_0=reject
spamfilter_action_
0=data:,require "reject"; reject "Rejected by spam filter";

spamfilter_verdict_0 オプションと対応するアクションのオプションすべてのデフォルト値は、空の文字列である

デフォルト : なし

spamfilter_action_n

spamfilter_verdict_n を参照

デフォルト : なし

spamfilter_final

一部のフィルタ処理ライブラリには、受取人アドレスに基づいて一連のアクションを実行する機能がある。spamfilter_final は、フィルタ処理ライブラリに渡される受取人アドレスの指定する。0 はいわゆる中間アドレスを使用し、1 は最終形式の受取人アドレスを送信する

デフォルト : 0

optin_user_carryover

転送はスパムフィルタ処理に対するチャレンジである。forward 配信オプションを指定し、別のユーザーの転送アドレスを指定するユーザーエントリを考慮する。さらに、ユーザーエントリは、一部の固有のフィルタ処理に optin する。フィルタ処理を転送されるメッセージに適用すべきかどうか。これに対し、1 人の特定のユーザーにとって正しいフィルタ処理を選択しても、ほかのユーザーにとっては正しい選択ではない場合もある。また、サイトのセキュリティポリシーに違反する手段としてフィルタ処理操作が省かれることもある

すべてのケースに対応できる 1 つの答えはないため、OPTIN_USER_CARRYOVER は、スパムのフィルタ処理の optin リストが転送されるときに、あるユーザーエントリまたはエイリアスエントリから別のエントリに転送される方法を制御する。これはビットエンコード値である。ビット値には、次のような意味がある

ビット 0 (値 1) : 各 LDAP ユーザーエントリは、以前アクティブだったユーザーまたはドメインの optin よりも無条件で優先される

ビット 1 (値 2) : ユーザーのドメインに optin 属性がある場合、以前アクティブだったユーザー、ドメイン、エイリアスよりも優先される

ビット 2 (値 4) : ユーザーに optin 属性がある場合、以前アクティブだったユーザー、ドメイン、エイリアスよりも優先される

ビット 3 (値 8) : [optin] 非定位置パラメータで指定した optin は、以前アクティブだったユーザー、ドメイン、エイリアスよりも優先される

デフォルト : 0 (ユーザーが別のユーザーに転送する配信オプションを持つ場合、 optin が累積する。このデフォルトにより、転送時にサイトのセキュリティポリシーが有効であることが保証される。ほかの設定では保証されない場合がある)


Brightmail を使用する

Brightmail Inc. は、電子メールサーバー用にスパムとウィルスを防止するソフトウェアソリューションを提供する会社です。Brightmail ソリューションは、Brightmail サーバーおよびスパムとウィルスを防止するルールで構成され、ルールのリアルタイムの更新版は電子メールサーバーにダウンロードされます。

Brightmail の機能

Brightmail サーバーは顧客のサイトに配備されます。Brightmail では、電子メールプローブがインターネット周辺に配置され、新しいスパムを検出します。Brightmail の技術者はリアルタイムでこのスパムを阻止するカスタムルールを作成します。ルールは Brightmail サーバーにダウンロードされます。これもリアルタイムで行われます。Brightmail のデータベースは更新され、Brightmail サーバーは特定のユーザーまたはドメインの電子メールに対してこのデータベースフィルタを使用します。

Brightmail のアーキテクチャ

図 14-1 に、Brightmail のアーキテクチャを示します。

図 14-1

図は、Brightmail と Messaging Server のアーキテクチャを示しています。

Brightmail と Messaging Server のアーキテクチャ

Brightmail Logistics and Operations Center (BLOC) が電子メールプローブからスパムを受信すると、オペレータがただちに適切なスパム防止ルールを作成します。作成されたルールは、Brightmail の顧客のマシンにダウンロードされます。同様に、Symantec Security Response のリアルタイムのウィルスルールが Brightmail から送信されます。これらのルールは顧客の Brightmail サーバーでスパムやウィルスを検出するために使用されます。

MTA は Brightmail SDK を使用して Brightmail サーバーと通信します。MTA は Brightmail からの応答に基づいてメッセージを送信します。MTA はメール (1a) または (1b) を受信すると、Brightmail サーバー (2) にメッセージを送信します。Brightmail サーバーはルールとデータを使用してメッセージがスパムやウィルスであるかどうか判断し (3)、判定を MTA に返します。その判定に基づいて、MTA はメッセージを破棄するか、フォルダに保存するか (4a)、通常どおり宛先に配信するかのいずれかを実行します。

Brightmail SDK はサードパーティのソフトウェアなので、Sun のインストールキットには含まれていません。Brightmail SDK およびサーバーソフトウェアは、Brightmail Inc. から入手する必要があります。MTA には、Brightmail を統合するために Brightmail SDK をロードするかどうか、どこにロードするかを指定する構成設定があります。

SDK がロードされると、Brightmail のメッセージ処理は複数の係数と細分度 (アクティブな処理が「optin」であることを示す、Brightmail で使用される用語) によって決定されます。これは、次の基準に基づいて示されます。

各メッセージ受取人にとっては、上記の optin とデフォルトは組み合わされています。つまり、チャネルのデフォルトがすでにスパムとウィルスの両方に対して指定されていれば、ユーザー単位の optin は不要になります。言い換えると、システム管理者が全員に対してスパムとウィルスのフィルタ処理を行うことを決定すれば、ユーザーにスパムやウィルスの対策を選択させる必要はないということです。システムまたはドメインオプションによってすでにユーザーが optin している場合、処理を optin 解除する (そのサービスを不要とする) ことはできません。また、サービスを optin していて、別のアドレスにメールを転送した場合、そのアドレスはフィルタ処理が実行された後にメールを受信します。

提供されるサービスは、ウィルス検出またはスパム検出の 2 つのみです。Brightmail では、「content-filtering」サービスも提供されますが、この機能は Sieve を使用して提供されるため、Brightmail で Sieve フィルタ処理を実行した場合の付加価値はありません。

メッセージにウィルスが含まれていると判明した場合は、ウィルスを除去するように Brightmail サーバーを設定でき、これによって除去済みのメッセージが MTA に再送信されます。ウィルス除去済みのメッセージが再送信されると、元のメッセージから情報が失われることによって生じる副次的な悪影響があるため、MTA に除去済みのメッセージを再送信しないように Brightmail を設定することをお勧めします。メッセージがスパムである場合、Brightmail からその設定とともに返された判定に基づいて、MTA はメッセージの処理を決定できます。メッセージは、破棄したり、フォルダにファイリングしたり、件名にスパムまたはウィルスとしてタグ付けしたり、Sieve ルールに渡したり、通常どおり INBOX に配信したりできます。

Brightmail サーバーは、MTA と同一システム上に配置することも、別のシステムに配置することもできます。任意の数の MTA を実行する Brightmail サーバーのファームを構築することもできます。Brightmail SDK では、Brightmail 設定ファイルによって使用する Brightmail サーバーが決定されます。

Brightmail の要件とパフォーマンスの考慮

Brightmail を配備する

この節では、次の設定についての Brightmail の配備方法について説明します。

Brightmail のフィルタ処理は、Messaging Server でチャネルまたは LDAP 属性を使用して有効にします。システムでのフィルタ処理という方法は付加的なものです。フィルタ処理はキーワードと属性の両方の組み合わせだからです。

宛先チャネルまたはソースチャネルのユーザーに対する Brightmail 処理をアクティブにするには

  1. Brightmail サーバーをインストールして構成します。
  2. Brightmail をご使用のシステムにインストールする方法については、Brightmail の販売代理店にお尋ねください。

  3. 次の 2 つの MTA オプションを options.dat ファイルに追加して、Brightmail のライブラリと設定ファイルのパラメータを設定します。
  4. spamfilter_Library=path_and_filename_of_libbmiclient.so
    spamfilter_config_file=path_and_filename_of_brightmail_config_file

  5. MTA オプションファイル (表 14-2) と Brightmail 設定ファイル (表 14-3) に適切な Brightmail オプションを指定します。
  6. Brightmail の処理対象となるチャネルと電子メールの方向 (ソースまたは宛先) を指定します。
  7. チャネルブロックにキーワード sourcespamfilteroptin または destinationspamfilteroptin を設定します (「チャネルレベルのフィルタ処理を指定するには」および「MTA 設定ファイル」を参照)。

    sourcespamfilteroptin で、そのチャネルから届くすべてのメッセージが Brightmail ソフトウェアで処理されることを指定します。

    destinationspamfilteroptin で、そのチャネルに入るすべてのメッセージが Brightmail ソフトウェアで処理されることを指定します。

    これらの属性に有効な値は次のとおりです。

    spam - スパム用のフィルタ
    virus - ウィルス用のフィルタ
    spam,virus - スパムおよびウィルス用のフィルタ

例 1 : 受信 MTA リレーから届き、siroe という特定のバックエンドメッセージストアに送信するメールを、スパムおよびウィルス用にフィルタ処理します。メッセージは tcp_siroemail という MTA チャネルを通過します。

例 2 : tcp_local チャネルから MTA を経由するすべての受信メールに対して、Brightmail によってスパム用のフィルタ処理が行われます。

選択したユーザーに対して Brightmail 処理をアクティブにするには

  1. Brightmail ソフトウェアをインストールして構成します。
  2. Brightmail をご使用のシステムにインストールする方法については、Brightmail の販売代理店にお尋ねください。

  3. Brightmail のライブラリおよび設定ファイルのパラメータを設定します。
  4. options.dat ファイルで次の 2 つの MTA オプションを使用します。

    spamfilter_Library=path_and_filename_of_libbmiclient.so
    spamfilter_config_file=path_and_filename_of_brightmail_config_file

  5. MTA オプションファイル (表 14-2) と Brightmail 設定ファイル (表 14-3) に適切な Brightmail オプションを指定します。
  6. 特定のユーザーに対して Brightmail 処理をアクティブにするために使用する LDAP 属性を指定します。
  7. option.dat ファイルで LDAP_OPTIN=mailAntiUBEService を設定します。mailAntiUBEService 以外の LDAP 属性を指定することはできますが、この名前を使用することをお勧めします。

  8. LDAP 属性 mailAntiUBEService を Brightmail 処理の対象となるユーザーエントリに設定します。
  9. mailAntiUBEService の有効な値は、spam (スパム用のフィルタ) と virus (ウィルス用のフィルタ) です。

LDAP_OPTINoption.dat ファイルで mailAntiUBEService に設定されているとします。ユーザーの Otis Fanning が自分のユーザーエントリに spam および virus に設定された mailAntiUBEService 属性を持っている場合、このユーザーのメールは Brightmail によってスパムおよびウィルス用のフィルタで処理されます。コード例 14-3 に、Brightmail によって Otis Fanning のユーザーエントリが有効にされた例を示します。

コード例 14-3 Brightmail 用の LDAP ユーザーエントリの例

dn: uid=fanning,ou=people,o=sesta.com,o=ISP

objectClass: person

objectClass: organizationalPerson

objectClass: inetOrgPerson

objectClass: inetUser

objectClass: ipUser

objectClass: inetMailUser

objectClass: inetLocalMailRecipient

objectClass: nsManagedPerson

objectClass: userPresenceProfile

cn:Otis Fanning

sn:fanning

initials: OTF

givenName: Otis

pabURI: ldap://ldap.siroe.com:389/ou=fanning,ou=people,o=sesta.com,o=isp,o=pab

mail: Otis.Fanning@sesta.com

mailAlternateAddress: ofanning@sesta.com

mailDeliveryOption: mailbox

mailHost: manatee.siroe.com

uid: fanning

dataSource: iMS 5.0 @(#)ims50users.sh 1.5a 02/3/00

userPassword: password

inetUserStatus: active

mailUserStatus: active

mailQuota: -1

mailMsgQuota: 100

mailAntiUBEService: virus

mailAntiUBEService: spam

システム上の選択したドメインに対して Brightmail 処理をアクティブにするには

  1. Brightmail ソフトウェアをインストールして構成します。
  2. Brightmail をご使用のシステムにインストールする方法については、Brightmail の販売代理店にお尋ねください。

  3. Brightmail のライブラリおよび設定ファイルのパラメータを設定します。
  4. options.dat ファイルで次の 2 つの MTA オプションを設定します。

    spamfilter_Library=path_and_filename_of_libbmiclient.so
    spamfilter_config_file=path_and_filename_of_brightmail_config_file

  5. MTA オプションファイル (表 14-2) と Brightmail 設定ファイル (表 14-3) に適切な Brightmail オプションを指定します。
  6. 特定のドメインに対して Brightmail 処理をアクティブにするために使用する LDAP 属性を指定します。
  7. option.dat ファイルで LDAP_DOMAIN_ATTR_OPTIN=mailAntiUBEService を設定します。別の LDAP 属性名を指定することはできますが、Messaging Server スキーマの整合性が保たれるように、この名前を使用することをお勧めします。

  8. LDAP 属性 mailAntiUBEService を Brightmail 処理の対象となる電子メールのドメインエントリ (DC ツリー内) に指定します。
  9. mailAntiUBEService の有効な値は、spam (スパム用のフィルタ) と virus (ウィルス用のフィルタ) です。

LDAP_DOMAIN_ATTR_OPTINoption.dat ファイルで mailAntiUBEService に設定されているとします。例の DC ツリーの .com ドメインエントリでは、mailAntiUBEService 属性は spam および virus に設定されています。コード例 14-4 に、Brightmail が有効になったドメインエントリを示します。

コード例 14-4 Brightmail 用の LDAP ドメインエントリの例

dn: dc=sesta,dc=com,o=internet

objectClass: domain

objectClass: inetDomain

objectClass: mailDomain

objectClass: nsManagedDomain

objectClass: icsCalendarDomain

description: DC node for sesta.com hosted domain

dc: sesta

inetDomainBaseDN: o=sesta.com,o=isp

inetDomainStatus: active

mailDomainStatus: active

mailDomainAllowedServiceAccess: +imap, pop3, http:*

mailRoutingHosts: manatee.siroe.com

preferredMailHost: manatee.siroe.com

mailDomainDiskQuota: 100000000 100000000

mailDomainMsgQuota: -1 -1

mailClientAttachmentQuota: 5 5

mailAntiUBEService: spam

mailAntiUBEService: virus

Brightmail の展開の例

この節では、Brightmail の一般的な展開の例をいくつか紹介します。それぞれの例で、Brightmail をインストールしてライブラリと設定ファイルを指定する (前の節を参照) という、標準の Brightmail 設定手順を実行します。この項では、以下の展開例について説明します。

ローカル受信メッセージに対する Brightmail の処理

ローカルで配信されるすべてのメールからスパムやウィルスを選別できるようにシステムを設定したい場合があります。ローカルメッセージストア (すなわち imta.cnfims-ms チャネル) に着信するメッセージに対して Brightmail 処理を設定するには、destinationspamfilteroptin キーワードを ims-ms チャネル定義に追加します。
例:

ims-ms defragment subdirs 20 backoff "pt5m" "pt10" "pt30" "pt1h" ¥
"pt2h" "pt4h" maxjobs 1 pool IMS_POOL fileinto $U+$S@$D filter ¥
ssrd:$A ims-ms-daemon destinationspamfilteroptin spam,virus ¥
ims-ms-daemon

インターネット経由で着信するメッセージに対する Brightmail 処理

インターネット経由で着信するすべてのメールからスパムを選別できるようにシステムを設定したい場合があります。インターネット経由で着信するすべてのメッセージに対して Brightmail 処理を設定するには、sourcespamfilteroptin キーワードを tcp-local チャネル定義に追加します。
例:

tcp_local smtp mx single_sys remotehost inner switchchannel ¥
identnonelimited subdirs 20 maxjobs 7 pool SMTP_POOL maytlsserver ¥
maysaslserver saslswitchchannel tcp_auth sourcespamfilteroptin spam ¥
tcp-daemon


Brightmail では、スパムメッセージを破棄するか、指定したスパムフォルダに保存するかを選択できます。受信側のシステムでスパムフォルダが指定できない場合、スパムフォルダ用のアドレス構文はそのシステムにとって無効となります。


インターネット経由で送信されるメッセージに対する Brightmail 処理

インターネット経由で送信されるすべてのメールからスパムを選別できるようにシステムを設定したい場合があります。インターネット経由で送信されるすべてのメッセージに対する Brightmail 処理を設定するには、destinationspamfilteroptin キーワードを tcp-local チャネル定義に追加します。
例:

tcp_local smtp mx single_sys remotehost inner switchchannel ¥
identnonelimited subdirs 20 maxjobs 7 pool SMTP_POOL maytlsserver ¥
maysaslserver saslswitchchannel tcp_auth ¥
destinationspamfilteroptin spam tcp-daemon

特定のバックエンドメッセージストアのホストに着信するメッセージに対する Brightmail 処理

特定のバックエンドメッセージストアのホストに着信するすべてのメールからウィルスとスパムが選別されるようにシステムを設定するには、次の操作を行います。

  1. メッセージをバックエンドメッセージストアのホストに送信するすべての SMTP サーバーの imta.cnf ファイルに書き換えルールを追加します。
    例:
  2. msg_store1.siroe.com   $U@msg_store1.siroe.com

  3. その書き換えルールと対応するチャネルを destinationspamfilteroptin キーワードを使用して追加します。
    例:
  4. tcp_msg_store1 subdirs 20 backoff "pt5m" "pt10" "pt30" "pt1h" ¥
    "pt2h" "pt4h" maxjobs 1 pool IMS_POOL fileinto $U+$S@$D ¥
    destinationspamfilteroptin spam,virus ¥
    msg_store1.siroe.com

スパムメッセージにヘッダーを追加する

スパムメッセージには任意のヘッダーを追加することができます。spam-result: Brightmail says this is spam というヘッダーを Brightmail ソフトウェアで検出されたメッセージに追加するには、次の内容を option.dat に追加します。

spamfilter_string_action=data:,require ["addheader" "spamtest"];addheader "spam-result: Brightmail says this is spam";

"spamtest"]; の後のテキストのみ、カスタマイズ可能です。

Brightmail 設定オプション

一部の Brightmail 設定ファイルオプションについては、表 14-3 に示します。Brightmail 設定ファイルオプションの最新の完全リストは、Brightmail から入手できます。

表 14-3 Brightmail 設定ファイルオプション (一部)  

Brightmail オプション (大文字小文字の区別なし)

説明 (属性の値は大文字小文字の区別あり)

blSWPrecedence

1 つのメッセージが複数の判定を受けることがある。その場合、このオプションで順序を指定する。このオプションを virus-spam と指定した場合、メッセージに対して先にウィルス処理、次にスパム処理が行われる。判定はハイフン (-) で区切られる。Sun Java System Messaging Server で Brightmail を使用する場合に推奨される設定

blSWClientDestinationDefault

スパムでもウィルスでもなく、したがって判定を受けない通常のメッセージの配信方法を指定する。このようなメールを通常に配信するには、値として inbox を指定する。デフォルトはない

blSWLocalDomain

この属性ではローカルとみなされるドメインを指定する。いくつかのドメインがすべてローカルとみなされ、それを指定する場合は、この属性の行は複数になることがある。ローカルドメインと外部ドメインを使用して、判定のための 2 種類の処理を指定する

次の blSWClientDestinationLocalblSWClientDestinationForeign を参照。たとえば、次のように指定する

blSWLocalDomain=siroe.com

blSWClientDestinationLocal

このオプションではローカルドメイン用に判定とアクションのペアを指定する。この指定は通常 2 行で行われ、1 行はスパム用、もう 1 行はウィルス用である。値は verdict|action という形式をとる。次に例を示す

blSWClientDestinationLocal=spam|spambox

blSWClientDestinationLocal=virus|

「null」アクション (| の右側に指定なし) に対するデフォルトの Brightmail 解釈は、メッセージを破棄することである。したがって、上記の例では判定が virus であるメッセージは破棄される。また、判定が spam である場合、上記の例では spambox というフォルダにメッセージが保存される。メッセージがスパムでもウィルスでもない場合、判定は一致せず、前出の blSWClientDestinationDefault の設定内容に基づいてメールは通常どおり配信される

Brightmail サーバーを MTA と別のマシンで使用している場合には、各 MTA によって実行されるアクションをカスタマイズできる。それには次の MTA オプションを使用して Brightmail サーバーから返されるアクションや判定を無効にする。Brightmail_verdict_n/Brightmail_action_n/Brightmail_null_action/Brightmail_string_action。この例では、MTA で別の Brightmail_null_action を使用してウィルスアクション (MTA のアクションを無効にするアクション) を無効にできる。または Brightmail_verdict_0=spamboxBrightmail_action_0=data:,require "fileinto";fileinto "Junk"; を使用して、spambox の代わりに Junk というフォルダに保存できる

blSWClientDesintationForeign

上記の blSWClientDestinationLocal と同じ形式と内容。ただし、ローカル以外のドメインのユーザーに適用される

blSWUseClientOptin

Sun Java System Messaging Server で使用する場合は、常に TRUE に設定すること

blswcServerAddress

ip:port[,ip:port,...] という形式で Brightmail サーバーの IP アドレスとポート番号を指定する


SpamAssassin を使用する

この節には、以下の項があります。

SpamAssassin の概要

Messaging Server では、SpamAssassin の使用がサポートされています。SpamAssassin はフリーウェアのメールフィルタで、スパムの特定に使用されます。SpamAssassin は Perl で記述されたライブラリ、アプリケーションのセット、および SpamAssassin のメッセージングシステムへの統合に使用するユーティリティで構成されています。

SpamAssassin では、すべてのメッセージのスコアが計算されます。スコアは、メッセージヘッダーや本文の情報に対して一連のテストを実行することによって計算されます。各テストに成功するか失敗するかによって、True (スパム) または False (スパムではない) がレンダリングされます。スコアは正または負の実数です。スコアが指定したしきい値 (通常 5.0) を超えると、スパムであるとみなされます。SpamAssassin の結果文字列の例を次に示します。

True ; 18.3 / 5.0

True は、メッセージがスパムであることを示します。18.3 は SpamAssassin スコアです。5.0 はしきい値です。

SpamAssassin には高い設定性があります。テストはいつでも追加したり削除したりでき、既存テストのスコアは調整されます。これらはすべてさまざまな設定ファイルを通じて実行されます。SpamAssassin の詳細については、SpamAssassin の Web サイトを参照してください。

Brightmail のスパムおよびウィルススキャンライブラリを呼び出す場合と同じ方法で SpamAssassin spamd サーバーに接続できます。Sun Java System Messaging Server で提供するモジュールの名前は libspamass.so です。


以前のバージョンの Messaging Server では、オプション名とチャネルキーワードに brightmail という単語が含まれていました。たとえば、sourcebrightmail または brightmail_library です。brightmail という単語はより一般的な spamfilter と置き換えられましたが、後方互換性のために古い名前も引き続き有効です。


SpamAssassin/Messaging Server の動作方式

spamd は SpamAssassin のデーモンバージョンであり、MTA から呼び出すことができます。spamd は、要求のソケットを待機し、子プロセスを生成してメッセージがテストされるようにします。子プロセスは、メッセージが処理され結果が戻されたあと、破棄されます。コード自体は子プロセス間で共有されるため、理論上、フォークは効率的なプロセスであるはずです。

SpamAssassin インストールによるクライアント部分、spamc は、使用されません。代わりに、Messaging Server の一部である libspamass.so という共有ライブラリによってこの機能が実行されます。libspamass.so は、Brightmail SDK の読み込みと同じように読み込まれます。

MTAから見ると、SpamAssassin とスパムのフィルタ処理用の Brightmail は、ほぼ透過的に切り替えることができます。同じ機能を持っているわけではないので、完全に透過的というわけではありません。たとえば、Brightmail ではウィルス用のフィルタ処理も行えますが、SpamAssassin はスパム用のフィルタ処理にしか使われません。この 2 つのソフトウェアパッケージによって返される結果、つまり判定も、異なります。SpamAssassin がスコアを提供するのに対し、Brightmail は判定名のみを提供します。このため、設定にもいくつかの違いがあります。

MTA と統合された SpamAssassin を使用すると、SpamAssassin からはスコアと判定のみが返されます。メッセージ自体が SpamAssassin によって変更されることはありません。つまり、ヘッダーの追加や件名の変更のようなオプションは、Sieve スクリプトによって行う必要があります。

SpamAssassin の要件と使用法の考慮

SpamAssassin を実行する場所

SpamAssassin は、それ自体が置かれている個々のシステム上、単一のシステム配備の Messaging Server と同じシステム上、または 2 層配備の MTA と同じシステム上で実行できます。MTA とメッセージストア間で Local Mail Transfer Protocol (LMTP) が使われている場合、フィルタ処理は MTA から呼び出す必要があります。メッセージストアから呼び出すことはできません。MTA とメッセージストア間で SMTP が使われている場合は、いずれか一方から呼び出すことができ、いずれかのシステムか 3 つ目の別のシステムで実行できます。

SpamAssassin を実行するサーバーのファームを使用する場合は、それらの前でロードバランサを使用する必要があります。MTA は、SpamAssassin サーバー用に 1 つのアドレスのみを持つよう設定されます。

SpamAssassin を設定する

この節では、Messaging Server 上の SpamAssassin の設定方法について説明します。ここでは、Perl 5.6 以降と SpamAssassin がインストールされていると仮定しています。SpamAssassin の設定には、次の 2 つのことが関係します。

    メッセージは、システム全体、チャネル、ユーザー、またはドメインに対してフィルタ処理できます。

    スパムメッセージは、返送、削除、別のフォルダへのファイリング、または新しいヘッダーか Subject 行へのタグ付けを行うこともできます。

SpamAssassin でフィルタ処理するメッセージを指定する

SpamAssassin の設定の最初の手順は、フィルタするメッセージを指定することです。フィルタ処理は次のようにして指定できます。

ローカルメッセージストアへのすべてのメッセージをフィルタするには

ローカルで配信されるすべてのメールを SpamAssassin でフィルタするようにシステムを設定する場合があります。ローカルメッセージストアへの受信メッセージをフィルタするには、destinationspamfilteroptin spamims-ms チャネルに追加します。例 :

ims-ms defragment subdirs 20 backoff "pt5m" "pt10" "pt30" "pt1h" ¥
"pt2h" "pt4h" maxjobs 1 pool IMS_POOL fileinto $U+$S@$D filter ¥
ssrd:$A ims-ms-daemon destinationspamfilteroptin spam ¥
ims-ms-daemon

インターネット経由で届くすべてのメッセージをフィルタするには

インターネット経由でシステムに届くすべてのメッセージをフィルタ処理するには、sourcespamfilteroptin キーワードを tcp-local チャネルに追加します。
例 :

tcp_local smtp mx single_sys remotehost inner switchchannel ¥
identnonelimited subdirs 20 maxjobs 7 pool SMTP_POOL maytlsserver ¥
maysaslserver saslswitchchannel tcp_auth sourcespamfilteroptin spam ¥
tcp-daemon

インターネット経由で送信するすべてのメッセージをフィルタするには

システムからインターネット経由で送信するすべてのメッセージをフィルタ処理するには、destinationspamfilteroptin キーワードを tcp-local チャネルに追加します。
例 :

tcp_local smtp mx single_sys remotehost inner switchchannel ¥
identnonelimited subdirs 20 maxjobs 7 pool SMTP_POOL maytlsserver ¥
maysaslserver saslswitchchannel tcp_auth ¥
destinationspamfilteroptin spam tcp-daemon

特定のメッセージストアへのメッセージをフィルタするには

バックエンドメッセージストアのホストに着信するすべてのメールに対してスパムのフィルタ処理するようにシステムを設定するには、次の操作を行います。

  1. メッセージを特定のバックエンドメッセージストアのホストに送信するすべての SMTP サーバーの imta.cnf ファイルに書き換えルールを追加します。
    例:
  2. msg_store1.siroe.com   $U@msg_store1.siroe.com

  3. その書き換えルールと対応するチャネルを destinationspamfilteroptin キーワードを使用して追加します。
    例:
  4. tcp_msg_store1 subdirs 20 backoff "pt5m" "pt10" "pt30" "pt1h" ¥
    "pt2h" "pt4h" maxjobs 1 pool IMS_POOL fileinto $U+$S@$D ¥
    destinationspamfilteroptin spam ¥
    msg_store1.siroe.com

特定のユーザーまたはドメインへのメッセージをフィルタするには

ユーザーまたはドメインに対するメッセージをフィルタするには、次の属性と値のペアをユーザーとドメインの LDAP エントリに追加します。

MailAntiUBEService:spam

また、option.dat ファイルで適切な LDAP_optin 値も指定します。ユーザーレベルのフィルタ処理の場合は、次のように追加します。

LDAP_optin=mailantiUBEservice

ドメインレベルのフィルタ処理の場合は、次のように追加します。

LDAP_domain_attr_optin=mailAntiUBEService

SpamAssassin をこの方法で起動するときは、チャネル定義に destinationspamfilter を入れる必要はありません。属性名は、大文字と小文字が区別されます。


MailAntiUBEService には、フィルタ処理を有効にする任意の文字列値が必要です。値 spam は、一貫性を持たせ明確にするために使用します。配備によっては、すべてのエントリで、属性と各属性の値のセットが同じであることが必要な場合があります。このような配備では、すべてのエントリで spam フィルタ処理が有効になっています。ただし、MTA オプション SPAMFILTER_NULL_OPTIN を、MailAntiUBEService の値として設定されているときにフィルタ処理を無効にする文字列に設定することができます。


スパムメッセージで実行するアクションを指定する

SpamAssassin の設定の 2 番目の手順は、スパムメッセージで実行するアクションを決定することです。スパムは、破棄、拒否、ファイリング、またはヘッダーによるタグ付けを行うことができます。これは、MTA オプション spamfilter_null_action および spamfilter_string_action で指定される Sieve スクリプトによって制御されます。また、SpamAssassin オプション modeverdict、および field を使って、フォルダ名やヘッダータグの指定などを行うこともできます。これについては以下の節で詳しく説明します。


Sieve は、電子メール用のフィルタを作成するために使用するコンピュータ言語です。この節に示されている例を使って、独自の Sieve スクリプトを作成できます。完全な構文については、オンラインで参照できる Sieve 仕様を参照してください。最初は http://www.cyrusoft.com/sieve/ を参照することをお勧めします。


SpamAssassin 設定の例

この節では、一般的な SpamAssassin 設定の例について説明します。

スパムを個別のフォルダにファイリングするには

この例では、ローカルメッセージストアに届くメッセージをテストし、spam というフォルダ内にスパムをファイリングします。最初の 3 つのステップは任意の順序で実行できます。

  1. フィルタ処理するメッセージを指定します。
  2. ローカルメッセージストアに届くすべてのメッセージをフィルタ処理するには、ims-ms チャネルの spamfilteroptin spam を追加して imta.cnf ファイルを変更します。

    !
    ! ims-ms
    ims-ms defragment subdirs 20 notices 1 7 14 21 28 backoff "pt5m" "pt10m" "pt30m" "pt1h"  "pt2h" "pt4h" maxjobs 4 pool IMS_POOL fileinto
    $U+$S@$D destinationspamfilteroptin spam
    ims-ms-daemon

  3. SpamAssassin の設定ファイルを作成します。
  4. このファイルの名前と場所は、手順 3 で指定したものです。適切な名前は spamassassin.opt です。このファイルには以下の行が含まれます。

    host=127.0.0.1
    port=2000
    mode=0
    verdict=spam
    debug=1

    host および port は、spamd が実行されているシステムの名前と、spamd が受信要求を待機するポートの名前です。mode=0 は、メッセージがスパムとして認識された場合に、verdict (この例では単語 spam) によって指定された文字列が返されることを指定します。debug=1 は、SpamAssassin ライブラリでデバッグをオンにします。

  5. option.dat ファイルに以下の行を追加します。

    ! for Spamassassin
    spamfilter_config_file=/opt/SUNWmsgsr/config/spamassassin.opt
    spamfilter_library=/opt/SUNWmsgsr/lib/libspamass.so
    spamfilter_optional=1
    spamfilter_string_action=data:,require "fileinto"; fileinto "$U;

  6. spamfilter_config_files は、SpamAssassin 設定ファイルを指定します。

    spamfilter_library は、SpamAssassin 共有ライブラリを指定します。

    spamfilter_optional=1 は、spamd による失敗があった場合に MTA が操作を続行することを指定します。

    spamfilter_string_action は、スパムメッセージに対して実行する Sieve アクションを指定します。

    この例では、spamfilter_string_action は必須ではありません。これは、デフォルト値があらかじめ data:,require "fileinto"; fileinto "$U; であるためです。この行では、スパムメッセージがフォルダに送られることを指定しています。フォルダの名前は、SpamAssassin によって返されるスパム判定値です。SpamAssassin によって返される値は、spamassassin.optverdict オプションによって指定されます (手順 2 を参照)。この例では、フォルダ名は spam です。

  7. 設定をコンパイルしなおし、サーバーを再起動します。MTA を再起動するだけでかまいません。stop-msg を実行する必要はありません。
  8. # imsimta cnbuild
    # imsimta restart

  9. spamd デーモンを起動します。次の一般的な形式のコマンドを使用してこれを実行します。
  10. spamd -d

    spamd は、デフォルトではローカルシステムからの接続を受け入れるだけです。SpamAssassin と Messaging Server が別のシステム上で実行されている場合は、この構文が必要です。

    spamd -d -i <listen_ip_address> -A <allowed_hosts>

    listen_ip_address は待機対象のアドレスであり、allowed_hosts はこの spamd インスタンスに接続できる、認証されたホストまたはネットワークのリスト (IP アドレスを使用) です。


    0.0.0.0 を -i <listen_ip_address> とともに使用すると、spamd にすべてのアドレスを待機させることができます。システムの IP アドレスを変更したときにコマンドスクリプトを変更しなくても済むよう、すべてのアドレスを待機することをお勧めします。


スパムを破棄するには

スパムを、フォルダ内にファイリングするのではなく破棄するには、「スパムを個別のフォルダにファイリングするには」で説明するように手順 1手順 2 を実行します。ただし、option.datSpamfilter_string_action オプションを次のように変更します。

! for Spamassassin
spamfilter_config_file=/opt/SUNWmsgsr/config/spamassassin.opt
spamfilter_library=/opt/SUNWmsgsr/lib/libspamass.so
spamfilter_optional=1
spamfilter_string_action=data:,discard;

この設定後、設定をコンパイルしなおし、サーバーを再起動します。「スパムを個別のフォルダにファイリングするには」手順 4 を参照してください。

スパムメッセージに単純なヘッダーを追加する

この例では、スパムであると判断された各メッセージに、ヘッダー Spam-test: FAIL を追加します。「スパムを個別のフォルダにファイリングするには」手順 1手順 2 で説明した手順と同じ手順を使いますが、option.datSpamfilter_string_action を次のように追加します。

! for Spamassassin
spamfilter_config_file=/opt/SUNWmsgsr/config/spamassassin.opt
spamfilter_library=/opt/SUNWmsgsr/lib/libspamass.so
spamfilter_optional=1
spamfilter_string_action=data:,require ["addheader"];addheader "Spam-test: $U";

上に示されている最初の 3 つのオプションは、SpamAssassin 設定ファイルの指定 (spamfilter_config_file)、SpamAssassin 共有ライブラリの指定 (spamfilter_library)、共有ライブラリで失敗があった場合に MTA 操作を続行することの指定 (spamfilter_optional=1) です。次の行は、Spam-test: spam という形式のヘッダーがメッセージに追加されることを指定します。

spamfilter_string_action=data:,require ["addheader"];addheader "Spam-test: $U";

data:,require ["addheader"];addheader は、ヘッダーをメッセージに追加するための Sieve 構文です。

"Spam-test: $U" はヘッダー文字列です。ここで、「Spam-test: 」はリテラルで、$U は SpamAssassin によって返される文字列値を指定します。これは spammassassin.optverdict オプション (この例では spam) によって指定されます。

この設定後、設定をコンパイルしなおし、サーバーを再起動します。「スパムを個別のフォルダにファイリングするには」手順 4 を参照してください。

スパムメッセージに SpamAssassin スコアを含むヘッダーを追加する

この例では、SpamAssassin によってスパムであると判断されたメッセージに、ヘッダー Spam-test: 結果文字列を追加します。ヘッダーの例は次のとおりです。

Spam-test: True ; 7.3 / 5.0

ここで、「Spam-test: 」はリテラルで、その後ろはすべて結果文字列です。True はそれがスパムであることを意味し、False はスパムではないことを意味します。7.3 は SpamAssassin スコアです。5.0 はしきい値です。この結果は、一定のスコアを超えたメールや一定のスコア間のメールをファイリングまたは破棄できる、Sieve フィルタを設定する場合に便利です。

また、USE_CHECK0 に設定すると、判定文字列と共に一致する SpamAssassin テストのリストが返されます。表 14-4 の「USE_CHECK」を参照してください。

  1. フィルタ処理するメッセージを指定します。詳細は、「スパムを個別のフォルダにファイリングするには」手順 1 を参照してください。
  2. SpamAssassin の設定ファイルを作成します。
  3. このファイルの名前と場所は、手順 3 で指定したものです。適切な名前は spamassassin.opt です。このファイルには以下の行が含まれます。

    host=127.0.0.1
    port=2000
    mode=1
    field=
    verdict=spam
    debug=1

    host および port は、spamd が実行中のシステムの名前と、spamd が受信要求を待機するポートの名前です。mode=1 は、メッセージがスパムであると判明した場合に SpamAssassin の結果文字列が返されることを指定します。field= は、SpamAssasin の結果文字列のプレフィックスを指定します。この例では、プレフィックスは Sieve スクリプトで指定するため、必要ありません。debug=1 は、SpamAssassin ライブラリでデバッグをオンにします。

  4. option.dat ファイルに以下の行を追加します。

    !for Spamassassin
    spamfilter_config_file=/opt/SUNWmsgsr/config/spamassassin.opt
    spamfilter_library=/opt/SUNWmsgsr/lib/libspamass.so
    spamfilter_optional=1
    spamfilter_string_action=data:,require ["addheader"];addheader "Spam-test: $U";

  5. 前に示した例と同様、最初の 3 つのオプションは、SpamAssassin 設定ファイル、共有ライブラリ、および、共有ライブラリで失敗があった場合に MTA 操作を続行することを指定します。次の行は、

    spamfilter_string_action=data:,require ["addheader"];addheader "Spam-test: $U";

    スパムメッセージにヘッダーを追加することを指定します。ヘッダーには、リテラルプレフィックス Spam-text: と、その後に SpamAssassin が返す文字列が含まれます。手順 2mode=1 を指定したため、SpamAssassin 結果文字列が返されます。例 : True ; 7.3 / 5.0

  6. 設定をコンパイルしなおし、サーバーを再起動します。MTA を再起動するだけでよく、stop-msg を実行する必要はありません。
  7. # imsimta cnbuild
    # imsimta restart

  8. spamd デーモンを起動します。「スパムを個別のフォルダにファイリングするには」手順 5 を参照してください。

件名行に SpamAssassin の結果文字列を追加するには

SpamAssassin の結果文字列を件名行に追加することによって、ユーザーが SpamAssassin スコアを含むメッセージを読むかどうかを判断できます。
例 :

Subject: [SPAM True ; 99.3 / 5.0] Free Money At Home with Prescription Xanirex!

USE_CHECK0 に設定すると、判定文字列と共に一致する SpamAssassin テストのリストが返されます (表 14-4 の「USE_CHECK」を参照)。このリストは非常に長くなることがあるため、USE_CHECK1 に設定することをお勧めします。

  1. フィルタ処理するメッセージを指定します。「スパムを個別のフォルダにファイリングするには」手順 1 を参照してください。
  2. SpamAssassin の設定ファイルを作成します。
  3. このファイルの名前と場所は、手順 3 で指定したものです。適切な名前は spamassassin.opt です。このファイルには以下の行が含まれます。

    host=127.0.0.1
    port=2000
    mode=1
    verdict=spam
    debug=1

    host および port は、spamd が実行中のシステムの名前と、spamd が受信要求を待機するポートの名前です。mode=1 は、メッセージがスパムであると判明した場合に SpamAssassin の結果文字列が返されることを指定します。debug=1 は、SpamAssassin ライブラリでデバッグをオンにします。

  4. option.dat ファイルに以下の行を追加します。

    !for Spamassassin
    spamfilter_config_file=/opt/SUNWmsgsr/config/spamassassin.opt
    spamfilter_library=/opt/SUNWmsgsr/lib/libspamass.so
    spamfilter_optional=1
    spamfilter_string_action=data:,addtag "[SPAM detected: $U]";

  5. 前に示した例と同様、最初の 3 つのオプションは、SpamAssassin 設定ファイル、共有ライブラリ、および、共有ライブラリで失敗があった場合に MTA 操作を続行することを指定します。次の行は、

    spamfilter_string_action=data:,addtag "[SPAM detected $U]";

    Subject: 行にタグを追加することを指定します。これには、リテラルプレフィックス SPAM detected が含まれ、その後にフィールド文字列 (デフォルトは Spam-Test)、その後に SpamAssassin によって返される "[結果文字列]" が含まれます。手順 2mode=1 を指定したため、SpamAssassin 結果文字列が返されます。したがって、件名行は次のようになります。

    Subject: [SPAM detected Spam-Test: True ; 11.3 / 5.0] Make Money at Home!

    addheaderaddtag を併用することもできます。

    spamfilter_string_action=data:,require ["addheader"];addtag "[SPAM detected $U]";addheader "Spamscore: $U";

    メッセージは次のようになります。

    Subject: [SPAM detected Spam-Test: True ; 12.3 / 5.0] Vigara Now!
    Spamscore: Spam-Test: True ; 12.3 / 5.0

    spamassassin.optfield= を設定して、Spam-Test のデフォルト値を削除します。よりすっきりとしたメッセージが返されます。

    Subject: [SPAM True ; 91.3 / 5.0] Viagra again!
    Spamscore: True ; 91.3 / 5.0

  6. 設定をコンパイルしなおし、サーバーを再起動します。MTA を再起動するだけでよく、stop-msg を実行する必要はありません。
  7. # imsimta cnbuild
    # imsimta restart

  8. spamd デーモンを起動します。「スパムを個別のフォルダにファイリングするには」手順 5 を参照してください。

Sieve 拡張 spamtest および spamadjust のサポート

Messaging Server は、SpamAssassin で使用できる spamtest および spamadjust をサポートしています。spamtest については ftp://ftp.isi.edu/in-notes/rfc3685.txt を参照してください。spamadjust は非標準のアクションです。これらの拡張は、管理者に、別のしきい値を設定する機能と、SpamAssassin の判定を無効にするホワイトリストを設定する機能を提供します。この 2 つの拡張を組み合わせて、特定のメッセージの差出人に応じて別のしきい値を持つようにすることもできます。

spamtest を使用して、Sieve [RELATIONAL] 拡張を使った特定の値に対する SpamAssassin スコアを、"i;ascii-numeric" 比較子と比較することができます。SpamAssassin スコアは通常は実数ですが、spamtest は、最初にスコアを近似整数に丸めることで、スコアを 0 から 10 の整数値にします。0 未満の値は強制的に 0 になり、10 を超える値は強制的に 10 になります。最後に、Messaging Server が維持するテキスト文字列が付加されて、spamtest テストが示すテスト文字列が生成されます。

spamadjust は、現在のスパムスコアの調整に使われます。このアクションは、実際の数値に対してスキャンされる単一の文字列引数をとります。この値が現在のスパムスコアの調整に使われます。同様に、文字列全体も現在のスコアテキスト文字列に付加されます。以下の例では、この文字列は "undisclosed recipients" です。複数の spamadjust アクションを指定でき、それぞれが現在のスコアに追加されます。また、スコア値は常に 0 で始まります。符号付き数値を指定でき、現在のスコアを小さくしたり大きくしたりできます。spamadjust に対する require 句はなく、代わりに spamtest 拡張を列挙する必要があります。

たとえば、SpamAssassin の MODE を 2 に設定した spamadjust を使用すると、次のようになります。

SPAMFILTER_STRING_ACTION=data:,require ["spamtest"];spamadjust "$U";

システムレベルの Sieve フィルタは、特定のタイプのヘッダーをチェックし、それが見つかった場合は SpamAssassin スコアに 5 を追加することによって、SpamAssassin を変更します。

spamfilter_string_action=require "spamtest";
if header :contains ["to", "cc", "bcc", "resent-to", "resent-cc", "resent-bcc"]
                    ["<undisclosed recipients>", "undisclosed.recipients"]
{spamadjust "+5 undisclosed recipients";}

最後に、ユーザーレベルの Sieve スクリプトは、結果を示す値のテスト、スパムであることが確実なメッセージの破棄、スパムと思われるメッセージのファイリング、ローカルドメインのアドレスからのメッセージ通過の許可を行うことができます。

spamfilter_string_action=require ["spamtest", "relational",  ¥
"comparator-i;ascii-numeric", "fileinto"];                   ¥
if anyof (address :matches "from" ["*@siroe.com",            ¥
                                   "*@*.siroe.com"])         ¥
    {keep;}                                                  ¥
elsif spamtest :value "ge" :comparator "i;ascii-numeric" "8" ¥
    {discard;}                                               ¥
elsif spamtest :value "ge" :comparator "i;ascii-numeric" "5" ¥
    {fileinfo "spam-likely";}                                ¥
else                                                         ¥
   {keep;}                                                   ¥

SpamAssassin をテストする

SpamAssassin をテストするには、最初に spamassassion.opt ファイルに debug=1 を設定します。imta.cnf にあるチャネル固有の master_debug または slave_debug をオンにする必要はありません。そのあと、テストユーザーにテストメッセージを送信します。msg_svr_base/data/tcp_local_slave.log* ファイルには次のような行があるはずです。

15:15:45.44: SpamAssassin callout debugging enabled; config /opt/SUNWmsgsr/config/spamassassin.opt

   15:15:45.44: IP address 127.0.0.1 specified

   15:15:45.44: Port 2000 selected

   15:15:45.44: Mode 0 selected

   15:15:45.44: Field "Spam-Test: " selected

   15:15:45.44: Verdict "spam" selected

   15:15:45.44: Using CHECK rather than SYMBOLS

   15:15:45.44: Initializing SpamAssassin message context

   ...

   15:15:51.42: Creating socket to connect to SpamAssassin

   15:15:51.42: Binding SpamAssassin socket

   15:15:51.42: Connecting to SpamAssassin

   15:15:51.42: Sending SpamAssassin announcement

   15:15:51.42: Sending SpamAssassin the message

   15:15:51.42: Performing SpamAssassin half close

   15:15:51.42: Reading SpamAssassin status

   15:15:51.67: Status line: SPAMD/1.1 0 EX_OK

   15:15:51.67: Reading SpamAssassin result

   15:15:51.67: Result line: Spam:False ; 1.3 / 5.0

   15:15:51.67: Verdict line: Spam-Test:False ; 1.3 / 5.0

   15:15:51.67: Closing connection to SpamAssassin

   15:15:51.73: Freeing SpamAssassin message context

ログファイルにこのような行が含まれていない場合、または spamd が実行されていない場合は、SMTP サーバーに最後の「.」が送信されたあと、SMTP ダイアログに次のような エラーメッセージが返されます。

452 4.4.5 Error writing message temporaries - Temporary scan failure: End message status = -1

また、options.datspamfilter_optional=1 が設定 (強く推奨) されている場合、メッセージは受け入れられますがフィルタ処理は行われません。これはスパムのフィルタ処理が有効になっていないのと同じで、tcp_local_slave.log* に次の行が表示されます。

15:35:150.69: Creating socket to connect to SpamAssassin
15:35:15.69: Binding SpamAssassin socket
15:35:15.69: Connecting to SpamAssassin
15:35:15.69: Error connecting socket: Connection refused
15:35:15.72: Freeing SpamAssassin message context

SpamAssassin に対する呼び出しは、SMTP サーバーがメッセージ全体を受信したあと、つまり、最後の「.」が SMTP サーバーに送信されたあとで、SMTP サーバーが受け取ったメッセージの差出人に認識される前に行われます。

もう 1 つのテストは、たとえば Mail-SpamAssassin-2.60 ディレクトリから、sample-spam.txt を使ってサンプルのスパムメッセージを送信することです。このメッセージには、次のような特殊なテキスト文字列が含まれます。

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

対応する tcp_local_slave.log* には、次のような内容が含まれます。

16:00:080.15: Creating socket to connect to SpamAssassin

16:00:080.15: Binding SpamAssassin socket

16:00:080.15: Connecting to SpamAssassin

16:00:080.15: Sending SpamAssassin announcement

16:00:080.15: Sending SpamAssassin the message

16:00:080.15: Performing SpamAssassin half close

16:00:080.15: Reading SpamAssassin status

16:00:080.43: Status line: SPAMD/1.1 0 EX_OK

16:00:080.43: Reading SpamAssassin result

16:00:08.43: Result line: Spam: True ; 1002.9 / 5.0

16:00:08.43: Verdict line: Spam-Test: True ; 1002.9 / 5.0

16:00:080.43: Closing connection to SpamAssassin

16:00:08.43: Mode 0 verdict of spam

16:00:08.43: Mode 0 verdict of spam

16:00:08.47: Freeing SpamAssassin message context

mail.log_current ファイルの対応するエントリは、次のようになります。宛先アドレスの +spam 部分は、メッセージが spam というフォルダにファイリングされることを示します。

15-Dec-2003 15:32:17.44 tcp_intranet ims-ms E 1 morchia@siroe.com rfc822;morchia
morchia+spam@ims-ms-daemon
15-Dec-2003 15:32:18.53 ims-ms D 1 morchia@siroe.com rfc822;morchia morchia+spam@ims-ms-daemon

SpamAssassin オプション



前へ      目次      索引      次へ     


Copyright 2004 Sun Microsystems, Inc. All rights reserved.