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

Sun ロゴ
Sun Java System Messaging Server 6 2005Q1 管理ガイド 

第 14 章
スパムとウィルスのフィルタ処理プログラムを Messaging Server に統合する

この章では、Messaging Server を使用して、スパムおよびウィルスのフィルタ処理ソフトウェアを統合および設定する方法について説明します。この章で説明するスパムおよびウィルスのフィルタ処理技術は、変換チャネルによって提供される技術よりも強力です (「変換チャネル」を参照)。Messaging Server では、Symantec Brightmail AntiSpam、SpamAssassin、および Internet Content Adaptation Protocol (ICAP、RFC 3507) がサポートするスパム防止/ウィルス防止プログラム (Symantec AntiVirus Scan Engine など) がサポートされています。


この章のスパム防止またはスパムのフィルタ処理機能についての参照は、該当する場合には、ウィルス防止またはウィルスのフィルタ処理機能にも当てはまります。製品によって、両方の機能を提供するものもあれば (Brightmail)、スパムのフィルタ処理機能のみ (SpamAssassin)、またはウィルスのフィルタ処理機能のみ (Symantec AntiVirus Scan Engine) を提供するものもあります。また、spam は設定パラメータで一般的に使用されます。


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


スパムのフィルタ処理プログラムを Messaging Server に統合する - 動作方式

Messaging Server から見ると、スパム防止ソリューションはどれも同じように動作します。

  1. Messaging Server は、スパムのフィルタ処理ソフトウェアにメッセージのコピーを送信します。
  2. スパムのフィルタ処理ソフトウェアは、メッセージを分析し、スパムかどうかの判定を返します。プログラムによっては、SpamAssassin のようにスパムスコアを含む判定も返します。スパムスコアは、メッセージがスパムである確率を数値で示すものです。
  3. Messaging Server はこの判定を読み取り、メッセージに対して Sieve アクションを実行します (「スパムメッセージに対して実行するアクションを指定する」を参照)。

スパムのフィルタ処理プログラムは、プロトコルを介して MTA と対話します。Symantec AntiVirus Scan Engine などの ICAP ベースのプログラムで使用するような標準プロトコル、Brightmail で使用するような独自のプロトコル、または、SpamAssassin で使用するような非標準のプロトコルが使用可能です。各プロトコルには、MTA とのインタフェースのためのソフトウェアのフックが必要です。Brightmail および Spam Assassin は、メッセージングサーバーと最初に統合できるスパムのフィルタ処理プログラムです。MTA は現在、ICAP を使用するプログラムをサポートしています。


サードパーティのスパムのフィルタ処理プログラムを配備および設定する

Messaging Server にサードパーティのフィルタ処理ソフトウェアを配備するには、5 つのアクションが必要です。


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


スパムのフィルタ処理ソフトウェアのクライアントライブラリをロードおよび構成する

それぞれのスパムフィルタ処理プログラムは、Messaging Server のクライアントライブラリファイルと設定ファイルを提供します。クライアントライブラリをロードおよび構成するには、次の 2 つのことが必要です。

スパムのフィルタ処理ソフトウェアのライブラリパスを指定する

Messaging Server は、メッセージに対して最大 4 種類のフィルタ処理システムを呼び出せます。たとえば、Symantec AntiVirus Scan Engine と SpamAssassin の両方を使用してメッセージを実行できます。それぞれのフィルタ処理ソフトウェアは、1 から 4 までの番号で識別されます。これらの番号は、各種のスパムフィルタオプション、LDAP 属性、およびチャネルキーワードの一部として表示され、フィルタの ID 番号として X が使用されます。たとえば、sourcespamfilterXoptin または spamfilterX_config_file のようになります。キーワードまたはオプション名から ID 番号を省略した場合、デフォルトは 1 です。

次の option.dat 設定では、Messaging Server が Symantec AntiVirus Scan Engine と SpamAssassin の両方を使用してメッセージをフィルタ処理するように指定しています。

spamfilter1_library=Symantec_Library_File
spamfilter1_config_file=Symantec_Config_File
spamfilter2_library=SpamAssassin_Library_File
spamfilter2_config_file=SpamAssassin_Config_File

ほかのオプションまたはキーワードを使用してシステムを設定する場合は、オプションまたはキーワードの最後に対応する番号を指定してください。たとえば、sourcespamfilter2optin は SpamAssassin を参照します。sourcespamfilter1optin は Symantec AntiVirus Scan Engine を参照します。連続した番号を使用する必要はありません。たとえば、Symantec AntiVirus Scan Engine を一時的に無効にするには、spamfilter1_library 設定ファイルをコメントアウトするだけすみます。

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

スパムのフィルタ処理ソフトウェアのインストールが完了して Messaging Server で使用可能になったら、フィルタ処理を行うメッセージを指定する必要があります。Messaging Server では、ユーザー、ドメイン、またはチャネルごとにフィルタするよう設定できます。それぞれの場合について、次の節で説明します。

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

ユーザーごとにフィルタ処理を指定したほうがよい場合があります。たとえば、スパムまたはウィルスのフィルタ処理を ISP の顧客に対するプレミアムサービスとして提供する場合に、サービスを受けるユーザーと受けないユーザーを指定できます。ユーザーごとのフィルタ処理を行うための一般的な手順は、次のとおりです。

  1. スパムのフィルタ処理ソフトウェアを起動するユーザー LDAP 属性を指定します。
  2. option.datLDAP_OPTINXオプションを設定します。次に例を示します。

    LDAP_OPTIN1=SymantecAV
    LDAP_OPTIN2=SpamAssassin

  3. スパムのフィルタ処理の対象となるユーザーエントリにフィルタ属性を設定します。
  4. フィルタ属性は複数値を持ち、サーバーによって異なります。手順 1 の例を使用した場合のエントリを以下に示します。

    SymantecAV:virus
    SpamAssassin:spam

    ウィルスとスパムの両方をフィルタ処理できる Brightmail のようなプログラムの場合、有効な値は spam および virus です。複数値を持つ属性として使用する場合、それぞれの値に個別の属性を入力する必要があります。たとえば、Brightmail のフィルタ属性が Brightmail に設定されている場合のエントリは以下のとおりです。

    Brightmail:spam
    Brightmail:virus

ユーザーレベルのフィルタ処理の例

この例では、Brightmail が使用されていると仮定しています。また、option.dat ファイルで LDAP_OPTIN1Brightmail に設定されているとします。Otis Fanning というユーザーには、そのユーザーエントリの Brightmail 属性が spam および virus に設定されています。このユーザーのメールには、Brightmail によってスパムとウィルスのフィルタ処理が行われます。コード例 14-1 は、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

Brightmail:virus

Brightmail:spam

Symantec AntiVirus Scan Engine および SpamAssassin が使用された場合、エントリは次のようになります。

SymantecAV:virus
SpamAssassin:spam

このほかの例と詳細については、「Symantec Brightmail AntiSpam を使用する」「SpamAssassin を使用する」、または「Symantec Anti-Virus Scanning Engine (SAVSE) を使用する」を参照してください。

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

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

  1. フィルタ処理ソフトウェアを起動するドメイン LDAP 属性を指定します。
  2. option.datLDAP_DOMAIN_ATTR_OPTINXオプションを設定します。次に例を示します。

    LDAP_DOMAIN_ATTR_OPTIN1=SymantecAV
    LDAP_DOMAIN_ATTR_OPTIN2=SpamAssassin

  3. フィルタ属性をスパムのフィルタ処理の対象となるドメインエントリに設定します。
  4. フィルタ属性は複数値を持ち、サーバーによって異なります。手順 1 の例を使用した場合のエントリを以下に示します。

    SymantecAV:virus
    SpamAssassin:spam

    ウィルスとスパムの両方をフィルタ処理できる Brightmail のようなプログラムの場合、有効な値は spam および virus です。複数値を持つ属性として使用する場合、それぞれの値に個別の属性値を入力する必要があります。たとえば、LDAP_DOMAIN_ATTR_OPTIN1Brightmail に設定されている場合のエントリは以下のとおりです。

    Brightmail:spam
    Brightmail:virus

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

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

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

コード例 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

mailDomainMsgQuota: -1

mailClientAttachmentQuota: 5

Brightmail:spam

Brightmail:virus

Symantec AntiVirus Scan Engine および SpamAssassin が使用された場合、エントリは次のようになります。

SymantecAV:virus
SpamAssassin:spam

このほかの例と詳細については、「Symantec Brightmail AntiSpam を使用する」「SpamAssassin を使用する」、または「Symantec Anti-Virus Scanning Engine (SAVSE) を使用する」を参照してください。

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

ソースチャネルまたは宛先チャネルによるフィルタ処理を行うと、スパムのフィルタ処理の柔軟性と精度が大幅に向上します。たとえば、次のようなフィルタ処理を実行するとします。

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

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

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

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

チャネルキーワード

説明

destinationspamfilterXoptin

これらのサービスがユーザーまたはドメインによって LDAP_OPTIN LDAP 属性で指定されていない場合でも、このチャネル宛のすべてのメッセージがスパム防止ソフトウェア X によってフィルタ処理されることを指定します (ソフトウェア X のフィルタ処理は option.datspamfilterX_library によって定義される)。フィルタパラメータはフィルタ処理プログラムによって異なり、キーワードのあとに続きます。たとえば、Brightmail のパラメータは通常、spam または virus または spam,virus です。SpamAssassin のパラメータは spam です。

この例では、メッセージストア宛のメールはすべて、スパムでないかスキャンされます。

ims-ms destinationspamfilter1optin spam,virus. . .

sourcespamfilterXoptin

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

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

以下の例では、番号 1 によって指定されるフィルタ処理プログラムを想定しています。

例 1: MTA リレーから msg_store1.siroe.com というバックエンドメッセージストアへのすべてのメールを、スパムおよびウィルス用にフィルタ処理します。

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

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

例 2: MTA を通過するすべての着信メールをスパム用にフィルタ処理します (通常、すべての着信メッセージは tcp_local チャネルを通過する)。

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

例 3: MTA を通過するすべてのインターネットへの発信メールをフィルタ処理します (通常、インターネットへのすべての発信メッセージは tcp_local チャネルを通過する)。

tcp_local smtp mx single_sys remotehost inner switchchannel ¥
identnonelimited subdirs 20 maxjobs 7 pool SMTP_POOL ¥
maytlsserver maysaslserver saslswitchchannel tcp_auth ¥
destinationspamfilter1optin 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 ¥
sourcespamfilter1optin spam destinationspamfilter1optin spam
tcp-daemon

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

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

例 6: すべての着信および発信メールをスパムおよびウィルス用にフィルタ処理します (使用するソフトウェアがスパムとウィルスの両方をフィルタ処理することを前提とする)。

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

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

スパムのフィルタ処理プログラムは、メッセージを分析し、スパムかどうかの判定を Messaging Server に返します。そのあと Messaging Server は、メッセージに応じたアクションを実行します。アクションは、Sieve メールフィルタ処理言語を使って指定します。指定できるアクションは、メッセージの破棄、フォルダへのファイリング、ヘッダーの追加、件名へのタグの追加などです。if-then-else ステートメントを含む複雑な Sieve スクリプトも指定できます。


複雑な Sieve 構文については、Sieve 仕様 3028 を参照してください。http://www.cyrusoft.com/sieve/ も参照してください。


Sieve スクリプトは、表 14-2 で説明する MTA スパムフィルタオプション (option.dat) で指定します。主なスパムフィルタアクションのオプションは NULL 値がスパム判定値として返された時に実行される Sieve ルールを指定するSpamfilterX_null_action と、文字列がスパム判定として返された時に実行される Sieve ルールを指定する SpamfilterX_string_action です。

スパムのフィルタ処理プログラムは、通常、文字列または NULL 値を MTA に返して、メッセージがスパムであることを示します。プログラムによってはスパムスコアも返します。スパムスコアは、スパムであるメッセージまたはスパムではないメッセージの確率を示す数値です。このスコアは、アクションシーケンスの一部として使用できます。次の例は、フィルタ処理を行うメッセージに対するアクションの指定方法を示しています。それぞれの例では、番号 1 によって指定されるフィルタ処理プログラムを想定しています。

例 1: NULL 判定値を含むスパムメッセージをファイル SPAM_CAN にファイリングします。

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

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

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

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

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

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

spamfilter1_string_action=data:,discard

同じアクションを、NULL 値を返すスパムメッセージで実行できます。

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

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

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

例 5: この行では、文字列を返すスパムメッセージの件名に、文字列 [PROBABLE SPAM] を追加しています。

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

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

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

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

例 7: これらの対応するペアのオプションは、判定文字列 remove が返されたスパムメッセージを破棄します。

spamfilter1_verdict_0=remove
spamfilter1_action_0
=data:,discard

スパム判定文字列の指定方法については、該当のスパムフィルタ処理ソフトウェアの節を参照してください。

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

SpamAssassin 用の MTA オプション

説明

SpamfilterX_config_file

フィルタ処理ソフトウェア X 設定ファイルのフルパスとファイル名を指定します。
デフォルト: なし

SpamfilterX_library

フィルタ処理ソフトウェア X 共有ライブラリのフルパスとファイル名を指定します。
デフォルト: なし

SpamfilterX_optional

フィルタ処理ライブラリ X によって報告された障害を、一時的な処理の失敗として処理するか無視するかを制御します。デフォルト値 0 は、スパムのフィルタ処理の問題により一時的な処理の障害が発生すると指定します。この値を 1 に変更すると、スパムフィルタの処理は場合によってはライブラリ障害のフィルタ処理をスキップしますが、すべてではありません。特に、システムがライブラリコードを返さずにスタックすると、一部の MTA もスタックすることがあります。-2 と 2 も設定できます。これらは、それぞれ 0 および 1 と同じですが、スパムフィルタプラグインによって問題が報告された場合に syslog メッセージが送信される点で異なります。

デフォルト: 0

LDAP_optinX

ユーザー単位でフィルタ処理ソフトウェア X を有効にするために使用する LDAP 属性の名前を指定します。これは、inetMailUser オブジェクトクラス内の属性である必要があります。

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

デフォルト: なし

LDAP_domain_attr_optinX

ドメイン単位でフィルタ処理ソフトウェア X を有効にするために使用する LDAP 属性の名前を指定します。宛先ドメインに適用されます。オブジェクトクラス mailDomain 内にある必要がある以外は、LDAP_optin と同様です。

デフォルト: なし

SpamfilterX_null_optin

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

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

SpamfilterX_null_action

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

SpamfilterX_string_action

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

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

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

spamfilterX_verdict_n

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

spamfilter1_verdict_0=reject
spamfilter1_action_
0=data:,require "reject"; reject "Rejected by spam filter";

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

デフォルト: なし

spamfilterX_action_n

spamfilterX_verdict_n を参照してください。デフォルト: なし

spamfilterX_final

一部のフィルタ処理ライブラリには、受取人アドレスに基づいて一連のアクションを実行する機能があります。spamfilterX_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 が累積します。このデフォルトにより、転送時にサイトのセキュリティポリシーが有効であることが保証されます。ほかの設定では保証されない場合があります)。


Symantec Brightmail AntiSpam を使用する

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 設定オプション

一部の 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 サーバーに接続できます。Messaging Server で提供するモジュールの名前は libspamass.so です。

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 からはスコアと判定のみが返されます。メッセージ自体は変更されません。つまり、ヘッダーの追加や件名の変更のようなオプションは、Sieve スクリプトによって行う必要があります。また、mode オプションを使用すると、判定を示すために返す文字列を指定できます。文字列の選択肢は、NULL、デフォルト、SpamAssassin の結果文字列、または verdict 文字列です。詳細は、表 14-4 を参照してください。

SpamAssassin の要件と使用法の考慮

SpamAssassin を実行する場所

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

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

SpamAssassin を配備する

以下の手順を実行して、SpamAssassin を配備します。

SpamAssassin 設定の例

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

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

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

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

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

    host および port は、spamd が実行されているシステムの名前と、spamd が着信要求を待機するポートの名前です。mode=0 は、メッセージがスパムとして認識された場合に、verdict によって指定された文字列が返されることを指定します。debug=1 は、SpamAssassin ライブラリでデバッグをオンにします。SpamAssassin 設定パラメータについては、表 14-4 を参照してください。

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

    ! for Spamassassin
    spamfilter1_config_file1=/opt/SUNWmsgsr/config/spamassassin. opt
    spamfilter1_library1=/opt/SUNWmsgsr/lib/libspamass.so
    spamfilter1_optional=1
    spamfilter1_string_action=data:,require "fileinto"; fileinto "$U;

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

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

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

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

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

  5. フィルタ処理するメッセージを指定します。
  6. ローカルメッセージストアに届くすべてのメッセージをフィルタ処理するには、ims-ms チャネルの destinationspamfilterXoptin 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 destinationspamfilter1optin spam
    ims-ms-daemon

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

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

スパムメッセージに 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. フィルタ処理するメッセージを指定します。詳細は、「スパムを個別のフォルダにファイリングするには」手順 3 を参照してください。
  2. SpamAssassin の設定ファイルを作成します。
  3. このファイルの名前と場所は、spamfilter_configX_file で指定したものです (次の手順を参照)。このファイルには、以下の行が含まれます。

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

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

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

    !for Spamassassin
    spamfilte1r_config_file=/opt/SUNWmsgsr/config/spamassassin.opt
    spamfilter1_library=/opt/SUNWmsgsr/lib/libspamass.so
    spamfilter1_optional=1
    spamfilter1_string_action=data:,require ["addheader"];addheader "Spam-test:$U";

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

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

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

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

件名行に 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. フィルタ処理するメッセージを指定します。「スパムを個別のフォルダにファイリングするには」手順 3 を参照してください。
  2. SpamAssassin の設定ファイルを作成します。
  3. この手順の詳細は、「スパムを個別のフォルダにファイリングするには」を参照してください。mode=1 は、メッセージがスパムであると判明した場合に SpamAssassin の結果文字列が返されることを指定します。

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

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

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

    !for Spamassassin
    spamfilter1_config_file=/opt/SUNWmsgsr/config/spamassassin.opt
    spamfilter1_library=/opt/SUNWmsgsr/lib/libspamass.so
    spamfilter1_optional=1
    spamfilter1_string_action=data:,addtag "[SPAM detected:$U]";

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

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

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

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

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

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

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

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

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

    Subject:[SPAM True ; 91.3 / 5.0] Vigaro Now!
    Spamscore:True ; 91.3 / 5.0

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

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

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

15:35:15.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:08.15: Creating socket to connect to SpamAssassin

16:00:08.15: Binding SpamAssassin socket

16:00:08.15: Connecting to SpamAssassin

16:00:08.15: Sending SpamAssassin announcement

16:00:08.15: Sending SpamAssassin the message

16:00:08.15: Performing SpamAssassin half close

16:00:08.15: Reading SpamAssassin status

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

16:00:08.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:08.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 オプション

SpamAssassin の mode オプション

メッセージの処理後、SpamAssassin はメッセージがスパムかどうかを判定します。mode オプションを使用すると、判定を示すために返す文字列を指定できます。文字列の選択肢は、NULL、デフォルト、SpamAssassin の結果文字列、または verdict オプションで指定された verdict 文字列です。デフォルトの文字列とは、NULL、SpamAssassin の結果文字列、または verdict で指定された文字列ではなく、その他の設定不可能な結果文字列です。mode の動作の概要を次の表で説明します。

表 14-5 SpamAssassin の mode オプションに対応して返される文字列 

verdict の設定

スパムかどうか

mode=0

mode=1

mode=2

mode=3

verdict=""  (設定なし)

 はい

NULL

SpamAssassin の結果

SpamAssassin の結果

SpamAssassin の結果

 いいえ

デフォルト

デフォルト

SpamAssassin の結果

デフォルト

verdict=文字列

 はい

verdict 文字列

SpamAssassin の結果

SpamAssassin の結果

SpamAssassin の結果

 いいえ

デフォルト

デフォルト

SpamAssassin の結果

verdict 文字列

1 列目は、verdict オプションが設定されているかどうかを示します。2 列目は、メッセージがスパムかどうかを示します。mode の列は、各モードに対応して返される文字列を示します。たとえば、verdict が設定されておらず mode が 0 に設定されている場合、メッセージがスパムでなければデフォルト文字列が返されます。verdictYO SPAM! に設定されていて mode が 0 に設定されている場合、メッセージがスパムであれば YO SPAM! という文字列が返されます。


Symantec Anti-Virus Scanning Engine (SAVSE) を使用する

SAVSE の配備方法以外にも、この節には、ほかの ICAP 対応のスパム防止/ウィルス防止プログラムを配備する際に有効な情報が含まれています。この節には、以下の項があります。

SAVSE の概要

SAVSE は、ウィルススキャンサービスを提供する TCP/IP サーバーアプリケーションおよび通信用のアプリケーションプログラミングインタフェース (API) です。ネットワークインフラストラクチャ機器を通して提供されたり、これらの機器に保存されるトラフィックを保護するために設計されています。モバイルコードや圧縮ファイル形式も含め、すべての主要なファイル形式でウィルス、ワーム、およびトロイの木馬を検出し、これらから保護します。詳細については、Symantec の Web サイトを参照してください。


Messaging Server では、SAVSE のスキャン機能だけがサポートされています。修復機能や削除機能はサポートされていません。


SAVSE の要件と使用法の考慮

これは Symantec から単独でライセンス許可された製品です。

SAVSE の構成では、スキャンモードだけがサポートされています。スキャンと修復、スキャンと削除のモードはサポートされていません。

SAVSE を実行する場所

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

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

SAVSE を配備する

以下の手順を実行して、SAVSE を配備します。

SAVSE の設定例

次の例では、ローカルメッセージストアに届くメッセージをテストして、ウィルスを含むメッセージを破棄します。最初の 3 つのステップは任意の順序で実行できます。

  1. SAVSE の設定ファイルを作成します。
  2. このファイルの名前と場所は、手順 2 で指定したものです。ここでは SAVSE.opt という名前を使用します。このファイルの設定例を次に示します。

    host=127.0.0.1
    port=1344
    mode=0
    verdict=virus
    debug=1

    host および port は、SAVSE プログラムが実行されているシステムの名前と、SAVSE プログラムが受信要求を待機するポート (SAVSE のデフォルトは 1344) です。mode=0 は、メッセージがウィルスを含んでいると認識された場合に、verdict によって指定された文字列 (この例の場合は virus という単語) が返されることを指定します。debug=1 はデバッグをオンにします。ICAP 設定パラメータについては、表 14-6 を参照してください。

  3. option.dat ファイルを作成します。次に例を示します。

    ! for Symantex Anti-virus Scan Engine
    spamfilter1_config_file=/opt/SUNWmsgsr/config/SAVSE.opt
    spamfilter1_library=/opt/SUNWmsgsr/lib/libicap.so
    spamfilter1_optional=1
    spamfilter1_string_action=data:,discard

  4. spamfilter1_config_files は、SAVSE 設定ファイルを指定します。

    spamfilter1_library は、SAVSE 共有ライブラリの場所を指定します。

    spamfilter1_optional=1 は、SAVSE プログラムによる失敗があった場合に MTA が操作を続行することを指定します。

    spamfilter1_string_action は、スパムメッセージに対して実行する Sieve アクションを指定します。この値は、ウィルスを含むメッセージが破棄されるように指定します。これはデフォルト値なので、値を変更する場合を除き、指定する必要はありません。

  5. フィルタ処理するメッセージを指定します。
  6. ローカルメッセージストアに届くすべてのメッセージをフィルタ処理するには、ims-ms チャネルの destinationspamfilter1optin 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 destinationspamfilter1optin virus
    ims-ms-daemon

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

  9. SAVSE が起動していることを確認します。
  10. 自動的に起動しているはずですが、起動していない場合は、次のような起動コマンドを使用します。/etc/init.d/symcscna start

ほかの使用可能な設定

mode0 に設定して spamfilterX_null_option とともに使用すると、メッセージがスパムであると判明した場合に特定のフォルダにメッセージをファイリングするなど、ほかのアクションを実行できます。次に例を示します。

spamfilter1_null_option=data:,require "fileinto"; fileinto "VIRUS";

感染したメッセージをフォルダにファイリングすることは、ほとんどの場合不適切です。

mode を 1 に設定すると、アクションを起動できます。たとえば、mode を 1 に設定して、MTA の spamfilterX_string_action オプションを次のように設定すると、スパムの結果を拒否メッセージに含めることができます。

spamfilter1_string_action=data:,require "reject"; reject "Message contained a virus [$U]";

reject アクションはウィルスを差出人に送り返すため、fileinto と同様、このアクションを使用してウィルスを処理する方法は不適切です。

option.dat ファイルに行を追加して、スパムメッセージのヘッダーにタグを追加することもできます。次に例を示します。

spamfilter1_string_action=data:,addtag "[SPAM detected!]";

mode2 に設定すると、メッセージにウィルスが含まれると判定されるかどうかにかかわらず、アクションを実行できます。あとでテストできるヘッダーフィールドが追加されているところは、明らかに mode 2 のアプリケーションです。

spamfilterX_string_action=data:,require ["addheader"];addheader "$U"

SAVSE オプション

SAVSE オプションファイルは実際に、かなり一般的な ICAP オプションファイルです。オプションファイルの名前および場所は、option.datspamfilterX_config_file で設定されています。SAVSE オプションファイルは、option=value という形式の行から構成されています。HOST というオプションが 1 つ必要です。このオプションは、ICAP フィルタ処理サーバーが動作しているシステムの名前に設定する必要があります。ICAP サーバーがローカルホストで動作していても、このオプションを設定する必要があります。SAVSE オプションファイルを以下に示します。

ICAP の mode オプション

メッセージの処理後、ICAP ウィルス防止プログラムは SASVE と同様に、メッセージにウィルスが含まれているかどうかを判定します。mode オプションを使用すると、この判定を示すために ICAP プログラムから返す文字列を指定できます。文字列の選択肢は、NULL、デフォルト、ICAP の結果文字列、または verdict オプションで指定された verdict 文字列です。デフォルトの文字列とは、NULL、ICAP の結果文字列、または verdict で指定された文字列ではなく、プログラムによって返されるその他の設定不可能な文字列です。mode の動作の概要を次の表で説明します。

表 14-7 ICAP の mode オプションに対応して返される判定文字列

verdict の設定

ウィルスかどうか

mode=0

mode=1

mode=2

mode=3

verdict="" (設定なし)

 はい

NULL

ICAP の結果

ICAP の結果

ICAP の結果

 いいえ

デフォルト

デフォルト

ICAP の結果

デフォルト

verdict=文字列

 はい

verdict 文字列

ICAP の結果

ICAP の結果

ICAP の結果

 いいえ

デフォルト

デフォルト

ICAP の結果

verdict 文字列

1 列目は、verdict オプションが設定されているかどうかを示します。2 列目は、メッセージにウィルスが含まれているかどうかを示します。mode の列は、各モードに対応して返される文字列を示します。たとえば、verdict が設定されておらず mode が 0 に設定されている場合、メッセージにウィルスが含まれていなければ、ICAP プログラムからデフォルト文字列が返されます。verdictWARNING VIRUS! に設定されていて mode が 0 に設定されている場合、メッセージにウィルスが含まれていれば、ICAP プログラムは WARNING VIRUS! という文字列が返されます。


Sieve 拡張のサポート

標準の Sieve 機能以外にも、Messaging Server は多くの拡張機能を提供します。拡張機能には addheaderaddtagspamtestspamadjust などがあります。addheaderaddtag については、「スパムメッセージに SpamAssassin スコアを含むヘッダーを追加する」および「件名行に SpamAssassin の結果文字列を追加するには」を参照してください。ここでは、spamtestspamadjust について説明します。

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

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 を使用すると、次のようになります。

spamfilterX_string_action=data:,require ["addheader"];addheader "$U"

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

spamfilter1_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 スクリプトは、結果を示す値のテスト、スパムであることが確実なメッセージの破棄、スパムと思われるメッセージのファイリング、ローカルドメインのアドレスからのメッセージ通過の許可を行うことができます。

spamfilter1_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;}                                                   



前へ      目次      索引      次へ     


Copyright 2005 Sun Microsystems, Inc. All rights reserved.