Amavis-new + spamassassin

De Wikillano

amavis-new + spamassassin

apt-get install spamassassin
apt-get install amavisd-new


copiamos el fichero de configuración default de amavis al directorio conf.d

cp /usr/share/doc/amavisd-new/examples/amavisd.conf-default.gz   /etc/amavis/conf.d/.

lo renombramos a 30-user

mv /usr/share/doc/amavisd-new/examples/amavisd.conf-default.gz /etc/amavis/conf.d/30-user

ahora editamos las siguientes lineas:

$mydomain = 'ballano.net';
$forward_method = 'smtp:127.0.0.1:10025';
$notify_method = $forward_method;
$final_spam_destiny = D_PASS;
$sa_tag_level_deflt  = 4.0;
$sa_tag2_level_deflt = 5.0;
$sa_kill_level_deflt = $sa_tag2_level_deflt;

#descomentamos la siguiente linea para habilitar el anti-spam
@bypass_spam_checks_maps = (\%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

#cuenta donde irá a parar el spam
$spam_admin = 'spam@dominio.net';
  • $final_spam_destiny = D_PASS;

Si se detecta el correo como spam, y tenemos la variable como D_PASS el mail será enviado igualmente al usuario destinatario, para que esto no ocurra y sólo sea enviado a la cuenta de spam deberemos poner D_DISCARD

En /etc/postfix/main.cf añadiremos:

content_filter=smtp-amavis:[127.0.0.1]:10024

añadimos lo siguiente al final de /etc/postfix/master.cf

smtp-amavis     unix    -       -       -       -       2       smtp
 -o smtp_data_done_timeout=1200s
 -o disable_dns_lookups=yes
127.0.0.1:10025 inet    n       -       -       -       -       smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes

los espacios son [Tab]

Imagen:spam.png


creamos una cuenta (Maildir) spam@loquesea.com donde recibiremos lo que spamassassin identifica como spam, en esta cuenta crearemos dos carpetas colgando de la bandeja principal:

  • spam-si
  • spam-no

el funcionamiento será el siguiente:

cuando llegue un correo identificado como spam, este será depositado el la bandeja de entrada de spam@loquesea.com, entonces nosotros mismos verificaremos si es spam, si lo es lo pondremos en spam-si de no serlo lo moveremos a spam-no

después mediante unos trabajos cron moveremos los mails de spam-si spam-no a los directorios (spam,ham) para que spamassassin pueda aprender de ellos e ir mejorando la detección.

  • crontab de root:
#movemos los mails que nosotros hemos seleccionado como spam y no a los dirs de amavis
3 * * * * /bin/mv /home/spam/Maildir/.spam-si/cur/* /var/lib/amavis/spam/. >/dev/null 2>&1
3 * * * * /bin/mv /home/spam/Maildir/.spam-no/cur/* /var/lib/amavis/ham/. >/dev/null 2>&1
#les cambiamos el propietario
4 * * * * /bin/chown amavis.amavis /var/lib/amavis/spam/* > /dev/null 2>&1
4 * * * * /bin/chown amavis.amavis /var/lib/amavis/ham/* > /dev/null 2>&1

Como usuario amavis creamos dos directorios, uno llamado spam (para los mensajes de spam) y otro llamado ham para procesar los mensajes no spam

  • crontab de amavis:

crontab -e

#primero le decimos a spamassassin que olvide lo aprendido en los dirs spam/ham
5 * * * * /usr/bin/sa-learn --forget --dir /var/lib/amavis/spam >/dev/null 2>&1
5 * * * * /usr/bin/sa-learn --forget --dir /var/lib/amavis/ham >/dev/null 2>&1
#adiestramos a spamassassin del contenido  de los dirs spam/ham
6 * * * * /usr/bin/sa-learn --spam --dir /var/lib/amavis/spam >/dev/null 2>&1
6 * * * * /usr/bin/sa-learn --ham --dir /var/lib/amavis/ham >/dev/null 2>&1
#borramos el contenido de los dir
7 * * * * /bin/rm -f /var/lib/amavis/spam/* > /dev/null 2>&1
7 * * * * /bin/rm -f /var/lib/amavis/ham/* > /dev/null 2>&1
Herramientas personales