Filter-Kriterien kaskadieren
Hallo,
gibt es eine Möglichkeit mehrere Kriterien zum Filtern einer Nachricht zu „kaskadieren“?
Konkretes Beispiel: E-Mails an meine Adresse jb@bw-networx.net sollen einem Header-Check unterzogen werden, während für alle anderen Ziel-Adressen ein bestimmter Header-Check nicht gelten soll.
Wie lässt sich das realisieren?
Viele Grüße, Jörn Bredereck
--
****************************** B&W-NetworX GmbH & Co. KG Landstr. 67a 76547 Sinzheim Fon: 07221 996388-8 Fax: 07221 996388-1 http://www.bw-networx.net info@bw-networx.net ----------------------------- AG Mannheim HRA 521208 Pers. haf. Ges.: B&W-NetworX Verwaltungs-GmbH Sitz: 76532 Baden-Baden AG Mannheim HRB Nr.: 202122 Geschäftsführer: Jörn Bredereck Dipl. Ing. Holger Wunsch ******************************
Moin,
On 2016-10-07 08:41:33, Jörn Bredereck wrote:
gibt es eine Möglichkeit mehrere Kriterien zum Filtern einer Nachricht zu ???kaskadieren????
Konkretes Beispiel: E-Mails an meine Adresse jb@bw-networx.net sollen einem Header-Check unterzogen werden, während für alle anderen Ziel-Adressen ein bestimmter Header-Check nicht gelten soll.
Wie lässt sich das realisieren?
meines Wissens lässt sich das nur über einen Milter realisieren, da Postfix das von Haus aus nicht kann, und ein einfacher Policy-Server keine Header-Informationen bekommt. Einen Milter zu bauen hört sich aber komplizierter an, als es ist. Ich habe mal für einen Forenbeitrag ein kleines Milter-Skript[1] unter Verwendung der entsprechenden Python-Klasse[2] gebaut, welches den Envelop-Sender mit dem DKIM-Header vergleicht.
[1] https://github.com/misterunknown/simplemilter [2] https://pythonhosted.org/pymilter/index.html
Hallo Marco,
danke für deine Antwort und dein Python-Script.
Das hört sich in der Tat recht aufwändig an. Wäre es da nicht einfacher eine zusätzliche Postfix-Instanz unter einer anderen Subdomain und abweichenden Header-Checks zu konfigurieren, und E-Mails für die entsprechende Ziel-Adresse dort hin zu routen?
Ist auch nicht gerade „trivial“, und ich hatte gehofft, dass es einfacher ginge.
Welchen Ansatz haltet ihr für sinnvoller?
Würde ein 3rd-Party-Tool wie Amavis mein Problem evtl. lösen? Was verwendet man da heutzutage? Mein letztes Amavis habe ich vor 8 Jahren aufgesetzt. Is das immer noch das Filtering-Framework der Wahl oder gibts da inzwischen was besseres?
Viele Grüße, Jörn Bredereck
--
****************************** B&W-NetworX GmbH & Co. KG Landstr. 67a 76547 Sinzheim Fon: 07221 996388-8 Fax: 07221 996388-1 http://www.bw-networx.net info@bw-networx.net ----------------------------- AG Mannheim HRA 521208 Pers. haf. Ges.: B&W-NetworX Verwaltungs-GmbH Sitz: 76532 Baden-Baden AG Mannheim HRB Nr.: 202122 Geschäftsführer: Jörn Bredereck Dipl. Ing. Holger Wunsch ******************************
Von: Marco Dickert marco@misterunknown.demailto:marco@misterunknown.de Datum: 7. Oktober 2016 at 12:44:56 An: Jörn Bredereck jb@bw-networx.netmailto:jb@bw-networx.net CC: postfix-users@de.postfix.org postfix-users@de.postfix.orgmailto:postfix-users@de.postfix.org Betreff: Re: Filter-Kriterien kaskadieren
Moin,
On 2016-10-07 08:41:33, Jörn Bredereck wrote:
gibt es eine Möglichkeit mehrere Kriterien zum Filtern einer Nachricht zu ???kaskadieren????
Konkretes Beispiel: E-Mails an meine Adresse jb@bw-networx.net sollen einem Header-Check unterzogen werden, während für alle anderen Ziel-Adressen ein bestimmter Header-Check nicht gelten soll.
Wie lässt sich das realisieren?
meines Wissens lässt sich das nur über einen Milter realisieren, da Postfix das von Haus aus nicht kann, und ein einfacher Policy-Server keine Header-Informationen bekommt. Einen Milter zu bauen hört sich aber komplizierter an, als es ist. Ich habe mal für einen Forenbeitrag ein kleines Milter-Skript[1] unter Verwendung der entsprechenden Python-Klasse[2] gebaut, welches den Envelop-Sender mit dem DKIM-Header vergleicht.
[1] https://github.com/misterunknown/simplemilter [2] https://pythonhosted.org/pymilter/index.html
-- Marco Dickert marco@misterunknown.de https://misterunknown.de
Hallo Jörn,
On 2016-10-07 10:59:27, Jörn Bredereck wrote:
Das hört sich in der Tat recht aufwändig an. Wäre es da nicht einfacher eine zusätzliche Postfix-Instanz unter einer anderen Subdomain und abweichenden Header-Checks zu konfigurieren, und E-Mails für die entsprechende Ziel-Adresse dort hin zu routen?
ob es einfacher einzurichten ist, weiß ich nicht. Aber effizienter ist es sicherlich nicht.
Welchen Ansatz haltet ihr für sinnvoller?
Eventuell ist auch Jörgs Ansatz etwas für dich.
Hallo Jörn, hallo zusammen,
Am Freitag, 7. Oktober 2016, 10:59:27 CEST schrieb Jörn Bredereck:
Würde ein 3rd-Party-Tool wie Amavis mein Problem evtl. lösen? Was verwendet man da heutzutage? Mein letztes Amavis habe ich vor 8 Jahren aufgesetzt. Is das immer noch das Filtering-Framework der Wahl oder gibts da inzwischen was besseres?
Ich habe jedenfalls immer noch Amavis im Einsatz, und bisher ist mir auch noch nix besseres über den Weg gelaufen ;-)
Neben den bereits genannten Optionen bietet sich noch der Weg über Amavis (bzw. genaugenommen über SpamAssassin, das ja von Amavis eingebunden wird) an.
Ich habe in meiner /etc/mail/spamassassin/local.cf seit Jahren einen Eintrag, um von Sourceforge an mich relayten Spam zu blocken:
header CB_TO_CBOLTZ_SOURCEFORGE To =~ /MEIN_SF_NAME.users.sourceforge.net/i describe CB_TO_CBOLTZ_SOURCEFORGE Sent to MEIN_SF_NAME@users.sourceforge.net score CB_TO_CBOLTZ_SOURCEFORGE 0.001
# X-Spam-Score und einige andere X-Spam-Header werden von Amavis grundsaetzlich ignoriert. # daher auf X-VA-Spam-Flag filtern ;-) header CB_COMES_WITH_VA_SPAM_FLAG X-VA-Spam-Flag =~ /YES/i describe CB_COMES_WITH_VA_SPAM_FLAG Contains X-VA-Spam-Flag: YES header score CB_COMES_WITH_VA_SPAM_FLAG 1
meta CB_SPAM_RELAYED_BY_SOURCEFORGE (CB_TO_CBOLTZ_SOURCEFORGE && CB_COMES_WITH_VA_SPAM_FLAG) describe CB_SPAM_RELAYED_BY_SOURCEFORGE Spam sent to MEIN_SF_NAME@users.sourceforge.net score CB_SPAM_RELAYED_BY_SOURCEFORGE 9
Das war dann im Vergleich zu erfolglosen Diskussionen mit dem SF-Support die effektivere (und sofort funktionierende) Lösung.
Ach ja, da Spammer gern meine SF-Adresse als Absender benutzt haben, gibt es auch noch:
# Backscatter von abgewiesenem Sourceforge-Spam body CB_BODY_COMES_WITH_SPAMFLAG /X-VA-Spam-Flag:[ ]*YES/i describe CB_BODY_COMES_WITH_SPAMFLAG Contains X-VA-Spam-Flag: YES in body (bounce?) score CB_BODY_COMES_WITH_SPAMFLAG 0.001
body CB_BODY_COMES_WITH_SPAMSCORE /X-Spam-Score:[ ]*[0-9][0-9]/i describe CB_BODY_COMES_WITH_SPAMSCORE Contains X-Spam-Score >= 10 in body (bounce?) score CB_BODY_COMES_WITH_SPAMSCORE 0.001
# already spam-blocked by me? body CB_BODY_ALREADY_SPAMBLOCKED /host mx.cboltz.de .188.40.126.166.: 554 5.7.0 Reject, id=[0-9-]* - SPAM/i describe CB_BODY_ALREADY_SPAMBLOCKED Was already spam-blocked by mx.cboltz.de score CB_BODY_ALREADY_SPAMBLOCKED 3
meta CB_SPAM_BOUNCED_BY_SOURCEFORGE (CB_TO_CBOLTZ_SOURCEFORGE && CB_BODY_COMES_WITH_SPAMSCORE) describe CB_SPAM_BOUNCED_BY_SOURCEFORGE Spam bounced to MEIN_SF_NAME@users.sourceforge.net score CB_SPAM_BOUNCED_BY_SOURCEFORGE 10
Ob SF inzwischen den Spam immer noch taggt und weiterleitet oder ob sie tatsächlich gleich rejecten? Keine Ahnung, interessiert mich auch nicht wirklich ;-)
Jedenfalls: anhand dieser Beispiele solltest Du Dir die gewünschten Regeln zusammenbasteln können ;-)
Gruß
Christian Boltz
Hallo Christian,
danke für die Vorlage… dann werde ich mir Amavis in einer ruhigen Minute nochmal zu gemüte führen.
Mit wieviel Last muss ich auf dem Server rechnen? Da rauschen nämlich pro Stunde schon ein paar tausend Mails durch.
Viele Grüße, Jörn Bredereck
--
****************************** B&W-NetworX GmbH & Co. KG Landstr. 67a 76547 Sinzheim Fon: 07221 996388-8 Fax: 07221 996388-1 http://www.bw-networx.net info@bw-networx.net ----------------------------- AG Mannheim HRA 521208 Pers. haf. Ges.: B&W-NetworX Verwaltungs-GmbH Sitz: 76532 Baden-Baden AG Mannheim HRB Nr.: 202122 Geschäftsführer: Jörn Bredereck Dipl. Ing. Holger Wunsch ******************************
On 7 October 2016 at 15:07:59, Christian Boltz (postfix-users@cboltz.demailto:postfix-users@cboltz.de) wrote:
Hallo Jörn, hallo zusammen,
Am Freitag, 7. Oktober 2016, 10:59:27 CEST schrieb Jörn Bredereck:
Würde ein 3rd-Party-Tool wie Amavis mein Problem evtl. lösen? Was verwendet man da heutzutage? Mein letztes Amavis habe ich vor 8 Jahren aufgesetzt. Is das immer noch das Filtering-Framework der Wahl oder gibts da inzwischen was besseres?
Ich habe jedenfalls immer noch Amavis im Einsatz, und bisher ist mir auch noch nix besseres über den Weg gelaufen ;-)
Neben den bereits genannten Optionen bietet sich noch der Weg über Amavis (bzw. genaugenommen über SpamAssassin, das ja von Amavis eingebunden wird) an.
Ich habe in meiner /etc/mail/spamassassin/local.cf seit Jahren einen Eintrag, um von Sourceforge an mich relayten Spam zu blocken:
header CB_TO_CBOLTZ_SOURCEFORGE To =~ /MEIN_SF_NAME.users.sourceforge.net/i describe CB_TO_CBOLTZ_SOURCEFORGE Sent to MEIN_SF_NAME@users.sourceforge.net score CB_TO_CBOLTZ_SOURCEFORGE 0.001
# X-Spam-Score und einige andere X-Spam-Header werden von Amavis grundsaetzlich ignoriert. # daher auf X-VA-Spam-Flag filtern ;-) header CB_COMES_WITH_VA_SPAM_FLAG X-VA-Spam-Flag =~ /YES/i describe CB_COMES_WITH_VA_SPAM_FLAG Contains X-VA-Spam-Flag: YES header score CB_COMES_WITH_VA_SPAM_FLAG 1
meta CB_SPAM_RELAYED_BY_SOURCEFORGE (CB_TO_CBOLTZ_SOURCEFORGE && CB_COMES_WITH_VA_SPAM_FLAG) describe CB_SPAM_RELAYED_BY_SOURCEFORGE Spam sent to MEIN_SF_NAME@users.sourceforge.net score CB_SPAM_RELAYED_BY_SOURCEFORGE 9
Das war dann im Vergleich zu erfolglosen Diskussionen mit dem SF-Support die effektivere (und sofort funktionierende) Lösung.
Ach ja, da Spammer gern meine SF-Adresse als Absender benutzt haben, gibt es auch noch:
# Backscatter von abgewiesenem Sourceforge-Spam body CB_BODY_COMES_WITH_SPAMFLAG /X-VA-Spam-Flag:[ ]*YES/i describe CB_BODY_COMES_WITH_SPAMFLAG Contains X-VA-Spam-Flag: YES in body (bounce?) score CB_BODY_COMES_WITH_SPAMFLAG 0.001
body CB_BODY_COMES_WITH_SPAMSCORE /X-Spam-Score:[ ]*[0-9][0-9]/i describe CB_BODY_COMES_WITH_SPAMSCORE Contains X-Spam-Score >= 10 in body (bounce?) score CB_BODY_COMES_WITH_SPAMSCORE 0.001
# already spam-blocked by me? body CB_BODY_ALREADY_SPAMBLOCKED /host mx.cboltz.de .188.40.126.166.: 554 5.7.0 Reject, id=[0-9-]* - SPAM/i describe CB_BODY_ALREADY_SPAMBLOCKED Was already spam-blocked by mx.cboltz.de score CB_BODY_ALREADY_SPAMBLOCKED 3
meta CB_SPAM_BOUNCED_BY_SOURCEFORGE (CB_TO_CBOLTZ_SOURCEFORGE && CB_BODY_COMES_WITH_SPAMSCORE) describe CB_SPAM_BOUNCED_BY_SOURCEFORGE Spam bounced to MEIN_SF_NAME@users.sourceforge.net score CB_SPAM_BOUNCED_BY_SOURCEFORGE 10
Ob SF inzwischen den Spam immer noch taggt und weiterleitet oder ob sie tatsächlich gleich rejecten? Keine Ahnung, interessiert mich auch nicht wirklich ;-)
Jedenfalls: anhand dieser Beispiele solltest Du Dir die gewünschten Regeln zusammenbasteln können ;-)
Gruß
Christian Boltz -- I built version 1.7.1 in my branch.. a bit messy, as most work seems to have gone into 'replacing autofoo with cmake' (aka one broken build system for another one). [Dominique Leuenberger in opensuse-factory]
Hallo Jörn,
Du könntest eine smtpd_restriction_classes definieren, die Du anspringst, sobald Deine Adresse angeschrieben wird.
Hier z.B. ein umgekehrtes Beispiel die den Sender überprüft und die Mail als Spam ablehnt, wenn es an meine Adresse gerichtet ist. Dies läßt sich wahrscheinlich auch für Deine Zwecke und header_checks zweckentfremden:
cat /etc/postfix/access smtpd_recipient_restrictions = check_sender_access hash:/etc/postfix/access
smtpd_restriction_classes = denyspam denyspam = check_recipient_access hash:/etc/postfix/joergsblacklist
cat /etc/postfix/access penetranter_mensch@ex denyspam
cat /etc/postfix/joergsblacklist jk@foo REJECT "Recipient address rejected: Mail appeared to be SPAM or forged."
Grüße Jörg
On 7 Oct 2016, at 10:41, Jörn Bredereck wrote:
Hallo,
gibt es eine Möglichkeit mehrere Kriterien zum Filtern einer Nachricht zu „kaskadieren“?
Konkretes Beispiel: E-Mails an meine Adresse jb@bw-networx.net sollen einem Header-Check unterzogen werden, während für alle anderen Ziel-Adressen ein bestimmter Header-Check nicht gelten soll.
Wie lässt sich das realisieren?
Viele Grüße, Jörn Bredereck
--
B&W-NetworX GmbH & Co. KG Landstr. 67a 76547 Sinzheim Fon: 07221 996388-8 Fax: 07221 996388-1 http://www.bw-networx.net info@bw-networx.net
AG Mannheim HRA 521208 Pers. haf. Ges.: B&W-NetworX Verwaltungs-GmbH Sitz: 76532 Baden-Baden AG Mannheim HRB Nr.: 202122 Geschäftsführer: Jörn Bredereck Dipl. Ing. Holger Wunsch
Hallo Jörg,
ja, das wäre ein interessanter Ansatz. Allerdings handelt es sich bei deinem Beispiel um eine Access-Policy. Etwas ähnliches habe ich bereits im Einsatz und solange ich nur eine Access-Policy verwende funktioniert das auch.
Aber wie lässt sich das auf einen Header-Check übertragen?
Was müsste analog zu deinem Beispiel anstelle von
denyspam = check_recipient_access
stehen, wenn ich nicht auf eine Access-Policy sondern einen Header-Check verweisen möchte?
Konkret habe ich bereits einen globalen Header-Check eingebunden:
header_checks = regexp:/etc/postfix/header_checks_received
Dieser soll auch weiterhin für alle E-Mails gelten. Allerdings möchte ich für E-mail an meine Adresse eine abweichende Header-Check-Policy verwenden.
Viele Grüße, Jörn Bredereck
--
****************************** B&W-NetworX GmbH & Co. KG Landstr. 67a 76547 Sinzheim Fon: 07221 996388-8 Fax: 07221 996388-1 http://www.bw-networx.net info@bw-networx.net ----------------------------- AG Mannheim HRA 521208 Pers. haf. Ges.: B&W-NetworX Verwaltungs-GmbH Sitz: 76532 Baden-Baden AG Mannheim HRB Nr.: 202122 Geschäftsführer: Jörn Bredereck Dipl. Ing. Holger Wunsch ******************************
Von: Jörg Kost jk@ip-clear.demailto:jk@ip-clear.de Datum: 7. Oktober 2016 at 12:58:36 An: postfix-users@de.postfix.org postfix-users@de.postfix.orgmailto:postfix-users@de.postfix.org Betreff: Re: Filter-Kriterien kaskadieren
Hallo Jörn, Du könntest eine smtpd_restriction_classes definieren, die Du anspringst, sobald Deine Adresse angeschrieben wird. Hier z.B. ein umgekehrtes Beispiel die den Sender überprüft und die Mail als Spam ablehnt, wenn es an meine Adresse gerichtet ist. Dies läßt sich wahrscheinlich auch für Deine Zwecke und header_checks zweckentfremden: cat /etc/postfix/access smtpd_recipient_restrictions = check_sender_access hash:/etc/postfix/access smtpd_restriction_classes = denyspam denyspam = check_recipient_access hash:/etc/postfix/joergsblacklist cat /etc/postfix/access penetranter_mensch@ex denyspam cat /etc/postfix/joergsblacklist jk@foo REJECT "Recipient address rejected: Mail appeared to be SPAM or forged." Grüße Jörg On 7 Oct 2016, at 10:41, Jörn Bredereck wrote: Hallo,
gibt es eine Möglichkeit mehrere Kriterien zum Filtern einer Nachricht zu „kaskadieren“?
Konkretes Beispiel: E-Mails an meine Adresse jb@bw-networx.net sollen einem Header-Check unterzogen werden, während für alle anderen Ziel-Adressen ein bestimmter Header-Check nicht gelten soll.
Wie lässt sich das realisieren?
Viele Grüße, Jörn Bredereck
--
****************************** B&W-NetworX GmbH & Co. KG Landstr. 67a 76547 Sinzheim Fon: 07221 996388-8 Fax: 07221 996388-1 http://www.bw-networx.net info@bw-networx.net ----------------------------- AG Mannheim HRA 521208 Pers. haf. Ges.: B&W-NetworX Verwaltungs-GmbH Sitz: 76532 Baden-Baden AG Mannheim HRB Nr.: 202122 Geschäftsführer: Jörn Bredereck Dipl. Ing. Holger Wunsch ******************************
participants (4)
-
Christian Boltz
-
Jörg Kost
-
Jörn Bredereck
-
Marco Dickert