On Wed, 2007-08-08 at 11:23 +0100, Mike Brudenell wrote:
> So my first two routers now read:
> ================================================
> # This router sends all locally originating messages to a central
> smart host.
>
> send_local_origin_to_smart_host:
> driver = manualroute
> route_data = ${if eq{$sender_host_address}{} {mta.york.ac.uk} {}}
> transport = remote_smtp
>
> # This router routes all non-local addresses to a central smart host.
>
> send_to_smart_host:
> driver = manualroute
> route_list = !+local_domains mta.york.ac.uk
> transport = remote_smtp
> ================================================
> where "mta.york.ac.uk" refers to our mailhubs.
>
> Whilst this works it causes the problem that a message which can't be
> delivered isn't getting deferred and queued for re-try, but instead
> the failure notification is sent back immediately.
>
> I'm surprised by this and don't understand why it is happening.
Can you change the logic in your first router to:
send_local_origin_to_smart_host:
driver = manualroute
route_list = * mta.york.ac.uk
condition = ${if eq{$sender_host_address}{}{yes}{no}}
transport = remote_smtp
The way you have it seems to want to generate a null route_data value if
the message is non-local, which looks wrong to me (but might not be!).
The way above should only trigger the router if the message is locally
submitted.
Graeme