Maximale Anzahl zu sendender Emails pro Minute

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Maximale Anzahl zu sendender Emails pro Minute

Beitrag von scientific » 27.02.2018 04:47:14

Hi Leute!

Wir haben hier das Problem, dass eine Software automatisch Benachrichtigungs-Emails generiert, und ab und zu am Tag die maximal pro Minute zu sendenden Mails unseres Providers überschritten werden. Dann blockiert der Relayhost einfach die IP-Adresse für einige Minuten, und die Software schiebt die Emails in eine Errorqueue, wo sie liegen bleiben, bis sie automatisch gelöscht oder manuell wieder gesendet werden.

Die Kombination ist ungünstig, aber vorhanden. Und da dieses Problem durch punktuell auftretende Ereignisse generiert wird, ist die Idee aufgetaucht, einen lokalen Mailserver dazwischenzuhängen, um die Emailflut in einer lokalen Queue zwischenzulagern und immer nur soviele Emails pro Minute zu versenden, dass die Maximale Anzahl pro Minute nicht überschritten wird.

Ich dachte "Ha! Das geht sicher ganz einfach!" Und hab mich prompt getäuscht. Es gibt diese Begrenzung für Postfix und Exim offenbar nur für den Empfang per smtp, aber nicht beim Versenden wo der Mailserver als Client ggü. dem Smarthost auftritt.

Ich hab da bisher nur eine Lösung gefunden, alles Mails prinzipiell zu queuen, und mittels cronjob die Maximale Anzahl pro Minute einem Queuerunner minütlich zu füttern... Das ist aber gar nicht schön.
Oder die maximale Anzahl der zu sendenden Mails pro Connection einzustellen, und die Anzahl gleichzeitiger Connections zu einen anderen Mailserver per iptables zu begrenzen... Auch eine ziemliche Krücke...

Hat jemand dieses Problem schon eiinmal elegant lösen können?
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Maximale Anzahl zu sendender Emails pro Minute

Beitrag von rendegast » 27.02.2018 05:16:45

Code: Alles auswählen

man 5 postconf | grep -i delay
ZBsp. default_transport_rate_delay
<transport>_transport_rate_delay
default_destination_rate_delay
<transport>_destination_rate_delay
scheinen mir interessant.
Im default alle auf 0s:

Code: Alles auswählen

/usr/sbin/postconf -d | grep rate_delay
Da Du den Zeitpunkt / die Umstände des Problems ja kennst,
kannst Du gegebenenfalls obige Optionen per postconf setzen und danach wieder zurücknehmen,
zBsp. per cron-Job.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
HZB
Beiträge: 486
Registriert: 22.10.2003 11:52:15
Wohnort: Wien

Re: Maximale Anzahl zu sendender Emails pro Minute

Beitrag von HZB » 27.02.2018 09:54:46

scientific hat geschrieben: ↑ zum Beitrag ↑
27.02.2018 04:47:14
Hi Leute!

Wir haben hier das Problem, dass eine Software automatisch Benachrichtigungs-Emails generiert, und ab und zu am Tag die maximal pro Minute zu sendenden Mails unseres Providers überschritten werden. Dann blockiert der Relayhost einfach die IP-Adresse für einige Minuten, und die Software schiebt die Emails in eine Errorqueue, wo sie liegen bleiben, bis sie automatisch gelöscht oder manuell wieder gesendet werden.

Die Kombination ist ungünstig, aber vorhanden. Und da dieses Problem durch punktuell auftretende Ereignisse generiert wird, ist die Idee aufgetaucht, einen lokalen Mailserver dazwischenzuhängen, um die Emailflut in einer lokalen Queue zwischenzulagern und immer nur soviele Emails pro Minute zu versenden, dass die Maximale Anzahl pro Minute nicht überschritten wird.

Ich dachte "Ha! Das geht sicher ganz einfach!" Und hab mich prompt getäuscht. Es gibt diese Begrenzung für Postfix und Exim offenbar nur für den Empfang per smtp, aber nicht beim Versenden wo der Mailserver als Client ggü. dem Smarthost auftritt.

Ich hab da bisher nur eine Lösung gefunden, alles Mails prinzipiell zu queuen, und mittels cronjob die Maximale Anzahl pro Minute einem Queuerunner minütlich zu füttern... Das ist aber gar nicht schön.
Oder die maximale Anzahl der zu sendenden Mails pro Connection einzustellen, und die Anzahl gleichzeitiger Connections zu einen anderen Mailserver per iptables zu begrenzen... Auch eine ziemliche Krücke...

Hat jemand dieses Problem schon eiinmal elegant lösen können?
Das klingt für mich nach einem Henne Ei Problem.
Deine Mail liegen demnach nicht bei Euch am Server, sondern werden via Provider Relay an Euch ? bzw Kunden zugestellt ?

Wenn Du jetzt das rate_delay begrenzt, bleiben aber mmn nicht nur die Benachrichtigungs Mails, sondern auch alle anderen hängen. Was wohl auch nicht gewollt ist.
Und wenn die Benachrichtigungen zeitkritisch sind, dann bringen 10 Minuten alte Meldungen irgendwie auch nichts.

Eventuell ein virtueller Server im Internet der als Relayhost für die Benachrichtigungen dient ?

Benutzeravatar
TRex
Moderator
Beiträge: 8038
Registriert: 23.11.2006 12:23:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: KA

Re: Maximale Anzahl zu sendender Emails pro Minute

Beitrag von TRex » 27.02.2018 11:14:40

Oder nen radikaleren Ansatz mit header_checks, nach denen du deine Massenmails an eine seperate postfix-Instanz weiterleitest, der dann die Drosselung übernimmt.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Maximale Anzahl zu sendender Emails pro Minute

Beitrag von scientific » 27.02.2018 11:27:13

Wir nutzen einen großen Mailanbieter, der aus Spamschutzgründen das Versenden über einen Relaishost mengenmäßig für bestimmte Zeiträume begrenzt. So kann man auf einmal rund 100 Emails verschicken, dann sperrt der Relay-Host des Providers die IP-Adresse bzw. die Authentification (ich hab die genaue Fehlermeldung noch nicht sehen können, habs nur von Berichten von Kollegen) und lässt erst 10 Minuten später wieder ~100 Mails versenden.

Das Programm, welches die Emails über den Relay-Host versendet ist sehr beschränkt nur konfigurierbar und offenbar nicht für solche Sendebeschränkungen ausgelegt... In der Doku wird die Zwischenschaltung eines throttled postfix als Workaround vorgeschlagen.

Die Emails sind nicht so zeitkritisch, dass eine Verzögerung von 10 Minuten ein Problem sind. Und diese Spitzen treten nur gelegentlich (bis jetzt noch nicht vorhersagbar, da das Problem erst seit kurzem auftritt oder bemerkt wurde) auf. Wenn man diese Spitzen eben so abfangen kann, dass die Emails im lokalen Mailserver zwischengespeichert werden und portionsweise an den Mail-Relay-Host weitergegeben werden, ist das Problem wirksam umgangen.

Es geht also um die Konfiguration des lokalen Mailservers, dass dieser die Mails aus der Queue nur portionsweise im erlaubten Rahmen abarbeitet. Über diesen Mailserver laufen dann nur die Emails eines einzigen Users aus einer einzigen Anwendung. Es werden also keine anderen Beeinträchtigungen durch zu spät ausgelieferte Emails auftreten.

In der Exim4-Doku habe ich gelesen, dass dieser Emails queued, wenn der Smarthost nicht erreichbar ist oder eine Fehlermeldung zurückgibt und dann alle (auch neu eintreffenden) Emails die über diesen Smarthost gesendet werden, solange defered werden, bis ein neuerlicher Versuch auf diesem Smarthost erfolgreich ist.
Mit postfix habe ich leider noch gar keine Erfahrungen sammeln können. Aber ich gehe davon aus, dass postfix ein ähnliches Verhalten kann.

In der Doku von Exim4 habe ich gelesen, dass exim keine zentrale "Sendeverwaltung" zur Überprüfung und Einstellung einer maximalen Anzahl zu sendender Emails hat - wenn ich das richtig verstanden habe. Das heißt im Umkehrschluss, ich muss mit Exim bis zum Sendelimit und der Verweigerung des annehmenden Mailservers senden und dann eine Zeitspanne bis zum neuerlichen Versand warten.

Postfix scheint ähnlich zu sein.

Die Rate-Limit-Einstellungen beziehen sich offenbar - soweit ich das bis jetzt feststellen konnte - nur auf den Empfang. Das heißt, ich kann den Mailserver nur so konfigurieren, dass ein User in einer bestimmten Zeitspanne nur eine bestimmte Anzahl an Mails beim Mailserver abliefern kann. Aber eben nicht, wieviele Emails der Mailserver bei einem anderen übergeben kann... Oder hab ich da etwas übersehen?

lg scientific

PS: Die "Massenmails" sind lediglich von Usern erwünschte Benachrichtigungen über neue Tickets, Kommentare in Tickets usw.
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
TRex
Moderator
Beiträge: 8038
Registriert: 23.11.2006 12:23:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: KA

Re: Maximale Anzahl zu sendender Emails pro Minute

Beitrag von TRex » 27.02.2018 12:46:45

http://www.postfix.org/postconf.5.html# ... rate_delay

Das passt doch! Und der Begriff Massenmail war keine Kritik, falls das so ankam.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Maximale Anzahl zu sendender Emails pro Minute

Beitrag von scientific » 27.02.2018 17:56:51

Ja, das klingt gut.

Hab mal auf der exim-Mailingluste nachgefragt. Damit dürfte es nicht gehen...
"ratelimit on outbound is hard"
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
HZB
Beiträge: 486
Registriert: 22.10.2003 11:52:15
Wohnort: Wien

Re: Maximale Anzahl zu sendender Emails pro Minute

Beitrag von HZB » 27.02.2018 18:15:50

Code: Alles auswählen

smtp_transport_rate_delay = 6s
Wären dann alle 6 Sekunden ein Mail, oder 10 pro Minute, oder eben die von Dir genannten 100 in 10 min.
Würden dann aber sicherheitshalber noch ein Monitoring auf die Queue legen. Nicht das das zu viel wird

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Maximale Anzahl zu sendender Emails pro Minute

Beitrag von scientific » 01.03.2018 02:40:16

Es sind schon rund 100 in der Minute. Werden die überschritten, wird man 10 Minuten gesperrt...

Wir habens jetzt mal so gelöst, dass ich auf die Error-Queue der App ein Monitoring gelegt habe, welches anschlägt, wenn die Zahl der darin befindlichen Mails > 0 ist.

Und jetzt beobachten wir einmal, wie oft das überhaupt vorkommt. Wenn es einmal in der Woche oder seltener ist, kann es kein Kollege mit ein paar Klicks leeren. Kommts öfter vor, wirds wohl die Postfix-Variante werden.

Vielen Dank für eure Anregungen.

Es geht mit Exim übrigens auch. Allerdings nicht so einfach. Und auf der Mailingliste ist einiges los gewesen...

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Antworten