Comandos básicos para controlar Exim

Exim es el servidor de correo usado por defecto en Debian, la distribución que uso en la mayoría de mis proyectos. Exim no es tan popular como Postfix o Sendmail, pero desde mi punto de vista resulta mucho más robusto y escalable que los dos anteriores, pero como dice el refran en gustos y colores no han escrito los autores. Este post contiene los comando básicos que se pueden usar para gestionar la cola de correos de Exim en las operaciones, espero que les sea de utilidad en caso de que les toque lidiar con un VPS debian.

Exim utiliza el message-ID para referirse a los mensajes en su cola, éste message-ID esta formado por caracteres alfanuméricos con mayúsculas y minúsculas (reconoce la diferencia entre ellas), y su formato es como este: XXXXX-YYYYYY-ZZ. La mayoría de los comandos relacionados con la gestión de la cola y el registro de estos mensajes utiliza estos identificadores de mensaje.

Existen tres archivos por cada mensaje en el directorio de cola. Si usted está tratando con estos archivos a mano, en lugar de utilizar los comandos exim apropiadas como se detalla a continuación, asegúrese de editra/remover todos y no dejar a Exim con restos de mensajes en la cola. Evite el manejo de la cola manualmente porque esto podría creale problemas a la larga, en lugar de ello use los comandos descritos más abajo.

Los archivos en el directorio /var/spool/exim/msglog contienen la información de registro (log) para cada mensaje y se nombran igual que el message-ID. Los archivos en el directorio /var/spool/exim/ tienen el nombre del message-ID, más un sufijo que denota si es la cabecera del mensaje (-H) o el cuerpo del mensajes (-D). Estos directorios pueden contener subdirectorios más hash para hacer frente a las colas de correo realmente grandes, así que no esperes todo lo que aparezca siempre directamente en la parte superior en los directorios /var/spool/exim/ o /var/spool/exim/msglog, cualquier búsqueda usando grep tendrá que ser recursivas. 

Obtener información básica sobre la cola:

Obtener el número de mensaje en la cola:

root@localhost# exim -bpc

Obtener un reporte de los mensajes en la cola (hora en que el mensaje entro a la cola, tamaño, message-ID, remitente, destinatario):

root@localhost# exim -bp

Obtener un reporte resumen de los mensajes que hay en la cola (cantidad, espacio de disco usado, cuánto tiempo hace desde que llegó el más antiguo, cuánto desde que llegó el mensaje más reciente, todo desglosado por dominios y mostrando los totales):

root@localhost# exim -bp | exiqsumm

Obtener exactamente que está procesando Exim en este momento:

root@localhost# exiwhat

Probar como Exim está ruteando los correos a una dirección de correo específica:

root@localhost# exim -bt alias@localdomain.com
user@thishost.com
    <– alias@localdomain.com
  router = localuser, transport = local_delivery
root@localhost# exim -bt user@thishost.com
user@thishost.com
  router = localuser, transport = local_delivery
root@localhost# exim -bt user@remotehost.com
  router = lookuphost, transport = remote_smtp
  host mail.remotehost.com [1.2.3.4] MX=0

Ejecutar una transacción SMTP desde la línea de comando, como si esta fuera hecha desde el IP asignado al Exim. Este comando nos mostrará todos los checks, ACL y filtrs que son aplicados a ese host en particular. Tenga en cuenta que este mensaje no enviara un mensaje de la cola.

root@localhost# exim -bh 192.168.11.22

Display all of Exim's configuration settings:

root@localhost# exim -bP

Buscando en la cola con exiqgrep:

Exim incluye una utilidad que es bastante agradable para buscar patrones a través de la cola, llamada exiqgrep. Es bueno aprender a utilizarla y ponerla en práctica. Si usted no la está usando y si usted no está familiarizado con las distintas banderas que utiliza, puede que probablemente esté haciendo las cosas de la manera difícil, como entubar (pipe) `exim-pb` a otros programas como awk, grep, cut, o `wc – l `. No hay que hacernos la vida más difícil de lo que ya es.

Existen varios indicadores de que el control del comando exiqgrep para buscar en los mensajes de la cola que coincidan con cierto patrón de búsqueda. Estos controls se pueden combinar para llegar a una búsqueda muy particular.

Use el indicador -f para buscar en la cola por mensajes de un remitente específico:

root@localhost# exiqgrep -f [luser]@domain

Use el indicador -r para buscar en la cola por mensajes de un destinatario específico o mensajes enviados a un dominio específico:

root@localhost# exiqgrep -r [luser]@domain

Use -o to print messages older than the specified number of seconds. For example, messages older than 1 day:

root@localhost# exiqgrep -o 86400 […]

Use -y to print messages that are younger than the specified number of seconds. For example, messages less than an hour old:

root@localhost# exiqgrep -y 3600 […]

Use -s to match the size of a message with a regex. For example, 700-799 bytes:

root@localhost# exiqgrep -s '^7..$' […]

Use -z to match only frozen messages, or -x to match only unfrozen messages.

There are also a few flags that control the display of the output.

Use -i to print just the message-id as a result of one of the above two searches:

root@localhost# exiqgrep -i [ -r | -f ] …

Use -c to print a count of messages matching one of the above searches:

root@localhost# exiqgrep -c …

Print just the message-id of the entire queue:

root@localhost# exiqgrep -i

Manejando la cola:

El binario principal de exim (/usr/sbin/exim) es usado con varios flags para hacer que las cosas pasen en la cola de mensajes.La mayoría de las veces se requiere que uno o más message-ID se especifique en la línea de comandos, es aquí donde el comando "exiqgrep -i" descrito anteriormente se vuelve de gran utilidad.

Iniciar el procesamiento de la cola de mensajes:

root@localhost# exim -q -v

Inicial el proecesamiento de la cola de mensajes sólo para los envios locales:

root@localhost# exim -ql -v

Borrar un mensaje de la cola:

root@localhost# exim -Mrm <message-id> [ … ]

Congelar un mensaje de la cola:

root@localhost# exim -Mf <message-id> [ … ]

Descongelar un mensaje de la cola:

root@localhost# exim -Mt <message-id> [ … ]

Despachar un mensaje, ya sea que este esté congelado o no, o que haya o no alcanzado el número máximo de reintentos:

root@localhost# exim -M <message-id> [ … ]

Despachar un mensaje, pero sólo si el momento de reenvío se ha alcanzado:

root@localhost# exim -Mc <message-id> [ … ]

Forzar un mensaje a fallar y enviar un mensaje de rebote como "cancelled by administrator":

root@localhost# exim -Mg <message-id> [ … ]

Borra todos los mensajes congelados:

root@localhost# exiqgrep -z -i | xargs exim -Mrm

Borra todos los mensajes más antiguos que cinco dias (86400 * 5 = 432000 seconds):

root@localhost# exiqgrep -o 432000 -i | xargs exim -Mrm

Congelar todos los mensajes en la cola para un remitente dado:

root@localhost# exiqgrep -i -f luser@example.tld | xargs exim -Mf

Ver la cabecera de un mensaje:

root@localhost# exim -Mvh <message-id>

Ver el cuerpo de un mensaje:

root@localhost# exim -Mvb <message-id>

Ver los logs de un mensaje:

root@localhost# exim -Mvl <message-id>

Añadir un destinatario a un mensaje:

root@localhost# exim -Mar <message-id> <address> […]

Reemplazar el destinatario de un mensaje:

root@localhost# exim -Mes <message-id> <address>

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.