您所在的位置: 首页 > 读书频道 > 操作系统 > Linux >

18.5.2 LDAP:轻量级目录访问协议

http://book.51cto.com  2008-04-22 09:37  [美]Evi Nemeth Garth Snyder Trent R.Hein  人民邮电出版社  我要评论(0)

18.5.2  LDAP:轻量级目录访问协议

LDAP是一种协议,它可提供到一般管理性目录服务的访问。它已经存在好几年了,但只是最近才开始流行。

管理员们正发现LDAP擅长许多事情。
sendmail配置:别名、虚拟域、邮件之家、数据库访问、以及表。
用户管理:登录名、口令、主机(例如,斯坦福大学)。
管理性配置文件(例如,SUSE)。
作为NIS的一种替代技术。
作为日历服务器。
与PAM(Pluggable Authentication Modules,可插入式身份验证模块)一起使用。

可以想象,LDAP最终将成为一种可以用于许多不同目的的全局目录系统。遗憾的是,仍然缺乏自动完成LDAP一般性系统管理任务的工具。

LDAP脱胎于ISO协议和X.500目录服务。这种继承关系立即使人想起复杂、臃肿、累赘、糟糕等,但LDAP中的L(轻量级)则要求考虑到所有这一切。该协议的第1版和第2版已经成为标准。第3版也已经接近完成。幸运的是,所有版本都是向后兼容的。LDAP协议第3版支持层次结构的服务器,为数据而查询一台服务器可以被引向另一台服务器。第2版支持层次结构的数据,但只有第3版才支持层次结构的服务器。

邮件别名特别适合于使用LDAP,尤其是现在sendmail的内部就支持LDAP,那么就更适合用它了。sendmail在查询LDAP服务器时可以进行别名查找,而不是直接查找它们。LDAP还可以管理邮件路由和虚拟域。对LDAP的支持必须编译到sendmail的二进制程序中。

如果您在寻找一个LDAP实现,我们推荐由www.openldap.org的OpenLDAP小组所提供的服务器程序。这个小组接管并增强了早期由密执安大学(University of Michigan)开发的一个服务器程序的代码。有关LDAP软件的更多信息请参考17.5节。

LDAP数据库的项类似于变量名更长的一个termcap项。LDAP数据库中的属性(变量名)尚未完全标准化,这种实际情况可能会导致不同LDAP实现之间的不兼容性。

一个数据库项的第一行上的属性由LDAP配置文件定义。本节中的例子假定此LDAP服务器守护进程(在OpenLDAP中是slapd)是用一个根的区别名(rootdn)来配置的:

"cn=root,  dc=synack,  dc=net"

dc属性出现了两次,因为域的组成部分不能包含一个点(.),为了表示域synack.net,就需要用两项。更进一步的属性,或者说变量名,可以是您希望的任何东西。它们不区分大小写。

sendmail(它的代码寻找具体的属性名称并赋予它们预先确定的解释)、LDAP服务程序和LDAP数据库的构造程序必须保持协调,使用相同的命名规则。

出现在一个数据库项(数据库关键字)的第一行的一些属性可能有:dn表示域名,dc表示域的成分,o表示某个机构的名称,c表示国家的名称,而uid表示唯一的ID(例如,一个登录名)。

sendmail使用LDAP服务器的方式非常像它使用DNS名字服务器的方式。sendmail要求DNS服务器把名字解析成IP地址,以便发送消息。它访问LDAP服务器是为了查出别名,以便可以把消息送到正确的地方。在上述两种情况下,查询操作都从纯文件(hosts和aliases)换到了数据库,而且由服务器来管理查询。
在默认情况下,sendmail认识下列LDAP数据标记:

mailLocalAddress
mailRoutingAddress
mailHost


8.12版的sendmail扩大了这项默认的设置(参见cf/sendmail.schema),也能让您定义自己的方案来使用您喜欢的任何LDAP标记。

下面的例子是OpenLDAP实现中的ldap.conf文件:

  

它支持以下形式的数据库项:

 

当已经在sendmail的配置文件中指定过FEATURE(ldap_routing)的时候,传入邮件的收件人要用mailLocalAddress字段来匹配。如果匹配,那么邮件就被重定向到mailRoutingAddress。objectClass一行必须要有—它来源于规定LDAP和邮件系统交互方式的RFC草案。

在主机gw.synack.net上,这个数据库项对应别名:

jon:  stabilej@cs.colorado.edu

有点儿啰嗦,不是吗?这些数据库的项可以代替aliases文件中的标准配置项,用来给每个用户定义其各自的邮件之家。

有些大单位已经把用户的供应信息(例如每个用户选用的邮箱)保存在另一个数据库里了。如果您的站点上就是这种情况,那么您或许想写一些简短的脚本,提取出这些信息,然后再送入LDAP。如果您的单位不大,那么可能想坚持采用传统的/etc/mail/aliases文件,或者写一个脚本从命令行生成正确的LDAP数据项。

aliases文件仍然是定义邮递列表(采用:include:指令)最好的方法。邮递列表软件一般把消息通过管道送给一个封装脚本(wrapper script),重新发送它。LDAP查询返回的别名指向:include:文件,或者诸如majordomo这样的程序,但是它不能直接调用一个程序。

至于8.12版的sendmail,LDAP也能用来保存sendmail的某些其他数据的内容(例如,表[table]和类[class])。参考18.9.10节了解有关配置sendmail使用LDAP的更多知识。

【责任编辑:夏书 TEL:(010)68476606】

回书目   上一节   下一节
系统应用日志分析管理
Linux——从菜鸟到高手
网络管理系统如何支撑ITSM
垃圾邮件新对策:远程定制托管服务
企业Web安全威胁在线评估系统
 
 验证码: (点击刷新验证码)   匿名发表
  • 网络工程师考试案例动手实验营

  • 作者:郭春柱
  • 本书依据2009年版《网络工程师考试大纲》的考核要求,深入研究了历年网络工程师考试试题的命题风格和试题结构,对考查的知识点..
Copyright©2005-2008 51CTO.COM 版权所有