On Wednesday, February 05, 2014 20:30:49 George wrote:
> Hi Chris, thanks again for the info.
> 
> It would be great to configure some sort of automatic smarthost failover.

Turns out I needed something similar for myself, and ended up figuring out how 
to do this.  You mentioned you were running Debian Wheezy.  Debian's Exim4 
setup already comes with a "hubbed_hosts" router which checks for a file, 
/etc/exim4/hubbed_hosts -- if it exists and the destination domain is listed 
in the file, then it uses the line listed as a manualroute -- and /several/ 
destination hosts can be listed, along with destination ports.  Such as this:

   domain.example.net: "dest-2.example.net::587 : mail-2.ref.example"

To understand this better, see 'man 5 exim4_hubbed_hosts', as well as chapter 
20.3 through 20.7 in the Exim 4.80 specification.  This same man page explains 
the format of the passwd.client file used to do SMTP AUTH with a remote 
server.

The hubbed_hosts router normally uses the remote_smtp transport which doesn't 
check for SMTP AUTH login information, but switching this to the 
remote_smtp_smarthost router then does.  ;-)


begin routers
[...]
hubbed_hosts:
  debug_print = "R: hubbed_hosts for $domain"
  driver = manualroute   
  domains = "${if exists{CONFDIR/hubbed_hosts}\
                   {partial-lsearch;CONFDIR/hubbed_hosts}\
              fail}"
  same_domain_copy_routing = yes
  route_data = ${lookup{$domain}partial-lsearch{CONFDIR/hubbed_hosts}}
  ## Chris: changed transport to remote_smtp_smarthost to use SMTP AUTH
  transport = remote_smtp_smarthost



The important difference in this case is that the remote_smtp_smarthost 
transport checks /etc/exim4/passwd.client for SMTP AUTH login information for 
particular servers.



begin transports
[...]
remote_smtp_smarthost:
  debug_print = "T: remote_smtp_smarthost for $local_part@$domain"
  driver = smtp
  hosts_try_auth = <; ${if exists{CONFDIR/passwd.client} \
        {\  
        ${lookup{$host}nwildlsearch{CONFDIR/passwd.client}{$host_address}}\
        }\
        {} \
      }
[...]



So from the hubbed_hosts entries we had this:

   domain.example.net: "dest-2.example.net::587 : mail-2.ref.example"

And now in the passwd.client file you can make entries for each of the 
smarthosts:

   ### target.mail.server.example:login:password
   dest-2.example.net:login1:password1
   mail-2.ref.example:login2:password2



So between hubbed_hosts and passwd.client you should be able to do manual 
routing of mail for particular destination domains (including "*" for all 
domains) using multiple smarthosts such that if one is down another is used 
automatically.

  -- Chris

--
Chris Knadle
[email protected]

-- 
## 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/

Reply via email to