使用 LDAP 为用户查找交换服务器的 DNS 名称

使用 LDAP 为用户查找交换服务器的 DNS 名称

跟进我的最后一个问题,一旦我有了正确的域控制器,我想获取给定用户的 Exchange 服务器。我可以使用 ldapsearch 做到这一点:

ldapsearch -LLL -h dc.example.com -D [email protected] -W -b "DC=example,DC=com"-s sub -x '(sAMAccountName=someuser)' msExchHomeServerName homeMTA homeMDB

dn: CN=someuser,OU=Employees,OU=Users,DC=example,DC=com
homeMTA: CN=Microsoft MTA,CN=EXCHANGESERVER,CN=Servers,CN=First Administrative Gr
 oup,CN=Administrative Groups,CN=My Company,CN=Microsoft Exchange,CN=Servic
 es,CN=Configuration,DC=example,DC=com
homeMDB: CN=Database 1,CN=Storage Group 1,CN=InformationStore,CN=EXCHANGESERVER,C
 N=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=My Company,
 CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=example,DC=com
msExchHomeServerName: /o=My Company/ou=First Administrative Group/cn=Config
 uration/cn=Servers/cn=EXCHANGESERVER

我想将上述 DN(两种完全不同的格式)转换为 DNS 名称。在本例中,它们都应转换为 exchangeserver.example.com。

另外,有没有更简单的方法来获取这些信息?在我最常见的情况下,进行查询的用户就是我们感兴趣的用户,所以我的理想是 unix 用户可以询问“我的 exchange 服务器的 FQDN 是什么?”,而无需将 unix 计算机加入 AD 域。

编辑:我以为我找到了解决方案,但它实际上并没有起作用:

ldapsearch -x -LLL -h dc.cisco.com -D [email protected] -W -s base -b "CN=Microsoft MTA,CN=EXCHANGESERVER,CN=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=My Company,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=example,DC=com" dnsHostName

这非常接近,但是您必须知道从 -b 属性的前面去掉“CN=Microsoft MTA”,这不利于编程工作。

答案1

假设你能读懂 VBScript,这里有一个链接来自 Microsoft 的脚本,展示如何查找邮箱的位置获取用户帐户。

该脚本查询用户的“homeMDB”属性(以获取保存用户邮箱的邮箱数据库的 DN)。然后,他们查询该 MDB 以查找“拥有”该 MDB 的服务器对象的 DN,使用 MDB 的“msExchOwningServer”属性值(顺便说一句,您可以忽略有关存储组的位,因为您不关心它)。

假设您需要一个 DNS 名称,请查询服务器对象的“networkAddress”属性(通过查询用户的“homeMDB”的 DN 返回的 MDB 对象的“msExchOwningServer”属性中命名的属性),然后获取以“nacn_ip_tcp”开头的值。这将为您提供托管该 MDB 的服务器的 FQDN。

编辑:

我并不是说您需要执行 VBScript——只是说它会告诉您使用 ldapsearch 查询什么。同样,当我说“服务器对象”时,我并不是说您会实例化某种 VBScript 对象——只是说您会查询服务器命名的 DN。

因此,假设我想要托管用户 Bob 邮箱的服务器的 DNS 名称,我会使用域根目录(或全局目录的根目录,如果我想搜索林中的所有域)中的 LDAP 搜索过滤器“(sAMAccountName=Bob)”查询 Bob 的“homeMDB”属性。

ldapsearch -h ad.example.com -D [email protected] -W -b "DC=ad,DC=example,DC=com" -s sub -x "(sAMAccountName=Bob)" homeMDB

这将返回 homeMDB 属性:

homeMDB: CN=Mailbox Store (EXCH-SRV),CN=First Storage Group,CN=InformationStore,CN=EXCH-SRV,CN=Servers,CN=EXAMPLE,CN=Administrative Groups,CN=Example Organization,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=ad,DC=example,DC=com

然后,使用该 homeMDB 属性作为基本 DN,查询“msExchOwningServer”:

ldapsearch -h ad.example.com -D [email protected]  -W -b "CN=Mailbox Store (EXCH-SRV),CN=First Storage Group,CN=InformationStore,CN=EXCH-SRV,CN=Servers,CN=EXAMPLE,CN=Administrative Groups,CN=Example Organization,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=ad,DC=example,DC=com" msExchOwningServer

这将返回托管该邮箱数据库的服务器的 DN:

msExchOwningServer: CN=EXCH-SRV,CN=Servers,CN=EXAMPLE,CN=Administrative Groups,CN=Example Organization,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=ad,DC=example,DC=com

最后,使用服务器的 DN 作为基准 DN,查询“networkAddress”属性:

ldapsearch -h ad.example.com -D [email protected] -W -b "CN=EXCH-SRV,CN=Servers,CN=EXAMPLE,CN=Administrative Groups,CN=Example Organization,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=ad,DC=example,DC=com" networkAddress

这将返回所有网络地址,其中您感兴趣的是以“nacn_ip_tcp”开头的地址。

networkAddress: ncacn_vns_spp:EXCH-SRV
networkAddress: netbios:EXCH-SRV
networkAddress: ncacn_np:EXCH-SRV
networkAddress: ncacn_spx:EXCH-SRV
networkAddress: ncacn_ip_tcp:EXCH-SRV.ad.example.com
networkAddress: ncalrpc:EXCH-SRV

您可以对“homeMTA”属性执行相同的操作,但是在查询“homeMTA”属性中命名的 DN 时,您将搜索“msExchResponsibleMTAServerBL”而不是“msExchOwningServer”。

最后,如果您想放弃所有这些,请向用户查询“msExchHomeServerName”属性。

msExchHomeServerName: /o=Example Organization/ou=EXAMPLE/cn=Configuration/cn=Servers/cn=EXCH-SRV

获取返回的值并将其用作“legacyExchangeDN”属性的搜索过滤器,并在目录中与 Exchange 相关的子树中搜索“networkAddress”属性。

ldapsearch -h ad.example.com -D [email protected] -W -b "CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=ad,dc=example,dc=com" -x "(legacyExchangeDN=/o=Example Organization/ou=EXAMPLE/cn=Configuration/cn=Servers/cn=EXCH-SRV)" networkAddress

您将获得与上述相同的网络地址。

相关内容