Fix obscure duplicate delivery bug caused by local transport batching
[exim.git] / src / src / routers / README
1 $Cambridge: exim/src/src/routers/README,v 1.1 2004/10/07 13:10:02 ph10 Exp $
2
3 ROUTERS:
4
5 The yield of a router is one of:
6
7   OK              the address was routed and either added to one of the
8                   addr_local or addr_remote chains, or one or more new
9                   addresses were added to addr_new. The original may be added
10                   to addr_succeed.
11
12   REROUTED        this is used when a child address is created and added to
13                   addr_new as a consequence of a domain widening or because
14                   "self = reroute" was encountered. The only time it is handled
15                   differently from OK is when verifying, to force it to
16                   continue with the child address.
17
18   DECLINE         the address was not routed; pass to next router unless
19                   no_more is set. It is permitted for additional addresses to
20                   have been added to addr_new (or indeed for addresses to have
21                   been put on the other chains).
22
23   PASS            the address was not routed, but might have been modified;
24                   pass to the next router unconditionally.
25
26   DISCARD         the address was discarded (:blackhole: or "seen finish")
27
28   FAIL            the address was not routed; do not pass to any subseqent
29                   routers, i.e. cause routing to fail.
30
31   DEFER           retry this address later.
32
33 Both ERROR and DEFER cause the message to be kept on the queue; either may
34 request freezing, but nowadays we try not to request freezing from routers
35 because it may hold up other addresses in the message.
36
37
38 When routing succeeds, the following field in the address can be set:
39
40   transport       points to the transport instance control block
41
42   uid, gid        are the uid and gid under which a local transport is to be
43                   run if the transport does not itself specify them.
44
45   initgroups      is set true if initgroups() is to be called when using the
46                   uid and gid set up by the router.
47
48   fallback_hosts  fallback host list - relevant only if the router sets up
49                   a remote transport for the address.
50
51   errors_address  where to send error messages for this address.
52
53   extra_headers   additional headers to be added to the message for this
54                   address.
55
56   remove_headers  the names of headers to be removed from the message for this
57                   address
58
59 ****