-Exim version 4.52
------------------
-
-TF/01 Support for checking Client SMTP Authorization has been added. CSA is a
- system which allows a site to advertise which machines are and are not
- permitted to send email. This is done by placing special SRV records in
- the DNS, which are looked up using the client's HELO domain. At this
- time CSA is still an Internet-Draft.
-
- Client SMTP Authorization checks are performed by the ACL condition
- verify=csa. This will fail if the client is not authorized. If there is
- a DNS problem, or if no valid CSA SRV record is found, or if the client
- is authorized, the condition succeeds. These three cases can be
- distinguished using the expansion variable $csa_status, which can take
- one of the values "fail", "defer", "unknown", or "ok". The condition
- does not itself defer because that would be likely to cause problems
- for legitimate email.
-
- The error messages produced by the CSA code include slightly more
- detail. If $csa_status is "defer" this may be because of problems
- looking up the CSA SRV record, or problems looking up the CSA target
- address record. There are four reasons for $csa_status being "fail":
- the client's host name is explicitly not authorized; the client's IP
- address does not match any of the CSA target IP addresses; the client's
- host name is authorized but it has no valid target IP addresses (e.g.
- the target's addresses are IPv6 and the client is using IPv4); or the
- client's host name has no CSA SRV record but a parent domain has
- asserted that all subdomains must be explicitly authorized.
-
- The verify=csa condition can take an argument which is the domain to
- use for the DNS query. The default is verify=csa/$sender_helo_name.
-
- This implementation includes an extension to CSA. If the query domain
- is an address literal such as [192.0.2.95], or if it is a bare IP
- address, Exim will search for CSA SRV records in the reverse DNS as if
- the HELO domain was e.g. 95.2.0.192.in-addr.arpa. Therefore it is
- meaningful to say, for example, verify=csa/$sender_host_address - in
- fact, this is the check that Exim performs if the client does not say
- HELO. This extension can be turned off by setting the main
- configuration option dns_csa_use_reverse = false.
-
- If a CSA SRV record is not found for the domain itself, then a search
- is performed through its parent domains for a record which might be
- making assertions about subdomains. The maximum depth of this search is
- limited using the main configuration option dns_csa_search_limit, which
- takes the value 5 by default. Exim does not look for CSA SRV records in
- a top level domain, so the default settings handle HELO domains as long
- as seven (hostname.five.four.three.two.one.com) which encompasses the
- vast majority of legitimate HELO domains.
-
- The dnsdb lookup also has support for CSA. Although dnsdb already
- supports SRV lookups, this is not sufficient because of the extra
- parent domain search behaviour of CSA, and (as with PTR lookups)
- dnsdb also turns IP addresses into lookups in the reverse DNS space.
- The result of ${lookup dnsdb {csa=$sender_helo_name} } has two
- space-separated fields: an authorization code and a target host name.
- The authorization code can be "Y" for yes, "N" for no, "X" for explicit
- authorization required but absent, or "?" for unknown.
-
-PH/01 The amount of output produced by the "make" process has been reduced,
- because the compile lines are often rather long, making it all pretty
- unreadable. The new style is along the lines of the 2.6 Linux kernel:
- just a short line for each module that is being compiled or linked.
- However, it is still possible to get the full output, by calling "make"
- like this:
-
- FULLECHO='' make -e
-
- The value of FULLECHO defaults to "@", the flag character that suppresses
- command reflection in "make". When you ask for the full output, it is
- given in addition to the the short output.
-
-TF/02 There have been two changes concerned with submission mode:
-
- Until now submission mode always left the return path alone, whereas
- locally-submitted messages from untrusted users have the return path
- fixed to the user's email address. Submission mode now fixes the return
- path to the same address as is used to create the Sender: header. If
- /sender_retain is specified then both the Sender: header and the return
- path are left alone.
-
- Note that the changes caused by submission mode take effect after the
- predata ACL. This means that any sender checks performed before the
- fix-ups will use the untrusted sender address specified by the user, not
- the trusted sender address specified by submission mode. Although this
- might be slightly unexpected, it does mean that you can configure ACL
- checks to spot that a user is trying to spoof another's address, for
- example.
-
- There is also a new /name= option for submission mode which allows you
- to specify the user's full name to be included in the Sender: header.
- For example:
-
- accept authenticated = *
- control = submission/name=${lookup {$authenticated_id} \
- lsearch {/etc/exim/namelist} }
-
- The namelist file contains entries like
-
- fanf: Tony Finch
-
- And the resulting Sender: header looks like
-
- Sender: Tony Finch <fanf@exim.org>
-
-TF/03 The control = fakereject ACL modifier now has a fakedefer counterpart,
- which works in exactly the same way except it causes a fake SMTP 450
- response after the message data instead of a fake SMTP 550 response.
- You must take care when using fakedefer because it will cause messages
- to be duplicated when the sender retries. Therefore you should not use
- fakedefer if the message will be delivered normally.
-
-
-Version 4.51
+1. There is a new Boolean option called filter_prepend_home for the redirect
+ router. It defaults true, for backward compatibility. If a "save" command in
+ an Exim filter has a relative path for its argument, and $home is defined,
+ it is automatically prepended to the relative path. This action can now be
+ prevented by setting filter_prepend_home false.
+
+2. There is a new acl, set by acl_not_smtp_start, which is run right at the
+ start of receiving a non-SMTP message, before any of the message has been
+ read. (This is the analogue of the acl_smtp_predata ACL for SMTP input.) The
+ result of this ACL is ignored; it cannot be used to reject a message. If
+ you really need to, you could set a value in an ACL variable here and reject
+ based on that in the acl_not_smtp ACL. However, this ACL can be used to set
+ controls, and in particular, it can be used to set control=suppress_local_
+ fixups, which cannot be used in the acl_not_smtp ACL because by the time
+ that ACL is run, it is too late. When the acl_not_smtp_start ACL is run, the
+ sender and recipients are known, so the "senders" and "sender_domains"
+ conditions and $sender_address and $recipients variables can be used.
+ Variables such as $authenticated_ sender are also available. It is possible
+ to specify added header lines in this ACL.
+
+3. When an SMTP error message is specified in a "message" modifier in an ACL,
+ or in a :fail: or :defer: message in a redirect router, Exim now checks the
+ start of the message for an SMTP error code. This consists of three digits
+ followed by a space, optionally followed by an extended code of the form
+ n.n.n, also followed by a space. If this is the case and the very first
+ digit is the same as the default error code, the code from the message is
+ used instead. If the very first digit is incorrect, a panic error is logged,
+ and the default code is used. This is an incompatible change, but it is not
+ expected to affect many (if any) configurations. It is possible to suppress
+ the use of the supplied code in a redirect router by setting the
+ smtp_error_code option false. In this case, any SMTP code is quietly
+ ignored.
+
+
+Version 4.62