-$Cambridge: exim/doc/doc-misc/WishList,v 1.43 2005/07/14 17:17:25 ph10 Exp $
+$Cambridge: exim/doc/doc-misc/WishList,v 1.70 2007/02/27 11:51:27 ph10 Exp $
EXIM 4 WISH LIST
----------------
+This Wish List is now obsolete. The items it contains have been imported into
+the Exim Bugzilla, which is where all new wishes should be added. This file is
+no longer maintained. Some day it should be deleted.
+
+
+===============================================================================
Even when it was first released, Exim 4 had a Wish List because not all the
things suggested for it were implemented. The list has not stopped growing...
So several warnings could be generated as the mailbox got bigger and bigger.
------------------------------------------------------------------------------
-(146) 15-May-2000 M Allow SMTP error codes in retry rules
-
-This would allow special handling of certain errors from certain hosts. In
-particular, it would allow failing of certain 4xx codes.
-
-This is now available for 4xx responses to RCPT commands. Is anything more
-needed? Apparently, yes; there's been a request for a similar feature for MAIL
-commands.
-------------------------------------------------------------------------------
-
(148) 15-May-2000 S Warn recipient if message rejected for quota excession.
Heinz Ekker
address?
------------------------------------------------------------------------------
-(172) 11-Sep-2000 S Allow file/directory in appendfile to override
-"Michael J. Tubby"
-
-When appendfile is called from forward or filter files, it ignores file or
-directory settings. Maybe they should override. The path set by the forward or
-filter is available in $address_file these days, so it could be used to create
-a longer path.
-------------------------------------------------------------------------------
-
(173) 18-Sep-2000 S A way of doing lsearches with EOL terminated keys
Jason Robertson
exim_dbmbuild to make them into DBM files.
------------------------------------------------------------------------------
-(174) 19-Sep-2000 S A way of using a different port for fallback hosts.
-Dean Brooks
-------------------------------------------------------------------------------
-
(181) 10-Nov-2000 S Compile-time options for ignoring Sendmail options
So that new ones could be accommodated easily.
headers_remove = "X-*:Additional-header"
------------------------------------------------------------------------------
-(188) 02-Jan-2001 S Make pipe timeout a temporary error
-Georg v.Zezschwitz
-
-A way to make a timeout into a temporary error.
-------------------------------------------------------------------------------
-
(190) 03-Jan-2001 M Multiple message operations in eximon
------------------------------------------------------------------------------
might have. At ACL time, one would need to verify the recipient, and determine
that it routed to host X.
-. A new lookup library that operates on a specially prepared file of IP
-addresses and masks so that a single "lookup" yields a yes/no answer. This
-should be a freestanding thing - needs a utility to build the file from a list.
-
. People want to change the wording of messages; can we find an efficient way
of allowing this? (Maybe put all messages into a separate module?) The problem
is not in the messages themselves, but in the values that get inserted into
. Implement randomize for ldap/sql servers.
. Add an option for ETRN that says "wait for the command to finish, and use its
-stdout as the SMTP response."
+stdout as the SMTP response." // A serialized ETRN now does the waiting, but
+there is as yet no way to use the status. //
. -odsomething for "ignore retry when doing immediate delivery".
it were 4xx. Or possible add a sophisticated "after command X, treat xxx as
yyy".
-. A way of rewriting addresses in non-standard header lines such as
-Mail-Followup-To.
-
. Global option to enable initgroups() for exim uid. Default off.
. When verifying a sender, should it be rewritten with any T rewrites, because
. Options and/or a utility to enable non-privileged users to view the queue
(e.g. -bpp), manipulate their own messages, etc.
-. Specify a port along with a host in a route_list.
-
. A generalized "From" escaping scheme that also escapes >From so that the
whole thing can be reversed.
John W Baxter
May be tricky, because at the higher levels, the format of the query is not
-understood.
-------------------------------------------------------------------------------
-
-(8) 01-Jan-02 S Expand once_repeat in autoreply
-John Jetmore
+understood. // There is now a fudge that works in some cases. See ChangeLog
+4.51/PH/10. //
------------------------------------------------------------------------------
(9) 01-Jan-02 S Headers as well as body in file for autoreply
Suggested patch supplied.
------------------------------------------------------------------------------
-(171) 23-Jun-03 S Option to make timeout a soft failure on pipe transport
-
-------------------------------------------------------------------------------
-
(172) 23-Jun-03 M Option to make SQL query to specific server
------------------------------------------------------------------------------
different kinds of verify failure.
------------------------------------------------------------------------------
-(196) 30-Sep-03 S A way of detecting whether it was HELO or EHLO in the ACL
-
-$received_protocol isn't reset until after the command is accepted (which
-seems right), and $smtp_data shows only the arguments. Maybe $smtp_command?
-------------------------------------------------------------------------------
-
(197) 30-Sep-03 S MACROS_DROP_PRIVS and ALT_CONFIG_DROP_PRIVS
Now that alternative configurations can be restricted to certain directories,
that it can be used as a safety-net while testing configurations. Instead of a
local bounce, the message stays on the queue; instead of 5xx SMTP responses,
4xx ones are given.
-
-The ability to do the opposite - turn 4xx into 5xx under certain circumstances
-might also be useful (e.g. after a certain time). This might best be done by
-extending the retry logic to recognize 4xx as a special error. (This is now
-done.)
------------------------------------------------------------------------------
(202) 10-Oct-03 S -bvsomething to do a callout after the verify
------------------------------------------------------------------------------
(209) 31-Oct-03 S a way of making crashes in pipe commands temporary errors
-
------------------------------------------------------------------------------
(210) 31-Oct-03 S runtime option to change the daemon name used for tcprwappers
Unfortunately, this isn't quite as trivial as it seems.
------------------------------------------------------------------------------
-(215) 14-Nov-03 S A way of turning off message-submission fix-ups
-
-Globally, and perhaps also via an ACL control so that it can be done on a
-per-message basis. Is this still needed? Since this item was added to this
-list, default fixups for non-local messages have been removed, and control =
-submission has been added.
-------------------------------------------------------------------------------
-
(215) 26-Nov-03 M/L Conversion of IDNA domain names for logging
IDNA (RFCs 3490-3492) converts domains names containing non-ASCII characters
changed.)
------------------------------------------------------------------------------
-(216) 27-Nov-03 S Option to bounce if required TLS doesn't happen
-
-This is for the smtp transport with hosts_require_tls set. Currently, it
-defers. Possibly the best approach is to make the error one that can be seen by
-the retry logic.
-------------------------------------------------------------------------------
-
(217) 27-Nov-03 M A function to pass back variables from Perl
This is a function that can be called from Perl, to take a name and a value and
(236) 02-Feb-04 S String in local_scan that's added to the binary version string
------------------------------------------------------------------------------
-(237) 02-Feb-04 M Add_header in ACLs because "message" is overloaded
-
-This would be useful for verbs where "message" is an error message. See also
-333.
-------------------------------------------------------------------------------
-
(238) 05-Feb-04 S ${address to handle multiple addresses
At present, ${address expects to see just one address. An extension would let
both of them.
------------------------------------------------------------------------------
-(286) 21-Jul-04 M Distinguishing a larger number of errors
-
-For instance, detecting "connection reset by peer" (ENETRESET or ECONNRESET)
-might be useful.
-------------------------------------------------------------------------------
-
(288) 10-Aug-04 M Option for verify to require MX
e.g. verify=sender/require_mx
These are the main previous items:
Exim 3 Wish List: 41, 85, 149, 187.
-Exim 4 Wish List: 55, 62, 63, 160, 212, 237, 270, 314, 328.
+Exim 4 Wish List: 55, 62, 63, 160, 212, 270, 314, 328.
------------------------------------------------------------------------------
(334) 07-Jun-05 M Support for messages larger than 2G
supported, but not individual messages; no doubt one day this will be wanted.
------------------------------------------------------------------------------
-(335) 14-Jun-05 T Re-arrange default configuration
-
-A small niggle which might be worth fixing is the ordering of the ACL in the
-default configuration file. The relay_from_hosts and authenticated clauses
-would be better off before the dnslists examples. However, this should be left
-until a x.x0 release, because of the documentation implications.
-------------------------------------------------------------------------------
-
(336) 16-Jun-05 M Show recipient(s) after header check failure
The mainlog line for "There is no valid sender in any header line" shows the
implement not only an interface to the new API, but a backwards compatibility
feature. It would be nice if this was automatic.
------------------------------------------------------------------------------
---- HWM 338 ------------------------------------------------------------------
+
+(339) 28-Jul-05 S Log name of maildir file
+
+This wish is for an option to log the name of the file that is written in
+maildir format (e.g. time.pid.host).
+------------------------------------------------------------------------------
+
+(340) 30-Aug-05 M Match more than one item
+
+match_address, for instance, matches one address to a list. The wish is to be
+able to supply two lists; for each address in the first list, search the
+second. Maybe something like ${match_any{...}{...}} is needed.
+------------------------------------------------------------------------------
+
+(341) 15-Sep-05 S Add /return_path_retain to submission mode
+
+This would re-instate the behaviour prior to change 4.52/PH/04.
+------------------------------------------------------------------------------
+
+(342) 26-Sep-05 T Log and maybe defer odd values for condition pre-condition
+
+Odd values for "condition" in an ACL cause it to defer. In a router, they are
+treated as "true". At least they should be logged in a router, and perhaps they
+should also defer, for compatibility with ACLs.
+------------------------------------------------------------------------------
+
+(343) 03-Oct-05 M A query-style lookup for scanning flat files
+
+The natural syntax for this would be to use a regex, like this:
+${lookup regex{/some/file regex}{found-string}{not-found-string}}
+However, it would be natural to want to use $1 etc in the found-string; this
+would be hard because of the lookup caching (if repeated, the lookup won't
+actually be done and therefore the numerical variables won't be set), and in
+any case, even without caching (and it could, I suppose, be disabled for this
+lookup) those variables are not in the right storage pool even if they were
+preserved after the lookup.
+
+An alternative approach might be to implement something like this:
+
+ ${scanfile{/some/file}{sub-expression}}
+
+where the sub-expression is expanded for every line in the file, with each line
+in turn being put into $value. This is like a conditional ${readfile, and in
+fact ${readfile could be written using ${scanfile. It would be nice to find a
+way of stopping the scan once something has happened. The only thing I can
+think of is to invent a variable that changes when scanning a line generates
+some non-null text, and then always to stop on a forced failure. That would
+allow expressions like this:
+
+ ${scanfile{/some/file}
+ {
+ ${if eq{$generated}{}{${if match{regex}{$value}{something}}} fail}
+ }}
+
+It's all rather clumsy. Once a line has matched and generated some text, the
+next iteration would stop the scan. Another thought: maybe use $scanline
+instead of $value (to save confusion) and have $scantext containing everything
+that's been generated so far. That sounds pretty flexible.
+------------------------------------------------------------------------------
+
+(344) 10-Oct-05 M Make debug_print work in authenticators
+------------------------------------------------------------------------------
+
+(345) 14-Oct-05 M Standardize rejection messages
+
+"The parsing for rejection lines is a bit of a mess, and fairly
+unmaintainable. Do you think it would be possible to standardise
+rejection/refusal log messages? How about something like:
+
+(<ID>|16 Spaces) *< (Connection|MAIL|RCPT|HELO|EHLO|DATA) rejected (from
+<Address>)?: <Reason> (\(<Detail>\))?"
+------------------------------------------------------------------------------
+
+(346) 20-Oct-05 S Set $domain and $local_part in retry matching
+
+Currently, these variables are unset. Make it like rewrite matching.
+------------------------------------------------------------------------------
+
+(347) 15-Nov-05 M Arrange to expand data from wildlsearch
+
+This would allow keys that are regular expressions to set up numerical
+variables that are included in the data. This has to be done inside the lookup
+code, because of caching. Probably means we have to invent ewildlsearch and
+enwildlsearch.
+------------------------------------------------------------------------------
+
+(351) 31-Mar-06 ? Allow some/all/a few internal variables to be set
+
+The original idea was to allow "set authenticated = x" to pretend a connection
+is authenticated after other conditions are true. This can, of course, be
+packaged up using macros in other ways. Setting other variables could cause
+problems.
+------------------------------------------------------------------------------
+
+(352) 04-Apr-06 S Add +accept_defer for host lists (and maybe others)
+
+At present, a defer causes a delivery defer. For non-critical ACLs there are
+times when it may be better to accept. See also 226 and 289.
+------------------------------------------------------------------------------
+
+(354) 30-Jun-06 ? Extensions to SMTP error codes
+
+A number of ideas arose following a discussion on the mailing list. I record
+them here so that they don't get lost. The motivations were to support the 551
+bounce code and enhanced status codes. Suggestions are to add a new ACL
+feature, possibly one of:
+
+ errorcode = 511
+ control = errorcode=551
+ message = 551 xxxx
+
+where in the last case, it's recognized by being 3 digits. In all cases, the
+first digit must be "right" for the circumstance - ignore or fault if not?
+
+To handle ESC, perhaps a new variable called $smtp_errorcode, settable by an
+option in a router when it fails, would do the trick. It could be used in any
+of the above modifiers.
+------------------------------------------------------------------------------
+
+(355) 30-Jun-06 ? Facility to permit experiments with SMTP extensions
+
+This is what was suggested:
+
+- adding some expansion variables: $ehlo_extensions (which will
+ hold the remote server supported smtp extensions announced
+ in the ehlo) and $rcpt_arguments with any RCPT extra argument
+
+- a main configuration option for adding ehlo extensions to the
+ ehlo response, like:
+
+ extra_ehlo_extensions = XFOO : XBAR
+
+- a extra option for the smtp transport to add arguments to
+ the RCPT TO command, like:
+
+ rcpt_args = FOO=BAR (will make exim issue RCPT TO:<a@b.c> FOO=BAR
+ when delivering that message)
+
+- a new acl for unknown smtp commands
+
+This should be very simple to implement and will allow to make
+some experiments and implement custom extensions, i.e. one to
+known if remote client will redirect on 551 or not. Also the acl
+for unknown smpt command could be used for other purposes, like
+to dectect and react to some kiddies that send things like
+http://... on the smtp port.
+------------------------------------------------------------------------------
+--- HWM 355 ------------------------------------------------------------------
---------------------------- End of WishList ---------------------------------