On 11/12/2015 02:41 PM, Mike Brudenell wrote:
Hi,
To expand on the previous reply, the syntax you're using for the "if"
statements is totally incorrect, as is for matching strings and so on.
To get you started with the syntax of expanding strings look at the
/String expansions/ chapter of the /Exim Specification/ for the version
of Exim that you're using. For example this chapter for the current for
version of Exim can be found at:
http://exim.org/exim-html-current/doc/html/spec_html/ch-string_expansions.html
Here you'll see that the general format of an if…then…else… statement
doesn't contain keywords like "then", "elif" or "else". Instead it
actually looks like this:
${if <condition> {<string1>}{<string2>}}
where <string1> is the string that's substituted if the <condition> is
true, and <string2> if it is false. Each of these strings can of course
contain further "${if…}" expansions should you need.
In a different section of the same chapter you'll find the proper syntax
for the "match" expansion condition. Its general form is:
match {<string1>}{<string2>}
(If you're just wanting to test for simple equality use "eq" or
"eqi" instead of "match".)
You would place this in as the <condition> in the ${if…} expression,
possibly combining several with "and" or "or" operators as needed.
These, too, are explained in a different section of the same chapter.
Cheers,
Mike Brudenell
On 11 November 2015 at 13:53, Prosto Admin <[email protected]
<mailto:[email protected]>> wrote:
Hi all!
I have two local domains (2 active directory domains (cross
truested)) in one local network.
And i have two external domain (valid MX).
for example:
local: domain1.local and domain2.local
external: domain1.external and domain2.external
Need configuration - local domains can cross writing mails to each
one, and if local user write to external world, it sender address
rewrite to external domain: "domain1.local" to "domain1.external".
If from external world some one write to my external domain, exim
need rewrite recipient address to local domain.
Exim auth user by LDAP, and all work.
For implement address rewrite, i declare for each domain separate
transport.
I need on router "dnslookup" select transport by it $domain section.
My example of router dnslookup (it not work):
-----------------------------------------------------------
dnslookup:
driver = dnslokup
domains = ! +internal_domains : ! +external_domains
transport = ${
if {$domain} match {\N\.domain1\.local$\N}
then
domain1_local_smtp
elif
{$domain} match {\N\.domain2\.local$\N}
then
domain2_local_smtp
elif
{$domain} match {\N\.domain1\.external$\N}
then
domain1_external_smtp
elif
{$domain} match {\N\.domain2\.external$\N}
then
domain2_external_smtp
elif
fail
endif
}
no_more
-----------------------------------------------------------
Transport example:
-----------------------------------------------------------
domain1_local_smtp:
headers_rewrite = *@domain1.external \
${lookup{$0}lsearch{/usr/local/etc/exim/rewrite_external_domain1.lst}{$value}fail}
return_path = \
${if match{$return_path}{\N^([^@]+)@(.*)\.domain1\.local$\N} \
{\
${lookup{$0}lsearch{/usr/local/etc/exim/rewrite_external_domain1.lst}{$value}fail}\
}\
fail}
-----------------------------------------------------------
Router example not work, but please suggest construction for it
works as i planned. Or point my to documentation that can by explain
how make rewriting for this case.
--
## List details at https://lists.exim.org/mailman/listinfo/exim-users
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/
--
Systems Administrator & Change Manager
IT Services, University of York, Heslington, York YO10 5DD, UK
Tel: +44-(0)1904-323811
Web:www.york.ac.uk/it-services <http://www.york.ac.uk/it-services>
Disclaimer:www.york.ac.uk/docs/disclaimer/email.htm
<http://www.york.ac.uk/docs/disclaimer/email.htm>
Problem solved:
While somebody in the world, send mail to user [email protected],
MTA reroute it to [email protected] by "external_to_local" router (it
rewrite recipient in DATA section) and dovecot delivery it to mailbox of
local user.
If some local user write to another local user in local corp. domain,
it not rewriting or rerouting, just used "localuser" router.
If some local user writing mail to external world, used "dnslookup"
router, it use "ext_smtp" transport.
This "ext_smtp" transport rewrite sender and return path to my
external domain by searching in "alias file".
Aliases file example:
---/usr/local/etc/exim/rewrite_external.lst---
[email protected] [email protected]
[email protected] [email protected]
---
---/usr/local/etc/exim/rewrite_local.lst---
[email protected] [email protected]
[email protected] [email protected]
--
------------ Config example -------------------------------------
begin routers
external_to_local:
driver = redirect
domains = +external_domains
allow_fail
allow_defer
data =
${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/rewrite_local.lst}}
pipe_transport = dovecot_delivery
localuser:
driver = accept
domains = +internal_domains
transport = dovecot_delivery
cannot_route_message = Unknown user
dnslookup:
driver = dnslookup
domains = ! +internal_domains : ! +external_domains
transport = ext_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_more
-----------------------------------------------------------
begin transports
ext_smtp:
driver = smtp
headers_rewrite = *@+internal_domains
${lookup{$0}lsearch{/usr/local/etc/exim/rewrite_external.lst}{$value}fail}
return_path =
${lookup{$return_path}lsearch{/usr/local/etc/exim/rewrite_external.lst}{$value}fail}
dovecot_delivery:
driver = pipe
command = /usr/local/libexec/dovecot/dovecot-lda -d
$local_part@$domain -f $sender_address
message_prefix =
message_suffix =
delivery_date_add
envelope_to_add
return_path_add
log_output
user = maildir
temp_errors = 64 : 69 : 70: 71 : 72 : 73 : 74 : 75 : 78
remote_smtp:
driver = smtp
-----------------------------------------------------------
--
## List details at https://lists.exim.org/mailman/listinfo/exim-users
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/