Controle de taxa de mensagens SMTP no Ubuntu 8.04, preferencialmente com postfix

8

Talvez eu esteja perseguindo um bug, mas estou tentando configurar um tipo de proxy smtp. Eu tenho um servidor postfix que recebe todo o email para uma coleção de servidores / clientes. Ele usa um smarthost (relayhost = ...) para encaminhar suas mensagens para o nosso MTA corporativo. Gostaria de limitar o número de mensagens que um servidor individual pode retransmitir para evitar inundar o MTA corporativo. O Postfix possui um programa chamado "bigorna", capaz de rastrear estatísticas sobre o correio a ser usado para essas coisas, mas não parece ser executado. Executei "inotifywait -m / usr / lib / postfix / anvil" enquanto iniciava o postfix e enviei várias mensagens através de um servidor remoto. inotifywait indicou que bigorna nunca foi executada. Alguém conseguiu controles de taxa de postfix / bigorna para funcionar?

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

extração master.cf

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

Respostas:

7

No final, usei policyd, que faz exatamente esse tipo de coisa. Eu o configurei para limitar um único endereço IP a não mais que 10000 mensagens por hora e 1 GB. Abaixo está uma cópia do documento que escrevi para mim, caso alguém ache útil.


Configurando Postfix e Policyd

Após a instalação dos pacotes, faça as seguintes alterações em suas configurações. Em /etc/postfix/main.cf, adicione a seguinte linha

smtpd_client_restrictions = check_policy_service inet:127.0.0.1:10031

Em /etc/postfix-policyd.conf

  • mude WHITELISTING=1paraWHITELISTING=0
  • mude GREYLISTING=1paraGREYLISTING=0
  • mude SENDERTHROTTLE=0paraSENDERTHROTTLE=1
  • mude QUOTA_EXCEEDED_TEMP_REJECT=1paraQUOTA_EXCEEDED_TEMP_REJECT=0
  • mude SENDER_QUOTA_REJECTION="Quota Exceeded."paraSENDER_QUOTA_REJECTION="Quota Exceeded, 10,000 messages/hour max!"
  • mude SENDER_SIZE_REJECTION="Message size too big."paraSENDER_SIZE_REJECTION="Message size too big. 10Mb per message or 1 Gb/hour max!"
  • mude SENDERMSGLIMIT=512paraSENDERMSGLIMIT=10000
  • mude SENDERRCPTLIMIT=3600paraSENDERRCPTLIMIT=10000
  • mude SENDERQUOTALIMIT=250000000paraSENDERQUOTALIMIT=1000000000
  • mude SENDERMSGSIZE=10240000paraSENDERMSGSIZE=50000000
  • mude SENDER_INACTIVE_EXPIRE=31dparaSENDER_INACTIVE_EXPIRE=1h
TimDaMan
fonte
2

Possivelmente interessante para sua implementação:

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
fonte
1

A bigorna foi realmente criada para limitar as taxas de mensagens recebidas, e não as de saída. Pense nisso como um filtro de DoS bruto.

Você pode querer examinar as configurações que pertencem à parte qmgr do postfix. Especificamente, convém definir seus limites de simultaneidade para algo muito baixo e seus tempos de espera na fila muito altos. Você vai querer definir a taxa de entrega a algo que tem um grande atraso (r) , e também quer diminuir o número de processos de entrega em master.cf.

Você já viu o qshape para determinar qual será uma taxa aceitável para o seu MTA interno?

Avery Payne
fonte
Meu objetivo não é reduzir a velocidade de tudo, só quero impedir que o processo de fuga despeje o servidor corporativo. Esse é o acordo que fiz com a equipe de intercâmbio por seus serviços. O correio ainda precisa ser rápido. Reconfigurei o postfix para entrega local e repeti o teste. As mensagens ainda estão ignorando o limite.
TimDaMan 26/06/2009
11
Eu descobri isso !! A bigorna não obtém dados de feed / processo sobre clientes que estão em "mynetworks = ..." Alterei-o para mynetworks = 127.0.0.0/8 e o limite está sendo obedecido.
21410 TimDaMan
0

A bigorna registra o postfix, adicionei abaixo ao main.cf e parece funcionar para mim

#### 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
fonte