[Postfixbuch-users] SOLVED: Welcher client_name bei RHSBLchecks?

Jan P. Kessler postfix at jpkessler.info
Mi Jul 4 09:45:06 CEST 2007


Uwe Driessen schrieb:
 > Nighthawk schrieb:
 >> Darf ich fragen, wieso Du nicht einfach policyd-weight nimmst? Macht
 >> der nicht etwas sehr ähnliches? Die Greylisting Action wird man dem
 >> Teil wohl auch noch irgendwie beibringen können...
 >
 > Das was jan macht ist selectives Greylisting
 > Heißt kommt client aus fragwürdigem Netz dann Greylisting ansonsten 
zustellen
 >
 > Policyd-weight schaut nach ob alle angaben nach einem regulären 
Server ausschauen, prüft
 > noch einige RBL's von denen jeder einen eigenen score hat(gewichtet) 
zählt alle scores
 > zusammen und hast du zu viele Punkte in Flensburg wirste für den 
verkehr nicht mehr
 > zugelassen.
 >
 > Policyd-weight und das was Jan macht 2 ganz unterschiedliche dinge 
und doch ähnlich im
 > Ergebnis (weniger Spam)

Exakt - und noch mehr. Da ich alle Werte abfragen kann, die das policy 
delegation protokoll so anbietet, sieht das echte Regelwerk so aus:

############# -snip- ###################################
# TLS only
sender=@example.com ; ccert_fingerprint=AA:BB:CC ; 
encryption_keysize=128 ; action=dunno
sender=@example.com ; action=REJECT TLS fingerprint mismatch or keysize 
< 128bits

# Sizes, only useful at end-of-data level (Extrawoeschtsche fuer Hr. 
special)
recipient=special at dom1.local ; size=30000000 ; action=REJECT mail too large
recipient=@dom1.local ; size=10000000        ; action=REJECT mail too large

# RBLs (dont be shy - through caching every lookup will be done only 1 time)
rblcount=2 ; rbl=zen.spamhaus.org,... ; action=REJECT too many RBLs
rhsblcount=2 ; rhsbl=rh1,rh2,...      ; action=REJECT too many RHSBLs
rbl=zen...,... ; rhsbl=bla...,...     ; action=REJECT RBL+RHSBL combination

# Greylisting
rbl=zen.spamhaus.org,...        ; action=Greylisting
rhsbl=bla,...                  ; action=Greylisting
client_name=^unknown$           ; action=Greylisting
client_name=(\d{1,3}[\-\.x]){3} ; action=Greylisting
client_name=[_\.\-]([axt]{0,1}dsl|ppp|cable|...)[_\.\-] ; action=Greylisting
...
############# -snip- ###################################

In Wirklichkeit ist es sogar noch etwas komplexer, da an den Relays 
verschiedene Kunden hängen, die unterschiedliche Restriktionen wollen. 
D.h. die Regeln sind i.d.R. noch mit recipient=@bla.local kombiniert.

Mir ist bewusst, dass ich einen Großteil dieser Funktionalität mit einem 
modifizierten policyd-weight, postfix' restriction classes und 
verschiedenen Instanzen hinbekommen hätte, aber damit wäre die 
Konfiguration ungleich komplexer geworden. So realisiere ich das alles 
über ein einziges Konfigfile, dass dann sogar meine weniger 
Postifx-affinen Kollegen bedienen können. Ganz abgesehen davon, dass das 
ganze Script gerade wenige KB groß ist (ich verzichte sogar auf 
Socket.pm und gehe den direkten Weg über "unpack()"). Von diesen paar KB 
dienen übrigens gut die Hälfte zum sicheren Parsen des Konfigfiles, so 
dass der eigentliche Prüfungsablauf wirklich klein, schnell und 
effizient ist und die Systeme kaum beeinträchtigt.

Ich halte policyd-weight für anständigen Code, keine Frage, aber für 
meine Wünsche war er einfach nicht das geeignete Werkzeug. Mit den 
ganzen verschiedenen Restriktionen in unterschiedlichen Files ist die 
hiesige Postfix Konfiguration doch ziemlich unübersichtlich geworden. 
Nun haben wir fast alles in einem einzigen Konfigfile - ganz ähnlich 
einem Firewall-Regelwerk. Die von uns betriebenen Relays sind ja auch 
eigentlich so etwas wie ein Application-Level-Gateway.

Gruß, Jan




Mehr Informationen über die Mailingliste Postfixbuch-users