Mir fällt auf, dass alle anderen Antworten auf diese alte Frage nur Links sind. Deshalb werde ich in wenigen Worten beschreiben, wie ich meine Lieblingslösung für diesen Job implementieren kann.
Der Link , dass @ 84104 hat vorgeschlagen, wenn auch sehr nützlich, kann nicht richtig Rate pro Sender zu implementieren. smtpd_client
Grenzwerte dienen nicht der Verkehrssteuerung, sondern der Unterstützung der Client-Software: "Maßnahmen gegen Clients, die zu viele Verbindungen herstellen". Man kann zwar Empfehlungen finden wie diese ein , dass es sicherlich helfen kann. Als @E. Yazici hat vorgeschlagen, ein Addon für Postfix zu installieren . Persönlich finde ich die von @Janne Pikkarainen empfohlene Polizeiarbeit ziemlich umständlich, obwohl sie als Standard gilt.
Mein Lieblings-Addon ist postfwd, weil es leicht und einfach ist. Es ist auch erwähnenswert, dass dies mit Plesk oder ähnlichem sehr einfach funktioniert, ohne die komplizierten Konfigurationsdateien von Plesk zu beeinträchtigen. Das E-Mail-Ratenlimit in Plesk wurde nur in Version 12 implementiert, die Richtlinienfunktionen sind jedoch begrenzt.
Laden Sie zuerst das neueste Addon von der obigen Site herunter. Ich glaube, dass es für CentOS im Gegensatz zu Ubuntu und Debian keine U / min gibt. Es wird jedoch empfohlen, die neueste Version zu verwenden. Genauer gesagt, Version 1.32 (die zB in Ubuntu 14.04LTS-Repos vorhanden ist) hat einen üblen Fehler , der die ordnungsgemäße Funktion verhindert. Mit Version 1.35 wird dies behoben.
Stellen Sie sicher, dass diese PERL-Module vorhanden sind. Wenn Sie Debian oder Ubuntu verwenden , können Sie von Repos installieren, so dass alle Abhängigkeiten automatisch aussortiert und durch /usr/sbin/postfwd
die neueste Version ersetzt werden.
Dann erstelle den Regelsatz. Erstellen Sie eine Datei wie /etc/postfwd.cf
oder /etc/postfix/postfwd.cf
und fügen Sie Folgendes hinzu:
id=R001; sender=~/.*/; action=rate(sender/100/86400/REJECT only 100 messages per day for $$sender)
id=R002; sender=~/.*/; action=rate(sender/50/3600/REJECT only 50 messages per hour for $$sender)
Der obige Regelsatz enthält offensichtlich zwei Regeln, die für alle Absender ausgewertet werden. Die Syntax der rate
Aktion lautet:
rate (<item>/<max>/<time in sec>/<action>)
Weitere Tarifbeispiele finden Sie hier . Hinweise zur Syntax finden Sie in der Dokumentation . Eine ähnliche Diskussion finden Sie hier . Wenn SASL implementiert ist (zB Dovecot) können Sie sicher ersetzen sender
mit sasl_username
. Sie können die Gültigkeit des Regelsatzes mit der -C
Option testen :
postfwd -f /etc/postfwd.cf -C
Anschließend können Sie optional einen dedizierten Benutzer und eine dedizierte Gruppe erstellen, postfwd
unter der postfwd ausgeführt und gestartet wird:
postfwd --daemon -f /etc/postfwd.cf -u postfwd -g postfwd
Wenn es von apt (Debian, Ubuntu usw.) installiert wurde, sollte es auch eine Konfigurationsdatei unter geben, unter der /etc/default/postfwd
Sie den Dienst ordnungsgemäß starten können, z sudo service postfwd start
.
Sehen Sie sich dann das Protokoll an, um sicherzustellen, dass postfwd abhört. Postfwd verwendet dasselbe Protokoll wie postfix (zB /var/log/mail
oder /usr/local/psa/var/log/maillog
etc) und eine Zeile, die vorhanden postfwd 1.35 ready for input
sein sollte.
Dann lassen Sie postfix wissen, dass postfwd verwendet werden soll. Bearbeiten Sie die postfix conf-Datei (normalerweise /etc/postfix/main.cf
) und in der Zeile:
smtpd_recipient_restrictions = permit_mynetworks,...
hinzufügen check_policy_service inet:127.0.0.1:10040
. Beachten Sie bitte, dass die Reihenfolge, in der Sie dies angeben, von smtpd_recipient_restrictions
großer Bedeutung ist und Sie möglicherweise viel Zeit damit verbringen, zu diagnostizieren, was falsch sein könnte. Wie in dieser Frage erläutert , wird Postfix nicht mit der nächsten Prüfung fortgesetzt, wenn eine Prüfung OK oder REJECT zurückgibt. Sie sollten diese also wahrscheinlich hoch setzen.
Um zu überprüfen, ob dies funktioniert, können Sie entweder eine sehr kleine Grenze wie 1 angeben oder sogar eine Regel als hinzufügen id=DEFAULT; action=dunno
. Jeder Regelschlag wird trotzdem protokolliert. Bitte beachten Sie auch, dass das Preislimit pro Absender nicht zwischen mehreren E-Mails mit einem einzelnen Empfänger oder einer einzelnen E-Mail mit mehreren Empfängern unterscheidet.
Dann senden Sie eine E-Mail von einem Konto (auf diesem Server) und sehen Sie sich das Protokoll an:
grep "RULES" /var/log/mail
Andere Links: Schnellstart nach der Weiterleitung .
smtpd_recipient_restrictions
Eintrag, in dem ein Leerzeichen steht, musste ichpostfwd_ratelimit = check_policy_service inet:127.0.0.1:10040
in /etc/postfix/main.cf definieren und dann in /etc/postfix/master.cf alssmtpd_recipient_restrictions=...,$postfwd_ratelimit,...
sudo postfwd -f /etc/postfix/postfwd.cf --pidfile=/var/run/postfwd.pid --reload
.+
(mindestens 1) anstatt.*
(mindestens 0) zu verwenden, damit Regeln nicht mit fehlenden Feldern übereinstimmen.Was Sie brauchen, ist ein Richtlinien-Addon für Postfix. Es gibt ein Dutzend Richtlinien-Addons für Postfix, von denen einige über eine Funktion zur Ratenbegrenzung verfügen. Eine Liste der Postfix-Richtlinien-Addons finden Sie hier .
quelle
Verwendungszweck: http://www.postfix.org/TUNING_README.html#conn_limit
quelle
Überprüfen Sie diesen Policy Daemon, der von MySQL aus konfigurierbar ist: http://www.simonecaruso.com/limit-sender-rate-in-postfix/
quelle