zimbra自动同步AD帐户
企业中使用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格式不正确
动态组里面,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
如果公司AD有两处目录设定账号,比如OU=Userx,CN=Users,OU不在CN下面,zimbra如何同时同步这两个目录内的AD账号,以及是否可以以mail为主键同步
搜索多个OU的话每个OU加一条md example.com +zimbraAutoProvLdapSearchBase “OU=USERX,dc=example,dc=com”,至于CN=USERS这个还真没试过,一般的规划这里面只会有系统默认用户的吧。
至于通过哪个主键同步都可以的的,在md example.com zimbraAutoProvAccountNameMap “samAccountName” 中将”samAccountName”替换为相应的LADP键值就可以了