enchufado
   RSS
#
Policyd: limitación de envio de correos con Postfix (General) 2013-12-15 22:03:50

Para empezar, comentar que Policyd es un sistema antispam para Postfix que hace muchas cosas: greylisting, throttling, rate limiting, spamtrap y blacklisting/whitelisting. Aquí vamos a usar la función de throttling o de limitación del número de correos por unidad de tiempo. Efectivamente, usaremos Debian GNU/Linux, aunque partes de la guía puedan adaptarse a otras distros.

Al lío:

  1. Instalamos el paquete:
  2. $ apt-get install postfix-policyd

    A modo de nota informativa, la instalación del paquete nos crea automáticamente la BD postfixpolicyd en MySQL, y la tabla que nos interesa aquí es throttle.

  3. Configuración de la opción de throttling (sección SENDER THROTTLE):
  4. $ vi /etc/postfix-policyd.conf:
    
    # Habilitamos el sender throttling.
    SENDERTHROTTLE=1
    # Le decimos que dé un rechazo temporal (4xx) en lugar de uno definitivo (5xx).
    QUOTA_EXCEEDED_TEMP_REJECT=1
    # Ponemos un mensajito que nos sirva para identificarlo.
    SENDER_QUOTA_REJECTION="Quota Exceeded (check policyd!)."
    SENDER_SIZE_REJECTION="Message size too big (check policyd!)."
    # Definimos la quota de número de correos permitido por unidad de tiempo...
    SENDERMSGLIMIT=200
    # ...así como la cantidad de destinatarios permitidos.
    SENDERRCPTLIMIT=500
    # Y el tamaño máximo total transferido. Ojo porque tiene un hardlimit en 2GB.
    SENDERQUOTALIMIT=2000000000
    # La unidad de tiempo en que ésta limitación se reinicializa/resetea.
    SENDERTIMELIMIT=1h
    # El tamaño máximo del mensaje (100MB).
    SENDERMSGSIZE=102400000
    # Y finalmente los umbrales de los avisos, que iran a syslog.
    SENDERMSGSIZE_WARN=50
    SENDERMSGSIZE_PANIC=90
    SENDER_INACTIVE_EXPIRE=5d
    
  5. Reiniciamos el servicio para aplicar éstos cambios:
  6. $ /etc/init.d/postfix-policyd restart
  7. Finalmente incluimos éste filtro en postfix y lo reiniciamos también:
  8. $ vi /etc/postfix/main.cf:
    smtpd_end_of_data_restrictions =
            check_policy_service inet:127.0.0.1:10031,
            permit_mynetworks
    
    $ /etc/init.d/postfix restart
    
  9. Opcional: hice éste pequeño script de monitoritzación en PHP a modo de interfaz gráfico web que toma los valores de la base de datos para poder consultar (y también resetear) el estado de éste throttling. Sustituir los campos ip, db_user y dp_password al principio del script por unos correctos para tu setup.

Y con ésto ya tendríamos funcionando el throttling, cuyo estado podemos consultar a través de la base de datos, los logs o el mencionado script.


Comentarios (3)


Volver al indice

login, admin, form, register