viernes, 5 de junio de 2009

Sincronizar correo CYRUS-IMAP por usuario (rsync)

En fases de migración de servidores de correo cyrus, es probable encontrase con que tenemos el nuevo servidor listo para ser utilizado pero que por motivos de seguridad, burocracia, etc... nos veamos obligados a tener el servidor de producción y el nuevo servidor practicamente parado. Es posible, que no nos interese, hacer un rsync de TODO el servidor de producción y que solo nos interese ir migrando buzones de algunos usuarios en concreto. Para eso hice este script.

se ejecuta:
./syncmailuser.sh nombre.apellido

Entonces mediante rsync copia del servidor en producción los ficheros del user en /var/lib/imap/user.. y luego tambien mediante rsync sincroniza el buzon tanto si esta en /srv/imap (suse) como si esta en /var/spool/imap.

Ahi va el script:

#!/bin/bash
USER=$1
IN_SRV=/mnt/server_act/srvspool/user
IN_VAR=/mnt/server_act/spool
IN_LIB=/mnt/server_act/lib/user
USERS=user.lst

USER2=`echo $USER sed -e 's,\.,\^,g'`
PATH1=$IN_VAR/user/$USER2
PATH2=$IN_SRV/$USER2
echo $PATH1
echo $PATH2


#Primera lletra per al dir
WORD=`echo $USER head -c 1`
echo "Sincronitzant $IN_LIB/$WORD/$USER2 /var/lib/imap/user/$WORD/"
rsync -avz --delete $IN_LIB/$WORD/$USER2* root@localhost:/var/lib/imap/user/$WORD/
su cyrus -c "/usr/lib/cyrus/bin/ctl_cyrusdb -r"
echo "Buscant ubicacio srv o var"
if [ -d $PATH1 ] ; then
echo "no esta en el srv"
rsync -avz --delete $IN_VAR/user/$USER2 root@localhost:/var/spool/imap/user/
fi
if [ -d $PATH2 ] ; then
echo "esta en srv"
rsync -avz --delete $IN_SRV/$USER2 root@localhost:/srv/imap/user/
fi

No hay comentarios:

Publicar un comentario