Mostrando entradas con la etiqueta Cyrus Imap. Mostrar todas las entradas
Mostrando entradas con la etiqueta Cyrus Imap. Mostrar todas las entradas

jueves, 18 de junio de 2009

IOERROR: opening ... cyrus.header

IOERROR: opening /var/spool/imap/user/ferran^serafini/TEST_FOLDER/cyrus.header: No such file or directory

su - cyrus -c "/usr/lib/cyrus/bin/reconstruct -r -f user/ferran.serafini"

viernes, 5 de junio de 2009

Script Backup Servicios OpenLDAP, BIND, CYRUS, Configs...

Buscando como se hace una copia de seguridad de cada servicio, hice el siguiente script que monta un arbol de directorios bajo el directorio /backups con cada uno de los servicios:

/backups/infbcn01-fecha -> DNS ETC IMAP LDAP

* DNS: se guardan las zonas master & slave y la config del servicio
* ETC: se guarda todo el directorio /etc
* IMAP: se guardan todos los buzones, bds de cyrus y config
* LDAP: Extrae un ldif con todo el contenido del árbol

No es un script óptimo en sentido de espacio ya que ni si comprime ni distingue incrementalidad o diferencialidad. Pero funciona.


#!/bin/bash
###BACKUP infbcn01 -infmaster

B_DIR=/backups
DEST=$B_DIR/infbcn01-`date +%d%m%Y`
OLD_BK=/backups2
ldiff=$DEST/LDAP/backupMasterLDAP.ldif
BIND_DIR=/var/lib/named
CONF_ETC=/etc
MASTER_BIND_DIR=$BIND_DIR/master
SLAVE_BIND_DIR=$BIND_DIR/slave
B_CYR_VAR_SPOOL=$DEST/IMAP/SPOOL/VAR
CYR_VAR_SPOOL=/var/spool/imap
CYR_SRV_SPOOL=/srv/imap/user
B_CYR_SRV_SPOOL=$DEST/IMAP/SPOOL/SRV
CYR_LIB=/var/lib/imap
B_CYR_LIB=$DEST/IMAP/LIB
MBOXLIST=mailboxdb`date +%d%m%Y`.dump

mv $B_DIR/* $OLD_BK/
rm -fr $B_DIR/*

#Arbre de directoris
mkdir $DEST > /dev/null 2>&1
mkdir -p $DEST/LDAP > /dev/null 2>&1
mkdir -p $DEST/DNS > /dev/null 2>&1
mkdir -p $DEST/DNS/master > /dev/null 2>&1
mkdir -p $DEST/DNS/slave > /dev/null 2>&1
mkdir -p $DEST/ETC > /dev/null 2>&1
mkdir -p $DEST/IMAP > /dev/null 2>&1
mkdir -p $DEST/IMAP/SPOOL/VAR > /dev/null 2>&1
mkdir -p $B_CYR_LIB
mkdir -p $B_CYR_SRV_SPOOL

#LDAP
slapcat > $ldiff

#DNS
cp -rvp $MASTER_BIND_DIR/* $DEST/DNS/master/
cp -rvp $SLAVE_BIND_DIR/* $DEST/DNS/slave/

#CONFIGS
tar -cjf $DEST/ETC/etc.tar.bz2 $CONF_ETC

#CYRUS
rsync -avz --delete $CYR_LIB root@localhost:$B_CYR_LIB

#CYRUS MAILBOXES
rsync -avz --delete $CYR_VAR_SPOOL root@localhost:$B_CYR_VAR_SPOOL
rsync -avz --delete $CYR_SRV_SPOOL root@localhost:$B_CYR_SRV_SPOOL
su cyrus -c "/usr/lib/cyrus/bin/ctl_mboxlist -d > $DEST/IMAP/$mboxlist"

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

Sincronizar servidores de correo Cyrus-IMAP

Otro escenario puede ser el que hay el server cyrus en producción y tenemos uno nuevo que queremos que sea ENTERO sincronizado con el de producción. Para esto hice este script. Sincroniza todo el /var/lib/imap y las particiones imap /srv/imap y /var/spool/imap al nuevo server (donde se ejecuta el script). Le puse una regla EXCLUDE para el rsync donde se puede poner usuarios o carpetas que no se quiere sincronizar.

#!/bin/bash
IN_SRV=/mnt/server_act/srvspool/user
IN_VAR=/mnt/server_act/spool/
IN_LIB=/mnt/server_act/lib/
EXCLUDE=/root/exclude

rsync -avz --delete --exclude-from=$EXCLUDE $IN_LIB root@localhost:/var/lib/imap/
su cyrus -c "/usr/lib/cyrus/bin/ctl_cyrusdb -r"

rsync -avz --delete --exclude-from=$EXCLUDE $IN_VAR root@localhost:/var/spool/imap/
rsync -avz --delete --exclude-from=$EXCLUDE $IN_SRV root@localhost:/srv/imap/

lunes, 20 de abril de 2009

DBERROR: opening /var/lib/imap/deliver.db

Me encontre en una migración de servidores Imap Cyrus, en el momento que queria mantener dos servidores sincronizados, que las db del cyrus, me daban errores y aunque aperente todo funcionaba bien, el syslog llegaba a llenarme el disco en un dia. Todo el rato decia:

Apr 17 13:21:29 infbcn01 lmtpunix[19377]: DBERROR: dbenv->open '/var/lib/imap/db' failed: Invalid argument
Apr 17 13:21:29 infbcn01 lmtpunix[19377]: DBERROR: init() on berkeley
Apr 17 13:21:29 infbcn01 lmtpunix[19377]: auxpropfunc error invalid parameter supplied
Apr 17 13:21:29 infbcn01 lmtpunix[19377]: DBERROR db4: DB_AUTO_COMMIT may not be specified in non-transactional environment
Apr 17 13:21:29 infbcn01 lmtpunix[19377]: DBERROR: opening /var/lib/imap/deliver.db: Invalid argument
Apr 17 13:21:29 infbcn01 lmtpunix[19377]: DBERROR: opening /var/lib/imap/deliver.db: cyrusdb error
Apr 17 13:21:29 infbcn01 lmtpunix[19377]: FATAL: lmtpd: unable to init duplicate delivery database
Apr 17 13:21:29 infbcn01 master[31905]: service lmtpunix pid 19377 in READY state: terminated abnormally

Lo solucioné con lo siguiente al final del script de sincronización.


su cyrus -c "/usr/lib/cyrus/bin/ctl_cyrusdb -r"

Reconstruir Cyrus IMAP

Apr 17 13:21:29 infbcn01 lmtpunix[19377]: DBERROR: dbenv->open '/var/lib/imap/db' failed: Invalid argument
Apr 17 13:21:29 infbcn01 lmtpunix[19377]: DBERROR: init() on berkeley
Apr 17 13:21:29 infbcn01 lmtpunix[19377]: auxpropfunc error invalid parameter supplied
Apr 17 13:21:29 infbcn01 lmtpunix[19377]: DBERROR db4: DB_AUTO_COMMIT may not be specified in non-transactional environment
Apr 17 13:21:29 infbcn01 lmtpunix[19377]: DBERROR: opening /var/lib/imap/deliver.db: Invalid argument
Apr 17 13:21:29 infbcn01 lmtpunix[19377]: DBERROR: opening /var/lib/imap/deliver.db: cyrusdb error
Apr 17 13:21:29 infbcn01 lmtpunix[19377]: FATAL: lmtpd: unable to init duplicate delivery database
Apr 17 13:21:29 infbcn01 master[31905]: service lmtpunix pid 19377 in READY state: terminated abnormally

su cyrus -c "/usr/lib/cyrus/bin/ctl_cyrusdb -r"