[Postfixbuch-users] Erste Schritte mit postfwd
Jan P. Kessler
postfix at jpkessler.info
So Mär 16 10:10:54 CET 2014
Am 11.03.2014 20:24, schrieb Stefan G. Weichinger:
> Ja, ich weiß, da gibt es eine eigene ML ;-)
Jup, genau das ist der Punkt. Ich habe als einerseits Listenteilnehmer
und andererseits Programmautor immer ein bisschen "schlechtes Gewissen",
eine fremde ML zu "missbrauchen". Da Du aber bisher keine Antwort
erhalten hast, gehe ich auf die Punkte ein und hoffe, man sieht mir das
hier nach. Du bist aber auch wirklich auf der postfwd-ML herzlich
willkommen - die wird übrigens auch Weise auf listen.jpberlin.de
gehosted, wofür ich mich an dieser Stelle nochmal bedanken möchte.
> Das mit dem GeoIP-Kram hab ich noch nicht so recht begriffen, ich wollte
> mal testweise unterscheiden zwischen Mail aus zB China und .at/.de ...
> aber das bekam ich noch nicht hin, irgendwie habe ich anscheinend immer
> den selben Counter erhöht:
>
> # GEOIP China check
> &&SK_CHINA_IP { \
> rbl=cn.countries.nerd.dk ;
> };
>
> # GEOIP AUT/BRD
> &&IP_ATDE { \
> rbl=at.countries.nerd.dk ; \
> rbl=de.countries.nerd.dk ; \
> };
>
> #id=RBL_GEO_CHINA ; &&SK_CHINA_IP ; rblcount=all ;
> action=set(HIT_CHINA=$$rblcount)
>
> #id=RBL_GEO_ATDE ; &&IP_ATDE ; rblcount=all ;
> action=set(HIT_ATDE=$$rblcount)
>
>
> Falsch, oder? ;-)
Eigentlich liest sich das gar nicht so schlecht. Interessant ist aber,
was daraus folgt - sprich: Was fängst Du im Verlauf Deines weiteren
Regelwerkes mit dem Ergebnis an. Z.B.:
id=LIKE_ATDE
HIT_ATDE > 1
action=dunno
id=HATE_CHINA
HIT_CHINA > 0
action=REJECT we do not want your email
Was genau klappt bei Dir nicht? Um Hilfe zu erhalten, schickst Du am
besten den relevanten Teil der Logs und die Ausgabe des Kommandos
postfwd --showconfig -f /pfad/zum/regelwerk -v
Um am allerbesten auf der postfwd-ML oder an die auf der Website
genannte info@ Adresse ;)
Das ganze lässt sich übrigens effizienter gestalten - nämlich mit einem
einzigen Lookup. Die Liste zz.countries.nerd.dk liefert abhängig vom
(vermeintlichen) Herkunftsland unterschiedliche Returncodes, also z.B.
# .at und .de
zz.countries.nerd.dk/^127\.0\.0\.[24]0$/86400
# .cn
zz.countries.nerd.dk/^127\.0\.0\.156$/86400
Die komplette Liste findest Du unter
http://countries.nerd.dk/isolist.txt. Der Vorteil bei der Geschichte
ist, dass postfwd das Ergebnis des Lookups von zz.countries.nerd.dk beim
ersten Mal cached.
> Damit müßte ich doch auch hinbekommen, zB für authentifizierte User von
> einem bestimmten Server ein anderes Mail-Size-Limit zu erlauben, als für
> den Rest (sofern hinten dran postfix und amavisd das auch erlauben, klar) ?
Ja, überhaupt kein Problem. Seit postfwd 1.30 sind übrigens die
hässlichen "\"-Zeichen am Zeilenende nicht mehr notwendig. Bei
Statements, die z.B. wegen besserer Lesbarkeit über eine Zeile hinaus
gehen einfach (genau wie bei Postfix) Whitespaces am Anfang der
Folgezeilen verwenden. Bitte beachte, dass postfwd zum Funktionieren von
Regeln mit "size"-Attribut im end_of_data Level eingebunden werden muss:
&&BOFHs {
jan
bob
alice
}
id=ALLOW_HEROES
sasl_username==&&BOFHs
size<=400000000
action=dunno
id=ALL_OTHER_AUTH
sasl_username=~/./
size<=200000000
action=dunno
id=REST_OF_WORLD
size<=100000000
action=dunno
id=REJECT_BY_SIZE
action=REJECT maximum message size exceeded, you had $$size bytes
Das ist nur eine von vielen möglichen Lösungen. Gerade auch mittels des
jump() Kommandos, kannst Du sehr granulare Regelblöcke aufbauen. Schau
Dir dazu am besten mal das letzte Beispiel unter
http://www.postfwd.org/ratelimits.html an.
Gruß, Jan
Mehr Informationen über die Mailingliste Postfixbuch-users