HOWTO: integridad cyrus-mysql


Este HOWTO explica como mantener la integridad entre los datos de cuentas de correo en Mysql y en Cyrus. Pueda que existan cuentas en Cyrus porque han sido borradas desde la adminitración o panel (mysql) pero no han sido borradas usando cyradm. También al revés aunque esto sería menos común. Es importante sobretodo eliminar las cuentas fantasmas de cyrus pues cada una puede ocupar hasta 500mb.

Buzones fantasmas en Mysql

Para ver si los usuarios de mysql tienen su correspondiente en cyrus usamos check_mbox_mysql.pl. Para listar solo errores, es decir usuarios solo ingresados en mysql pero cuyo mailbox no existe:

./check_mbox_mysql.pl 


Revisar código de check_mbox_mysql.pl

Buzones fantasmas en Cyrus

El proceso inverso es mas complicado, pues cyrus no es sencillo de hacer consultas. Para listar todos los mailboxes de cyrus (los que tienen hijos, asumimos todos los mailboxes ppales tienen hijos):

./cyrus_list.pl |sort |uniq >cyrus_users.txt


Revisar código de cyrus_list.pl

Finalmente para ver que limpiar de cyrus, es decir listar mailboxes fantasmas (que no existen ya en mysql) usando el archivo que acabamos de crear cyrus_users.txt:

./check_mbox_cyrus.pl |grep ERROR


Revisar código de check_mbox_cyrus.pl

Como corregir los errores?


Ver SysBorrarCuenta para una explicación completa sobre borrado de cuentas en general.

Borrando info@example.org:

Las entradas de más de mysql con:

# mysql -p mail
DELETE FROM user WHERE username='info' AND realm='example.org'


En cyrus con delete mailbox dm... (sam... es necesario para hacerlo como usuario cyrus en cyradm):

# cyradm --user cyrus localhost
> sam user/info@example.org cyrus c
> dm user/info@example.org


NOTA: es posible generar un script en perl que genere las lineas sam y dm necesarias en los casos de ERROR y luego solo dar copy and paste en cyradm. Un intento con dos lineas en el shell:

Genera las lineas sam (esto aplicamos luego en cyradm):

./check_mbox_cyrus.pl |grep ERROR|cut -f1 -d" "|sed -e 's/^/sam user\//g'|sed -e 's/$/ cyrus c/g'


Genera las lineas dm (esto aplicamos luego en cyradm):

./check_mbox_cyrus.pl |grep ERROR|cut -f1 -d" "|sed -e 's/^/dm user\//g'


O ambas con awk:

./check_mbox_cyrus.pl |grep ERROR|cut -f1 -d" "|awk '{print "sam user/"$1" cyrus c\ndm user/"$1}'


NOTA: este proceso es importante porque nos puede ahorrar gigas de espacio en el disco



CategorySysAdmin
There are no comments on this page.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki