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:

Guatemala en Leyendas 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...!!!

Anónimo 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.

Anónimo 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.