首页 | 邮件资讯 | 技术教程 | 解决方案 | 产品评测 | 邮件人才 | 邮件博客 | 邮件系统论坛 | 软件下载 | 邮件周刊 | 热点专题 | 工具
网络技术 | 操作系统 | 邮件系统 | 客户端 | 电子邮箱 | 反垃圾邮件 | 邮件安全 | 邮件营销 | 移动电邮 | 邮件软件下载 | 电子书下载

邮件服务器

技术前沿 | Qmail | IMail | MDaemon | Exchange | Domino | 其它 | Foxmail | James | Kerio | JavaMail | WinMail | Sendmail | Postfix | Winwebmail | Merak | CMailServer | 邮件与开发 | 金笛 |
首页 > 邮件服务器 > Exchange Server > MS Exchange 5.5 环境中的 Active Directory 服务接口 > 正文

MS Exchange 5.5 环境中的 Active Directory 服务接口

出处:微软 作者:微软 时间:2005-9-10 0:19:00
有了 Active Directory 服务接口 (ADSI),就可以使用 Microsoft Visual Basic 编程系统、Java、C 或 Visual C++ 开发系统等高级工具方便地创建支持目录的应用程序,而无须担心不同目录实现或命名空间的潜在差异。即您可以生成应用程序,通过一个点访问网络环境中的多个目录,无论这些目录是基于 LDAP、NDS 还是 NTDS。

Microsoft® Exchange 5.5 是可扩展的、可靠且安全的消息传递平台。Microsoft Exchange 5.5 目录服务支持轻型目录访问协议 (LDAP) 第三版。可以将 ADSI 与 LDAP 提供程序一起使用,处理 Microsoft Exchange 5.5 目录中的任何对象。管理员和开发人员使用这一功能以及协作数据对象 (CDO),可以高效率地编写功能强大的协作应用程序或管理工具。CDO 以前被称为 Active Messaging,它提供处理消息和日历对象的对象接口以及提交和检索此类对象。

本文有助于应用程序开发人员使用 Exchange 5.5 目录服务上的 ADSI,编写支持目录的应用程序。

ADSI 和 LDAP

ADSI 为目录对象提供 COM 接口。ADSI 建立在基于提供程序的模型之上,在提供程序映射基础目录系统和 ADSI 客户端显现的 COM 接口的同时,客户端与 ADSI 所显现的 COM 接口进行交互。在 NDS 目录中创建或更改用户的 ADSI 应用程序,可用于在 Exchange 5.5 目录中创建用户。另一方面,LDAP 是用于目录访问的有线协议。所以,LDAP 应用程序仅限访问显现 LDAP 协议的目录。

既然 ADSI 是一组 COM 对象,因此可方便地用于 VB 或 Java 脚本,使基于 Web 的应用程序支持目录。而使用基于‘C’的 LDAP API 完成这一操作就要困难得多。

ADSI 和 ADO

ADO 用于在目录中执行搜索,并以表格形式给出结果。另一方面,ADSI 用于更改目录中的项。通常,使用 ADO 搜索一个或多个对象,然后在结果集中反复查找,并更改所指定的对象。在下面的示例中给出了 ADSI 和 ADO 的用法。

Microsoft Exchange 目录架构

为了编写在 Exchange 目录上使用 ADSI 的应用程序,必须对目录架构有一定的了解。该架构定义了目录中的对象类、对象类之间的关系、每个对象类的属性以及属性和类的特性。使用 Exchange Administration 程序,您可以查看 Exchange 目录架构。若要执行此操作:

  • 在 RAW 模式下运行 Exchange Admin (admin /r)。
  • 从菜单上选择“View.Raw Directory”。
  • 从左窗口中选择“Schema”。
  • 从右窗口双击代表相关属性或对象类的对象。

在 ADSI 支持中有以下三个重要的属性:

Heuristic

Heuristic 属性的解释如下:

第 0 位

0:在站点间复制


1:不在站点间复制

第 1 位

0:属性对于 LDAP 不可见


1:属性对于匿名的和已验证的 LDAP 客户端可见

第 2 位

0:已验证的客户不能访问属性


1:已验证的客户可以访问属性(但匿名客户不可以)

第 3 位

0:属性不是操作属性


1:属性是操作属性

第 4 位

0:属性在 Admin UI 中不可见(DS Site Configuration 对象的属性页)


1:属性在 Admin UI 中可见(DS Site Configuration 对象的属性页)

查看 Heuristic 值,就可以确定特定属性是否可见。例如,Heuristic 值为 3 说明该属性不能在站点间复制,且对于匿名 LDAP 客户可见。

Heuristic 值为 11 说明该属性为操作属性,且对于已验证的 LDAP 客户端可见。操作属性(设置了 Heuristic 位 3 的属性)对 ADSI 不可见,即使可以设置其值,也是如此。要获得操作属性的值,必须使用 ADO 查询,如下例所示。注意:更改 Heuristic 属性位 0 的值,可能会使目录复制停止。不应更改某一属性的 Heuristic 特性的这一位。

ACL:

ACL 属性决定了用户更改属性所需的权限。ACL 属性值的定义如下:

0:只有系统可以更改该属性

1:有更改管理权限的用户可以更改该属性

2:有更改用户权限的用户可以更改该属性

3:有更改许可权限的用户可以更改该属性

说明

说明确定了属性或类的 LDAP 名称。

注意 更改 LDAP 名称将出现互操作性问题。

常用对象类

下面给出了常用对象类及其最重要的属性。下表中的列解释如下:

LDAP 名称:通过 LDAP 显现的属性名称(Exchange 架构中对该属性的说明)

Exchange 名称:在 Exchange 架构中该属性的名称

Mandatory:对象的属性是强制的还是非强制的

Heuristic:属性的 heuristic 值,如上所述。

ACL:属性的访问类别如上所示。

语法:属性的语法。

Boolean:布尔型语法的属性的值为 TRUE 或 FALSE

Integer:任何整数值

String(Unicode):Unicode 字符串

String(Numeric):数字字符串

String(Octet):二进制字符串。根据 LDAP,使用二进制表示的字符串编码,支持二进制属性。

Object(DS-DN):采用 rfc1779 格式的 DN(如cn=jsmith,ou=redmond,o=microsoft,c=us)

注释:关于该属性的注释。

Mail-Recipient(个人)对象类

Mail-Recipient 对象类通过 LDAP 显现为‘个人’对象类。该对象类可由邮件能发送到的所有对象类继承,例如邮箱、自定义收件人、通讯组和公用文件夹。值得指出的是该对象类是抽象的。所以您不能创建该对象类的实例。定义它只是为了让目录中的其它对象类继承其属性。下表给出了‘个人’对象类上常用的属性:

Exchange 名称
Mandatory
Heuristic
ACL
语法
注释
Common-Name

Y

2

1

String(Teletex)

公用名称(该对象的 RDN)

Display Name

N

2

1

String(Unicode)

地址簿所显示的字符串

Language-ISO639

N

3

2

String(Unicode)

ISO639 语言

LabeledURI

N

5

2

String(Unicode)

指定默认 HTML Web 页的 URL

Voice-Mail-
Recorded-Name

N

13

2

String(Octet)

语音邮件用户的别名

Voice-Mail-
Password

N

13

2

String(Unicode)

代表用户帐户安全代码的 DTMF 数字

Voice-Mail-
Greetings

N

13

2

String(Unicode)

语音邮件用户所录制的问候语

Voice-Mail-
User-ID

N

13

2

String(Unicode)

代表用户帐户的 DTMF 数字(如电话分机)

MAPI-Recipient

N

18

1

Boolean

向网关表明其是不是 MAPI 收件人(True=是,False=否)

Proxy-Addresses

N

18

1

String(Teletex)

该收件人的外部邮件系统的地址列表。该属性按如下方式显现:主 SMTP 地址 - 邮件主 X.400 地址 - textEncodedORAddress 其它地址 - otherMailbox

Display-Name-
Printable

N

18

1

String(Printable)

此‘显示名称’的可打印字符串版本。

Mail-nickname

N

18

1

String(Unicode)

邮件昵称

Comment

N

18

2

String(Unicode)

该收件人在 Exchange 地址簿中的注释。

WWW-Home-
Page

N

18

2

String(Unicode)

与该项相关的 WWW 主页

X509-Cert

N

18

2

String(Octet)

用户的 X.509 v3 证书

Extension-
Attribute-9

N

20

1

String(Unicode)

供客户使用的通用扩展属性

Extension-
Attribute-1

N

20

1

String(Unicode)

供客户使用的通用扩展属性

Extension-
Attribute-10

N

20

1

String(Unicode)

供客户使用的通用扩展属性

Extension-
Attribute-2

N

20

1

String(Unicode)

供客户使用的通用扩展属性

Extension-
Attribute-3

N

20

1

String(Unicode)

供客户使用的通用扩展属性

Extension-
Attribute-4

N

20

1

String(Unicode)

供客户使用的通用扩展属性

Extension-
Attribute-5

N

20

1

String(Unicode)

供客户使用的通用扩展属性

Extension -
Attribute -6

N

20

1

String(Unicode)

供客户使用的通用扩展属性

Extension-
Attribute-7

N

20

1

String(Unicode)

供客户使用的通用扩展属性

Extension-
Attribute-8

N

20

1

String(Unicode)

供客户使用的通用扩展属性

Extension-
Attribute-15

N

21

1

String(Unicode)

供客户使用的通用扩展属性

Extension-
Attribute-11

N

21

1

String(Unicode)

供客户使用的通用扩展属性

Extension-
Attribute-12

N

21

1

String(Unicode)

供客户使用的通用扩展属性

Extension-
Attribute-14

N

21

1

String(Unicode)

供客户使用的通用扩展属性

Extension-
Attribute- 13

N

21

1

String(Unicode)

供客户使用的通用扩展属性

Mailbox (organizationalPerson) Object Class

Mailbox 对象类通过 LDAP 显现为 organizationaPerson 对象类。该对象类代表在 Microsoft Exchange 系统中包含邮件存储的一个对象。Mailbox 对象的一个关键属性是 Assoc-NT-Account,它包含对该邮箱有访问权限的 NT 帐户的安全标识符 (SID)。

LDAP 名称
Exchange 名称
Mandatory
Heuristic
ACL
语法
注释
mail Preference Option

Delivery-
Mechanism

Y

4

1

Integer

该邮箱接收邮件所使用的机制。该属性应设置为 0。

personal Title

Personal-
Title

N

3

2

String (Unicode)

称呼(先生、夫人等)

Assoc- NT-
Account

Assoc- NT-
Account

N

12

1

String (Octet)

与该邮箱相关的主 NT 帐户

street

Street-
Address

N

12

1

String (Unicode)

实际街道地址

generation Qualifier

Generation-
Qualifier

N

13

1

String (Unicode)

代限制符,例如老、小、第四代等

house Identifier

House- Identifier

N

13

1

String (Unicode)

位于某个地点的建筑物

Company

Company

N

18

1

String( Unicode)

邮箱所有人所在的公司

department

Department

N

18

1

String(Unicode)

该收件人所在的部门。

givenName

Given-Name

N

18

1

String (Unicode)

指定邮箱所有人的名

international ISDNNumber

International ISDN Number

N

18

1

String (Numeric)

与该邮箱相关的 ISDN 号码

manager

Manager

N

18

1

Object (DS-DN)

该收件人的‘管理员’。

physical Delivery OfficeName

Office

N

18

1

String (Unicode)

例如 1/1061

sn

Last Name

N

18

1

String (Unicode)

指定邮箱所有人的姓

st

State Or Province Name

N

18

1

String (Unicode)

用户所在的州或省

teletex Terminal Identifier

Teletex Terminal-
Identifier

N

18

1

String (Octet)


title

Title

N

18

1

String (Unicode)

邮箱所有人的职务

X121-
Address

N

18

1

String (Numeric)


x121 地址


Telephone-
Office2

N

18

2

String (Unicode)

邮箱所有人的办公室电话号码 (2)

co

Text- Country

N

18

2

String (Unicode)

用户所在的国家/地区

facsimile Telephone Number

Telephone-
Fax

N

18

2

String (Unicode)

邮箱所有人的传真号码

homephone

Home phone number

N

18

2

String (Unicode)

邮箱所有人的家庭电话号码

initials

Initials

N

18

2

String (Unicode)

用户名称的缩写

l

City

N

18

2

String (Unicode)

用户所在的位置/城市

mobile

Mobile number

N

18

2

String (Unicode)

邮箱所有人的移动电话号码

pager

Pager number

N

18

2

String (Unicode)

邮箱所有人的呼机号码

postal Address

Address

N

18

2

String (Unicode)

邮箱所有人的街道地址

postal Code

Postal code

N

18

2

String (Unicode)

邮政编码

secretary

Assistant

N

18

2

String (Unicode)

邮箱助理显示名称

telephone Number

Phone number

N

18

2

String (Unicode)

邮箱所有人的办公室电话号码 (1)

telex Number

Telex Number

N

18

2

String(Octet)


employee Number

Employee Number

N

21

1

String (Unicode)

职员编号

employee Type

Employee Type

N

21

1

String (Unicode)

职员类型

homeFax

Telephone Home- Fax

N

21

2

String (Unicode)

家庭传真号码

home Postal Address

Address Home

N

21

2

String (Unicode)

家庭住址

personal Mobile

Telephone Personal-
Mobile

N

21

2

String (Unicode) 手机号码


personal Pager

Telephone Personal Pager

N

21

2

String (Unicode)

呼机号码

Custom-Recipient(自定义收件人)

Custom-Recipient 对象类通过 LDAP 显现为 custom-recipient 对象类。该对象类包含上述 organizationalPerson 对象类中除 mailPreferenceOption 之外的所有属性。Custom-Recipient 对象类还包含一个额外的、带有下列特性的强制属性:

LDAP 名称
Exchange 名称
Mandatory
Heuristic
ACL
语法
注释
Target Address

E-Mail Address

Y

18

1

String (Unicode)

收件人的实际地址(该地址的格式为 <地址类型> : <值>,如 SMTP :jsmith@org. com

Distribution-List

Distribution-List 对象类通过 LDAP 显现为 groupOfNames 对象类。其属性为:

LDAP 名称
Exchange 名称
Mandatory
Heuristic
ACL
语法
注释
Company

Company

FALSE

18

1

String (Unicode)

主要用于 AB 视图分组

department

Department

FALSE

18

1

String (Unicode)

主要用于 AB 视图分组

physical Delivery Office Name

office

FALSE

18

1

String (Unicode)

主要用于 AB 视图分组

st

State-Or-
Province-
Name

FALSE

18

1

String (Unicode)

主要用于 AB 视图分组

title

Title

FALSE

18

1

String (Unicode)

主要用于 AB 视图分组

co

Text-Country

FALSE

18

2

String (Unicode)

主要用于 AB 视图分组

l

City

FALSE

18

2

String (Unicode)

主要用于 AB 视图分组

Hide-DL-
Membership

Hide- DL-
Membership

FALSE

20

1

Boolean

指出成员资格是否应对客户隐藏(默认值为 FALSE)。

owner

Owner

FALSE

20

1

Object(DS-DN)

拥有该通讯组的邮箱 DN。

member

Members

FALSE

20

2

Object(OR-Name)

通讯组成员的 DN 列表

通过 ADSI 检索增量更改

在某些应用程序(如目录同步服务)中,从 Exchange 目录获得增量更改是非常重要的。通过查找 Exchange 目录上每个对象的下列操作属性,就可实现这一目的。

USN-Changed:每次更改对象时,Exchange 目录将该整数加 1(删除与对该对象的任何其它更改一样对待);USN-Created:该整数表明在 Exchange 目录中创建此对象的时间。When-Changed:更改对象的 UTC 时间;When-Created:创建对象的 UTC 时间

通过查询 USN-Changed/Created 或 When-Changed/Created,应用程序可获得自上次轮询更改以来,在 Exchange 目录中所做的更改。

任何已验证的用户均可使用这些属性。

通过 ADSI 检索已删除的对象

检索已删除对象的功能与从 Exchange 目录检索增量更改一样重要。使用明文验证,并将“,cn=admin”附加到用户 DN 的后面(如 dc=domain,cn=jsmith,cn=admin),即可实现该操作。

将“,cn=admin”加到用户 DN 中,并对 Exchange Directory 验证客户时,就能查询称为“is-deleted”的操作属性。该属性是布尔型属性,它表明该对象是否已被删除。已删除对象被称为“逻辑删除”。逻辑删除保存的时间由 Microsoft Exchange Admin 程序中 DS Site Configuration 属性页上“Tombstone lifetime”参数给出。默认情况下,“Tombstone lifetime”设置为 30 天。如果应用程序从 Exchange Directory 获得删除的内容,则确保其在“Tombstone lifetime”期限内运行。

ADSI 示例

本节包含几个 ADSI 示例,它们给出了对 Exchange 目录的验证,查找使用 ADO 的对象,并处理使用 ADSI 的对象。

通讯组管理器

下面的代码将创建一个通讯组,并将 ADO 查询所找到的用户加入到通讯组中:

显式选项

Dim strDisplayName

' DL's Display name

Dim strAliasName

' DL's Alias name

Dim strDirectoryName

' DL's Directory name

Dim strUserName

' User's logon name and domain

Dim strPassword

' User's domain password

Dim strServer

' Exchange server name

Dim strOrganization

' Exchange Organization

Dim strSite

' Exchange SiteDim str

RecipientsPath

' ADsPath to the Recipients Container

Dim strMSPrivMDBPath

' ADsPath to the MS Private MDB

Dim objRecipients

' Recipients Container object

Dim objMSPrivMDB

' MS Private MDB object

Dim objNewDL

' new distribution list object

Dim strMail

' mail address of the MS Private MDB object

Dim intPos

' numeric position of the '@' in an SMTP address

Dim strSMTPExt

' SMTP domain type (ie. com, org, etc...)

Dim strSMTPAddr

' new DL's SMTP address

Dim aOtherMailbox(1)

' other addresses created (ie. MSMail, CCMail)

Dim strx400Addr

' new DL's X400 address

Dim objMyIADs

' ADSI object

' used by the PutEx method to set a muti-valued property
Const ADS_PROPERTY_UPDATE = 2
strDisplayName = "BellevueDL"
strAliasName = "BellevueDL"
strDirectoryName = "BellevueDL"

strUserName = "dc=redmond, cn=v-sparke"
strPassword = "password"

strServer = "sparker1"
strOrganization = "16"
strSite = "3081"

Set objMyIADs = GetObject("LDAP:")

下列代码确定了域地址的扩展名,方法是查找 Microsoft Private MDB 对象的“mail”属性:

strMSPrivMDBPath = "LDAP://" + strServer + "/cn=Microsoft Private MDB,cn=" + strServer + ",cn=Servers ,cn=Configuration,ou=" + strSite + ",o=" + strOrganization

此应用程序使用‘OpenDSObject’方法访问目录对象。用户的登录域、名称和密码以参数的形式传递。值为 0 表示 ADSI LDAP 提供程序将进行简单的绑定:

Set objMSPrivMDB = objMyIADs.OpenDSObject(strMSPrivMDBPath, strUserName, strPassword, 0)
objMSPrivMDB.GetInfo
strMail = objMSPrivMDB.Get("mail")
intPos = InStr(strMail, "@")
strSMTPExt = Mid(strMail, intPos, Len(strMail))

下列代码生成 SMTP、MSMAIL、CCMAIL 和 X400 地址。‘US’被硬编码到 X400 地址中。可以解析 MS Private MDB 对象的‘textEncodedORaddress’属性,以确定正确的 X400‘寻址’方案:

strSMTPAddr = replace(strAliasName, " ", "") + strSMTPExt
aOtherMailbox(0) = CStr("MS$" + strOrganization + "/" + strSite + "/" + strAliasName)
aOtherMailbox(1) = CStr("CCMAIL$" + strAliasName + " at " + strSite)
strx400Addr = "c=US;a= ;p=" + strOrganization + ";o=" + strSite + ";s=" + strAliasName + ";"

strRecipientsPath = "LDAP://" + strServer + "/cn=Recipients,ou=" + strSite + ",o=" + strOrganization
Set objRecipients = objMyIADs.OpenDSObject(strRecipientsPath, strUserName, strPassword, 0)

本代码创建通讯组:

Set objNewDL = objRecipients.Create("groupOfNames", "cn=" + strDirectoryName)

注意,在 VBScript 中,必须使用 CStr() 字符串值正确地设置 ADSI 数据的格式:

objNewDL.Put "cn", CStr(strDisplayName)
objNewDL.Put "uid", CStr(strAliasName)
objNewDL.Put "distinguishedName", CStr("cn=" + strAliasName + ",cn=Recipients,ou=" + strSite + ",o=" + strOrganization)
objNewDL.Put "mail", CStr(strSMTPAddr)

本代码创建多值属性。在 VBScript 中,必须使用括号取消对数组的引用:

objNewDL.PutEx ADS_PROPERTY_UPDATE, "otherMailbox", (aOtherMailbox)

objNewDL.Put "Report-To-Originator", True
objNewDL.Put "Report-to-Owner", False
objNewDL.Put "Replication-Sensitivity", CInt(20)
objNewDL.Put "rfc822Mailbox", CStr(strSMTPAddr)
objNewDL.Put "textEncodedORaddress", CStr(strx400Addr)
objNewDL.SetInfo

Response.Write "DL Created Successfully!<BR><BR>"

下列代码将在 Exchange 目录服务中查找其‘City’属性与搜索条件匹配的邮箱。‘City’属性的 ADSI LDAP 名称是‘l’。

Dim objADOconn' ADO connection objectDim strADOQueryString' ADO query stringDim objRS ' recordset objectDim strCriteria ' value used to search the directory treestrCriteria = "Bellevue"

Set objADOconn = CreateObject("ADODB.Connection")
objADOconn.Provider = "ADSDSOObject"
objADOconn.Open "ADs Provider"
strADOQueryString = "<LDAP://" + strServer + ">;(&(objectClass=organizationalPerson)(l=" + strCriteria + "));cn,adspath;subtree"
Set objRS = objADOconn.Execute(strADOQueryString)
If Not objRS.EOF Then
While Not objRS.EOF
objNewDL.Add objRS.Fields(1).Value
Response.Write objRS.Fields(0) + " added :)<BR>"
objRS.MoveNext
Wend
Else
Response.Write "No mailboxes were added to the DL :(<BR>"
End If
objRS.Close

Phone List

本代码将更改邮箱的电话号码属性。默认情况下,所有用户都有更改其邮箱上该属性的权限。

下列代码将使浏览器弹出用户标识对话框。IIS 服务器的密码验证只能设置为‘Allow Anonymous’和‘Basic (Clear Text)’。这样,浏览器在使用‘GetObject’方法时,就能使用正确的安全上下文。

Dim strAT ' Authorization Type information

strAT = Request.ServerVariables("AUTH_TYPE")
If InStr(1, "_BasicNTLM", strAT, 1) < 2 Then
Response.Buffer = True
Response.Status = ("401 Unauthorized")
Response.End
End If

Dim strMailboxPath' ADsPath to the user's mailboxDim strServer' name of the Exchange 5.5 serverDim intPosPrefix' numeric index used used to build ADsPath to schema objectDim intPosSuffix' numeric index used used to build ADsPath to schema objectDim strPrefix' prefix string used to build ADsPath to schema objectDim strSuffix' suffix string used to build ADsPath to schema objectDim strPathToSchemaObject' ADsPath to the schema objectDim objMailbox' mailbox objectDim strNewPoneNumber' value of the new phone number

Function isUserEditable(strSchemaObjectPath)
Dim objSchemaObject' schema objectDim intValue' value of the 'Access-Category' propertySet objSchemaObject = GetObject(strSchemaObjectPath)intValue = objSchemaObject.Get("Access-Category")If intValue = 2 Then' user may modify the mailbox propertyisUserEditable = TrueElse' the value was 0, 1, or 3 isUserEditable = False
End If
End Function

本过程将更改包含字符串数值的对象属性。要将属性设置为空字符串,必须将其从对象中删除:

Sub ModifyProperty(strNewValue, strADsProperty)
On Error Resume Next

If Len(strNewValue) <> 0 Then
objMailbox.Put strADsProperty, CStr(strNewValue)

Else ' The new value is empty
objIADs.Get (strADsProperty)

'If the property doesn't exist on the object, an error will be generated using the Get method:

If Err.Number = 0 Then' the property exists on the object and must be removed objMailbox.PutEx ADS_PROPERTY_CLEAR, strADsProperty, CStr(" ")
End If
Err.Clear
End If
End Sub

Const ADS_PROPERTY_CLEAR = 1' used by the PutEx method to clear a property from an objectstrMailboxPath = "LDAP://SPARKER1/cn=SParker,cn=Recipients,ou=3081,o=16"
strServer = "sparker1"
strNewPoneNumber = "(425) 882-8080 x 13882"
intPosPrefix = InStr(strMailboxPath, "/cn")
intPosSuffix = InStr(strMailboxPath, "ou")
strPrefix = Mid(strMailboxPath, 1, intPosPrefix - 1) + "/cn="
strSuffix = ",cn=Microsoft DMD," + Mid(strMailboxPath, intPosSuffix, Len(strMailboxPath))
strPathToSchemaObject = strPrefix + "Telephone-Office1" + strSuffix
If isUserEditable(strPathToSchemaObject) Then
Set objMailbox = GetObject(strMailboxPath)
ModifyProperty strNewPoneNumber, "telephoneNumber"
objMailbox.SetInfo ' save the object information
Response.Write "Phone number modified successfully :)<BR>"
Else
Response.Write "You don't have permissions to modify your phone number :(<BR>"
End If
%>

ADSI 的局限

ADSI 尚不能处理访问控制列表 (ACL),后者包含有关哪个用户有某个对象权限的安全信息。它不能获取 Windows NT 安全标识符 (SID),SID 是用户帐户名的二进制表示,因而无法设置创建用户权限所需的位。开发人员无法只通过 ADSI 创建实用的邮箱对象,这是因为邮箱对象要求在 Assoc-NT-Account 属性中设置 NT 帐户 SID,以及在 NT-Security-Descriptor 属性中设置邮箱对象的正确安全权限。预计在以后的版本中会提供处理 ACL 的功能。

使用 ADSI 增强 Exchange

有了 ADSI,开发人员无须再开发目录专用的 API,使管理功能更灵活、更方便。例如,目录专用的 API 可能要求管理员在 Active Server 页上键入安全密码和域,从而将其暴露在危险之中。与此相反,ADSI 对象强制 Web 浏览器提示管理员输入这些信息。

一旦开发人员学会了 ADSI 规则,则可以方便地编写 LDAP 路径名,并指定对象的类和属性。Exchange 5.5 将弹出一个 ADSI 页,允许开发人员在相应的 Exchange Server 中键入,将其从注册表中抽出,并添加到服务器字段中。使用 ADSI 对象,他们可以开发各种使用方便的应用程序。例如,开发人员可以编写 Web 服务器脚本,允许浏览器查找不同目录中用户的详细情况; 或者创建通讯组管理器,后者在不同目录中创建用户的通讯组。或者指定打印机队列的访问特权。正是由于 ADSI 灵活多变的特点,它可获得广泛的应用。

结论

ADSI 旨在为不同种类的目录服务提供一个一致的、开放的接口集,它为当今迅猛发展的企业网络和 Intranet 打下了非常重要的基础。另外,Exchange 管理员和开发人员还可使用它编写应用程序;将基于 Exchange 目录访问编程接口 (DAPI) 的应用程序移植到 ADSI。这些应用程序将在 Exchange 5.5 环境下运行;稍作更改甚至不经更改就可以在 NT 5 Active Directory 上运行。因此,Exchange 开发人员和管理员在有效地开发支持目录的应用程序的同时,可以更方便地与更改保持同步。

其它信息

有关详细信息,请访问下列 Web 站点:

ftp://ds.internic.net/internet - 草案 - 包括 LDAPV3 协议的 Internet 草案

http://www.microsoft.com/ntserver - ADSI 和 NT 5 Active Directory

http://www.microsoft.com/msdn - 用于开发人员的 Microsoft 技术大全

© 1998 Microsoft 和/或其提供商。版权所有。使用条款。

相关文章 热门文章
  • Outlook 2003与Exchange 2010结合使用中可能出现的问题及建议的解决方法
  • 在配置完 Exchange Server 2010 CAS Array后需要做的两件事
  • 如何通过Exchange2010 OWA更改过期密码
  • Windows server 2008 R2上安装exchange 2010注意的问题
  • 关于Exchange数据库文件过大的正确处理方法
  • Exchange 2007 HUB服务器默认证书过期解决办法
  • Exchange 2010 SP1个人邮件归档配置
  • 邮件系统双雄PK: TurboMail vs Exchange
  • 利用Windows Server Backup备份Exchange 2010 DAG
  • Exchange Server 2010与RMS集成
  • Exchange Server 2010 跨组织移动邮箱
  • 配置Exchange 2010+Outlook 2010自动发现功能
  • Exchange 2000 Server 常见问题(四)
  • Exchange 2000 Server 常见问题(一)
  • Exchange 2000 Server 常见问题(三)
  • Exchange 2000 Server 常见问题(五)
  • Exchange 2000 Server 常见问题(二)
  • 部署Exchange Server 2003问题集(1)
  • Telnet到端口25以测试SMTP通信
  • 限制Exchange用户从Internet收发邮件
  • Exchange Server管理与设定(一)
  • 使用Exchange 2000 Server 构建多域名邮件系统
  • 虚拟内存碎片的检测和EXCHANGE的内存优化
  • Exchange Server 公用程序(一)
  • 自由广告区
     
    最新软件下载
  • SharePoint Server 2010 部署文档
  • Exchange 2010 RTM升级至SP1 教程
  • Exchange 2010 OWA下RBAC实现的组功能...
  • Lync Server 2010 Standard Edition 标..
  • Lync Server 2010 Enterprise Edition...
  • Forefront Endpoint Protection 2010 ...
  • Lync Server 2010 Edge 服务器部署文档
  • 《Exchange 2003专家指南》
  • Mastering Hyper-V Deployment
  • Windows Server 2008 R2 Hyper-V
  • Microsoft Lync Server 2010 Unleashed
  • Windows Server 2008 R2 Unleashed
  • 今日邮件技术文章
  • 腾讯,在创新中演绎互联网“进化论”
  • 华科人 张小龙 (中国第二代程序员 QQ...
  • 微软推出新功能 提高Hotmail密码安全性
  • 快压技巧分享:秒传邮件超大附件
  • 不容忽视的邮件营销数据分析过程中的算..
  • 国内手机邮箱的现状与未来发展——访尚..
  • 易观数据:2011Q2中国手机邮箱市场收入..
  • 穿越时空的爱恋 QQ邮箱音视频及贺卡邮件
  • Hotmail新功能:“我的朋友可能被黑了”
  • 入侵邻居网络发骚扰邮件 美国男子被重..
  • 网易邮箱莫子睿:《非你莫属》招聘多过..
  • 中国电信推广189邮箱绿色账单
  • 最新专题
  • 鸟哥的Linux私房菜之Mail服务器
  • Exchange Server 2010技术专题
  • Windows 7 技术专题
  • Sendmail 邮件系统配置
  • 组建Exchange 2003邮件系统
  • Windows Server 2008 专题
  • ORF 反垃圾邮件系统
  • Exchange Server 2007 专题
  • ISA Server 2006 教程专题
  • Windows Vista 技术专题
  • “黑莓”(BlackBerry)专题
  • Apache James 专题
  • 分类导航
    邮件新闻资讯:
    IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮
    电子邮箱 | 反垃圾邮件|邮件客户端|网络安全
    行业数据 | 邮件人物 | 网站公告 | 行业法规
    网络技术:
    邮件原理 | 网络协议 | 网络管理 | 传输介质
    线路接入 | 路由接口 | 邮件存储 | 华为3Com
    CISCO技术 | 网络与服务器硬件
    操作系统:
    Windows 9X | Linux&Uinx | Windows NT
    Windows Vista | FreeBSD | 其它操作系统
    邮件服务器:
    程序与开发 | Exchange | Qmail | Postfix
    Sendmail | MDaemon | Domino | Foxmail
    KerioMail | JavaMail | Winwebmail |James
    Merak&VisNetic | CMailServer | WinMail
    金笛邮件系统 | 其它 |
    反垃圾邮件:
    综述| 客户端反垃圾邮件|服务器端反垃圾邮件
    邮件客户端软件:
    Outlook | Foxmail | DreamMail| KooMail
    The bat | 雷鸟 | Eudora |Becky! |Pegasus
    IncrediMail |其它
    电子邮箱: 个人邮箱 | 企业邮箱 |Gmail
    移动电子邮件:服务器 | 客户端 | 技术前沿
    邮件网络安全:
    软件漏洞 | 安全知识 | 病毒公告 |防火墙
    攻防技术 | 病毒查杀| ISA | 数字签名
    邮件营销:
    Email营销 | 网络营销 | 营销技巧 |营销案例
    邮件人才:招聘 | 职场 | 培训 | 指南 | 职场
    解决方案:
    邮件系统|反垃圾邮件 |安全 |移动电邮 |招标
    产品评测:
    邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端
    广告联系 | 合作联系 | 关于我们 | 联系我们 | 繁體中文
    版权所有:邮件技术资讯网©2003-2010 www.5dmail.net, All Rights Reserved
    www.5Dmail.net Web Team   粤ICP备05009143号