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);