Gestionando la cola de postfix

23 12 2010

Cuando existen problemas con la recepción del correo provocados por un exceso de mails encolados en postfix, podemos optar por retener cierta cantidad de mails y entregarlos posteriormente.

# mailq (Muestra la lista de emails encolados.)
# mailq | cut -d " " -f 1 | grep "*" | wc -l (Cuenta el número de emails en la cola pendientes de enviar.)

Todos los email que tengan el ID terminado por un “*” están pendientes de ser entregados y si terminan en “!” están retenidos y no se van a entregar hasta que se liberen. Si el mail se ha intentado enviar y no se ha podido, aparecerá el ID junto a una pequeña descripción del error.

Si se necesita retener los mail procedentes de una dirección concreta, se puede usar el siguiente conjunto de órdenes:

# for i in `mailq | grep "user@host.com" | awk '{print $1}' | grep "*" | cut -d* -f1`; do postsuper -h ${i}; done (Retiene los mails que coincidan con ese remitente)
# postsuper -h ALL (Retiene todos los mails encolados)

Si es para mails de salida, emplear este otro comando:

# for i in `mailq | head | grep -E '(*|host.com)' | awk '{print $1}' | grep "*" | cut -d* -f1`; do postsuper -h ${i}; done (Retiene los mails que coincidan con ese remitente)
# postsuper -h ALL (Retiene todos los mails encolados)

Ahora los ID de los mails afectados, irán acompañados del carácter “!”, indicando que se encuentran retenidos.

Para liberarlos de la retención y ponerles en la cola de envío, se puede usar cualquiera de estos tres comandos:

# for i in `mailq | grep "user@host.com" | awk '{print $1}' | grep "\!" | cut -d! -f1`; do postsuper -r ${i}; done (Vuelve a encolar los mails que coincidan con ese remitente)
# postsuper -r ALL hold (Vuelve a encolar todos los mails que se encuntran retenidos)
# postsuper -H ALL (Libera todo el mail que se encuentra retenido)

Para borrar los mensajes de cualquier cola en la que se encuentren (sí, borrar completamente):

# postsuper -d "ID del mensaje" (Borra un mensaje determinado)
# postsuper -d ALL (Borra todos los mensajes)
# postsuper -d ALL hold (Borra los que se encuentran retenidos)

Para ver un mesaje:
# postcat -q 12341234

Para reprocesar la cola deferred:
# postqueue -f

Advertisements

Actions

Information

3 responses

3 01 2011
Thedry

Gracias, buen post, me ayudo mucho.

26 08 2013
Pablo

muy bien post!!! me sirvio muchisimo para limpiar la cola de correos.

Una pregunta, como hago para borrar de la cola de correos, SOLO aquellos que sean de un domini especifico…ejemplo, quiero borrar de la cola los mensajes que sean del dominio @hotmail.com …como hago?

Mil gracias por tu aporte!!

26 08 2013
Pablo

aca encontre la solucion!!!…comparto con los amigos linuxeros:

mailq | awk ‘BEGIN { RS = “” } /cadena buscada/ { print $1 } ‘ | tr -d ‘*!’ | postsuper -d –

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s




%d bloggers like this: