Mailinglist Archive: opensuse-de (5277 mails)

< Previous Next >
Re: Sendmails Rewriting Regeln [was: Re: Mail- Problem]
  • From: David Haller <david@xxxxxxxxxx>
  • Date: Sun, 9 Dec 2001 19:47:10 +0100
  • Message-id: <20011209194710.B2390@xxxxxxxxxxxxxxxxxx>
On Sun, 09 Dec 2001, Florian Gross wrote:
>* David Haller <david@xxxxxxxxxx> textete am 09.12.01:
>
>[ _sehr_ viel! ]
>
>HILFE!

*snigger*

Hab ich da etwa ein "Alle Klarheiten beseitigt?" vergessen?

*sowasaberauch*

>Danke erstmal, ich werd's mir mal langsam auf der Zunge zergehen
>lassen... ;-)

*g* Wie gesagt, ich kenn mich da auch nicht aus, das war recht
'ad hoc' aus den genannten Quellen zusammengesucht und nachvollzogen.

Was IMO der Knackpunkt bei dem Verstehen der "Rulesets" von
sendmail ist, ist, wann man auf eine "Klasse" zugreift bzw.
diese definiert (z.B. Defintion durch ein
'Cw localhost domain.tld foo.domain.tld' oder 'CGdomain.tld'
Zugriff mit '$=w' oder '$=G', wann man eine "Variable" definiert
bzw. darauf zugreift 'DMdomain.tld' bzw. '$M', und wann man auf
das 'Match' eines 'Pattern' zugreift (Pattern: '$*', Match: '$1').

Die Metaelemente ('$*', '$-' usw.) der Pattern sind in dem genannten
Abschnitt 5.1 erklaert, und entsprechen z.B. '*' in Regexen...

Dann muss man nur noch das 'R' am Zeilenanfang als s/// begreifen,
und schon loest sich ein Grossteil der Verstaendnisschwierigkeiten
in Luft auf (zumindest ging's mir so ;).

Einzig die Trennung von 'pattern' (Right-Hand-Side "RHS"),
'Replacement' (Left-Hand-Side "LHS") und Kommentar ist auch mir noch
schleierhaft -- ich hab allerdings auch nicht auf Tabs vs. Leerzeichen
geachtet... Jedenfalls liest sich dann ein

R$* < @ localhost > $* $: $1 < @ $j . > $2 no domain[1]

in Perl-aehnlicher Syntax als:

s/(.*) < @ localhost > (.*) / $1 < @ $j . > $2; # no domain

wobei $j ein Zugriff auf die mit 'Dj' definierte Variable 'j' ist :)

(Zur Bedeutung von '$:' (bzw. '$@'), siehe op.txt).

Achso, ja, latuernich! "Klasse"... Das ist, soweit ich's verstehe,
einfach eine 'veroderterte' Variable.

Ein

CX foo bar baz
[..]
R$=X $: $1

in sendmail wuerde man in Perl wohl als

$X_REGEX = '(foo|bar|baz)';
[..]
s/$X_REGEX/$1/;

und ein

DMfoo.bar.de
[..]
R$* $: $M

als

$M = 'foo.bar.de';
[..]
s/(.*)/$M/;

schreiben... (AFAIK, so wie alles andere auch)

Allerdings sind (denke ich) die Pattern in sendmail _nicht_
"greedy"...

Wenn man o.g. mal geschnallt hat, dann wird auf einmal der
Grossteil der 'ach so kryptischen' sendmail.cf recht "einfach"
(zumindest prinzipiell -- Pattern/Match replacemenst ueber
diverse subs (aka "rulesets") ist komplex -- nicht aber die
eigentliche Syntax :)

Sachen wie P, O, H, und T sind ja eh schon kommentiert bzw.
IMO offensichtlich (selbst ohne in die Doku zu schauen), F und K
kann man (dito) erahnen, M ist offensichtlich die Def. eines
"Mailer"s und V ist, naja, aehm, unwichtig? ;) Einzig die Syntax
einer Mailerdefinition hab ich mir noch nicht genauer angeschaut...
Wobei sich die Bedeutung z.B. von

Mlocal, P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=10/30, R=20/40,
T=DNS/RFC822/X-Unix,
A=procmail -a $h -d $u

in grossen Teilen schon erahnen laesst... Ok, Das 'F=' _ist_ obskur...
'S=' ist wohl -- wie gesagt, ich habe _nicht_ in die Doku geschaut(!) --
die Definition der anzuwendenden Rulesets fuer den '_S_ender', 'R=' der
auf den '_R_ecipient' anzuwendenden...
'T=' wird wohl fuer den '_T_ype' stehen, bei dem dieser Mailer verwendbar
bzw. anzuwenden ist, 'A=' definiert wohl die zu uebergebenden '_A_rguments'
(mit Zugriff auf die Variablen $h (host?) und $u (user?)... 'P=' fuer
('_P_rogram' oder '_P_ath') ist offensichtlich ;)

Naja, so ergibt sich eins aus dem anderen.. ;)

HTH,
-dnh, diesmal eine _nicht_-Zufalls Sig einfuegend :)

PS: Noe, jetzt, nach einem gruendlicheren Blick auf die sendmail.cf,
sowie einen fluechtigen auf die sendmail-Doku, wuerde ich dem
unbekannten Verfasser der Sig doch glatt widersprechen :))

[1] obige Zeile ist bei mir die erste des:
'Ruleset 96 -- bottom half of ruleset 3'
das mit 'S96' begonnen wird (siehe wiederum op.txt -> 5.1).

--
When I first started working with sendmail, I was convinced that the cf file
had been created by someone bashing their head on the keyboard. After a
week, I realised this was, indeed, almost certainly the case. -- Unknown

< Previous Next >