Comandos Exim para SSH: Gestiona la cola de correo
Dos de los MTA (Mail Transport Agent, o agente de transporte de correo) más utilizados a nivel mundial en los servidores son Exim y Postfix. Entre otras muchas cosas, el motivo principal es que los paneles de control más utilizados, como cPanel (exim) o Plesk (Postfix), los montan de serie. En el caso de Plesk, además de Postfix, podemos optar por qmail.
En muchas ocasiones, nos encontramos con problemas en el correo, que podemos resolver mediante el uso de SSH, introduciendo determinados comandos, que nos pueden dar mucha información. Podemos controlar y encontrar el motivo de una salida de SPAM, por ejemplo. También podemos forzar correo a que salga si, por el motivo que sea, se ha quedado congelado. Incluso podemos buscar correos de un determinado emisor o receptor, para ver qué ocurre con dicho correo.
Ambos MTA nos permiten tener detalles muy concretos mediante sus comandos. Por ello, vamos a analizarlos, y explicarte para que sirven. Recuerda, que si tienes un servidor dedicado con nosotros, la administración esta incluida en el precio, por lo que nosotros nos ocupamos de analizar cualquier circunstancia con el correo, y ejecutar los comandos necesarios para solucionarlo.
Contenidos
- 1 Comandos Básicos para Exim por SSH
- 1.1 Número de correos en cola
- 1.2 Listar y resumir correos en cola
- 1.3 Buscar correos de un receptor concreto
- 1.4 Buscar correos de un emisor concreto
- 1.5 Forzar la salida de un correo determinado
- 1.6 Forzar la salida de todo el correo en cola
- 1.7 Ver cabecera de un correo en concreto
- 1.8 Ver cuerpo del mensaje de un correo en concreto
- 1.9 Ver logs de un correo en concreto
- 1.10 Ver que hace exim en estos momentos
- 1.11 Detener o congelar un correo determinado en cola
- 1.12 Eliminar un correo determinado en cola
- 1.13 Eliminar todos los correos de un dominio concreto
- 1.14 Eliminar todos los correos congelados
- 1.15 Eliminar la cola completa de correo
- 1.16 Comparte esto:
- 1.17 Me gusta esto:
Comandos Básicos para Exim por SSH
Muchos comandos, nos van a solicitar el «id-correo». El id-correo lo podemos obtener mediante el listado de la cola de correo. Es decir, utilizando exim -bp, nos saldrá el listado de correos en cola. El ID es alfanumérico, y se encuentra tras las horas en cola, y el tamaño, muy similar a: 1e1k0W-0008UF-LG
Número de correos en cola
Nos permite obtener el número de correos que tenemos en cola. En general, debería ser 0. Un número alto puede indicar que está saliendo SPAM desde nuestro servidor.
1 | exim -bpc |
Listar y resumir correos en cola
Es un complemento del comando anterior. Nos permite conocer, si hay algún correo en cola, datos sobre estos correos. Las horas que está en la cola, el tamaño, su ID, emisor, y receptor.
1 | exim -bp |
Se puede obtener un detalle más concreto, con este comando que hace un resumen:
1 | exim -bp | exiqsumm |
Buscar correos de un receptor concreto
Si nos interesa saber cuantos correos se han enviado a un receptor en concreto, que se han quedado en cola, podemos hacerlo mediante este comando.
1 | exiqgrep -r cuenta@dominio.com |
Buscar correos de un emisor concreto
Es el mismo caso que el anterior, pero cambiando el receptor, por el emisor. Es decir, nos permite conocer los correos enviados por un determinado emisor, que se han quedado en cola.
1 | exiqgrep -f cuenta@dominio |
Forzar la salida de un correo determinado
Cuando un correo no sale, por el motivo que sea, y sabemos que el receptor ya ha resuelto su problema, o simplemente queremos volver a intentar que sea enviado, podemos forzarlo con este comando.
1 | exim -M 'id-correo' |
Forzar la salida de todo el correo en cola
Este comando nos permite hacer lo mismo que el anterior, pero con todo el correo. Es decir, podemos forzar la salida de todo el correo en cola, para que se intente enviar.
1 | exim -qff |
Ver cabecera de un correo en concreto
Este comando nos permite conocer la cabecera de un correo determinado. Esto es muy importante si consideramos que se está enviando SPAM. El comando nos mostrará datos muy interesantes, como desde donde se envía, si ha sido por SMTP o PHP, hacia dónde se dirige, y una de las cosas más interesantes, es el «X-PHP-Script», que nos indica mediante qué archivo PHP se ha enviado el correo, pudiendo identificar un archivo inyectado en el dominio enviando spam.
1 | exim -Mvh 'id-correo' |
Ver cuerpo del mensaje de un correo en concreto
Nos permite conocer el cuerpo de un mensaje. Es importante, si consideramos que el servidor emite SPAM, para confirmar que esto está sucediendo. Muchas veces, por ejemplo, en foros, sistemas de comentarios… se registran bots porque no tenemos verificación CAPTCHA, esto provoca, que el servidor envíe correo para confirmar el registro, y se queden en cola, porque el correo de los bots no existe. ¿Es SPAM? No, en este caso, no es SPAM, aunque tenga toda la pinta mediante comandos anteriores (muchos correos en cola, cabeceras con PHP-Script, direcciones extrañas en el comando exim -bp…), se puede confirmar que sea o no SPAM analizando el contenido.
Si el problema es de SPAM, eliminaremos el archivo PHP causante, y generalmente, actualizaremos los scripts a sus últimas versiones para evitar nuevas inyecciones. En cambio, si no es SPAM saliente, y se trata de correos enviados a bots que se registran en nuestros sitios, lo ideal es activar un CAPTCHA que evite esos registros automáticos.
1 | exim -Mvb 'id-correo' |
Ver logs de un correo en concreto
Este comando es básico para saber porqué un correo esta en cola. Este comando nos muestra todos los detalles en el log de exim. Gracias a esto, podemos saber detalles de qué responden los servidores que deben recibir el correo, y que nos dicen del porque no lo reciben.
1 | exim -Mvl 'id-correo' |
Ver que hace exim en estos momentos
Nos permite conocer que hace exim en un momento determinado. Es ideal también si consideramos que esta saliendo spam desde nuestro servidor, para monitorizar qué es lo que hace, y obtener detalles concretos.
1 | exiwhat |
Detener o congelar un correo determinado en cola
Nos permite evitar que un correo determinado salga de forma automática. Puede servirnos si queremos analizar detalles del correo.
1 | exim -Mf 'id-correo' |
Eliminar un correo determinado en cola
Este comando elimina un correo determinado de la cola, evitando que se entregue. Generalmente, si un correo esta en cola, y no se envia, y tenemos claro el porque, y queremos desistir de ese envio, utilizaremos el comando.
1 | exim -Mrm 'id-correo' |
Eliminar todos los correos de un dominio concreto
El mismo caso que el anterior, pero para un dominio concreto y completo. Es decir, eliminará todos los correos en cola del dominio que indiquemos.
1 | exiqgrep -i -r dominio.com | xargs exim -Mrm |
Eliminar todos los correos congelados
Eliminaremos todos los correos congelados, que no se van a enviar de forma automática. Si queremos probar el envio de estos correos congelados, deberemos usar el comando «exim -qff».
1 | exiqgrep -z -i | xargs exim -Mrm |
Eliminar la cola completa de correo
Este comando eliminará la cola completa de nuestro servidor de correo, dejando la misma a 0. Puede ser de utilidad tras solucionar una salida de SPAM.
1 | exim -bp | awk '/^ *[0-9]+[mhd]/{print "exim -Mrm " $3}' | sh |