[exim] temporary errors (LDAP failures) while routing

トップ ページ
このメッセージを削除
このメッセージに返信
著者: Lutz Preßler
日付:  
To: exim-users
題目: [exim] temporary errors (LDAP failures) while routing
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