![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|
Conéctate |
Este documento busca dar los conocimientos necesarios para poder tener un spamassassin entrenado para cumplir mejor la tarea de deteccion de spam. De momento, el documento debe ser entendido como un cook recipe, es decir una lista de pasos (documentados), como si fueran apuntes; es decir no es un documento tutorial. ConfiguracionEs necesario modificar los siguientes archivos de configuracion y deben dejarse los valores por defecto excepto los siguientes que se indican a continuacion:Spamassassin:En /etc/spamassassin/local.cf (puede pintar y pegar todo esto en su local.cf):# No quiero reescribir el subject de los mensajes que sean SPAM. rewrite_subject 0 # Esto se puede usar para decidir si el spam se manda attached, # o solo se modifican headers. Mandar attached en modo 2 es ideal # para evitar virus y otras malignidades que se le pueden hacer al Outlook. # Attached en modo 1 permite recuperar el spam mas facil # (doble click en attach). Modo 0 no attachea, solo modifica headers. # Default: 1 #report_safe 1 # NO scaneo spam para estas networks: trusted_networks 172.16.0.0/12 trusted_networks 127.0.0.0/8 # Son valores por defecto, pero es bueno resaltarlo: use_bayes 1 bayes_auto_learn 1 bayes_learn_during_report 1 ## Ajustar a valores menores en sitios de muchos usuarios: # The score threshold below which a mail has to score, to be fed into # SpamAssassin's learning systems automatically as a non-spam message. #bayes_auto_learn_threshold_nonspam n.nn (default: 0.1) ## Ajustar a valores mayores en sitios de muchos usuarios: # The score threshold above which a mail has to score, to be fed # into SpamAssassin's learning systems automatically as a spam message. #bayes_auto_learn_threshold_spam n.nn (default: 12.0) #Headers a ignorar: # If you receive mail filtered by upstream mail systems, like a # spam-filtering ISP or mailing list, and that service adds new # headers (as most of them do), these headers may provide inappropriate # cues to the Bayesian classifier, allowing it to take a #"short cut". To avoid this, list the headers using this setting. Example: #bayes_ignore_header X-Upstream-Spamfilter #bayes_ignore_header X-Upstream-SomethingElse ## Este DIRECTORIO debe tener permisos solo para el # usuario:grupo spamd:spamd. Contiene 3 archivos, # el journal y 2 de la base de tokens. Verificar que tengan # permisos solo para este usuario (bah, lectura no importa). # En caso de hacer mal el entrenamiento bayesiano, borrar # los archivos del directorio y empezar de nuevo. bayes_path /var/lib/spamassassin/bayes ## Valores por defecto: #bayes_auto_expire 1 #bayes_expiry_max_db_size 150000 #bayes_journal_max_size 102400 # Multiplico por 10 el expire_max_db_size bayes_auto_expire 1 bayes_expiry_max_db_size 1500000 bayes_journal_max_size 102400 ## Better hit rates, but databases 10 veces mas grandes: bayes_use_hapaxes 1 ## Se desea usar whitelist? # whitelist_from *@miope.homelinux.org ## Por ahora deshabilito todos estos tests: use_dcc 0 use_pyzor 0 use_razor2 0 Spamd:
ENABLED=1 ## Esto es 3 copias de spamd como maximo, autowhitelisting, # cambiarse al home del usuario spamd, correr con el usuario spamd, # no usar configuracion personal de usuarios de correo. OPTIONS="-m 3 -a -H -u spamd --nouser-config" NICE="--nicelevel 19" Postfix:1) /etc/postfix/master.cf
## Comentar la linea smtp que viene por defecto.
#smtp inet n - - - - smtpd
## Poner esta linea smtp en su lugar.
smtp inet n - - - - smtpd -o content_filter=spamassassin:dummy
##[...] agregar la siguiente linea:
spamassassin unix - n n - - pipe user=spamd
argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} -- ${recipient}
2) /etc/postfix/main.cf ##Poner las siguientes variables en el main.cf: # Para limitar el uso de memoria de spamd, ajustar segun la memoria del equipo. local_destination_concurrency_limit = 2 # Estas variables son solo una sugerencia: message_size_limit = 26214400 # Ajustar segun los requerimientos de los usuarios. bounce_size_limit = 65536 header_size_limit = 32768 disable_vrfy_command = yes smtpd_helo_required = yes smtpd_timeout = 180 Entrenamiento bayesianoPrimera vezEs necesario entrenar al clasificador bayesiano, para que se pueda hacer una base de tokens que representan spam y ham (ham=no_spam).Del manual de spamd: You need to train with both spam and ham mails. One type of mail alone will not have any effect. Se necesitan por lo menos 200 mensajes de cada tipo, se recomienda mas de 1000. Aparentemente, entrenarlo con mas de 5000 mensajes no hace efecto. Recuerde:
Reentrenamiento Bayesiano para mensajes mal clasificados:Esto es imprescindible, si no se le explica al analizador bayesiano que se equivoco, el loco se va a equivocar cada vez mas. Cuando clasifique mal, hay que decirle "te equivocaste esto es/no_es spam".Existen dos metodos: 1) Crear casilla de correo "noesspam@site.com" y casilla "esspam@site.com". Cuidar que esas casillas no puedan recibir mail del exterior. Que los usuarios reenvien los mensajes de spam mal clasificado. Los usuarios deberan reenviar el mail siguiendo estas instrucciones: http://wiki.apache.org/spamassassin/BayesFeedbackViaForwarding Configurar siguiendo instrucciones de este link: http://jousset.org/pub/sa-postfix.en.html Puede hacerse el entrenamiento automatico (si confias en los usuarios), o el admin. puede revisar los mails que los usuarios mandan como spam mal clasificado (si los usuarios son mas idiotas de lo normal). Si el admin lee el spam/no_spam y lo reclasifica a mano, la mejor forma de automatizarlo es que el admin mueva lo que es spam a una carpeta IMAP especifica (y lo que no es spam a otra carpeta distinta) y que un cron lea esas carpetas, reentrene a bayes, y las vacie. 2) Crear dos carpetas IMAP publicas ES_spam y NO_ES_spam. Que los usuarios muevan el correo a estas carpetas (es mas facil arrastrar un mensaje que reenviarlo cuidando los headers). Luego el admin ve si las vacia automaticamente con un cron, o las revisa a mano como en el metodo anterior. Script ejemploEjemplo de script y crontab para reentrenar spam/ham a partir de carpetas IMAP:crear un script /usr/local/bin/learn-spam asi:
#!/bin/bash
PATH=/usr/bin:/usr/sbin:/bin:/sbin
## SPAM:
for i in /home/miope/Maildir/.SPAM.ES_SPAM/cur/*
do
cat $i | sa-learn -C /etc/spamassassin/ --spam --no-rebuild
rm -f $i
done
## HAM:
for i in /home/miope/Maildir/.SPAM.NOesSPAM/cur/*
do
cat $i | sa-learn -C /etc/spamassassin/ --ham --no-rebuild
rm -f $i
done
sa-learn -C /etc/spamassassin/ --rebuild
en /etc/crontab: ## Re-entreno la base bayesiana con los spams mal clasificados: 52 6 1 * * root /usr/local/bin/learn-spam ))To - Do(( (o tareas para mejorar este documento)
Tomar ideas de: http://www.securitysage.com/guides/postfix_uce_steps.html http://advosys.ca/papers/postfix-filtering.html http://www.inigo-tech.com/Members/kaeru/articles/evolution-spamassassin/ (directo para fitro en Evolution) Creado por: rodolfo última modificación: Sábado 07 de Agosto de 2004 [19:03:53 UTC] por rodolfo |