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

重写规则模式和标记

本节包含以下几个部分:

大多数重写规则模式包含仅与某一主机匹配的特定主机名,或与整个子域中的任何主机/域匹配的子域模式。

例如,以下重写规则模式包含将只与特定主机匹配的特定主机名:

host.siroe.com

下一个重写规则模式包含将与整个子域中的任一主机或域匹配的子域模式:

.siroe.com

但该模式将不会匹配确切的主机名 siroe.com;要匹配确切的主机名 siroe.com,需要单独的 siroe.com模式。

MTA 将尝试从特定主机名开始重写主机/域名,然后逐渐地将该名称一般化以使其不太特别。这意味着将优先使用较特定的重写规则模式,而不是较一般的重写规则模式。例如,假设在配置文件中存在以下重写规则模式:

hosta.subnet.siroe.com
.subnet.siroe.com
.siroe.com

基于不同的重写规则,地址 jdoe@hosta.subnet.siroe.com 将与 hosta.subnet.siroe.com 重写规则模式匹配;地址 jdoe@hostb.subnet.siroe.com 将与 .subnet.siroe.com 重写规则模式匹配;地址 jdoe@hostc.siroe.com 将与 .siroe.com 重写规则模式匹配。

特别是,包含子域重写规则模式的重写规则的使用对于 Internet 上的站点是常用的。此类站点通常具有许多用于其内部主机和子网的重写规则,并且还将顶层 Internet 域的重写规则包括在其文件 internet.rules (msg_svr_base/config/internet.rules) 的配置中。

为确保正确重写传送至 Internet 目的地(不是通过较具体的重写规则处理的内部主机目的地)的邮件并将其路由到外发 TCP/IP 通道,请确保 imta.cnf 文件包含:


!    Ascension Island
 .AC                      $U%$H$D@TCP-DAEMON
. [text
.     removed for
.             brevity]
!      Zimbabwe
 .ZW                      $U%$H$D@TCP-DAEMON

      

IP 域文字遵循类似的分层匹配模式,但是从右向左(而不是从左向右)匹配。例如,以下模式仅与 IP 文字 [1.2.3.4] 完全匹配:

[1.2.3.4]

下一个模式与 1.2.3.0 子网中的任何文字匹配:

[1.2.3.]

除了已经介绍的较为常用的几种主机或子域重写规则模式以外,重写规则还可以使用几种特殊的模式,表 11–1 中概述了这些模式,并在以下小节中将对此进行介绍。

表 11–1 重写规则的特殊模式摘要

模式 

说明/用法 

$* 

匹配任何地址。如果指定此规则,则将首先尝试该规则而不考虑其在文件中的位置。 

$% 

百分比黑客规则。与 A%B 格式的任何主机/域说明匹配。 

$! 

Bang 式样规则。与 B!A 格式的任何主机/域说明匹配。 

[ ] 

IP 文字全匹配规则。与任何 IP 域文字匹配。 

与任何主机/域说明匹配。例如,joe@[129.165.12.11]

除了这些特殊模式以外,Messaging Server 还包含标记的概念,标记可以在重写规则模式中出现。当某个地址可能被重写多次,并且根据以前的重写,必须通过控制与该地址匹配的重写规则在后续重写中进行区分的情况下,将使用这些标记。有关更多信息,请参见标记的重写规则集

与百分比黑客匹配的规则

如果 MTA 尝试重写 A%B 格式的地址时失败,则其将在失败并将该地址格式处理为 A%B@localhost 之前尝试一个附加规则。(有关这些地址格式的更多信息,请参见重写规则模板。)只有在包含百分比符号的本地部分以任何其他方法(包括以下介绍的全匹配规则)重写均失败时,该规则才有效。

百分比黑客规则可用于将某个特殊的内部含义指定到百分比黑客地址。

与 Bang 式样 (UUCP) 地址匹配的规则

如果 MTA 尝试重写 B!A 格式的地址时失败,则其将在失败并将该地址格式处理为 B!A@localhost 之前尝试一个附加规则。此附加规则是 bang 式样规则。其模式为 $!。该模式从不会更改。只有在包含感叹号的本地部分以任何其他方法(包括以下介绍的默认规则)重写均失败时,该规则才有效。

bang 式样规则可用于将 UUCP 式样地址强制路由至具有 UUCP 系统和路由的全面知识的系统。

与任何地址匹配的规则

如果其他规则均不匹配,并且在通道表格中找不到主机/域说明,则特殊模式 "."(单个句点)将与任何主机/域说明匹配。也就是说,当无法使用其他方法进行地址重写时,"." 规则将作为最后的解决方案。


注 –

关于替换序列,当全匹配规则匹配并且其模板已扩展时,则 $H 将扩展为完整主机名,$D 将扩展为单个句点 "."。因此,$D 在全匹配规则模板中的使用将受到限制!


标记的重写规则集

随着重写过程的继续,可能适合使用不同的规则集。这是通过使用重写规则标记来实现的。在配置文件或域数据库中查找当前标记之前,该标记已前置于每个模式。通过使用重写规则模板(下面将介绍)中的 $T 替换字符串,可以用匹配的任何重写规则更改该标记。

标记有些麻烦;设置标记之后,它们将不断应用到从单个地址提取的所有主机。这意味着在使用所有标记后,必须谨慎提供以正确的标记值开头的备用规则。实际上这几乎不是什么问题,因为标记通常只用于非常专用的应用程序中。重写地址完成后,标记将被重置为默认标记—空字符串。

依照约定,所有标记值均以垂直条 | 结束。该字符在标准地址中不使用,因此可以在模式的其余部分随意勾画标记。