了解如何通过外部标准的 LDAP 目录服务器中注册的用户、群组条目实现基于 Notes RPC 协议的 Domino 邮件系统的邮件路由。
现实需求
Lotus Lotus Domino/Notes 系统作为邮件系统和协作应用平台已经在众多企业中长期存在, 因其可定制性、开发性、可扩展性等诸多优势而成为用户 IT 部门技术环境中的重要系统。
然而随着近年来企业整合要求的不断增长,尤其是企业统一认证需求的不断提出, Domino 邮件系统中的用户目录(基于 names.nsf 数据库)成为了一个重要的技术讨论议题。和众多独立维护自身用户帐号的应用不同,Domino 系统目录本身是一个开放性的目录,其对 LDAP 协议的遵循也允许其成为企业集中目录的基础。但很多用户从技术现状和管理角度出发,则更希望使用完全独立的安全体系架构中的目录服务器来承担这项任务,例如 IBM Tivoli Direcotry Server。因此我们必须找到对应的方法来使用 LDAP 协议来进行邮件路由以及应用认证、授权。
![]() |
|
技术实现原理
早在 R5 版本,Domino 系统就支持 Directory Assistance 目录服务(DA),通过配置外部的目录服务条目(支持 LDAP 协议目录或 Domino 基于 Names.nsf 的用户目录),实现利用外部目录实现用户的认证和应用的授权。但当时的 DA 并不能够支持利用 LDAP 用户、群组条目实现邮件路由的目标。实现邮件路由,就必须让发送邮件的 Domino 服务器预先了解完整的邮件邮递过程。
这些信息中应包括目标用户的 Domino 网络域名称,Domino 服务器名称,Domino 邮件文件名称,以及源服务器与目标服务器直接的连接路径。 源服务器和目标服务器的连接是可以通过 Domino 目录中的连接文档来体现,而目标用户的网络域、服务器、邮件文件这三个要素由于都存在于用户条目中,由于用户信息都以 LDAP 用户条目的形式存在,所以在 Domino 目录中无法表示,只有通过对 LDAP 用户条目的属性扩展来实现。这三个要素分别对应于 LDAP 的三个属性(attribute):
- MailDomain
- MailServer
- MailFile
因此要实现以 LDAP 为用户目录的邮件路由就必须完成以下的工作:
- 配置外部的 LDAP 目录服务器
- 配置 LDAP 用户的条目的 schema,用以涵盖需要的属性
- 配置 LDAP 群组条目 Schema
- 创建 Domino 的目录服务数据库 da.nsf,将 Domino 的用户目录外部化
- 在 Domino 系统中创建用户邮件文件,并按照 LDAP 用户模式进行授权
- 配置 Domino 用户邮件位置重定向数据库,用以自动判断用户邮件文件位置
![]() |
|
环境准备
为实现上述的理论,我们构建了相应的测试环境用以验证。它包括以下组件:
- Lotus Domino 7.0.2 邮件服务器,作为邮件路由服务和邮件文件宿主服务
- IBM Tivoli Directory Server 6.0,作为目录服务
- WebSphere Application Server 5.1,用以承担 LDAP 目录服务器的配置和管理
在这里我们只配置了一台 Domino 邮件服务器,主要是因为跨服务器的邮件路由并非我们的验证目标,能够实现在同一台 Domino 服务器上的邮件路由,就可以完全验证我们的理论和对应的方法;而跨服务器的邮件路由则只需要依靠 Domino 目录中的相应连接文档就可以实现,而不需要 LDAP 中相关配置条目的支持。
![]() |
|
配置过程
在本例中,我们不再赘述 Domino 服务器、IDS 目录服务器、WAS 应用服务器及 IDS Web 管理模块的安装和配置过程。我们将集中讨论在邮件路由相关方面的设置和修改。
LDAP 用户条目配置过程
首先我们需要的是确定每个用户条目的 schema 和包含的属性内容。根据我们上述原理的描述,每个需要进行用户认证和邮件路由的用户条目应包含以下的必要属性。假设用户简称为 ldapuser05:
清单 1. ldapuser05 用户条目所包含的必要属性
|
其中需要说明的是:dn,userid,userpassword 是用户认证的基本属性,maildomain,mailserver,mailfile,mail 是邮件路由需要的基本属性;其中 mail 属性可以设置多值,可以分别表示该用户的 Notes 邮件地址和 Internet 邮件地址。
那我们应该选用什么 schema 或对象来承载这些属性呢?启动 IDS 服务器和 WebSphere 应用服务器,进入 IDS 的管理控制台,选择 shcema management,选择 attribute management,如图:
图 1. LDAP 用户条目属性管理
通过过滤条件查看以 mail 为开始的所有属性,我们可以看到这些属性所归属的 Object class 都包含的 eDominoAccount,而 userid 和 userpassword 则均属于 inetOrgPerson 如图:
图 2. LDAP 用户 shcema 选择
图 3. LDAP 用户 shcema 选择
为了配合本次的测试工作,我们还将和邮件相关的属性设置为 eDominoAccount 的必要属性,在 eDominoAccount 的属性选择界面中操作如图:
图 4. LDAP 用户必要属性选择
又由于 sn、cn 也是 inetOrgPerson 的基本必要属性,所以也需要添加,如图:
图 5. LDAP 用户必要属性选择
由此,我们可以确定一个基本用户的条目应以至少包含以下的内容:
清单 2. ldapuser05 用户条目的基本信息
|
我们可以直接通过管理界面,以 add an entry 的方式录入上述的条目属性从而添加一个用户,如图:
图 6. 添加一个 LDAP 用户条目
我们也可以更加简便地将上述信息直接编辑为文本文件,例如:user05.txt,通过指令方式加载信息,如图:
图 7. 添加一个 LDAP 用户条目
Domino 配置过程
让我们再回到 Domino 服务器的配置中,和传统的配置外部目录服务一样,我们会使用 Directory Assistance 模板 da.ntf 创建 da.nsf,并在 da.nsf 中创建一个 LDAP 目录服务的条目,其中 Domain 的名称定义为 ibmldap,并且将 Group Authorization 的选项改为”yes”启用,主要是为了后续对于群组邮件路由的支持。
图 8. 配置目录服务 DA
在具体 LDAP 的配置中,我们需要配置 LDAP 服务器的位置,进行用户信息查询所绑定的凭证信息,为提高查询效率,我们还需要指定搜索的基准条件。当然创建的 da.nsf 需要在对应服务器文档中的 Directory Assistance 数据库名称字段中申明。
图 9. 配置目录服务 DA
接下来,我们当然还需要在 Domino 邮件服务器上按照我们在 LDAP 条目中的定义,为 ldapuser05 这个用户创建邮件文件,并赋予相应的存取控制权限。注意我们创建的邮件文件所在服务器和文件位置,以及 Domino 服务器所属于的 Domino 网络域应和 LDAP 中的用户条目的各项属性保持完全一致。如图:
图 10. 创建邮箱
对我们手工创建的邮件文件,我们还需要进行授权。针对上述 ldapuser05 的用户的邮件文件,我们需要增加的授权条目是 uid=ldapuser05/cn=users/dc=ibm/dc=com,其用户类型为个人,权限为管理者。请务必注意在 Domino 系统中使用“/“为间隔符而不是 LDAP 目录中习惯使用的“,”。
图 11. 配置邮箱权限
依照上述的配置,我们可以再重复添加几个用户,例如 ldapuser04 等。
为使用方便,同时也可以进一步验证 Domino 对于 LDAP 集成的效果,我们可以选择 Domino WebAccess Redirect (iwaredir.ntf)模板作创建 mailred.nsf 作为用户邮件文件访问的统一入口。Mailred.nsf 会根据用户的登录情况自动判断用户邮件文件的所在位置,因此我们也可以由此判断 LDAP 中的配置信息是否可以被 Domino 服务器正确读取。如图:
图 12. 用户邮箱重定向
使用过程
通过 mailred.nsf,ldapuser04 用户经过认证后进入邮件处理界面。你可以看到对应的 URL 已经重定向到了正确的地址;点击新建邮件,ldapuser04 在 LDAP 中的真实身份,ldapuser04/users/ibm/com 也以 Domino 的格式正确地显示;我们可以选择用户目录,前期通过 da.nsf 配置的 ibmldap 作为一个独立的地址本供查询使用;我们通过字母 l 进行搜索,可以获得在 LDAP 目录中所有以 l 为开头的用户信息列表。如图:
图 13. 用户选择
选择 ldapuser05,我们会看到直接就会显示用户的邮件信息。由于我们为用户配置信息时,使用了多值的形式,即 [email protected] 和 [email protected] 都是合法邮件地址,而 [email protected] 居前,因此系统优先使用 Notes 邮件格式作为选择结果。如图:
图 14. LDAP 用户属性的体现
点击发送,在 Domino 邮件服务器控制台上,可以清楚地看到邮件已经成功地传递到了对应的用户,并存储到用户的邮件文件中去了。如图:
图 15. 邮件路由成功
图 16. 邮件存储到邮箱中
看起来是大功告成了,但我们需要进一步考虑的是,是否 LDAP 协议也支持使用群组的方式进行邮件路由呢?让我们继续参看 LDAP 群组配置过程。
LDAP 群组配置过程
群组是多个用户信息的集合,在群组对象中,每个用户的描述使用的属性是 uniqueMember。在 LDAP 服务管理端,我们可以选择对应的 objectClass 是 groupOfUniqueNames。如图:
图 17. 配置 LDAP 群组 schema
依然我们可以通过 add an entry 添加一条群组条目 cn=ldapgroup01,cn=groups,dc=ibm,dc=com,其中包含连个用户条目,uid=ldapuser04,cn=users,dc=ibm,dc=com 和 uid=ldapuser05,cn=users,dc=ibm,dc=com。如图:
图 18. 添加 LDAP 群组条目
LDAP 群组使用
依然进入邮件收发界面,创建新邮件,选择用户。这次我们直接输入“ldapgroup“作为前缀,点击
进行查询,我们可以获得所有以 ldapgroup 为开始的条目(包括用户和群组)。如图:
图 19. 选择 LDAP 群组条目
选择 ldapgroup01,准备好邮件内容,点击发送。我们在服务器控制台上可以清楚地看到邮件已经成功地发送到了群组中包括的两个用户那里。如图:
图 20. 群组邮递成功
至此,我们就 Domino 使用 LDAP 目录协议进行邮件路由的配置过程结束。
![]() |
|
重要的意义
其实在写这篇文章之前,已经有不少的用户来咨询过相关的问题和实现方法,我觉得可以完全理解用户的需求和对于 IT 技术架构统一的设想。一方面我们推荐正在使用 Domino 邮件和应用系统的用户可以积极地利用 Domino 目录可以发布为 LDAP 目录的技术特性,通过扩展和修改相应的 Schema 和属性条目,来实现企业的统一用户目录;同时我们也支持用户在以其他产品建立了统一的 LDAP 目录的条件下,利用对外部目录的集成配置,在 Domino 应用系统和邮件系统中实现用户认证、授权和邮件路由。从而实现所谓 Domino 系统中“零用户(除管理员外)”的概念。
这种实现对于完善企业的安全架构,特别是实现企业范围内的统一身份管理,统一认证管理,和多应用系统的单一登录(SSO)具有重要的基础意义,从而可以大大简化身份管理中多目录同步、修改过程中的种种复杂的技术实现过程。