Sun Java System Messaging Server 6.3 管理指南

10.12 优化 MTA 性能

本节介绍了 MTA 的其他优化。其中包含以下各节:

10.12.1 优化对发送到邮件列表的邮件的 LDAP 目录所进行的授权检查

您可以使用元字符替换减少对发送到邮件列表的邮件的 LDAP 目录所进行的授权检查。

现在可以在 mgrpModeratormgrpAllowedBroadcastermgrpDisallowedBroadcaster 属性中指定元字符替换。特别是各种与地址有关的元字符序列(用于整个地址的 $A、用于邮箱部分的 $U、用于域部分的 $D)都引用当前的信封 From: 地址,在某些情况下可以用于将 URL 返回的结果限制在可能(或保证)匹配的条目中。这可以使授权检查变得更有效。

新的 MTA 选项 PROCESS_SUBSTITUTIONS 控制是否在指定 URL 的各种 LDAP 属性中执行替换。该选项是位编码的值,每个位定义如下:

位 

值 

说明 

如果设置,则在 mgrpDisallowedBroadcaster 中启用替换 

如果设置,则在 mgrpAllowedBroadcaster 中启用替换 

如果设置,则在 mgrpModerator 中启用替换 

如果设置,则在 mgrpDeliverTo 中启用替换 

16 

在 memberURL 中启用替换 

PROCESS_SUBSTITUTIONS MTA 选项默认值为 0,表示默认情况下所有这些替换都被禁用。

例如通过 LDAP 查找定义的动态列表,该列表中的每个人都允许邮寄。在这种情况下,您通常要给列表定义如下属性:


mgrpAllowedBroadcaster:
ldap:///o=Sesta,c=US??sub?(&(objectClass=inetMailUser)(objectClass=inetOrgPerson))
mgrpDeliverTo:
ldap:///o=Sesta,c=US??sub?(&(objectClass=inetMailUser)(objectClass=inetOrgPerson)) 

但是,这样定义的效果是将列表扩展两次,一次是用于授权检查,另一次是建立实际的收件人列表。这是一项非常消耗服务器资源的操作。另一方面,如果您添加限制,以便在授权检查中只返回包含当前信封 From: 地址的条目,则可能会获得更好的效果。首先,将 PROCESS_SUBSTITUTION 的设置更改为 2,然后,您可以设置以下条目:


mgrpAllowedBroadcaster:
ldap:///o=Sesta,c=US??sub?(&(objectClass=inetMailUser)(objectClass=inetOrgPerson)
(mail=$A)
mgrpDeliverTo:
ldap:///o=Sesta,c=US??sub?(&(objectClass=inetMailUser)(objectClass=inetOrgPerson)) 

在本例中,只对发件人的条目进行广播授权检查,而不是检查 Sesta US 中的所有用户条目。这减少了目录服务器对单个匹配(最好是通过索引)和单个返回值必须执行的操作。另一种方法是返回条目列表,并让 MTA 执行匹配。

请注意,可用于替换的信息会有所不同,具体取决于属性是用于授权检查,还是用于实际的列表扩展。对于授权属性,整个地址 ($A)、域 ($D)、主机 ($H) 和本地部分 ($L) 都源自已验证的发件人地址。对于列表扩展属性,所有这些替换值都源自指定列表的信封收件人地址。但是对这两种情况来说,子地址替换 ($S) 都源自当前的信封收件人地址。

由于可以访问列表扩展 URL 中的子地址信息,因此可以定义 metagroups,即用于创建不同组的整个集合的单个组条目。例如,一个组的 mgrpDeliverTo 值为

mgrpDeliverTo: ldap:///o=usergroup?mail?sub?(department=$S)

并且相应的 PROCESS_SUBSTITUTIONS 值为 8,则可以使用格式为 group+department@domain.com 的地址向给定部门中的每个成员发送邮件。请注意,如果子地址看起来过于复杂,可以使用转发映射之类的机制修改语法。