Spam Management · 14 min read · Dec 25, 2025

El Perfecto SpamSnake - Ubuntu Jeos 10.10 Maverick Meerkat - Página 3

8. Baruwa

Descargar paquete deb personalizado de baruwa:

cd /usr/src  
wget baruwa_1.0.1-2sn_all.deb Actualizado 021811  
wget baruwa-doc_1.0.1-2_all.deb  
gdebi baruwa*.deb

Se le pedirá que configure la base de datos de baruwa para el registro, incluyendo un nombre de usuario y contraseña de acceso, que serán utilizados por los scripts de Baruwa. También se le pedirá que configure la información del usuario administrador para la interfaz de Baruwa.

vi /usr/share/pyshared/baruwa/settings.py

Cambie la URL del host de Cuarentena a su gusto:

QUARANTINE_REPORT_HOSTURL = 'http://baruwa-alpha.local'
vi /opt/MailScanner/etc/MailScanner.conf

Necesita asegurarse de que las siguientes opciones estén configuradas:

Always Looked Up Last = &BaruwaSQL
Is Definitely Not Spam = &BaruwaWhitelist
Is Definitely Spam = &BaruwaBlacklist
Required SpamAssassin Score = &BaruwaLowScore
High SpamAssassin Score = &BaruwaHighScore 

Actualizando Baruwa

*Nota: Esta sección es solo para aquellos que ejecutan una versión anterior de Baruwa. Salte esto si está haciendo una instalación nueva.

Descargue el último paquete deb de baruwa:

cd /usr/src  
wget baruwa_1.0.2-4sn_all.deb Actualizado 052011  
wget baruwa-doc_1.0.2-4_all.deb  
gdebi baruwa*.deb

Cuando se le pida configurar la base de datos mysql, seleccione no. Reutilizaremos la base de datos y la configuración actuales.

Asegúrese de que /usr/share/pyshared/baruwa/settings.py esté configurado con la información de base de datos correcta antes de conectarse, de lo contrario, su conexión fallará.

vi /usr/share/pyshared/baruwa/settings.py
DATABASE_ENGINE = 'mysql'           # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' o 'oracle'.
DATABASE_NAME = 'baruwa'             # O ruta al archivo de base de datos si usa sqlite3.
DATABASE_USER = 'baruwa'             # No se usa con sqlite3.
DATABASE_PASSWORD = 'password'         # No se usa con sqlite3.
DATABASE_HOST = ''             # Establecer como cadena vacía para localhost. No se usa con sqlite3.
DATABASE_PORT = ''             # Establecer como cadena vacía para predeterminado. No se usa con sqlite3.

*Nota: Debido a algunos conflictos menores de actualización, estos pasos pueden tener que tomarse para actualizar correctamente baruwa.

Si /opt/MailScanner fue eliminado:

ln -s /opt/MailScanner-version /opt/MailScanner  
rm -r /etc/MailScanner  
ln -s /opt/MailScanner/etc /etc/MailScanner  
ln -s /opt/MailScanner/lib/MailScanner/CustomFunctions /etc/MailScanner

Asegúrese de actualizar su cadena de conexión de base de datos en /etc/MailScanner/CustomFunctions/*.pm.

Finalmente, ejecute

manage.py syncdb

Reinicie Uwsgi y Nginx

/etc/init.d/uwsgi-python2.6 restart && /etc/init.d/nginx restart

Baruwa debería estar actualizado a 102-4sn.

Actualizando Baruwa 102-4 a 111-3sn

Instale Rabbitmq-Server 2.2.0 y configure db/usuario/contraseña:

cd /usr/src  
wget http://ppa.launchpad.net/drizzle-developers/ppa/ubuntu/pool/main/r/rabbitmq-server/rabbitmq-server_2.2.0-1~maverick0_all.deb  
gdebi rabbit*

vi /etc/rabbitmq/rabbitmq.conf para enlazar a localhost:

export RABBITMQ_NODENAME=rabbit@localhost  
export RABBITMQ_NODE_IP_ADDRESS=127.0.0.1  
export ERL_EPMD_ADDRESS=127.0.0.1

Agregue las credenciales de la base de datos:

rabbitmqctl add_user baruwa password  
rabbitmqctl add_vhost baruwa  
rabbitmqctl set_permissions -p baruwa baruwa ".*" ".*" ".*"

Reinicie rabbitmq-server:

/etc/init.d/rabbitmq-server restart

Agregue fuentes para Baruwa 1.1.1-3 e instale dependencias:

wget -O - http://apt.baruwa.org/baruwa-apt-keys.gpg | apt-key add -

vi /etc/apt/sources.list

#baruwa  
deb http://apt.baruwa.org/ubuntu maverick main

Instalar dependencias:

apt-get update  
apt-get install python-django-celery python-importlib

*Nota: El comando anterior debería instalar todas las dependencias para Baruwa.

Descargue e instale Baruwa1.1.1-3sn:

mkdir /usr/src/baruwa1113 && cd /usr/src/baruwa1113  
wget https://docs.google.com/open?id=0B9cN15Q3pKnwY2YyMmMwOTQtNGJkMi00ZDc2LWFjMjMtY2UxMzFlYWY5Mzk2  
mv open* baruwa_1.1.1-3sn_all.deb  
wget https://docs.google.com/open?id=0B9cN15Q3pKnwODk2OGViYmMtMGZmYS00NmJjLTkwZWUtNTJjYTQ1YzAzOTg1  
mv open* baruwa-doc_1.1.1-3sn_all.deb  
gdebi baruwa_1.1.1-3sn_all.deb  
gdebi baruwa-doc_1.1.1-3sn_all.deb

*Nota: Instale la versión del mantenedor del paquete de los archivos cuando se le pregunte. Seleccione no para configurar mysql ya que estamos actualizando desde una versión anterior.

Corrija el enlace simbólico para settings.py:

rm –r /usr/share/pyshared/baruwa/settings.py && ln –s /etc/baruwa/settings.py /usr/share/pyshared/baruwa/

vi /etc/baruwa/settings.py y corrija la configuración de la base de datos de baruwa:

DATABASES = {
    'default': {
        # Agregar 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3'
        # o 'oracle'.
        'ENGINE': 'django.db.backends.mysql',
        # O ruta al archivo de base de datos si usa sqlite3.
        'NAME': 'baruwa',
        # No se usa con sqlite3.
        'USER': 'baruwa',
        # No se usa con sqlite3.
        'PASSWORD': 'password',
        # Establecer como cadena vacía para localhost. No se usa con sqlite3.
        'HOST': '',
        # Establecer como cadena vacía para predeterminado. No se usa con sqlite3.
        'PORT': '',
    }
}

Actualizar la estructura de la base de datos de Baruwa:

baruwa-admin syncdb --noinput

Ejecutar migración falsa para iniciar una actualización:

for name in $(echo "accounts messages lists reports status config"); do  
baruwa-admin migrate $name 0001 --fake;  
done

Ejecutar la migración normal:

for name in $(echo "accounts messages lists reports status fixups config"); do  
baruwa-admin migrate $name;  
done

vi /etc/MailScanner/MailScanner.conf cambie lo siguiente:

Run As Group = celeryd  
Quarantine User = celeryd  
Quarantine Group = celeryd

vi /etc/MailScanner/conf.d/baruwa.conf:

Quarantine User = postfix #(O lo que sea que su `Run As User` esté configurado)  
DB DSN = DBI:mysql:database=baruwa;host=localhost;port=3306 #establecer a DSN válido  
DB Username = baruwa # su nombre de usuario de DB  
DB Password = password # su contraseña de DB

vi /etc/init.d/mailscanner y cambie las entradas de grupo de www-data a celeryd:

check_dir /var/spool/MailScanner ${user:-postfix} ${group:-celeryd}  
check_dir /var/lib/MailScanner ${user:-postfix} ${group:-celeryd}  
check_dir /var/run/MailScanner ${user:-postfix} ${group:-celeryd}  
check_dir /var/lock/subsys ${user:-root} ${group:-root} #Requerido para crear carpeta  
check_dir /var/lock/subsys/MailScanner ${user:-postfix} ${group:-celeryd}  
start-stop-daemon --start --quiet --nicelevel $run_nice --chuid postfix:celeryd --exec $DAEMON --name $NAME -- $DAEMON_ARGS \

Agregue el usuario celeryd al grupo clamav:

usermod -a -G celeryd clamav

Cambie la propiedad del grupo de la carpeta de cuarentena y su contenido:

chgrp -R celeryd /var/spool/MailScanner/quarantine

Si va a usar firmas, inicialícelo ejecutando:

baruwa-admin initconfig

De lo contrario, desactive las opciones en /etc/MailScanner/conf.d/baruwa.conf:

#Inline HTML Signature = htmlsigs.customize  
#Inline Text Signature = textsigs.customize  
#Signature Image Filename = sigimgfiles.customize  
#Signature Image ![](/files/f1a3d4ae-b9dd-4d8d-bef0-ce32003c43c2) Filename = sigimgs.customize

Reinicie su sistema y disfrute de Baruwa 111-3sn.

9. Nginx con Uwsgi

Descargue e instale tanto Nginx como Uwsgi desde el Launchpad de Chris Lea:

wget https://launchpad.net/~chris-lea/+archive/nginx-devel/+files/nginx_1.0.0-1chl1%7Emaverick1_$(uname -m | sed -e 's/x86_64/amd64/' -e 's/i686/i386/').deb  
wget https://launchpad.net/~chris-lea/+archive/uwsgi/+files/uwsgi-common_0.9.6.6-1chl1%7Emaverick1_$(uname -m | sed -e 's/x86_64/amd64/' -e 's/i686/i386/').deb  
wget https://launchpad.net/~chris-lea/+archive/uwsgi/+files/uwsgi-extra_0.9.6.6-1chl1%7Emaverick1_$(uname -m | sed -e 's/x86_64/amd64/' -e 's/i686/i386/').deb  
wget https://launchpad.net/~chris-lea/+archive/uwsgi/+files/uwsgi-python2.6_0.9.6.6-1chl1%7Emaverick1_$(uname -m | sed -e 's/x86_64/amd64/' -e 's/i686/i386/').deb  
wget https://launchpad.net/~chris-lea/+archive/uwsgi/+files/uwsgi_0.9.6.6-1chl1%7Emaverick1_all.deb  
apt-get install libsctp1  
dpkg -i nginx*  
dpkg -i uwsgi*

Utilice los siguientes archivos de configuración para uwsgi y nginx:

vi /etc/uwsgi/uwsgi-python2.6/baruwa.ini
[uwsgi]
   socket = /var/run/uwsgi/uwsgi-python2.6/baruwa/baruwa.sock
   pythonpath = /usr/share/pyshared/baruwa/
   master = true
   processes = 2
   env = DJANGO_SETTINGS_MODULE=baruwa.settings
   module = django.core.handlers.wsgi:WSGIHandler()
vi /etc/nginx/sites-available/baruwa.conf
   server {
      listen 80;
      server_name example.com;
      root /usr/share/pyshared/baruwa;
      #registro de acceso principal
      access_log  /var/log/nginx/access.log;
      #registro de errores principal
      error_log /var/log/nginx/error.log;
   location /static {
      root  /usr/share/pyshared/baruwa/static/;
      }
   # recursos estáticos
   location ~* ^.+\.(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$
      {
      expires 30d;
      break;
      }
   location / {
      uwsgi_pass unix:///var/run/uwsgi/uwsgi-python2.6/baruwa/baruwa.sock;
      include uwsgi_params;
      }
   }

*Nota: Asegúrese de cambiar example.com a un FQDN que coincida con su configuración.

Elimine el host virtual predeterminado y copie uwsgi_params:

rm -r /etc/nginx/sites-enabled/default  
cp /usr/share/doc/uwsgi-extra/nginx/uwsgi_params /etc/nginx/uwsgi_params  
ln -s /etc/nginx/sites-available/baruwa.conf /etc/nginx/sites-enabled/baruwa.conf

Reinicie los servicios:

/etc/init.d/uwsgi-python2.6 restart && /etc/init.d/nginx restart

Debería estar todo listo.

Configurar trabajos de Cron

Cree un enlace simbólico a manage.py:

ln -s /usr/share/pyshared/baruwa/manage.py /usr/bin/manage.py  
chmod +x /usr/bin/manage.py

Agregue trabajos de cron:

@daily  manage.py cleanquarantine &> /dev/null  #Limpiar cuarentena
@daily  manage.py sendquarantinereports &> /dev/null  #Enviar informes de cuarentena
@monthly manage.py  dbclean &> /dev/null  #Limpiar maillog
@weekly  manage.py updatesarules &> /dev/null  #Actualizar reglas de spamassassin
@daily  manage.py sendpdfreports &> /dev/null #Enviar informes PDF

Inicie MailScanner:

/etc/init.d/mailscanner start

Apunte su navegador a http://hostname_used inicie sesión con el usuario administrador y la contraseña y comience a trabajar. Ahora puede usar la interfaz para agregar usuarios y procesar mensajes, etc.

Instrucciones de configuración para Baruwa

Inicie sesión en Baruwa como administrador –> Configuración –> Cuentas –> Crear cuenta

Una vez que haya creado la cuenta de usuario, obtendrá dos nuevas pestañas en esa página, Configuración del perfil y Direcciones asociadas.

Complete la Configuración del perfil eligiendo Administrador de dominio y establezca un puntaje bajo de 6 y un puntaje alto de 9 y marque escanear correo electrónico.

Haga clic en el signo + debajo de Direcciones asociadas e ingrese un dominio para el cual el usuario es el administrador, por ejemplo, domain.com. domain.com aparecerá bajo Direcciones asociadas.

Haga clic en domain.com y será llevado a Información del dominio, donde podrá configurar la información de entrega SMTP. Vaya y agregue el servidor smtp receptor, o la ip del servidor smtp receptor. Seleccione habilitar y si utiliza un puerto no estándar, configúrelo, de lo contrario, use 25. Una vez que haya hecho eso, puede hacer clic en el botón de prueba junto al lápiz, para ver si su servidor receptor aceptará la conexión.

Ahora, puede cerrar sesión como administrador e iniciar sesión como el usuario que acaba de configurar y los correos deberían comenzar a fluir.

Los ajustes relay_recipients, relay_domains y transports en /etc/postfix/main.cf utilizarán las entradas que ha proporcionado en Baruwa. Por lo tanto, no se requiere un archivo hash.
Las consultas asociadas en los archivos cf de mysql extraerán el resultado en el formato adecuado y lo alimentarán a postfix para su uso.

Sin embargo, si desea usar un hash para cualquiera de sus archivos de configuración, use lo siguiente como un ejemplo de cómo configurar /etc/postfix/main.cf:

relay_recipient_maps = hash:/etc/postfix/relay_recipients

Por supuesto, tendría que crear el(los) archivo(s) hash, poblarlo y postmap para que postfix lo use.

*Nota: Si termina usando hash para relay_recipients para dominios específicos, deberá eliminar ese dominio de /etc/postfix/access. Todos los demás usuarios de dominio aún pueden ser verificados utilizando look_ahead

Además, si necesita hacer búsquedas mx, deberá editar /etc/postfix/mysql-transports.cf la consulta para que se vea así:

concat('smtp:', mail_hosts.address, ':', port) 'transport'

Los [ y ] fueron eliminados para permitir búsquedas MX.

¡Disfruta de Baruwa!

10. Instalar y configurar SPF

El paquete postfix-policyd-spf-perl depende de los módulos Perl Mail::SPF y NetAddr::IP.

Necesitamos descargar postfix-policyd-spf-perl de http://www.openspf.org/Software al directorio /usr/src/ e instalarlo en el directorio /usr/lib/postfix/ de la siguiente manera:

cd /usr/src  
wget http://www.openspf.org/blobs/postfix-policyd-spf-perl-2.007.tar.gz  
tar xvfz postfix-policyd-spf-perl-2.007.tar.gz  
cd postfix-policyd-spf-perl-2.007  
cp postfix-policyd-spf-perl /usr/lib/postfix/policyd-spf-perl

Luego editamos /etc/postfix/master.cf y agregamos la siguiente estrofa al final:

vi /etc/postfix/master.cf
policy unix - n n - - spawn
  user=nobody argv=/usr/bin/perl /usr/lib/postfix/policyd-spf-perl

(Los espacios iniciales antes de user=nobody son importantes para que Postfix sepa que esta línea pertenece a la anterior)

*Nota: Ya agregamos la entrada para main.cf usando el script de configuración de postfix.

Luego reinicie Postfix:

/etc/init.d/postfix restart

Eso es todo.

11. Instalar y configurar FuzzyOcr

FuzzyOCR tiene algunos requisitos previos como ocrad y gocr que podemos instalar de la siguiente manera:

apt-get install fuzzyocr netpbm gifsicle libungif-bin gocr ocrad libstring-approx-perl libmldbm-sync-perl libdigest-md5-perl libdbd-mysql-perl imagemagick tesseract-ocr  
wget http://users.own-hero.net/~decoder/fuzzyocr/fuzzyocr-3.6.0.tar.gz  
tar xvfz fuzzyocr-3.6.0.tar.gz  
cd FuzzyOcr-3.6.0/

Así que FuzzyOCR ahora está instalado, ahora necesitamos configurarlo. El archivo de configuración de FuzzyOCR es /etc/spamassassin/FuzzyOcr.cf. En ese archivo casi todo está comentado. Abrimos ese archivo ahora y hacemos algunas modificaciones:

vi /etc/spamassassin/FuzzyOcr.cf

Descomente las siguientes líneas:

focr_global_wordlist /etc/spamassassin/FuzzyOcr.words
focr_preprocessor_file /etc/spamassassin/FuzzyOcr.preps
focr_scanset_file /etc/spamassassin/FuzzyOcr.scansets<
focr_enable_image_hashing 3
focr_digest_db /etc/spamassassin/FuzzyOcr.hashdb
focr_db_hash /etc/spamassassin/FuzzyOcr.db
focr_db_safe /etc/spamassassin/FuzzyOcr.safe.db
focr_bin_helper convert, tesseract

Comente la ruta:

#focr_path_bin /usr/local/netpbm/bin:/usr/local/bin:/usr/bin

Almacenaremos los hashes de imágenes en una base de datos mysql para mejorar el rendimiento de modo que las imágenes que ya hemos escaneado no se escaneen nuevamente, ya que OCR es una actividad intensiva en recursos.

Cree la base de datos MySQL:

El script sql crea la base de datos para fuzzyocr:

mysql -p <  FuzzyOcr.mysql

Otorgar privilegios:

mysql –u root –p  
GRANT ALL ON FuzzyOcr.* TO fuzzyocr@localhost IDENTIFIED BY ‘password’;

Actualizar FuzzyOcr.cf

vi /etc/spamassassin/FuzzyOcr.cf

Habilite las siguientes líneas:

focr_mysql_db FuzzyOcr  
focr_mysql_hash Hash  
focr_mysql_safe Safe  
focr_mysql_user fuzzyocr  
focr_mysql_pass fuzzyocr  
focr_mysql_host localhost  
focr_mysql_port 3306  
focr_mysql_socket /var/run/mysqld/mysqld.sock

*Nota: Asegúrese de cambiar las líneas en rojo.

Configurar el limpiador de base de datos de FuzzyOcr

vi /usr/sbin/fuzzy-cleanmysql
#!/usr/bin/perl
#Script para limpiar tablas mysql de datos. El valor predeterminado es dejar datos en Safe durante 1 día y Hash durante 10 días.
#Fuzzyocr-cleanmysql
use Getopt::Long;
use DBI;
use MLDBM qw(DB_File Storable);
my %Files = (
    db_hash => '/var/lib/fuzzyocr/FuzzyOcr.db',
    db_safe => '/var/lib/fuzzyocr/FuzzyOcr.safe.db',
    );
use DBI;
$database = "FuzzyOcr";
$hostname = "localhost";
$socket = "/var/run/mysqld/mysqld.sock";
$port = "3306";
$username = "fuzzyocr";
$password = 'password';
# valores predeterminados
my $cfgfile = "/etc/spamassassin/FuzzyOcr.cf";
my %App;
my %age;
$age{'age'} = 10*24;  # 10 días
$age{'hash'} = $age{'age'};
$age{'safe'} = 0;
my $help = 0;
my $verbose = 0;
GetOptions( \%age,
    'age=i',
    'config=s' => \$cfgfile,
    'hash=i',
    'help' => \$help,
    'safe=i',
    'verbose' => \$verbose,
);
if ($help) {
    print "Uso: fuzzy-cleanmysql [Opciones]\n";
    print "\n";
    print "Opciones disponibles:\n";
    print "--age=i      Edad global en horas para mantener en db\n";
    print "--config=s   Especificar ubicación de FuzzyOcr.cf\n";
    print "             Predeterminado: /etc/spamassassin/FuzzyOcr.cf\n";
    print "--hash=i     Número de horas antiguas para mantener en la base de datos Hash\n";
    print "--safe=i     Número de horas antiguas para mantener en la base de datos Safe\n";
    print "--verbose    Mostrar más información\n";
    print "\n";
    exit 1;
}
# Convertir horas a segundos
$age{'age'} *= 60 * 60;
$age{'hash'} *= 60 * 60;
$age{'safe'} *= 60 * 60;
$age{'safe'} = $age{'safe'} ? $age{'safe'} : $age{'age'};
# Leer rutas personalizadas de FuzzyOcr.cf
my $app_path = q(/usr/local/netpbm/bin:/usr/local/bin:/usr/bin);
open CONFIG, "< $cfgfile" or warn "No se puede leer el archivo de configuración, usando valores predeterminados...\n";
while () {
    chomp;
    if ($_ =~ m/^focr_bin_(\w+) (.+)/) {
        $App{$1} = $2;
        printf "Encontrada ruta personalizada \"$2\" para la aplicación \"$1\"\n" if $verbose;
    }
    if ($_ =~ m/^focr_path_bin (.+)/) {
        $app_path = $1;
        printf "Encontrada nueva ruta: \"$1\"\n" if $verbose;
    }
    if ($_ =~ m/^focr_enable_image_hashing (\d)/) {
        $App{hashing_type} = $1;
        printf "Encontrado hashing de DB\n" if ($verbose and $1 == 2);
        printf "Encontrado hashing MySQL\n" if ($verbose and $1 == 3);
    }
    if ($_ =~ m/^focr_mysql_(\w+) (.+)/) {
        $MySQL{$1} = $2;
        printf "Encontrada opción MySQL $1 => '$2'\n" if $verbose;
    }
    if ($_ =~ m/^focr_threshold_max_hash (.+)/) {
        $App{max_hash} = $1;
        printf "Umbral actualizado{max_hash} = $1\n" if $verbose;
    }
}
close CONFIG;
# asegúrese de que tengamos este umbral configurado
$App{max_hash} = 5 unless defined $App{max_hash};
# buscar ruta para bin_util a menos que ya se especifique en el archivo de configuración
foreach my $app (@bin_utils) {
    next if defined $App{$app};
    foreach my $d (split(':',$app_path)) {
        if (-x "$d/$app") {
            $App{$app} = "$d/$app";
            last;
        }
    }
}
sub get_ddb {
    my %dopts = ( AutoCommit => 1 );
    my $dsn = "DBI:mysql:database=$database";
    if (defined $socket) {
        $dsn .= ";mysql_socket=$socket";
    } else {
        $dsn .= ";host=$hostname";
        $dns .= ";port=$port" unless $port == 3306;
    }
    printf "Conectando a: $dsn\n" if $verbose;
    return DBI->connect($dsn, $username, $password,\%dopts) or die("¡No se pudo conectar!");
}
if ($App{hashing_type} == 3) {
 my $ddb = get_ddb();
  if ($ddb) {
    my $sql;
    foreach my $ff (sort keys %Files) {
      $ff =~ s/db_//;
      $sqlbase = "FROM $MySQL{$ff} WHERE $MySQL{$ff}.\`check\` < ?";
      my $timestamp = time;
      $timestamp = $timestamp - $age{$ff};
      $sql = "DELETE $sqlbase";
      if ( $verbose ) {
        printf "Eliminar de la tabla $MySQL{$ff}\n";
        print "$sql,  $timestamp\n";
        print "La marca de tiempo es ", scalar(localtime($timestamp)), "\n";
        print "Eso es $age{$ff} segundos antes que ahora.\n";
        print "\n";
      }
      $ddb->do($sql,undef,$timestamp);
    }
    $ddb->disconnect;
  }
}
chmod +x /usr/sbin/fuzzy-cleanmysql

Agregue esto a cron

crontab -e
@weekly /usr/sbin/fuzzy-cleanmysql &> /dev/null  #Limpiador de base de datos FuzzyOcr

Eso es todo para la configuración de FuzzyOCR. Ahora veamos si funciona como se espera.

Podemos alimentar cada uno de estos correos a SpamAssassin ahora para ver si FuzzyOCR está vinculado correctamente a SpamAssassin.

spamassassin --debug FuzzyOcr < /usr/src/FuzzyOcr-3.6.0/samples/ocr-gif.eml > /dev/null

Ahora debería ver mucha salida, el final debería verse así:

[...]  
[10025] dbg: FuzzyOcr:  
[10025] dbg: FuzzyOcr: Viernes 4 de agosto, 4:01 pm ET  
[10025] dbg: FuzzyOcr: LAS VEGAS, NEVADA--(MARKET WIRE)--4 de agosto de 2006 -- auantum Energy, lnc. (OTC  
[10025] dbg: FuzzyOcr: BB:aEGY.oB-_-  
[10025] dbg: FuzzyOcr: auantum Energy, lnc. se complace en anunciar que ha solicitado que sus acciones se coticen en  
buró de Frankfurt. La empresa ha contratado los servicios de Baltic  
[10025] dbg: FuzzyOcr: lnvestment Group de Hamburgo, Alemania para ayudar con la solicitud.  
[10025] dbg: FuzzyOcr:  
[10025] dbg: FuzzyOcr: _ qEGY,OB "

12. Filtrando PDF, XLS y spam de phishing con ClamAV (Firmas de Sanesecurity)

Actualmente hay mucho spam donde la “información” de spam se adjunta como archivos .pdf o .xls, a veces también ocultos dentro de un archivo .zip. Si bien estos correos de spam no son fáciles de atrapar con, por ejemplo, SpamAssassin o un filtro Bayesiano, el escáner de virus ClamAV puede atraparlos fácilmente cuando se le alimenta con las firmas correctas, ya que ClamAV está diseñado para escanear archivos adjuntos de correo.

Cree una carpeta para sanesecurity y descargue y otorgue al script el permiso adecuado.

apt-get install curl rsync
mkdir /usr/src/sanesecurity && cd /usr/src/sanesecurity
wget http://www.inetmsg.com/pub/clamav-unofficial-sigs.tar.gz
tar -zxf clamav-unofficial-sigs.tar.gz && cd clamav-unofficial-sigs-3.7.1
mv clamav-unofficial-sigs.sh /usr/sbin
mv clamav-unofficial-sigs.conf /etc/
chmod +x /usr/sbin/clamav-unofficial-sigs.sh

vi clamav-unofficial-sigs.conf

y cambie las siguientes variables para que coincidan con su instalación:

clam_dbs="/var/lib/clamav"

La variable clamav_dbs contiene la ruta al directorio donde se almacenan sus firmas de ClamAV.

Ruta a clamd.pid:

clamd_pid="/var/run/clamav/clamd.pid"

Recargar después de la actualización:

reload_dbs="yes"
reload_opt="kill -USR2 `cat $clamd_pid`" #Señales PID para recargar dbs

Directorio de trabajo:

work_dir="/var/lib/clamav"

Y una vez que haya terminado con la configuración, establezca lo siguiente en sí:

user_configuration_complete="yes" 

Ahora ejecutamos el script de actualización para verificar si la descarga funciona:

clamav-unofficial-sigs.sh

Agregue esto a cron:

00 04 * * * /usr/sbin/clamav-unofficial-sigs.sh -c /etc/clamav-unofficial-sigs.conf &> /dev/null 

Por favor, edite /etc/clamav-unofficial-sigs.conf y comente la sección de base de datos de MalwarePortal. Ha habido toneladas de falsos positivos al usar sus definiciones.

13. Greylisting con Greyfix

Greyfix es un pequeño demonio de greylisting que funciona extremadamente bien y es fácil en recursos.

Instalar:

cd /usr/src && wget http://www.kim-minh.com/pub/greyfix/greyfix-0.3.9.tar.gz  
tar -xf greyfix-0.3.9.tar.gz && cd greyfix-0.3.9  
./configure --localstatedir=/var  
make  
make install
vi /etc/postfix/master.cf

y agregue lo siguiente:

greyfix    unix  -        n       n       -        -       spawn
   user=nobody  argv=/usr/local/sbin/greyfix   --greylist-delay 60  -/ 24

Ya agregamos la entrada para main.cf usando el script de configuración de postfix.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.