rspamd Whitelis/Lista negra por dominio antes de filtrar

rspamd Whitelis/Lista negra por dominio antes de filtrar

Dado que lamentablemente no recibo ninguna respuesta en el foro de discusión de GitHub de rspamd, tal vez alguien aquí tenga experiencia con el modo de prefiltro de rspamd.

Estoy intentando que rspamd acepte cualquier correo proveniente de una lista determinada de dominios, sin importar cuánto crea que es spam. Lamentablemente, esto es necesario ya que muchas personas piensan que es una buena idea manipular a los remitentes o hacer otras cosas turbias, generalmente utilizadas por personas que tienen algo que ocultar. Esto debería ser más fácil de lograr con el modo de prefiltro, ya que se supone que se ejecutan incluso antes de evaluar si el correo es spam o no. Como beneficio adicional, esto también podría usarse para una lista de bloqueo si algunos correos no deseados notorios simplemente no son reconocidos. Por supuesto, a rspamd se le puede enseñar qué debería ser spam y qué no, pero eso no parece ser lo suficientemente efectivo. Además, en los registros, no puedo entender por qué se niega a aplicar los filtros previos para la mayoría de los dominios, por lo que tal vez alguno de ustedes tenga una sugerencia.

En este momento estoy usando la configuración multimapa para configurar los prefiltros para la lista de aceptación y bloqueo. Entonces en local.d/multimap.conf tengo:

ACCEPTLIST_SENDER_DOMAIN {
      #type = "header";
      #header = "from";
      type = "from";
      prefilter = "true";
      filter = "email:domain";
      map = "file:///etc/rspamd/local.d/acceptlist.sender.domain.map";
      description = "Sender domain is on allowed";
      action = "accept"; # Prefilter mode
  }

BLOCKLIST_SENDER_DOMAIN {
      #type = "header";
      #header = "from";
      type = "from";
      prefilter = "true";
      filter = "email:domain";
      map = "file:///etc/rspamd/local.d/blocklist.sender.domain.map";
      symbol = "BLOCKLIST_SENDER_DOMAIN";
      description = "Sender domain is on blocked";
      score = 10.0;
      action = "add_header"; # Prefilter mode
  }

Los dos comentarios en la parte superior de cada bloque son de cuando intenté filtrar por encabezado y luego por encabezado, pero como puedes filtrar directamente por eso, probé este, aunque no ayuda. Además, intenté agregar los archivos en el mapa solo con la ruta y file:///path/to/file, pero aún no tuve éxito de ninguna manera. rspamd.log tampoco muestra nada útil (el único error que aparece constantemente es sobre no poder cargar la clave dkim, ya que no puedo desactivar ese módulo). Copiar esta configuración a overwrite.d tampoco ayuda. ¿Algunas ideas?

Estoy en Debian 11 ejecutando rspamd 3.4-1~bullseye directamente desde el repositorio de rspamd.

Respuesta1

Mi última respuesta ayuda bastante, pero en general encontré algunos problemas aún sin resolver:

por alguna razón todavía se agrega ACCEPTLIST_SENDER_DOMAINpara un dominio que eliminé hace un tiempo del archivo de mapa. Incluso reinicié rspamd varias veces, pero se niega a olvidarse de ese dominio. Y no puedo encontrar ningún caché que pueda eliminar y que pueda ayudar.

Además de esto, se supone que el mapa múltiple acepta correos electrónicos provenientes de dominios específicos sin importar nada. Pero sólo cuando el dominio esté en el From:encabezado, en ningún otro caso. El dominio que previamente agregué falsamente a la lista blanca era el dominio de nuestra lista de correo. Por lo tanto, rspamd nunca debería haber aceptado esos correos en primer lugar basándose en el mapa múltiple, ya que ninguna lista de correo nuestra reemplazará el From:encabezado con su propia dirección. Pero aún así, muchos correos spam siguen marcados como spam, incluso si en teoría deberían ser excluidos por el false ACCEPTLIST_SENDER_DOMAIN. Por ahora, he vuelto a agregar el prefilter=true; a la configuración de mapas múltiples, tal vez esto ayude. Pero en general, rspamd todavía no se comporta como se esperaba.

EDITAR: para resolver el primer problema, volví a verificar explícitamente el From:encabezado, ya que type:from verificará el sobre antes de verificar esto, por lo que esto debería ser mucho más confiable (por supuesto, es bastante simple modificar el encabezado From pero Puedo contar con los dedos de una mano los incidentes que esto ocurrió en los últimos años y que no han sido detectados por nuestro filtro principal de spam):

ACCEPTLIST_SENDER_DOMAIN {
      type = "header";
      header = "From:";
      prefilter = true;
      map = "/etc/rspamd/local.d/acceptlist.sender.domain.map";
      symbol ="ACCEPTLIST_SENDER_DOMAIN";
      description = "Sender domain is on allowed";
      action = "accept"; # Prefilter mode
  }

BLOCKLIST_SENDER_DOMAIN {
      type = "header";
      header = "From:";
      prefilter = true;
      map = "/etc/rspamd/local.d/blocklist.sender.domain.map";
      symbol = "BLOCKLIST_SENDER_DOMAIN";
      description = "Sender domain is on blocked";
      action = "add_header"; # Prefilter mode
  }

Pero por alguna razón los correos tienen lo siguiente en su encabezado una vez que se activan estos símbolos:

X-Rspamd-Pre-Result: action=no action;
    module=multimap;
    Matched map: ACCEPTLIST_SENDER_DOMAIN

La acción en este caso claramente debería ser "aceptar", como se indica en la configuración. Así es como se ve en el volcado de configuración:

multimap {
    ACCEPTLIST_SENDER_DOMAIN {
        action = "accept";
        map = "/etc/rspamd/local.d/acceptlist.sender.domain.map";
        description = "Sender domain is on allowed";
        symbol = "ACCEPTLIST_SENDER_DOMAIN";
        prefilter = true;
        type = "header";
        header = "From";
}
    BLOCKLIST_SENDER_DOMAIN {
        action = "add_header";
        map = "/etc/rspamd/local.d/blocklist.sender.domain.map";
        description = "Sender domain is on blocked";
        symbol = "BLOCKLIST_SENDER_DOMAIN";
        prefilter = true;
        type = "header";
        header = "From";
}
    [...]
}

Respuesta2

No creo que deba haber comillas alrededor del valor del prefiltro:

prefilter = true;

Además, configurar una puntuación en un mapa de prefiltro puede resultar inútil ya que la acción ya está aplicada.

Espero que ayude !

Respuesta3

Esto debería funcionar. Logré implementar exactamente lo que quieres. Mi local.d/multimap.conf contiene:

Para aceptar correos de dominios específicos

WHITELIST_SENDER_DOMAIN {
      type = "from";
      filter = "email:domain";
      map = "/${LOCAL_CONFDIR}/local.d/whitelist.sender.domain.map";
      symbol ="WHITELIST_SENDER_DOMAIN";
      description = "WHITELIST map for SENDERS Domain - Action accept";
      action = "accept";
  }
# For rejecting domains
BLACKLIST_SENDER_DOMAIN {
      type = "from";
      filter = "email:domain";
      map = "/${LOCAL_CONFDIR}/local.d/blacklist.sender.domain.map";
      symbol ="BLACKLISTED_DOMAIN";
      description = "Blacklist map for Senders Domain - Action reject";
      action = "reject";
  } 

Debe crear los archivos de mapas mencionados en local.d con exactamente el mismo nombre y completarlos con los nombres de dominio que desea filtrar. ¡Solo un nombre de dominio por línea! Los archivos deberían tener permiso de lectura.

Además, tenga en cuenta que si se establece una acción en un mensaje, se deben omitir la mayoría de las comprobaciones adicionales.

Respuesta4

@cz.steve Ahora he reconstruido todo para usar rspamd ya que SpamAssassin tampoco estaba funcionando como yo quiero. Ahora los cambios habilitan las listas blanca y negra, aunque no exactamente de la forma en que quería que funcionara. Lo que quería era que hiciera coincidir los dominios dados solo con lo que está en el From:encabezado, no con todos los demás encabezados también. ¿Es posible lograr eso?

Ahora mismo mi configuración es esta:

ACCEPTLIST_SENDER_DOMAIN {
      type = "from";
      filter = "email:domain";
      map = "/etc/rspamd/local.d/acceptlist.sender.domain.map";
      symbol ="ACCEPTLIST_SENDER_DOMAIN";
      description = "Sender domain is on allowed";
      action = "accept"; # Prefilter mode
  }

BLOCKLIST_SENDER_DOMAIN {
      type = "from";
      filter = "email:domain";
      map = "/etc/rspamd/local.d/blocklist.sender.domain.map";
      symbol = "BLOCKLIST_SENDER_DOMAIN";
      description = "Sender domain is on blocked";
      action = "add_header"; # Prefilter mode
  }

información relacionada