级别: 中级 在技术不断变化的世界中,垃圾邮件数量的增长速度已超出了大多数电子邮件系统可以处理或控制的能力。在 2004 年,所有美国公司差不多要花九十万美元来抗击垃圾邮件。许多公司都曾致力于开发产品来识别和隔离可能的垃圾消息。最近的调查表明,所有电子邮件中,有 40% 以上被认为是垃圾邮件,平均每个电子邮件用户每天收到 6 条垃圾消息。这还不算很糟糕,估计到 2007 年,垃圾邮件会增长到 63%。在 Spam Filter Review Web site 中可以找到这些统计数字和更多信息。 从 Lotus Domino 4 开始,Lotus 就一直在寻找阻止垃圾邮件和限制 Simple Mail Transfer Protocol (SMTP) 消息的方法。Lotus Domino 4 引入了多个 Notes.ini 参数来控制转发、入站连接和发件人的域。Lotus Domino 5 引入了 Graphical User Interface (GUI),Domino 管理员可以在 Configuration Settings Document 的字段中列出值。这使 Domino 管理员可以更轻松地配置 SMTP,同时减少了 Notes 用户的工作。 Lotus Domino 6 进行了很大的改进,开发了将消息与 DNS 黑名单(DNSBL)过滤和内容过滤进行集成的技术。本系列文章将介绍 IBM 创建的、用来限制服务器中垃圾邮件的数量的多种解决方案,并预先介绍了 Lotus Domino 7 中的垃圾邮件控制。在本系列文章的第 1 部分中,我们将查看 Configuration Server 文档中的设置和服务器邮件规则,帮助控制垃圾邮件。在第 2 部分中,我们将讨论 Server 文档中的设置和 Notes.ini 变量,用它们来控制垃圾邮件。我们还将大概了解一下 Lotus Notes/Domino 7 中的功能改进。本系列文章假设您是一位熟悉 Lotus Notes 和 Domino 6 的经验丰富的 Domino 管理员。 Domino 中的 SMTP 设置 SMTP 任务控制了 Domino 服务器中的 SMTP 监听器。默认情况下,无论何时重新启动 SMTP 服务,从那时起,每隔两分钟,SMTP 服务就会自动检查 Notes.ini 文件、Configuration Settings 文档和 Server 文档,查看设置是否有变化。如果服务检测到设置已经发生了更改,那么它会重新构建其内部配置来合并更改。 Configuration Settings 文档 入站转发控制 在 Deny 字段中,星号 (*) 会阻止 Domino 将消息转发给任何外部 Internet 主机或 IP 地址的外部 Internet 域。您还可以使用星号 (*) 代表 IP 地址的子网。“Allow messages to be sent only to the following external internet domains”字段中列出的任何 IP 地址或主机都要优先于“Deny messages to be sent to the following external internet domains”字段中的 IP 地址或主机。 图 1. SMTP 入站转发控制 “Allow messages only from the following internet hosts to be sent to external internet domains”字段中的任何值都将优先于“Deny messages from the following internet hosts to be sent to external internet domains”字段中的值。在以前的 Domino 版本中,当发生冲突时,入站转发控制的 Deny 字段中的条目要优先于 Allow 字段中的条目。 如果想转换回版本 5 使用的算法,需要配置 Notes.ini 变量 SMTPRelayHostsandDomains=value。其默认值是 0。该变量强制服务器遵守 Domino 5 规则来解决 SMTP 入站转发控制中 Allow 和 Deny 列表条目之间的冲突。
企业软件工程师, IBM Corporation
2004 年 10 月 本文是关于控制垃圾邮件的 Lotus Domino 方法的系列文章的第 1 部分。您将了解如何使用 Configuration Settings 文档、服务器邮件规则以及 Lotus Domino 6 及其更高版本中的入站 SMTP 命令和扩展来控制垃圾邮件。
大多数 Notes 用户都希望他们的管理员能够阻止垃圾邮件,而无需自己删除或过滤掉不想要的电子邮件。阻止垃圾邮件的最有效方法是阻止消息进入您的环境中。这需要配置 SMTP 和 Router 设置。可以在 Configuration Settings 文档、Server 文档和 Domino 服务器 Notes.ini 文件中进行这两项配置。
控制 SMTP 通讯量的最有效方法是通过 Configuration Settings 文档。Configuration Settings 文档有多个选项卡,它们能够过滤 SMTP 电子邮件,从而减少垃圾邮件的数量。在 Configuration Settings 文档的 Router/SMTP – Restrictions and Controls – SMTP Inbound Controls 选项卡中,有 6 个配置 SMTP 协议的附加部分。
这一部分允许您填充 Internet 域,Domino 将允许或拒绝将消息转发到该域,如图 1 中所示。不配置 Domino 服务器的转发设置会导致该服务记入黑名单中,从而无法将出站 SMTP 消息发送到使用黑名单服务的域中。字段 条目 Deny messages to be sent to the following external internet domains lotus.com Allow messages only from the following internet hosts to be sent to external internet domains mail.ibm.com
入站转发强制
这一部分将讨论转发控制的高级设置。下列三个字段指定了图 2 中所示的其他 SMTP 转发设置。
图 2. SMTP 入站转发强制
Perform Anti-Relay enforcement for these connecting hosts
该字段指定了一些连接,服务器对这些连接强制执行图 1 中所示的 SMTP 入站转发控制中定义的入站转发控制。您需要选择下列设置之一:
- External hosts(默认值):服务器只将入站转发控制应用于从本地 Internet 域外连接到该服务器的主机。本地 Internet 域中的主机不受反转发限制。本地 Internet 域是通过 Global Domain 文档(如果存在)定义的,或者是作为主机服务器的 Internet 域定义的。
- All connecting hosts:服务器将入站转发控制应用于试图将邮件转发到外部 Internet 域的所有主机。
- None:服务器忽略入站转发控制中的设置。所有主机始终都可以转发。
Exclude these connecting hosts from anti-relay checks
可以创建一个例外列表,用它包含转发到任何允许的域的系统的主机名称或 IP 地址。对于每个指定的例外,不强制执行入站转发控制。输入不受图 1 中入站转发控制部分中的指定限制控制的主机 的IP 地址或名称。输入 IP 地址时,将其括在方括号内。
Exceptions for authenticated users
该字段可用来指定在连接到服务器时,是否可以不强制提供登录凭证的用户执行入站转发控制。必须选择下列选项之一:
- Perform anti-relay checks for authenticated users:对于已经验证的用户,服务器不允许有例外。已验证的用户与未验证的用户同样要受到管制。
- Allow all authenticated users to relay:使用有效名称和口令登录的用户可以不受适当的入站转发控制。使用该选项可以允许从本地 Internet 域外的 ISP 帐户连接到网络的 POP3 或 IMAP 用户进行转发。
DNS 黑名单过滤
这一部分控制着是否使用图 3 中所示的 DNS 黑名单过滤。如果启用它,那么当 Domino 收到 SMTP 连接请求时,它会检查连接主机是否列在指定站点的黑名单中。如果在名单中发现了连接主机,Domino 会以控制台消息或 Notes Log 的 Mail Routing Events 视图中的条目的形式来报告事件。控制台消息和日志条目都提供了服务器的主机名称和 IP 地址,以及列出该服务器的站点的名称。如果 Domino 在一个黑名单中发现了连接主机,那么它不会再继续检查配置的其他站点的名单。
图 3. DNS 黑名单过滤
可以选择许多维护 DNS 黑名单的公共可得的订阅服务和专用付费的订阅服务。使用公共黑名单服务时,Domino 通过 Internet 执行 DNS 查询。在一些情况下,可能要花大量的时间来解决提交给 Internet 站点的 DNS 查询。如果通过 Internet 进行的 DNS 查询的网络等待时间会减慢执行速度,那么可以考虑与允许区域传送的专用服务签约,从而使 Domino 能够对本地主机执行所需的 DNS 查找。在区域传送过程中,服务提供者的 DNS 区域文件的内容会被复制到本地网络的 DNS 服务器中。
对于将服务器添加到自己的名单中,每个黑名单服务都使用自己的标准。黑名单站点使用自动测试和其他方法来确定受怀疑的服务器是在发出垃圾邮件,还是被用作开放转发器。限制性较高的黑名单站点会在自动测试失败后立刻将该服务器添加到它们的名单中,而不管是否已经确认服务器是垃圾邮件的来源。其他限制性较低的站点只会在其管理员指定的宽限期后不能关闭服务器对第三方的转发时,才列出该服务器,或者只在服务器接受大家都知道的垃圾邮件者时列出该服务器。
当因为在 DNS 黑名单中发现主机而拒绝连接时,我们可以定制返回的错误消息的文本。默认的错误消息将指明是因为策略原因而拒绝连接。我们可以使用格式指定符 %S 来指定遭拒绝主机的 IP 地址,以及 Domino 在其中发现列出该主机的 DNS 黑名单站点。
例如,假设输入下列文本:
Your host %s was found in the DNS Blacklist at %s
当 Domino 拒绝连接时,它向主机返回错误消息,其中用该主机的 IP 地址替代第一个 %S,用 DNS 黑名单站点名称替代第二个 %S。因此,如果输入上例中的文本,遭拒绝的主机会收到以下错误消息:
Your host 127.0.0.2 was found in the DNS Blacklist at ibmdnsbl.mail-abuse.org
在 DNS 黑名单中发现连接主机时所需的操作
必须选择下列 DNS 黑名单设置之一:
- Log:当 Domino 发现黑名单中有连接主机时,它会接受该主机的消息,并在服务器日志中记录连接服务器的主机名称和 IP 地址,以及列出该服务器的站点名。
- Log and tag message:当 Domino 发现黑名单中有连接主机时,它接受该主机的消息、连接服务器的主机名称和 IP 地址,并列出该服务器的站点名,向每个接受的消息添加注释项 $DNSBLSite。$DNSBLSite 项的值是在其中发现主机的黑名单站点。管理员可以使用 $DNSBLSite 注释项来提供对黑名单中列出的主机收到的消息的自定义处理。
- Log and reject message:当 Domino 发现黑名单中有连接主机时,它拒绝连接该主机,并向该主机返回可配置的错误消息。
还可以从 Domino Administrator 或通过在服务器控制台使用 SHOW STAT SMTP 命令,来收集统计信息。可以进一步扩展统计信息,以了解在其中一个已配置 DNSBL 上发现给定 IP 地址的次数。要收集扩展信息,需要在服务器的 Notes.ini 文件中设置变量 SMTPExpandDNSBLStats。
SMTPExpandDNSBLStats=value
使用该设置为 DNS 黑名单站点中发现的每个连接主机生成 DNS 黑名单过滤统计。
- 0 表明 SMTP 服务器无法生成特定于主机的 DNS 黑名单过滤统计。
- 1 表明 SMTP 服务器可以生成特定于主机的 DNS 黑名单过滤统计,该统计表明每个 DNSBL 站点、每个连接主机的 IP 地址的总命中数。
这个 Notes.ini 设置被应用于 Domino 服务器。如果没有该设置,SMTP 任务维护的统计将跟踪在所有组合站点的组合 DNSBL 中发现的连接主机的总数,以及每个配置站点的 DNSBL 中发现的连接主机数。
入站连接控制
可以将这一部分用于连接到 Domino 服务器的主机和 IP 地址。可以配置 Domino,让它从任何连接主机执行反向 DNS 查找。这将强制 Domino 通过执行反向 DNS 查找来确认连接主机的名称。Domino 检查 DNS 的 PTR 记录,该记录将连接主机的 IP 地址与主机名称相匹配。如果因为 DNS 不可用或没有 PTR 记录而导致 Domino 不能确定远程主机的名称,那么 Domino 将不允许主机传送邮件。
还可以输入允许或拒绝连接到该服务器的 SMTP 服务的主机名称和/或 IP 地址,如图 4 所示。可以输入完整的主机名称,比如在特定服务器的完全限定主机名称中,也可以输入主机名称的一部分,使用通配符。例如,在“Allow connections only from the following SMTP internet host names/IP addresses”字段中,如果输入 ibm.com,那么 Domino 只接受 *ibm.com 表示的域中的邮件主机的连接,所以,它接受以 ibm.com 结尾的所有主机名称,包括 us.ibm.com 和 server.ibm.com。Domino 拒绝其他所有连接请求。
图 4. SMTP 入站连接控制
入站发件人控制
这一部分将用于限制入站 SMTP 消息的发件人。可以启用对发件人的域的反向 DNS 查找,如图 5 所示。如果启用该操作,那么 Domino 将通过检查 MX、CNAME 或 A 记录的 DNS 来验证发件人的域是否存在,而这些 DNS 与从发送主机收到的 MAIL FROM 命令中的地址域部分是相匹配的。如果没有匹配项,那么 Domino 将拒绝主机的入站邮件。
可以填充 Internet 地址,服务器将接受或拒绝其中的消息。在 SMTP 对话过程中,Domino SMTP 监听器把连接主机收到的 MAIL FROM 命令中的地址与这些字段中的条目进行比较。
图 5. SMTP 入站发件人控制
入站预期收件人控制
这一部分将允许您限制入站 SMTP 消息的收件人的名称。其中非常有用的一个功能是“Verify that local domain recipient exist in the Domino Directory”字段。该字段指定 SMTP 监听器是否根据 Domino Directory 中的条目检查 RCPT TO 命令中指定的收件人名称。如果启用该字段,SMTP RCPT TO 命令中指定的地址的域部分将与配置的本地 Internet 域进行匹配;SMTP 监听器将检查配置的所有目录来确定指定的收件人是否是有效用户。如果成功完成所有查找,但未找到匹配的用户名,那么 SMTP 服务器将返回 550 永久错误响应,指明该用户为未知用户:
550 bad_user@yourdomain.com … No such user
选择该设置可以帮助防止发送给不存在的用户(例如,要发送给已经离开组织的用户的垃圾消息和消息)的消息作为死邮件堆积在 Mail.box 中。为了避免因为目录无效而拒绝消息,当进行的目录查找未成功完成时,Domino 将接受消息。参见图 6,以获得更多信息。
图 6. SMTP 入站预期收件人控制
可以填充 Internet 地址,这些地址在本地 Internet 域内,它们被允许或拒绝接收 Internet 的邮件。还可以创建 Notes 组,该组包含允许接收或拒绝 Internet 的邮件的地址的列表,然后您可以在 Notes 字段中输入组名称。
注意:以上一些部分包含 Allow messages… 和 Deny messages… 字段。这些字段是互斥的。Deny messages… 字段中的任何条目都将忽略相应的 Allow messages… 字段。
服务器邮件规则
可以为服务器创建内容过滤规则,这些规则定义要对特定消息采取的操作。当新的满足指定条件的消息放入 Mail.box 中时,Domino 会自动执行指定的操作。规则条件是基于消息头或消息正文中的内容的。通过配置一组条件和操作,可以定制规则来帮助阻挡垃圾邮件,或拦截具有可疑内容的消息。除了明确指明操作规则的地方之外,如果规则阻止消息到达其目的地,那么 Domino 不用通知发件人或收件人。
如果 Mail.box 收到加密消息(Notes 加密、S/MIME、PGP 等),那么服务器邮件规则将处理基于消息信封中的未加密信息的所有规则条件,如发件人、重要性和收件人,但不处理基于消息正文的加密部分的条件。大多数规则条件都是基于消息信封中的信息的。服务器不记录规则无法处理的消息的实例。
Domino 将创建的邮件规则存储在 Configuration Settings 文档的 Router/SMTP – Restrictions and Controls – Rules 选项卡中。启动时,每个服务器都从适当的 Configuration Settings 文档中检索邮件规则,并将其登记为正在使用的每个 Mail.box 数据库中的监视器。无论 Mail.box 何时从任何来源(如 SMTP 处理、其他服务器中的 Router 或放置消息的客户机)收到新的消息,服务器都将根据登记的邮件规则评估不同的消息字段。每个消息只评估一次。
创建邮件服务器规则
添加新的规则时,只有在服务器重新加载了该邮件规则之后,该规则才生效。如果 Server 任务在对 Configuration Settings 文档执行例行检查时检测到规则发生了更改,那么它会自动触发重新加载。这类检查大约每五分钟进行一次,也可以从 Domino 控制台重新加载。
创建服务器邮件规则时,首先应该考虑一些问题。当启用多个邮件规则时,可以通过在列表中将这些规则上下移动来设置它们的相对优先级。最好在规则的开头放置最通用的字,如果满足一个条件,就不用继续处理规则中的其他条件。除非真的需要,否则不要搜索消息的正文。搜索正文非常影响服务器的 CPU 和内存性能,可能导致不希望的 Domino 服务器性能。邮件规则的最大数量是 100,但可以通过 Notes.ini 变量对其进行调整。
图 7. New Rule 对话框
创建服务器邮件规则的第一步是确定要检查或要指定条件的消息项。可以从下列项中进行选择:
- Sender
- Subject
- Body
- Importance
- Delivery priority
- To
- CC
- BCC
- To or CC
- Body or subject
- Internet domain
- Size(以字节表示)
- All documents
- Attachment name
- Number of attachments
- Form
- Recipient count
- Any recipient
一旦有了要检查的消息项,就需要设置逻辑运算符或限定符。可以选择下列选项:
- Contains(用于文本字段值)
- Does not contain(用于文本字段值)
- Is
- Is not
- Is less than(用于数字字段值)
- Is greater than(用于数字字段值)
还可以修改服务器邮件规则来添加更多的条件,如 And 或 Or。也可以将例外作为选项添加到服务器邮件规则中。
创建服务器邮件规则的第二步是指定当满足条件语句的消息到达时将执行的操作。请参考表 A 来选择选项。
表 A. 为服务器邮件规则指定操作。
操作 | 描述 |
Journal this message | Router 将消息的副本发送给配置的邮件日志数据库,然后将消息发送到它的目的地。必须在 Router/SMTP – Advanced – Journaling 选项卡中启用日志 |
Move to database | Router 将消息从 Mail.box 中删除,并将其移至附加文本字段中指定的数据库中,例如 junkmail.nsf。指定的数据库必须已经存在。消息不发送到其目的地。将消息放在垃圾邮件数据库中,以便进一步检查这些消息是否包含不想要的内容或其他可疑内容 |
Dont accept message | Domino 拒绝消息,但 Router 不会生成邮递失败报告。根据消息来源,发件人可能会收到未邮递报告(NDR)或关于消息未发送的其他说明。Domino 不接受收到的 SMTP 消息时,它会向发送服务器返回一个 SMTP 永久错误代码,指明是因为策略原因而拒绝消息。SMTP 永久错误(500 系列错误)指出了发件人在试图向相同地址发送消息时会再犯的错误类型 根据发送客户机和服务器的配置,消息发件人可能收到邮递失败报告。对于通过 Notes 发送受到的消息,Domino 返回邮递失败报告,指明消息违反邮件规则。对于通过 Notes 客户机收到的消息,发送客户机会显示错误,指明消息违反了邮件规则 |
Dont deliver message | Domino 接受消息,但不将其发送至目的地,它将根据下列指定的选项之一处理该消息:
|
Change routing state | Domino 接受消息,但不邮递该消息。而是将其标记为等待,也就是说将消息中 RoutingState 项的值改为 HOLD。对消息的发送状态进行这类更改会使 Router 将消息无限期地保留在 Mail.box 中,等待管理操作来确定是删除还是释放等待中的消息 |
入站 SMTP 命令和扩展
Lotus Domino 支持一些通用 ESMTP (Extended Simple Mail Transfer Protocol) 命令和扩展。在很大程度上,其中的大部分命令和扩展都是在 Server Configuration Settings 文档的 Router/SMTP – Restrictions and Controls – Advanced – Commands and Extensions 选项卡中配置的。每个 ESMTP 命令由不同的 Request For Comment (RFC) 支持。请参阅表 B,以获得 SMTP 监听器任务支持的入站 ESMTP 命令和扩展。
表 B. 入站 SMTP 命令和扩展
SIZE 扩展(RFC 1427) |
|
Pipelining 扩展(RFC 1854) |
|
DSN 扩展(RFC 3461) |
|
8 位 MIME 扩展(RFC 1652) |
|
HELP 命令 |
|
VRFY 命令(RFC 821 的 3.3 节) |
|
EXPN 命令(RFC 821 的 3.3 节) |
|
ETRN 命令(RFC 1985) |
|
通过 TCP/IP 端口协商的 SSL(RFC 2487 和 RFC 3207) |
接受远程服务器的 STARTTLS 命令之后,Domino 使用该服务器的 SSL 端口的设置来管理会话的验证。为了使 Domino 对使用 SMTP AUTH 命令的远程主机进行验证,必须对 Domino SSL 端口启用名称和口令进行验证。我们将在本系列文章的第 2 部分中讲述如何配置服务器的 SSL 端口 |
结束语
在到目前为止的本系列的文章中,我们介绍了 Domino 中的 SMTP 设置,您可以在 Server Configuration Settings 文档中设置它们,其中包括入站转发控制、黑名单和入站 SMTP 命令和扩展。我们还讨论了服务器邮件规则和邮件日志,它们是用来清除垃圾邮件的另外两种方法。在本系列文章的第 2 部分,我们将介绍影响 SMTP 的 Server 文档设置和 Notes.ini 变量。然后将了解 Lotus Notes/Domino 7 中有哪些新功能。
参考资料
- 您可以参阅本文在 developerWorks 全球站点上的 英文原文 。
- 阅读本系列文章的第 2 部分。
- 这篇教程 在 Lotus Domino 6 中管理外来垃圾邮件 也许还会对您有所帮助。
- 关于反垃圾邮件控制的更多信息,请参阅 LDD Today 的文章 “Preventing spam mail in Notes/Domino 6” 和 “Notes spam mail filtering“。
- 您可能还想参阅 IBM 的红皮书 Lotus Domino 6 spam Survival Guide。
- 通过参与 developerWorks blogs 加入 developerWorks 社区。
- 在 Developer Bookstore 的 Lotus 区购买打折出售的 Lotus 书籍。
关于作者 Edmund “Ted” Stanton 是北美 Lotus Software 的企业软件工程师。自 2000 年以来,他一直在处理 Lotus Domino 及其扩展产品。在 2002 年进入 IBM 之前,他曾在 Towers Perrin 做系统集成工作。Ted 具有计算机科学和数学方面的双学位,并在弗吉尼亚大学威斯林分院辅修商务。他所专长的领域主要包括邮件发送协议和即时消息。他具有 Domino Document Manager (Domino.doc)、Lotus Instant Messaging (Sametime)、Lotus Team Workplace (QuickPlace)、Domino Administrator、Domino Designer、WebSphere server 和 Windows 2000 方面的认证。还是 Lotus Domino Shared Mail 的 Primary Area Expert,曾经撰写过大量与该主题有关的文章。他与别人合著了 IBM 红皮书 Lotus Domino 6.5.1 and Extended Products Integration Guide,SG24-6357-00。Ted 还是 developerWorks: Lotus 上“Integrating voice, email, and fax in a single unified messaging store”一文的作者。Ted 是 Lotus Notes/Domino 7 enablement 小组的一名成员,负责进行 Beta 测试和说明新的产品功能。他还是指定的焦点组的活动成员,在那里,他的任务是使 IBM 业务合作伙伴了解成功执行 Lotus Workplace Messaging System Administrator 角色所需的技能和知识。 |