Hello!
Consider a scenario where Exim is relaying mail for _one_ domain to
multiple internal systems with queries to LDAP directories
deciding where mail for each local part goes to.
(Suppose that it's not possible to regularly create a local
version of this mapping, as debatable this restriction may be.)
If one implements this the straight forward way with multiple routers
like
dest_a:
driver = manualroute
domains = example.com
condition = ${lookup ldapm{..URL..}{yes}{no}}
route_list = * host_a bydns
transport = internal_smtp
dest_b:
...
the following problem is not trivial to solve it seems:
As "9.5 Temporary errors in lookups" of the spec states
Lookup functions can return temporary error codes if the lookup cannot be
completed. For example, an SQL or LDAP database might be unavailable. [...]
When a lookup cannot be completed in a router or transport, delivery of the
message (to the relevant address) is deferred, as for any other temporary
error. In other circumstances Exim may assume the lookup has failed, or may
give up altogether. -
if _one_ destination system is not available, messages to _every_ user in this
domain will be deferred (even those at other destinations).
For two destinations it's a workaround to have two pair of routers with
order swapped, and
condition = ${if and {{first_delivery}{${lookup ...}}}}
in the first pair (!first_delivery in the second), additionally tuning retry
rules.
Any idea for an Exim internal solution (no queryprogram router, run or perl)
for more than two destinations? (Using $message_age to extend the concept is
not reliable enough, I think.)
Thanks,
Lutz
--
Lutz Preßler <Lutz.Pressler@???> http://www.SerNet.DE/
SerNet Service Network GmbH, Bahnhofsallee 1b, D-37081 Göttingen
Tel.: +49-551-370000-2, FAX: +49-551-370000-9
AG Göttingen, HRB 2816, GF: Dr. Johannes Loxen