Buscando al spammer «Nobody»

Probado en Plesk+Qmail en Ensim+Sendmail no logro arrancarlo y dicen que en Cpanel+Exim funciona perfecto.

Cuantas veces quisieramos saber quien esta enviando spam atraves de scripts php o cgi en nuestro server o que sitios estan comprometidos y los usan los spammers para sus cometidos. Si ud mira en su php.ini la funcion mail realiza un llamado directo a /usr/bin/sendmail esto es lo que pretendemos monitorear.

Este sencillo script crea un archivo log donde se almacena la actividad registrada por sendmail. Sirve tambien en caso de que nuestro servidor este comprometido en sus archivos temporales /tmp o /var/tmp o cualquier otro. La idea es intercambiar el binario de sendmail por este sript de perl y monitorear en /var/log/formmail.log toda al actividad de envio de correo.

Instalacion y configuracion.
1) Paramos qmail
service qmail stop
2) Hacemos Backup (Por nada te lo saltes; Respeta el nombre del backup ya que el perl lo usara)
mv /usr/sbin/sendmail /usr/sbin/sendmail.act
3) Crea el script de perl que reemplazara a /usr/sbin/sendmail
pico -w sendmail
4) Le asignanos permisos de ejecucion
chmod +x /usr/sbin/sendmail
5) Creamos el archivo de salida (El Log)
echo > /var/log/formmail.log
6) Le damos permisos al log
chmod 777 /var/log/formmail.log
7) Ya esta A hacer pruebas y a mirar el log


#!/usr/bin/perl

# use strict;

use Env;

my $date = `date`;

chomp $date;

open (INFO, «>>/var/log/formmail.log») || die «Failed to open file ::$!»;

my $uid = $>;

my @info = getpwuid($uid);

if($REMOTE_ADDR) {

print INFO «$date – $REMOTE_ADDR ran $SCRIPT_NAME at $SERVER_NAME \n»;

}

else {

print INFO «$date – $PWD – @info\n»;

}

my $mailprog = ‘/usr/sbin/sendmail.act’;

foreach (@ARGV) {

$arg=»$arg» . » $_»;

}

open (MAIL,»|$mailprog $arg») || die «cannot open $mailprog: $!\n»;

while ( ) {

print MAIL;

}

close (INFO);

close (MAIL);

Redireccionar emails salientes a la IP que queramos

La necesidad de redireccionar hacia otra IP todos los emails salientes en un servidor puede ser debido a que hallan metido la IP principal de salida SMTP en alguna buena jodida lista negra en la que tarden mucho en des-listar la IP. Para solucionar este problema rápidamente hay que redireccionar todo el tráfico saliente del puerto 25 o 587 (o al puerto que tengamos configurado el SMTP) hacia otra IP que tengamos configurada en nuestro servidor. La regla de IPTables es la siguiente:

Regla para el puerto 25:


iptables -t nat -A POSTROUTING -p tcp --dport 25 -j SNAT --to-source AQUI-LA-NUEVA-IP

raiola manda y no el panda

Error en Qmail con demasiados procesos /var/qmail/bin/relaylock

qmail-logo

Si detectectamos en el servidor Linux con CentOS y notas que tienes muchos procesos del tipo:
/var/qmail/bin/relaylock /var/qmail/bin/qmail-smtpd /var/qmail/bin/smtp_auth /var/qmail/bin/

Es posible que el servidor no resuelva correctamente las DNS de los dominios, por lo cual el sistemas de listas negras tarda mucho en cerrarse y se acumulan los procesos.
Continuar leyendo «Error en Qmail con demasiados procesos /var/qmail/bin/relaylock»

Como luchar contra el SPAM en Plesk con Qmail

Primero compruebe que todos los dominios tienen la opción ‘Correo para usuario inexistente’ definida a ‘Rechazar’ pero no a reenviar. Puede cambiar este ajuste para todos los dominios usando “Operaciones en Grupo” en la página “Dominios” del CP de Parallels Plesk Panel. La prestación ‘Rechazar correo para usuario inexistente’ está disponible a partir de Parallels Plesk Panel 7.5.3.

Asimismo, compruebe que todas las redes e IPs incluidas en la lista blanca son de su confianza.

Compruebe cuántos mensajes hay en la cola de Qmail con:

# /var/qmail/bin/qmail-qstat
messages in queue: 27645
messages in queue but not yet preprocessed: 82

Si la cola tiene demasiados mensajes, intente descubrir la procedencia del SPAM.

Si el correo está siendo enviado por un usuario autorizado pero no desde el script PHP, puede ejecutar el comando que aparece a continuación para descubrir el usuario que envió la mayoría de mensajes (desde Plesk 8). Tenga en cuenta que es necesario tener activada la opción ‘Autorización SMTP’ en el servidor para poder ver estos registros:

# cat /usr/local/psa/var/log/maillog |grep -I smtp_auth |grep -I user |awk ‘{print $11}’ |sort |uniq -c |sort -n

La ruta a ‘maillog’ puede cambiar en función del SO que esté usando.

El próximo paso es la utilidad `qmail-qread`, que puede usarse para leer las cabeceras de los mensajes:

# /var/qmail/bin/qmail-qread
18 Jul 2005 15:03:07 GMT #2996948 9073 bouncing
done remote user1@domain1.com
done remote user2@domain2.com
done remote user3@domain3.com
….

Esta muestra los remitentes y destinatarios de los mensajes. Si el mensaje incluye demasiados destinatarios, probablemente se tratará de SPAM. Ahora intente encontrar este mensaje en la cola por su ID #2996948:

# find /var/qmail/queue/mess/ -name 2996948

examine el mensaje y encuentre la primera línea “Recibido” para saber desde dónde se envió la primera vez, por ejemplo, si encuentra:

Received: (qmail 19514 invoked by uid 10003); 13 Sep 2005 17:48:22 +0700

Significa que este mensaje fue enviado a través de algún CGI por el usuario con UID 10003. Usando este UID puede encontrar el dominio correspondiente:

# grep 10003 /etc/passwd 

Si la línea ‘Recibido’ contiene un UID de un usuario ‘apache’ (por ejemplo “invoked by uid 48″) – significa que el SPAM fue enviado a través de algún script PHP. En este caso, puede intentar conocer el spammer usando la información de los correos spam (direcciones de/para, asunto o cualquier otro dato). Generalmente es muy difícil descubrir la fuente de SPAM. Si está completamente seguro de que en este momento hay algún script enviando SPAM (la cola crece rápidamente sin motivo aparente), puede usar el siguiente script para saber qué scripts PHP se están ejecutando en este momento:

# lsof +r 1 -p `ps axww | grep httpd | grep -v grep | awk ‘ { if(!str) { str=$1 } else { str=str”,”$1}}END{print str}’` | grep vhosts | grep php

También puede aplicar el artículo 1711, que describe el procedimiento para conocer desde qué dominios se está enviando el correo a través de scripts PHP.

Líneas recibidas como:

Received: (qmail 19622 invoked from network); 13 Sep 2005 17:52:36 +0700
Received: from external_domain.com (192.168.0.1)

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

Activar el tiempo de vida en cola de los email en Qmail – Queuelifetime

Para cambiar el tiempo de vida de los correos en la cola de qmail basta con editar o crear un archivo llamado queuelifetime. Su ruta exacta «/var/qmail/control/queuelifetime» si el archivo queuelifetime no exite lo creamos con un simple

touch /var/qmail/control/queuelifetime

Simplemente hay que poner en segundos el tiempo que queramos. Este es el contenido de mi queuelifetime:

50400

que son 14 horas. Así intento evitar que se colapse qmail…

Pásos a seguir:

Cambiamos el valor del archivo queuelifetime:
echo «259200» > /var/qmail/control/queuelifetime

Para reiniciar qmail en Plesk
service qmail restart

Para reiniciar Spamassassin en Plesk
service psa-spamassassin

Dependiendo de el valor que tenga el archivo queuelifetime, así tendran de validez los emails en la cola del QMail TIP:
50400 (14 horas)
86400 (1 día)
172.800 (2 días)
259200 (3 días)
432000 (5 días)