[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