Sun Java System Messaging Server 6.3 管理指南

9.2 地址反向

使用直接 LDAP 的地址反向以 USE_REVERSE_DATABASE 值 4 开始,该值禁用所有反向数据库。由于 sleepycat 数据库已过时,您还应设置 USE_TEXT_DATABASES 以读取 IMTA_TABLE:reverse.txt 文件。然后,它将构建于先前讨论过的路由设备上。特别是,在以前的版本中,它以反向 URL 说明的格式开始:

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

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


注 –

无论出于什么原因,建议您不要更改 REVERSE_URL


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

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

模式标记值 

属性 

sims40

mail,rfc822mailalias

nms41

mail,mailAlternateAddress

ims50

mail,mailAlternateAddress

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

无法完全控制 $N 的值:MTA 通过其自身的硬编码相关属性列表(并且可能会发生变化)对其进行构造以用于地址反向用途。如果使用不同的 LDAP_* 全局 MTA 选项来更改 MTA 认为感兴趣的属性的名称,事实上,您将从 LDAP 中获取不同的属性。但是,它始终是在语义上与 MTA 所认为的相关属性对应的任何属性。这些属性包括: LDAP_CAPTURE(无默认值)、LDAP_RECIPIENTLIMIT(无默认值)、LDAP_RECIPIENTCUTOFF(无默认值)、LDAP_SOURCEBLOCKLIMIT(无默认值)、LDAP_SOURCE_CHANNEL(无默认值)、LDAP_PERSONAL_NAME(无默认值)、LDAP_SOURCE_CONVERSION_TAG(无默认值)、LDAP_PRIMARY_ADDRESS (mail)、LDAP_ALIAS_ADDRESSES (mailAlternateAddress)、LDAP_EQUIVALENCE_ADDRESSES (mailEquivalentAddress) 以及 LDAP_SPARE_* 属性。

得到的选项值为:

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

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

此外,过滤器不但搜索原来提供的地址,而且还搜索具有相同本地部分但实际上是在 域树(保存在9.1.1.1 重写规则机制的步骤 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))

反向查找返回几个属性,并且 MTA 知道使用邮件属性(更确切地说,是由 LDAP_PRIMARY_ADDRESS 命名的属性) 作为用于地址反向的属性。请注意,还允许使用 mailEquivalentAddress(更确切地说,是由 LDAP_EQUIVALENCE_ADDRESSES 命名的属性)。

构建 URL 之后,将执行 LDAP 搜索。如果搜索成功,LDAP 实际上按任意顺序返回多个属性。如果搜索不成功或出现错误,则保留原始地址不变。

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