controlando la cola con qshape (parte 1 de 2)

19 de febrero de 2009

qshape es una utilidad de postfix para controlar la "vejez" de los correos en la cola. Es decir nos permite detectar cuanto tiempo llevan los correos entrando o saliendo de las colas. El objetivo es determinar cuellos de botella. Si un correo lleva mucho tiempo en la cola eso quiere decir que hay una bottleneck y que algo puede estar pasando.

Ejecutemos un qshape a secas:

[zimbra@servidor ~]$ qshape 
                     T  5 10 20 40 80 160 320 640 1280 1280+
              TOTAL  4  4  0  0  0  0   0   0   0    0     0
      miempresa.com  3  3  0  0  0  0   0   0   0    0     0
        greenlog.es  1  0  0  1  0  0   0   0   0    0     0

La llamada a qshape sin parámetros muestra la vejez de la cola incoming y active al mismo tiempo y solo de los destinatarios.
En total tenemos 4 correos procesándose en esta cola. Tres correos pertenecientes al dominio miempresa.com y uno al dominio greenlog.es. Los tres correos de miempresa.com llevan menos de 5 minutos en la cola y el de greenlog.es lleva entre 10 y 20 minutos en la cola. En este caso algo está pasando con este correo de greenlog.es porque entre 10 y 20 minutos en la cola de incoming/active es mucho tiempo.
Si tuviéramos algún correo dentro de la columna "1280+" estaríamos con un correo que lleva posiblemente un día entero en la cola. Un día son 1440 minutos.

Si utilizamos el parámetro -s estaríamos viendo la misma estadística pero los remitentes. Ejecutar el comando "qshape" es equivalente a ejecutar el comando "qshape incoming active".

Veamos ahora lo mismo pero con la cola deferred:

[zimbra@servidor ~]$ qshape deferred       
                T  5 10 20 40 80 160 320 640 1280 1280+
         TOTAL  3  0  0  0  1  0   0   0   0    0     2
      yahoo.es  1  0  0  0  1  0   0   0   0    0     0
  hotmailo.com  1  0  0  0  0  0   0   0   0    0     1
gruponegro.com  1  0  0  0  0  0   0   0   0    0     1

Vemos que en la cola de deferred (correos que no se pueden entregar) hay un correo para el dominio hotmailo.com que se acerca a casi un día en la cola. Me huele que el dominio hotmailo.com no existe y que alguien se ha equivocado al escribir la dirección de correo.
Si consultamos ahora lo mismo pero desde el lado contrario (el remitente):

[zimbra@servidor ~]$ qshape -s deferred
                      T  5 10 20 40 80 160 320 640 1280 1280+
               TOTAL  3  0  0  0  1  0   0   0   0    0     2
       miempresa.com  3  0  0  0  1  0   0   0   0    0     2

Podemos ver claramente la relación entre "qshape -s deferred" y "qshape deferred".

Vemos que está pasando algo con el correo del dominio gruponegro.com porque lleva más de 1280 minutos en la cola de deferred.

[zimbra@servidor ~]$ cat /var/log/zimbra.log | grep gruponegro.com
Feb 19 21:31:28 servidor postfix/smtp[28428]: connect to gruponegro.com 
[208.87.149.250]: Connection timed out (port 25)
Feb 19 21:31:28 servidor postfix/smtp[28428]: AF8B2682E2: to=, relay=none, delay=172570, 
status=deferred (connect to gruponegro.com[208.87.149.250]: Connection timed out)

Lo que está pasando es que el servidor MTA del dominio gruponegro.com (IP 208.87.149.250) no está disponible porque da timeouts.

5 comentarios:

Pupilo)-GT dijo...

Gracias por la información me ha servido de mucho.., solo tengo una pregunta si tengo en cola muchos archivos que no se entregaran por que tiene mala la dirección y dominio como le hago para que después de cierto tiempo los borre..?
Nuevamente gracias por compartir conocimientos...!!!

amperis dijo...

Haces un "./postqueue -p" para saber el ID del mensaje a borrar y luego haces un "./postsuper -d el_ID" para borrar el mensaje.

Con "./postsuper -d ALL" borrar toda la cola deferred.

PuPilo) dijo...

Gracias por la indicación, con lo realizado el servidor le dijo a dios a 743 correos...!!!
Saludos

Anónimo dijo...

como se puede Borrar todos los correos provenientes de cierto dominio???muy buen blog, felicidades!

Anónimo dijo...

@anonimo: Se puede borrar los correos de cierto dominio, o mejor "correo" con el siguiente comando:

mailq | awk ' /^[0-9A-F][0-9A-F]*[^*].*MAILER-DAEMON/ {print $1}' | sed s/\*//g | sudo xargs -rn1 postsuper -d

Donde, en MAILER-DAEMON se debe colocar el correo o dominio a ingresar.