miércoles, septiembre 11, 2013

Problemas de espacio quotas en correos Cyrus/Postfix

Un problema recurrente es el tema de espacios asignado a los correos de usuarios en postifx y mas aun cuando usas directorios con Cyrus, mi caso es que todo el correo basura y demases de información, llegan a un correo root@dominio.com por que tengo varias cuentas con alias a dicho correo, por tal motivo se llena bastante rápido y el espacio asignado de quota en Cyrus era pequeño.

Lo primero que me llevo a identificar este problema fue el siguiente mensaje:

9EC633605B     2758 Fri Sep  6 14:40:07  apache@veryrealemail.com
(host /var/lib/imap/socket/lmtp[/var/lib/imap/socket/lmtp] said: 452 4.2.2 Over quota (in reply to RCPT TO command))
                                         root@dominio.com
                                         info@dominio.com

En el cual si nos fijamos bien dice "Over quota" lo cual me indica que esta lleno y por tal motivo el correo quedo encolado. ( De este tipo tenia fácil 1000 correos por día ).

Ya que tenemos identificado el problema, solo nos bastaba buscar la solución.

Primer paso: Logearce como root en la maquina servidor y luego ingresar al administrador de Cyrus:

# cyradm -user cyrus localhost  <<< este seria el comando de ingreso
IMAP Password: 
              Login failed: authentication failure at /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/Cyrus/IMAP/Admin.pm line 118
cyradm: cannot authenticate to server with  as cyrus

Pero lamentablemente no me sabia la clave del usuario cyrus para poder ingresar, así que tuve que crearme un usuario con privilegios de administrador. 
Como tengo autentificacion a través de sasl tuve que crearme un usuario allí con su respectiva clave:

# saslpasswd2 -c nixon <<< creamos el usuario
# saslpasswd2 nixon <<< le cambiamos la clave a una que nos sirva
# sasldblistusers2  <<< para listar los usuarios creados
nixon@dominio.com: userPassword

Segundo paso: Aquí el usuario nixon solo esta creado como usuario normal para ingresar al cyrus, así que por lo mismo deberemos editar el archivo de imap que es el que contiene los administradores de cyrus.

# nano /etc/imapd.conf 

Buscamos la linea que dice admins que debe ser de las primeras lineas.

admins: cyrus root nixon <<< agregamos nuestro usuario a continuación de los otros admins.

Guardamos el archivo y luego por si acaso recargamos o reiniciamos nuestros servicios, de la siguiente manera:
# /etc/init.d/cyrus-imapd restart
# /etc/init.d/saslauthd restart

Tercer paso: Ahora si podremos ingresar al administrador de cyrus
# cyradm -user nixon localhost
IMAP Password: 
              dominio.com> 

Podemos ingresar el comando lm que nos listara todos los nombres de los buzones.Ejemplo nos presentara algo así: ( Solo mostré una parte, según la cantidad de usuarios creados de correo sera lo que presentara).

user.mailer-daemon (\HasChildren)                              
user.mailer-daemon.Basurero (\HasNoChildren)                   
user.mailer-daemon.Borrador (\HasNoChildren)                   
user.mailer-daemon.Enviados (\HasNoChildren)                   
user.mailer-daemon.Spam (\HasNoChildren)          
user.nixon (\HasChildren)                                     
user.nixon.Basurero (\HasNoChildren)                          
user.nixon.Borrador (\HasNoChildren)                          
user.nixon.Enviados (\HasNoChildren)                          
user.nixon.Spam (\HasNoChildren)          

Como ya ingresamos, al administrador de cyrus, veremos la quota de espacio de la cuenta root la cual nos esta dando problemas:

dominio.com> lqr user.root
user.root STORAGE 1004577/1004577 (104%)

Lo que nos indica que estamos pasado en un 4% y por tal motivo no recibe mas correos. Ahora bien modificaremos la quota aumentándola de la siguiente forma:

setquota user.root 100000000 <<< valor expresado en kb

y revisamos:
dominio.com> lqr user.root
user.root STORAGE 1004587/100000000 (1.004587%) <<< ahora solo tenemos usado el 1% :)

Salimos del cyradm

dominio.com> quit
# /etc/init.d/postfix flush
# /etc/init.d/postfix flush                   [  OK  ]
# /etc/init.d/postfix flush                   [  OK  ]
# /etc/init.d/postfix flush                   [  OK  ]

Realizamos varios flush para que desaparezca la cola y revisamos nuevamente si se desencolaron los correos:

# mailq                                       [  OK  ]
Mail queue is empty

Y walaaa se fueron los malditos correos encolados listo. 

Espero que le sirva a quien tenga un problema así o similar.

Dejare una tabla de los comandos mas comunes de cyradm:

ComandoAbreviaturaFunción
listmailboxlm Lista Mailboxes que concuerden con el patrón. Como un "ls" o "dir" 
createmailboxcm Crea un nuevo Mailbox
deletemailboxdm Borra un mailbox y sus subdirectorios 
renamemailbox renm Renombra un mailbox (no se pueden renombrar mailboxes top-level)
setaclmailboxsam Añade una entrada a las ACLs de los mailbox 
deleteaclmailbox dam Borra una entrada de las ACLs de los mailbox 
listaclmailbox lam Lista las ACLs para un determinado mailbox 
setquotasq Establece un tamaño maximo para el mailbox 
listquotalqMuestra la cuota actual para el mailbox
listquotarootlqr ó lqmMuestra las cuotas en los directorios de un mailbox
Saludos.