Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Option no_rewrite in Exim

49 views
Skip to first unread message

Matthias Taube

unread,
Oct 18, 2009, 12:54:25 PM10/18/09
to
Ich nutze in Exim rewriting, um lokale Absenderadressen
(us...@host.lan.taube) in die weltweit routebaren Adressen umzusetzen.
Der GMX Mailserver würde meine lokale Adressen ja auch als
Absenderadressen abweisen.

Solange eine Adresse im internen Netz bleibt, würde ich dieses Verhalten
gerne unterdrücken (z.B. bei einer Mail von us...@host3.lan.taube an
us...@host8.lan.taube).

Aber die option no_rewrite, welche im Exim Handbuch beschrieben wird,
scheint nicht zu funktionieren:

local_user:
debug_print = "R: local_user for $local_part@$domain"
driver = accept
domains = +local_domains
no_rewrite
check_local_user
local_parts = ! root
transport = LOCAL_DELIVERY
cannot_route_message = Unknown user

Führt zu Exim configuration error in line 654 of
/var/lib/exim4/config.autogenerated.tmp:
option "no_rewrite" unknown

wie kann ich dieses lösen? Alternativ dazu: Eine Rewriting Regel für
Absenderadressen nur dann aufrufen, wenn die Zieladresse ausserhalb der
local_domains liegt?

mfg
Matthias

Jakob Hirsch

unread,
Oct 28, 2009, 5:02:03 AM10/28/09
to
Matthias Taube, 2009-10-18 18:54:

> Aber die option no_rewrite, welche im Exim Handbuch beschrieben wird,
> scheint nicht zu funktionieren:

...


> local_user:
> debug_print = "R: local_user for $local_part@$domain"
> driver = accept

rewrite (und damit die negation davon) ist eine option des redirect
routers. Sie sorgt auch nur dafür, daß die von redirect erzeugte Adresse
nicht rewrite-t wird, also überhaupt nicht das, was du willst.

> wie kann ich dieses lösen? Alternativ dazu: Eine Rewriting Regel für
> Absenderadressen nur dann aufrufen, wenn die Zieladresse ausserhalb der
> local_domains liegt?

Tjo. Fragt sich nur, was du machst, wenn die Mail mehrere Zieladressen
hat. Und natürlich, wozu das ganze gut sein soll...

Du hast deine rewriting rules leider nicht mitgeschickt, aber ich nehme
an, du nutzt global rewrite, damit wird die Mail verändert, bevor sie zu
den routern gelangt, somit also für alle. Du könntest stattdessen beim
smtp router headers_rewrite und return_path nutzen, damit das nur bei
Mails gemacht wird, die nicht lokal zugestellt werden.

Matthias Taube

unread,
Oct 28, 2009, 4:21:35 PM10/28/09
to
Jakob Hirsch schrieb:

> den routern gelangt, somit also für alle. Du könntest stattdessen beim
> smtp router headers_rewrite und return_path nutzen, damit das nur bei
> Mails gemacht wird, die nicht lokal zugestellt werden.

ich habe nun im betreffenden Transport headers_rewrite gesetzt. Das
funktioniert so wie es soll:

remote_smtp_list:
debug_print = "T: remote_smtp_list for $local_part@$domain"
driver = smtp
hosts_try_auth =
${lookup{$sender_address}wildlsearch{CONFDIR/sender.smarthost}}
.ifdef REMOTE_SMTP_HEADERS_REWRITE
headers_rewrite = REMOTE_SMTP_HEADERS_REWRITE
.endif
.ifdef REMOTE_SMTP_RETURN_PATH
return_path = REMOTE_SMTP_RETURN_PATH
.endif


Die Makros sind:

REMOTE_SMTP_HEADERS_REWRITE=*@+local_domains
"${lookup{${local_part}}lsearch{/etc/email-addresses}\
{$value}fail}" frs : *@ETC_MAILNAME
"${lookup{${local_part}}lsearch{/etc/email-addresses}\
{$value}fail}" frs

REMOTE_SMTP_RETURN_PATH=${if
match_domain{$sender_address_domain}{+local_domains}{${sender_address_local_part}@DCreadhost}{${if
match_domain{$sender_address_domain}{ETC_MAILNAME}{${sender_address_local_part}@DCreadhost}fail}}}

0 new messages