我是一名对 Active Directory 了解甚少的开发人员,正在开发一个需要将用户与 AD 同步的系统。我最初从客户端获得一份用户电子邮件地址列表(例如[电子邮件保护]...),并且需要将给定的地址与我从 AD 中提取的地址进行匹配,这些地址可能具有不同的后缀(例如[电子邮件保护])。
为了做到这一点,我想确定公司中用户电子邮件地址的所有有效后缀。但我不知道该怎么做。我假设这些后缀是用户所属的域,或者是公司设置的任何 UPN?或者后缀可以是任意的?用户可以属于不同的域吗?还是只能属于一个域?
基本上,我真的很想知道如何查询 AD,以便找出可能有效的别名[电子邮件保护]..任何能帮助我实现这一目标的想法或信息都将不胜感激...
谢谢
答案1
如果您能够使用 LDAP 实用程序与 AD 通信,那么只要提供电子邮件列表,这应该很容易。我使用类似的命令来构建我们愿意接受交付的每个电子邮件地址的列表,以便可以将其推送到我们的 Postfix 邮件网关。如果您为爱国者队工作,并且只知道汤姆·布雷迪的电子邮件地址“[电子邮件保护]',这将为您获取他的所有其他地址(大写的 SMTP 是 Exchange 中的默认回复地址)。ldapsearch 命令是换行的:
----8<----
ldapsearch -h corp.patriots.com -x -D[电子邮件保护]-w'好密码'\
-b'dc = corp,dc = patriots,dc = com''proxyAddresses = smtp:[电子邮件保护]' 代理地址
...
# Tom Brady,用户帐户,帐户,corp.patriots.com
dn:CN=汤姆·布雷迪、OU=球员、OU=账户、DC=corp、DC=patriots、DC=com
代理地址: smtp:[电子邮件保护]
代理地址: SMTP:[电子邮件保护]
代理地址: smtp:[电子邮件保护]
代理地址: smtp:[电子邮件保护]
代理地址: smtp:[电子邮件保护]
代理地址: smtp:[电子邮件保护]
----8<----
该命令的大部分内容只是 ldap 连接的配置,允许它通过仅指定域名作为主机来连接到任何域控制器。-x 用于执行简单身份验证而不是 SASL,然后我给出专门作为域来宾创建的帐户的 UPN 和密码,仅用于运行几个不同的小脚本。-b 选项告诉它从哪里开始搜索,因此您可以将其缩小到特定 OU 或其他内容,尽管在这里我只搜索整个目录。
完成所有这些之后,您就可以找到真正感兴趣的部分,首先是“proxyAddresses=smtp:[电子邮件保护]' 因为您知道他的电子邮件,然后知道您想要返回的属性。这里我只想要代理地址,但您也可以要求提供电话号码、街道地址、州或您在 AD 中填充的任何内容(或者您可以通过完全关闭该属性来返回 AD 知道的有关用户的所有信息……然后您可以使用该完整搜索的输出并选择任何其他属性作为搜索过滤器)。
抱歉说了这么长,我并不是想啰嗦,只是我不知道其中有多少内容是你熟悉的。