El aprovisionamiento automático de cuentas es una forma de automatizar la creación de cuentas de usuario en Zimbra basadas en datos de un controlador de dominio en este caso Zentyal.
Las siguientes configuraciones fueron probadas en instalaciones de Zimbra en Centos 7 y 8 y Ubuntu 16.04 y 18.04
Primero se debe crear un archivo autoprov.txt, yo sugiero crearlo en un lugar donde se pueda acceder nuevamente al archivo, cuando se cambia de controlador de dominio (por una migración) es posible que se necesite ejecutar nuevamente este archivo.
nano autoprov.txt
La conexión entre Zentyal o Active Directory y Zimbra tiene tres modos diferentes disponibles:
- Modo LAZY, donde Zimbra proporciona el buzón de correo para el usuario en el primer inicio de sesión.
- Modo EAGER, donde Zimbra consultará AD externo (Zentyal) cada cierto tiempo (por ejemplo, cada minuto) y creará buzones de correo de Zimbra para las cuentas recién creadas.
- Modo MANUAL, donde el operador realiza una búsqueda en el directorio de origen externo de las cuentas que se van a aprovisionar automáticamente, luego se seleccionan las cuentas que se van a aprovisionar automáticamente.
Para este tutorial se usará el modo EAGER porque es el más estable y confiable, sin embargo, podrían presentarse 2 escenarios de configuración:
El nombre de dominio de Zentyal es igual al nombre de dominio de Zimbra
Si el nombre de dominio de Zentyal (guidocutipa.blog.bo) es igual al nombre de dominio de Zimbra (guidocutipa.blog.bo) usaremos la siguiente configuración para el archivo autoprov.txt:
md guidocutipa.blog.bo zimbraAutoProvAccountNameMap "samAccountName"
md guidocutipa.blog.bo +zimbraAutoProvAttrMap description=description
md guidocutipa.blog.bo +zimbraAutoProvAttrMap displayName=displayName
md guidocutipa.blog.bo +zimbraAutoProvAttrMap givenName=givenName
md guidocutipa.blog.bo +zimbraAutoProvAttrMap cn=cn
md guidocutipa.blog.bo +zimbraAutoProvAttrMap sn=sn
md guidocutipa.blog.bo zimbraAutoProvAuthMech LDAP
md guidocutipa.blog.bo zimbraAutoProvBatchSize 40
md guidocutipa.blog.bo zimbraAutoProvLdapAdminBindDn "CN=Guido Cutipa,CN=Users, DC=guidocutipa,DC=blog,DC=bo"
md guidocutipa.blog.bo zimbraAutoProvLdapAdminBindPassword P4ssw0rd
md guidocutipa.blog.bo zimbraAutoProvLdapBindDn "guido.cutipa@guidocutipa.blog.bo"
md guidocutipa.blog.bo zimbraAutoProvLdapSearchBase "DC=guidocutipa,DC=blog,DC=bo"
md guidocutipa.blog.bo zimbraAutoProvLdapSearchFilter "(cn=%u)"
md guidocutipa.blog.bo zimbraAutoProvLdapURL "ldap://192.168.1.253:389"
md guidocutipa.blog.bo zimbraAutoProvMode EAGER
md guidocutipa.blog.bo zimbraAutoProvNotificationBody "Tu cuenta ha sido creada automáticamente. Tu cuenta de correo electrónico es ${ACCOUNT_ADDRESS}."
md guidocutipa.blog.bo zimbraAutoProvNotificationFromAddress guido.cutipa@guidocutipa.blog.bo
md guidocutipa.blog.bo zimbraAutoProvNotificationSubject "Nueva cuenta creada"
ms correo.guidocutipa.blog.bo zimbraAutoProvPollingInterval "1m"
ms correo.guidocutipa.blog.bo +zimbraAutoProvScheduledDomains "guidocutipa.blog.bo"
zimbraAutoProvAttrMap ayudará a realizar el mapeo entre los atributos del controlador de dominio Zentyal y Zimbra
zimbraAutoProvLdapAdminBindDn, zimbraAutoProvLdapAdminBindPassword, zimbraAutoProvLdapBindDn corresponden a los datos de un usuario administrador del controlador de dominio, para este caso el usuario pertenece al grupo “Domain Admins”, si no se quiere cometer errores de configuración la mejor opción es obtener los datos mediante la herramienta ADSI que se instala con las herramientas de administración remota de servidor RSAT,
zimbraAutoProvLdapSearchBase corresponde a la ruta desde la cual se sincronizarán las cuentas, en caso de dejarlo en la raíz «DC=guidocutipa,DC=blog,DC=bo» se sincronizaran inclusive cuentas administrativas:
Para prevenir esto se podrían crear todos los usuarios del dominio deltro de una unidad organizativa por ejemplo «OU=sistemas,DC=guidocutipa,DC=blog,DC=bo».
zimbraAutoProvLdapSearchFilter corresponde al modo de autenticación, se tienen 2 opciones:
- %n para validar nombre de usuario y dominio «usuario@dominio.com»
- %u si se quiere validar el nombre de usuario sin @ «usuario«, este último parámetro es muy útil cuando se tiene un nombre de dominio interno (guidocutipa.local) diferente al nombre de dominio publicado en internet (guidocutipa.blog.bo).
Es posible enviar un mensaje de bienvenida con la anterior configuración:
zimbraAutoProvNotificationBody corresponde al cuerpo del mensaje
zimbraAutoProvNotificationFromAddress es el correo desde el cual se enviará el mensaje
zimbraAutoProvNotificationSubject es el asunto del correo electrónico
Finalmente zimbraAutoProvPollingInterval es la cantidad de tiempo entre cada sincronización entre Zentyal y Zimbra, para el ejemplo se ejecutará cada minuto (1m).
El nombre de dominio de Zentyal es diferente al nombre de dominio de Zimbra
Si el nombre de dominio de Zentyal (guidocutipa.local) es diferente al nombre de dominio de Zimbra (guidocutipa.blog.bo) usaremos la siguiente configuración para el archivo autoprov.txt:
md guidocutipa.blog.bo zimbraAutoProvAccountNameMap "samAccountName"
md guidocutipa.blog.bo +zimbraAutoProvAttrMap description=description
md guidocutipa.blog.bo +zimbraAutoProvAttrMap displayName=displayName
md guidocutipa.blog.bo +zimbraAutoProvAttrMap givenName=givenName
md guidocutipa.blog.bo +zimbraAutoProvAttrMap cn=cn
md guidocutipa.blog.bo +zimbraAutoProvAttrMap sn=sn
md guidocutipa.blog.bo zimbraAutoProvAuthMech LDAP
md guidocutipa.blog.bo zimbraAutoProvBatchSize 40
md guidocutipa.blog.bo zimbraAutoProvLdapAdminBindDn "CN=Guido Cutipa,CN=Users, DC=guidocutipa,DC=local"
md guidocutipa.blog.bo zimbraAutoProvLdapAdminBindPassword P4ssw0rd
md guidocutipa.blog.bo zimbraAutoProvLdapBindDn "guido.cutipa@guidocutipa.local"
md guidocutipa.blog.bo zimbraAutoProvLdapSearchBase "DC=guidocutipa,DC=local"
md guidocutipa.blog.bo zimbraAutoProvLdapSearchFilter "(cn=%u)"
md guidocutipa.blog.bo zimbraAutoProvLdapURL "ldap://192.168.1.253:389"
md guidocutipa.blog.bo zimbraAutoProvMode EAGER
md guidocutipa.blog.bo zimbraAutoProvNotificationBody "Tu cuenta ha sido creada automáticamente. Tu cuenta de correo electrónico es ${ACCOUNT_ADDRESS}."
md guidocutipa.blog.bo zimbraAutoProvNotificationFromAddress guido.cutipa@guidocutipa.blog.bo
md guidocutipa.blog.bo zimbraAutoProvNotificationSubject "Nueva cuenta creada"
ms correo.guidocutipa.blog.bo zimbraAutoProvPollingInterval "1m"
ms correo.guidocutipa.blog.bo +zimbraAutoProvScheduledDomains "guidocutipa.blog.bo"
Estan con negrillas los cambios realizados en la configuración, sin embargo, el parámetro más importante es zimbraAutoProvLdapSearchFilter corresponde al modo de autenticación.
Por ejemplo si el usuario de Zentyal se llama usuario1@guidocutipa.local y el usuario de Zimbra debe llamarse usuario1@guidocutipa.blog.bo en el parámetro zimbraAutoProvLdapSearchFilter se debe utilizar %u para validar solo la parte del nombre de usuario sin @, es decir solo se validará la autenticación como usuario1.
Una vez creado el archivo con el contenido, lo copiamos a una ruta donde el usuario zimbra pueda acceder a su contenido:
cp autoprov.txt /tmp/autoprov.txt
No olvide modificar los datos de acuerdo a la configuración de su servidor.
Aplicar la configuración, ejecutar el archivo autoprov.txt
Primero cambiamos de usuario
su - zimbra
Después ejecutamos el comando
zmprov < /tmp/autoprov.txt
Si todo sale bien veremos el siguiente mensaje:
Ahora probamos creando un usuario en Zentyal y esperaremos un minuto a que Zimbra se sincronice y cree automáticamente el usuario.
Comprobar el aprovisionamiento automático de cuentas Zentyal en Zimbra
Primero podemos ver el archivo log de Zimbra, para facilitar su revisión aplicaremos un filtro:
cat /opt/zimbra/log/mailbox.log | grep "autoprov - auto creating"
Si la configuración es correcta se podrá ver un mensaje similar al siguiente:
Otra forma de comprobar es revisar la pantalla de administración del administrador de zimbra:
Si se ingresa a una cuenta de correo, se verá un mensaje de correo en la bandeja de entrada con el mensaje configurado en el archivo de configuración autoprov.txt:
En el caso de que no se requiera crear correos para las cuentas por defecto del sistema (Zentyal), se podría modificar el archivo de configuración.
En lugar de:
md guidocutipa.blog.bo zimbraAutoProvLdapAdminBindDn "CN=Guido Cutipa,CN=Users,DC= guidocutipa,DC=local"
Podríamos crear todos los usuarios dentro de una OU:
md guidocutipa.blog.bo zimbraAutoProvLdapAdminBindDn "OU=LAPAZ,CN=Guido Cutipa,CN=Users,DC= guidocutipa,DC=local"
Revisión de errores
Si algo sale mal se puede modificar temporalmente el log del sistema y ponerlo en modo debug:
nano /opt/zimbra/conf/log4j.properties
Al final del archivo adicionar:
log4j.logger.zimbra.autoprov=DEBUG
Grabar los cambios, crear una nueva cuenta en Zentyal y revisar lo que muestra el mailbox.log.
tail -f /opt/zimbra/log/mailbox.log
Todo la configuración aplicada anteriormente no solo se puede aplicar con una instalación de Zentyal, también es compatible con un Servidor Active Directory.
Referencias
Para este artículo se utilizó la guía oficial de Zimbra y se la adaptó a la configuración de Zentyal https://wiki.zimbra.com/wiki/How_to_configure_auto-provisioning_with_AD