Sun Java System Messaging Server 6 2005Q4 管理指南

部署和配置第三方垃圾邮件过滤程序

Messaging Server 上部署第三方过滤软件需要五个操作:


注 –

由于以前版本的 Messaging Server 仅支持 Brightmail 过滤技术,因此关键字和选项具有如 sourcebrightmailBrightmail_config_file 这样的名称。现在这些关键字和选项已更改为更加通用的名称,例如 sourcespamfilterspamfilter_config_file。为了兼容,保留了以前的 Brightmail 名称。


装入和配置垃圾邮件过滤软件客户机库

每个垃圾邮件过滤程序都应为 Messaging Server 提供客户机库文件和配置文件。装入和配置客户机库包括以下两个操作:

指定垃圾邮件过滤软件库的路径

Messaging Server 最多可为邮件调用四种不同的过滤系统。例如,您可以通过 Symantec AntiVirus Scan Engine 和 SpamAssassin 运行邮件。每个过滤软件均由 1 到 4 之间的数字进行标识。这些数字将显示为各种垃圾邮件过滤选项、LDAP 属性和通道关键字的一部分,X 用作过滤标识号。例如,sourcespamfilterXoptinspamfilterX_config_file。如果关键字或选项名称中遗漏了标识号,则将默认为 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 可以配置为基于用户、域或通道过滤邮件。以下每节介绍了一种方案:


注 –

表达式 optin 表示选择用户、域或通道来接收邮件过滤。


Procedure指定用户级别的过滤

可能需要为每个用户指定过滤。例如,如果将垃圾邮件过滤或病毒过滤作为高级服务提供给 ISP 用户,则您可以指定哪些用户可以和不可以接收该服务。用户过滤的一般步骤如下所示:

步骤
  1. 指定激活垃圾邮件过滤软件的用户 LDAP 属性。

    option.dat 中设置 LDAP_OPTINX 选项。示例:


    LDAP_OPTIN1=SymantecAV
    LDAP_OPTIN2=SpamAssassin
  2. 在接收垃圾邮件过滤的用户条目中设置过滤属性。

    过滤属性的值为多个值并取决于服务器。使用步骤 1 所示的示例,条目为:


    SymantecAV: virus
    SpamAssassin: spam

    对于像 Brightmail 这种既可以过滤病毒又可以过滤垃圾邮件的程序,有效值为 spamvirus。用作多值属性时,每个值均需要一个单独的属性条目。例如,如果将 Brightmail 的过滤器属性设置为 Brightmail,则条目为:


    Brightmail: spam
    Brightmail: virus

用户级别的过滤示例

本示例假定使用的是 Brightmail。还假定在 option.dat 文件中将 LDAP_OPTIN1 设置为 Brightmail。用户 Otis Fanning 在其用户条目中将 Brightmail 属性设置为 spamvirus。Brightmail 将对他的邮件进行垃圾邮件和病毒过滤。用户级别的过滤示例显示了 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 Anti-Spam使用 SpamAssassin使用 Symantec Anti-Virus Scanning Engine (SAVSE)

Procedure指定域级别的过滤

您可以指定接收过滤的域。此功能的示例是:是否将反垃圾邮件或反病毒过滤作为高级服务提供给 ISP 域用户。指定域过滤的一般步骤如下所示:

步骤
  1. 指定激活过滤软件的域 LDAP 属性。

    option.dat 中设置 LDAP_DOMAIN_ATTR_OPTINX 选项。示例:


    LDAP_DOMAIN_ATTR_OPTIN1=SymantecAV
    LDAP_DOMAIN_ATTR_OPTIN2=SpamAssassin
    
  2. 在接收垃圾邮件过滤的域条目中设置过滤属性。

    过滤属性的值为多个值并取决于服务器。使用步骤 1 所示的示例,条目将如下所示:


    SymantecAV: virus
    SpamAssassin: spam

    对于像 Brightmail 这种既可以过滤病毒又可以过滤垃圾邮件的程序,有效值为 spamvirus。用作多值属性时,每个值均需要一个单独的属性值条目。例如,如果将 LDAP_DOMAIN_ATTR_OPTIN1 设置为 Brightmail,则条目为:


    Brightmail: spam
    Brightmail: virus

域级别过滤示例

本示例假定使用的是 Brightmail。还假定在 option.dat 文件中将 LDAP_DOMAIN_ATTR_OPTIN1 设置为 Brightmail。在 Sun LDAP Schema 1 DC 树的 sesta.com 域条目中,将 Brightmail 属性设置为 spamvirus。对于 Sun LDAP Schema 2,也在接收垃圾邮件过滤的域条目中对 Brightmail 进行设置。

Brightmail 将对所有发送到 sesta.com 的邮件进行垃圾邮件和病毒过滤。下面显示了域级别过滤示例


示例 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 Anti-Spam使用 SpamAssassin使用 Symantec Anti-Virus Scanning Engine (SAVSE)

Procedure指定通道级别的过滤

按照源通道或目标通道的过滤为垃圾邮件过滤提供了更高的灵活性和粒度。例如,您可能希望按以下方式进行过滤:

Messaging Server 允许您按照源通道或目标通道指定过滤。表 14–1 中所述的通道关键字是实现此过滤的机制。以下示例说明如何设置通道级别的过滤。

步骤
  1. 在所有入站 SMTP 服务器(负责向后端邮件存储主机发送邮件)的 imta.cnf 文件中添加重写规则。示例:

    msg_store1.siroe.com $U@msg_store1.siroe.com

  2. 使用 destinationspamfilterXoptin 关键字添加与该重写规则对应的通道。示例:


    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
    

通道级别过滤示例

这些示例假定一个由数字 1 指定的过滤程序。它们使用下表中所示的关键字。

表 14–1 垃圾邮件过滤器的 MTA 通道关键字

通道关键字 

说明 

destinationspamfilterXoptin

指定发送到该通道的所有邮件均由反垃圾邮件软件 X 进行过滤,即使那些服务未由用户或域使用 LDAP_OPTIN LDAP 属性指定。(过滤软件 X 由 option.dat 中的 spamfilterX_library 定义。)过滤器参数取决于过滤程序,并且跟在关键字后面。例如,Brightmail 的参数通常为 spamvirusspam,virus。SpamAssassin 的参数为 spam

在本示例中,将对发送到邮件存储中的所有邮件进行垃圾邮件扫描: 

ims-ms destinationspamfilter1optin spam,virus. . .

sourcespamfilterXoptin

指定所有源自此通道的邮件将由反垃圾邮件软件 X 进行过滤,即使那些服务未由用户或域使用 LDAP_OPTIN LDAP 属性指定。关键字后面跟系统范围的默认参数,可用的参数取决于过滤程序。例如,对于 Brightmail,参数为 spamvirusspam,virus。对于 SpamAssassin,参数为 spam。如果 switchchannel 有效,则应将此关键字放置在 switched-to 通道上。

示例 1。对所有从 MTA 中继发送到称为 msg_store1.siroe.com 的后端邮件存储的邮件进行垃圾邮件和病毒过滤。

Procedure过滤从 MTA 中继发送到后端邮件存储的邮件

步骤
  1. imta.cnf 文件(负责向后端邮件存储主机发送邮件)中添加重写规则。示例:

    msg_store1.siroe.com   $U@msg_store1.siroe.com
  2. 使用 destinationspamfilterXoptin 关键字添加与该重写规则对应的通道。示例:

    tcp_msg_store1 smtp subdirs 20 backoff “pt5m” “pt10” “pt30” “pt1h” \
    “pt2h” “pt4h” maxjobs 1 pool IMS_POOL fileinto $U+$S@$D \
    destinationspamfilter 1optin 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 外发到 Internet 的邮件。(通常情况下,所有外发到 Internet 的邮件都通过 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。过滤所有发送到两层系统中本地邮件存储的邮件,不使用基于用户的选定:

    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。另请参见


使用表 14–2 中所述的 MTA 垃圾邮件过滤器选项 (option.dat) 来指定 Sieve 脚本。主垃圾邮件过滤器操作选项包括 SpamfilterX_null_action(指定返回的垃圾邮件结论为空值时要执行的 Sieve 规则)和 SpamfilterX_string_action(指定返回的垃圾邮件结论为字符串时要执行的 Sieve 规则)。

垃圾邮件过滤程序通常向 MTA 返回一个字符串或一个空值以表示邮件为垃圾邮件。有些程序还会返回垃圾邮件分数—该分数是对邮件可能为垃圾邮件的数字评定。此分数可用于整个操作的一部分。以下示例显示了如何指定对已过滤的邮件的操作。每个示例均假定过滤程序由数字 1 指定。

示例 1:将结论为空值的垃圾邮件归档到文件 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

也可以对返回的结论为空值的垃圾邮件执行相同的操作:

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

示例 4。此行将向通过字符串结论值确定为垃圾邮件的每封邮件中添加标题 Spam-test: FAIL

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

示例 5。此行将向返回字符串的垃圾邮件的主题行添加字符串 [PROBABLE SPAM]。

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

示例 6。如果标题包含 resent-fromUser-1,则此行假定结论值为字符串,并且将垃圾邮件归档到邮箱 testspam 中。如果邮件不包含此标题,则此行将邮件归档到 spam 中。

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

因为可以使用大多数垃圾邮件过滤器软件对结论字符串进行配置,所以您可以根据返回的字符串来指定不同的操作。可以使用匹配的 spamfilterX_verdict_nspamfilterX_action_n 选项对来完成此操作。

示例 7。这些匹配的选项对将放弃返回的结论字符串为 remove 的垃圾邮件。


spamfilter1_verdict_0=remove
spamfilter1_action_0=data:,discard

有关如何指定垃圾邮件结论字符串的说明,请参阅特定的垃圾邮件过滤软件各节。

表 14–2 MTA 垃圾邮件过滤器选项 (option.dat)

用于 Spam Assassin 的 MTA 选项 

说明 

SpamfilterX_config_file

指定过滤软件 X 配置文件的完整文件路径和名称。默认值:无 

SpamfilterX_library

指定过滤软件 X 共享库的完整文件路径和名称。默认值:无 

SpamfilterX_optional

用于控制是将过滤库 X 报告的某些失败视为临时进程失败还是忽略这些失败。默认值 0 指定垃圾邮件过滤问题将导致临时处理故障。如果将此值更改为 1,则在某些(可能并非全部)过滤库发生故障的情况下,系统将跳过垃圾邮件过滤过程。特别是,如果系统阻塞,库代码中没有返回值,则 MTA 的某些部分也可能会阻塞。也可以将此值设置为 -2 和 2。分别与 0 和 1 相同,只是在垃圾邮件过滤器插件报告问题时,这样设置会导致发送系统日志消息。

默认值:0

LDAP_optinX

指定基于用户激活过滤软件 X 所使用的 LDAP 属性名称。这应该是 inetMailUser 对象类中的属性。

属性本身可以具有多个值并区分大小写。对于 SpamAssassin,该属性值应为小写的 spam

默认值:无 

LDAP_domain_attr_optinX

指定基于域激活过滤软件 X 所使用的 LDAP 属性名称。它适用于目标域。除了应位于对象类 mailDomain 中之外,它与 LDAP_optin 类似。

默认值:无 

SpamfilterX_null_optin

指定一个字符串,如果发现该字符串为 LDAP_optinXLDAP_domain_attr_optinX 定义的属性值,将导致 MTA 如该属性不存在那样运行。也就是说,该字符串禁用了此条目的过滤。请参见指定要过滤的邮件

默认值:空字符串。默认情况下,系统将忽略空选定属性。(这是自 iPlanet Messaging Server 5.2 以来的更改,在 iPlanet Messaging Server 5.2 中,空选定属性使用空选定列表触发过滤。可以通过将 spamfilterX_null_optin 设置为实际始终不会出现的字符串来恢复 5.2 版的这种行为。)

SpamfilterX_null_action

定义 Sieve 规则,指定当过滤软件 X 返回空值结论时如何处理邮件。使用文件 URL 可以从外部存储 Sieve 表达式。例如:file:///var/opt/SUNWmsgsr/config/null_action.sieve。此外,请勿使用 Sieve reject 操作拒绝垃圾邮件,因为这样做会向无辜的一方(其地址被用于发送垃圾邮件)发送不能传递的通知。默认值:data:,discard;

SpamfilterX_string_action

定义 Sieve 规则,指定当结论为字符串时如何处理邮件。使用文件 URL 可以从外部存储 Sieve 表达式。例如:file:///var/opt/SUNWmsgsr/config/null_action.sieve。此外,请勿使用 Sieve reject 操作拒绝垃圾邮件,因为这样做会向无辜的一方(其服务器被用于发送垃圾邮件)发送不能传递的通知。

默认值:data:,require "fileinto"; fileinto "$U;

其中 $Uverdict 返回的字符串。

spamfilterX_verdict_n

spamfilterX_verdict_nspamfilter X_action_n 是匹配的选项对,其中 n 是 0 到 9 之间的数字。这些选项使您可以为任意结论字符串指定 Sieve 过滤器。分别将 spamfilterX_verdict_nspamfilterX_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_USER_CARRYOVER 将控制如何将垃圾邮件过滤选定列表从一个用户或别名条目传送到另外一个用户或别名条目。该选项是按位编码的值。不同的位值具有的含义如下:

位 0(值 1)。每个 LDAP 用户条目无条件地覆盖所有先前活动的用户/域选定。 

位 1(值 2)。如果用户的域具有选定属性,则该属性将覆盖所有先前处于活动状态的用户/域/别名选定。 

位 2(值 4)。如果用户具有选定属性,则该属性将覆盖所有先前处于活动状态的用户/域/别名选定。 

位 3(值 8)。由 [optin] 非位置参数指定的选定将覆盖所有先前处于活动状态的用户/域/别名选定。 

默认值:0(如果一个用户具有可以转发到另一个用户的传送选项,则选定将累积起来。此默认值确保了转发时站点安全策略的有效性;其他设置可能不具有此种功能。)