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

地址反向

使用直接 LDAP 的地址反向以 USE_REVERSE_DATABASE 值 4 开始,该值禁用所有反向数据库。然后,它将构建于先前讨论过的路由设备上。特别是,在以前的版本中,它以反向 URL 说明的格式开始:

REVERSE_URL=ldap:///$V?mail?sub?$Q

$V 元字符已在别名 URL 的上下文中进行了介绍。但是,$Q 元字符(在功能上与在别名 URL 中使用的 $R 元字符非常类似)专用于地址反向。与 $R 不同,它会生成一个过滤器,该过滤器搜索包含地址(为地址反向的候选项)的属性。要搜索的属性列表来自 MTA 选项 LDAP_MAIL_REVERSES。如果未设置该选项,将检查 local.imta.schematag configutil 参数,并根据该参数的值选择一组相应的默认属性。

表 9–10 显示了所选择的 local.imta.schematag 值和默认属性。

表 9–10 local.imta.schematag 值和属性

模式标记值 

属性 

sims40

mail,rfc822mailalias

nms41

mail,mailAlternateAddress

ims50

mail,mailAlternateAddress

但是,不应再继续使用 $Q。为了使邮件捕获和其他功能可以正常工作,已增强了地址反向功能以注意除了出现匹配的事实之外所匹配的属性。这表示 $R 应该用于指定过滤器而不是 $Q。此外,还添加了 $N 元字符,该元字符将返回地址反向感兴趣的属性的列表。得到的选项值为:

REVERSE_URL=ldap:///$V?$N?sub?$R

通常,local.imta.schematag 可以是以逗号分隔的列表。如果支持多种模式,则使用消除了复制功能的属性的组合列表。

此外,过滤器不但搜索原来提供的地址,而且还搜索具有相同本地部分但实际上是在 域树(保存在重写规则机制的步骤 2 中)中找到的域的地址。域树查找的重复性意味着两个地址可能不同。

例如,假定域 siroe.com 显示在域树中,并且 MTA 查找地址:

u@host1.siroe.com

扩展 $Rims50 模式标记得到的过滤器将类似于:


     (|(mail=u@siroe.com) 
     (mail=u@host1.siroe.com)
     (mailAlternateAddress=u@siroe.com)
     (mailAlternateAddress=u@host1.siroe.com)
     (mailEquivalentAddress=u@siroe.com)
     (mailEquivalentAddress=u@host1.siroe.com))

请注意,反向 URL 明确指定该属性包含规范的地址。通常,该属性将是邮件属性。

构建 URL 之后,将执行 LDAP 搜索。如果搜索成功,返回的第一个属性值将替换原始地址。如果搜索不成功或出现错误,则保留原始地址不变。

由于执行地址反向操作的频率,特别是给出可以显示在邮件标题中的一系列地址,以及目录查询所涉及的损耗,因此负和正结果都需要被缓存。使用内存中的开放链的动态扩展散列表可以实现此操作。通过 REVERSE_ADDRESS_CACHE_SIZE MTA 选项(默认值 100000)可以设置高速缓存大小的最大值,通过 REVERSE_ADDRESS_CACHE_TIMEOUT MTA 选项(默认值为 600 秒)可以设置高速缓存中的条目的超时值。高速缓存实际上存储地址本身,而不存储 LDAP URL 和 LDAP 结果。