# Apache SpamAssassin

Apache SpamAssassin es un programa de ordenador utilizado para el filtrado de spam. Utiliza una variedad de técnicas de detección de spam, incluyendo técnicas de DNS y checksum difusos, filtros bayesianos, programas externos, listas negras y bases de datos en línea. Está liberado bajo la Licencia de apache 2.0 y es parte de la Fundación Apache desde el 2004.
El programa puede ser integrado con el servidor de correo para filtrar automáticamente todo correo que llega a un sitio. También pueda ser corrido por usuarios individuales en su buzón propio y se integra con varios programas de correo. Apache SpamAssassin es altamente configurable; si se utiliza como un filtro a nivel de sistema todavía puede ser configurado para permitir preferencias por cada usuario.

## Historia

Apache SpamAssassin fue creado por Justin Mason, quién había mantenido un número de parches de un programa anterior llamado filter.plx de Mark Jeftovic, el cual a su vez comenzó en agosto de 1997. Mason reescribió todo el código de Jeftovic desde cero y subió el código resultante a SourceForge el 20 de abril de 2001.
En el verano de 2004 el proyecto se convierte en un proyecto de la Apache Software Fundation y más tarde es oficialmente rebautizado a Apache SpamAssassin.
La versión SpamAssassin 3.4.2 de septiembre de 2019 fue la primera en más de tres años, pero los desarrolladores dicen que "el proyecto ha tomado un conjunto nuevo de desarrolladores y está avanzando otra vez.".
En diciembre de 2019, se liberó la versión 3.4.3 de SpamAssassin.
En abril de 2021, se liberó la versión 3.4.6 de SpamAssassin. Se anunció que el desarrollo de la versión 4.0.0 sería el foco del proyecto.

## Métodos de uso

Apache SpamAssassin es una aplicación basada en Perl ( Correo::SpamAssassin en CPAN) la cual es normalmente utilizada para filtrar todo el correo entrante para uno o varios usuarios. Puede ser corrido como aplicación independiente o como subprograma de otra aplicación (tales como Milter, SA-Exim, Exiscan, MailScanner, MIMEDefang, Amavis) o como cliente ( spamc) que se comunica con un daemon (spamd). El modo de operación servidor/cliente o integrado tiene beneficios de rendimiento, pero bajo ciertas circunstancias puede introducir riesgos de seguridad adicionales.
Típicamente la variante de la aplicación se configura como un programa de filtro de correo genérico, o se llama directamente de un agente de usuario del correo que lo permite, cada vez que llega nuevo correo. Programas de filtrado del correo como procmail pueden ser configurados para canalizar todo el correo entrante a través de Apache SpamAssassin con un cambio el archivo procmailrc del usuario.

## Operación

Apache SpamAssassin viene con un conjunto grande de reglas que se aplican para determinar si un mensaje de correo electrónico es spam o no. La mayoría de reglas están basadas en expresiones regulares que están emparejadas contra el cuerpo o campos de encabezamiento del mensaje, pero Apache SpamAssassin también emplea varias otras técnicas antispam. Las reglas se llaman "pruebas" en la documentación de SpamAssassin.
Cada prueba tiene un valor de puntuación que será asignado a un mensaje si cumple los criterios de la prueba. Las puntuaciones pueden ser positivas o negativas, con valores positivos que indican "spam" y los negativos "ham" (mensajes no-spam). Un mensaje es revisado contra todas las pruebas y Apache SpamAssassin combina los resultados en un puntaje global el cual es asignado al mensaje. Mientras más alta la puntuación, más alta la probabilidad de que el mensaje sea spam.
Apache SpamAssassin tiene un umbral de puntuación interno (configurable) para clasificar un mensaje como spam. Normalmente un mensaje sólo será considerado spam si cumple varios criterios; cumplir solo una prueba no suele ser suficiente para alcanzar el umbral.
Si Apache SpamAssassin considera que un mensaje pueda ser spam, puede ser más reescrito. En la configuración por omisión, el contenido del correo es agregado como anexo MIME, con un breve resumen en el cuerpo de mensaje, y una descripción de las pruebas que resultaron en que fuera clasificado como spam. Si la puntuación es más baja que el valor definido, por omisión la información sobre las pruebas pasadas y el puntaje total todavía son añadidos a los encabezamientos de mensaje de correo electrónico y pueden ser utilizados en post-procesamiento para acciones menos severas, como el marcado de correo como sospechoso.
Apache SpamAssassin permite configurar su comportamiento por cada usuario, incluso si está instalado como servicio a nivel sistema; la configuración puede ser leída de un archivo o una base de datos. En su configuración, los usuarios pueden especificar individuos cuyos mensajes de correo electrónico nunca son considerados spam, o cambiar las puntuaciones para ciertas reglas. El usuario también puede definir una lista de idiomas en los que quiere recibir correo, y Apache SpamAssassin entonces asigna una puntuación más alta a todos los correos que parecen para ser escritos en otros idiomas.
Apache SpamAssassin está basado en heuristícas (reconocimiento de patrones), y tal software tiene por lo tanto falsos positivos y falsos negativos.

## Métodos de filtrado basados en red

Apache SpamAssassin también permite:
* Listas negras basadas en DNS y listas blancas basadas en DNS.
* Filtros de detección antispam basados en checksum-difuso como el Checksum distribuido de Clearinghouse, Vipul's Razor y los plugins Cloudmark Authority (comerciales)
* Sellos de correo electrónico de Hashcash basados en prueba-de-trabajo
* Sender Policy Framework y DomainKeys Identified Mail
* Listas negras URI como SURBL o URIBL las cuáles rastrean sitios web de spammers.
Se pueden añadir más métodos con relativa facilidad escribiendo un plug-in en Perl para Apache SpamAssassin.

## Filtros Bayesianos

Apache SpamAssassin refuerza sus reglas a través de filtros bayesianos donde el usuario o el administrador "alimenta" ejemplos de buenos (ham) y malo (spam) al filtro para que aprenda la diferencia entre ambos. Para este propósito, Apache SpamAssassin proporciona la herramienta de línea de comando sa-learn, la cual puede ser instruida para aprender un correo solo o un buzón entero si es ham o spam.
Típicamente, el usuario moverá spam no reconocido a una carpeta separada, y entonces se ejecuta sa-learn en la carpeta de no-spam y en la carpeta de spam por separado. Alternativamente, si el agente de usuario del correo lo permite, se puede llamar sa-learn para mensajes de correo electrónico individuales. Independiente del método utilizado para aprender, la prueba bayesiada de SpamAssassin ayudará a mejorar la exactitud de la puntuación de los mensajes de correo electrónico futuros basados en este aprendizaje.

## Licenciamiento

Apache SpamAssassin es software de código abierto/libre, autorizado bajo la Licencia de apache 2.0. Versiones anteriores a 3.0 están licenciadas dualmente bajo la Licencia Artística y el GNU Licencia Pública General.

## sa-Compile

sa-Compile es una utilidad distribuida con Apache SpamAssassin que compila un SpamAssassin el set de reglas en un autómata finito determinista que permite que Apache SpamAssassin utilice el poder del procesador más eficientemente.

## Probando Apache SpamAssassin

Apache SpamAssassin está diseñado para activar el GTUBE, un string de 68 bytes similar al EICAR archivo de prueba de antivirus. Si el string está insertada en un mensaje formateado según el RFC 5322 y es pasado a través del motor Apache SpamAssassin, apache SpamAssassin le asignará un peso de 1000.