Skip to content
Home » Instalando spamassassin sobre Win32

Instalando spamassassin sobre Win32

Si estás recibiendo gran cantidad de “spam” (correo no deseado) en tu cuenta de correo, una de las soluciones más eficaces es la instalación de un filtro antes de leer el correo. Spamassasin es un filtro basado en Perl contra los correos no deseados que utiliza un amplio abanico de reglas sobre la cabecera y el cuerpo del mensaje del correo para detectarlo.

Este artículo se centra en la instalación de Spamassasin sobre Windows -hay que advertir de antemano que sólo funciona correctamente sobre plataformas basadas en tecnología NT, como: Windows 2000, XP y Windows 2003. Los pasos de instalación han sido extraídos de forma resumida de http://www.openhandhome.com/howtosa260.html

Existen una serie de requisitos básicos para su correcta instalación:

1. Tener instalado Perl. La distribución que existe para Windows es Active Perl. Para que funcione correctamente Spamassasin, es necesario utilizar la versión 5.6 de Active Perl que puede ser descargada de aquí.

2. Una vez que tengamos instalado Perl en la máquina, necesitaremos tener preparados los paquetes y utilidades necesarios para Spamassasin.

3. A continuación, abriremos una sesión de DOS:


Ejecutar > cmd

iremos al lugar donde está instalado Perl (normalmente c:\Perl), en la carpeta bin y teclearemos (en caso de no haber colocado la ruta hasta Perl, en la variable de entorno ‘PATH’ de Windows):


PPM (es la consola que viene con esta distribución de Perl usada para el mantenimiento de Perl)

Ya en la consola de Perl, pasaremos a instalar los siguientes módulos, en caso de no estar instalados ya:

  • DB_File. Para ellos tecleamos: install DB_File
  • Time::HiRes. Para ellos tecleamos: install Time::HiRes

4. Instalación de Net::DNS.12. Descomprimiremos la distribución antes descargada, abriremos una sesión de DOS y después nos colocaremos en la carpeta donde ha sido descomprimido, e introduciremos lo siguiente:


perl MAKEFILE.PL
nmake
nmake INSTALL

Si todo ha ido bien, ya tendremos instalado el módulo de Perl. Concretamente, lo podremos ver en la carpeta ‘c:\Perl\site\lib\net\dns’.

Conviene borrar los archivos que han sido descomprimidos para la compilación de Perl, ya no serán necesarios.

5. Ahora vamos con Spamassassin. Descomprimimos el archivo zip, con las fuentes de este módulo que nos descargamos previamente. Como hicimos con Net::DNS.12, abriremos una sesión de DOS, nos colocaremos en la carpeta donde está descomprimido el paquete y teclearemos lo siguiente:


perl makefile.pl
nmake
nmake INSTALL

Preguntará lo siguiente:


What email address or URL should be used in the suspected-spam report
text for users who want more information on your filter installation?
(In particular, ISPs should change this to a local Postmaster contact)
default text: [the administrator of that system]

a lo cual podremos responder con cualquier dirección, por ejemplo: micorreo@local.com.

Si todo ha ido bien tras teclear ‘perl makefile.pl’, veremos los siguientes mensajes en la consola de DOS:


Checking if your kit is complete…
Looks good
Writing Makefile for Mail::SpamAssassin
Makefile written by ExtUtils::MakeMaker 5.45

Después de teclear ‘nmake’, deberíamos ver lo siguiente:

Microsoft (R) Program Maintenance Utility   Version 1.50
Copyright (c) Microsoft Corp 1988-94. All rights reserved.

cp lib/Mail/SpamAssassin/NetSet.pm blib\lib\Mail\SpamAssassin\NetSet.pm
cp lib/Mail/SpamAssassin/Bayes.pm blib\lib\Mail\SpamAssassin\Bayes.pm
cp lib/Mail/SpamAssassin/ConfSourceSQL.pm blib\lib\Mail\SpamAssassin\ConfSourceS
QL.pm
cp lib/Mail/SpamAssassin/DBBasedAddrList.pm blib\lib\Mail\SpamAssassin\DBBasedAd
drList.pm
cp lib/Mail/SpamAssassin/PerMsgStatus.pm blib\lib\Mail\SpamAssassin\PerMsgStatus
.pm
cp lib/Mail/SpamAssassin/Reporter.pm blib\lib\Mail\SpamAssassin\Reporter.pm
cp lib/Mail/SpamAssassin/SHA1.pm blib\lib\Mail\SpamAssassin\SHA1.pm
cp lib/Mail/SpamAssassin/Win32Locker.pm blib\lib\Mail\SpamAssassin\Win32Locker.p
m
cp lib/Mail/SpamAssassin/HTML.pm blib\lib\Mail\SpamAssassin\HTML.pm
cp lib/Mail/SpamAssassin/ArchiveIterator.pm blib\lib\Mail\SpamAssassin\ArchiveIt
erator.pm
cp lib/Mail/SpamAssassin/PerMsgLearner.pm blib\lib\Mail\SpamAssassin\PerMsgLearn
er.pm
cp lib/Mail/SpamAssassin/AutoWhitelist.pm blib\lib\Mail\SpamAssassin\AutoWhiteli
st.pm
cp lib/Mail/SpamAssassin/PhraseFreqs.pm blib\lib\Mail\SpamAssassin\PhraseFreqs.p
m
cp lib/Mail/SpamAssassin/Util.pm blib\lib\Mail\SpamAssassin\Util.pm
cp lib/Mail/SpamAssassin/Message.pm blib\lib\Mail\SpamAssassin\Message.pm
cp lib/Mail/SpamAssassin/Dns.pm blib\lib\Mail\SpamAssassin\Dns.pm
cp lib/Mail/SpamAssassin/EvalTests.pm blib\lib\Mail\SpamAssassin\EvalTests.pm
cp lib/Mail/SpamAssassin/Locales.pm blib\lib\Mail\SpamAssassin\Locales.pm
cp lib/Mail/SpamAssassin/Replier.pm blib\lib\Mail\SpamAssassin\Replier.pm
cp lib/Mail/SpamAssassin/Conf.pm blib\lib\Mail\SpamAssassin\Conf.pm
cp lib/Mail/SpamAssassin.pm blib\lib\Mail\SpamAssassin.pm
cp lib/Mail/SpamAssassin/AuditMessage.pm blib\lib\Mail\SpamAssassin\AuditMessage
.pm
cp lib/Mail/SpamAssassin/Locker.pm blib\lib\Mail\SpamAssassin\Locker.pm
cp lib/Mail/SpamAssassin/MailingList.pm blib\lib\Mail\SpamAssassin\MailingList.p
m
cp lib/Mail/SpamAssassin/CmdLearn.pm blib\lib\Mail\SpamAssassin\CmdLearn.pm
cp lib/Mail/SpamAssassin/EncappedMIME.pm blib\lib\Mail\SpamAssassin\EncappedMIME
.pm
cp lib/Mail/SpamAssassin/BayesStore.pm blib\lib\Mail\SpamAssassin\BayesStore.pm
cp lib/Mail/SpamAssassin/NoMailAudit.pm blib\lib\Mail\SpamAssassin\NoMailAudit.p
m
cp lib/Mail/SpamAssassin/PersistentAddrList.pm blib\lib\Mail\SpamAssassin\Persis
tentAddrList.pm
cp lib/Mail/SpamAssassin/Received.pm blib\lib\Mail\SpamAssassin\Received.pm
cp lib/Mail/SpamAssassin/TextCat.pm blib\lib\Mail\SpamAssassin\TextCat.pm
cp lib/Mail/SpamAssassin/UnixLocker.pm blib\lib\Mail\SpamAssassin\UnixLocker.pm
cp lib/Mail/SpamAssassin/EncappedMessage.pm blib\lib\Mail\SpamAssassin\EncappedM
essage.pm
        C:\Perl\bin\perl.exe build/preprocessor -Mbytes  -DPERL_VERSION="5.6.1"
-Mvars  -DVERSION="2.63"  -DPREFIX="C:\Perl"  -DDEF_RULES_DIR="C:\Perl/share/spa
massassin"  -DLOCAL_RULES_DIR="C:\Perl/etc/mail/spamassassin"  -DINSTALLSITELIB=
"C:\Perl\site\lib"  -DCONTACT_ADDRESS="mario@local.com" -Msharpbang  -DPERL_BIN=
"C:\Perl\bin\perl.exe"  -DPERL_WARN=""  -DPERL_TAINT="" -m -isa-learn.raw -osa-l
earn
        C:\Perl\bin\perl.exe -IC:\Perl\lib -IC:\Perl\lib -MExtUtils::Command -e
cp sa-learn blib\script\sa-learn
        C:\Perl\bin\perl.exe -IC:\Perl\lib -IC:\Perl\lib  -e "system qq[pl2bat.b
at ].shift" blib\script\sa-learn
        C:\Perl\bin\perl.exe build/preprocessor -Mbytes  -DPERL_VERSION="5.6.1"
-Mvars  -DVERSION="2.63"  -DPREFIX="C:\Perl"  -DDEF_RULES_DIR="C:\Perl/share/spa
massassin"  -DLOCAL_RULES_DIR="C:\Perl/etc/mail/spamassassin"  -DINSTALLSITELIB=
"C:\Perl\site\lib"  -DCONTACT_ADDRESS="mario@local.com" -Msharpbang  -DPERL_BIN=
"C:\Perl\bin\perl.exe"  -DPERL_WARN=""  -DPERL_TAINT="" -m -ispamassassin.raw -o
spamassassin
        C:\Perl\bin\perl.exe -IC:\Perl\lib -IC:\Perl\lib -MExtUtils::Command -e
cp spamassassin blib\script\spamassassin
        C:\Perl\bin\perl.exe -IC:\Perl\lib -IC:\Perl\lib  -e "system qq[pl2bat.b
at ].shift" blib\script\spamassassin

Finalmente, al teclear ‘nmake INSTALL’, veríamos esto:

Microsoft (R) Program Maintenance Utility   Version 1.50
Copyright (c) Microsoft Corp 1988-94. All rights reserved.

Installing C:\Perl\site\lib\Mail\SpamAssassin.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\ArchiveIterator.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\AuditMessage.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\AutoWhitelist.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\Bayes.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\BayesStore.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\CmdLearn.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\Conf.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\ConfSourceSQL.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\DBBasedAddrList.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\Dns.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\EncappedMessage.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\EncappedMIME.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\EvalTests.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\HTML.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\Locales.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\Locker.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\MailingList.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\Message.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\NetSet.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\NoMailAudit.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\PerMsgLearner.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\PerMsgStatus.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\PersistentAddrList.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\PhraseFreqs.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\Received.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\Replier.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\Reporter.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\SHA1.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\TextCat.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\UnixLocker.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\Util.pm
Installing C:\Perl\site\lib\Mail\SpamAssassin\Win32Locker.pm
Installing C:\Perl\bin\sa-learn
Installing C:\Perl\bin\sa-learn.bat
Installing C:\Perl\bin\spamassassin
Installing C:\Perl\bin\spamassassin.bat
Writing C:\Perl\site\lib\auto\Mail\SpamAssassin\.packlist
Appending installation info to C:\Perl\lib/perllocal.pod
        C:\Perl\bin\perl.exe -IC:\Perl\lib -IC:\Perl\lib -MExtUtils::Command -e
mkpath C:\Perl/etc/mail/spamassassin
        C:\Perl\bin\perl.exe -MFile::Spec -MFile::Copy  -e "copy(q{rules/local.c
f}, q{C:\Perl/etc/mail/spamassassin/local.cf}) unless -f q{C:\Perl/etc/mail/spam
assassin/local.cf};"
        C:\Perl\bin\perl.exe -IC:\Perl\lib -IC:\Perl\lib -MExtUtils::Command -e
mkpath C:\Perl/share/spamassassin
        C:\Perl\bin\perl.exe -e "map unlink, "
        C:\Perl\bin\perl.exe build/preprocessor -Mvars  -DVERSION="2.63"  -DPREF
IX="C:\Perl"  -DDEF_RULES_DIR="C:\Perl/share/spamassassin"  -DLOCAL_RULES_DIR="C
:\Perl/etc/mail/spamassassin"  -DINSTALLSITELIB="C:\Perl\site\lib"  -DCONTACT_AD
DRESS="mario@local.com" -m -Irules -OC:\Perl/share/spamassassin 10_misc.cf 20_an
ti_ratware.cf 20_body_tests.cf 20_compensate.cf 20_dnsbl_tests.cf 20_fake_helo_t
ests.cf 20_head_tests.cf 20_html_tests.cf 20_meta_tests.cf 20_phrases.cf 20_porn
.cf 20_ratware.cf 20_uri_tests.cf 23_bayes.cf 25_body_tests_es.cf 25_body_tests_
pl.cf 25_head_tests_es.cf 25_head_tests_pl.cf 30_text_de.cf 30_text_es.cf 30_tex
t_fr.cf 30_text_it.cf 30_text_pl.cf 30_text_sk.cf 50_scores.cf 60_whitelist.cf u
ser_prefs.template triplets.txt languages
        C:\Perl\bin\perl.exe -IC:\Perl\lib -IC:\Perl\lib -MExtUtils::Command -e
chmod  C:\Perl/share/spamassassin

6. Como último paso, deberemos añadir una línea al archivo ‘spamassassin.bat’, que se ha generado en la carpeta ‘c:\Perl\bin’. Para ello, lo editaremos, y añadiremos la siguiente línea, por ejemplo después de ‘@ECHO OFF’:


SET RES_NAMESERVERS=ipaddress

donde ipaddress, es la dirección o direcciones de DNS que estemos utilizando. Si son varias, deberían estar separadas por un espacio.

Con esto ya tendremos instalado Spamassassin en nuestra máquina windows. Si deseamos hacer una prueba, se puede crear un archivo de texto de prueba y teclear lo siguiente:


spamassassin -D < archivo-spam-prueba.txt

Si deseamos comprobar que DNS funciona correctamente, existe un script muy útil que verifica esto:

use Net::DNS;
my $name = "spamassassin.org";
my $res  = Net::DNS::Resolver->new;
my @mx   = mx($res, $name);
  

  if (@mx) {
      foreach $rr (@mx) {
          print $rr->preference, " ", $rr->exchange, "\n";
      }
  }
  else {
      print "can't find MX records for $name: ", $res->errorstring, "\n";

lo grabamos en un archivo llamado por ejemplo ‘test.pl’ y tecleamos:


perl test.pl

Para configurar de forma visual Spamassasin, existe un programa escrito en Visual Basic que os podeis descargar en esta dirección: http://www.openhandhome.com/

Spamassasin, tiene muchas opciones para configurar el filtro, así como los niveles de filtrado. Si deseais más información (en inglés), se encuentra en esta dirección: