Exim es uno de los servidores de correo más utilizados por su rapidez y facilidad de implementación. Seguramente, el hecho de que sea el servidor de correo utilizado por defecto en los servidores con WHM/cPanel tiene mucho que ver con su elevado volumen de uso. Si utilizas Exim como servidor de correo, aquí te mostramos algunos comandos que te serán muy útiles.
Cómo saber el número de correos enviados por un dominio
En ocasiones podemos necesitar saber cuántos correos ha enviado cierto dominio y desde qué direcciones de correo (para revisar casos de Spam, etc). Con este comando, obtendremos el número de correos enviados por un dominio, y nos arrojará el resultado filtrado por cada cuenta de correo de ese dominio.
grep dominio.com /var/log/exim_mainlog | grep dovecot_login | awk -F"dovecot_login:" '{print $2}' | awk '{print $1}' | sort | uniq -c | sort -n
Cómo saber el número de correos enviados por todos los dominios
Este comando nos arrojará un listado de todas las cuentas de correo que han enviado emails y el número de emails enviados por cada una de esas cuentas desde el principio del log de Exim. 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 nos interesa obtener este mismo listado pero filtrado por una fecha concreta, nuestro comando será este:
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 algún archivo enviando correos por phpMail
Muy útil 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(" {} \;
Cómo saber qué usuario está realizando conexiones por IMAP y cuántas
ps -ef |grep imap | awk '{print $1}' | sort | uniq -c | sort -g -k 1 | tail
Cómo saber los intentos de login fallidos por IP
Comando útil para saber si han explotado o intentado explotar una cuenta de correo en 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
Cómo saber cuántos correos hay en la cola, por dominio
exim -bp | /usr/sbin/exiqsumm
Cómo saber cuántos correos hay en la cola, por cuenta de correo
exim -bp|awk 'NF>1{print $4}' | sort | uniq -c |sort -nk1
Cómo forzar el envío de un correo en concreto
exim -M email-id
Cómo forzar el procesado de la cola de correo
exim -qf
Cómo ver el log de un correo
exim -Mvl mensajeID
Cómo ver el cuerpo de un correo
exim -Mvb mensajeID
Cómo ver la cabecera de un correo
exim -Mvh mensajeID
Cómo eliminar un correo sin enviar un correo de error al remitente
exim -Mrm messageID
Cómo eliminar un correo enviando un correo de error al remitente
exim -Mg messageID
Cómo listar el número de correos en estado «Frozen»
exim -bpr | grep frozen | wc -l
Cómo eliminar los correos en estado «Frozen»
exim -bpr | grep frozen | awk {'print $3'} | xargs exim -Mrm
Cómo saber el número de correos que hay en la cola
exim -bpc
Para tener un poco más de información acerca de estos correos que están en la cola:
exim -bp
Cómo ver cuantos correos de un dominio concreto hay en la cola
exim -bp | grep 'dominio.com>'
Cómo eliminar de la cola los correos de una determinada dirección de correo
for i in $(exim -bp|grep cuenta@dominio.com|grep -|grep @|awk {'print $3'});do exim -Mrm $i;done
Cómo eliminar todos los correos de la cola de correo
exim -bp | awk '/^ *[0-9]+[mhd]/{print "exim -Mrm " $3}' | bash
Todos estos comandos te ayudarán a gestionar de una manera efectiva tu servidor de correo, proporcionándote información muy valiosa para lidiar con el temido Spam y otras cuestiones. Si sabes algún comando que pueda ser útil y no se encuentre aquí, no dudes en compartirlo en los comentarios!