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

第 19 章 配置安全和访问控制

Messaging Server 支持各种灵活的安全功能,这些功能使您可以防止邮件被截、防止盗窃信息者冒充用户或管理员,并仅允许特定用户访问邮件服务系统的特定部分。

Messaging Server 安全体系结构作为整体的 Sun Java System 服务器的安全体系结构的一部分。此体系结构依照工业标准和公共协议建立,从而在最大程度上实现了互操作性和一致性。因此,要实现 Messaging Server 安全策略,则您不仅需要参见本章,还需要参见若干其他文档。特别是,设置 Messaging Server 安全性时需要使用《Sun ONE Server Console 5.2 Server Management Guide》中的信息。

本章包含以下各节:

关于服务器安全性

服务器安全性包括一系列广泛的主题。在大多数企业中,确保只有授权的用户才能访问服务器、确保密码或标识不被泄漏、确保通信时用户没有不适当地代表其他人,以及确保在必要时可以进行保密通信都是对邮件服务系统的重要要求。

危及服务器通信安全性的原因很多,因此或许可以通过多种途径来增强这一安全性。本章着重介绍设置加密、验证和访问控制。本章讨论了以下与安全性相关的 Messaging Server 主题:

并不是所有与 Messaging Server 相关的安全和访问问题都在本章进行讨论。以下是在其他章节中讨论的安全问题:

Web 站点提供了大量相关文档,这些文档包含了各种安全主题。有关此处提及的主题的其他背景信息和与安全相关的其他信息,请访问文档 Web 站点 http://docs.sun.com。

关于 HTTP 安全性

Messaging Server 支持用户 ID/密码验证、客户机证书验证和 Access Manager。但是,在协议如何处理客户机和服务器之间的网络连接方面有些区别。

POP、IMAP 或 SMTP 客户机登录到 Messaging Server 后,即建立了一个连接和一个会话。连接将持续会话的全过程(即从登录到注销)。建立新连接后,客户机必须到服务器上重新验证。

HTTP 客户端登录到 Messaging Server 后,该服务器将为客户端提供唯一的会话 ID。在会话过程中,客户机使用此会话 ID 可以建立多个连接。HTTP 客户机无需对每个连接都重新验证;如果会话被终止并且客户机想要建立新会话,客户机就需要重新验证。(如果 HTTP 会话持续闲置状态达到一定时间,服务器将自动终止 HTTP 会话,并注销客户机;默认的时间段为 2 小时。)

使用以下技术可以改进 HTTP 会话的安全性:

有关指定配置参数以改进连接性能的信息,请参见第 5 章,配置 POP、IMAP 和 HTTP 服务

有关 Access Manager 的信息,请参见第 6 章,启用单点登录 (SSO)

配置验证机制

验证机制是客户端向服务器证明其身份的特殊方法。Messaging Server 支持由简单验证和安全层 (Simple Authentication and Security Layer, SASL) 协议定义的验证方法并支持基于证书的验证。本节介绍了 SASL 机制。有关基于证书的验证的更多信息,请参见配置加密和基于证书的验证

Messaging Server 支持以下基于密码验证的 SASL 验证方法。


注 –

此功能已弃用并将从未来的发行版中删除。


使用询问/响应验证机制,服务器将询问字符串发送给客户机。客户机则以该询问的散列和用户密码响应。如果客户机的响应与服务器拥有的散列相匹配,则用户通过验证。由于散列不可逆,所以通过网络发送用户密码时不会泄露此密码。


注 –

POP、IMAP 和 SMTP 服务支持所有 SASL 机制。HTTP 服务仅支持纯文本密码机制。


表 19–1 显示了某些 SASL 参数和与 SASL 相关的 configutil 参数。有关 configutil 参数的最新和最完整列表,请参见《Sun Java System Messaging Server 6 2005Q4 Administration Reference》中的“configutil Parameters”

表 19–1 某些 SASL 参数和与 SASL 相关的 configutil 参数

参数 

说明 

sasl.default.ldap.has _plain_passwords

该值为布尔值,表示目录存储了可以启用 APOP、CRAM-MD5 和 DIGEST-MD5 的纯文本密码。 

默认值:False 

sasl.default.transition_criteria

不再支持或使用。请参见 sasl.default.auto_transition

sasl.default.auto_transition

布尔值。设置此参数后,当用户提供纯文本密码时,系统将把此密码存储格式转换为目录服务器的默认密码存储格式。此参数可用于从纯文本密码迁移到 APOP、CRAM-MD5 或 DIGEST-MD5。 

默认值:False 

service.imap.allowanonymouslogin

此参数使 IMAP 可以使用 SASL ANONYMOUS 机制。 

默认值:False 

service.{imap|pop|http} .plaintextmincipher

如果此参数大于 0,则只有激活安全层(SSL 或 TLS)才能使用纯文本密码。这强制用户必须在要登录的客户机上启用 SSL 或 TLS,以防止在网络中泄露其密码。MMP 具有等效选项“RestrictPlainPasswords”。 

注意:实际上,5.2 发行版的 Messaging Server 将针对由 SSL 或 TLS 协商的加密算法的程度来检查该值。为了简化此选项并更好地反映一般情况下的使用,已将此功能去除。 

默认值:0 

sasl.default.mech_list

要启用的以空格分隔的 SASL 机制的列表。如果非空,则此选项将覆盖 sasl.default.ldap.has_plain_passwords 选项以及 service.imap.allowanonymouslogin 选项。此选项应用于所有协议(IMAP、POP、SMTP)。

默认值:False 

sasl.default.ldap.searchfilter

如果没有在 inetDomainSearchFilter 中为域指定搜索过滤器,则它就是用于查找用户的默认搜索过滤器。语法与 inetDomainSearchFilter 相同(请参见模式指南)。

默认值:(&(uid=%U)(objectclass=inetmailuser))

sasl.default.ldap.searchfordomain

默认情况下,验证系统将按照域查找规则(需要引用)在 LDAP 中查找域,然后查找用户。但是,如果该选项被设置为 "0" 而不是默认值 "1",则不会进行域查找并且针对用户的搜索(使用 sasl.default.ldap.searchfilter)将在由 local.ugldapbasedn 指定的 LDAP 树下直接进行。提供此参数是为了与传统的单域模式兼容,但建议不要在新部署中使用此参数,因为即使是小公司也可能会进行合并或更名,这些都需要支持多个域。

配置访问纯文本密码的步骤

要使 CRAM-MD5、DIGEST-MD5 或APOP SASL 验证方法起作用,需要访问用户的纯文本密码。您需要执行以下步骤:

  1. 将 Directory Server 配置为以明文存储密码。

  2. 配置 Messaging Server,以便其明确 Directory Server 正使用明文密码。

Procedure配置 Directory Server 以存储明文密码的步骤

要启用 CRAM-MD5、DIGEST-MD5 或 APOP 机制,则必须按以下步骤将 Directory Server 配置为以明文存储密码:

步骤
  1. 在“控制台”中,打开您想要配置的 Directory Server。

  2. 单击“配置”选项卡。

  3. 打开左窗格中的“数据”。

  4. 单击右窗格中的“密码”。

  5. 从“密码加密”下拉式列表中选择“明文”。


    注 –

    此更改仅影响以后创建的用户。现有用户则只能在作了此更改后转换或重置其密码。


针对明文密码配置 Messaging Server

现在可以配置 Messaging Server,以便其明确 Directory Server 可以检索明文密码。此操作可以使 Messaging Server 安全地公布 APOP、CRAM-MD5 和 DIGEST-MD5:

configutil -o sasl.default.ldap.has_plain_passwords -v 1

通过将该值设置为 0,可以禁用这些询问/响应 SASL 机制。


注 –

直到重置或迁移(请参见“转换用户的步骤”)用户密码后,现有用户才能使用 APOP、CRAM-MD5 或 DIGEST-MD5。

请注意,MMP 有一个等效选项:CRAM。


转换用户的步骤

您可以使用 configutil 指定有关转换用户的信息。比如,用户密码更改或客户机尝试使用用户不具有正确条目的机制进行验证。

configutil -osasl.default.auto_transition -vvalue

对于其中的值,可以指定以下值之一:

要成功地转换用户,则必须在 Directory Server 中设置 ACI,以允许 Messaging Server 写访问用户密码属性。要完成此操作,请执行以下步骤:

Procedure转换用户的步骤

步骤
  1. 在“控制台”中,打开您想要配置的 Directory Server。

  2. 单击“目录”选项卡。

  3. 选择用户/组树的基本后缀。

  4. 从“对象”菜单中选择“访问权限”。

  5. 选择(双击)“Messaging Server 最终用户管理员写访问权限”的 ACI。

  6. 单击“ACI 属性”。

  7. userpassword 属性添加到现有属性列表中。

  8. 单击“确定”。

    sasl.default.mech_list 可用于启用一系列 SASL 机制。如果非空,则此选项将覆盖 sasl.default.ldap.has_plain_passwords 选项以及 service.imap.allowanonymouslogin 选项。此选项应用于所有协议(IMAP、POP、SMTP)。

用户密码登录

用户登录到 Messaging Server 时,需要提交密码才能发送或接收邮件,这是对未授权访问的第一步防范措施。Messaging Server 支持对其 IMAP、POP、HTTP 和 SMTP 服务的基于密码的登录。

IMAP、POP 和 HTTP 密码登录

默认情况下,内部用户必须提交密码才能从 Messaging Server 检索用户邮件。您可以单独启用或禁用对 POP、IMAP 和 HTTP 服务的密码登录。有关对 POP、IMAP 和 HTTP 服务进行密码登录的更多信息,请参见基于密码的登录

用户密码可以以明文或以加密的格式从用户的客户端软件传送到服务器上。如果将客户端和服务器都配置为启用 SSL 并且都支持所需级别的加密(如启用 SSL 并选择加密算法的步骤中所说明的),则将进行加密。

用户 ID 和密码都存储在 LDAP 用户安装目录中。密码安全性标准(例如最小长度)由目录策略要求确定;这些标准并不是 Messaging Server 管理的一部分。

基于证书的登录是基于密码登录的备用登录。本章讨论了该主题以及 SSL 的其余部分;请参见设置基于证书的登录的步骤

询问/响应 SASL 机制是纯文本密码登录的另一个备用登录。

SMTP 密码登录

默认情况下,用户连接到 Messaging Server 的 SMTP 服务时无需提交密码即可发送邮件。但是,您可以启用到 SMTP 的密码登录以便启用经过验证的 SMTP。

经过验证的 SMTP 是 SMTP 协议的扩展,它允许客户端验证服务器。此验证附带邮件。经过验证的 SMTP 的主要用途是允许旅行中(或正在使用主 ISP)的本地用户无需创建其他用户可以滥用的开放中继即可提交邮件(转发邮件)。客户端使用 "AUTH" 命令来验证服务器。

有关启用 SMTP 密码登录(和经过验证的 SMTP)的说明,请参见SMTP 验证、SASL 和 TLS

您可以使用带 SSL 加密或不带 SSL 加密的经过验证的 SMTP。

配置加密和基于证书的验证

本节包含以下小节:

Messaging Server 使用传输层安全性 (Transport Layer Security, TLS) 协议(或称为安全套接字层 [Secure Sockets Layer, SSL] 协议)来进行加密通信以及客户端和服务器的基于证书的验证。Messaging Server 支持 SSL 版本 3.0 和 3.1。TLS 与 SSL 完全兼容并包含所有必需的 SSL 功能。

有关 SSL 的背景信息,请参见 "Introduction to SSL"(Managing Servers with iPlanet Console 的附录)。SSL 基于公共密钥密码学的概念,如 "Introduction to Public-Key Cryptography"(Managing Servers with iPlanet Console 的附录)所述。

如果对 Messaging Server 及其客户机之间以及服务器和其他服务器之间的邮件传送进行加密,则几乎没有机会窃听通信。如果正在连接的客户机已经过验证,则盗窃信息者几乎没有机会冒充(欺骗)这些客户机。

SSL 作为 IMAP4、HTTP、POP3 和 SMTP 应用程序层下面的协议层发挥作用。SMTP 和 SMTP/SSL 使用同一端口;HTTP 和 HTTP/SSL 要求使用不同的端口;IMAP 和 IMAP/SSL 以及 POP 和 POP/SSL 可以使用同一端口,也可以使用不同的端口。SSL 在传出和传入邮件的邮件通信的特定阶段发挥作用,如图 19–1 所示。

图 19–1 与 Messaging Server 的加密通信

此图形描述了加密的传出和传入邮件。

SSL 提供了逐个加密,但是不能在每个中间服务器上都加密邮件。


注 –

要能够对传出邮件进行加密,必须修改通道定义以使其包含 tls 通道关键字,例如 maytlsmusttls 等。有关更多信息,请参见传输层安全性手册。


请记住,设置一个 SSL 连接时的附加系统开销可能给服务器带来性能负担。设计邮件服务安装以及分析性能时,您可能需要针对服务器容量来平衡安全需要。


注 –

因为所有 Sun Java System 服务器都支持 SSL,并且在许多服务器上通过控制台来启用和配置 SSL 的界面几乎都相同,所以在 Managing Servers with iPlanet Console 的 SSL 一章中对本节中所述的若干任务进行了更完整地说明。对于那些任务,本章仅给出摘要信息。


通过管理控制台获得证书

无论将 SSL 用于加密还是用于验证,都需要获得服务器证书以用于 Messaging Server。此证书可使您的服务器区别于客户机和其他服务器。如果要通过管理控制台获得证书,请按本节中的步骤执行操作。如果要在命令行模式中创建自签名证书,请参见创建自签名证书

管理内部模块和外部模块的步骤

服务器证书建立了密钥对的拥有权和有效性,编号则用于加密和解密数据。服务器的证书和密钥对代表了服务器的标识。证书和密钥对都存储在证书数据库中,此数据库可以内置于服务器中或位于外部的可移动硬件插卡(智能卡)上。

Sun Java System 服务器使用遵循公共密钥密码学系统 (Public-Key Cryptography System, PKCS) #11 API 的模块来访问密钥和证书数据库。通常可以从给定硬件设备的供应商那里获得此设备的 PKCS #11 模块,并且必须将此模块安装到 Messaging Server 之后,Messaging Server 才能使用此设备。预先安装的“Netscape 内部 PKCS # 11 模块”支持单个内部软件标记(使用服务器的内部证书数据库)。

对证书设置服务器包括为证书及其密钥创建数据库以及安装 PKCS #11 模块。如果未使用外部硬件标记,则请在服务器中创建内部数据库并使用作为 Messaging Server 一部分的此内部默认模块。如果使用了外部标记,则请连接硬件智能卡阅读器并安装其 PKCS #11 模块。

您可以通过控制台管理 PKCS #11 模块,无论此模块是内部模块还是外部模块。要安装 PKCS #11 模块,请执行以下操作:

  1. 将硬件插卡阅读器连接到 Messaging Server 主机计算机并安装驱动程序。

  2. 使用控制台中的“PKCS #11 管理”界面为已安装的驱动程序安装 PKCS #11 模块。

(有关更完整的说明,请参见 Managing Servers with iPlanet Console 中有关 SSL 的章节。)

安装硬件加密加速器。如果将 SSL 用于加密,则安装硬件加密加速器可能会改进服务器加密和解密邮件时的性能。加密加速器通常由永久地安装在服务器计算机中的硬件板和软件驱动程序组成。Messaging Server 支持遵循 PKCS #11 API 的加速器模块。(它们是基本的硬件标记,并不存储自己的密钥;而是使用内部数据库来存储。)首次安装由生产商指定的硬件和驱动程序时即安装了加速器,然后通过安装 PKCS #11 模块完成加速器的安装(同时使用硬件证书标记)。

Procedure请求服务器证书的步骤

在控制台中打开服务器并运行“证书设置向导”可以请求服务器证书。您可以从“控制台”菜单或从“Messaging Server 加密”选项卡访问此向导。使用此向导可以执行以下任务:

步骤
  1. 生成证书请求。

  2. 通过电子邮件将请求发送到要颁发证书的证书授权机构 (CA)。

    来自 CA 的电子邮件响应到达后,将此电子邮件保存为文本文件并使用“证书设置向导”安装此文件。

    (有关更完整的说明,请参见 Managing Servers with iPlanet Console 中有关 SSL 的章节。)

Procedure安装证书的步骤

安装是一个与请求不同的过程。来自 CA 的响应您的证书请求的电子邮件到达并将其保存为文本文件后,请再次运行“证书设置向导”以安装作为证书的文件:

步骤
  1. 指定您已经获得的要安装的证书。

  2. 系统提示将证书的文本粘贴到字段中时,执行此操作。

  3. 将证书昵称从 server-cert 更改为 Server-Cert

    如果您不想更改证书昵称,则可以通过设置 configutil 参数 encryption.rsa.nssslpersonalityssl 来更改系统所需的证书昵称的形式。

    (有关更完整的说明,请参见 Managing Servers with iPlanet Console 中有关 SSL 的章节。)


    注 –

    这也是安装 CA 证书(下面将介绍)应遵循的过程,服务器将使用此证书确定是否相信客户机所递交的证书。


安装信任的 CA 证书的步骤

还要使用“证书设置向导”安装证书授权机构的证书。CA 证书可验证 CA 自身的标识。您的服务器在验证客户机和其他服务器的过程中使用这些 CA 证书。

例如,如果除了基于密码的验证之外,您还将您的企业设置为基于证书的客户端验证(请参见第 157 页中的“设置基于证书的登录”),则需要安装所有 CA(可以信任这些 CA 颁发将在客户端显示的证书)的 CA 证书。这些 CA 对于您的组织可能是内部 CA 也可能是外部 CA,代表了商业机构或政府机构或其他企业。(有关将 CA 证书用于验证的详细信息,请参见 Managing Servers with iPlanet Console 中的 Introduction to Public-Key Cryptography。)

安装后,Messaging Server 初始包含了若干商业 CA 的 CA 证书。如果您需要添加其他商业 CA 或者如果您的企业正在制定(使用 Sun Java System Certificate Server)自己的 CA 以在内部使用,则需要获得并安装其他 CA 证书。


注 –

随 Messaging Server 自动提供的 CA 证书对客户机证书并未初始标记为信任。如果您想要信任由这些 CA 颁发的客户机证书,则需要编辑信任设置。有关说明,请参见第 153 页中的“管理证书和信任的 CA”。


要请求并安装新的 CA 证书,您需要执行以下操作:

Procedure请求和安装新的 CA 证书

步骤
  1. 与证书授权机构(可通过 Web 或电子邮件)联系并下载该机构的 CA 证书。

  2. 将已接收的证书文本保存为文本文件。

  3. 使用“证书设置向导”(如前面小节所述)安装此证书。

    有关更完整的说明,请参见 Managing Servers with iPlanet Console 中有关 SSL 的章节。

管理证书和信任的 CA

您的服务器可以将信任的 CA 的任何编号的证书用于验证客户机。

通过在控制台中打开您的服务器并在“控制台”菜单中选择“证书管理命令”,您可以查看、编辑 Messaging Server 中所安装的证书的信任设置或删除任何证书。有关说明,请参见 Managing Servers with iPlanet Console 中有关 SSL 的章节。

创建密码文件

在所有 Sun Java System 服务器上,当使用“证书设置向导”请求证书时,向导将创建一个密钥对,并将其存储在内部模块的数据库中或外部数据库(在智能卡上)中。然后此向导将提示您提供密码,此密码用于加密专用密钥。仅此相同密码以后才可以用于解密密钥。此向导不保留密码也不在任何位置存储此密码。

在大多数为其启用了 SSL 的 Sun Java System 服务器上,在启动时系统都提示管理员提供解密密钥对所需的密码。但是,在 Messaging Server 上,为了缓解必须多次(至少在三个服务器进程中需要)输入密码带来的不便,并方便无人看管的服务器重新启动,可以从密码文件读取密码。

此密码文件的名称为 sslpassword.conf,并位于 msg_svr_base/config/ 目录中。文件中的条目是具有以下格式的单独行

moduleName:password

其中 moduleName 是要使用的内部或外部 PKCS #11 模块的名称,password 则是解密此模块的密钥对的密码。此密码以明(不加密的)文存储。

Messaging Server 提供了默认版本的密码文件,具有以下单个条目(适用于内部模块和默认密码):

Internal (Software) Token:netscape!

如果安装内部认证时指定的不是默认密码,则需要编辑密码文件的上述行以反映您指定的密码。如果安装外部模块,则需要将一个新的行添加到文件中,该行包含模块名称和您为此模块指定的密码。


注意 – 注意 –

因为系统未在服务器启动时提示管理员提供模块密码,所以确保管理员控制对服务器的正常访问以及服务器主机及其备份的正常物理安全性是极为重要的。


创建自签名证书

如果要在命令行模式中创建自签名证书,请按照本节中的说明执行操作。要使用证书向导创建证书,请参见通过管理控制台获得证书

Procedure创建自签名证书

步骤
  1. 以超级用户身份登录或成为超级用户 (root)。

  2. /opt/SUNWmsgsr/config/sslpassword 中为 certutil 指定证书数据库密码。例如:


    # echo "password" > /opt/SUNWmsgsr/config/sslpassword

    其中 password 是您指定的密码。

  3. 移动到 sbin 目录并生成证书数据库 (cert8.db) 和密钥数据库 (key3.db)。例如:


    # cd /opt/SUNWmsgsr/sbin
    # ./certutil -N -d /opt/SUNWmsgsr/config -f /opt/SUNWmsgsr/config/sslpassword
  4. 生成默认的自签名根证书授权机构证书。示例:


    # ./certutil -S -n SampleRootCA -x -t "CTu,CTu,CTu"
    -s "CN=My Sample Root CA, O=sesta.com" -m 25000
    -o /opt/SUNWmsgsr/config/SampleRootCA.crt
    -d /opt/SUNWmsgsr/config
    -f /opt/SUNWmsgsr/config/sslpassword   -z /etc/passwd
  5. 为主机生成证书。例如:


    ../certutil -S -n Server-Cert -c SampleRootCA -t "u,u,u"
    -s "CN=hostname.sesta.com, o=sesta.com" -m 25001
    -o /opt/SUNWmsgsr/config/SampleSSLServer.crt
    -d /opt/SUNWmsgsr/config -f /opt/SUNWmsgsr/config/sslpassword
    -z /etc/passwd

    其中 hostname.sesta.com 是服务器主机名。

  6. 验证证书。例如:


    # ./certutil -V -u V -n  SampleRootCA -d /opt/SUNWmsgsr/config
    # ./certutil -V -u V -n  Server-Cert -d /opt/SUNWmsgsr/config
  7. 列出证书。例如:


    # ./certutil -L -d /opt/SUNWmsgsr/config
    # ./certutil -L -n Server-Cert -d /opt/SUNWmsgsr/config
  8. 使用 modutil 列出可用的安全模块 (secmod.db)。例如:


    # ./modutil -list -dbdir /opt/SUNWmsgsr/config
  9. 将证书数据库文件的拥有者更改为邮件服务器用户和组,如示例中所示。


    chown mailsrv:mail /opt/SUNWmsgsr/config/cert8.db
    chown mailsrv:mail /opt/SUNWmsgsr/config/key3.db
    
  10. 重新启动邮件服务以启用 SSL。


    注 –

    以前,证书和密钥文件只是位于 Messaging Server 配置目录中。现在,可以使用 local.ssldbpath(指定证书和密钥文件的位置)和 local.ssldbprefix(指定证书和密钥文件的前缀)来指定这些文件的位置。)


启用 SSL 并选择加密算法的步骤

您可以使用控制台启用 SSL 并选择 Messaging Server 可以在其与客户机的加密通信中使用的加密算法集。

关于加密算法

加密算法是用于在加密进程中加密和解密数据的算法。某些加密算法比其他加密算法强大,这意味着经这些算法保密的邮件更难被未经授权的用户译出。

加密算法通过将密钥(一个长编号)应用到数据中来对数据进行操作。通常,加密过程中加密算法使用的密钥越长,没有正确的解秘密钥来解密数据则越难。

客户机用 Messaging Server 启动 SSL 连接时,客户机会让服务器了解客户机会将何种加密算法和密钥长度用于加密。在所有加密通信中,双方必须使用同一加密算法。因为有很多通用的加密算法和密钥组合,所以,服务器应当能够灵活地支持加密。Messaging Server 可支持至多 6 种加密算法和密钥长度的组合。

表 19–2 列出了 Messaging Server 支持的可与 SSL 3.0 配合使用的加密算法。有关此表中汇总的信息,可在 Managing Servers with iPlanet Console 中的 Introduction to SSL 一章中获得的更详细的介绍。

表 19–2 适用于 Messaging Server 的 SSL 加密算法

加密算法 

说明 

带有 128 位加密和 MD5 邮件验证的 RC4 

最快的加密算法(通过 RSA 实现)以及强度很高的加密算法和加密密钥的组合。 

带有 168 位加密和 SHA 邮件验证的三重 DES 

一种较慢的加密算法(美国政府标准),但却是最强大的加密算法和加密密钥的组合。 

带有 56 位加密和 SHA 邮件验证的 DES 

较慢的加密算法(美国政府标准)以及普通强度的加密算法和加密密钥组合。 

带有 40 位加密和 MD5 邮件验证的 RC4 

最快的加密算法(通过 RSA 实现)和较低强度的加密算法和加密密钥组合。 

带有 40 位加密和 MD5 邮件验证的 RC2 

较慢的加密算法(通过 RSA 实现)和较低强度的加密算法和加密密钥组合。 

无加密,只有 MD5 邮件验证 

无加密;仅使用用于验证的邮件摘要。 

除非您具备不使用某个特定加密算法的令人信服的理由,否则应当支持所有加密算法。但是,请注意出口法律限制在某些国家/地区使用某些加密算法。同时,在美国出口控制法放宽之前,所生产的某些客户机软件不能使用较高强度的加密。请注意,虽然 40 位加密算法可以阻止偶尔窃听者,但这些算法并不安全,因此将不会阻止蓄意攻击。

要启用 SSL 并选择加密算法,请遵循以下命令行步骤:

要启用或禁用 SSL:

configutil -onsserversecurity -v [ on | off ]

要启用或禁用 RSA 加密算法:

configutil -oencryption.rsa.nssslactivation -v [ on | off ]

要指定一个标记:

configutil -o encryption.rsa.nsssltoken -v tokenname

要指定一个证书:

configutil -o encryption.rsa.nssslpersonalityssl -v certname

请注意,如果启用 RSA 加密算法,还必须指定一个标记和一个证书。

要选择加密算法首选项:

configutil -oencryption.nsssl3ciphers -v cipherlist

其中 cipherlist 是以逗号分隔的加密算法列表。


注 –

要能够对传出邮件进行 SSL 加密,则必须修改通道定义以使其包含 tls 通道关键字,例如 maytlsmusttls 等。有关更多信息,请参见传输层安全性手册。


设置基于证书的登录的步骤

除了基于密码的验证之外,Sun Java System 服务器还支持通过检查用户的数字证书进行的验证。在基于证书的验证中,客户端建立与服务器之间的 SSL 会话并将用户的证书提交给服务器。然后,服务器将鉴定提交的证书是否真实。如果证书有效,则认为用户经过验证。

要将 Messaging Server 设置为基于证书登录,请执行以下操作:

Procedure设置基于证书的登录的步骤

步骤
  1. 为您的服务器获取服务器证书。(有关详细信息,请参见通过管理控制台获得证书

  2. 运行“证书设置向导”以安装所有信任的证书授权机构的证书,这些证书授权机构将向服务器要验证的用户颁发证书。(有关详细信息,请参见安装信任的 CA 证书的步骤

    请注意,只要服务器的数据库中至少有一个信任的 CA,服务器就会要求每个连接的客户端提供客户端证书。

  3. 打开 SSL。(有关详细信息,请参见启用 SSL 并选择加密算法的步骤

  4. (可选)编辑服务器的 certmap.conf 文件以便服务器根据提交的证书中的信息来搜索相应的 LDAP 用户目录。

    如果用户的证书中的电子邮件地址与用户的目录条目中的电子邮件地址相匹配,则不必编辑 certmap.conf 文件,并且无需针对用户条目中的证书优化搜索或验证已提交的证书。

    有关 certmap.conf 的格式和可以进行的更改的详细信息,请参见 Managing Servers with iPlanet Console 中的 SSL 一章。

    执行这些步骤后,当客户端建立一个 SSL 会话以便用户可以登录到 IMAP 或 HTTP 时,Messaging Server 会要求客户端提供用户证书。如果客户机所提交的证书由服务器建立为信任的 CA 颁发,并且如果证书中的标识与用户目录中的一项相匹配,则用户经过验证并被授予访问权限(取决于管理该用户的访问控制规则)。

    无需禁用基于密码的登录即可启用基于证书的登录。如果允许基于密码的登录(此为默认状态),并且您已经执行了本节中说明的任务,则同时支持基于密码的和基于证书的登录。在这种情况下,如果客户机建立 SSL 会话并提供证书,则使用基于证书的登录。如果客户机未使用 SSL 或未提供证书,则服务器会要求提供密码。

如何使用 SMTP 代理服务器优化 SSL 性能

由于 SMTP 代理服务器在 SMTP 协议中添加了附加等待时间,大多数站点不应使用 SMTP 代理服务器。但是,对于大量使用 SSL 以保护 SMTP 连接的大规模站点,它可能希望通过对服务器上的所有协议均执行全部 SSL 操作来最大化在 SSL 加速器硬件上的投资,这些操作即 SSL 和代理服务器。邮件队列位于独立的 MTA 计算机上时,SMTP 代理服务器允许前端代理服务器处理 SSL。可以单独配置和购买对每个任务优化硬件的此方法。

有关如何安装 SMTP 代理服务器的说明,请参见启用 POP Before SMTP

网络安全服务工具

网络安全服务是一组开放源代码库和工具,用于实现和部署应用程序以提供基于开放标准的 Internet 安全保护。安全工具可以帮助执行诊断、管理证书、密钥和加密模块,并帮助调试基于 SSL 和 TLS 的应用程序。这些工具位于 /usr/sfw/bin 中。

管理证书和密钥

本节介绍的工具可用于存储、检索和保护加密和标识所依赖的密钥和证书。

certutil

证书数据库工具 (certutil) 是命令行实用程序,它可以创建和修改 cert8.dbkey3.db 数据库文件。密钥和证书管理进程通常以在密钥数据库中创建密钥开始,然后在证书数据库中生成和管理证书。有关 certutil 的更多信息,请访问:

http://www.mozilla.org/projects/security/pki/nss/tools/certutil.html

cmsutil

cmsutil 命令行实用程序使用 S/MIME Toolkit 对 Cryptographic Message Syntax (CMS) 邮件执行加密和解密等基本操作。此程序执行基本的证书管理操作,例如加密邮件、解密邮件以及为邮件签名。有关 cmsutil 的更多信息,请访问:

http://www.mozilla.org/projects/security/pki/nss/tools/cmsutil.html

modutil

安全模块数据库工具 (modutil) 是用来管理 PKCS #11 模块(secmod.db 文件)的数据库的命令行实用程序。可以使用该工具添加和删除 PKCS #11 模块、更改密码、设置默认值、列出模块内容、启用或禁用插槽、启用或禁用 FIPS-140-1 规范以及指定加密操作的默认提供者。有关 modutil 的更多信息,请访问:

http://www.mozilla.org/projects/security/pki/nss/tools/modutil.html

pk12util

pk12util 命令行实用程序可以在各自的数据库和文件格式之间导入和导出由 PKCS #12 标准定义的密钥和证书。有关 pk12util 的更多信息,请访问:

http://www.mozilla.org/projects/security/pki/nss/tools/pk12util.html

ssltap

SSL 调试工具 (ssltap) 是识别 SSL 的命令行代理。该工具可代理 SSL 服务器的请求,并显示客户机与服务器之间交换的邮件的内容。它监视 TCP 连接并显示经过的数据。如果连接是 SSL,则显示的信息将包括经过解释的 SSL 记录和握手信息。有关更多信息,请访问:

http://www.mozilla.org/projects/security/pki/nss/tools/ssltap.html

配置管理员对 Messaging Server 的访问

本节大部分内容与 Sun Java System LDAP Schema v. 1 相关。本节包含以下各小节:

本节说明了如何控制服务器管理员访问 Messaging Server 的方法。对给定 Messaging Server 和特定 Messaging Server 任务的管理访问发生在委派的服务器管理的环境中。

委派的服务器管理是大多数 Sun Java System 服务器的功能;它是指管理员可以使其他管理员有选择地访问单个服务器和服务器功能。本章简要地汇总了委派的服务器任务。有关更详细的信息,请参见 Managing Servers with iPlanet Console 中有关委派服务器管理的章节。

委派的管理的分层结构

在网络中安装第一个 Sun Java System 服务器时,安装程序将在 LDAP 用户目录中自动创建一个称为配置管理员的组。默认情况下,配置管理员组的成员对网络中的所有主机和服务器具有不受限制的访问权限。

配置管理员组位于访问分层结构的顶层(例如以下管理员类型),您可以创建配置管理员组以对 Messaging Server 实现委派的管理(如果使用 Sun Java System LDAP Schema v. 1):

  1. 配置管理员。Sun Java System 服务器网络的“超级用户”。具有对所有资源的完全访问权限。

  2. 服务器管理员。域管理员可以创建组以管理每种类型的服务器。例如,可以创建邮件服务管理员组以管理管理域中或整个网络中的所有 Messaging Server。此组成员具有访问该管理域中所有 Messaging Server(但不包括其他服务器)的权限。

  3. 任务管理员。最后,以上任何管理员都可以创建一个组或指派一个单独的用户,该组或该用户具有对单个 Messaging Server 或一组 Messaging Server 的受限访问权限。仅允许此类任务管理员执行特定的、有限的服务器任务(例如仅启动或停止服务器,或访问给定服务的日志)。

控制台提供了允许管理员执行以下任务的方便的界面:

Procedure提供对服务器的整体访问的步骤

本节介绍如何授予用户或组访问 Messaging Server 给定实例的权限。

步骤
  1. 以具有您要为其提供的访问 Messaging Server 权限的管理员身份登录到控制台。

  2. 在“控制台”窗口中选择此服务器。

    从“控制台”菜单中选择“对象”,然后选择“设置访问权限”。

  3. 添加或编辑对服务器具有访问权限的用户和组的列表。

    (有关更完整的说明,请参见 Managing Servers with iPlanet Console 中有关委派服务器管理的章节。)

    设置了对特定 Messaging Server 具有访问权限的个人和组的列表后,您即可以使用 ACI(如下节所述)将特定服务器任务委派给此列表上的特定用户或组。

限制对特定任务的访问权限的步骤

通常管理员连接到服务器以执行一项或多项管理任务。通用管理任务列在控制台中的“Messaging Server 任务”表中。

默认情况下,对特定 Messaging Server 的访问意味着访问其所有任务。但是,任务表中的每项任务都可以有一个附加的访问控制指令 (ACI) 集。服务器在授予已连接用户(必须已成为对服务器具有整体访问权限的用户)对所有任务的访问权限之前将查阅那些 ACI。实际上,服务器在任务表中仅显示那些用户有权访问的任务。

如果您对 Messaging Server 具有访问权限,则可以在所有任务(您具有访问权限的所有任务)中创建或编辑 ACI,从而限制其他用户或组对这些任务的访问权限。

Procedure限制用户或组对任务的访问的步骤

步骤
  1. 以管理员身份登录到要为其提供限制访问的 Messaging Server 的控制台,该管理员必须具有对此 Messaging Server 的访问权限。

  2. 打开服务器,通过单击服务器的任务表中的任务文本来选择任务。

  3. 从“编辑”菜单中选择“设置访问权限”,并添加或编辑访问规则的列表以授予用户或组您希望其具有的某种访问权限。

  4. 根据需要对其他任务重复此过程。

    (有关更完整的说明,请参见 Managing Servers with iPlanet Console 中有关委派服务器管理的章节。)

    Managing Servers with iPlanet Console 的有关委派服务器管理的章节中更全面地介绍了 ACI 以及如何创建 ACI。

配置客户端对 POP、IMAP 和 HTTP 服务的访问

本节包含以下小节:

Messaging Server 支持对其 IMAP、POP 和 HTTP 服务的基于逐个服务的复杂访问控制,从而,您可以对客户机对服务器的访问权限进行大范围和细分的控制。

如果要为大型企业或 Internet 服务提供商管理邮件服务,则这些功能可以帮助您从系统中排除垃圾邮件程序和 DNS 欺骗程序并改进网络的常规安全性。有关对不请自来的批量电子邮件的特殊控制,另请参见第 17 章,邮件过滤和访问控制


注 –

对于您的企业来说,如果通过 IP 地址控制访问不是重大问题,则不必创建本节所述的任何过滤器。如果您只需进行最小访问控制,则有关设置最小访问控制的说明,请参见通常允许


客户机访问过滤器工作原理

Messaging Server 访问控制设备是一种程序,该程序与其服务于的 TCP 守护程序在同一端口上侦听;访问控制设备使用访问过滤器来验证客户机标识,并可授予客户机对此守护程序的访问权限(如果客户机通过过滤进程)。

作为过滤进程的一部分,Messaging Server TCP 客户机访问控制系统执行(必要时)套接字端点地址的以下分析:

系统会将此信息与称为 filters 的访问控制语句进行比较以决定是允许还是拒绝访问。对于每种服务,分隔允许过滤器和拒绝过滤器控制访问集。允许过滤器明确允许访问;拒绝过滤器明确禁止访问。

客户端请求访问某项服务时,访问控制系统将通过以下标准按顺序将客户端的地址或名称信息与此项服务的每个过滤器进行比较:

此处说明的过滤器语法足够灵活,您应该能够以简单而直观的方式实现许多不同种类的访问控制策略。尽管使用几乎排斥的允许或几乎排斥的拒绝可能实现大多数策略,但是还是可以使用允许过滤器和拒绝过滤器的任何组合。

以下各节详细说明了过滤器语法并给出了用法示例。为服务创建访问过滤器的步骤一节介绍了创建访问过滤器的过程。

过滤器语法

过滤器语句包含了服务信息和客户机信息。服务信息可包含服务的名称、主机名和主机地址。客户机信息可包含主机名、主机地址和用户名。服务器信息和客户机信息都可以包含通配符名称或模式。

最简单的过滤器格式是:

service:hostSpec

其中 service 是服务的名称(例如 smtppopimaphttp),而 hostSpec 则是代表客户端请求访问的主机名、IP 地址或者通配符名称或模式。处理过滤器后,如果客户端查找访问与 client 相匹配,则允许还是拒绝(取决于这是哪种类型的过滤器)对服务的访问由 service 来指定。以下是一些示例:

imap: roberts.newyork.siroe.com
pop: ALL
http: ALL

如果是允许过滤器,则第一个语句将授予主机 roberts.newyork.siroe.com 对 IMAP 服务的访问权限,而第二个和第三个语句则分别授予所有客户端对 POP 和 HTTP 服务的访问权限。如果是拒绝过滤器,上述语句将拒绝那些客户机对那些服务的访问。(有关通配符名称 [例如 ALL] 的说明,请参见通配符名称。)

过滤器中的服务器信息或客户机信息在某种程度上都会比这复杂,在这种情况下过滤器更通用的格式为:

serviceSpec:clientSpec

其中 serviceSpec 可以是 serviceservice@hostSpec,而 clientSpec 可以是 hostSpecuser@hostSpecuser 是与客户端主机查找访问相关联的用户名(或通配符名称)。以下是两个示例:

pop@mailServer1.siroe.com: ALL
imap: srashad@xyz.europe.siroe.com

如果是拒绝过滤器,则第一个过滤器拒绝所有客户端访问 mailServer1.siroe.com 主机上的 SMTP 服务。第二个过滤器拒绝 xyz.europe.siroe.com 主机上的 srashad 用户访问 IMAP 服务。(有关何时使用这些扩展的服务器和客户端规范的更多信息,请参见服务器主机规范客户机用户名规范

最后,过滤器具有的最通用的格式为:

serviceList:clientList

其中 serviceList 由一个或多个 serviceSpec 条目组成,而 clientList 则由一个或多个 clientSpec 条目组成。serviceListclientList 内的各个条目以空格和/或逗号分隔。

在这种情况下,处理过滤器以后,如果客户端查找访问与 clientList 中的任何 clientSpec 条目相匹配,则允许或拒绝(取决于这是哪种类型的过滤器)对 serviceList 中指定的所有服务的访问。以下是一个示例:

pop, imap, http: .europe.siroe.com .newyork.siroe.com

如果是允许过滤器,则将授予 europe.siroe.com 域和 newyork.siroe.com 域的任一域中的所有客户端对 POP、IMAP 和 HTTP 服务的访问权限。有关使用前导点或其他模式来指定域或子网的信息,请参见通配符模式

您还可以使用以下语法:

"+" 或 "-" serviceList:*$next_rule

+(允许过滤器)意味着允许客户机列表中的客户机访问守护程序列表服务。

-(拒绝过滤器)意味着拒绝客户机列表中的客户机访问这些服务。

*(通配符过滤器)允许所有客户机使用这些服务。

$ 分隔规则。

以下示例在所有客户机上启用了多项服务。

+imap,pop,http:*

以下示例显示了多条规则,但每条规则都简化为仅有一个服务名称并将通配符用作客户机列表。(这是在 LDIF 文件中指定访问控制的最通用的方法。)

+imap:ALL$+pop:ALL$+http:ALL

以下是一个如何对某个用户禁止所有服务的示例:

-imap:*$-pop:*$-http:*

通配符名称

可以使用以下通配符名称来代表服务名称、主机名或地址或者用户名:

表 19–3 服务过滤器的通配符名称

通配符名称 

解释 

ALL, *

通用通配符。匹配所有名称。 

LOCAL

与所有本地主机(其名称不包含点字符的主机)相匹配。但是,如果您的安装仅使用规范名称,即使本地主机名将包含点,因而也不会与此通配符相匹配。 

UNKNOWN

与名称未知的所有用户或与名称或地址未知的所有主机相匹配。 

请小心使用此通配符名称: 

由于临时 DNS 服务器问题,主机名可能不可用—在这种情况下,使用 UNKNOWN 的所有过滤器将与所有客户端主机都匹配。

软件无法标识与之通信的网络的类型时,网络地址不可用—在这种情况下,使用 UNKNOWN 的所有过滤器将与此网络中的所有客户端主机都匹配。

KNOWN

匹配用户名称已知的所有用户,或匹配名称地址已知的所有主机。

请小心使用此通配符名称: 

由于临时 DNS 服务器问题,主机名可能不可用—在这种情况下,使用 KNOWN 的所有过滤器都将不适用于所有客户端主机。

软件无法标识与之通信的网络的类型时,网络地址不可用—在这种情况下,使用 KNOWN 的所有过滤器都将不适用于此网络中的所有客户端主机。

DNSSPOOFER

与其 DNS 名称不匹配自身 IP 地址的所有主机相匹配。 

通配符模式

可以在服务或客户机地址中使用以下模式:

EXCEPT 运算符

访问控制系统支持单运算符。在 serviceListclientList 中有多个条目时,可以使用 EXCEPT 运算符来创建匹配名称或模式的异常情况。例如,以下表达式:

list1 EXCEPT list2

表示与 list1 相匹配的任何内容都匹配,除此之外它还与 list2 相匹配。

以下是一个示例:

ALL: ALL EXCEPT isserver.siroe.com

如果是拒绝过滤器,则除了 isserver.siroe.com 主机上的客户端之外,将拒绝所有客户端对所有服务的访问。

可以嵌套 EXCEPT 子句。以下表达式:

list1 EXCEPT list2 EXCEPT list3

被鉴定假设其等价为:

list1 EXCEPT (list2 EXCEPT list3)

服务器主机规范

通过将服务器主机名或地址信息包含在 serviceSpec 条目中,您可以进一步标识过滤器中所请求的特定服务。在这种情况下,此条目的格式为:

service@hostSpec

为带有不同 Internet 主机名的多个 Internet 地址设置 Messaging Server 主机计算机时,您可能希望使用此功能。如果您是服务提供商,就可以使用此设备在单个服务器实例中控制具有不同访问控制规则的多个域。

客户机用户名规范

对于支持 RFC 1413 中所述的 identd 服务的客户端主机,您可以通过在过滤器的 clientSpec 条目中包含客户端的用户名来进一步标识请求服务的特定客户端。在这种情况下,此条目的格式为:

user@hostSpec

其中 user 是由客户端的 identd 服务返回的用户名(或通配符名称)。

在过滤器中指定客户机用户名会很有用,但请记住以下警告:

用户名查找功能在某些情况下可以有助于您防止来自客户端主机上未经验证用户的攻击。这可以在某些 TCP/IP 中实现,例如,对于使用 rsh(远程 Shell 服务)来冒充信任的客户端主机的盗窃信息者来说,如果客户端主机支持 ident 服务,则可以使用用户名查找来检测这样的攻击。

过滤器示例

本节中的示例显示了控制访问的各种方法。研究这些示例时,请记住允许过滤器在拒绝过滤器之前处理,找到匹配项时搜索即终止,并且找不到任何匹配项时将授权访问。

此处列出的示例使用主机名和域名而不使用 IP 地址。请记住,可以在过滤器中包含地址和网络掩码信息,在名称服务失败时,此过滤器可以改进可靠性。

通常拒绝

在这种情况下,访问被拒绝(默认)。仅允许明确经过验证的主机访问。

默认策略(无访问)可通过单个普通拒绝文件实现:

ALL: ALL

此过滤器拒绝允许过滤器没有明显授权的所有客户机访问所有服务。然后,允许过滤器可能类似于以下模式:

ALL: LOCAL @netgroup1

ALL: .siroe.com EXCEPT externalserver.siroe.com

第一个规则允许来自本地域(即,主机名中不包含点的所有主机)中的所有主机和来自 netgroup1 组的成员的访问。第二个规则使用前导点通配符模式允许来自 siroe.com 域的除 externalserver.siroe.com 主机之外的所有主机的访问。

通常允许

在这种情况下,访问被授权(默认)。仅拒绝明显指定的主机的访问。

默认策略(已授权访问)使允许过滤器不必使用。在拒绝过滤器中明显列出的不需要的客户机的示例如下:

ALL: externalserver.siroe1.com, .siroe.asia.com
ALL EXCEPT pop: contractor.siroe1.com, .siroe.com

第一个过滤器对特殊主机和特定域拒绝所有服务。第二个过滤器仅允许来自特殊主机和特定域的 POP 的访问。

拒绝对被欺骗的域的访问

可以在过滤器中使用 DNSSPOOFER 通配符名称来检测主机名欺骗。指定 DNSSPOOFER 时,访问控制系统执行 DNS 的正向或反向查找以验证客户端所提供的主机名与其实际 IP 地址是否匹配。以下是一个拒绝过滤器的示例:

ALL: DNSSPOOFER

对主机的 IP 地址与其 DNS 主机名不匹配的所有远程主机,此过滤器拒绝提供任何服务。

控制对虚拟域的访问

如果邮件服务安装使用虚拟域,其中单个服务器实例与多个 IP 地址和多个域名相关联,则您可以通过使用允许过滤器和拒绝过滤器的组合来控制对每个虚拟域的访问。例如,您可以将类似于以下模式的允许过滤器:

ALL@msgServer.siroe1.com: @.siroe1.com
ALL@msgServer.siroe2.com: @.siroe2.com
...

与类似于以下模式的拒绝过滤器配合使用:

ALL: ALL

每个允许过滤器仅允许 domain N 中的主机连接到服务(IP 地址对应于 msgServer.siroeN.com)。所有其他连接都被拒绝。

为服务创建访问过滤器的步骤

可以为 IMAP、POP 或 HTTP 服务创建允许过滤器和拒绝过滤器。还可以为 SMTP 服务创建这些过滤器,但这些过滤器几乎没有价值,因为它们仅应用到经过验证的 SMTP 会话中。请参见第 17 章,邮件过滤和访问控制

Procedure创建过滤器

步骤
  1. 在“控制台”中,打开您想要为其创建访问过滤器的 Messaging Server。

  2. 单击“配置”选项卡。

  3. 在左窗格中打开“服务”文件夹并选择“服务”文件夹下的“IMAP”、“POP”或“HTTP”。

  4. 在右窗格中单击“访问”选项卡。

    此选项卡中的“允许”和“拒绝”字段显示了用于此服务的现有允许过滤器和访问过滤器。字段中的每行都代表了一个过滤器。对于其中任何一个字段,都可以指定以下操作:

    1. 单击“添加”以创建新过滤器。系统将打开一个“允许过滤器”窗口或“拒绝过滤器”窗口;将新过滤器的文本输入到此窗口中,然后单击“确定”。

    2. 选择一个过滤器并单击“编辑”以修改此过滤器。系统将打开一个“允许过滤器”窗口或“拒绝过滤器”窗口;编辑此窗口中显示的过滤器文本,然后单击“确定”。

    3. 选择一个过滤器并单击“删除”以删除此过滤器。

      请注意,如果需要重新安排允许过滤器或拒绝过滤器的顺序,则可以通过执行一系列删除和添加操作来完成此操作。

      有关过滤器语法规范和各种示例,请分别参见过滤器语法过滤器示例

      命令行

      您还可以通过如下命令行指定访问和拒绝过滤器:

      要创建或编辑服务的访问过滤器:


      configutil -o service.service.domainallowed -v filter
      

      其中 servicepopimaphttp,而 filter 遵循过滤器语法中所述的语法规则。

      要创建或编辑服务的拒绝过滤器:


      configutil -o service.service.domainnotallowed -v filter
      

      其中 servicepopimaphttp,而 filter 遵循过滤器语法中所述的语法规则。

为 HTTP 代理验证创建访问过滤器的步骤

任何存储管理员都可以代理验证任何服务。(有关存储管理员的更多信息,请参见指定管理员对存储的访问权限。)如果已授权服务的客户端主机通过代理验证访问过滤器访问服务,则可以对这样的服务进行代理验证。

代理验证允许其他服务(例如一个门户站点)验证用户并将验证证书传递给 HTTP 登录服务。例如,假设一个门户站点提供若干服务,其中之一是 Messenger Express 基于 Web 的电子邮件。通过使用 HTTP 代理验证功能,最终用户仅需要对门户服务进行一次验证;而无需在访问其电子邮件时再次验证。门户站点必须配置作为客户机和服务之间界面的登录服务器。为有助于配置登录服务器来验证 Messenger Express,Sun Java System 提供了一个适用于 Messenger Express 的验证 SDK。

本节说明了如何通过 IP 地址创建允许过滤器以允许 HTTP 代理验证。本节未说明如何设置登录服务器或如何使用 Messenger Express 验证 SDK。有关为 Messenger Express 设置登录服务器和使用验证 SDK 的更多信息,请与您的 Sun Java System 代表联系。

Procedure为 HTTP 代理验证创建访问过滤器的步骤

步骤
  1. 在“控制台”中,打开您想要为其创建访问过滤器的 Messaging Server。

  2. 单击“配置”选项卡。

  3. 在左窗格中打开“服务”文件夹并选择“服务”文件夹下的“HTTP”。

  4. 在右窗格中单击“代理”选项卡。

    此选项卡中的“允许”字段显示了用于代理验证的现有允许过滤器。

  5. 要创建新过滤器,请单击“添加”。

    系统打开一个“允许过滤器”窗口。将新过滤器的文本输入到窗口中并单击“确定”。

  6. 要编辑一个现有过滤器,请选择此过滤器并单击“编辑”。

    系统打开一个“允许过滤器”窗口。编辑窗口中显示的过滤器文本,然后单击“确定”。

  7. 要删除一个现有过滤器,请从“允许”字段中选择一个字段,然后单击“删除”。

  8. 完成对“代理”选项卡所作的更改后,请单击“保存”。

    有关允许过滤器语法的更多信息,请参见过滤器语法

    命令行

    您还可以通过如下命令行为 HTTP 服务的代理验证指定访问过滤器:


    configutil -o service.service.proxydomainallowed -v filter
    

    其中 filter 遵循过滤器语法中所述的语法规则。

启用 POP Before SMTP

SMTP 验证或 SMTP 验证 (RFC 2554) 是提供 SMTP 中继服务器安全性的首选方法。SMTP 验证仅允许已验证的用户通过 MTA 发送邮件。但是,某些传统客户端仅提供对 POP before SMTP 的支持。如果您的系统中出现此情况,您可以按如下所述启用 POP before SMTP。但是,如果可能,请支持您的用户升级 POP 客户机而不是使用 POP before SMTP。在站点中部署了 POP before SMTP 后,用户将依赖于无法遵循 Internet 安全标准的客户机,并使最终用户更容易攻击您的站点和减慢您的站点速度而造成不可避免的性能损耗,因为必须跟踪并整理最近成功的 POP 会话的 IP 地址。

POP before SMTP 的 Messaging Server 实现与 SIMS 或 Netscape Messaging Server 是完全不同的。将 Messaging Multiplexor (MMP) 配置为具有 POP 和 SMTP 代理才能支持 POP before SMTP。SMTP 客户机连接到 SMTP 代理后,此代理将检查最近 POP 验证的内存中高速缓存。如果找到来自同一客户机 IP 地址的 POP 验证,则 SMTP 代理将通知 SMTP 服务器应当允许邮件指向本地和非本地收件人。

Procedure安装 SMTP 代理的步骤

步骤
  1. 安装 Messaging Multiplexor (MMP)。

    请参见 Sun Java Enterprise System 2005Q4 安装指南以了解说明。

  2. 在 MMP 上启用 SMTP 代理。

    将字符串:

    msg_svr_base/lib/SmtpProxyAService@25|587

    添加到 msg_svr_base/config/AService.cfg 文件的 ServiceList 选项中。该选项是一个长行并且不能包含换行。


    注 –

    升级 MMP 后,将生成对应于 MMP 的四个现有配置文件的四个新文件。这些新文件为:

    AService-def.cfgImapProxyAService-def.cfgPopProxyAService-def.cfgSmtpProxyAService-def.cfg

    这些文件是由安装程序创建的,文档中说明的四个配置文件并非由安装过程创建或受其影响。启动 MMP 后,它将查找标准配置文件(如当前所记录的)。如果未查找到标准配置文件,则 MMP 将尝试复制具有相应 *AService.cfg 文件名的各个 *AService-def.cfg 文件。


  3. 在每个 SMTP 中继服务器上的 SMTP 通道选项文件 tcp_local_option 中设置 PROXY_PASSWORD 选项。

    SMTP 代理连接到 SMTP 服务器后,此代理必须通知 SMTP 服务器真实的客户机 IP 地址和其他连接信息,以便 SMTP 服务器可以正常应用中继阻塞和其他安全策略(包括 POP before SMTP 验证)。此为安全敏感操作并且必须经过验证。在 MMP SMTP 代理和 SMTP 服务器上都配置了代理密码,可以确保第三方无法滥用此设备。

    示例:PROXY_PASSWORD=A_Password

  4. 确保 MMP 用于连接到 SMTP 服务器的 IP 地址没有被 INTERNAL_IP 映射表视为“内部地址”。

    有关 INTERNAL_IP 映射表的信息,请参见第 17 章,邮件过滤和访问控制中的添加 SMTP 中继

  5. 将 SMTP 代理配置为支持 POP before SMTP。

    1. 编辑 msg_svr_base/config/SmtpProxyAService.cfg 配置文件。

      以下 SMTP 代理选项与 IMAP 和 POP 代理的相同选项在操作方面是相同的(请参见第 7 章,配置和管理多路复用器服务以及《Sun Java System Messaging Server 6 2005Q4 Administration Reference》中的“Encryption (SSL) Option”中有关这些选项的描述)。

      LdapURLLogDirLogLevel BindDNBindPassTimeoutBannerSSLEnableSSLSecmodFileSSLCertFileSSLKeyFileSSLKeyPasswdFileSSLCipherSpecsSSLCertNicknamesSSLCacheDirSSLPortsCertMapFileCertmapDNConnLimitsTCPAccess

      以上未列出的其他 MMP 选项(包含 BacksidePort 选项)目前没有应用到 SMTP 代理中。

      添加以下五个选项:

      SmtpRelays 是以空格分隔的 SMTP 中继服务器主机名(带有可选端口)列表,将用于循环中继。这些中继必须支持 XPROXYEHLO 扩展。此选项不必有默认设置。

      示例default:SmtpRelays manatee:485 gonzo mothra

      SmtpProxyPassword 是用于授权在 SMTP 中继服务器上更改源通道的密码。此选项是不带默认值的强制选项并且必须与 SMTP 服务器上的 PROXY_PASSWORD 选项相匹配。

      示例default:SmtpProxyPassword A_Password

      除了默认关键字集外,EhloKeywords 选项还为代理提供了可以传递给客户端的 EHLO 扩展关键字列表。MMP 将从 SMTP 中继所返回的 EHLO 列表中删除所有无法识别的 EHLO 关键字。EhloKeywords 指定了不应从列表中删除的其他 EHLO 关键字。默认设置为空,但是 SMTP 代理将支持以下关键字,所以无需在此选项中将其列出:8BITMIMEPIPELININGDSNENHANCEDSTATUSCODESEXPNHELPXLOOPETRNSIZESTARTTLSAUTH

      以下是一个由很少使用 "TURN" 扩展的站点使用的示例:

      示例default:EhloKeywords TURN

      PopBeforeSmtpKludgeChannel 选项设置为 MTA 通道的名称以用于经 POP before SMTP 授权的连接。默认设置为空,对于希望启用 POP before SMTP 的用户,其典型设置是 tcp_intranet。优化 SSL 性能时无需使用此选项(请参见如何使用 SMTP 代理服务器优化 SSL 性能)。

      示例 default:PopBeforeSmtpKludgeChannel tcp_intranet

      ClientLookup 选项的默认值为 no。如果设置为 yes,则系统将无条件地对客户端 IP 地址的 DNS 执行反向查找,因此 SMTP 中继服务器不必做此项工作,可以在每个托管的域基础上设置该选项。

      示例default:ClientLookup yes

    2. PopProxyAService.cfg 配置文件中设置 PreAuth 选项和 AuthServiceTTL 选项。优化 SSL 性能时不需要此选项。(请参见如何使用 SMTP 代理服务器优化 SSL 性能

      这些选项指定了用户经授权在 POP 验证后多少秒之内提交邮件。典型设置是 900 至 1800 秒(15 至 30 分钟)。

      示例


      default:PreAuth yes
      default:AuthServiceTTL 900
    3. 您可以根据需要指定在尝试列表中的下一个中继之前,MMP 将等待 SMTP 中继响应的秒数。

      默认设置是 10(秒)。如果连接 SMTP 中继失败,则在故障转移超时时间内 MMP 不会对此中继进行再次尝试(即,如果故障转移超时时间是 10 秒,并且中继失败,则在 10 秒之内 MMP 不会对此中继进行再次尝试)。

      示例default:FailoverTimeout 10

配置客户机对 SMTP 服务的访问

有关配置客户端对 SMTP 服务的访问的信息,请参见第 17 章,邮件过滤和访问控制

基于 SSL 的用户/组目录查找

对于 MTA、MMP 和 IMAP/POP/HTTP 服务,可能会基于 SSL 进行用户/组目录查找。前提是必须在 SSL 模式下配置 Messaging Server。设置以下 configutil 参数来启用此功能:将 local.service.pab.ldapport 设置为 636local.ugldapport 设置为 636local.ugldapusessl 设置为 1