Control de velocidad de mensajes SMTP en Ubuntu 8.04, preferiblemente con postfix

8

Tal vez estoy persiguiendo un error, pero estoy tratando de configurar un proxy smtp. Tengo un servidor de postfix que recibe todo el correo electrónico para una colección de servidores / clientes. Se utiliza un smarthost (relayhost = ...) para reenviar su correo a nuestra MTA corporativa. Me gustaría limitar la cantidad de mensajes que un servidor individual puede transmitir para evitar que el MTA corporativo se vea afectado. Postfix tiene un programa llamado "yunque" que es capaz de rastrear estadísticas sobre el correo que se utilizará para tales cosas, pero parece que no se ejecuta. Ejecuté "inotifywait -m / usr / lib / postfix / anvil" mientras comencé postfix y envié una serie de mensajes a través de él desde un servidor remoto. inotifywait indicó que el yunque nunca se ejecutó. ¿Alguien consiguió controles de velocidad de postfix / yunque para trabajar?

main.cf

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
readme_directory = no
myhostname = site-server-q9
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = localhost
relayhost = Out outgoing mail relay
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 10.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = 10.X.X.X
smtpd_client_message_rate_limit = 1
anvil_rate_time_unit = 1h

extracto de master.cf

anvil     unix  -       -       -       -       1       anvil
smtp      inet  n       -       -       -       -       smtpd
TimDaMan
fuente

Respuestas:

7

Al final utilicé policyd que hace exactamente este tipo de cosas. Lo configuré para limitar una sola dirección IP a no más de 10000 mensajes por hora y 1 GB. A continuación hay una copia del documento que escribí para mí en caso de que alguien lo encuentre útil.


Configurar postfix y policyd

Después de instalar los paquetes, realice los siguientes cambios en sus configuraciones. En /etc/postfix/main.cf agregue la siguiente línea

smtpd_client_restrictions = check_policy_service inet:127.0.0.1:10031

En /etc/postfix-policyd.conf

  • cambiar WHITELISTING=1aWHITELISTING=0
  • cambiar GREYLISTING=1aGREYLISTING=0
  • cambiar SENDERTHROTTLE=0aSENDERTHROTTLE=1
  • cambiar QUOTA_EXCEEDED_TEMP_REJECT=1aQUOTA_EXCEEDED_TEMP_REJECT=0
  • cambiar SENDER_QUOTA_REJECTION="Quota Exceeded."aSENDER_QUOTA_REJECTION="Quota Exceeded, 10,000 messages/hour max!"
  • cambiar SENDER_SIZE_REJECTION="Message size too big."aSENDER_SIZE_REJECTION="Message size too big. 10Mb per message or 1 Gb/hour max!"
  • cambiar SENDERMSGLIMIT=512aSENDERMSGLIMIT=10000
  • cambiar SENDERRCPTLIMIT=3600aSENDERRCPTLIMIT=10000
  • cambiar SENDERQUOTALIMIT=250000000aSENDERQUOTALIMIT=1000000000
  • cambiar SENDERMSGSIZE=10240000aSENDERMSGSIZE=50000000
  • cambiar SENDER_INACTIVE_EXPIRE=31daSENDER_INACTIVE_EXPIRE=1h
TimDaMan
fuente
2

Posiblemente interesante para su implementación:

default_destination_concurrency_limit (default: 20)

    The default maximal number of parallel deliveries to the same destination. This is the default limit for delivery via the lmtp(8), pipe(8), smtp(8) and virtual(8) delivery agents. With per-destination recipient limit > 1, a destination is a domain, otherwise it is a recipient.

    Use transport_destination_concurrency_limit to specify a transport-specific override, where transport is the master.cf name of the message delivery transport.
Greeblesnort
fuente
1

Anvil realmente estaba destinado a limitar la velocidad de los mensajes entrantes, no limitar los salientes. Piense en ello como un filtro de DoS crudo.

Es posible que desee ver la configuración que pertenece a la parte qmgr de postfix. Específicamente, es posible que desee establecer sus límites de concurrencia en algo muy bajo, y sus tiempos de espera en la cola muy altos. Querrá establecer la tasa de entrega en algo que tenga un gran retraso (r) , y también querrá reducir el número de procesos de entrega en master.cf.

¿Ha visto el uso de qshape para determinar cuál será una tasa aceptable para su MTA interna?

Avery Payne
fuente
Mi objetivo no es ralentizar nada, solo quiero evitar que el proceso de escape elimine el servidor corporativo. Ese es el trato que hice con el equipo de intercambio por sus servicios. El correo todavía debe ser ágil. Configuré postfix para entrega local y repetí la prueba. El mensaje sigue ignorando el límite.
TimDaMan
1
¡¡Me lo imaginé!! Anvil no obtiene datos de alimentación / proceso sobre clientes que están en "mynetworks = ..." Lo cambié a mynetworks = 127.0.0.0/8 y se está cumpliendo el límite.
TimDaMan
0

Anvil registra para postfix, he agregado a continuación a main.cf y parece funcionar para mí

#### Prevent server sending excess mail from clients add to /etc/postfix/main.cf
####
anvil_rate_time_unit = 60s
anvil_status_update_time = 120s
smtpd_error_sleep_time = 2s
smtpd_soft_error_limit = 10
smtpd_hard_error_limit = 20
smtpd_client_message_rate_limit = 
#### End Prevent server sending excess mail 
Alex Hull
fuente