[Postfixbuch-users] Postfix mit amavisd, "+"-Adress-Erweiterungen, Regex

Olaf Lautenschlaeger postfix_users_ol_nospam at anova.de
Mi Jun 4 17:13:14 CEST 2008


Da es um einen "Produktionsserver" geht, an dem
ich meine Aenderung nur ungern einfach ausprobieren
will, haette ich zu dem ff. Problem mal Euren fachmaen-
nischen Rat:

Amavis erhaelt u. U. Mails mit erweiterten Adressen

user+subfolder at domain.tld von Postfix eingeliefert,

die es ggf. seinerseits zu

user+subfolder+spam at domain.tld

erweitern wuerde. Bei der lokalen Zustellung solcher Mails
moechte ich aber, dass diese in INBOX.SPAM und nicht in
INBOX.subfolder.SPAM einsortiert werden. Ggf. sollten auch
mehrere vorhandene "+subfolder"-Erweiterungen ausser 
"+spam" eliminiert werden.

Bisher habe ich das mit expliziten Eintraegen in /etc/aliases
erledigt ("user+folder+spam: user+spam" fuer jeden User, der
zwecks autom. Einsortierung solche Subfolder hat), moechte
aber lieber einen Regex darauf ansetzen.

Weil nun der local-Agent (wg. Sicherheit, lt. Doc) nichts mit
PCRE am Hut hat, habe ich mir folgendes ueberlegt, und es
waere schoen, wenn mal jemand drueber schauen mag, ob
das so klappen koennte (den passenden Regex habe ich
IMHO schon zur Funktionstuechtigkeit getrieben, es geht
mir nur um die richtige Einbindung desselben in Postfix).

Der Regex soll vom Pickup-Service angewendet werden,
der die Mails von AmavisD zuruecknimmt; Frage: geht das
so in der master.cf:

...
# the amavisd pickup service:
localhost:10025
    inet n - n - - smtpd
    -o content_filter=
   ...
    -o recipient_canonical_maps=pcre:foldback_AmDtags.pcre
   ...
    -o local_header_rewrite_clients=

Oder kommt "r_c_m" wegen der letzten Zeile (leere "local_header_-
rewrite_clients"-Direktive) nicht zur Anwendung?

In "foldback_AmDtags.pcre" steht der betreffende Regex:

/^([-._%!A-Za-z0-9]+[^\+])\
   (\+.*)+\+(banned|spam|virus)@(.*)$/   $1+$3@$4

diesen habe ich (mit Edmund Weitz' Regex-Coach) schon soweit
"elaboriert", dass er tut, was ich moechte, ich werde ihn aber
gleich doch noch mal erlaeutern, nur fuer den Fall, dass ihn
jemand fraglich findet - ansonsten kann der geneigte Leser ab
hier darueberhinweggehen.

Der ganze Regex soll nur matchen, wenn mehrere "+folder"-
Erweiterungen nach dem User-Namen folgen und die letzte
davon von AmavisD stammt. Nur diese soll dann in das
Ergebnis uebernommen werden.

Die erste Klammer hatte ich urspruenglich einfach als (.*)
schreiben wollen, aber Regex-Coach wollte mir dann
partout bei einem Test-Target

user+foo+bar+spam at domain.tld

$1=user+foo
$2=+bar

und nicht, wie von mir erwartet/beabsichtigt

$1=user
$2=+foo+bar
$3=spam

parsen. Daher matcht jetzt der obige, etwas kryptischere
Ausdruck auf den User-Part bis zum ersten Auftreten von "+".

Die zweite Klammer matcht auf "+foo+bar" (wird im Er-
gebnis weggelassen), die dritte auf "+spam" und die vierte
auf die Domain.

PS: In der Online-Doc scheint mir auf der Seite

/postconf.5.html#local_header_rewrite_clients

hinter "check_address_map" ein Fehler zu sein - jedenfalls
ist mir der Text dort nicht ganz schluessig (Firefox zeigt
dort zweimal hintereinander einen Link zu "type:table",
ist vielleicht der zweite einer zuviel oder fehlt der Text
hinter "check_address_map type:table"?).

Olaf Lautenschlaeger
-- 
ANOVA Multimedia Studios GmbH

fon: (+49) (0) 381 / 40 59 - 550
fax: (+49) (0) 381 / 40 59 - 551
web: www.anova.de
corporate e-mail: info at anova.de
_______________________________________

ANOVA Multimedia Studios GmbH

Geschaeftsfuehrer:
Prof. Dr. Hansgeorg Meissner,
Michael Kaeding,
Dr. Volker Gries

Firmensitz:
Joachim-Jungius-Strasse 10,
D-18059 Rostock / Germany

Registergericht:
Amtsgericht Rostock

Handelsregisternummer:
HRB 2788

UST-IdNummer:
DE 811577650

(footer size due to legal demands applying under german law)




Mehr Informationen über die Mailingliste Postfixbuch-users