Buscar origen de spam en un servidor con qmail y plesk

Esto puede serte muy útil si alguien está utilizando tu servidor para enviar spam y quieres ver su procedencia.

Comprueba el número de mensajes que hay en la cola de Qmail ejecutando el siguiente comando:

/var/qmail/bin/qmail-qstat

te salda algo como lo siguientemessages in queue: 27843messages in queue but not yet preprocessed: 256
Si la cola tiene muchos mensajes es que algo no va bien y están utilizando el servidor para enviar SPAM, veamos como descubrir al culpable.
Si el correo está siendo enviado a través del servidor smtp, pero no desde un script PHP, puedes ejecutar el siguiente comando:

cat /usr/local/psa/var/log/maillog |grep -I smtp_auth |grep -I user |sort |uniq -c |sort -n

aparecerán las conexiones smtp con el usuario y contraseña y la ip de acceso, si hay muchas conexiones de un mismo usuario podemos haber encontrado el culpable.

Para vez las cabeceras de los mensajes de la cola podemos ejecutar:

/var/qmail/bin/qmail-qread

así se muestran los remitentes y destinatarios de los mensajes. Si hay algún mensaje sospechsos hay que investigar si es SPAM. Puede buscar el mensaje por su id, como por ejemplo 64166987

find /var/qmail/queue/mess/ -name 64166987cat /var/qmail/queue/mess/0/64166987

examina el mensaje y busca la primera línea “Received” para saber desde dónde se envió la primera vez, por ejemplo, si encuentras:

Received: (qmail 24019 invoked by uid 1007); 3 Nov 2010 12:46:52 +0100

Significa que este mensaje fue enviado a través de algún script por el usuario con uid 1007. Usando este uid podemos encontrar el dominio que está enviando el correo:

grep 1007 /etc/passwd

Si el uid es el 48  (del servidor apache) significa que el correo fue enviado a través de un script PHP.En este caso, puedes intentar descubrir el spammer usando la información de los propios correos (direcciones de/para, asunto o cualquier otro dato). Generalmente es muy difícil descubrir la fuente de spam en estos casos, y más si tienes muchos dominios en el servidor.

Si la línea “Received” es como sigue:

Received: (qmail 22672 invoked from network); 03 nov 2010 15:30:12 +08002 Received: from dominio.com (192.168.1.1)

significa que el mensaje ha sido aceptado y entregado a través del servidor SMTP y que el remitente es un usuario de correo autorizado.

Fuente: