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:
  1. 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.
  2. Perl 5
    Instalado en cualquier distribución que se respete.
  3. 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í.
  1. Crear un directorio para los filtros

    # mkdir /usr/lib/courier/libexec/pfilter

  2. Copiar blockattach.pl en el directorio creado
  3. 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

  4. [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

  5. 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:
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