
1. Un par de palabras del autor.
Artículo actualizado Los guiones cambiaron. Se agregó un script para actualizar una lista de correo.En los comentarios al último artículo, me hicieron una pregunta interesante sobre la formación automática de listas de correo basadas en grupos de seguridad de AD. Hay un problema, hay una solución. Entonces vamos.
2. Los datos fuente
SO del servidor : CentOS 7
Sobre el sistema operativoDe hecho, la diferencia entre CentOS7 y cualquier otro sistema radicará únicamente en los comandos al servidor para instalar paquetes y, posiblemente, en la ubicación de algunos archivos. El trabajo se lleva a cabo principalmente con cmdlets Zimbra, por lo que las diferencias de configuración serán mínimas.
Dominio Zimbra : zimbramail.home.local
El camino para montar las bolas en el host Zimbra : / mnt / ZM /
3. Configuración
- Montamos la bola de Windows en nuestro servidor Linux. Esto es para simplificar y automatizar la transferencia de datos de Windows PowerShell a Linux Bash. El procedimiento de montaje se describió en un artículo anterior. No me repetiré
- Creamos una unidad organizativa separada en AD, en la que creamos grupos en función de las listas de correo que se crearán en Zimbra. Nombre del grupo = nombre de la lista de distribución.
- Agregamos a los grupos creados en la nueva unidad organizativa, usuarios o grupos de seguridad, sobre la base de los cuales se completarán las listas de correo en Zimbra. El script se ejecuta de forma recursiva, lo que significa que recopilará todos los datos sobre los usuarios que están en grupos que se agregan a grupos en la unidad organizativa de destino. Obtenga más información sobre la salida del comando Get-ADGroupMember .
- Cree una secuencia de comandos para recopilar datos de Active Directory.
- Creamos un script para agregar listas de correo y completarlas por los usuarios en función de los datos recibidos en el script anterior.
- Disfruta
3.1. Sobre OU
Creé la OU "ZimbraDL" en la raíz del dominio y prohibí que herede las políticas de grupo para que estos grupos permanezcan separados. No participarán en la vida del dominio de ninguna manera, excepto por la formación de listas de distribución en el OSE de Zimbra Collaboration.
4. Script de PowerShell para recopilar datos de AD
Script de PowerShell$Path = "C:\ZM\ZimbraDL" $enc = [system.text.encoding] function ReCode ( $f, $t, $line ) { $cp1 = $enc::getencoding( $f ) $cp2 = $enc::getencoding( $t ) $inputbytes = $enc::convert( $cp1, $cp2, $cp2.getbytes( $line )) $outputstring = $cp2.getstring( $inputbytes ) $outputstring | add-content $OutputFile }
4.1. Cómo funciona el guión
- Primero, verifica la existencia y eliminación del directorio de trabajo, si existe. Esto es necesario para que los datos no se dupliquen en el proceso.
- PoSh mira la unidad organizativa especificada, lee los grupos de usuarios que están en ella y los escribe en el archivo GetGroupsAD.txt
- Descarta todo lo superfluo del archivo recibido (PoSh escribe toda su salida en el archivo, por lo que en la salida inicial del comando, la primera línea es Nombre, la segunda línea es el separador "----", y solo después de que los grupos se enumeran uno por uno), cambia la codificación de "windows-1251" a utf-8, lo que resulta en otro archivo GroupsList.txt
- Además, según el archivo recibido, se lee la información sobre los usuarios de los grupos contenidos en el archivo. Archivos que contienen nombres de usuario (samAccountName)
colocado en el directorio \ Users y llamado por nombre de grupo
4.2. Guión para leer información de un solo grupo
Un script con la capacidad de leer datos de un solo grupo de seguridad no es muy diferente del anterior, básicamente porque tiene un bloque que le pide al usuario que ingrese el nombre del grupo, en función del cual será necesario actualizar la lista de correo.
Script de PowerShell para ejecutar a mano con la capacidad de leer datos de un solo grupo $Path = "C:\ZM\ZimbraDL" $enc = [system.text.encoding] function ReCode ( $f, $t, $line ) { $cp1 = $enc::getencoding( $f ) $cp2 = $enc::getencoding( $t ) $inputbytes = $enc::convert( $cp1, $cp2, $cp2.getbytes( $line )) $outputstring = $cp2.getstring( $inputbytes ) $outputstring | add-content $OutputFile }
5. Bash script para crear listas de correo
Haré una reserva sobre la copia de archivos de script creados en WindowsEn un artículo anterior, describimos un método para formatear archivos usando el comando cat, que, cuando se inicia con una clave específica, elimina todos los caracteres innecesarios ilegibles. Enlace al artículo al final del artículo.
5.1. Cómo funciona el guión
- Escribir una lista de grupos en un archivo
- Verifique la existencia de la lista de correo en Zimbra; si existe, elimínela
- Cree listas de correo una por una en función de la lista de grupos, llenando cada uno de ellos con usuarios (el ID de la lista de distribución se muestra en la pantalla, esta es la salida estándar del cmdlet zmprov al crear DL). Esto verifica la existencia de buzones de usuario en Zimbra, y si el buzón no existe, el usuario no será agregado a la lista de correo. Por supuesto, puede crear un nuevo buzón para el usuario y agregarlo a la lista de correo, pero supongo que Zimbra autoprov funciona en modo Eager, y si el usuario no se creó automáticamente, entonces no tiene nada que hacer en el sistema
- Borrar archivos temporales
- Eliminar directorio de trabajo
6. Conclusión
En general, la tarea no fue difícil, el problema fue solo en la transferencia de datos de PowerShell a Bash. Durante mucho tiempo intenté encontrar una herramienta para transcribir archivos de texto con salida de PoSh a un formato Bash-digestible. El resultado de muchos días de búsqueda fue la función:
Función de recodificación $InputFile = gc File1.txt $OutputFile = "File2.txt" $enc = [system.text.encoding] function ReCode ( $f, $t, $line ) { $cp1 = $enc::getencoding( $f ) $cp2 = $enc::getencoding( $t ) $inputbytes = $enc::convert( $cp1, $cp2, $cp2.getbytes( $line )) $outputstring = $cp2.getstring( $inputbytes ) $outputstring | add-content $OutputFile } foreach ($line in $InputFile) { ReCode -f "windows-1251" -t "utf-8" $line }
Quizás alguien sea útil.
7. PD:
Este es el tercer artículo de la serie "Cómo implementé Zimbra". El primero trata sobre la implementación, la autorización LDAP y la creación automática de buzones para usuarios de AD,
aquí mismo . El segundo, sobre la configuración de copia de seguridad y recuperación de Zimbra en su totalidad y en cuadros separados, está
aquí .