Page 1 of 1

Exim: Variablen werden nicht "geparst"

Posted: 2003-06-26 23:19
by kase
Normalerweise steht ja in der exim.conf in ${local_part} zB alles vor dem @.

Wenn ich jetzt eine neue Variable definieren will:

USERLOCAL = ${local_part}

dann wird aus unerklärlichem Grund das $local_part nicht ersetzt, sondern "Klartext" übernommen. Weiß jemand, wieso das so ist ?

Das es geht, weiß ich, Beispiele zB hier:

MYSQL_ALIASES = SELECT forward FROM aliases WHERE local_part='${local_part}' AND domain='${domain}'

http://www.isber.ucsb.edu/~randall/exim/configure.txt

Funktioniert bei ihm scheinbar ohne Probleme, bei mir will es einfach nicht. Wenn ich exakt den gleichen Befefl in die Exim Conf schreib, steht bei mir da ${local_part} und nicht der local_part.

Ã?brigens hat hier zB einer das gleiche Problem wie ich, leider gab es keine Antworten für ihn...

http://lists.beasts.org/pipermail/vmail ... 00526.html

Vielleicht weiß da ja jemand den entscheidenten Tipp.

Re: Exim: Variablen werden nicht "geparst"

Posted: 2003-06-27 01:10
by dodolin
Habe keine Ahnung, vielleicht wurde da was in Exim geändert? Changelogs ev. mal durchsuchen, aber das kann zeitraubend werden, wenn man nicht gleich die richtigen grep-Wörter hat...

Ansonsten würde ich es z.B. mal ohne die Klammern und Anführungszeichen probieren, also so:

MYSQL_ALIASES = SELECT forward FROM aliases WHERE local_part=$local_part AND domain='${domain}'

Oder mal mit doppelten Anführungszeichen:

MYSQL_ALIASES = SELECT forward FROM aliases WHERE local_part="$local_part" AND domain='${domain}'

Tut das vielleicht?

Re: Exim: Variablen werden nicht "geparst"

Posted: 2003-06-27 12:34
by kase
Nee, dann stehn einfach die Anführungszeichen noch mit in der Variable.

Sehr sehr komisch alles...

Re: Exim: Variablen werden nicht "geparst"

Posted: 2003-06-27 12:48
by captaincrunch

Re: Exim: Variablen werden nicht "geparst"

Posted: 2003-06-27 15:31
by kase
Naja, die Variablen kenne ich ja alle, aber irgendwie werden die in sender_address_relay aus irgendeinem Grund nicht geparst. Und zu dem Grund hab ich leider keine Informationen auf dieser Seite gefunden.

sender_address_relay = /etc/exim/'$local_part'

=>
2003-06-27 15:33:10 failed to open /etc/exim/'$local_part' when checking for kase@legendz.de in sender_address_relay: No such file or directory


sender_address_relay = /etc/exim/"$local_part"

=>
2003-06-27 15:33:10 failed to open /etc/exim/"$local_part" when checking for kase@legendz.de in sender_address_relay: No such file or directory

sender_address_relay = /etc/exim/$local_part

=>
2003-06-27 15:33:10 failed to open /etc/exim/$local_part when checking for kase@legendz.de in sender_address_relay: No such file or directory

sender_address_relay = /etc/exim/${quote:$localpart}

=>
2003-06-27 15:33:10 failed to open /etc/exim/${quote when checking for kase@legendz.de in sender_address_relay: No such file or directory

Bekomm den Mist einfach nicht hin. Aus irgendeinem Grund wird dort $variable nicht ersetzt, sondern Klartext übernommen, bin irgendwie am Verzweifeln.

Edit: Vor allem ist die Variable ja eine Zeile vorher in 'received_header_text = ...' verfügbar, und in sender_address_relay auf einmal nicht mehr...

Re: Exim: Variablen werden nicht "geparst"

Posted: 2003-06-27 15:49
by captaincrunch
Poste am besten mal den kompletten Codeschnipsel, dann lässt sich vielleicht mehr dazu sagen.

Btw. : u.U. wäre es ohnehin sinniger, hierfür einfach einen Lookup zu machen. Genaueres aber erst, wenn ich weiß, was du schon wieder vorhast ... ;)

Re: Exim: Variablen werden nicht "geparst"

Posted: 2003-06-27 16:00
by kase
gut ^^

Ich will ganz einfach die Absenderadresse auf $autheticated_id beschränken. In dieser Variable steht der Username vom SMTP Auth, also immer user@domain.tld, was ja = der Absenderadresse sein soll.

Natürlich wäre auch möglich: $local_part@$domain was aufs gleiche rausläuft.

Allerdings bekomme ich es einfach nicht hin, dass in

sender_address_relay = xyz Variablen geparst werden.

Hab zu Testzwecken mal die Datei /etc/exim/kase angelegt, in der kase@legendz.de steht.

Wenn ich jetzt eine E-Mail versenden will, steht in $local_part ja kase. Allerdings wird die Variable nicht ersetzt, und er findet die Datei /etc/exim/$local_part natürlich nicht. Soll ja eigentlich /etc/exim/kase sein.

Was meinst du mit weitere Code-Schnipsel ? Ist eigentlich ein ganz simples Problem, was mehr oder weniger nur aus einer Zeile besteht.

Das es funktioniert, habe ich oben in dem einen Link schon gepostet, derjenige benutzt lediglich mysql, aber die Variablen werden ja trotzdem bei ihm geparst.

Re: Exim: Variablen werden nicht "geparst"

Posted: 2003-06-27 16:08
by captaincrunch
Ich würd's einfach so lösen :

Code: Select all

sender_address_relay = ${lookup {$local_part} lsearch {/etc/exim/wer_darf_relayen}}
Nicht getestet, sollte aber gehen.

Re: Exim: Variablen werden nicht "geparst"

Posted: 2003-06-27 18:00
by kase
was steht dann in der wer_darf_relayen ?

ist die dann aufgebaut nach dem Prinzip:

$local_part:<tab>user@domain.tld


???

Re: Exim: Variablen werden nicht "geparst"

Posted: 2003-06-27 18:07
by captaincrunch
Nö, theoriehalber einfach nur der local_part ...

Re: Exim: Variablen werden nicht "geparst"

Posted: 2003-06-28 02:02
by kase
naja, ganz am Ende muss ja dann nach dem = eine ganze E-Mail-Adresse stehen.

Re: Exim: Variablen werden nicht "geparst"

Posted: 2003-06-28 02:15
by kase
geht leider alles nicht, deine Zeile wird komplett "Klartext" übernommen. Wenn ich alles so einfüge, könnte ich nur noch mit der Absenderadresse "${lookup {$local_part} lsearch {/etc/exim/wer_darf_relayen}}" Mails versenden. Es wird keine einzige Funktion oder Variable "geparsed".

Natürlich habe ich das wer_darf_relayen angepasst, aber wie gesagt, was man auch nach dem = hinschreibt, es wird Klartext übernommen.