Controllo della velocità dei messaggi SMTP su Ubuntu 8.04, preferibilmente con postfix


8

Forse sto inseguendo un bug ma sto cercando di impostare una specie di proxy smtp. Ho un server Postfix che riceve tutta l'e-mail per una raccolta di server / client. Usano uno smarthost (relayhost = ...) per inoltrare la posta al nostro MTA aziendale. Vorrei limitare il numero di messaggi che un singolo server può inoltrare per evitare di inondare l'MTA aziendale. Postfix ha un programma chiamato "incudine" che è in grado di tenere traccia delle statistiche sulla posta da utilizzare per tali cose ma non sembra essere eseguito. Ho eseguito "inotifywait -m / usr / lib / postfix / anvil" mentre ho avviato postfix e inviato un numero di messaggi attraverso di esso da un server remoto. inotifywait ha indicato che l'incudine non è mai stata eseguita. Qualcuno ha ottenuto controlli postfix / incudine per funzionare?

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

estratto di master.cf

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

Risposte:


7

Alla fine ho usato Polydyd che fa proprio questo genere di cose. L'ho configurato per limitare un singolo indirizzo IP a non più di 10000 messaggi l'ora e 1 GB. Di seguito è una copia del documento che ho scritto per me nel caso qualcuno lo trovasse utile.


Configurazione di postfix e policyd

Dopo aver installato i pacchetti, apportare le seguenti modifiche alle loro configurazioni. In /etc/postfix/main.cf aggiungi la seguente riga

smtpd_client_restrictions = check_policy_service inet:127.0.0.1:10031

In /etc/postfix-policyd.conf

  • cambia WHITELISTING=1inWHITELISTING=0
  • cambia GREYLISTING=1inGREYLISTING=0
  • cambia SENDERTHROTTLE=0inSENDERTHROTTLE=1
  • cambia QUOTA_EXCEEDED_TEMP_REJECT=1inQUOTA_EXCEEDED_TEMP_REJECT=0
  • cambia SENDER_QUOTA_REJECTION="Quota Exceeded."inSENDER_QUOTA_REJECTION="Quota Exceeded, 10,000 messages/hour max!"
  • cambia SENDER_SIZE_REJECTION="Message size too big."inSENDER_SIZE_REJECTION="Message size too big. 10Mb per message or 1 Gb/hour max!"
  • cambia SENDERMSGLIMIT=512inSENDERMSGLIMIT=10000
  • cambia SENDERRCPTLIMIT=3600inSENDERRCPTLIMIT=10000
  • cambia SENDERQUOTALIMIT=250000000inSENDERQUOTALIMIT=1000000000
  • cambia SENDERMSGSIZE=10240000inSENDERMSGSIZE=50000000
  • cambia SENDER_INACTIVE_EXPIRE=31dinSENDER_INACTIVE_EXPIRE=1h

2

Forse interessante per la tua implementazione:

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.

1

L'incudine aveva davvero lo scopo di limitare la velocità dei messaggi in arrivo, non limitare le uscite. Pensalo come un filtro DoS grezzo.

Potresti voler esaminare le impostazioni relative alla parte qmgr di postfix. In particolare, potresti voler impostare i tuoi limiti di concorrenza su qualcosa di molto basso e i tuoi tempi di attesa in coda molto alti. Ti consigliamo di impostare la velocità di consegna a qualcosa che ha un grande (r) ritardo , e anche voler abbassare il numero di processi di consegna in master.cf.

Hai esaminato l'utilizzo di qshape per determinare quale sarà un tasso accettabile per il tuo MTA interno?


Il mio obiettivo non è rallentare nulla, voglio solo impedire che il processo di fuga elimini il server aziendale. Questo è l'accordo che ho fatto con il team di scambio per i loro servizi. La posta deve ancora essere scattante. Ho riconfigurato Postfix per la consegna locale e ripetuto il test. Il messaggio sta ancora ignorando il limite.
TimDaMan,

1
L'avevo capito!! L'incudine non ottiene i dati di feed / process sui client che si trovano in "mynetworks = ..." L'ho cambiato in mynetworks = 127.0.0.0/8 e il limite viene rispettato.
TimDaMan,

0

Anvil fa la registrazione per postfix, Ive ha aggiunto di seguito a main.cf e sembra funzionare per me

#### 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 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.