Para qmail está bastante bien qpsmtpd . Es un reemplazo para qmail-smtpd, así que no hace falta tener el qmail con el parche QMAILQUEUE que te piden casi todos los filtros.
Lo bueno es que está escrito en perl y funciona con un sistema de plugins en el que es muy sencillo añadir cualquier tipo de filtro (a nada que controles un poco el perl). Viene con unos cuantos, como comprobación de usuarios/dominios, bloqueo por listas negras vía DNS (RFC-Ignorant, ORDB, etc), comprobación por programas externos (Clam antivirus, SpamAssassin), y algunos más exóticos como leer la configuración remotamente por HTTP o soltar una frasecilla del fortune al cerrar la sesión SMTP.
Lo malo es que está escrito en perl y funciona con un sistema de plugins, lo que no lo hace precisamente rápido. Así que no creo que sea muy recomendable para servidores que manejen grandes volúmenes de correo.
Para el tema de la historia, me hice el siguiente plugin (fusilando uno que viene con el programa):
sub register {
my ($self, $qp) = @_;
$self->register_hook("data_post", "check_kakas");
}
sub check_kakas {
my ($self, $transaction) = @_;
# make sure we read from the beginning;
$transaction->body_resetpos;
my $line_number = 0;
while ($_ = $transaction->body_getline) {
last if $line_number++ > 40;
return (DENY, "Attached file type not allowed")
if m/^Content-Type:.*name.*\.(exe|bat|scr|com|pif)/i;
}
return (DECLINED);
}
Como veis, la expresión regular está directamente plagiada de RinzeWind (la leí por ecol), y basta alterarla para filtrar lo que interese.
|