zimbra自动同步AD帐户

11,467次阅读
3 条评论

共计 4415 个字符,预计需要花费 12 分钟才能阅读完成。

企业中使用 AD 作为计算管理中心的还是有蛮多的,我们的 zimbra 也支持用 AD 来验证,AD 验证设置请浏览 https://www.8win.net/2016/06/180.html,但是需要将用户添加到 zimbra ldap 中去,如果用户多的话导入还是有点麻烦的,使用 zimbra 的迁移工具会丢失一些用户,具体原因目前未知,可能是用户过多导致超时。看 zimbra 的 wiki 发现有 autoprov 这个工具可以解决,而且还能自动发现后续添加的帐号。

1. 建立一个批处理文件

$vi /tmp/autoprov.txt

md example.com zimbraAutoProvAccountNameMap “samAccountName” // 使用 samaccountname 作为导入帐号主键

md example.com +zimbraAutoProvAttrMap description=description // 描述变量

md example.com +zimbraAutoProvAttrMap displayName=displayName // 显示名称变量

md example.com +zimbraAutoProvAttrMap sn=sn // 姓变量

md example.com +zimbraAutoProvAttrMap givenName=givenName // 名变量

md example.com +zimbraAutoProvAttrMap company=company // 单位变量

md example.com +zimbraAutoProvAttrMap department=title // 部门变量 由于 zimbra 里没有部门这个属性,我把 AD 里的部门属性转换成 zimbra 里的工作职务了,后面的动态组会用到

md example.com +zimbraAutoProvAttrMap cn=cn // 帐户名变量

md example.com zimbraAutoProvAuthMech LDAP // 验证方式

md example.com zimbraAutoProvBatchSize 40 // 批量大小

md example.com zimbraAutoProvLdapAdminBindDn “CN=vmail,OU=Mail,DC=example,DC=com” // 验证用 AD 用户

md example.com zimbraAutoProvLdapAdminBindPassword secret //AD 用户密码

md example.com zimbraAutoProvLdapBindDn “sAMAccountName=%u,OU=mail,%D” //LDAP 搜索格式

md example.com zimbraAutoProvLdapSearchBase “OU=Mail,dc=example,dc=com” //LDAP 搜索范围

md example.com zimbraAutoProvLdapSearchFilter “(cn=%u)” // 搜索筛选

md example.com zimbraAutoProvLdapURL “ldap://192.168.100.253:389″ //LDAPURL, 也就是 AD 的 LDAP 服务地址

md example.com zimbraAutoProvMode EAGER // 自动配置模式 EAGER 为紧急模式

md example.com zimbraAutoProvNotificationBody “Your account has been auto provisioned. Your email address is ${ACCOUNT_ADDRESS}.” // 欢迎邮件内容 可使用中文

md example.com zimbraAutoProvNotificationFromAddress prov-admin@example.com // 欢迎邮件发件地址

md example.com zimbraAutoProvNotificationSubject “New account auto provisioned” // 欢迎邮件主题 可使用中文

ms server.example.com zimbraAutoProvPollingInterval “1m” // 循环执行时间间隔,这里为 1 分钟

ms server.example.com +zimbraAutoProvScheduledDomains “example.com” // 自动配置的邮件域

2. 执行批处理

$zmprov < /tmp/autoprov.txt

prov > md example.com zimbraAutoProvAccountNameMap “samAccountName”

prov > md example.com +zimbraAutoProvAttrMap description=description

prov > md example.com +zimbraAutoProvAttrMap displayName=displayName

prov > md example.com +zimbraAutoProvAttrMap sn=sn

prov > md example.com +zimbraAutoProvAttrMap givenName=givenName

prov > md example.com +zimbraAutoProvAttrMap company=company

prov > md example.com +zimbraAutoProvAttrMap department=title

prov > md example.com +zimbraAutoProvAttrMap cn=cn

prov > md example.com zimbraAutoProvAuthMech LDAP

prov > md example.com zimbraAutoProvBatchSize 40

prov > md example.com zimbraAutoProvLdapAdminBindDn “CN=vmail,OU=Mail,DC=example,DC=com”

prov > md example.com zimbraAutoProvLdapAdminBindPassword secret

prov > md example.com zimbraAutoProvLdapBindDn “sAMAccountName=%u,OU=mail,%D”

prov > md example.com zimbraAutoProvLdapSearchBase “OU=zimbrausers,dc=example,dc=com”

prov > md example.com zimbraAutoProvLdapSearchFilter “(cn=%u)”

prov > md example.com zimbraAutoProvLdapURL “ldap://192.168.100.253:389”

prov > md example.com zimbraAutoProvMode EAGER

prov > md example.com zimbraAutoProvNotificationBody “Your account has been auto provisioned. Your email address is ${ACCOUNT_ADDRESS}.”

prov > md example.com zimbraAutoProvNotificationFromAddress prov-admin@example.com

prov > md example.com zimbraAutoProvNotificationSubject “New account auto provisioned”

prov > ms server.example.com zimbraAutoProvPollingInterval “1m”

prov > ms server.example.com +zimbraAutoProvScheduledDomains “example.com” 配置完成后不需要重启,如果复制我的第一步内容请将描述内容删除。

3. 测试

1) 在 AD 上 Mail OU 中建立测试帐户 test.

2) 查看 zimbra 日志 /opt/zimbra/log/mailbox.log

2016-06-01 17:26:00,546 INFO [AutoProvision] [] autoprov – Auto provisioning accounts on domain example.com

2016-06-01 17:26:00,553 INFO [AutoProvision] [] autoprov – 1 external LDAP entries returned as search result

2016-06-01 17:26:00,553 INFO [AutoProvision] [] autoprov – auto creating account in EAGER mode: test@example.com, dn=”CN=test,OU=zimbrausers,DC=example,DC=com”

2016-06-01 17:26:00,558 INFO [AutoProvision] [] autoprov – Auto Provisioning has finished for now, setting last polled timestamp: 20160601092600.550Z

2016-06-01 16:26:00,565 INFO [AutoProvision] [] autoprov – Sleeping for 60000 milliseconds.

出现以上日志表示已经自动创建了 test 邮箱

3) 现在就可以登陆邮箱查看了。

4. 其它事项

1) 相关参数文件请查看 /opt/zimbra/docs/autoproc.txt

2) 如果使用的 zimbra8.08 以下版本只会第一次能自动创建,在之后在 AD 上创建的帐号将不能自动创建, 经查是因为时间戳的原因,8.08 以下的版本时间戳格式为 yyyyMMddHHmmssZ, 而 AD 的时间戳格式为 yyyyMMddHHmms.0Z. 这个要么禁用时间戳, 要么升级.

3) 大量用户创建时也会出现部分用户会创建不了, 可以修改时间戳来重新创建一次, 当然这次的创建不是重复创建之前已经创建的用户.

zmprov md example.com zimbraAutoProvLastPolledTimestamp “20100101010101.123Z”

将这个时间戳修改到 AD 建立之前, 基本上就可以创建所有的用户了.

5. 错误提示

525 用户未找到

52E 无效证件

530 不允许此时登录

531 不允许在该工作站登录

532 密码过期

533 帐户已禁用

534 用户尚未被授予请求的登录类型在这台机器

701 帐户过期

773 用户必须重新设置密码

775 用户帐户被锁定

8350 DN 格式不正确

正文完
 
Winter
版权声明:本站原创文章,由 Winter 2016-06-01发表,共计4415字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(3 条评论)
验证码
zimbra小白 评论达人 LV.1
2017-05-11 13:39:19 回复

动态组里面,LDAPurl该如何填写啊?
试了以下规则,都无法读到组内成员啊。
ldap://[这里是服务器IP]:3268/??base?(MemberOf=CN=mail002,CN=Users,DC=mailcloud,DC=com)
ldap://[这里是服务器IP]:3268/DC=mailcloud,DC=com/??base?(MemberOf=CN=mail002,CN=Users,DC=mailcloud,DC=com)
ldap://[这里是服务器IP]:3268/??base?MemberOf=CN=mail002,CN=Users,DC=mailcloud,DC=com

 Windows  Chrome  内网IP
yanzy 评论达人 LV.1
2017-06-16 14:09:34 回复

如果公司AD有两处目录设定账号,比如OU=Userx,CN=Users,OU不在CN下面,zimbra如何同时同步这两个目录内的AD账号,以及是否可以以mail为主键同步

 Windows  Chrome  内网IP
    Winter 博主
    2017-07-22 09:18:47 回复

    @yanzy 搜索多个OU的话每个OU加一条md example.com +zimbraAutoProvLdapSearchBase “OU=USERX,dc=example,dc=com”,至于CN=USERS这个还真没试过,一般的规划这里面只会有系统默认用户的吧。
    至于通过哪个主键同步都可以的的,在md example.com zimbraAutoProvAccountNameMap “samAccountName” 中将”samAccountName”替换为相应的LADP键值就可以了

     Windows  Chrome