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

添加 SMTP 中继

默认情况下,Messaging Server 被配置为阻止 SMTP 中继尝试,即拒绝从未经验证的外部源(外部系统是除服务器本身所在的主机以外的任何其他系统)向外部地址尝试提交邮件。此默认配置在阻止 SMTP 中继时相当主动,因为它将所有其他系统都认作外部系统。

当 IMAP 和 POP 客户机尝试通过 Messaging Server 系统的 SMTP 服务器将邮件提交到外部地址,而该地址未使用 SMTP AUTH (SASL) 进行验证时,系统将会拒绝这些提交尝试。因此,您可能要修改配置,以便它可以识别您自己的应始终从其接受中继的内部系统和子网。

至于哪些系统和子网将被识别为内部,这通常由 INTERNAL_IP 映射表控制,该表可在 msg_svr_base/config/mappings 中找到。

例如,在 IP 地址为 123.45.67.89 的 Messaging Server 上,默认的 INTERNAL_IP 映射表如下所示:


INTERNAL_IP 

   $(123.45.67.89/32)   $Y
   127.0.0.1            $Y
   *   $N
      

此处,使用 $(IP-pattern/signicant-prefix-bits) 语法的初始条目指定,任何匹配 123.45.67.89 所有 32 位的 IP 地址均应为匹配项,并应被视为内部地址。第二个条目将回送 IP 地址 127.0.0.1 视为内部地址。最后一个条目指定所有其他 IP 地址均不被视为内部地址。请注意,每个条目前都必须至少有一个空格。

您可以通过在最后的 $N 条目之前指定其他 IP 地址或子网来添加其他条目。这些条目必须在左侧指定 IP 地址或子网(使用 $(.../...) 语法来指定子网),在右侧指定 $Y。或者您可以修改现有的 $(.../...) 条目,以接受更通用的子网。

例如,如果此同一样例站点具有一个 C 类网络(即,它拥有 123.45.67.0 的全部子网),则此站点可以通过更改匹配地址使用的位数来修改初始条目。在以下的映射表中,我们将 32 位更改为 24 位。这使 C 类网络上的所有客户机都可以通过此 SMTP 中继服务器来中继邮件。


INTERNAL_IP 

   $(123.45.67.89/24)   $Y
   127.0.0.1   $Y
   *   $N
      

如果站点仅拥有 123.45.67.80-123.45.67.99 范围内的 IP 地址,则此站点将希望使用:

INTERNAL_IP 

! Match IP addresses in the range 123.45.67.80-123.45.67.95 
   $(123.45.67.80/28) $Y
! Match IP addresses in the range 123.45.67.96-123.45.67.99 
   $(123.45.67.96/30) $Y 
   127.0.0.1 $Y 
   * $N

请注意,imsimta test -match 实用程序在检查 IP 地址是否匹配特定 $(.../...) 测试条件时十分有用。imsimta test -mapping 实用程序更常用于检查 INTERNAL_IP 映射表是否对各种 IP 地址输入均返回了所需的结果。

修改 INTERNAL_IP 映射表之后,请确保发出 imsimta restart 命令(如果未使用已编译的配置运行)或后跟 imsimta restart smtpimsimta cnbuild(如果使用已编译的配置运行),以便使更改生效。

有关映射文件和通用映射表格式的更多信息以及 imsimta 命令行实用程序的信息,请参见 Messaging Server Reference Manual。

允许为外部站点进行 SMTP 中继

所有内部 IP 地址均应按上述说明添加到 INTERNAL_IP 映射表中。如果有允许从其进行 SMTP 中继的友好或伙伴系统/站点,最简单的方法是将它们与您的真实内部 IP 地址一起包含到 INTERNAL_IP 映射表中。

如果不希望将这些系统/站点视为真实的内部系统/站点(例如,如果出于记录或其他控制目的,您希望区分真实内部系统具有中继权限的友好非内部系统),则可以使用其他方法来配置系统。

一种方法是设置一个特殊的通道,用于接收来自此类友好系统的邮件。您可以通过创建与现有 tcp_internal 通道类似的、带有正式主机名 tcp_friendly-daemontcp_friendly 通道,以及创建与 INTERNAL_IP 映射表类似的、列出了友好系统 IP 地址的 FRIENDLY_IP 映射表来完成此设置。然后在当前重写规则之后:

! Do mapping lookup for internal IP addresses 
[]    $E$R${INTERNAL_IP,$L}$U%[$L]@tcp_intranet-daemon

添加一个新的重写规则:

! Do mapping lookup for "friendly", non-internal IP addresses
[]     $E$R${FRIENDLY_IP,$L}$U%[$L]@tcp_friendly-daemon

另外一种方法是将以下形式的新条目添加到 ORIG_SEND_ACCESS 映射表的最后一个 $N 条目之上

tcp_local|*@siroe.com|tcp_local|*     $Y

其中 siroe.com 是友好域的名称,并添加以下形式的 ORIG_MAIL_ACCESS 映射表:

ORIG_MAIL_ACCESS 

   TCP|*|25|$(match-siroe.com-IP-addresses)|*|SMTP|MAIL|   \
tcp_local|*@siroe.com|tcp_local|*      $Y 
   TCP|*|*|*|*|SMTP|MAIL|tcp_local|*|tcp_local|* $N

其中 $(...) IP 地址语法与上一节中所述的语法相同。只要地址正确,ORIG_SEND_ACCESS 检查就会成功,因此我们可以继续执行 ORIG_MAIL_ACCESS 检查,此检查更加严格,并且仅在 IP 地址与 siroe.com IP 地址对应时才会成功。