Ratelimiting

Die Ziele des Ratelimitings sind zusammengefasst:

Im ausgehenden Filtern ist ein Ratelimiting zwingend notwendig. Wir erlauben keinen unlimitierten Versand von Mails und lassen keinerlei Ausnahmen zu.

Hierzu möchten wir eine Reihe Argumente geben:

1. Man kann nicht ausschließen, dass Spam oder Phishing im eigenen Netz erzeugt wird

2. Diese Mails werden unter Umständen nicht vom Spamfilter erkannt

3. Die Anzahl versendeter Mails erreicht schnell sechsstellige Werte

4. Die Reaktion der Empfänger bzw. deren Mailserverbetreiber ist schnell und hart

5. Die Blockade ist lang andauernd

 

1. Umsetzung

Das Ratelimiting wird im DFNMailSupport mit dem postfwd realisiert. Jede Mail wird gegen vier voneinander unabhängigen Raten geprüft:

  1. Absenderadresse pro Stunde
  2. Absenderadresse pro Tag
  3. einliefernder Host pro Stunde
  4. einliefernder Host pro Tag

Adressen, Hostnamen und IP-Adressen können in Form von Regular Expressions angegeben werden. Für nicht aufgeführte Adressen oder Hosts gelten anpassbare Default-Limits von 300 pro Stunde und 500 pro Tag (abgekürzt 300/h und 500/d).

2. Erstellung der Raten

Zum Erstellen der notwendigen Raten führt man am besten eine Zählung der Mails pro Absender und Host über mindestens einen Monat durch, besser länger. Die Default-Limits sollten für normale Nutzer ausreichend sein. Beispiele für Absender, die unter Umständen eigene Raten benötigen, sind:

Hierbei ist zu beachten, dass eine Mail viele Empfänger beinhalten kann. Der postfwd zählt also nicht die Anzahl der eingelieferten Mails, sondern die Anzahl Empfänger in diesen.

Da wir für Sie drei Instanzen an drei unterschiedlichen Standorten betreiben, bekommt jede Instanz ein Drittel der Gesamtrate; bei beispielsweise 500/h sind das dann 166/h pro Instanz. Normale Mailer (postfix, sendmail, exim) kommen damit zurecht und nutzen die Raten aller Instanzen aus, nicht jedoch Microsoft Exchange. Schickt dieses beispielsweise eine Mail über einen Mailverteiler mit 200 Empfängern, so kann es diese nicht auf mehrere Instanzen verteilen. Diese Mail kann also trotz einer Rate von 500/h nicht versendet werden. Im Fall von Exchange muss daher die Rate auf mindestens die dreifache Größe des Mailverteilers erhöht werden, in diesem Beispiel also 600/h.

3. Technische Details

Queueing

Wird eine Rate erreicht, so antworten unsere Mailserver mit dem SMTP-Returncode 421. Dies führt dazu, dass ihr Mailserver die Mail in seiner Queue zurückstellt und später weitere Zustellversuche unternimmt. Wird die Rate nach Ablauf der Sperrzeit wieder unterschritten, so werden die Mails auch wieder angenommen und zugestellt. Die Auslieferung der Mails wird also lediglich verzögert.

Algorithmus

  1. Von der ersten Mail merkt der postfwd sich Absender und Hostname/IP und den Zeitstempel in einem Cache, setzt einen Counter pro Absender und Hostname auf die Anzahl der Empfänger dieser Mail und schreibt vier Timeout-Zeitstempel (plus eine Stunde bzw. einen Tag).

  2. Bei jeder weiteren Mail erhöht er die Counter um die Anzahl Empfänger in dieser Mail. Wird eines der Limits überschritten, so wird abgelehnt.

  3. Alle 10 Minuten bzw. bei jeder eingehenden Mail checkt der postfwd, ob die Timeout-Zeitstempel erreicht wurden. Ist dies der Fall, so wird der zugehörige Counter aus dem Cache gelöscht. Diese bzw. weitere Mails werden dann wieder nach Punkt 1 behandelt.