Sun Java System Messaging Server 6.3 管理指南

第 7 章 配置和管理多路复用器服务

本章介绍了用于标准邮件协议(POP、IMAP 和 SMTP)的 Messaging Multiplexor (MMP)。以前的版本还介绍了用于 Messenger Express Web 接口的 Messenger Express Multiplexor,但已不再需要此项内容。请参见5.7 配置 HTTP 服务

本章包含以下主题:

7.1 多路复用器服务

多路复用器是实现横向可伸缩性(通过添加更多计算机来支持更多用户的能力)所必需的,因为它提供了可用于间接连接到多个邮件存储的单一域名。多路复用器还可以提供安全性方面的优点。

MMP 是独立于 Messaging Server 进行管理的,而 Messenger Express 多路复用则内置于消息存储和邮件访问安装所附带的 HTTP 服务 (mshttpd) 中。

7.1.1 多路复用器的优点

频繁使用的 Messaging Server 上的消息存储会增长到非常大。因此,将用户邮箱和用户连接分布在多个服务器上可以提高容量和性能。此外,使用多台小型服务器计算机可能比使用一台大型、高容量、多处理器的计算机更划算。

如果您的邮件服务器安装大小要求使用多个邮件存储,则您的组织可以通过使用多路复用器在若干方面受益。用户与其消息存储之间的间接连接,以及在多个 Messaging Server 上重新配置用户帐户的方便性具有以下优点:

7.2 关于 Messaging Multiplexor

Sun Java System Messaging Multiplexor (MMP) 是专用的 Messaging Server,用作与多台后端 Messaging Server 之间的单点连接。使用 Messaging Multiplexor,大规模的邮件传送服务提供商可以将 POP 和 IMAP 用户邮箱分布在多台计算机上,以增大消息存储容量。所有用户都连接到一个多路复用器服务器,该服务器会将每个连接重定向到适当的 Messaging Server。

如果您为许多用户提供电子邮件服务,则可以安装和配置 Messaging Multiplexor,这样整个 Messaging Server 阵列便可以作为一个单一主机呈现给邮件用户。

Messaging Multiplexor 是作为 Messaging Server 的一部分提供的。您可以在安装 Messaging Server 或其他 Sun Java System 服务器的同时安装 MMP,也可以在以后单独安装 MMP。MMP 支持:

本节包含以下几个部分:

7.2.1 Messaging Multiplexor 的工作原理

MMP 是多线程的服务器,它可以协助在多台服务器计算机上分布邮件用户。MMP 可控制将去往其他服务器计算机(用户邮箱所在的计算机)的外来客户端连接。客户端将连接到 MMP 本身,MMP 为用户确定正确的服务器,然后连接到该服务器并在客户端和服务器之间传递数据。此功能使 Internet 服务提供商和其他大型安装能够将消息存储分布在多台计算机上(可以增加容量),同时为用户和外部客户端呈现了一个单一的邮件主机(用户可以提高效率,外部客户端可以增强安全性)。7.2.1 Messaging Multiplexor 的工作原理显示了 MMP 安装中服务器和客户端彼此之间的相关方式。

图 7–1 MMP 安装中的客户端和服务器

此图形描述了 MMP 安装中的客户端和服务器。

所有 POP、IMAP 和 SMTP 客户端都可以使用 Messaging Multiplexor。MMP 将接受连接、执行 LDAP 目录查找并适当地路由连接。与其他邮件服务器安装中的典型情况一样,每个用户都被指定一个位于特定 Messaging Server 上的特定地址和邮箱。但是,所有连接都将通过 MMP 来路由。

下面详细介绍了建立用户连接中所涉及的步骤:

  1. 用户的客户端连接到 MMP,MMP 将接受初步的验证信息(用户名)。

  2. MMP 查询 Directory Server 以确定包含该用户的邮箱的 Messaging Server。

  3. MMP 连接到适当的 Messaging Server,重新进行验证,然后在连接过程中充当通信管道。

7.2.2 加密 (SSL) 选项

Messaging Multiplexor 支持在 Messaging Server 及其邮件客户端之间进行未加密和加密的 (SSL) 通信。Messaging Server 的当前版本支持新证书数据库格式 (cert8.db)。

当启用 SSL 时,MMP 支持 STARTTLS,并且还可以配置 MMP 以侦听其他用于 SSL IMAP、POP 和 SMTP 连接的端口。

要为您的 IMAP、POP 和 SMTP 服务启用 SSL 加密,请分别编辑 ImapProxyAService.cfgPopProxyAService.cfgSmtpProxyAService.cfg 文件。还必须编辑 AService.cfg 文件中的 default:ServiceList 选项,以包含所有 IMAP、POP 和 SMTP 服务器端口的列表,而不管它们是否安全。有关详细信息,请参见7.4 配置 MMP 以使用 SSL

默认情况下,SSL 没有被启用,因为 SSL 配置参数被注释掉了。要启用 SSL,必须安装 SSL 服务器证书。然后,应当取消注释并设置 SSL 参数。有关 SSL 参数的列表,请参见《Sun Java System Messaging Server 6.3 Administration Reference》中的“Encryption (SSL) Option”

7.2.3 基于证书的客户端验证

MMP 可以使用证书映射文件 (certmap.conf) 将客户端的证书与用户/组 Directory Server 中的正确用户相匹配。

要使用基于证书的客户端验证,还必须启用 SSL 加密,如7.2.2 加密 (SSL) 选项中所述。

还必须配置一个存储管理员。您可以使用邮件管理员,但是建议您为此目的创建一个唯一的用户 ID(例如 mmpstore),以便根据需要设置权限。

请注意,MMP 不支持 certmap 插件,而是接受 certmap.conf 文件中增强的 DNCompsFilterComps 属性值条目。这些增强的格式条目使用以下格式:


mapname:DNComps FROMATTR=TOATTRmapname:FilterComps FROMATTR=TOATTR

这样,便可以使用证书的 subjectDN 中的 FROMATTR 值来构成一个具有 TOATTR=value 元素的 LDAP 查询。例如,可以使用以下行将 subjectDN 为 "cn=Pilar Lorca, ou=pilar, o=siroe.com" 的证书映射到 LDAP 查询 "(uid=pilar)":

mapname:FilterComps ou=uid

Procedure为您的IMAP 或POP 服务启用基于证书的验证

  1. 确定要用作存储管理员的用户 ID。

    虽然可以为此目的使用邮件管理员,但是建议为存储管理员创建一个单独的用户 ID(例如 mmpstore)。

  2. 确保已启用(或将启用)SSL 加密,如7.2.2 加密 (SSL) 选项中所述。

  3. 通过在您的配置文件中指定 certmap.conf 文件的位置,将 MMP 配置为使用基于证书的客户端验证。

  4. 至少安装一个信任的 CA 证书,如23.5.1.6 安装可信 CA 证书中所述

7.2.4 用户预验证

MMP 通过作为外来用户绑定到目录并记录结果为您提供了预验证用户的选项。


注 –

启用用户预验证会降低服务器的性能


日志条目的格式为:


date time (sid 0xhex) user name pre-authenticated - client 
IP address, server IP address

其中,date 的格式为 yyyymmddtime 是在服务器上配置的时间,其格式为 hhmmsshex 是会话标识符 (sid),以十六进制数字表示;user name 包括虚拟域名(如果有),IP 地址采用以点分隔的四组数字格式。

7.2.5 MMP 虚拟域

MMP 虚拟域是一组与服务器 IP 地址相关联的配置设置。此功能的主要用途是为每个服务器 IP 地址提供不同的默认域。

用户可以使用简短形式的用户 ID 或全限定的用户 ID(格式为 user@domain)来对 MMP 进行验证。提供简短形式的用户 ID 时,MMP 将附加 DefaultDomain 设置(如果已指定)。因此,支持多个托管域的站点只需通过将服务器 IP 地址和 MMP 虚拟域与每个托管域相关联便可以允许使用简短形式的用户 ID。

要为给定的托管域查找用户子树,建议通过该域的 LDAP 域树条目中的 inetDomainBaseDN 属性来查找。MMP 的 LdapUrl 设置不适用于此目的,因为后端邮件存储服务器还需要在 LDAP 中查找用户并且不支持虚拟域。

启用 Sun LDAP Schema 2 时(请参见《Sun Java Enterprise System 5 Installation Guide for UNIX》《Sun Java Communications Suite 5 Schema Reference》),指定域的用户子树将是该域的组织节点下的子树中的所有用户。

要启用虚拟域,请编辑实例目录中的 ImapProxyAService.cfgPopProxyAService.cfgSmtpProxyAService.cfg 文件,以便 VirtualDomainFile 设置可以指定虚拟域映射文件的完整路径。

每个虚拟域文件条目都具有以下语法:

vdmap name IPaddr
name:parameter value

其中,name 仅用于将 IP 地址与配置参数相关联,并可以是您选择使用的任何名称; IPaddr 采用以点分隔的四组数字格式;parametervalue 对用于配置虚拟域。设置后,虚拟域配置参数值将覆盖全局配置参数值。

下面列出了可以为虚拟域指定的配置参数:


AuthCacheSizeAuthCacheSizeTTL
AuthService
BindDNBindPass
CertMap
ClientLookup
CRAMs
DefaultDomain
DomainDelim
HostedDomains
LdapCacheSizeLdapCacheTTL
LdapURL
MailHostAttrs
PreAuth
ReplayFormat
RestrictPlainPasswords
StoreAdminStoreAdminPass
SearchFormat
TCPAccess
TCPAccessAttr

注 –

除非正确设置了 LdapURL,否则 BindDNBindPassLdapCacheSizeLdapCacheTTL 设置将被忽略。


有关这些配置参数的详细说明,请参见《Sun Java System Messaging Server 6.3 Administration Reference》

7.2.6 关于 SMTP 代理

MMP 包含一个 SMTP 代理(默认情况下被禁用)。大多数站点并不需要 SMTP 代理,因为 Internet 邮件标准已经为 SMTP(DNS MX 记录)的横向可伸缩性提供了足够的机制。

SMTP 代理所提供的安全性功能很有用。首先,SMTP 代理与 POP 代理相集成以实现某些传统 POP 客户端所要求的“在 SMTP 之前先执行 POP”的验证功能。有关更多信息,请参见《Sun Java Communications Suite 5 Deployment Planning Guide》中的“Using the MMP SMTP Proxy”23.8 启用 POP Before SMTP。此外,通过使用 SMTP 代理可以最大限度地利用在 SSL 加速硬件上的投入。请参见23.5.4 如何使用 SMTP 代理服务器优化 SSL 性能

7.3 设置 Messaging Multiplexor

在 Messaging Server 的初始运行时配置过程中,您确定了是否要在计算机上配置 MMP。您可以将它与 Messaging Server 设置在同一个计算机上,也可以设置在单独的计算机上。


注 –

MMP 不缓存 DNS 结果。Messaging Server 的生产部署要求在本地网络上具有高质量的高速缓存 DNS 服务器。


以下各节介绍了如何设置 MMP:

有关 MMP 的更多信息,请参见以下文档:

7.3.1 配置 MMP 之前

配置 MMP 之前:

  1. 选择要在其上配置 MMP 的计算机。最好使用一台专用于 MMP 的计算机。


    注 –

    建议不要在同时运行 POP 或 IMAP 服务器的计算机上启用 MMP。

    如果将 MMP 和 Messaging Server 安装在同一台计算机上,则必须确保将 POP 和 IMAP 服务器设置到非标准端口。这样,MMP 和 Messaging Server 端口才不会彼此冲突。


  2. 在要配置 MMP 的计算机上,创建一个要由 MMP 使用的 UNIX 系统用户。此新用户必须属于一个 UNIX 系统组。请参见1.1 创建 UNIX 系统用户和组

  3. 设置要与 Messaging Server 一起使用的 Directory Server 及其主机(如果尚未设置)。请参见1.2 为 Messaging Server 配置准备 Directory Server

  4. 如果在升级后端服务器之前升级 MMP,则用户应设置 ImapProxyAService.cfg 中的 Capability 选项,以匹配对尚未升级的后端服务器的 capability 命令的响应。设置为:

    IMAP4 IMAP4rev1 ACL QUOTA LITERAL+ NAMESPACE UIDPLUS CHILDREN LANGUAGE XSENDER X-NETSCAPE XSERVERINFO

    请注意,换行可使编辑清晰,但是配置值必须在一行中。

7.3.2 多路复用器的配置

要配置 MMP,必须使用 Messaging Server 配置程序,该程序为您提供了启用 Messaging Multiplexor 的选项。有关配置程序的详细信息,请参见1.3 创建初始 Messaging Server 运行时配置

Procedure配置 MMP

  1. 将 Sun Java System Messaging Server 置于您安装和配置 MMP 的计算机上。

  2. 通过创建 Messaging Server 初始运行时配置来配置 MMP。请参见1.3 创建初始 Messaging Server 运行时配置

    请注意以下例外情况:安装 Messaging Server 时,仅检查 Messaging Multiplexor 选项。

7.3.3 多路复用器文件

Messaging Multiplexor 文件存储在 msg-svr-base/config 配置文件目录中。您必须手动编辑表 7–1 中列出的 Messaging Multiplexor 配置文件中的配置参数。有关所有 MMP 配置参数的完整说明,请参见《Sun Java System Messaging Server 6.3 Administration Reference》中的“Multiplexor Configuration Parameters”

表 7–1 Messaging Multiplexor 配置文件

文件 

说明 

PopProxyAService.cfg

指定用于 POP 服务的配置变量的配置文件。 

PopProxyAService-def.cfg

POP 服务配置模板。仅当使用 start-msg mmp 启动初始 MMP 后,文件才存在

ImapProxyAService.cfg

指定用于 IMAP 服务的配置变量的配置文件。 

ImapProxyAService-def.cfg

IMAP 服务配置模板。仅当使用 start-msg mmp 启动初始 MMP 后,文件才存在

AService.cfg

指定要启动的服务以及一些由 POP 和 IMAP 服务共享的选项的配置文件。 

AService-def.cfg

指定要启动的服务以及一些由 POP 和 IMAP 服务共享的选项的配置模板。仅当使用 start-msg mmp 启动初始 MMP 后,文件才存在

SmtpProxyAService.cfg

指定用于 SMTP 代理服务的配置变量的可选配置文件。如果启用“在 SMTP 之前先执行 POP”,则需要该配置文件;它对于最大限度地支持 SSL 硬件很有用,即使没有启用“在 SMTP 之前先执行 POP”。有关“在 SMTP 之前先执行 POP”的更多信息,请参见23.8 启用 POP Before SMTP

SmtpProxyAService-def.cfg

指定用于 SMTP 代理服务的配置变量的配置模板。仅当使用 start-msg mmp 启动初始 MMP 后,文件才存在

举例来讲,LogDirLogLevel 参数在所有配置文件中都可以找到。在 ImapProxyAService.cfg 中,它们用于为与 IMAP 相关的事件指定日志记录参数;类似地,这些参数在 PopProxyAService.cfg 中用于为与 POP 相关的事件配置日志记录参数。在 SmtpProxyAService.cfg 中,它们用于为与 SMTP 代理相关的事件指定日志记录。

但是,在 AService.cfg 中,LogDirLogLevel 用于记录 MMP 范围内的故障,例如,无法启动 POP、IMAP 或 SMTP 服务。


注 –

当配置或升级 MMP 时,配置模板文件将被覆写。


7.3.4 启动多路复用器

要启动、停止或刷新 Messaging Multiplexor 的实例,请使用表 7–2 中的以下命令之一,这些命令位于 msg-svr-base /sbin 目录中:

表 7–2 MMP 命令

选项 

说明 

start-msg mmp

启动 MMP(即使一个 MMP 已在运行)。 

stop-msg mmp

停止最近启动的 MMP。 

refresh mmp

使一个已在运行的 MMP 刷新其配置而不会中断任何活动连接。 

7.3.5 修改现有 MMP

修改 MMP 的现有实例,请根据需要编辑 ImapProxyAService.cfg 和/或 PopProxyAService.cfg 配置文件。这些配置文件位于 msg-svr-base/config 子目录中。

7.4 配置 MMP 以使用 SSL

要配置 MMP 以使用 SSL,请执行以下操作:


注 –

假定 MMP 安装在没有消息存储或 MTA 的计算机上。


Procedure使用 SSL 配置 MMP

  1. 安装 SSL 服务器证书(请参见23.5 配置加密和基于证书的验证)。

  2. 编辑 ImapProxyAService.cfg 文件并取消相关 SSL 设置的注释。

  3. 如果需要 SSL 和 POP,请编辑 PopProxyAService.cfg 文件并取消相关 SSL 设置的注释。

    此外,您还必须编辑 AService.cfg 文件并在 ServiceList 设置中的 110 之后添加 |995

  4. 确保在 ImapProxyAService.cfgPopProxyAService.cfg 文件中设置了 BindDNBindPass 选项。

    您还应当将 DefaultDomain 选项设置为您的默认域(用于非限定用户名的域)。

    如果只需要服务器端的 SSL 支持,则到此就可以完成了。使用 msg-svr-base /sbin 目录中的以下命令启动 MMP:

    start-msg mmp

  5. 将 MMP 设置为使用 SSL 接受邮件,但使用非 SSL 将邮件发送到后端邮件服务器:

    ImapProxyAService.cfgPopProxyAService.cfg 中的 SSLBacksidePort 选项设置为 0。

  6. 如果您不希望在 MMP 和 后端服务器之间使用 SSL,则可以将 SSLBacksidePort 选项设置为 0。

Procedure配置 MMP 以实现基于客户端证书的登录

如果希望基于客户端证书进行登录,请执行以下操作:

  1. 获取一个客户端证书副本和签署它的 CA 证书。

  2. 将 CA 证书作为信任的证书授权机构导入(请参见23.5.1 获得证书

  3. 使用在安装 Messaging Server 过程中创建的存储管理员。

    有关更多信息,请参见20.4 指定管理员对存储的访问权限

  4. 为 MMP 创建一个 certmap.conf 文件。例如:


    certmap default default
    default:DNComps
    default:FilterComps e=mail
    

    这表示要通过查看 LDAP 服务器中的邮件属性搜索与证书 DN 中 e 字段相匹配的内容。

  5. 编辑 ImapProxyAService.cfg 文件并执行以下操作:

    1. CertMapFile 设置为 certmap.conf

    2. StoreAdminStorePass 设置为步骤 3 中的值。

    3. UserGroupDN 设置为您的用户和组树的根。

  6. 如果需要使用 POP3 的客户端证书,请对 PopProxyAService.cfg 文件重复步骤 5

  7. 如果 MMP 尚未运行,请使用 msg-svr-base/sbin 目录中的以下命令来启动 MMP:

    start-msg mmp

  8. 将客户端证书导入到您的客户端中。在 NetscapeTM Communicator 中,单击挂锁(安全性)图标,选择“证书”下的“您的”,然后选择“导入证书...” 并按照说明操作。


    注 –

    如果您要在所有地方都使用客户端证书,则您的所有用户都必须执行此步骤。


7.4.1 样例拓扑

虚构的 Siroe Corporation 在两台计算机上各有一个 Messaging Multiplexor,均支持若干个 Messaging Server。POP 和 IMAP 用户邮箱分散在多台 Messaging Server 计算机上,其中每台服务器都专用于 POP 或专用于 IMAP(您可以通过从 ServiceList 设置中删除 ImapProxyAService 条目以限制客户端为仅访问 POP 服务;类似地,您也可以通过从 ServiceList 设置中删除 PopProxyAService 条目以限制客户端为仅访问 IMAP 服务)。此外,每个 Messaging Multiplexor 仅支持 POP 或仅支持 IMAP。LDAP 目录服务位于单独的专用计算机上。

下面的图 7–2 显示了此拓扑。

图 7–2 多个 MMP 支持多个 Messaging Server

图形中显示了多个 MMP 支持多个 Messaging Server。

7.4.1.1 IMAP 配置示例

图 7–2 中的 IMAP Messaging Multiplexor 安装在 sandpit 上,这是一台装有两个处理器的计算机。此 Messaging Multiplexor 将侦听用于 IMAP 连接的标准端口 (143)。Messaging Multiplexor 与主机 phonebook 上的 LDAP 服务器通信以获取用户邮箱信息,然后将连接路由到适当的 IMAP 服务器。它覆盖了 IMAP 功能字符串,提供了一个虚拟域文件,并且支持 SSL 通信。

以下是它的 ImapProxyAService.cfg 配置文件:


default:LdapUrl ldap://phonebook.siroe.com/o=internet
default:LogDir /opt/SUNWmsgsr/config/log
default:LogLevel 5
default:BindDN "cn=Directory Manager"
default:BindPass secret
default:BacksidePort 143
default:Timeout 1800
default:Capability "IMAP4 IMAP4rev1 ACL QUOTA LITERAL+ NAMESPACE 
UIDPLUS CHILDREN BINARY LANGUAGE XSENDER X-NETSCAPE XSERVERINFO"
default:SearchFormat (uid=%s)
default:SSLEnable yes
default:SSLPorts 993
default:SSLSecmodFile /opt/SUNWmsgsr/config/secmod.db
default:SSLCertFile /opt/SUNWmsgsr/config/cert8.db
default:SSLKeyFile /opt/SUNWmsgsr/config/key3.db
default:SSLKeyPasswdFile /opt/SUNWmsgsr/config/sslpassword.conf
default:SSLCipherSpecs all
default:SSLCertNicknames Siroe.com Server-Cert
default:SSLCacheDir /opt/SUNWmsgsr/config
default:SSLBacksidePort 993
default:VirtualDomainFile /opt/SUNWmsgsr/config/vdmap.cfg
default:VirtualDomainDelim @
default:ServerDownAlert "your IMAP server appears to be temporarily
out of service"
default:MailHostAttrs mailHost
default:PreAuth no
default:CRAMs no
default:AuthCacheSize 10000
default:AuthCacheTTL 900
default:AuthService no
default:AuthServiceTTL 0
default:BGMax 10000
default:BGPenalty 2
default:BGMaxBadness 60
default:BGDecay 900
default:BGLinear no
default:BGExcluded /opt/SUNWmsgsr/config/bgexcl.cfg
default:ConnLimits 0.0.0.0|0.0.0.0:20
default:LdapCacheSize 10000
default:LdapCacheTTL 900
default:HostedDomains yes
default:DefaultDomain Siroe.com

7.4.1.2 POP 配置示例

7.4.1 样例拓扑 中的 POP Messaging Multiplexor 示例安装在 tarpit 上,这是一台装有四个处理器的计算机。此 Messaging Multiplexor 将侦听用于 POP 连接的标准端口 (110)。Messaging Multiplexor 与主机 phonebook 上的 LDAP 服务器通信以获取用户邮箱信息,然后将连接路由到适当的 POP 服务器。

以下是它的 PopProxyAService.cfg 配置文件:


default:LdapUrl ldap://phonebook.siroe.com/o=internet
default:LogDir /opt/SUNWmsgsr/config/log
default:LogLevel 5
default:BindDN "cn=Directory Manager"
default:BindPass password
default:BacksidePort 110
default:Timeout 1800
default:SearchFormat (uid=%s)
default:SSLEnable no
default:VirtualDomainFile /opt/SUNWmsgsr/config/vdmap.cfg
default:VirtualDomainDelim @
default:MailHostAttrs mailHost
default:PreAuth no
default:CRAMs no
default:AuthCacheSize 10000
default:AuthCacheTTL 900
default:AuthService no
default:AuthServiceTTL 0
default:BGMax 10000
default:BGPenalty 2
default:BGMaxBadness 60
default:BGDecay 900
default:BGLinear no
default:BGExcluded /opt/SUNWmsgsr/config/bgexcl.cfg
default:ConnLimits 0.0.0.0|0.0.0.0:20
default:LdapCacheSize 10000
default:LdapCacheTTL 900
default:HostedDomains yes
default:DefaultDomain Siroe.com

7.5 MMP 任务

本节说明其他的 MMP 配置任务。这些元字符包含:

7.5.1 用 MMP 配置邮件访问

MMP 不使用 PORT_ACCESS 映射表。如果希望拒绝来自某些 IP 地址的 SMTP 连接并且您正在使用 MMP,则必须使用 TCPAccess 选项。该选项的语法与 mailDomainAllowedServiceAccess 相同(请参见《Sun Java Communications Suite 5 Schema Reference》)。23.7.2 过滤器语法也对该语法作了介绍。

7.5.2 设置故障转移 MMP LDAP 服务器

可以为 MMP 指定多个 LDAP 服务器,以便当一个服务器出现故障时可以使用另一个。请按以下所示修改您的 PopProxyAservice.cfgImapProxyAservice.cfg

default:LdapUrl "ldap://ldap01 .yourdomain ldap02 .yourdomain/o=internet"


注 –

请确保以上配置中的主机名之间留有空格。