Toon posts:

Regexp + postfix + header_checks - gebroken headers filteren

Pagina: 1
Acties:

Verwijderd

Topicstarter
Al sinds een tijdje ontvang ik mail met kapotte headers. Ik heb ondertussen besloten alle email te gaan weigeren die geen goede header heeft. Het gaat altijd om het teken [ wat verkeerd gaat, deze wordt niet afgesloten met een bijbehorende ].

Dus:
Message-ID: <20040705090937.AAF1210B3234@localhost>
is wel toegestaan, maar:
Message-ID: <20040705090937.AAF1210B[3234@localhost>
wordt knetterhard geweigerd. De [ wordt niet gematcht met een ], dus gaan we er maar voor het gemak van uit dat de header kapot is.

Wat ik dus wil is een regexp die op een regel met een [ ook automatisch een ] verwacht. Meerdere matches op 1 regel hoeft niet, dat is (nog) niet fout gegaan.

Nu zit ik alleen met de regexp voor de header_checks waar ik niet uit kom. De [ en ] zijn control characters, en dus niet wat moeilijker. Ik heb o.a. al geprobeerd:
/\\[[^:]:]*$/ REJECT Kapotte headers
/\\[[^\]]*$/ REJECT Kapotte headers
/\\[[^\\]]*$/ REJECT Kapotte headers
/\\[[^\\\\]]*$/ REJECT Kapotte headers
/\\[[^\\\\]]*$/ REJECT Kapotte headers
/\\[[^\(]\)]*$/ REJECT Kapotte headers

De ene werkt helemaal niet, de andere blockt ook goede headers. Het moet toch zoiets zijn? Zijn er nog regexp guru's aanwezig toevallig?

  • 0siris
  • Registratie: Augustus 2000
  • Laatst online: 07-02 23:33
ik ben een absolute idioot met regexpen (zie mijn vorige topic(s) hierover in NOS), maar even wat anders: met Postfix als MTA zijn dit soort dingen echt een eitje, wat voor MTA gebruik je dat je zelf met regexp aan de gang moet?

ach...in een volgend leven lach je er om!


Verwijderd

Topicstarter
0siris schreef op 06 juli 2004 @ 12:04:
ik ben een absolute idioot met regexpen (zie mijn vorige topic(s) hierover in NOS), maar even wat anders: met Postfix als MTA zijn dit soort dingen echt een eitje, wat voor MTA gebruik je dat je zelf met regexp aan de gang moet?
Postfix

De mail is volgens de RFC's acceptabel (dus geen reden voor postfix om te weigeren), alleen volgens de Outlook Express clients van de gebruikers niet. Dus gaan we met de header_checks aan de slag.

  • 0siris
  • Registratie: Augustus 2000
  • Laatst online: 07-02 23:33
Verwijderd schreef op 06 juli 2004 @ 12:09:
... Dus gaan we met de header_checks aan de slag.
Ik heb veel aan deze pagina gehad.

ach...in een volgend leven lach je er om!


Verwijderd

Topicstarter
0siris schreef op 06 juli 2004 @ 12:40:
[...]

Ik heb veel aan deze pagina gehad.
'k heb ondertussen alle voorbeeldjes bekeken, maar er zit gewoon niet tussen wat ik nodig heb. En op zich snap ik regexps ook nog wel, maar het lukt gewoon niet.

Het stomme, de regexp die ik zou verwachten, werkt met php wel, maar niet met posfix' header_checks.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
$regexp='/\\\[[^\\]]*$/';
$header1="From: Blaat <blaat@schaap>";
$header2="From: Blaat [blaat@schaap]";
$header3="From: Blaat [blaat@scheep";
$ret1=preg_match($regexp,$header1);
$ret2=preg_match($regexp,$header2);
$ret3=preg_match($regexp,$header3);

echo "[$ret1|$ret2|$ret3]";

if (($ret1+$ret2)==0 && $ret3)
    echo "<h1>HOERA</li>";

?>


eventueel kan je dan nog wat backslashes toevoegen/verwijderen hier en daar voor afwijkende escapes, maar zelfs dan geen resultaat.

[ Voor 23% gewijzigd door Verwijderd op 06-07-2004 13:24 ]


Verwijderd

Topicstarter
goed, het heeft me ongeveer 3 uur gekost, maar nu werkt het ook...

code:
1
/\\[[^]]*$/ REJECT Sorry, this mail's headers are broken, we cannot accept it.

misschien dat anderen er ook wat aan hebben.
Pagina: 1