Importar a mailman los usuarios de listas de Egroupware

Otra tarea pendiente, la de importar las listas de correo de egroupware a mailman.

Egroupware dispone de un módulo de listas de correo entre los miembros, pero si estamos usando egroupware como gestor de contactos y tenemos un servidor de listas como mailman, el gestor de listas de egroupware se nos puede quedar pequeño. Así que vamos a ver como importamos las listas y los usuarios de egroupware.

La idea como siempre es la de tratar de tocar lo mínimo posible el software, esto nos permitirá poder realizar actualizaciones sin temer a que dejen de funcionar nuestros scripts.

Lo primero será crear un usuario en nuestro servidor de egroupware que lo llamaremos “mailman”.

root@Aludra-egroupware:~# adduser mailman

Nos iremos al /home de éste usuario y crearemos el fichero .my.cnf con las credenciales del usuario de la base de datos de egroupware que encontraremos en el fichero /usr/share/egroupware/header.inc.php

root@Aludra-egroupware:~# cd /home/mailman
root@Aludra-egroupware:/home/mailman# vi .my.cnf
[client]
user = egroupware
password = "mysecretpassword"
database = egroupware
root@Aludra-egroupware:/home/mailman# chown mailman:mailman .my.cnf
root@Aludra-egroupware:/home/mailman# chmod 600 .my.cnf 

Recomiendo poner el password entre comillas porque algunos carácteres pueden darnos problemas y no permitirnos acceder automáticamente con el usuario mailman a la base de datos mysql.

Ahora nos iremos al servidor de mailman y nos validaremos al servidor de egroupware por clave ssh con el usuario mailman

root@lists:~# cd .ssh
root@lists:~/.ssh# ssh-keygen -t dsa
root@lists:~/.ssh# ssh-copy-id -i id_dsa.pub mailman@10.90.xxx.xxx

Y ahora en el servidor de listas creamos éste script en nuestro directorio de scripts favorito :)

#!/bin/bash

LISTS=`ssh mailman@10.90.xxx.xxx mysql -B -N -e '"select list_name from egw_addressbook_lists order by list_name desc limit 5;"'`

OUTPUT=`ssh mailman@10.90.xxx.xxx mysql -B -N -e '"SELECT contact_email, list_name FROM egw_addressbook2list, egw_addressbook, egw_addressbook_lists WHERE egw_addressbook2list.contact_id=egw_addressbook.contact_id AND egw_addressbook2list.list_id=egw_addressbook_lists.list_id;"'`

#echo -e "${OUTPUT}" | awk {'print $1'}
#echo -e "${LISTS}"

for f in ${LISTS}
do
        echo "Llista: ${f}"
        MAIL=`echo -e "${OUTPUT}" |grep ${f} |awk '{print $1}'`

        EXISTS=`ls /var/lib/mailman/lists |grep -i ${f} |wc -l`

        if [[ "${EXISTS}" == 0 ]]; then
                echo "List does not exist! Please, create it!"
                echo "Execute: /var/lib/mailman/bin/newlist --urlhost=lists.capa8.net ${f}"
                echo

        else
                echo "YEP!!!! the list exists!!! :D these are the users to import!"
                for g in ${MAIL}
                do
                        IS_IN_LIST=`list_members ${f} |grep ${g}`

                        if [[ "${IS_IN_LIST}" == 0 ]]; then
                                echo -e "      Mail: ${g} is not in list, adding it!"
                                echo "${g}" | add_members -r - ${f}
                        else
                                echo -e "      Mail: ${g} is already subscribed to list, nothing to do"
                        fi
                done
                echo
        fi
done

Le damos permisos de ejecución y lo ejecutamos o lo añadimos a cron.

Estaba pensando en crear automáticamente las listas de correo o no, pero finalmente he pensado que mejor no, así hay un poco mas de control (sino los administradores nos quedamos sin trabajo!), además no he encontrado una forma de generar totalmente de forma automática a una lista a menos de usar spect (que creo que no hace falta liarla :P).

Tengo que remarcar la importancia de que los nombres de las listas de correo de egroupware, que no tengan espacios ni carácteres especiales.

Pues esto es todo :) a importar!!!

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *

Aquest lloc utilitza Akismet per reduir els comentaris brossa. Apreneu com es processen les dades dels comentaris.