Schrift
[thread]12920[/thread]

Regexp für Postfix

Leser: 1


<< |< 1 2 >| >> 11 Einträge, 2 Seiten
Gast Gast
 2008-12-18 17:05
#117349 #117349
Hallo Zusammen,

es wird ein REGEXP benutzt, wo ich die Mails prüffen muss, auf IP und Mailrelay.
Es wird nun sehr viel Mails zurückgeschickt mit falsche Rückgangadressen(zu uns, wegen einschreiben in Headers, z.B Return-Path: <info@abcd.de> aber nicht von uns). Zum Beispiel, mein Relay ist mail.abcd.de und dieser Relay hat IP 111.222.333.444 und die Headers sollen eigentlich genau so aussehen
Code: (dl )
Received: from [111.222.333.444] by mail.abcd.de; Wed, 17 Dec 2008 18:32:24 +0200

davon ist mir eine Idehe gekommen, dass wir sollen dieses Headers prüffen und falls dort eine andere IP eingeklemmt ist, so wie immer in Spam, muss dieses Brief noch beim empfangen sein Vorgang abgebrochen werden.

Damit habe eine Regexp gestellt da leuft aber sie nicht.
Code: (dl )
/^Received\: from \[\b[^111\.222\.333\.444]\b\] by mail\.abcd\.de.*$/i

Allso was nicht mit meine richtige IP 111.222.333.444 gekommen ist, muss raus. Da geht aber etwas nicht korrekt. Darum bitte um Ihre Hilfe.

Danke für Ihre Antworten.
Gruß
Alexander
Linuxer
 2008-12-18 17:35
#117350 #117350
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Man kann in einer negierten Zeichenklasse keine Strings matchen. Will sagen:

Deine Zeichenklasse [^111\.222\.333\.444] steht nicht für "nicht 111.222.333.444" sondern steht für "ein Zeichen, das nicht 1 oder '.' oder 2 oder 3 oder 4 ist". Die Wiederholung eines Zeichens bewirkt nichts weiter.

Möglicherweise hilft die Doku weiter:
perldoc perlre #Extented patterns
(Achtung, die Doku ist für Perl 5.10; mit 5.10 sind einige neue Extended patterns dazugekommen).
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
Gast Gast
 2008-12-18 17:49
#117351 #117351
aus Manual (?!pattern) - geht leider auch nicht
Code: (dl )
/^Received\: from \[(?!111\.222\.333\.444)\] by mail\.abcd\.de.*$/i
Gast Gast
 2008-12-18 17:50
#117352 #117352
Sorry, mein Perlversion
This is perl, v5.8.8 built for i386-freebsd-64int
Linuxer
 2008-12-18 17:59
#117353 #117353
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Wie wird denn der Regex im Postfix eingebettet?
Darf da noch mehr Perl Code (ausser einem Regex) verwendet werden.
Dann könnte man das evtl. so lösen:

Code: (dl )
/^Received\: from \[(\d+\.\d+\.\d+\.\d+)\] by mail\.abcd\.de.*$/i && $1 ne '111.222.333.444'
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
GwenDragon
 2008-12-18 17:59
#117354 #117354
User since
2005-01-17
14747 Artikel
Admin1
[Homepage]
user image
Wieso unbedingt denn regex?

Code: (dl )
$string = 'Received: from [111.222.333.444] by mail.abcd.de';print "is relay" if index($string,'111.222.333.444')!=-1;
Gast Gast
 2008-12-18 18:06
#117355 #117355
GwenDragon+2008-12-18 16:59:51--
Wieso unbedingt denn regex?

weil es gibts eine MAP-file, wo einfach diese nur Regexp eingefügt können, und kein PERL code. Postfix nimmt selbst die Regexp und durchsucht die Mails selbst durch.
Sonst hätte ja natürlich schon erledigt, über () wo die IP einfach ausgenommen und mit richtige vergleichen .
Gast Gast
 2008-12-18 18:13
#117356 #117356
Das müssen Posix-Konforme Regex sein.
So könnte es gehen, wenn ich mich richtig erinnere...
Code: (dl )
Received: from \[[^[.111\.222\.333\.444.]]\] by mail\.abcd\.de
Gast Gast
 2008-12-18 18:14
#117357 #117357
Eigentlich schon erledigt, aber etwas anderes als ursprunglich.

Code: (dl )
/^Received:.*(?!111\.222\.333\.444)\.*mail\.abcde\.de.*$/i


Geht nun!

Danke für Ihre Hilfe!!!
Gruß aus Schwedt
GwenDragon
 2008-12-18 18:33
#117358 #117358
User since
2005-01-17
14747 Artikel
Admin1
[Homepage]
user image
Gast+2008-12-18 17:06:03--
GwenDragon+2008-12-18 16:59:51--
Wieso unbedingt denn regex?

weil es gibts eine MAP-file, wo einfach diese nur Regexp eingefügt können, und kein PERL code.

Dachte ich mir fast schon, dass es doch nicht um Perlcode geht sondern um POSIX-Regexes.
Nun, das hättest du auch sagen können.
Und nicht im Perl-Abschnitt posten.
Denn das Unterform heißt: Anwendungen/Programme/Skripte in Perl
Na ja, kann mal in der Hitze des Regex-Gefechts passieren ;)

ModEdit GwenDragon: Ins Linux-Unterforum verschoben
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2008-12-18 17:05.