Si algo no funciona, reinicia. Si sigue sin funcionar, actualiza. Si has actualizado elimina la actualización.
Google_Apps

De Zimbra a Google Apps

Hace unas semanas empezé con una migración de Zimbra a Google Apps.  Intentaré detallar mínimamente el proceso de provisión de usuarios y grupos, para poder exportarlos desde Zimbra e importarlos en Google Apps.

Para dar de alta los usuarios, lo hicimos basado en nuestro Active Directory Actual por lo cual para la creación de usuarios lo hicimos con Google Apps Directory Sync (GADS). Se puede descargar aquí:

https://support.google.com/a/answer/106368?hl=es

Una vez lo instalado, lo primero es configurar la validación OAUTH hacia vuestro dominio, luego elegir los componentes que queréis sincronizar ( Unidades organizativas, cuentas de usuario, grupos,  perfil de usuario, contactos compartidos o calendario). Mi consejo aquí, es que vayáis paso a paso, empezad por los usuarios y luego poco a poco vais completando la sincronización. En mi caso, sólo necesitaba sincronizar usuarios, perfiles de usuario y unidades organizativas.

En el caso de usuarios, hice dos cambios. Excluí el atributo “Alias e-mail attributes” ya que era un dato que no teníamos en Active Directory. Y luego en las reglas de exclusión excluí las cuentas típicas que existen en un dominio que no deben ser sincronizadas (ej. managed serviced accounts).

En el apartado de unidades organizativas, simplemente les cambié el nombre, utilizando LDAP OU mapping a las unidades organizativas que se iban a sincronizar, poniendo un nombre más legible.

A partir de ahí, lo siguiente fue hacer una primera simulación y crear todos los usuarios de Active Directory en Google Apps.

Hay un punto que debe ser tenido en cuenta, la password de Active Directory con GADS no se sincroniza por lo que para ello hay tres opciones:

  • Utilizar Google Apps Password Sync ( https://support.google.com/a/answer/2611859?hl=es ) que sincroniza cambios de contraseña de Active Directory hacia Google Apps. Esto es importante, sincroniza cambios, por lo que si el usuario no cambia la clave en Active Directory después de tener creada la cuenta en Google Apps no podrá entrar en Google Apps. Si se opta por este camino, se debe instalar la aplicación en todos los controladores de dominio.
  • Utilizar servicios de federación de directorio. ADFS. La password no se sincroniza en Google Apps y cuando un usuario intenta validarse se realiza una petición SAML hacia el servidor especificado ADFS. Utilizar ADFS permite configurar además SSO. La arquitectura, y despliegue de granja ADFS, ADFS Proxy es un post en si mismo. No lo voy a tratar aquí, si alguien está interesado le paso información.
  • Mantener passwords independientes en Google Apps a las de Active Directory.

Llegados a este punto, debemos tener ya todos los usuarios en Active Directory, pero en nuestro caso no teníamos ni alias, ni listas de correo, ni pertenencia de usuarios a listas de correo. Todavía faltaba bastante información por completar y para ello decidí tirar de scripting.

Como los grupos que teníamos en el Active Directory no se correspondían con los grupos de correo, preparé unos scripts de exportación de usuarios y grupos de Zimbra e importación en Google Apps.

Para ello, necesitaba cubrir dos requisitos. Poder manejar el servidor de Zimbra mediante scripting, para lo que no tenía que cubrir ningún requisito adicional y poder manejar la plataforma de Google Apps mediante scripting para lo que me apoyé en Google Apps Manager (GAM) https://code.google.com/p/google-apps-manager/ una herramienta sinceramente genial que simplifica mucho procesos batch en Google Apps. La WIKI de instalación es la siguiente: https://code.google.com/p/google-apps-manager/wiki/GAM3GettingStarted?tm=6

Una vez instalado podemos ejecutar un

1
 gam info domain midominio.com

y si nos devuelve resultados sabremos que estamos listos para empezar la acción.

En primer lugar exportamos los nombres de los grupos a un archivo intermedio.

1
 zmprov gadl > grupos_principales.txt

Y luego lo procesamos.

1
2
3
4
5
6
7
8
9
10
#! /bin/bash
echo "" > errores_grupos.txt
while IFS=" "  read -r grupo
do
  echo "Grupo $grupo"
  python gam.py create group $grupo
  if [ "$?" -eq 148 ]; then
     echo "No se pudo crear grupo $grupo" >> errores_grupos.txt
  fi
done < ../migracion_correo/grupos_principales.txt

Una vez tenemos los grupos, nos toca procesar la pertenencia a los grupos.

Primero exportamos en origen.

1
2
3
4
5
6
7
8
#! /bin/bash
 
echo "" > /opt/zimbra/grupos/grupos.txt
for lista in `zmprov gadl`; do
  for usuario in `zmprov gdl $lista | grep zimbraMailForwardingAddress | cut -d" " -f2`; do
   echo -e "$lista $usuario" >> /opt/zimbra/grupos/grupos.txt
  done
done

Esto nos genera un archivo grupos.txt con una salida similar a la siguiente con los nombres de los grupos.

listadecorreo@dominio.com miembro@dominio.com

Ahora nos toca procesar los grupos, y en primer lugar, crearlos.

1
2
3
4
5
6
7
8
9
10
#! /bin/bash
echo "" > errores_usuarios_grupos.txt
while IFS=" " read -r grupo email
do
  echo "Grupo $grupo Usuario $email"
  python gam.py update group $grupo add member $email
  if [ "$?" -eq 148 ]; then
    echo "No se pudo añadir usuario $email al grupo $grupo" >> errores_usuarios_grupos.txt
  fi
done < ../migracion_correo/grupos.txt

Por último, en la parte de provisión nos queda la gestión de alias.

Exportamos.

1
2
3
4
5
6
7
8
#! /bin/bash
 
echo "" > /opt/zimbra/grupos/alias.txt
for usuario in `zmprov -l gaa`; do
  for alias in `zmprov -l ga $usuario | grep zimbraMailAlias | cut -d" " -f2`; do
      echo -e "$usuario $alias" >> /opt/zimbra/grupos/alias.txt
   done
done

 

Y luego importamos en destino.

1
2
3
4
5
6
7
8
9
10
! /bin/bash
echo "" > errores_usuarios.txt
while IFS=" "  read -r email alias
do
  echo "Usuario $email alias $alias"
  python gam.py create alias $alias target $email
  if [ "$?" -eq 148 ]; then
     echo "No se pudo crear alias $alias para el email $email" >> errores_usuarios.txt
  fi
done < ../migracion_correo/alias.txt

Con esto debemos tener todos los usuarios en la nueva plataforma preprovisionados.

Ahora nos quedan dos toques finales de configuración.

Para configurar una firma que viene de un fichero HTML

python gam.py all user signature file firma.html

Habilitar envío usando UTF8.

python gam.py all users utf on

Y ya configurar reenvíos en Zimbra de forma individual, usuario por usuario al dominio de test que pone Google a disposición, para ir contactando con cada usuario de forma individual  para que empiece a recibir correos en Google Apps.

Una vez ya estén los usuarios recibiendo en Google Apps, toca la siguiente fase. Migración del correo, contactos y calendarios de Zimbra a Google Apps.

vsan

Deja una respuesta