Re: [exim] Advanced Exim Configuration with the smart_route …

Top Page
Delete this message
Reply to this message
Author: Jon Gerdes
Date:  
To: exim-users@exim.org
Subject: Re: [exim] Advanced Exim Configuration with the smart_route directive
On Thu, 2015-06-11 at 12:48 -0500, Danielle M. wrote:
>
> On 6/11/2015 10:34 AM, Jon Gerdes wrote:
> > On Thu, 2015-06-11 at 10:05 -0500, Danielle M. wrote:
> >> Hey Jon,
> >>
> >> Thank you so much for the help. I'm relatively new to advanced Exim
> >> configuration and am running into an error or two with your
> >> suggestion. Exim is returning the below error when trying to set your
> >> ACL variable in the connect area:
> >>
> >> main option "set" unknown
> >>
> >> As for the router condition, would it look something like this?
> >>
> >> condition = ${if acl_c_mail_submission_port{1}}
> >>     smart_route:
> >>     driver = manualroute
> >>     domains = !+local_domains
> >>     transport = remote_smtp
> >>     route_list = * ip_address
> >>
> >> Thank you!
> >> Dani McLeod
> >> On 6/11/2015 3:38 AM, Jon Gerdes wrote:
> >>
> >>> On Wed, 2015-06-10 at 17:03 -0500, Danielle M. wrote:
> >>>> Trying this one more time as I do not think my first send registered.


-- snip --

> 2015-06-11 12:37:41 1Z36Q9-0000fy-E3 failed to expand condition "${if
> and{{bool_lax{NULL}}{bool_lax{{if
> eq{$acl_c_mail_submission_port}{1}}}}}}" for smart_route router: missing
> } at end of condition inside "and" group
>
> I've tried all of the common sense fixes I could think of (ensuring all
> braces have a matching opposite brace, etc.) to no avail. To sum up what
> I've added:
>
> ---Under acl_check_connect---
>
> warn  condition = ${if ={587}{$interface_port}}
>        set acl_c_mail_submission_port = 1
>        domains = !+local_domains
> accept domains = !+local_domains
>
> ---Under routers---
>
> smart_route:
>      driver = manualroute
>      domains = !+local_domains
>      transport = remote_smtp
>      route_list = * ip_address_for_smart_host
>      condition = {if acl_c_mail_submission_port{1}}
>      no_more
>
> Any ideas?
>
> Thank you,
> Danielle M.
>
>


Danielle

I've just tested this:

 warn condition = ${if eq{$interface_port}{587}}
       set acl_c_mail_submission_port = 1
       domains = !+local_domains

With this:

#exim -bhc 192.168.100.11 -oMi 10.77.10.11.587

... and that works for definite!

----------- 8< ----------------

>>> processing "warn"
>>> check condition = ${if eq{$interface_port}{587}}
>>>                 = true
>>> check set acl_c_mail_submission_port = 1
>>> check domains = !+internal_domains

----------- 8< ----------------

In the above exim command, 192.168.100.11 is a pretend client address,
10.77.10.11 is and exim daemon address and the .587 means to pretend
that the connection is arriving on port 587 and not 25. Note it is a .
(dot) and not a : as you would normally expect ...

Finally, the extra c (-bhc) is probably not needed in your case but I
use callout checks here and so I always put it in.

For the if syntax see:
http://www.exim.org/exim-html-current/doc/html/spec_html/ch-string_expansions.html In this case I am using the third example:

condition = ${if >{$acl_m4}{3}}

Cheers
Jon



Blueloop Ltd

Jon Gerdes | Senior Consultant

Blueloop House
Ilchester Road
Yeovil
Somerset BA21 3AA

Tel: 2100
Web: www.blueloop.net



Registered Address : Blueloop House, Ilchester Road, YEOVIL, BA21 3AA Registered England & Wales - 3981322

CONFIDENTIAL INFORMATION
This e-mail and any files attached with it are confidential and for the sole use of the intended recipient(s). If you are not the intended recipient(s) you are prohibited from using, copying or distributing this or any information contained in it and should immediately notify the sender and delete the message from your system.

Internet communications are not secure and Blueloop Limited is not responsible for unauthorised use by third parties nor for alteration or corruption in transmission. Furthermore, while Blueloop Limited have taken reasonable precautions to minimise the risk of software viruses, it cannot accept liability for any damage which you may suffer as a result of such viruses, and we therefore recommend you carry out your own virus checks on receipt of any e-mail.