|
|
Control anti-spam corporativo con Exim4+Spamassassin
(26663 lectures)
Por Ricardo Galli Granada
gallir
(http://mnm.uib.es/gallir/)
Creado el 22/06/2003 20:18 modificado el 23/11/2003 03:02
|
Sigo con mis configuraciones del Exim4. Esta vez quería que el pequeño ordenador que hace de MX en la red de casa también ejecutara el spamassassin para todos los mails entrantes, tanto para los destinados a recipientes en ese mismo ordenador como para los que hace de MX. O sea, una configuración ideal para un MX coporativo que quiera filtrar spams.
Nota: minutos antes que yo ponga este artículo, Josep de forma independiente puso otro en la misma línea, pero con el Postfix. ¿Se nota que estamos hasta los huevos de spams?
Actualización: Evitar rebotes en servidores muy cargados. | Pagina1/1 |
El exim4 para Debian tiene la configuración en varios ficheros dentro de /etc/exim4/conf.d, lo que hay que hacer para ejecutar el spamassassin es agregar un router y un transport donde definiremos las reglas para ejecutar y pasar por el spamassassin. El nombre que le ponemos a los ficheros es importante, porque definen el orden que tendrán en el fichero final de configuración que genera el update-exim4.conf () Con lo que doy aquí ya debería funcionar perfectamente. Por supuesto, se asume que el spamassassin ya lo tienes instalado y configurado correctamente.
Agregar un transport
Hay que crear un fichero nuevo dentro de /etc/exim4/conf.d/transport, por ejemplo 31_spamassassin (el nombre no interesa en este caso). Ese fichero tendrá:
# /etc/exim4/conf.d/transport/31_spamassassin
# Spam Assassin
spamcheck:
driver = pipe
command = /usr/sbin/exim4 -oMr spam-scanned -bS
use_bsmtp = true
transport_filter = /usr/bin/spamc
home_directory = "/tmp"
current_directory = "/tmp"
# must use a privileged user to set
# $received_protocol on the way back in!
# Alerta
# Poned aquí el usuario y grupo correspondiente
# al exim. Últimamente es "Debian-exim" el usuario
user = mail
group = mail
log_output = true
return_fail_output = true
return_path_add = false
message_prefix =
message_suffix =
Con este fichero estamos definiendo como tiene que hacer para ejecutar el spamc.
IMPORTANTE: Si vuestro servidor está muy cargado o tiene poca capacidad y véis algún mensaje rebotado con texto similar a:
An error was detected while processing a file of BSMTP input.
The error message was:
421 SMTP incoming data timeout - message abandoned
The SMTP transaction started in line 0.
The error was detected in line 3.
0 previous messages were successfully processed.
The rest of the batch was abandoned.
o Cannot open bayes databases en /var/log/syslog, lo mejor es agregar la siguiente opción al fichero anterior:
ignore_status = true
Lo que hace es ignorar el estado de salida del comando exim4, generado porque el spamc le retornó un error.
Agregar el router
Hay que crear otro router dentro del directorio /etc/exim4/conf.d/router. En este caso el nombre del fichero sí importa, porque debe estar definido antes que los demás routers si queremos que se ejecuten para todos los mensajes que llegan y que posiblemente sean re-enviados hacia otro MX. En mi caso lo he llamado <199_spamassassin/tt>· El contenido es el siguiente:
# /etc/exim4/conf.d/router/199_spamassassin
# Spam Assassin
spamcheck_router:
no_verify
debug_print = "R Spammassassin"
domains = +local_domains : +relay_to_domains
# When to scan a message :
# - it isn't already flagged as spam
# - it isn't already scanned
condition = "${if and { {!def:h_X-Spam-Flag:} \
{!eq {$received_protocol}{spam-scanned}}} {1}{0}}"
driver = accept
transport = spamcheck
La línea domains = +local_domains : +relay_to_domains es para indicar que el transporte spamcheck debe ejecutarse para todos los mensajes cuyo destinatario sea un dominio local del ordenador o uno que esté destinado a uno de los MX del que hacemos relay.
Et voilà
Sólo basta ejecutar update-exim4.conf y /etc/init.d/exim4 restart.
Más información: Exim4 para Debian, Exim4 and Spamassassin, Exim SpamAssassin at SMTP time.
Delicatessen final
¿Queréis además que en vuestro ordenador personal se use el resultado del spamassasin para entrenar al bogofilter y además hacer un segundo filtrado? Eso es lo que hago con mi cuenta en mi ordenador, y hace varios días que no veo ningún spam en el Kmail ;-)
Éste es mi ~/.procmailrc:
# Si es un spam se lo indico al bogofilter...
:0 c
* ^X-Spam-Status: Yes
|bogofilter -s -l
# ...y luego lo pongo en ~/mail/spams
# a veces, cuando estoy aburrido, me divierto leyéndolos
:0:
* ^X-Spam-Status: Yes
mail/spams
# Hago el segundo filtrado
:0HB
* ? bogofilter -u -l
mail/spams
|
|
|
|
|
|
Comentarios Es posible que se hayan omitido algunos comentarios considerados poco constructivos
| 1. Re: Control anti-spam corporativo con Exim4+Spamassassin (23/06/2003 11:05, #15418) Por: Josep (http://infoterrassa.com) |
Cómo sabías que estaba hasta los huevos? Pues sí!
Bueno, no es para ponernos ahora a ver "quién la tiene más gorda", pero acabo de eliminar 260 mensajes correctamente valorados como spam. Que se cuele uno, hasta hace gracia :-) | No es pot respondre |
2. Re: Control anti-spam corporativo con Exim4+Spamassassin (25/11/2003 18:08, #18247) Por: Sildur |
Respecto al tema del spam, a mi hace un par de meses se me ocurrió un método para identificar el correo no deseado.
Se basa en el hecho de que la mayoría de los spammers lo único que tienen de nosotros es nuestro e-mail.
Por ello, los mensajes provenientes de los spammers suelen venir con la cabecera: To: pepe@hotmail.com.
En cambio, la gente conocida nos suele tener en sus libretas de direcciones, lo cual hace que manden un e-mail con la cabecera: To: Pepe el de hotmail <pepe@hotmail.com>.
Podríamos hacer un filtro que rechazase los e-mail cuyo To: no contuviese los < >, o bien, no contuviese "Pepe el de hotmail", por ejemplo. Podríamos tener una lista de nombres, los cuales usaríamos en diferentes sitios. En bulmalug podriamos llamarnos Pepe (bulmalug). Así, si un spammer se saltase el filtro, al menos sabriamos por donde y por qué web nos vienen los tiros. En el caso de bulma, por ejemplo, podríamos poner el nombre en la sección datos personales. Así podríamos poner tranquilamente nuestro e-mail en los comentarios, dado que haría falta el nombre para mandar el e-mail.
El paraíso sería que el exim, por ejemplo, lo implementase internamente y devolviese un error de usuario inexistente a la máquina que los envíe (no estoy hablando de un e-mail al remite, sino de un mensaje de error en el proceso de envío del e-mail).
Ésta solución solo requiere un pequeño esfuerzo por nuestra parte (usar la libreta de direcciones) y se lo pone muy dificil al spammer de turno. | No es pot respondre |
3. Re: Control anti-spam corporativo con Exim4+Spamassassin (28/11/2003 13:07, #18313) Por: Anónimo |
Tu solución iba a durar 2 dias, el tiempo necesario para que los spamers se den cuenta y añadan "user" a las direcciones...
Ademas tedrías a saco de falsos positivos (correos legitimos rechazados) lo que hace el sistema inaceptable por cualquiiuer usuario. | No es pot respondre |
4. Re: Control anti-spam corporativo con Exim4+Spamassassin (01/12/2003 02:45, #18366) Por: Sildur |
Aunque añadan user a las direcciones, solo el nombre correcto es el que pasaría. Por ejemplo "Pepe (Bulma) " Si pones cualquier cosa aparte de "Pepe (Bulma)" no te dejaría entrar (o cualquier cosa especificada en una lista de nombres).
Y lo de los falsos positivos es cierto. Pero es un pequeño inconveniente a cambio de permanecer libre de spam. A la larga haríamos que el negocio del spam fuese insostenible, porque sería mas caro tratar de averiguar los nombres que complementan las direcciones e-mail que lo que podrian ganar.
Además, siempre puede ser una opción. El usuario podría elegir. Yo creo que con tal de librarse del spam, harían cualquier cosa.
De todos modos, el usuario no es el centro del universo. Internet se satura con el spam. Hoy día, el flujo de spam supera al del email normal. Esta situación es insostenible y creo que, de no poner medidas, vamos a ser desbordados por el spam. El usuario medio nada sabe de todo esto, y por ello poco criterio tiene para opinar respecto al tema.
Los mecanismos anti-spam tradicionales no actuan en el servidor. Es decir, el servidor de mail puede desechar el e-mail considerándolo spam, pero ya lo ha aceptado y el spammer ya se ha ganado las lentejas.
Mi solución ataca el problema donde debe. El e-mail nunca es aceptado y el spammer no puede colocar su e-mail (el servidor enviaría mensaje de error al spammer en el transcurso del intento de envio de basura). Y problema resuelto. Esa gente cobra como los buzoneadores, por e-mail enviado con éxito a su destino. El hecho de que tu tires la propaganda del buzoneador a la basura o que ni siquiera la leas importa poco al buzoneador. Le pagan por meterla en el buzón, nada más. Lo mismo se aplica al spammer.
Por cierto, yo administro un par de servidores y por mi escasa experiencia, aceptarían cualquier cosa con tal de deshacerse de esa chatarra. | No es pot respondre |
|
|
5. Re: Control anti-spam corporativo con Exim4+Spamassassin (27/11/2003 14:57, #18288) Por: Br0th3r (http://www.fibranet.org) |
| ¿Y nadie sabe como integra SPAMASSASIN en el Courier? | No es pot respondre |
6. Resuelto: SPAMASSASIN en COURIER con VIRTUALMAIL (13/06/2004 15:10, #21882) Por: Juan Miguel Taboada (http://www.fibranet.org) |
Bueno, finalmente lo resolví:
# Fichero maildroprc de la configuración de courier
# Global maildrop filter
DEFAULT="$HOME/"
SPAM="$HOME/spam/"
if ( $SIZE < 100000 ) {
exception { xfilter "/usr/bin/spamc" }
}
if (/^X-Spam-Flag: *YES/) {
exception { to "$SPAM" }
} else {
exception { to "$DEFAULT" }
}
Después de esto cada virtualmail que desee usar el antispam deberá añadirse un fichero como sigue:
# Fichero .courier en el directorio virtualmail del usuario
| /usr/bin/maildrop
Finalmente para decirle a courier donde debe mandar los emails tenemos 2 opciones, a una cuenta general spam@ o bien al mismo usuario, para eso hacemos un enlace al propio directorio del virtualmail (si el spam va para el usuario) o bien un enlace al directorio del virtualmail de spam@.
No olvideis que el fichero de configuración courierd debe tener el defaultdelivery como sigue:
DEFAULTDELIVERY="| /usr/bin/maildrop"
Con esto todo funcionará correctamente. :)
Para dudas contactad conmigo en: webmaster<arrobita>fibranet.org
Un saludo, | No es pot respondre |
|
7. Re: Control anti-spam corporativo con Exim4+Spamassassin (27/09/2005 16:02, #28608) Por: Anònim |
| El artituculo esta fantastico me ayudo increiblemente a dar mis primeros pasos con amavis... pero ahora tengo un drama un poco mas especifico... tengo que hacerlo andar con postgress
alguien tiene o sabe de un tutorial en relacion de que el exim4 /etc/exim4/conf.d/router/01_lo que sea
pero con queris para laburar con la base de datos? | No es pot respondre |
|
|
|
|---|
|
|
|
|
Calificacion
    Vots: 18 |
Danos tu opinion:
|
|
|
|
|
|
|
|