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
> 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.
> 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}}}