BlockAttach, un filtro para Courier
Primero una pequeña historia de terror:
Un lúnes por la mañana,
ya hace algunos semanas en mi buzón amanecieron 2458 mensajes
nuevos de los cuales más de 2000 eran virus para windows (y para
usuarios ávidos de darle click a cualquier cosa); Suficiente es
suficiente, me dije y me dí a la tarea de instalarle un
"scanner" de virus al MTA de Matías Software.
A los pocos días caí en cuenta que simplemente
había escondido el problema, pues una cantidad significativa de
tiempo de proceso en nuestro servidor estaba siendo inutilmente gastada
en desempacar, scannear y "loggear" cientos de mensajes que terminaban
en "cuarentena" consumiendo disco y aumentando la carga de trabajo de
nuestro ya de por sí abrumado administrador.
Algo se tenía que hacer.
Los virus modernos se han vuelto tan descarados e insidiosos que los
tiempos en que un "scanner" de correo con buenos modales ("Trato de
limpiar", "Informo al emisor y/o receptor", "Almaceno por si las
dudas", etc.) se han quedado atrás.
Si alguien nos envía por correo un *.{pif ,exe,etc.} el 99.999%
de las veces ése alguien es un virus y lo único
procedente es rechazar el mensaje lo antes posible.
Así que aprovechando la infraestrutura de filtrado de courier desarrollamos un filtro
que hace precisamente eso.
Durante el díalogo SMTP
y antes de acceptar y encolar el correo, el mensaje es revisado y si
incluye anexos MIME
con nombres de archivo con alguna de las extenciones inaceptables
(actualmente pif, exe, com, bat,
scr y zip) el
mensaje es simplemente rechazado.
Requerimientos:
- Courier Mail Server
versión 0.44.2, otras versiones podrían funcionar.
URL: http://www.courier-mta.org/download.php
Tenemos disponibles RPMs
para RedHat 9.
- Perl 5
Instalado en cualquier distribución que se respete.
- El filtro blockattach.pl
Instalación:
En las siguientes
instrucciones se asumen los directorios usados por los RPMS de courier
suministrados pero pueden variar si la instalación de courier
fué por otros medios. La configuración de courier mismo
se detalla aquí.
- Crear un directorio para los
filtros
# mkdir /usr/lib/courier/libexec/pfilter
- Copiar blockattach.pl en el
directorio creado
- Definir la ruta al script en el
archivo de configuración de courierperlfilter(8)
# echo /usr/lib/courier/libexec/pfilter/blockattach.pl \
>/etc/courier/filters/perlfilter
- [OPCIONAL] Definir el modo de
filtrado
Con courier y dependiendo del modo de filtrado definido por el
administrador, los usuarios tienen la posibilidad de "saltarse" ciertos
filtros globales. Ver courierfilter(8)
para los detalles.
Si deseamos que el filtro sea obligatorio lo configuramos así:
# echo all >/etc/courier/filters/perlfilter-mode
- Activar el módulo de
filtrado
Si el sistema de filtrado de courier ya está corriendo (el
script de arranque de los RPMS suministrados lo activa
automáticamente) el efecto es inmediato.
# filterctl start perlfilter
Cambios:
03-03-2004 v0.1 Liberación original
Por hacer:
- El "wrapper" para perl de courierperlfilter en la actualidad
unicamente permite definir un único script de filtrado, lo que
resulta muy poco modular, se está evaluado el uso de Courier::Filter
de Julian Mehnle.
- Las extenciones inaceptables están alambradas en el
código, usar un achivo de configuración.
- Incorporar la noción de emisores y/o receptores
privilegiados que eviten el filtrado.
- Las bitácoras generadas son muy elementales.
Licencia:
© 2004 Salvador Ortiz García. Todos los derechos reservados
Este programa es software libre y puede ser distribuido y modificado en
los mismos términos que Perl.
Modificado el 4 de marzo de 2004
Salvador Ortiz García