Episodio VI: Limitación de correos enviados con Ratelimit en Exim4

Nota: Este post pertenece a una saga de configuración de correo, para entenderlo debes ir primero a la página de índice en saga de servidores de correo.

Debian no incluye ninguna preconfiguración para limitar el número de correos. Exim4 dispone de ratelimit, y tras varias pruebas estoy usando la siguiente configuración.

Limitaciones globales y a usuarios

Esta primera parte pone limitaciones generales al servidor, e individuales por cada usuario autenticado. La forma de detectar el si el sistema está bloqueando correos es el log de Exim4.

Se colocan  al principio del fichero para que tengan prioridad sobre el resto de reglas /etc/exim4/conf.d/acl/30_exim4-config_check_rcpt

  # My debug rule,
  # warn ratelimit = 0 / 1h / strict
  #   log_message = Sender rate $sender_rate / $sender_rate_period
   
  warn
    ratelimit = 100 / 1m / $primary_hostname
    message = Ratelimit server sending reached - $sender_rate / $sender_rate_period
      
  # Keep authenticated users under control
  deny
    authenticated = *
    ratelimit = 100 / 1d / strict / $authenticated_id
    message = $sender_address sender ratelimit overlimit - $sender_rate / $sender_rate_period

La primera regla comentada es para la depuración, activándola se puede ver en syslog los conteos de mensajes enviados que hacer exim.

La seguna regla  se puede cambiar de warn a deny, así, el servidor se bloquea si envían 100 correos en un minuto, evitando envíos masivos instantáneos.

La última regla limita a los usuarios, cada uno por separado con su propio conteo. Concretamente lo tengo limitado a 100 correos diarios así detecto cuando han robado una clave.

Limitando el correo con origen el propio servidor

Esta configuración no viene predeterminada en Debian y pretende limitar el correo que procede de procesos locales descontrolados, páginas Web con PHP, otros scripts o usuarios del sistema.

Cuidado con esto, tiene efectos laterales sobre Exim4 ya que el propio correo que tiene en la cola Exim4 es afectado por esta regla y se puede quedar la cola bloqueada. Personalmente la utilizo, y si se bloquea la cola es que algo no va bien. Si pruebas esta configuración asegúrate de tener monitorizado Exim4 para controlar los bloqueos.

Exim4 tiene una ACL para los correos que no proceden de la red, para activarla hay que definir la configuración de Debian ya que no se incluye. En mi fichero de definiciones /etc/exim4/conf.d/main/00_exim4_config_mypanel

acl_not_smtp = acl_not_smtp

Nuevo fichero llamado en /etc/exim4/conf.d/acl/50_exim4-config-limit_mypanel

acl_not_smtp:

 accept
  senders = root:paulino:paulino@art-website.com
  logwrite = :main: Ratelimit: <$sender_address> accepted without limit
  #message = Local sender <$sender_address> forbidden

 deny
  ratelimit = 100 / 1h / strict / www-data
  message = <$sender_address> sender ratelimit overlimit - $sender_rate / $sender_rate_period

 warn
  ratelimit = 50 / 1h / strict / www-data
  #delay     = ${eval $sender_rate - 4 }
  message = <$sender_address> sender ratelimit warning - $sender_rate / $sender_rate_period

 accept
  logwrite = :main: Accepted local, ratelimit: <$sender_address> local sender $sender_rate / $sender_rate_period

La primera regla asegura la recepción de todos los correos locales con destino al administrador. Si lo la pones perderás los correos de sistema como el cron, etc.

 

 

 

paulino

paulino escribió 18 entradas

Navegación de la entrada


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puede usar las siguientes etiquetas y atributos HTML:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>