[postfix-es] [OT] informe "rejects" correos
Salman ®
informaciones en salman.es
Jue Sep 3 16:45:46 CEST 2009
No es ningun comando, es un script que he preparado leyendo todos los "rejects" del dia anterior del
"maillog"
Si a alguien le interesa:
============================================================
#!/usr/bin/perl
################################
@mesabre = ('nulo','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
@diasmes = ('0','31','28','31','30','31','30','31','31','30','31','30','31');
($nulo,$nulo,$nulo,$dia,$mes,$nulo,$nulo) = localtime(time);
$diafin=$dia - 1;
$mesfin=$mes +1;
if ($diafin == 0) {
$mesfin--;
if ($mesfin == 0) {
$mesfin=12;
}
$diafin=$diasmes[$mesfin];
}
$mescomparo = $mesabre[$mesfin];
$Fecha="$diafin.$mescomparo";
if ($diafin < 10) {
$diafin = " $diafin";
}
$FechaBusqueda="'$mescomparo $diafin '";
$entrada= "/ScriptsCron/Apedra.rechazos.log";
$salida= "/ScriptsCron/Rechazos.Apedra.$Fecha.txt";
$FicheroEntrada="/var/log/maillog";
$NombreServidor="/ScriptsCron/NombreServidor.txt";
system `grep $FechaBusqueda $FicheroEntrada | grep "reject: " > $entrada`;
open (LISDOM, "$entrada");
@Rechazos= <LISDOM>;
close LISDOM;
my $uno="";
my $dos="";
my $ContadorRechazos=0;
open OUTPUT,">" . $salida;
foreach $linea (@Rechazos) {
($fecha,$Rechazo) = split (/reject:/,$linea);
$ContadorRechazos++;
($uno,$dos) = split (/\]: /,$Rechazo);
if ($dos eq "") {
($uno,$dos) = split (/\]; /,$Rechazo);
}
if ($dos =~ /spamcop.net/) {
($uno,$dos) = split (/ /,$dos);
$Razon=$uno." spamcop.net";
$Causa{$Razon}++;
next;
}
if ($dos =~ /spamhaus.org/) {
($uno,$dos) = split (/ /,$dos);
$Razon=$uno." spamhaus.org";
$Causa{$Razon}++;
next;
}
if ($dos =~ /abuseat.org/) {
($uno,$dos) = split (/ /,$dos);
$Razon=$uno." abuseat.org";
$Causa{$Razon}++;
next;
}
if ($dos =~ /sorbs.net/) {
($uno,$dos) = split (/ /,$dos);
$Razon=$uno." sorbs.net";
$Causa{$Razon}++;
next;
}
if ($dos =~ /njabl.org/) {
($uno,$dos) = split (/ /,$dos);
$Razon=$uno." njabl.org";
$Causa{$Razon}++;
next;
}
if ($dos =~ /softfail/) {
($uno,$dos) = split (/ /,$dos);
$Razon=$uno." SPF softfail";
$Causa{$Razon}++;
next;
}
if ($dos =~ / fail /) {
($uno,$dos) = split (/ /,$dos);
$Razon=$uno." SPF fail";
$Causa{$Razon}++;
next;
}
if ($dos =~ /2 permerror/) {
($uno,$dos) = split (/ /,$dos);
$Razon=$uno." SPF 2 permerror";
$Causa{$Razon}++;
next;
}
if ($dos =~ /permerror/) {
($uno,$dos) = split (/ /,$dos);
$Razon=$uno." SPF permerror";
$Causa{$Razon}++;
next;
}
if ($dos =~ /temperror/) {
($uno,$dos) = split (/ /,$dos);
$Razon=$uno." SPF temperror";
$Causa{$Razon}++;
next;
}
if ($dos =~ /Greylist/) {
($uno,$dos) = split (/ /,$dos);
$Razon=$uno." Greylist";
$Causa{$Razon}++;
next;
}
if ($dos =~ /User unknown/) {
($uno,$dos) = split (/ /,$dos);
$Razon=$uno." Usuario desconocido";
$Causa{$Razon}++;
next;
}
if ($dos =~ /Message size exceeds fixed limit/) {
($uno,$dos) = split (/ /,$dos);
$Razon=$uno." Exceso de tamaño";
$Causa{$Razon}++;
next;
}
if ($dos =~ /Unknown account/) {
($uno,$dos) = split (/ /,$dos);
$Razon=$uno." Usuario desconocido";
$Causa{$Razon}++;
next;
}
if ($dos =~ /Usuario desconocido/) {
$Razon="Access Usuario desconocido";
$Causa{$Razon}++;
next;
}
if ($dos =~ /Analisis: Programa/) {
$Razon="Header Programa no aceptable";
$Causa{$Razon}++;
next;
}
if ($dos =~ /Analisis: Adjunto/) {
$Razon="Header Adjunto no aceptable";
$Causa{$Razon}++;
next;
}
if ($dos =~ /Analisis: Fecha incorrecta /) {
$Razon="Header Fecha incorrecta ";
$Causa{$Razon}++;
next;
}
if ($dos =~ /Dominio en lista negra/) {
$Razon="Header Dominio en lista negra";
$Causa{$Razon}++;
next;
}
if ($dos =~ /Correo en lista negra/) {
$Razon="Header Dominio en lista negra";
$Causa{$Razon}++;
next;
}
if ($dos =~ /Rechazado: Red de servidores en lista negra/) {
$Razon="Header Dominio en lista negra";
$Causa{$Razon}++;
next;
}
if ($dos =~ /Lenguaje no reconocible/) {
$Razon="Header Lenguaje no reconocible";
$Causa{$Razon}++;
next;
}
if ($dos =~ /Domain not found/) {
($uno,$dos) = split (/ /,$dos);
$Razon=$uno." Domain not found";
$Causa{$Razon}++;
next;
}
if ($dos =~ /Helo command rejected/) {
($uno,$dos) = split (/ /,$dos);
$Razon=$uno." Helo command rejected";
$Causa{$Razon}++;
next;
}
if ($dos =~ /fully-qualified/) {
($uno,$dos) = split (/ /,$dos);
$Razon=$uno." Sintaxis erronea";
$Causa{$Razon}++;
next;
}
if ($dos =~ /Relay access denied/) {
($uno,$dos) = split (/ /,$dos);
$Razon=$uno." Relay access denied";
$Causa{$Razon}++;
next;
}
if ($dos =~ /Access denied/) {
($uno,$dos) = split (/ /,$dos);
$Razon=$uno." Relay access denied";
$Causa{$Razon}++;
next;
}
if ($dos =~ /pipelining/) {
($uno,$dos) = split (/ /,$dos);
$Razon=$uno." pipelining";
$Causa{$Razon}++;
next;
}
if ($dos =~ /Server configuration problem/) {
($uno,$dos) = split (/ /,$dos);
$Razon=$uno." Server configuration problem";
$Causa{$Razon}++;
next;
}
print OUTPUT "$dos";
}
foreach $valor (sort keys %Causa) {
print OUTPUT "$valor $Causa{$valor} \n";
}
print OUTPUT "XX Total rechazados: $ContadorRechazos \n";
close OUTPUT;
open (LISDOM, "$salida");
@Rechazos= <LISDOM>;
close LISDOM;
@Rechazos= sort (@Rechazos);
unlink $entrada;
unlink $salida;
#print "\n en Rechazos\n";
$NombreServidor= "/ScriptsCron/NombreServidor.txt";
open (LISDOM, "$NombreServidor");
$Servidor= <LISDOM>;
close LISDOM;
$mailprog = '/usr/lib/sendmail -t -f informerechazos@'.$Servidor;
$Envia='informerechazos@'.$Servidor;
$Destino='informerechazos@'.$Servidor;
$Asunto ="$Servidor $Fecha Causas Rechazos ";
open (MAIL, "|$mailprog");
print MAIL "From: $Envia \n";
print MAIL "To: $Destino \n";
print MAIL "Subject: [Informe_Rechazos] $Asunto\n\n";
print MAIL "\n\n @Rechazos \n";
close MAIL;
============================================================
--
Saludos
Salvador Guzman
Salman PSL
Vigo, Galicia, España
+34 986.21.30.27
Correo @Salman.ES
http://Salman.EU/
----- Mensaje original -----
De: "Walter Garcia" <walter en phpgas.com.ar>
Para: "Salman ®" <correo en salman.es>
CC: "postfix español" <postfix-es en lists.wl0.org>
Enviado: jueves, 03 de septiembre de 2009 13:22
Asunto: Re: [postfix-es] Sobre configuración en main.cf
Como obtenes ese informacion?
Con que comando?
Gracias
Walter
More information about the postfix-es
mailing list