Version 4.31 ------------ 1. The support for maildirsize files has been completely re-written, in the light of a number of problems with the previous contributed implementation. In particular: . If the quota is zero, the maildirsize file is maintained, but no quota is imposed. . If the maildir directory does not exist, it is created before any attempt to write a maildirsize file. . The quota value in the file is just a cache; if the quota is changed in the transport, the new value overrides. . A regular expression is available for excluding directories from the count. This is set by the maildir_quota_directory_regex option, whose default value is maildir_quota_directory_regex = ^(?:cur|new|\..*)$ which includes the cur and new directories, and any maildir++ folders, which are directories whose names begin with a dot. If you want to exclude the Trash folder from the count (as some sites do), you need to change this setting to maildir_quota_directory_regex = ^(?:cur|new|\.(?!Trash).*)$ which uses a negative lookahead in the regex to exclude the directory whose name is .Trash. This option (maildir_quota_directory_regex) is used only when maildir_use_size_file is set. 2. John Jetmore's "exipick" utility has been added to the distribution. It lists messages from the queue according to a variety of criteria. For details, run "exipick --help". 3. If GnuTLS is used, version 1.0.0. or greater is required. The format for the display of Distinguished Names now uses commas instead of slashes for separators, in accordance with RFC 2253. 4. The TLS code now supports CRLs. There is a global option tls_crl and an identically named option for the smtp transport. In each case, the value is expanded and must point to a file that contains a CRL in PEM format. 5. The dnslookup router now supports the use of SRV records (see RFC 2782) in addition to MX and address records. The support is disabled by default. To enable SRV support, you need to set the check_srv option to the name of the service required. For example, check_srv = smtp looks for SRV records that refer to the normal smtp service. The option is expanded, so the service name can vary from message to message or address to address. This might be helpful if SRV records are being used for a submission service. If the expansion is forced to fail, the check_srv option is ignored, and the router proceeds to look for MX records in the normal way. When the expansion succeeds, the router searches first for SRV records for the given service (it assumes TCP protocol). A single SRV record with the host name "." indicates "no such service for this domain"; if this is encountered, the router declines. If other kinds of SRV record are found, they are used to construct a host list for delivery according to the rules of RFC 2782. MX records are not sought in this case. However, when no SRV records are found, MX records (and address records) are sought in the traditional way. In other words, SRV records take precedence over MX records, just as MX records take precedence over address records. Note that this behaviour is not sanctioned by RFC 2782, though a previous draft RFC defined it. It is apparently believed that MX records are sufficient for email and that SRV records should not be used for this purpose. However, SRV records to have an additional "weight" feature which some people might find useful when trying to split an SMTP load between hosts of different power. The mx_domains option, which used to mean "these domains must have MX records" is extended to mean "these domains must have either MX or SRV records". Perhaps at some future time I will rename it. 6. There is a new logging option called "outgoing_port". It causes the port number to be added to delivery log lines (those containing => tags) following the IP address. This option is not included in the default setting, because for most "ordinary" configurations, the port number is always 25 (the SMTP port). 7. There's a new expansion operator, ${eval10. It works like ${eval, except that it assumes all numbers are decimal, even if they start with a leading zero. This can be useful when processing numbers extracted from dates or times, which often do have leading zeros. 8. The redirect router has a new option called qualify_domain. If this is set and an unqualified address (one without a domain) is generated, it is qualified with the domain specified by expanding this string, instead of the global setting in qualify_recipient. If the expansion fails, the router declines. If you want to revert to the default, you can have the expansion generate $qualify_recipient. 9. exigrep's output now also includes lines that are not related to any particular message, but which do match the pattern. 10. There is a new global option called write_rejectlog, which defaults true. If it is set false, Exim no longer writes anything to the reject log. 11. There is a new log selector called return_path_on_delivery, which causes the return path to be included in delivery and bounce lines, using the tag "P=". Compare sender_on_delivery, which adds the original envelope sender address tagged with "F=". ****