Steuerung der SMTP-Nachrichtenrate unter Ubuntu 8.04, vorzugsweise mit Postfix

8

Vielleicht jage ich einen Fehler, aber ich versuche, eine Art SMTP-Proxy einzurichten. Ich habe einen Postfix-Server, der alle E-Mails für eine Sammlung von Servern / Clients empfängt. Sie verwenden einen Smarthost (Relayhost = ...), um die E-Mail an unseren Unternehmens-MTA weiterzuleiten. Ich möchte die Anzahl der Nachrichten begrenzen, die ein einzelner Server weiterleiten kann, um ein Überfluten des Unternehmens-MTA zu verhindern. Postfix hat ein Programm namens "Amboss", das Statistiken über E-Mails verfolgen kann, die für solche Dinge verwendet werden sollen, aber nicht ausgeführt zu werden scheint. Ich habe "inotifywait -m / usr / lib / postfix / anvil" ausgeführt, während ich postfix gestartet und eine Reihe von Nachrichten von einem Remote-Server gesendet habe. Inotifywait zeigte an, dass der Amboss nie ausgeführt wurde. Hat jemand Postfix / Amboss-Ratenkontrollen zum Laufen gebracht?

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

master.cf extrahieren

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

Antworten:

7

Am Ende habe ich Policyd verwendet, das genau so etwas macht. Ich habe es so konfiguriert, dass eine einzelne IP-Adresse auf nicht mehr als 10000 Nachrichten pro Stunde und 1 GB beschränkt ist. Unten finden Sie eine Kopie des Dokuments, das ich für mich selbst geschrieben habe, falls jemand es hilfreich findet.


Postfix und Policyd konfigurieren

Nehmen Sie nach der Installation der Pakete die folgenden Änderungen an ihren Konfigurationen vor. Fügen Sie in /etc/postfix/main.cf die folgende Zeile hinzu

smtpd_client_restrictions = check_policy_service inet:127.0.0.1:10031

In /etc/postfix-policyd.conf

  • wechseln WHITELISTING=1zuWHITELISTING=0
  • wechseln GREYLISTING=1zuGREYLISTING=0
  • wechseln SENDERTHROTTLE=0zuSENDERTHROTTLE=1
  • wechseln QUOTA_EXCEEDED_TEMP_REJECT=1zuQUOTA_EXCEEDED_TEMP_REJECT=0
  • wechseln SENDER_QUOTA_REJECTION="Quota Exceeded."zuSENDER_QUOTA_REJECTION="Quota Exceeded, 10,000 messages/hour max!"
  • wechseln SENDER_SIZE_REJECTION="Message size too big."zuSENDER_SIZE_REJECTION="Message size too big. 10Mb per message or 1 Gb/hour max!"
  • wechseln SENDERMSGLIMIT=512zuSENDERMSGLIMIT=10000
  • wechseln SENDERRCPTLIMIT=3600zuSENDERRCPTLIMIT=10000
  • wechseln SENDERQUOTALIMIT=250000000zuSENDERQUOTALIMIT=1000000000
  • wechseln SENDERMSGSIZE=10240000zuSENDERMSGSIZE=50000000
  • wechseln SENDER_INACTIVE_EXPIRE=31dzuSENDER_INACTIVE_EXPIRE=1h
TimDaMan
quelle
2

Möglicherweise interessant für Ihre Implementierung:

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

Amboss war wirklich dazu gedacht, eingehende Nachrichtenraten zu begrenzen, nicht ausgehende. Betrachten Sie es als einen groben DoS-Filter.

Vielleicht möchten Sie sich die Einstellungen ansehen, die sich auf den qmgr- Teil von postfix beziehen . Insbesondere möchten Sie möglicherweise Ihre Parallelitätslimits auf einen sehr niedrigen Wert und Ihre Wartezeiten in der Warteschlange auf einen sehr hohen Wert festlegen . Sie möchten die Zustellrate auf etwas einstellen , das eine große (r) Verzögerung aufweist , und Sie möchten auch die Anzahl der Zustellungsprozesse in master.cf verringern.

Haben Sie sich die Verwendung von qshape angesehen, um festzustellen, welche Rate für Ihren internen MTA akzeptabel ist?

Avery Payne
quelle
Mein Ziel ist es, nichts zu verlangsamen. Ich möchte nur verhindern, dass der Run-Away-Prozess den Unternehmensserver ausschaltet. Das ist der Deal, den ich mit dem Austauschteam für ihre Dienste gemacht habe. Mail muss immer noch bissig sein. Ich habe Postfix für die lokale Zustellung neu konfiguriert und den Test wiederholt. Die Nachricht ignoriert immer noch das Limit.
TimDaMan
1
Ich habe es herausgefunden!! Anvil erhält keine Feed- / Prozessdaten zu Clients, die sich in "mynetworks = ..." befinden. Ich habe sie in mynetworks = 127.0.0.0/8 geändert und das Limit wird eingehalten.
TimDaMan
0

Anvil protokolliert für Postfix, ich habe unten zu main.cf hinzugefügt und scheint für mich zu funktionieren

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