Track tainted data and refuse to expand it
[users/jgh/exim.git] / src / src / transports / README
1 TRANSPORTS:
2
3 A delivery attempt results in one of the following values being placed in
4 addr->transport_return:
5
6     OK          success
7     DEFER       temporary failure
8     FAIL        permanent failure
9     PANIC       disaster - causes exim to bomb
10
11 The field is initialized to DEFER when the address is created, in order that
12 unexpected process crashes or other problems don't cause the message to be
13 deleted.
14
15 For non-OK values, additional information is placed in addr->errno,
16 addr->more_errno, and optionally in addr->message. These are inspected only if
17 the status is not OK, with one exception (see below).
18
19 In addition, the addr->special_action field can be set to request a non-default
20 action. The default action after FAIL is to return to sender; the default
21 action after DEFER is nothing. The alternatives are:
22
23   SPECIAL_NONE       (default) no special action
24   SPECIAL_FREEZE     freeze the message
25   SPECIAL_WARN       send warning message
26
27 The SPECIAL_WARN action is the exception referred to above. It is picked up
28 only after a *successful* delivery; it causes a warning message to be sent
29 containing the text of warn_message to warn_to. It can be used in appendfile,
30 for example, to send a warning message when the mailbox size crosses a given
31 threshold.
32
33 If the transport is handling a batch of several addresses, it may either put an
34 individual value in each address structure, and return TRUE, or it may put a
35 common value in the first address, and return FALSE.
36
37 Remote transports usually return TRUE and local transports usually return
38 FALSE; however, the lmtp transport may return either value, depending on what
39 happens inside it.
40
41 ****