rspamd rate-limit mit regexp selector

Carsten Rosenberg cr at ncxs.de
Mi Dez 4 21:06:25 CET 2019


Hey,

On 04.12.19 13:49, Gerald Galster wrote:
> Hallo,
> 
> hat jemand schon mal das rate-limiting von rspamd auf Teile von Headern angewendet?
> 
> Beispiel:
> 
> Subject = "Anfrage Kunde 123 Firma xyz"
> 
> Das rate-limit soll als redis-key nur "Kunde 123" verwenden, nicht den ganzen Betreff.
> 

Ich denke dein Problem ist, dass rspamd den Key so direkt verwendet und
nicht mehr escaped. Damit hast du einen invaliden Redis Key. Was
schreibt denn das Rspamd log dazu? Welche Queries kannst du mit
redis-cli monitor beobachten?

> rates {
> 	subject_limit = {
> 
> 		# 1) limitiert nichts, egal ob "kunde \\d\\d\\d" oder etwas anderes im Betreff vorkommt
> 		# selector = "header('subject').lower.regexp('kunde \\d\\d\\d')";	
> 
> 		# 2) funktioniert wie erwartet aber liefert pauschal "kunde" als redis-key zurück
> 		  selector = "header('subject').lower.regexp('kunde \\d\\d\\d').id('kunde')";
> 
> 		# 3) Limitiert alle E-Mails, unabhängig vom Betreff
> 		# selector = "header('subject').lower:regexp('kunde \\d\\d\\d')";

Hast du dir mal anzeigen lassen was er hier matcht?

> 				
> 		bucket = [
> 			{
> 				burst = 2;
> 				rate = "1 / 1min";
> 			}
> 		]
> 	}
> }
> 
> Gibt es eine Funktion wie id() die das zurückliefert was regexp erkannt hat oder false?
> 
> Viele Grüße
> Gerald
> 

Probier doch mal:

header('subject').lower.digest('hex').regexp('kunde \\d\\d\\d')

Dann hast du keinen Whitespace mehr im Key.

Viele Grüße

Carsten


Mehr Informationen über die Mailingliste Postfixbuch-users