On Wed, 27 Mar 2019, Mrten via Exim-users wrote:
> Hi,
>
>
> I've got a set of hosts that only have internal IPs that I want to be able to
> deliver mail to the Internet.
>
> I thought I could do that with a manualroute at the end of the routers on the
> internal-ip-only machines, to the mailservers in the group that do have
> outgoing IPs, like this:
>
> dnslookup:
> driver = manualroute
> transport = internal_smtp
> route_list = * 192.168.84.30:192.168.84.31:192.168.84.32
> no_more
The magic name for this is smarthost. Search for that in your docs.
But having multiple smarthosts is not typical.
> but today I discovered that if the .84.30 host has nothing listening on port
> 25 delivery gets deferred instead of trying .84.31 and all mail queues up.
>
>
>
> 2019-03-27 06:48:48 1h8yLV-0005Pe-PV H=192.168.84.30 [192.168.84.30]
> Connection refused
>
> 2019-03-27 06:48:48 1h8yLV-0005Pe-PV == acme@??? <acme@???>
> R=dnslookup T=internal_smtp defer (111): Connection refused
I would be tempted to have a DNS alias for your smarthost mailservers,
but I know that I don't know enough about DNS round-robin to suggest that
that was a good idea.
> I think I can work around this by using hosts_randomize, but that seems ugly
> and it seems I am missing something.
I think this is exactly what hosts_randomize is for.
But note that if the first host fails, I *think* that the message will be
deferred until the next queue run.
> Can someone shed some light on this? Should I be using multiple routers with
> an option I failed to find when reading the docs?
That might get exim to try more than one host each queue run.
However, if a smarthost is not responding, something is wrong.
You should be aiming for this not to happen.
If a smarthost does fail to respond, your aim is for something
sensible to happen eventually, not to try to maximise performance.
Thus I would be happy if the message is delivered by the next queue
run.
--
Andrew C. Aitchison Cambridge, UK
andrew@???