[Postfixbuch-users] "rate limiting" für ausgehende Mails

Ralf Hildebrandt Ralf.Hildebrandt at charite.de
Do Okt 14 09:34:26 CEST 2010


* rog7993 at web.de <rog7993 at web.de>:
> Hallo,
> 
> unser Mailgateway sendet ausgehende Mails an einen externen Relayhost,
> der folgenden Einschränkungen unterliegt:
> 
> - maximal 60 Verbindungen pro 3 Minuten
> - pro Verbindung maximal 30 versendete Mails pro 3 Minuten
> 
> Optimalerweise würde man also 60 x 30 = 1800 Mails in 3 Minuten
> ausliefern können. Hinter dem MX-Record des Relayhosts verbergen sich
> insgesamt 6 Server, so dass das Ganze nochmal mit 6 zu multiplizieren
> ist.

Du kannst nun statt nur mit relayhost auch mit smtp_fallback_relay
arbeiten. Alles was der relayhost nicht abnimmt wird nochmal via
smtp_fallback_relay probiert.

> Allerdings erreiche ich diese Werte nicht annähernd, was daran liegt,
> dass bei größere Mailmengen alle Relayhosts nach kurzer Zeit weitere
> Verbindungen ablehnen und dann die Mails in der deferred-Queue landen.

Ja

> Und darin liegen sie zunächst länger, als sie müssten.

Die Frage ist, wie schnell darf man wieder senden sobald man das Limit
erreicht hat?

>   smtp_destination_concurrency_limit = 1
>   smtp_destination_rate_delay = 1

1 Mailverbindung, 1 Mails/s = 60 Mails/min = 180 Mails/min

> gemacht. Der erste (ohne den zweiten) verbessert die Situation zwar
> etwas, aber nicht deutlich. Wenn man beide definiert, sieht es
> insgesamt besser aus, da man vermeidet, dass gleichzeitig alle
> Relayhosts Verbindungen ablehnen und damit keine Mails in der
> deferred-Queue landen. Insgesamt ist der Durchsatz aber immer noch
> viel schlechter, als das Optimum. Mit diesen Parametern scheint
> Postfix pro Verbindung auch nur eine einzige Mail auszuliefern, statt
> bis zu 30, die möglich wären. smtp_connection_cache_on_demand steht
> auf dem Defaultwert "yes". Damit sollte Postfix das automatisch
> steuern. Oder wäre es besser, smtp_connection_cache_destinations zu
> definieren?
> 
> Ich könnte mir auch vorstellen, die Default-Parameter
> 
>   minimal_backoff_time = 300s
>   maximal_backoff_time = 4000s
>   queue_run_delay = 300 s
> 
> auf kleinere Werte zu setzen, z.B.
> 
>   minimal_backoff_time = 180s
>   maximal_backoff_time = 1000s
>   queue_run_delay = 90 s

ja
Wäre ne idee

> Damit hat man dann zwar immer noch ein burstartiges
> Auslieferverhalten, aber immerhin bleiben die Mails weniger lang in
> der deferred-Queue hängen. So richtig gefällt mir das aber nicht,
> wobei es in diesem Fall wohl sogar vertretbar wäre, nachdem alle
> Mails an einen einzigen (bzw. sechs) Relayhosts ausgeliefert werden.
> 
> Gibt es eine sinnvollere Variante?

Du könntest SELBER zwei DNS Records  definieren, welche jeweils auf 3 Adressen
des Relayhosts zeigen. Dann sagst du:

relayhost = [eintrag-a]
smtp_fallback_relay = [eintrag-b]
-- 
Ralf Hildebrandt
  Geschäftsbereich IT | Abteilung Netzwerk
  Charité - Universitätsmedizin Berlin
  Campus Benjamin Franklin
  Hindenburgdamm 30 | D-12203 Berlin
  Tel. +49 30 450 570 155 | Fax: +49 30 450 570 962
  ralf.hildebrandt at charite.de | http://www.charite.de
	    



Mehr Informationen über die Mailingliste Postfixbuch-users