Lista de comandos útiles para Exim

Los servicios de hosting Linux, como los servicios de VPS con paneles de control WHM/cPanel, tienen instalado por defecto Exim.

El MTA (agente de transferencia de correo) que se ejecuta en tu servidor se llama Exim, y controla las entregas de correo electrónico. Existen ciertos comandos que podés ejecutar a través de SSH y que te permitirán administrar la cola de correo Exim.

Esta guia está orientada a servicios de VPS o dedicados, ya que es necesario tener acceso root al servidor para ejecutar los comandos.

Generalmente, los servidores de correo requieren poca interacción con el usuario; puede haber ocasiones en las que sea necesario administrar la configuración del Exim. Por ejemplo: podés requerir disminuir la cantidad de intentos de entrega de un correo cuando este no pueda entregarse.

Para trabajar con Exim, primero tenés que iniciar sesión en tu servidor utilizando SSH y, posteriormente, usar los siguientes comandos para trabajar con Exim:

– Listar la cantidad de emails que hay en la cola:

exim -bpc

– Cómo listar el número de correos en estado «Frozen»

exim -bpr | grep frozen | wc -l

– Listar los correos que hay en cola, ordenados por cuenta de correo

exim -bp|awk ‘NF>1{print $4}’ | sort | uniq -c |sort -nk1

– Listar cantidad de correos que hay en cola para un dominio en concreto.

exim -bp | grep ‘dominio.com>’

– Buscar en la cola de correo los mensajes de un destinatario o dominio en particular:

exiqgrep -r [luser]@domain

Buscar en la cola de correo los mensajes de un remitente específico:

exiqgrep -f [luser]@domain

– Listar informacion sobre los correos que están en cola:

exim -bp

Muestra el tiempo en que los emails estan encolados, el tamaño, el ID, remitente y destinatario.

– Mostrar un resumen de los emails que hay en cola:

exim -bp | exiqsumm

Muestra un recuento, el volumen, el más antiguo, el más nuevo, el dominio y los totales.

– Mostrar la actividad actual de Exim.

exiwhat

– Testear una transaccion Exim SMTP:

exim -bh ipaddress

Falsifica una transacción SMTP que emana de ipaddress. El estado de Exim se mostrará a medida que se ejecute la transacción. Tené en cuenta que el mail no será entregado.

Mostrar configuraciones del Exim:

exim -bP

* Número de correos enviados por un dominio:

– Para saber el número de correos enviados por un dominio, y desde qué direcciones fueron enviadas (para revisar casos de SPAM, etc.) usa este comando:

grep dominio.com /var/log/exim_mainlog | grep dovecot_login | awk -F»dovecot_login:» ‘{print $2}’ | awk ‘{print $1}’ | sort | uniq -c | sort -n

* Número de correos enviados por todos los dominios:

– Para listar todas las cuentas de correo que han enviado emails y su respectiva cantidad de mails enviados. Muy útil también para detectar casos de SPAM.

.cat /var/log/exim_mainlog | grep «A\=dovecot_login» | awk -F»A=dovecot_login:» {‘print $2′} | cut -f1 -d’ ‘ | sort | uniq -c | sort -n | awk {‘print $1, » correos enviados por » , $2’}

– Si querés obtener el mismo listado anterior, pero filtrado por una fecha concreta:

cat /var/log/exim_mainlog | | grep «2016-09-30» | grep «A\=dovecot_login» | awk -F»A=dovecot_login:» {‘print $2′} | cut -f1 -d’ ‘ | sort | uniq -c | sort -n | awk {‘print $1, » correos enviados por » , $2’}

– Cómo saber si hay mails enviados mediante phpMail:

Util para detectar fuentes de SPAM, que suelen utilizar esta función en los scripts para realizar envíos no autorizados.

find ./ -name \*.php -exec grep -l «mail(» {} \;

– Para saber qué usuario está realizando conexiones por IMAP:

ps -ef |grep imap | awk ‘{print $1}’ | sort | uniq -c | sort -g -k 1 | tail

– Filtrar intentos de login fallidos por IP:

Comando útil para saber si han intentado vulnerar una cuenta de correo con un ataque por fuerza bruta.

awk -F»ffff:» ‘/FAILED/ {IP[$NF]++;}END{ for ( host in IP ) print IP[host]» «host}’ /var/log/maillog | awk ‘{ if ( $1 > 99 ) print $0}’ | sort -nk1 | sed ‘s#]##’ > IPS; for IP in `awk ‘{print $2}’ IPS`; do echo -n $(grep $IP IPS); echo -n » – Failed users: «; grep $IP /var/log/maillog | awk -F»user=» ‘/FAILED/ {print $2}’ | cut -d, -f1 | sort | uniq | wc -l; done

– Muestra los mensajes anteriores a un número especificado de segundos:

exiqgrep -o seconds […]

– Muestra los mensajes nuevos posteriores a un numero especificado de segundos:

exiqgrep -y seconds […]

– Localiza mensajes que coincidan con un tamaño específico:

exiqgrep -s ‘^4..$’ […]

Por ejemplo, 400-499 bytes. Utiliza la instrucción -z para filtrar únicamente los mensajes congelados, o -x para filtrar solo los mensajes no congelados. Para listar el ID del mensaje, utiliá -I, mientras que -c muestra un recuento de mensajes.

– Mostrar un recuento de mensajes de la cola de correo:

exiqgrep -c …

– Iniciar la ejecución de la cola de correos:

root@localhost# exim -q -v

– Forzar el procesado de la cola de correo:

exim -qf

– Iniciar la ejecución de una cola aislada para entregas locales:

root @ localhost # exim -ql -v

– Cómo eliminar un correo sin enviar un correo de error al remitente:

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

– Cómo eliminar un correo enviando un correo de error al remitente:

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

– Eliminar correos de una determinada direccion en la cola de mails:

for i in $(exim -bp|grep cuenta@dominio.com|grep -|grep @|awk {‘print $3’});do exim -Mrm $i;done

– Eliminar todos los correos de la cola de correo:

exim -bp | awk ‘/^ *[0-9]+[mhd]/{print «exim -Mrm » $3}’ | bash

– Congelar un mensaje:

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

– Lanzar un mensaje:

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

– Entregar un mensaje:

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

– Entregar un mensaje si se ha alcanzado el tiempo de reintento:

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

– Cómo forzar el envío de un correo en concreto:

exim -M email-id

* Eliminar los correos que estan en estado «Frozen»:

– #1:

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

– #2:

exim -bpr | grep frozen | awk {‘print $3’} | xargs exim -Mrm

– Eliminar todos los mensajes anteriores a un número determinado de segundos:

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

– Congelar en la cola de envíos todo el correo de un remitente determinado:

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

– Cómo ver el header de un correo:

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

– Cómo ver el cuerpo de un mensaje:

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

– Cómo ver el log de un correo:

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

– Visualizar el log de transacciones de un correo en la cola mediante su ID:

exigrep -I -l <message-id> /var/log/exim_mainlog

– Agregar un destinatario a un mensaje:

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

– Editar un remitente del mensaje:

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

Estos comandos te ayudarán de manera efectiva en tu servidor de correos, brindándote información útil para lidiar con el SPAM y para la investigación de incidentes.

Y recordá que si tenés dudas, podés escribirnos a soporte@baehost.com

Hasta la próxima!

Deja una respuesta