Localizar envíos de Spam en Plesk

En este artículo os vamos a explicar diferentes formas de localizar envíos de spam, el spam se suele originar vía web, smtp o mediante algún script en perl.

Si tenemos emails en cola lo mejor es abrir uno de esos email, en las cabeceras se puede encontrar información muy valiosa.
En el caso de no tener emails en cola podemos buscar en los logs de nuestras webs o logs de email.

Partimos de la base que el remitente lo pueden falsear por lo cual no tenemos información desde que dominio o cuenta email envían spam.

Si el spam se envía  desde una web, la clave es buscar X-PHP-Script o userid, nos dice desde que URL o dominio  se envía spam.Received: by miservidor.com (Postfix, from userid 10039)
id C8D5E9793; Sun, 25 Jun 2017 09:43:34 +0200 (CEST)
From: "Remitente" <remitente@miservidor.com>
To: "Destinatario" <destinatario@otroservidor.com>
Subject: Asunto del Email
Date: Fecha email +0200
X-PHP-Script: midominio.com/xmlrpc.php for XXX.XXX.XXX.XXX (no está en todas las versiones de Plesk)
X-PHP-Originating-Script: 10039:class-phpmailer.php
X-Mailer: PHPMailer 5.2.22 (https://github.com/PHPMailer/PHPMailer)
MIME-Version: 1.0
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit
Si tenemos un Plesk más antiguo puede que no incluya la cabecera X-PHP-Script si ejecutamos  desde SSH ungrep de userid nos dirá desde que dominio se envía spam:
grep 10039/etc/passwd
ftpUser:x:10039:10039::/var/www/vhosts/midominio.com:/bin/false
Cabeceras de emails enviados desde fuera del servidor (acceso stmp), no tienen cabecera X-PHP-Script
Received: from ordenador (hostconexion [XXX.XXX.XXX.XXX])  esta cabecera no existe en los emails enviados vía web, nos indica de que IP proviene el mensaje.
by miservidor.com (Postfix) with ESMTPA id 1429F61E0461
for <destinatario@otroservidor.com>; Fecha email
From: "Remitente" <remitente@miservidor.com>
To: "Destinatario" <destinatario@otroservidor.com>
Subject: Asunto del Email
Date: Fecha email +0200
Message-ID: <001301d2ebfe$6576c9f0$30645dd0$@miservidor.com>
MIME-Version: 1.0
Content-Type: multipart/related;
boundary="----=_NextPart_000_0014_01D2EC0F.2901E3E0"
X-Mailer: Microsoft Outlook 14.0
Thread-Index: AdLr/mTQpC2POA4VQoOOlh/3sCjutA==
Content-Language: es
X-PPP-Message-ID: <20170623085505.25595.16770@miservidor.com>
X-PPP-Vhost: miservidor.com
En este caso lo importante es la IP si buscamos autentificaciones en el log de correo por esa IP veremos desde que cuenta envían spam.
Postfix :grep 'sasl_method=LOGIN' /usr/local/psa/var/log/maillog | grep XXX.XXX.XXX.XXX Qmail:grep smtp_auth /usr/local/psa/var/log/maillog |grep user | grep XXX.XXX.XXX.XXX

Normalmente todo el spam vía web se genera por accesos POST, una manera es buscar esos accesos en todos nuestros dominios: grep POST /var/www/vhosts/system/*/logs/access_log |grep -v '" 30' |grep -v '" 50' |grep -v '" 40' plesk viejos tiene otra ruta: grep POST /var/www/vhosts/*/statistics/logs/access_log |grep -v '" 30' |grep -v '" 50' |grep -v '" 40' Si tenemos WordPress u otro CMS podemos omitir algunos accesos que sabemos que no son envíos de spam, por ejemplo acceso a wp-login.php, wp-cron.php, xmlrpc.php
Por lo cual podemos añadir al final de los comandos anteriores: |grep -v wp-login.php |grep -v wp-cron.php |grep -v  xmlrpc.php

Postfix Listado Ordenado por nº autentificaciones grep 'sasl_username' /usr/local/psa/var/log/maillog | awk '{print $9}' | sort | uniq -c | sort -nr | head Qmail Listado Ordenado por nº autentificaciones grep smtp_auth /usr/local/psa/var/log/maillog |grep user |awk '{print $11}' |sort |uniq -c |sort -nr | head

Otra forma de envío de spam es mediante algún proceso perl. Muchas veces suelen subir algún fichero a una de nuestras webs por no estar actualizada. La forma fácil es hacer un top en el servidor y buscar el PID del proceso perl, con ese PID ejcutaremos:cat proc/PID/cwd otra opción es lsof -p PID Cuando ya tengamos localizado el proceso perl lo recomendable es eliminarlo y matar todos los proceso perl:killall -9 perl

Borrar emails en cola desde SSH

Qmail Borrar emails con cierto Texto en el asunto: /usr/local/psa/admin/bin/mailq -STextoAsunto Qmail Borrar todos los emails: /usr/local/psa/admin/bin/mailq -DPostfix Borrar emails con cierto Texto: find /var/spool/postfix/ -type f -exec grep -l 'Texto-del-Email' '{}' ; | xargs -n1 basename | xargs -n1 postsuper -d Postfix Borrar todos los emails: postsuper -d ALL

Plesk antiguos que no indican en cabeceras Vhost

Qmail añadir header web
https://support.plesk.com/hc/en-us/articles/213959565
Postfix añadir header web
https://support.plesk.com/hc/en-us/articles/213914405

Para comentar sobre este artículo, rellena el formulario. Los campos marcados con un asterisco (*) son obligatorios.