Sun Java logo     上一个      目录      索引      下一个     

Sun logo
Sun Java System Messaging Server 6 2004Q2 管理指南 

第 9 章
MTA 地址转换和路由

低于 Messaging Server 6 2003Q4 的 Messaging Server 通过由 LDAP 服务器中存储的信息编译得到的数据库来访问所有用户、域和组数据。LDAP 服务器中的目录信息更新时,数据库信息通过称为 dirsync 的程序同步更新。现在,Messaging Server MTA 可以直接访问 LDAP 目录。本章介绍使用直接 LDAP 数据访问时 MTA 中的数据流。本章包含以下各节:


直接 LDAP 算法和实现

以下各节介绍直接 LDAP 处理。

域位置确定

启动 user@domain 格式的地址时,地址转换和路由进程将首先检查以查看 domain 是否是本地域。

重写规则机制

MTA 重写规则机制添加了新的功能,用于检查给定字符串是否为需要在本地进行处理的域。通过 $V$Z 元字符可以激活此新增功能。从句法上来说,这些新增元字符类似于现有的 $N$M$Q$C 元字符,即这些元字符之后都跟一个模式字符串。就 $N$M$Q$C 而言,此模式与源通道或目标通道相匹配。就 $V$Z 而言,此模式是一个域,将检查以查看其是否为本地域。$V 导致非本地域的规则失败,$Z 导致本地域的规则失败。

按以下过程可以实现对这些元字符的处理:

  1. Messaging Server 验证当前域为本地域。
  2. 如果基本 DN 确定成功,将检索通过 LDAP_DOMAIN_ATTR_ROUTING_HOSTS MTA 选项(缺省为 mailRoutingHosts)指定的属性。如果存在该属性,它将列出能够处理该域中的用户的一组主机。该列表将与通过 local.hostname configutil 参数指定的主机以及通过 local.imta.hostnamealiases configutil 参数指定的主机列表相比较。可以通过 LDAP_LOCAL_HOSTLDAP_HOST_ALIAS_LIST MTA 选项分别覆盖这些选项。如果存在匹配或者域中不存在该属性,则该域为本地域。如果未出现匹配,则该域为非本地域。
  3. 由于 mailRoutingHosts 属性取决于 ROUTE_TO_ROUTING_HOST MTA 选项的设置,因此将这些域作为非本地域对其进行处理。如果将选项设置为 0(缺省设置),地址将仅被视为非本地地址,MTA 重写规则用于确定路由。如果将选项设置为 1,地址前置了源路由(包含 LDAP_DOMAIN_ATTR_ROUTING_HOSTS MTA 选项中列出的第一个值)。

  4. 如果基本 DN 确定失败,则从域的左侧删除组件,然后转至步骤 1。如果没有剩余组件,则继续执行步骤 4。
  5. 这种回溯域树的结果就是如果 domain.com 被识别为本地域,则 domain.com 的所有子域将被识别为本地子域。可能会出现某些料想不到的情况,因此提供了 MTA 选项 DOMAIN_UPLEVEL 来控制该性能。特别是,如果将 DOMAIN_UPLEVEL 的位 0(值 = 1)清除,则会禁用删除域组件的重试操作。DOMAIN_UPLEVEL 的缺省值为 0。

  6. 现在需要执行虚名域检查。使用通过 DOMAIN_MATCH_URL MTA 选项指定的 LDAP URL 来执行 LDAP 搜索可以完成此操作。应该将该选项的值设置为:

域位置的域映射确定

也应指出确定域位置的步骤。这些步骤是特定于模式级别的。就 Sun LDAP Schema 1 而言,这些步骤包括:

  1. 将域转换为域树中的基本 DN。通过将域转换为一系列 dc 组件,然后添加域根后缀可以完成此操作。缺省后缀可通过 service.dcroot configutil 参数获得。缺省后缀为 o=internet。因此 a.b.c.d 格式的域通常被转换为 dc=a,dc=b,dc=c,dc=d,o=internet。通过设置 LDAP_DOMAIN_ROOT MTA 选项可以覆盖 service.dcroot configutil 参数。
  2. 查找具有在步骤 1 中找到的基本 DN 的条目,以及对象类为 inetDomaininetDomainAlias 的条目。通过设置 LDAP_DOMAIN_FILTER_SCHEMA1 MTA 选项(缺省设置为 (|(objectclass=inetDomain)(objectclass=inetdomainalias)))可以覆盖用于此目的的搜索过滤器。
  3. 如果未找到任何条目,则以失败退出。
  4. 如果找到条目的对象类为 inetDomain,则会返回域条目的 inetDomainBaseDn 属性的值。Messaging Server 将检查是否存在 inetDomainBaseDn 属性。如果存在该属性,将使用该属性;如果不存在该属性,则假设该条目为域别名。MTA 选项 LDAP_DOMAIN_ATTR_BASEDN 可用于覆盖 inetDomainBaseDN 的使用。
  5. 如果找到条目的对象类为 inetDomainAlias,则查找 aliasedObjectName 属性所引用的条目。该新条目必须具有 inetDomainBaseDN 属性的对象类。使用 aliasedObjectName 属性的替代方法可以通过 MTA 选项 LDAP_DOMAIN_ATTR_ALIAS 指定。
  6. 如果别名条目查找成功,则返回新条目的 inetDomainBaseDn 属性的值。

在 Sun LDAP Schema 2 中,所采取的操作更简单:搜索目录,查找具有对象类 sunManagedOrganization 的条目,其中域显示为 sunPreferredDomainassociatedDomain 属性的值。如果需要使用用于此目的的 sunPreferredDomainassociatedDomain 属性,则可以使用 MTA 选项 LDAP_ATTR_DOMAIN1_SCHEMA2LDAP_ATTR_DOMAIN2_SCHEMA2 分别覆盖这两个属性。在由 service.dcroot configutil 参数指定的根目录下执行搜索。通过设置 LDAP_DOMAIN_ROOT MTA 选项可以覆盖 service.dcroot configutil 参数。

缓存域位置信息

由于执行域重写操作很频繁并且目录查询(尤其是虚名域检查)很耗时,因此需要缓存有关域的负向和正向指示。使用内存中的开放链的动态扩展散列表可以实现此操作。通过 DOMAIN_MATCH_CACHE_SIZE MTA 选项(缺省值为 100000)可以设置高速缓存的最大大小,通过 DOMAIN_MATCH_CACHE_TIMEOUT MTA 选项(缺省值为 600 秒)可以设置高速缓存中的条目的超时值。

错误处理

必须小心处理在此进程中出现的临时服务器故障,发生这些故障以后,系统将无法知道给定域是否为本地域。在这种情况下,基本上会出现两种结果:

  1. 将临时 (4xx) 错误返回到客户机,通知其稍后重试该地址。
  2. 接受该地址,但将其排入到重新处理的通道,这样可以在本地稍后重试该地址。

这些选项并不适合所有的情况。例如,当与远程 SMTP 中继通话时,则对应于结果 1。但处理来自本地用户的 SMTP 提交时,则对应于结果 2。

虽然从理论上来说,可以通过在同一模式下使用多个规则来处理临时故障,但是,即使具备高速缓存,由于重复进行此类查询所带来的系统开销也无法接受。由于这些原因,域重写的简单成功/失败转到下一规则匹配的模型都是不足的。而在域查找失败的情况下,可以使用通过 MTA 选项 DOMAIN_FAILURE 指定的特殊模板。$V 操作失败后,该模板将替换要处理的当前重写规则模板的剩余部分。

除了 $V$Z,还有若干其他新的元字符被添加到重写规则功能中:

域检查重写规则的模式

在有可能运行其他重写规则操作之前,需要先执行该域检查。通过在规则的左侧使用特殊的 $* 可以确保此排序。在检查所有其他规则之前,先检查 $* 模式。

汇总所有机制

在帐户中采用到目前为止所述的所有机制时,imta.cnf 中所需的新重写规则将为:

$*        $E$F$U%$H$V$H@localhost

并且 option.dat 文件中的 DOMAIN_FAILURE MTA 选项的值需要为:

reprocess-daemon$Mtcp_local$1M$1~-error$4000000?Temporary lookup failure

在此重写规则中,localhost 是与本地通道相关联的主机名。此处所示的 DOMAIN_FAILURE 选项的值是缺省值,因此在一般环境下不需要将该值显示在 option.dat 中。

此处的排序特别需要慎重对待。MTA 检查 $V 应在重建地址后但在添加路由之前进行。在临时查找失败的情况下,MTA 将更改路由。在任何时候插入点发生了更改,就可以应用待定通道匹配检查,以便第二个 $H 之后的 @ 调用检查。如果检查成功,将应用模板的剩余部分并重写处理结论。如果检查失败,重写就会失败,重写将继续执行下一个适用的重写规则。如果由于临时故障无法执行检查,模板处理将使用通过 DOMAIN_FAILURE MTA 选项指定的值继续操作。首先,该模板的值将路由主机设置为 reprocess-daemon。然后,模板将检查以查看 MTA 是否正在处理某类重新处理通道或 tcp_local。如果 MTA 正在处理此类通道,则规则将继续,因此使路由主机非法并将临时故障指定为结果。如果 MTA 没有处理此类通道,则规则将被截断并成功终止,因此将地址重写到重新处理通道。

本地地址的别名扩展

确定地址与本地通道相关联后,该地址将自动进行别名扩展。别名扩展处理将检查若干信息源,包含:

  1. 别名文件(已编译配置的一部分)。
  2. 别名数据库。
  3. 别名 URL。

检查确切别名源以及检查这些源的顺序取决于 option.dat 文件中的 ALIAS_MAGIC MTA 选项的设置。对于直接 LDAP,将选项设置为 8764。这表示首先检查通过 ALIAS_URL0 MTA 选项指定的 URL,再检查通过 ALIAS_URL1 MTA 选项指定的 URL,接着检查通过 ALIAS_URL2 MTA 选项指定的 URL,最后检查别名文件。此设置有效时,将不检查别名数据库。

使用 LDAP URL 检查别名

通过将两个特殊 LDAP URL 指定为别名 URL,可以实现检查 LDAP 中的别名。上述第一个 URL 处理常规用户和组;后续别名 URL 处理虚名域。第一个 URL 被指定为 ALIAS_URL0

ALIAS_URL0=ldap:///$V?*?sub?$R

$V Metacharacter

元字符扩展发生在 URL 查找之前。在 ALIAS_URL0 值中使用的两个元字符为 $V$R

$V 元字符将地址的域部分转换为基本 DN。这与前面的标题为“重写规则机制”一节中所述的 $V 重写规则元字符所执行的初始步骤类似。$V 处理包含以下步骤:

  1. 获取当前域的基本 DN。
  2. 获取与当前域相关联的规范域。在 Sun LDAP Schema 1 中,如果存在 inetCanonicalDomainName 属性,域条目的该属性将给出规范域名。如果不存在该属性,规范域名则是通过实际域条目的 DN 以明显的方式构建的。如果当前域是一个别名,这将与当前域不同。可以使用 option.dat 文件中的 LDAP_DOMAIN_ATTR_CANONICAL MTA 选项覆盖用于存储规范名称的名称属性。
  3. 在 Sun LDAP Schema 2 中,规范名称只是 SunPreferredDomain 属性的值。

  4. 如果存在基本 DN,则使用该 DN 替换 URL 中的 $V
  5. 现在确定了该条目的所有可用托管域。通过将规范域(如果清除了 DOMAIN_UPLEVEL 的位 2 [值 = 4])或当前域(如果设置了 DOMAIN_UPLEVEL 的位 2 [值 = 4])与 service.defaultdomain configutil 参数相比较,可以完成此操作。如果不匹配,则该条目是托管域的成员。通过设置 option.dat 文件中的 LDAP_DEFAULT_DOMAIN MTA 选项可以覆盖 service.defaultdomain configutil 参数。
  6. 如果基本 DN 确定失败,则从域的左侧删除组件,然后转至步骤 1。如果没有剩余任何组件,则替换将失败。

$V 还接受可选数字变量。如果将其设置为 1(例如 $1V),则忽略解析域树中的域时出现的失败,并返回用户树的基目录。

如果尝试检索域的基本 DN 成功,MTA 还将检索稍后会需要的若干有用的域属性。检索到的属性的名称通过 option.dat 文件中的以下 MTA 选项进行设置:

从 URL 调用映射

以某些其他方式完成从域到基本 DN 的映射时可能会出现一些特殊情况。为了容纳此类设置,URL 解析过程可以调用 MTA 映射。使用以下通用格式的元字符序列完成此操作:

$|/mapping-name/mapping-argument|

双引号 (") 将启动和终止调用。紧跟在 $ 后的字符是映射名称和变量之间的分隔符;应该选择与映射名称或变量中使用的期望字符值不发生冲突的字符。

$R 元字符

$R 元字符为 URL 提供了适当的过滤器。目的在于生成一个过滤器,该过滤器可以搜索可能包含特定用户或组的电子邮件地址的所有属性。要搜索的属性的列表来自于 configutil 参数 local.imta.mailaliases。如果未设置此参数,则会检验 local.imta.schematag configutil 参数,并根据此参数的值,选择一组相应的缺省属性,如下所示:

sims401    mail, rfc822mailalias

nms41    mail,mailAlternateAddress

ims50    mail,mailAlternateAddress,mailEquivalentAddress

local.imta.schematag 的值可以是以逗号分隔的列表。如果支持多种模式,则使用消除了复制功能的属性的组合列表。LDAP_SCHEMATAG MTA 选项可用于专为 MTA 覆盖 local.imta.schematag 的设置。

此外,过滤器不但搜索原来提供的地址,而且还搜索具有相同本地部分但实际上是在域树(该域树保存在标题为“$V Metacharacter”一节中的步骤 2 中)中找到域的地址。域树查找的重复性意味着两个地址可能不同。此附加检查由 option.dat 文件中的 DOMAIN_UPLEVEL MTA 选项的位 1(值 = 2)来控制。设置位将启用附加地址检查。DOMAIN_UPLEVEL 的缺省值为 0。

例如,假定域 siroe.com 显示在域树中。假设 Sun LDAP Schema 1 有效,要查找的地址是

u@host1.siroe.com

扩展 $R 和 ims50 schematag 得到的过滤器将类似于:

(|(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))

另一方面,如果将 DOMAIN_UPLEVEL 设置为 1 而不是 3,则过滤器将为:

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

ALLOW_UNQUOTED_ADDRS_VIOLATE_RFC2798 MTA 选项

某些 MTA 对于地址引用和规范化特别不严格。特别是,它们会允许使用如 a..b@siroe.com 此类非法地址。更糟糕的是,这些 MTA 无法在目录中搜索地址之前添加必要的引号,以使地址成为合法的 “a..b”@siroe.com

option.dat 文件中的 ALLOW_UNQUOTED_ADDRS_VIOLATE_RFC2798 MTA 选项容纳这种严重违背标准的问题。如果设置为 1,它将添加附加过滤器项,以使用未用引号引起的、在语法上是无效的格式搜索用引号引起的地址。例如,搜索地址 "a..b"@siroe.com 可能会生成以下格式的过滤器:

(|(mail="a..b"@siroe.com)
     (mail=a..b@siroe.com)
     (mailAlternateAddress="a..b"@siroe.com)
     (mailAlternateAddress=a..b@siroe.com)
     (mailEquivalentAddress="a..b"@siroe.com)
     (mailEquivalentAddress=a..b@siroe.com))

该选项不能解决由使用非法地址导致的问题。相关的电子邮件和目录标准特定了地址的本地部分中哪些格式是允许的。当各种邮件传送组件以在语法上为非法地址的形式出现后,这些组件可能以不同方式表现。这些组件可以用引号引起这些地址以使其合法、可以不作更改传送这些地址、可以拒绝这些地址,也可能做一些完全无法预料的操作。因此,如果给予最终用户此类非法地址,用户可能会发现该地址在遇到其他供应商所提供的其他邮件传送系统时不工作。

确定要获取的属性

如果 URL 为要返回的属性的列表指定 * 号,我们将用 MTA 能够使用的属性的列表替换星号。

处理 LDAP 错误

此时,所得到的 URL 用于执行 LDAP 搜索。如果出现某种 LDAP 错误,处理将终止于临时故障指示(SMTP 中的 4xx 错误)。如果 LDAP 操作成功,但无法生成结果,将检查通过 LDAP_DOMAIN_ATTR_CATCHALL_ADDRESS MTA 选项检索到的域的总管地址属性。如果设置了该属性,则该属性的值将替换当前地址。

如果未设置总管地址属性,将检查通过 LDAP_DOMAIN_ATTR_SMARTHOST MTA 选项检索到的域的智能主机属性。如果设置了该属性,则创建

@smarthost:user@domain

格式的地址,并且别名处理将以此结果成功终止。此外,通过 LDAP_DOMAIN_ATTR_CONVERSION_TAG MTA 选项获得的域的转换标记(如果存在)将被附加到地址中,以便在转发给智能主机之前可以先完成转换操作。如果该域不存在总管地址或智能主机,则此别名 URL 的处理将不会成功终止。

对 LDAP 结果的正常性检查

LDAP 搜索返回了结果之后,它将验证其中是否只有一个条目。如果具有多个条目,则检查每个条目以确定其是否具有用户或组的正确对象类、不可删除的状态以及具有用户的 UID。忽略未通过此检查的条目。如果通过此检查将多个条目的列表减少到只有一个条目,则处理将继续进行。如果没有减少,将返回一个复制或模糊目录错误。

支持虚名域

ALIAS_URL0 检查是针对常规用户或托管域中的用户的。如果此检查失败,还会进行虚名域检查。使用以下别名 URL 可以完成此操作:

ALIAS_URL1=ldap:///$B?*?sub?(&(msgVanityDomain=$D)$R)

支持总管地址

最后,需要在 mailAlternateAddress 属性中进行 @host 格式的总管地址检查。此格式的通配符允许在托管域和虚名域中使用,因此地址的正确别名 URL 为:

ALIAS_URL2=ldap:///$1V?*?sub?(mailAlternateAddress=@$D)

处理 LDAP 结果

可以通过若干顺序独立的阶段完成 LDAP 别名结果的处理。以下各节介绍了这些阶段。

对象类检查

如果别名搜索成功,将检查条目的对象类以确保其包含用户或组的一组相应的对象类。通常,用户和组的所需对象类的可能设置由有效的模式来确定。这由 local.imta.schematag 设置确定。

表 9-1 显示了从各个 schematag 值得到的用户和组对象类。

表 9-1 从各个 schematag 值得到的对象类

schematag

用户对象类

组对象类

sims40

inetMailRouting+inetmailuser

inetMailRouting+inetmailgroup

nms41

mailRecipient + nsMessagingServerUser

mailGroup

ims50

inetLocalMailRecipient+inetmailuser

inetLocalMailRecipient+inetmailgroup

很难编码该表中的信息(如处理其余的模式标记)。但是,在 option.dat 文件中还有两个 MTA 选项 LDAP_USER_OBJECT_CLASSESLDAP_GROUP_OBJECT_CLASSES,可以设置这两个选项以分别指定用户和组的对象类的不同设置。

例如,ims50,nms41 模式标记的设置将等价于以下选项设置:

LDAP_USER_OBJECT_CLASSES=inetLocalMailRecipient+inetmailuser, mailRecipient+nsMessagingServerUser

LDAP_GROUP_OBJECT_CLASSES=inetLocalMailRecipient+inetmailgroup,mailGroup

如果 LDAP 结果不具有适用于用户或组的一组正确的对象类,将只会忽略该结果。MTA 还确定其是否处理用户或组,并保存该信息。稍后将重复使用此处保存的信息。

请注意,此处所述的对象类设置还用于构建实际的 LDAP 搜索过滤器,该过滤器可用于检查以查看条目是否具有用户或组的正确对象类。可以通过 $K 元字符访问该过滤器。该过滤器还存储在 MTA 的配置内,以备通道程序使用,并作为 LDAP_UG_FILTER 选项(在使用命令 imsimta cnbuild -option 时)写入到 MTA 选项文件 option.dat 中。该选项只写入到文件中。MTA 不通过选项文件读取该选项。

条目状态检查

接下来检查条目的状态。有两个状态属性,一个用于常规条目,另一个专用于邮件服务。

表 9-2 介绍了在不同的 schematag 中,schematag 条目中用于作为检验标准的普通用户或组属性和特定于邮件的用户或组属性

表 9-2 要进行检查的属性

schematag

类型

General

邮件特定

sims40

用户

inetsubscriberstatus

mailuserstatus

sims40

inetmailgroupstatus

nms41

用户

mailuserstatus

nms41

Messaging Server 5.0

用户

inetuserstatus

mailuserstatus

Messaging Server 5.0

inetmailgroupstatus

如果需要,option.dat 文件中的 LDAP_USER_STATUSLDAP_GROUP_STATUS MTA 选项可分别用于选择用户和组的备用常规状态属性。邮件特定的用户和组状态属性由 LDAP_USER_MAIL_STATUSLDAP_GROUP_MAIL_STATUS MTA 选项控制。

起控制作用的另一个因素是域本身的状态(LDAP_DOMAIN_ATTR_STATUSLDAP_DOMAIN_ATTR_MAIL_STATUS)。总共有四种状态属性。以下列顺序考虑这些属性的组合:

  1. 域状态
  2. 域邮件状态
  3. 用户或组状态
  4. 邮件用户或邮件组状态

指定了除“活动”状态以外的状态的这些属性中的第一个属性优先于所有其他属性。允许的其他状态值包括“不活动”、“已删除”、“已移除”、“已禁用”、“保留”和“超过配额”。“保留”、“已禁用”和“已移除”状态只能指定给邮件域、邮件用户或邮件组。只能将“超过配额”状态指定为邮件域或邮件用户状态。

如果不存在特定状态属性,则所有状态都缺省为“活动”。未知状态值被解释为“不活动”。

组合使用四种状态时,可能出现用户或组的下列状态:“活动”、“不活动”、“已删除”、“已移除”、“已禁用”、“保留”和“超过配额”。活动状态会使别名处理继续进行。不活动或超过配额状态将会立即拒绝具有 4xx(临时)错误的地址。已删除、已移除和已禁用状态将会立即拒绝具有 5xx(永久)错误的地址。就状态处理而言,可以将保留状态视为活动状态,但它设置了内部标记,以便以后考虑传送选项,所有被覆盖的选项都具有包含一个“保留”条目的选项列表。

UID 检查

下一步将考虑条目的 UID。UID 可用于各种目的,它必须是所有用户条目的一部分,并且可以包含在组条目中。不具有 UID 的用户条目将被忽略,并且该别名 URL 的处理也会不成功终止。托管域中条目的 UID 可以包含实际 UID、分隔符以及域。如果目前使用通过 option.dat 文件中的 LDAP_DOMAIN_ATTR_UID_SEPARATOR MTA 选项获得的域分隔符,则 MTA 只希望使用实际 UID,因此删除其余部分。

万一使用某个属性而不是 uid 来存储 UID,LDAP_UID MTA 选项则可用于强制使用其他属性。

邮件捕获

接下来检查用于指定一个或多个邮件捕获地址的 LDAP 属性。必须使用 LDAP_CAPTURE MTA 选项指定用于此目的的属性。无缺省值。该属性的值被视为地址,将生成一则特殊的“捕获”通知,并将该通知以附件方式发送到包含当前邮件的这些地址。此外,如果捕获地址用于初始化地址反向高速缓存,该地址以后将显示为信封 from: 地址。

初始化反向高速缓存

接下来将考虑主地址和附加到用户条目的所有别名。该信息可用于初始化地址反向高速缓存。此操作在当前地址转换进程中不起作用。首先,考虑主地址、个人名称、收件人限制、收件人截止日期和源块限制属性。主地址通常存储于“mail”属性中;其他属性可以通过相应设置 LDAP_PRIMARY_ADDRESS MTA 选项来指定。(当然,主地址的反向结果与其自身相同。)所有其他属性都没有缺省属性。如果要使用这些属性,您必须通过 LDAP_PERSONAL_NAMELDAP_RECIPIENTLIMITLDAP_RECIPIENTCUTOFFLDAP_SOURCEBLOCKLIMIT MTA 选项指定这些属性。此时还要考虑相应的域级别收件人限制、收件人截止日期和源块限制属性。用户级别设置将完全覆盖所有域级别设置。

接下来,将考虑所有次地址,并为每个地址设置一个高速缓存条目。有两类次地址:一类进行地址反向,另一类则不进行。必须考虑这两类地址以便正确初始化地址反向高速缓存,因为在所有情况下都需要检查邮件捕获请求。

进行反向的次地址通常存储于 mailAlternateAddress 属性中。通过设置 LDAP_ALIAS_ADDRESSES MTA 选项可以指定其他属性。不进行反向的次地址通常存储于 mailEquivalentAddress 属性中。使用 LDAP_EQUIVALENCE_ADDRESSES MTA 选项可以指定其他属性。

邮件主机和路由地址

现在来考虑 mailhostmailRoutingAddress 属性。可以考虑使用 LDAP_MAILHOSTLDAP_ROUTING_ADDRESS MTA 选项分别覆盖实际属性。这些属性协同工作以确定此时这些属性是否应作用于地址或转发给其他系统。

第一步要确定 mailhost 对于该条目是否有意义。执行作用于条目的有效传送选项的初步检查,以查看该条目是否为邮件主机特定的。如果不是,则省略 mailhost 检查。要了解该检查的执行方式,请查看传送选项处理的说明(尤其是 # 标记)。

就用户条目而言,mailhost 属性必须标识本地系统才能使该属性作用于本地系统。将 mailhost 属性与 local.hostname configutil 参数的值相比较,并与 local.imta.hostnamealiases configutil 参数指定的值的列表相比较。如果出现任一匹配,则 mailhost 属性将被视为标识本地主机。

成功匹配意味着别名可以在本地起作用,并且别名处理将继续进行。不成功匹配则意味着需要将邮件转发给邮件主机才能起作用。将构建格式为

@mailhost:user@domain

的新地址,该地址将成为别名扩展操作的结果。

根据该条目是用户还是组,对缺少 mailhost 属性的处理有所不同。就用户而言,邮件主机是重要的,因此如果不存在 mailhost 属性,则格式为

@smarthost:user@domain

的新地址将会使用通过 LDAP_DOMAIN_ATTR_SMARTHOST MTA 选项确定的域的智能主机来构建。如果该域不存在智能主机,则会报告错误。

另一方面,组不需要邮件主机,因此缺少邮件主机将被解释为意味着可以随处扩展组。因此别名处理将继续进行。

mailRoutingAddress 属性将添加一个最终难题。如果该问题存在,则别名处理将终止,结果为 mailRoutingAddress。但是,如果邮件主机存在,会将该问题添加到作为源路由的 mailRoutingAddress 中。

其他属性支持

接下来,将考虑 mailMsgMaxBlocks 属性。首先,使用通过 LDAP_DOMAIN_ATTR_BLOCKLIMIT MTA 选项返回的域块限制将其最小化。如果已知当前邮件的大小超过限制,别名处理将终止,产生一个超过大小的错误。如果大小未知或未超过限制,则会存储该限制并在稍后检查邮件自身时重新检查限制。用 LDAP_BLOCKLIMIT MTA 选项可以覆盖使用 mailMsgMaxBlocks

下一步将访问并保存若干属性。最终,这些属性将被写入到队列文件条目中以供 ims_master 通道程序使用,然后该程序将使用这些属性来更新存储的用户信息高速缓存。如果未找到单个用户的属性,可以使用域级别属性设置缺省属性。

如果 LDAP 条目适用于组而不适用于用户,或者如果 LDAP 条目来自别名高速缓存而不是来自 LDAP 目录,则跳过此步骤。后一个标准的逻辑是不需要经常更新此信息,如果需要更新,应使用别名高速缓存提供合理的标准。检索到的属性的名称由各个 MTA 选项设置。

表 9-3 显示了设置检索到的磁盘配额和邮件配额属性的 MTA 选项。

表 9-3 设置检索到的磁盘配额和邮件配额属性的 MTA 选项

MTA 选项

属性

LDAP_DISK_QUOTA

mailQuota

LDAP_DOMAIN_ATTR_DISK_QUOTA

mailQuota

LDAP_DOMAIN_ATTR_MESSAGE_QUOTA

mailMsgQuota

LDAP_MESSAGE_QUOTA

mailMsgQuota

接下来,将存储若干属性,以备稍后可能与元字符替换结合使用。

表 9-4 显示了 MTA 选项、缺省属性和元字符。

表 9-4 MTA 选项、缺省属性和元字符

MTA 选项

缺省属性

元字符

LDAP_PROGRAM_INFO

mailProgramDeliveryInfo

$P

LDAP_DELIVERY_FILE

mailDeliveryFileURL

$F

LDAP_SPARE_1

没有缺省属性

$1E $1G $E

LDAP_SPARE_2

没有缺省属性

$2E $2G $G

LDAP_SPARE_3

没有缺省属性

$3E $3G

LDAP_SPARE_4

没有缺省属性

$4E $4G

LDAP_SPARE_5

没有缺省属性

$5E $5G

还包含用于其他属性的备用插槽,以便您可以使用这些插槽构建自定义地址扩展设备。

接下来,将与 mailConversionTag 属性相关联的所有值添加到一组当前的转换标记中。可以用 LDAP_CONVERSION_TAG MTA 选项更改该属性的名称。如果将所有值与域的 mailDomainConversionTag 属性相关联,也会附加这些值。

传送选项处理

接下来,将检查 mailDeliveryOption 属性。可以用 LDAP_DELIVERY_OPTION MTA 选项更改该属性的名称。这是一个多值选项,该选项的各个值确定了由别名转换进程生成的地址。此外,用于用户和组的允许值是不同的。通用允许值包括 programforwardhold。仅限用户使用的值包括 mailboxnativeunixautoreply。仅限组使用的值包括 membersmembers_offlinefile

mailDeliveryOption 属性到相应地址的转换由 DELIVERY_OPTIONS MTA 选项来控制。该选项不仅指定每个允许的 mailDeliveryOption 值生成哪些地址,而且还指定允许的 mailDeliveryOption 值包括哪些以及每个值是否适用于用户、组或者用户和组。

该选项的值由 deliveryoption=template 对的以逗号分隔的列表组成,每对具有一个或多个可选单字符前缀。

DELIVERY_OPTIONS 选项的缺省值为:

DELIVERY_OPTIONS=*mailbox=$M%$\\$2I$_+$2S@ims-ms-daemon,
     &members=*,
     *native=$M@native-daemon,
     /hold=@hold-daemon:$A,
     *unix=$M@native-daemon,
     &file=+$F@native-daemon,
     &@members_offline=*,
     program=$M%$P@pipe-daemon,
     #forward=**,
     *^!autoreply=$M+$D@bitbucket

每个传送选项对应于可能的 mailDeliveryOption 属性值,相应的模板使用与 URL 处理使用的相同元字符替换方案来指定得到的地址。

表 9-5 显示了可用于 DELIVERY_OPTIONS 选项的单字符前缀。

表 9-5 用于 DELIVERY_OPTIONS MTA 选项中的选项的单字符前缀。

字符前缀

说明

*

传送选项应用于用户。

&

传送选项应用于组。

$

设置一个标记,表明要延迟该用户或组的扩展。

^

设置一个标记,表明应检查休假开始时间和结束时间以查看此传送选项是否真正有效。

#

设置一个标记,表明在条目指定的邮件主机中不需要进行此传送选项的扩展。

/

设置一个标记,该标记会保留由该传送选项生成的所有地址。包含这些收件人地址的邮件文件将具有 .HELD 扩展名。

!

设置一个表明自动回复操作应该由 MTA 进行内部处理的标记。只有在自动回复选项中使用此前缀才有意义。选项的值应将邮件定向到位桶通道。

如果 *& 都不存在,则采用传送选项应用于用户和组中。

传送选项中使用的附加元字符

已经添加了若干附加元字符以支持使用此 MTA 的 URL 模板的新增功能。这些元字符包含:

表 9-6 显示了附加元字符以及在传送选项中使用这些元字符的说明。

表 9-6 在传送选项中使用的附加元字符 

元字符

说明

$\\

强制后续文本转为小写。

$^

强制后续文本转为大写。

$_

不对后续文本执行大小写转换。

$nA

插入地址的第 n 个字符。第一个字符是字符 0。如果忽略 n,则替换整个地址。这适用于构建自动回复目录路径。

$D

插入地址的域部分。

$nE

插入第 n 个备用属性的值。如果忽略 n,则使用第一个属性。

$F

插入传送文件的名称(mailDeliveryFileURL 属性)。

$nG

插入第 n 个备用属性的值。如果忽略 n,则使用第二个属性。

$nH

在从 0 计数的原地址中插入域的第 n 个组件。如果忽略 n,则缺省值为 0。

$nI

插入与别名相关联的托管域。该元字符接受整数参数 n,其语义如表 9-7 所述。

$nJ

插入从 0 计数的托管域的第 n 部分。n 的缺省值为 0。

$K

插入与用户或组的对象类相匹配的 LDAP 过滤器。请参见 LDAP_UG_FILTER 仅用于输出的 MTA 选项的说明。

$L

插入地址的本地部分。

$M

插入与当前别名相关联的 UID。

$P

插入程序名称(mailProgramDeliveryInfo 属性)

$nS

插入与当前地址相关联的子地址。该元字符接受整数参数 n,其语义如表 9-7 所述。

$nU

插入当前地址的邮箱部分的未用引号引起格式的第 n 个字符。第一个字符是字符 0。如果忽略 n,则替换整个未用引号引起的邮箱。

$nX

插入邮箱的第 n 个组件。如果忽略 n,则插入整个邮件主机。

表 9-7 说明了整数参数如何修改 $nI 和 $nS 元字符的性能。

表 9-7 控制 $nI 和 $nS 元字符的性能修改的整数

整数

性能说明

0

如果没有可用的值,则失败(缺省值)。

1

如果有一个可用值,则插入值。如果没有,则不插入任何值。

2

如果有一个可用值,则插入值。如果没有可用值,则不插入任何值,并删除前面的字符(ims-ms 通道需要此特殊性能)。

3

如果有一个可用值,则插入值。如果没有可用值,则不插入任何值并忽略后面的字符。

除了元字符,表 9-8 还显示了两个特殊的模板字符串。

表 9-8 特殊的模板字符串

特殊的模板字符串

说明

*

执行组扩展。该值对于用户条目无效。

**

扩展由 LDAP_FORWARDING_ADDRESS MTA 选项命名的属性。这将缺省设置为 mailForwardingAddress

以组扩展为例,如果将用户的 mailDeliveryOption 值设置为 mailbox,将形成一个新地址,该地址由以下几部分组成:已拆开的 UID、百分比符号(后面跟托管域,如果托管域可用)、加号(后面跟子地址,如果指定了子地址)、最后是 @ims-ms-daemon

传送选项缺省设置

如果此时活动传送选项列表为空,则为用户激活列表中的第一个选项(通常为邮箱),并为组激活列表中的第二个选项(通常为成员)。

开始和结束日期检查

读取传送选项列表后,将检查开始和结束日期。有两个属性,其名称分别由 LDAP_START_DATE(缺省值为 vacationStartDate)和 LDAP_END_DATE(缺省值为 vacationEndDate)MTA 选项控制。如果一个或多个活动传送选项指定了 ^ 前缀字符,将针对当前日期检查这些选项的值。如果当前日期超出这些选项所指定的范围,将从活动集中删除带有 ^ 前缀的传送选项。

Optin 和 Presence 属性

LDAP_OPTIN MTA 选项可用于指定包含垃圾邮件过滤器选定值的列表的 LDAP 属性。如果指定了该选项并且存在该属性,则将其附加到当前垃圾邮件过滤器选定列表中。LDAP_DOMAIN_ATTR_OPTIN MTA 选项设置的域级别属性所设置的所有值也将附加到列表中。

LDAP_PRESENCE MTA 选项可用于指定 URL,可以解析此 URL 以返回有关用户的存在信息。如果指定了该选项并且存在该属性,则会保存该属性的值以备与 Sieve 存在测试结合使用。如果不存在用户条目的值,则会将 LDAP_DOMAIN_ATTR_PRESENCE MTA 选项所设置的域级别属性用作此 URL 的来源。

Sieve 过滤器处理

接下来将检查应用于此条目的 Sieve 过滤器的 mailSieveRuleSource 属性。如果存在该属性,此时将分析并保存该属性。该属性的值的两种可能的格式为包含一个完整 Sieve 脚本的单个值或每个值包含一段 Sieve 脚本的多个值。后一种格式由 Web 过滤器构造界面生成。特殊代码用于对这些值进行排序并将其正确组合在一起。

通过使用 LDAP_FILTER MTA 选项可以特别覆盖使用 mailSieveRuleSource 属性。

延迟的处理控制

接下来,将检查 mailDeferProcessing 属性。通过使用 LDAP_REPROCESS MTA 选项可以更改该属性。如果存在该属性并将其设置为 no,通常处理将继续进行。但如果将该属性设置为 yes,并且当前源通道不是重新处理通道,则该条目的扩展将被终止并且原 user@domain 地址将只是排入到重新处理通道中。如果不存在该属性,将检查与传送选项处理相关联的延迟处理字符前缀的设置。(有关实例,请参见“传送选项处理”一节。)如果已设置,将延迟处理。如果未设置,用户的缺省设置将为 no。组的缺省设置由 MTA 选项 DEFER_GROUP_PROCESSING 控制,其缺省值为 1(是)。此时将结束用户条目的别名处理。

组扩展属性

一系列附加属性与组扩展相关联,并且此时必须对这些属性进行处理。这些属性的名称都可以通过各个 MTA 选项进行配置。

表 9-9 列出了缺省属性名、要设置属性名的 MTA 选项和 MTA 处理属性的方式。此表中元素的排序显示了处理各个组属性的顺序。该排序对于正确操作极为重要。

表 9-9 组扩展属性 

缺省属性

要设置属性名的 MTA 选项

如何处理属性

mgrpMsgRejectAction

LDAP_REJECT_ACTION

单个值的属性,用于控制当后续访问检查失败时将如何操作。只定义了一个值:TOMODERATOR,如果设置该值,将指示 MTA 把所有访问失败重定向到 mgrpModerator 属性所指定的中介人。缺省值(以及该属性的所有其他值)将会报告一个错误并拒绝邮件。

mailRejectText

LDAP_REJECT_TEXT

将保存存储于该属性的第一个值中的文本的第一行。如果以下任一验证属性使邮件被拒绝,将返回此文本。这意味着文本可以显示在 SMTP 响应中,因此只能将值限定为 US-ASCII 才能符合当前的邮件传送标准。

mgrpBroadcasterPolicy

LDAP_AUTH_POLICY

指定发送到组所需的验证级别。可能的标记为 SMTP_AUTH_REQUIREDAUTH_REQ,这两个值都表示 SMTP AUTH 命令必须用于标识发件人以便发送到组;PASSWORD_REQUIREDPASSWD_REQUIREDPASSWD_REQ 都表示由 mgrpAuthPassword 属性指定的列表的口令必须显示在邮件的 Approved: 标题字段中;OR 用于将此列表的 OR_CLAUSES MTA 选项设置改为 1;AND 用于将此列表的 OR_CLAUSES MTA 选项设置改为 0;NO_REQUIREMENTS 为 no-op。允许多值。每个值由以逗号分隔的标记列表组成。

如果调用 SMTP AUTH,它还表示所有后续验证检查将针对 SASL 层所提供的电子邮件地址而不是 MAIL FROM 地址来完成。

mgrpAllowedDomain

LDAP_AUTH_DOMAIN

域允许将邮件提交到该列表中。可以为多个值。

mgrpDisallowedDomain

LDAP_CANT_DOMAIN

域不允许将邮件提交到该列表中。可以为多个值。

mgrpAllowedBroadcaster

LDAP_AUTH_URL

标识邮件地址的 URL 允许将邮件发送到该组中。可以为多个值。将每个 URL 扩展为地址列表,并针对当前信封源地址检查每个地址。出现匹配就表示允许发送邮件。

mgrpDisallowedBroadcaster

LDAP_CANT_URL

标识邮件地址的 URL 不允许将邮件发送到该组中。可以为多个值。将每个 URL 扩展为地址列表,并针对当前信封源地址检查每个地址。出现匹配就表示不允许发送邮件。

mgrpMsgMaxSize

LDAP_ATTR_MAXIMUM_MESSAGE_SIZE

可以将大小以字节为单位的最大邮件发送给组。该属性作废,但仍支持向下兼容性;而应该使用新的 mailMsgMaxBlocks 属性。

mgrpAuthPassword

LDAP_AUTH_PASSWORD

指定发送到列表所需的口令。该属性的出现强制执行重新处理传送。邮件被重新排入到重新处理通道时,将从标题中获取口令并把口令放置在信封中。然后在进行重新处理时,将从信封中获取口令并针对该属性检查口令。另外,只能从标题字段中删除实际使用的口令。

mgrpModerator

LDAP_MODERATOR_URL

该属性给出的 URL 的列表可以扩展为一系列地址。该地址列表的解释取决于 LDAP_REJECT_ACTION MTA 选项的设置。如果将 LDAP_REJECT_ACTION 设置为 TOMODERATOR,该属性将邮件要发送到的中介人地址指定为所有访问检查都应失败。如果缺少 LDAP_REJECT_ACTION 或具有任何其他值,则将地址列表与信封源地址相比较。如果出现匹配,处理将继续进行。如果未出现匹配,则邮件将被重新发送到该属性所指定的所有地址。通过将属性的值设为组的 URL 列表,可以实现该属性的扩展。清除与该组相关联的 RFC822 地址或 DN 的所有列表,并将该组的传送选项设置为 members。最后,忽略该表中列出的后续组属性。

mgrpDeliverTo

LDAP_GROUP_URL1

扩展 URL 列表时,该列表将提供邮递列表成员地址的列表。

memberURL

LDAP_GROUP_URL2

扩展 URL 的另一个列表时,该列表将提供邮递列表成员地址的另一个列表。

uniqueMember

LDAP_GROUP_DN

组成员的 DN 的列表。DN 可以指定整个子树。通过将唯一成员 DN 嵌入到 LDAP URL 中可以扩展这些 DN。要使用的确切 URL 由 GROUP_DN_TEMPLATE MTA 选项指定。此选项的缺省值为:ldap:///$A?mail?sub?(mail=*)

$A 指定了 uniqueMember DN 的插入点。

mgrpRFC822MailMember

LDAP_GROUP_RFC822

该列表的成员的邮件地址。

rfc822MailMember

LDAP_GROUP_RFC822

rfc822MailMember 支持向下兼容性。rfc822MailMembermgrpRFC822MailMember(但不能同时)可以用于任何给定组。

mgrpErrorsTo

LDAP_ERRORS_TO

将信封创始者 (MAIL FROM) 地址设置为属性指定的内容。

mgrpAddHeader

LDAP_ADD_HEADER

将在属性中指定的标题变为标题剪裁 ADD 选项。

mgrpRemoveHeader

LDAP_REMOVE_HEADER

将所指定的标题变为标题剪裁 MAXLINES=-1 选项。

mgrpMsgPrefixText

LDAP_PREFIX_TEXT

将指定的文本添加到邮件文本(如果有)的起始处。

mgrpMsgSuffixText

LDAP_SUFFIX_TEXT

将指定的文本添加到邮件文本(如果有)的结尾处。

在组扩展作为 SMTP EXPN 命令一部分的特殊情况下,将检查一个最终属性:mgmanMemberVisibility 或可扩展。LDAP_EXPANDABLE MTA 选项可用于选择不同的属性来进行检查。可能的值包括:anyone,表示任何人都可以扩展组;alltrue,表示用户必须先通过 SASL 成功验证后才允许扩展;none,表示不允许扩展。不可识别的值被解释为 none。如果不存在该属性,EXPANDABLE_DEFAULT MTA 选项将控制是否允许扩展。

以此方式缓存的别名条目类似于域条目。控制别名高速缓存的 MTA 选项为 ALIAS_ENTRY_CACHE_SIZE(缺省值为 1000 个条目)和 ALIAS_ENTRY_CACHE_TIMEOUT(缺省值为 600 秒)。给定别名的整个 LDAP 返回值保留在高速缓存中。

条目的负缓存由 ALIAS_ENTRY_CACHE_NEGATIVE MTA 选项控制。非零值启用别名匹配的缓存失败。零值禁用此功能。缺省情况下,禁用别名条目的负缓存。理论上可以重复说明无效地址,实际上不可能经常发生。此外,负缓存可能会影响及时识别已添加到目录中的新用户。但是,在频繁使用虚名域的情况下,站点应该考虑重新启用别名的负缓存。由 ALIAS_URL0 中指定的 URL 执行的搜索不可能会成功。


地址反向

使用直接 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

扩展 $R 和 ims50 schematag 得到的过滤器将类似于:

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

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

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

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


异步 LDAP 操作

异步查找无需在内存中存储完整的大量 LDAP 结果,从而避免在一些情况下可能出现的性能问题。MTA 提供了通过 MTA 异步完成执行各种类型的查找的能力。

使用异步 LDAP 查找由 MTA 选项 LDAP_USE_ASYNC 来控制。此选项是按位编码的值。每一位(如果设置)可结合 MTA 中具体的 LDAP 使用方法来进行 LDAP 异步查找。

表 9-11 显示了 option.dat 文件中的 LDAP_USE_ASYNC MTA 选项的位和值设置。

表 9-11 LDAP_USE_ASYNC MTA 选项的设置 

LDAP 的具体使用

0

1

LDAP_GROUP_URL1 (mgrpDeliverTo) URL

1

2

LDAP_GROUP_URL2 (memberURL) URL

2

4

LDAP_GROUP_DN (UniqueMember) DN

3

8

auth_listmoderator_listsasl_auth_listsasl_moderator_list 非位置列表参数 URL

4

16

cant_listsasl_cant_list 非位置列表参数 URL

5

32

originator_reply 非位置列表参数 URL

6

64

deferred_listdirect_listhold_listnohold_list 非位置列表参数 URL

7

128

username_auth_listusername_moderator_listusername_cant_list 非位置列表参数 URL

8

256

别名文件列表 URL

9

512

别名数据库列表 URL

10

1024

LDAP_CANT_URL (mgrpDisallowedBroadcaster) 外层 URL

11

2048

LDAP_CANT_URL 内层 URL

12

4096

LDAP_AUTH_URL (mgrpAllowedBroadcaster) 外层 URL

13

8192

LDAP_AUTH_URL 内层 URL

14

16384

LDAP_MODERATOR_URL (mgrpModerator) URL

LDAP_USE_ASYNC MTA 选项的缺省值为 0,缺省情况下,该值表示禁用异步 LDAP 查找。


设置摘要

为了启用直接 LDAP,需要设置以下 MTA 选项:

ALIAS_MAGIC=8764
ALIAS_URL0=ldap:///$V?*?sub?$R
USE_REVERSE_DATABASE=4
USE_DOMAIN_DATABASE=0
REVERSE_URL=ldap:///$V?mail?sub?$Q

如果要支持虚名域,必须设置以下附加选项:

DOMAIN_MATCH_URL=ldap:///$B?msgVanityDomain?sub?(msgVanityDomain=$D)
ALIAS_URL1=ldap:///$B?*?sub?(&(msgVanityDomain=$D)$R)
ALIAS_URL2=ldap:///$1V?*?sub?(mailAlternateAddress=@$D)

请注意,这些选项中的最后一个选项还处理托管域以及虚名域中的通配符的本地部分的情况。如果需要支持通配符的本地部分,但不需要支持虚名域,则应该使用以下选项:

ALIAS_URL1=ldap:///$V?*?sub?&(mailAlternateAddress=@$D)

需要将 filter ssrd:$A 子句从 MTA 配置文件 (imta.cnf) 中的 ims-ms 通道定义中删除。



上一个      目录      索引      下一个     


版权所有 2004 Sun Microsystems, Inc.。保留所有权利。