[postfix-users] Ausgehende Mailanzahl begrenzen
Hallo liebe Liste, :-)
ich möchte gern die ausgehende Anzahl an Mails pro Tag die über Postfix gehen dürfen begrenzen.
Dazu habe ich versucht das über Anvil in Angriff zu nehmen. Aber es klappt irgendwie nicht.
Hier der Eintrag in der main.cf:
# LOCAL SECURITY smtpd_client_event_limit_exceptions = #no client exceptions anvil_rate_time_unit = 60s anvil_status_update_time = 120s smtpd_client_message_rate_limit = 1
Das heißt doch, dass nur eine Mail aller 60s über Postfix laufen darf, oder? Wenn ich nun per Konsole im Sekundentakt hintereinander Mails verschicke...
echo Test | mail -s "Test Message" "meineemailadresse@meinprovider.de"
...sieht das im Log so aus:
Feb 1 11:16:50 openkm postfix/pickup[2602]: 659067609F: uid=0 from=<root> Feb 1 11:16:50 openkm postfix/cleanup[2609]: 659067609F: message-id=20130201101650.659067609F@openkm.mmtopen.de Feb 1 11:16:50 openkm postfix/qmgr[2604]: 659067609F: from=root@openkm.mmtopen.de, size=443, nrcpt=1 (queue active) Feb 1 11:16:50 openkm postfix/smtp[2611]: certificate verification failed for <MEIN RELAY>: untrusted issuer /C=DE/O=Deutsche Telekom AG/OU=T-TeleSe$ Feb 1 11:16:50 openkm postfix/smtp[2611]: 659067609F: to=<MEINE ZIEL MAIL>, relay=<MEIN RELAY>, delay=0.21, delays=0.03/0.03/0.1/0.05, dsn=2.0.0, status=sent (250 2.0.0 OK: queued as 58EE6185432) Feb 1 11:16:50 openkm postfix/qmgr[2604]: 659067609F: removed Feb 1 11:16:51 openkm postfix/pickup[2602]: 131497609F: uid=0 from=<root> Feb 1 11:16:51 openkm postfix/cleanup[2609]: 131497609F: message-id=20130201101651.131497609F@openkm.mmtopen.de Feb 1 11:16:51 openkm postfix/qmgr[2604]: 131497609F: from=root@openkm.mmtopen.de, size=443, nrcpt=1 (queue active) Feb 1 11:16:51 openkm postfix/smtp[2611]: certificate verification failed for <MEIN RELAY>: untrusted issuer /C=DE/O=Deutsche Telekom AG/OU=T-TeleSe$ Feb 1 11:16:51 openkm postfix/smtp[2611]: 131497609F: to=<MEINE ZIEL MAIL>, relay=<MEIN RELAY>, delay=0.14, delays=0.01/0/0.09/0.04, dsn=2.0.0, status=sent (250 2.0.0 OK: queued as EE45EEF8EB) Feb 1 11:16:51 openkm postfix/qmgr[2604]: 131497609F: removed Feb 1 11:16:51 openkm postfix/pickup[2602]: B39117609F: uid=0 from=<root> Feb 1 11:16:51 openkm postfix/cleanup[2609]: B39117609F: message-id=20130201101651.B39117609F@openkm.mmtopen.de Feb 1 11:16:51 openkm postfix/qmgr[2604]: B39117609F: from=root@openkm.mmtopen.de, size=443, nrcpt=1 (queue active) Feb 1 11:16:51 openkm postfix/smtp[2611]: certificate verification failed for <MEIN RELAY>: untrusted issuer /C=DE/O=Deutsche Telekom AG/OU=T-TeleSe$ Feb 1 11:16:51 openkm postfix/smtp[2611]: B39117609F: to=<MEINE ZIEL MAIL>, relay=<MEIN RELAY>, delay=0.14, delays=0.01/0/0.08/0.05, dsn=2.0.0, status=sent (250 2.0.0 OK: queued as 97168238E8B) Feb 1 11:16:51 openkm postfix/qmgr[2604]: B39117609F: removed Feb 1 11:16:52 openkm postfix/pickup[2602]: 3CCBF7609F: uid=0 from=<root> Feb 1 11:16:52 openkm postfix/cleanup[2609]: 3CCBF7609F: message-id=20130201101652.3CCBF7609F@openkm.mmtopen.de Feb 1 11:16:52 openkm postfix/qmgr[2604]: 3CCBF7609F: from=root@openkm.mmtopen.de, size=443, nrcpt=1 (queue active) Feb 1 11:16:52 openkm postfix/smtp[2611]: certificate verification failed for <MEIN RELAY>: untrusted issuer /C=DE/O=Deutsche Telekom AG/OU=T-TeleSe$ Feb 1 11:16:52 openkm postfix/smtp[2611]: 3CCBF7609F: to=<MEINE ZIEL MAIL>, relay=<MEIN RELAY>, delay=0.15, delays=0.01/0/0.09/0.05, dsn=2.0.0, status=sent (250 2.0.0 OK: queued as 2228EA3B47) Feb 1 11:16:52 openkm postfix/qmgr[2604]: 3CCBF7609F: removed
Ich hatte mir halt irgendwas in derart "rejected because of limit" oder sowas erhofft.
Hat jemand eine Idee?
Danke! Grüße.
On Fri, Feb 01, 2013 at 11:43:10AM +0100, Ronny wrote:
Hallo liebe Liste, :-)
ich möchte gern die ausgehende Anzahl an Mails pro Tag die über Postfix gehen dürfen begrenzen.
Das überlässt Postfix externen Policy Servern wie postfwd (http://postfwd.org/) oder anderen (http://www.postfix.org/addon.html#policy).
Dennis
Hallo,
danke für die Hinweise. Ich hab jetzt postfwd integriert und es ist alles wie vorher. Es scheint so, als würde postfix die Konfiguration ignorieren. Erst mit Anvil und jetzt mit smtpd_recipient_restrictions zur Integration mit postfwd. Woran kann das denn liegen?
Hier mal meine postconf -n Ausgabe:
alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases append_dot_mydomain = no biff = no config_directory = /etc/postfix html_directory = /usr/share/doc/postfix/html inet_interfaces = loopback-only local_header_rewrite_clients = permit_inet_interfaces permit_mynetworks mailbox_command = procmail -a "$EXTENSION" mailbox_size_limit = 0 mydestination = mail.zih.tu-dresden.de, openkm.mmtopen.de, localhost.mmtopen.de, localhost myhostname = openkm.mmtopen.de mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 myorigin = $myhostname readme_directory = /usr/share/doc/postfix recipient_delimiter = + relayhost = [mail.zih.tu-dresden.de]:587 sender_canonical_maps = hash:/etc/postfix/canonical smtp_sasl_auth_enable = yes smtp_sasl_mechanism_filter = login smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth smtp_sasl_security_options = noanonymous smtp_tls_security_level = encrypt smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtp_use_tls = yes smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, check_policy_service inet:127.0.0.1:10040 smtpd_tls_cert_file = /etc/postfix/certs/cacert.pem smtpd_tls_key_file = /etc/postfix/certs/cakey.pem smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtpd_use_tls = yes
Postfwd hört auch auf der 10040.
Hier die Regel:
id=RATE01 ; protocol_state==RCPT ; action=rate(client_address/1/3600/450 4.7.1 sorry, max requests per hour reached)
Jemand noch eine Idee? Vielleicht versteh ich das alles auch nur falsch. :-)
Danke schonmal! Ronny
Am 01.02.2013 13:20, schrieb Dennis Guhl:
On Fri, Feb 01, 2013 at 11:43:10AM +0100, Ronny wrote:
Hallo liebe Liste, :-)
ich möchte gern die ausgehende Anzahl an Mails pro Tag die über Postfix gehen dürfen begrenzen.
Das überlässt Postfix externen Policy Servern wie postfwd (http://postfwd.org/) oder anderen (http://www.postfix.org/addon.html#policy).
Dennis _______________________________________________ postfix-users mailing list postfix-users@de.postfix.org http://de.postfix.org/cgi-bin/mailman/listinfo/postfix-users
On Fri, Feb 01, 2013 at 03:02:07PM +0100, Ronny wrote:
Hallo,
[..]
Hier mal meine postconf -n Ausgabe:
Die Konfiguration sieht, beim kurzen überfliegen, gut aus.
[..]
id=RATE01 ; protocol_state==RCPT ; action=rate(client_address/1/3600/450 4.7.1 sorry, max requests per hour reached)
Die Regel hingegen sieht nicht eben aus als ob sie so funktionieren würde -- ich bin aber bei Weitem kein Experte für postfwd Regeln.
Bessere Hilfe wirst Du vermutlich auf der ML zu postfwd finden (http://listi.jpberlin.de/mailman/listinfo/postfwd-users).
Dennis
P.S. TOFU ist nicht schön.
* Ronny Ronny@bigfunfitness.de:
danke für die Hinweise. Ich hab jetzt postfwd integriert und es ist alles wie vorher. Es scheint so, als würde postfix die Konfiguration ignorieren. Erst mit Anvil und jetzt mit smtpd_recipient_restrictions zur Integration mit postfwd.
Wie testest Du? Mit "echo ... | mail"? Das geht via pickup(8), da sind dem _smtp_-Restrictions/Policies total egal.
Ciao Stefan
Wie testest Du? Mit "echo ... | mail"? Das geht via pickup(8), da sind dem _smtp_-Restrictions/Policies total egal.
Ja. Via echo und mail. Ich hab einige Blogs und Tutorials zum Thema Anvil gelesen und überall haben die das mit einem "bomber" Skript getestet, dass einfach in einem Loop Mails mit "mail" erzeugt. Wie kann ich es denn sonst testen? Ich meine wenn "mail" durchkommt, bringt mir das ganze nix. Damit verhinder ich ja immer noch nicht, dass evtl. bösartige Skripte das in einem Loop aufrufen und z.B. Spam erzeugen.
Danke, Ronny
On Fri, Feb 01, 2013 at 04:56:58PM +0100, Ronny wrote:
[..]
das ganze nix. Damit verhinder ich ja immer noch nicht, dass evtl. bösartige Skripte das in einem Loop aufrufen und z.B. Spam erzeugen.
Nu solltest Du mal Deine Problem genau beschreiben und uns erzählen _was_ Du erreichen willst, nicht wie Du _glaubst_ Dein Ziel zu erreichen.
Dennis
Ok.
Ganz einfach. Ich möchte Postfix einfach nur verwenden, um Mails an einen externen Mailaccount (bei uns der Server der Uni) weiterzugeben. Bzw. alle Mails die lokal von Programmen eingehen (hier speziell vom lokalen Tomcat) an einen normalen Provider weiterzuleiten und unter dem Provider Account die Mail zu verschicken. Ich möchte jedoch hier einen Sicherheitsriegel einbauen, falls jemand es schafft eine Lücke im System zu finden. Bei meinem alten Server bspw. gab es eine Lücke im jBoss die es ermöglichte ein Perl Skript auf dem Server abzulegen und dann lokal über Postfix Spam zu versenden (150.000 E-Mails in wenigen Stunden). Jetzt will ich das begrenzen. Sprich, dass egal von wem die Mails weitergeleitet werden sollen, es z.B. nur 200 Mails am Tag sein dürfen. Wenn das Limit erreicht ist, soll Postfix dicht machen und das halt irgendwie im Log vermerken. Noch schöner wär es natürlich, wenn eine definierte Mailadresse davon unterrichtet wird, dass ein Limit erreicht wurde.
Danke.
Am 01.02.2013 17:57, schrieb Dennis Guhl:
On Fri, Feb 01, 2013 at 04:56:58PM +0100, Ronny wrote:
[..]
das ganze nix. Damit verhinder ich ja immer noch nicht, dass evtl. bösartige Skripte das in einem Loop aufrufen und z.B. Spam erzeugen.
Nu solltest Du mal Deine Problem genau beschreiben und uns erzählen _was_ Du erreichen willst, nicht wie Du _glaubst_ Dein Ziel zu erreichen.
Dennis _______________________________________________ postfix-users mailing list postfix-users@de.postfix.org http://de.postfix.org/cgi-bin/mailman/listinfo/postfix-users
On Fri, Feb 01, 2013 at 06:06:16PM +0100, Ronny wrote:
Bzw. alle Mails die lokal von Programmen eingehen (hier speziell vom lokalen Tomcat) an einen normalen Provider weiterzuleiten und unter dem
Dann zwinge Deine Skriptsprachen auf dem Webserver E-Mails ausschließlich per SMTP in Deinen Postfix zu kippen. Wie das bei den einzelnen Sprachen funktioniert kann ich Dir aus dem Kopf nicht sagen (und bin grade zu faul danach zu suchen), ist aber im Allgemeinen gut dokumentiert.
Oder verwende, wie Robert vorschlug, Mini_sendmail.
Eine andere Frage ist, ob es überhaupt notwendig ist, ob es überhaupt notwendig ist, dass andere als Cron, Logparser u.ä. E-Mails von dem Server aus senden. Dann hilft Dir eventuell dies hier: http://www.postfix.org/BUILTIN_FILTER_README.html.
[..]
Dennis
P.S. TOFU ist immer noch unhöflich.
Hallo Ronny,
Am Fr, 01.02.13 um 18:06:16 Uhr schrieb Ronny Ronny@bigfunfitness.de:
Wenn das Limit erreicht ist, soll Postfix dicht machen und das halt irgendwie im Log vermerken. Noch schöner wär es natürlich, wenn eine definierte Mailadresse davon unterrichtet wird, dass ein Limit erreicht wurde.
das ist gefährlich ;)
Wenn der postfix 'dicht' macht und per 500'er die mails ablehnt kannst Du nicht bestimmen was mit den mails passiert und beim debuggen hilft es auch nicht.
Folgendes kann passieren, wenn der postfix mit nem 500'er gegen die lokale (web-) applikation reagiert
a) Der Entwickler fängt den Fehler, ein legitimer Nutzer bekommt bei der Registrierung für nen Service den Hinweis, dass es nicht geht.
b) Der Etwickler fängt den Fehler, ignoriert ihn aber, ein legitimer Nutzer bekommt gar keine Nachricht
c) Die Applikation kommt nicht damit zurecht, dass die Mail abgewiesen wird und kommt in einen undefinierten Zustand
d) Die Applikation verwirft die mail in den obigen Fällen und man kann sie nicht noch einmal erzeugen.
Und schon musst Du im Fall der Fälle nicht nur rausfinden welcher Prozess das Limit durchschlägt, was ohne die ebgewiesenen Mails evtl. schwer wird, du musst auch noch einer Horde Entwicklern beibringen, dass ihre Applikation kaputt ist, wie sie die fixen und das sie jetzt alle mails die nicht rausgingen nochmal erzeugen müssen.
Und dann evtl. noch dem Marketing erklären, dass keine neuen Kunden sich anmelden konnten, weil das Limit der Mails zu niedrig war, weil gerade die Applikation XY bei Heise/golem/... gefeatured wurde und statt 30 Anmeldungen 3000 reinkamen.
Wenn ich sowas umsetzen wollte/müsste, würde ich die Mails also weiterhin annehmen und in der queue auf hold setzen - dann reicht ein Überwachen der mailq mittels icinga - was man ja ohnehin tut™ - um mitzubekommen wenn da was durchdreht.
Ausserdem kann man sich die fraglichen Nachrichten ansehen und - je nachdem wie das implementiert ist - eventuell sogar manuell mails aus der queue wieder freigeben.
Grüße, Florian
Am 01.02.2013 17:57, schrieb Dennis Guhl:
On Fri, Feb 01, 2013 at 04:56:58PM +0100, Ronny wrote:
[..]
das ganze nix. Damit verhinder ich ja immer noch nicht, dass evtl. bösartige Skripte das in einem Loop aufrufen und z.B. Spam erzeugen.
du hast zb einen webserver bei zb dem ueber php script etc mails an lokalen postfix gehen ?
nun evtl mini-sendmail etc nutzen, das liefert schonmal per smtp ein dann kannst du schon mal zb nicht existiernde domains abschmettern dann koenntest du alle mails auf hold setzen und controlliert nach ansicht freigeben, oder sie erstmal durch einen scanner jagen amavis usw
aber grundsaetzlich sind das alles Operationen die man evtl zusaetzlich nutzen kann, Probleme muessen aber primaer immer an der Quelle beseitigt werden, d.h es darf erst gar nicht soweit kommen dass ein boesartiges script bei dir existiert
Nu solltest Du mal Deine Problem genau beschreiben und uns erzählen _was_ Du erreichen willst, nicht wie Du _glaubst_ Dein Ziel zu erreichen.
Dennis _______________________________________________ postfix-users mailing list postfix-users@de.postfix.org http://de.postfix.org/cgi-bin/mailman/listinfo/postfix-users
Best Regards MfG Robert Schetterer
Hallo Leute,
da ich nicht richtig voran komme, wollt ich um Hilfe bitten. :-)
Hier kurz was ich erreichen möchte. Bei uns im Intranet habe ich einen Postfix laufen, der als Relay auf einen externen Mailserver dienen soll. Intern sollen alle automatisierten Dienste (Applicationserver, Wartungsskripte, virtuelle Maschinen, ...) den internen Postfix zum Mailversand verwenden. Der wiederum soll die Mails filtern und dann an einen externen Mailserver weitergeben. Der externe Mailserver ist bereits angebunden und wird über eine SSL/TLS Verbindung angesprochen inkl. Authentifizierung. Das klappt. Intern will ich nun, dass Postfix nur von bestimmten IPs (die der freigeschalteten Server/Dienste) Mails entgegen nimmt und alle anderen Rejected. Die Mails sollen dann entsprechend mit Anvil oder Postfwd geprüft werden.
Wenn ich die IPs bei MYNETWORKS eintrage, greifen die Filter von Anvil nicht mehr.
Wie mach ich das am besten?
Hier kurz meine postconf -n:
alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases anvil_rate_time_unit = 600s anvil_status_update_time = 120s append_dot_mydomain = no biff = no config_directory = /etc/postfix inet_interfaces = all local_header_rewrite_clients = permit_inet_interfaces permit_mynetworks mailbox_command = procmail -a "$EXTENSION" mailbox_size_limit = 0 mydestination = mail.zih.tu-dresden.de, mmtmail.mmtopen.de, localhost.mmtopen.de, localhost myhostname = mmtmail.mmtopen.de mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 myorigin = /etc/mailname readme_directory = no recipient_delimiter = + relayhost = [meinRelayServer]:587 sender_canonical_maps = hash:/etc/postfix/canonical smtp_enforce_tls = no smtp_sasl_auth_enable = yes smtp_sasl_mechanism_filter = login smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth smtp_sasl_security_options = noanonymous smtp_tls_security_level = may smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) smtpd_client_message_rate_limit = 1
Danke! Ronny Fritzsche
Am 04.02.2013 13:00, schrieb Ronny:
Wenn ich die IPs bei MYNETWORKS eintrage, greifen die Filter von Anvil nicht mehr.
das liegt daran das mynetworks da als default drinnsteht
zb http://www.postfix.org/postconf.5.html#smtpd_client_event_limit_exceptions
den parameter also ein/besetzen und mynetworks weglassen
Best Regards MfG Robert Schetterer
Danke, das klappt so!
Am 04.02.2013 14:32, schrieb Robert Schetterer:
Am 04.02.2013 13:00, schrieb Ronny:
Wenn ich die IPs bei MYNETWORKS eintrage, greifen die Filter von Anvil nicht mehr.
das liegt daran das mynetworks da als default drinnsteht
zb http://www.postfix.org/postconf.5.html#smtpd_client_event_limit_exceptions
den parameter also ein/besetzen und mynetworks weglassen
Best Regards MfG Robert Schetterer
participants (5)
-
Dennis Guhl
-
Florian Streibelt
-
Robert Schetterer
-
Ronny
-
Stefan Förster