Exim4 + RegExp

Postfix, QMail, Sendmail, Dovecot, Cyrus, Courier, Anti-Spam
static
Posts: 437
Joined: 2002-10-27 19:56
Location: Schweiz

Exim4 + RegExp

Post by static » 2004-03-07 02:32

Hi,
ich hab grad ein Problem mit Exim bei dem ich nicht weiterkomme. Ich habe für jede Domain auf meinem Server einen Benutzer, wobei ich die TLD einfach weglasse (domain.com -> Benutzer: domain).

In Exim habe ich nun diesen Router:

Code: Select all

virtual:
  driver = accept
  domains = dsearch;/etc/exim4/virtual
  local_parts = lsearch;/etc/exim4/virtual/$domain
  transport = virtual
Für jede Domain existiert ein File unter /etc/exim4/virtual/domain.tld in dem die erlaubten local_parts stehen. Soweit, so gut, funktioniert auch einwandfrei.

Ã?bergeben werden Mails an diese virtuellen Konten an diesen Transporter:

Code: Select all

virtual:
  driver = appendfile
  directory = /var/mail/$domain/$local_part
  user = ${lookup{$domain}lsearch{/etc/exim4/virtual-domains}}
  group = mail
  mode = 0600
  maildir_format
Und hier möchte ich gerne den Teil mit dem User ändern. Momentan habe ich in dem File virtual-domains für jede Domain die Zuordnung, welchem Unix-Benutzer diese gehört. Diese würde ich gerne Weglassen und eine Möglichkeit wäre imho irgendeine RegExp wie in etwa ^(.*)..*$ - dann würde ja in $1 der Domainname ohne TLD stehen, was gleichzeitig der User ist. Nur finde ich leider in der Exim Doku kaum etwas über RegExps, und wenn dann nur nach Mustervergleichen und nirgends etwas darüber wie ich $n benutzen kann.

Kennt da jemand eine Lösung, wie sowas aussehen könnte?

.static

dodolin
RSAC
Posts: 4009
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe

Re: Exim4 + RegExp

Post by dodolin » 2004-03-08 10:06

Nur finde ich leider in der Exim Doku kaum etwas über RegExps, und wenn dann nur nach Mustervergleichen und nirgends etwas darüber wie ich $n benutzen kann.
Kapitel 8 hast du aber schon gesehen, oder?
Du kannst ganz gewöhnliche PCRE benutzen.
Doku dazu kann man jede von Perl nehmen oder du holst dir den Exim Source und schaust dir doc/pcrepattern.txt an.

Da user= in Transports ein expanded string ist, empfehle ich besonders Kapitel 11. Ich denke, dass du mit dem expansion item sg das ganz gut hinkriegen könntest. Im Abschnitt über sg gibts auch ein Beispiel, wie man Backreferences in Form von $n benutzen kann.

Falls das nicht weiterhilft, frag nochmal bzw. schildere mal, was du schon erfolglos probiert hast.

static
Posts: 437
Joined: 2002-10-27 19:56
Location: Schweiz

Re: Exim4 + RegExp

Post by static » 2004-03-08 20:05

Hi dodolin,
thx für den Tipp mit sg... An diesem Teil hab ich bestimmt 5 mal dran vorbeigelesen :)

Mit dieser Zeile funktioniert's einwandfrei:

Code: Select all

user = ${sg{$domain}{N^(.*)..*$N}{$1}}
.static

dodolin
RSAC
Posts: 4009
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe

Re: Exim4 + RegExp

Post by dodolin » 2004-03-08 23:12

Halleluja, dass ich _das_ noch erleben darf!

static, du bist mein Held des Tages. :)

Ich hatte mir schon bei der Fragestellung gedacht "hey, da ist endlich mal einer, der sich Gedanken gemacht hat und eine "smart question" stellt - jemand, der keine abtippfertige Lösung verlangt, sondern nach einem Hinweis sucht, wie er selbst zur Lösung kommt". Und deshalb hatte ich mich bei der Antwort erstmal etwas "zurückgehalten", um dir nicht vorwegzugreifen. Super!

Das musste jetzt auch mal gesagt werden, nach den vielen verbalen Rundumschlägen, die hier ab und an nötig sind... ;)

static
Posts: 437
Joined: 2002-10-27 19:56
Location: Schweiz

Re: Exim4 + RegExp

Post by static » 2004-03-09 00:49

Hi dodolin,
dodolin wrote:static, du bist mein Held des Tages. :)
hehe :)
dodolin wrote:Ich hatte mir schon bei der Fragestellung gedacht "hey, da ist endlich mal einer, der sich Gedanken gemacht hat und eine "smart question" stellt - jemand, der keine abtippfertige Lösung verlangt, sondern nach einem Hinweis sucht, wie er selbst zur Lösung kommt"
Ich bin nun ja auch schon etwas länger hier und versuche meine Fragen so zu stellen, wie ich es mir von anderen auch gerne wünschen würde, damit ihnen am besten geholfen werden kann :twisted:

Ich wünsche noch einen schönen Abend

.static