| 1 | $Cambridge: exim/doc/doc-misc/WishList,v 1.5 2004/11/02 09:39:44 ph10 Exp $ |
| 2 | |
| 3 | EXIM 4 WISH LIST |
| 4 | ---------------- |
| 5 | |
| 6 | Even when it was first released, Exim 4 had a Wish List because not all the |
| 7 | things suggested for it were implemented. The list has not stopped growing... |
| 8 | |
| 9 | Another reason it is so long is that I have retained some items from the Exim 3 |
| 10 | Wish List that never got implemented, but which seem reasonable possibilities |
| 11 | for later addition to Exim 4. |
| 12 | |
| 13 | I have guessed at the amount of work involved, and categorized the items as |
| 14 | Tiny, Small, Medium, Large, or Unknown. The guesses are not based on any |
| 15 | detailed investigation, so must be taken as very rough. |
| 16 | |
| 17 | |
| 18 | ------------------------------------------------------------------------------ |
| 19 | ------------------------------------------------------------------------------ |
| 20 | ----- Retained from the Exim 3 Wish List ------ |
| 21 | ------------------------------------------------------------------------------ |
| 22 | ------------------------------------------------------------------------------ |
| 23 | |
| 24 | (10) 13-Jul-98 M more flexibility for pipe returns |
| 25 | Ben Smithurst |
| 26 | |
| 27 | The ability to specify more precisely what happens concerning the return code |
| 28 | from the pipe and the presence/absence of STDOUT/STDERR is requested. The |
| 29 | particular configuration that was requested was: |
| 30 | |
| 31 | > if the command exited EX_OK, *and* produced nothing on STDOUT or |
| 32 | > STDERR, it succeeded... |
| 33 | > if the command exited EX_TEMPFAIL, defer, regardless of |
| 34 | > STDOUT/STDERR... |
| 35 | > otherwise freeze the message (this will get my attention by way of |
| 36 | > freeze_tell_mailmaster)... |
| 37 | ------------------------------------------------------------------------------ |
| 38 | |
| 39 | (11) 17-Jul-98 G support for DSN |
| 40 | Andy Mell |
| 41 | |
| 42 | It is unclear to me how this should work in the presence of aliases and |
| 43 | forwarding. Local deliveries would have to explicitly configured as deliveries |
| 44 | or relaying or whatever. A substantial amount of code is probably needed. |
| 45 | |
| 46 | Jeffrey Goldberg |
| 47 | I have nothing to add except to say that for many of the reasons you've |
| 48 | stated, I don't think that DSN is coherent enough to be worth the effort |
| 49 | to implement. |
| 50 | |
| 51 | Another comment: |
| 52 | |
| 53 | I thought the RFC was pretty clear on this. In a nutshell, if the |
| 54 | delivery rewrites the envelope from address, it's considered a |
| 55 | terminal delivery (i.e. delivery to a mailing list exploder), otherwise |
| 56 | treat it as a forwarding operation (the /etc/aliases case). I would |
| 57 | treat a .forward expansion as a final delivery event (it got to the |
| 58 | user as far as the MTA is concerned). |
| 59 | |
| 60 | Yes, we need the DSN syntax. We also require the complete semantics of |
| 61 | NOTIFY=SUCCESS,FAILURE for our application to work. |
| 62 | |
| 63 | Electronic Bill Presentment is really going to push the need for |
| 64 | DSN support in MTAs. We just don't want to get stuck in a situation |
| 65 | where we're faced with a non-DSN-aware MTA when we go to install |
| 66 | our bill/statement engine, thus our interest in what the MTA vendors |
| 67 | are planning to do about DSN. |
| 68 | ------------------------------------------------------------------------------ |
| 69 | |
| 70 | (41) 14-Oct-98 M Find a way of modifying header lines |
| 71 | Oliver Smith |
| 72 | |
| 73 | The problem with header_remove followed by header_add is that you can't refer |
| 74 | to the previous value of the header when adding a replacement. This could be |
| 75 | solved with a replace_header option. |
| 76 | ------------------------------------------------------------------------------ |
| 77 | |
| 78 | (43) 15-Oct-98 M Sender rewrite *after* SMTP incoming checks |
| 79 | Andreas Edler |
| 80 | |
| 81 | The anti-relaying check happens after the sender has been rewritten; there are |
| 82 | times when it would be helpful to do the check on the original sender, not on |
| 83 | the rewritten one. Quite how to configure this I'm not sure. |
| 84 | |
| 85 | A related suggestion (from Steve Sargent) is to retain the original sender |
| 86 | address and make it accessible somehow. |
| 87 | ------------------------------------------------------------------------------ |
| 88 | |
| 89 | (46) 20-Oct-98 L SMTP protocol hooks |
| 90 | Malcolm Ray |
| 91 | |
| 92 | "But there are enough broken SMTP implementations to make me wonder whether |
| 93 | there isn't a case for providing hooks for tweaking the SMTP transport's |
| 94 | protocol exchange. Something which would allow me to say things like 'if, when |
| 95 | talking to lame.example.com, you get a 251 response to a MAIL command, rewrite |
| 96 | the response to 501 before continuing'." |
| 97 | ------------------------------------------------------------------------------ |
| 98 | |
| 99 | (50) 13-Nov-98 M A "Focus" option for eximon |
| 100 | Frank Elsner |
| 101 | |
| 102 | This is the opposite of "Hide"; it just displays a certain subset. Hmm. Could |
| 103 | something clever be done with regular expressions? |
| 104 | ------------------------------------------------------------------------------ |
| 105 | |
| 106 | (61) 22-Dec-98 M Send failed error messages to somebody |
| 107 | Harald Meland |
| 108 | |
| 109 | With sendmail, the failed error message is made into a error message, |
| 110 | with both envelope sender and recipient set to MAILER-DAEMON. The |
| 111 | original, bogus-envelope-sender message is then available to whoever |
| 112 | receives MAILER-DAEMON's mail. A more flexible approach would be to |
| 113 | specify a specific recipient. |
| 114 | ------------------------------------------------------------------------------ |
| 115 | |
| 116 | (81) 01-Mar-99 M Addition of Content-MD5 support |
| 117 | Martin Hamilton |
| 118 | |
| 119 | Martin supplied a suggested patch at |
| 120 | http://www.net.lut.ac.uk/~martin/antispam/exim-hacks/ |
| 121 | ------------------------------------------------------------------------------ |
| 122 | |
| 123 | (85) 15-Mar-99 M ability to rewrite addresses in non-standard headers |
| 124 | Dave Lewney |
| 125 | John Holman |
| 126 | |
| 127 | Such as "return-receipt-to". See also 41. |
| 128 | ------------------------------------------------------------------------------ |
| 129 | |
| 130 | (90) 21-Apr-99 M change wild prefix/suffix greediness |
| 131 | Ben Smithurst |
| 132 | |
| 133 | Currently, when prefix or suffix containing * is set on a director, and the |
| 134 | fixed part occurs more than once in a local part, the length of the prefix or |
| 135 | suffix is maximized. For example, with suffix = -* and a local part of |
| 136 | foo-bar-baz the suffix is taken as bar-baz, leaving the local part as foo. |
| 137 | An option is proposed to invert this rule. |
| 138 | ------------------------------------------------------------------------------ |
| 139 | |
| 140 | (91) 26-Apr-99 S make queue_run_in_order to newest first |
| 141 | "Andreas M. Kirchwitz" |
| 142 | |
| 143 | The tidiest thing would be to have queue_run_order={random,oldest,newest}, |
| 144 | and make queue_run_in_order obsolete. |
| 145 | ------------------------------------------------------------------------------ |
| 146 | |
| 147 | (93) 04-May-1999 L fallback_transport |
| 148 | |
| 149 | This would be a generic transport option, specifying a different transport to |
| 150 | be used if the first one failed. Failed hard, or failed soft? Or an option? |
| 151 | And if failed hard, is a bounce message sent as well, or not? There are uid |
| 152 | issues. Remote delivery would have to be done always in a subprocess so that |
| 153 | the main process could retain privilege in case the fallback transport was |
| 154 | local. That could be conditional. That's why this is labelled "Large". Some of |
| 155 | the things people want to do with this can be done by variations in the |
| 156 | routers, e.g. use $message_age to switch routers. |
| 157 | ------------------------------------------------------------------------------ |
| 158 | |
| 159 | (94) 13-May-1999 M message to go with -Mg |
| 160 | Dave Holland |
| 161 | Alan Thew |
| 162 | |
| 163 | So the admin can pass back a reason. |
| 164 | ------------------------------------------------------------------------------ |
| 165 | |
| 166 | (99) 28-May-1999 M header to list failures for syntax_errors_to |
| 167 | mark david mcCreary |
| 168 | |
| 169 | "I use the syntax_errors_to feature to email a copy of the error message. |
| 170 | It would be helpful to have the X-Failed-Receipients header in there, |
| 171 | identifying which addreses(s) are the problem, so that I don't have to |
| 172 | parse the body of the email message to figure out which addresses." |
| 173 | ------------------------------------------------------------------------------ |
| 174 | |
| 175 | (100) 04-Jun-1999 S admin_users option, like trusted_users |
| 176 | Paul Mansfield |
| 177 | ------------------------------------------------------------------------------ |
| 178 | |
| 179 | (102) 21-Jun-1999 M expanded basic variables |
| 180 | Julian King |
| 181 | |
| 182 | Oh, and a wishlist entry, qualify_domain, and preferably other variables |
| 183 | can be set with a $lookup in the first part of the exim configuration |
| 184 | file, perhaps by an equivalent to backticks in shell script ("`command`")? |
| 185 | ------------------------------------------------------------------------------ |
| 186 | |
| 187 | (105) 28-Jun-1999 M MIME-format bounce messages |
| 188 | Paul Makepeace |
| 189 | |
| 190 | "Is there any work going/gone on/planned to enable exim to report delivery |
| 191 | status notifications using RFC1892 multipart/report MIME messages? It would be |
| 192 | great to have errors reported in a message/rfc822 attachment." |
| 193 | |
| 194 | Jeffrey Goldberg |
| 195 | "I like plain bounces, so would hope that if you do this, that it be |
| 196 | configurable. I think that even for those who want it, it shouldn't be very |
| 197 | high on the wish list priority." |
| 198 | |
| 199 | Other suggestions: toggle for bounces/warnings; override max_return for |
| 200 | certain addresses; use plain text if original not MIME. See Paul's hack |
| 201 | for background of what to do. |
| 202 | |
| 203 | Nigel suggests using a specially named autoreply transport to generate bounces; |
| 204 | people could then replace this with another transport (e.g. pipe) if they want |
| 205 | to customize it themselves. |
| 206 | |
| 207 | Eli Chen posted an unconditional patch for 3.32 that does some of this work. |
| 208 | That could form a basis. |
| 209 | ------------------------------------------------------------------------------ |
| 210 | |
| 211 | (107) 12-Jul-1999 S defer transport at given load level |
| 212 | Marc Haber |
| 213 | |
| 214 | ------------------------------------------------------------------------------ |
| 215 | |
| 216 | (108) 16-Jul-1999 S remote sort by numbers of recipients |
| 217 | mark david mcCreary |
| 218 | |
| 219 | In the absence of remote_sort, sort remote domains by the number of recipients |
| 220 | in each. |
| 221 | ------------------------------------------------------------------------------ |
| 222 | |
| 223 | (114) 11-Nov-1999 S List of possible outgoing interfaces |
| 224 | |
| 225 | Allow the smtp "interface" option to be a list: try them in turn until one |
| 226 | is found to work. Also allow masks to specify a range of addresses. |
| 227 | ------------------------------------------------------------------------------ |
| 228 | |
| 229 | (123) 23-Dec-1999 L Use AUTH + TURN for dial-in hosts |
| 230 | Andrew Tverdokhleb |
| 231 | |
| 232 | The way to do this would be to have Exim deliver messages into per-host |
| 233 | directories in, say, BSMTP format. Accept TURN if authenticated, and cause it |
| 234 | to run a helper program that is passed the socket in order to deliver the mail. |
| 235 | Provide a helper program! |
| 236 | ------------------------------------------------------------------------------ |
| 237 | |
| 238 | (125) 04-Jan-2000 L Use shared memory segment for queue list |
| 239 | Theo Schlossnagle |
| 240 | |
| 241 | The idea is that a queue-runner that finds no existing shared segment should |
| 242 | create one (if configured - possibly some fixed size) and all Exim processes |
| 243 | should maintain a list of messages in it, thereby saving on directory scans |
| 244 | when there are lots of messages. This needs a lot of careful thought to try to |
| 245 | eliminate any possibility of data loss. The interlocking could be quite tricky. |
| 246 | Further posters suggested using a db file to hold the list. See also 127. |
| 247 | ------------------------------------------------------------------------------ |
| 248 | |
| 249 | (129) 14-Jan-2000 L Dynamically loadable lookup modules |
| 250 | Steve Haslam |
| 251 | |
| 252 | Suggested patch provided. |
| 253 | ------------------------------------------------------------------------------ |
| 254 | |
| 255 | (131) 17-Jan-2000 T Facility for assuming existence for EACCES |
| 256 | Peter Radcliffe |
| 257 | |
| 258 | The opposite option for "+" in require_files: assume existence if cannot |
| 259 | peer into the directory (+ assumes non-existence). |
| 260 | ------------------------------------------------------------------------------ |
| 261 | |
| 262 | (131) 29-Feb-2000 M? Control total number of outgoing SMTP calls |
| 263 | Brian White |
| 264 | |
| 265 | This is for hosts with slow connections. Could some modification of |
| 266 | serialize_hosts be used for this? Or maybe use a semaphore? They seem to |
| 267 | be quite widely available. |
| 268 | ------------------------------------------------------------------------------ |
| 269 | |
| 270 | (132) 01-Mar-2000 S Lookup host name from outgoing interface |
| 271 | Vadim Vygonets |
| 272 | |
| 273 | Instead of primary_hostname, look up the name for the interface that is being |
| 274 | used for sending. Suggested patch supplied, but this should be an option of the |
| 275 | smtp transport. |
| 276 | ------------------------------------------------------------------------------ |
| 277 | |
| 278 | (133) 06-Mar-2000 S Filter option not to log "previously sent" |
| 279 | Bruce Bowler |
| 280 | |
| 281 | This is when using the "log" option of the autoreply driver. |
| 282 | ------------------------------------------------------------------------------ |
| 283 | |
| 284 | (134) 09-Mar-2000 S Option to remove attachments when bouncing |
| 285 | ------------------------------------------------------------------------------ |
| 286 | |
| 287 | (136) 13-Mar-2000 S/M Option for aliasfile to suppress "me too" |
| 288 | |
| 289 | Could be tricky determining who "me" is. |
| 290 | ------------------------------------------------------------------------------ |
| 291 | |
| 292 | (143) 08-May-2000 S Make quota_warn_threshold into a list |
| 293 | David Carter |
| 294 | |
| 295 | So several warnings could be generated as the mailbox got bigger and bigger. |
| 296 | ------------------------------------------------------------------------------ |
| 297 | |
| 298 | (146) 15-May-2000 M Allow SMTP error codes in retry rules |
| 299 | |
| 300 | This would allow special handling of certain errors from certain hosts. In |
| 301 | particular, it would allow failing of certain 4xx codes. |
| 302 | |
| 303 | This is now available for 4xx responses to RCPT commands. Is anything more |
| 304 | needed? |
| 305 | ------------------------------------------------------------------------------ |
| 306 | |
| 307 | (148) 15-May-2000 S Warn recipient if message rejected for quota excession. |
| 308 | Heinz Ekker |
| 309 | |
| 310 | Maybe not all that small, because the possibility of retrying must be taken |
| 311 | into account. |
| 312 | ------------------------------------------------------------------------------ |
| 313 | |
| 314 | (149) 19-May-2000 L Make added headers visible in filters and other places |
| 315 | Hans Morten Kind |
| 316 | |
| 317 | Headers added by directors/routers are not visible in subsequent processing. |
| 318 | This is a request to make them visible. What about removed headers? This could |
| 319 | be tricky to specify, hence the L. |
| 320 | |
| 321 | A separate but related issue is the effect of headers added by "unseen" |
| 322 | directors. These are documented in chapter 19 as not being accumulated. Should |
| 323 | any change be made? |
| 324 | ------------------------------------------------------------------------------ |
| 325 | |
| 326 | (155) 16-Jun-2000 M Special handling for certain hosts |
| 327 | mark david mcCreary |
| 328 | |
| 329 | A means of changing the transport depending on the host name/IP of the most |
| 330 | preferred MX record so that all domains that route to certain hosts can be |
| 331 | handled specially. Maybe this could be a variable that is available in the |
| 332 | expansion of the "transport" option. |
| 333 | ------------------------------------------------------------------------------ |
| 334 | |
| 335 | (158) 29-Jun-2000 S Configure "From" in bounces |
| 336 | Ben Parker |
| 337 | |
| 338 | Cf Reply-To. |
| 339 | ------------------------------------------------------------------------------ |
| 340 | |
| 341 | (159) 07-Jul-2000 M Keep messages for fixed time |
| 342 | Gary Palmer |
| 343 | |
| 344 | An option to keep messages on the queue for a specified time, even if all their |
| 345 | destination hosts have timed out. |
| 346 | ------------------------------------------------------------------------------ |
| 347 | |
| 348 | (164) 17-Aug-2000 S sender_unqualified_auth_hosts |
| 349 | |
| 350 | To allow authenticated hosts to send unqualified addresses. Presumably it |
| 351 | needs received_... as well. |
| 352 | ------------------------------------------------------------------------------ |
| 353 | |
| 354 | (167) 05-Sep-2000 L Support for ODBC |
| 355 | |
| 356 | This would allow access to databases that don't have native support built into |
| 357 | Exim. See http://www.openlinksw.com/info/docs/rel3doc/unix/odbcsdk.htm |
| 358 | ------------------------------------------------------------------------------ |
| 359 | |
| 360 | (168) 06-Sep-2000 M Deliver messages that alias to nothing to a given address |
| 361 | Dr ZP Han |
| 362 | |
| 363 | If other people are managing alias lists, and one is empty, bounce that |
| 364 | delivery to a given address rather than freezing the message. Use the errors_to |
| 365 | address? |
| 366 | ------------------------------------------------------------------------------ |
| 367 | |
| 368 | (172) 11-Sep-2000 S Allow file/directory in appendfile to override |
| 369 | "Michael J. Tubby" |
| 370 | |
| 371 | When appendfile is called from forward or filter files, it ignores file or |
| 372 | directory settings. Maybe they should override. The path set by the forward or |
| 373 | filter is available in $address_file these days, so it could be used to create |
| 374 | a longer path. |
| 375 | ------------------------------------------------------------------------------ |
| 376 | |
| 377 | (173) 18-Sep-2000 S A way of doing lsearches with EOL terminated keys |
| 378 | Jason Robertson |
| 379 | |
| 380 | This is for looking up things like subject contents. Probably need an option to |
| 381 | exim_dbmbuild to make them into DBM files. |
| 382 | ------------------------------------------------------------------------------ |
| 383 | |
| 384 | (174) 19-Sep-2000 S A way of using a different port for fallback hosts. |
| 385 | Dean Brooks |
| 386 | ------------------------------------------------------------------------------ |
| 387 | |
| 388 | (181) 10-Nov-2000 S Compile-time options for ignoring Sendmail options |
| 389 | |
| 390 | So that new ones could be accommodated easily. |
| 391 | ------------------------------------------------------------------------------ |
| 392 | |
| 393 | (183) 04-Dec-2000 L dns_means_nonexist_after |
| 394 | Dave C. |
| 395 | |
| 396 | In other words, wait a bit before giving up. This needs a mechanism for |
| 397 | remembering, which is not currently available. To be borne in mind for the |
| 398 | future. |
| 399 | ------------------------------------------------------------------------------ |
| 400 | |
| 401 | (184) 04-Dec-2000 M Log more details of local caller |
| 402 | J. Nick Koston |
| 403 | |
| 404 | "I was wondering if it was possible for exim to log the parent pid's cwd and |
| 405 | exe when it is called from a script/invoked by actually running /usr/sbin/exim |
| 406 | or /usr/sbin/sendmail." Question: is this information actually/easily |
| 407 | available to Exim? Needs investigation. |
| 408 | ------------------------------------------------------------------------------ |
| 409 | |
| 410 | (186) 19-Dec-2000 S A simple utility to reset a retry time |
| 411 | Marc Haber |
| 412 | |
| 413 | Basically, to do what exim_fixdb "delete" can do, but straightforwardly. There |
| 414 | could be an interface from eximon. |
| 415 | ------------------------------------------------------------------------------ |
| 416 | |
| 417 | (187) 02-Jan-2001 M Wildcarding in headers_remove |
| 418 | Tamas TEVESZ |
| 419 | |
| 420 | What I'd like to see is it to handle globs (or regexps, but i'm not sure this |
| 421 | latter would worth the hassle), in a way like: |
| 422 | |
| 423 | headers_remove = "X-*:Additional-header" |
| 424 | ------------------------------------------------------------------------------ |
| 425 | |
| 426 | (188) 02-Jan-2001 S Make pipe timeout a temporary error |
| 427 | Georg v.Zezschwitz |
| 428 | |
| 429 | A way to make a timeout into a temporary error. |
| 430 | ------------------------------------------------------------------------------ |
| 431 | |
| 432 | (190) 03-Jan-2001 M Multiple message operations in eximon |
| 433 | ------------------------------------------------------------------------------ |
| 434 | |
| 435 | (195) 19-Mar-2001 T TCP window size |
| 436 | |
| 437 | TCP window size for receiving/sending, SMTP client/server. |
| 438 | ------------------------------------------------------------------------------ |
| 439 | ------------------------------------------------------------------------------ |
| 440 | |
| 441 | |
| 442 | |
| 443 | ------------------------------------------------------------------------------ |
| 444 | ------------------------------------------------------------------------------ |
| 445 | ----- Things that didn't make it into Exim 4 ------ |
| 446 | ------------------------------------------------------------------------------ |
| 447 | ------------------------------------------------------------------------------ |
| 448 | |
| 449 | . An option to send messages to postmaster when ignore_errmsg_errors_after |
| 450 | times out. |
| 451 | |
| 452 | . When an address is being routed, its constituents are in $local_part and |
| 453 | $domain, but there is currently no variable that contains the whole thing. It |
| 454 | could be put into $recipient, but that risks confusion with $recipients |
| 455 | (which is available in system filters). Maybe $address could be used? |
| 456 | |
| 457 | . The ability to relay to host X without knowing all the domains that host X |
| 458 | might have. At ACL time, one would need to verify the recipient, and determine |
| 459 | that it routed to host X. |
| 460 | |
| 461 | . A new lookup library that operates on a specially prepared file of IP |
| 462 | addresses and masks so that a single "lookup" yields a yes/no answer. This |
| 463 | should be a freestanding thing - needs a utility to build the file from a list. |
| 464 | |
| 465 | . People want to change the wording of messages; can we find an efficient way |
| 466 | of allowing this? (Maybe put all messages into a separate module?) The problem |
| 467 | is not in the messages themselves, but in the values that get inserted into |
| 468 | messages. Would have to invent a new kind of function that used identified |
| 469 | values rather than positional ones. Use GNU gettext? |
| 470 | |
| 471 | . Invent lf_hosts for those that may use LF without CR. Any other RFC |
| 472 | things we need to worry about? |
| 473 | |
| 474 | . A user would really like to see something similar, perhaps with |
| 475 | "ID=$authenticated_id", similar to "helo=" and "ident=" in the default received |
| 476 | header. BUT there are security issues. Maybe give it as a commented out option |
| 477 | in the default configuration? |
| 478 | |
| 479 | . Consider expanding further options that take integer values. What about |
| 480 | smtp_xxx options for different limits at different times of day (for example)? |
| 481 | What about tls_advertise_hosts (so can look at incoming IP/port)? |
| 482 | |
| 483 | . How about a "hold hosts" option (cf hold_domains) to hold delivery to certain |
| 484 | hosts? |
| 485 | |
| 486 | . Allow user filters to use "headers add", but probably not remove. Or maybe |
| 487 | just implement "allow" options for both of these features. |
| 488 | |
| 489 | . Have the return from pipe in a variable, so that (e.g. error_message_file) |
| 490 | can make use of it. |
| 491 | |
| 492 | . Implement randomize for ldap/sql servers. |
| 493 | |
| 494 | . Add an option for ETRN that says "wait for the command to finish, and use its |
| 495 | stdout as the SMTP response." |
| 496 | |
| 497 | . -odsomething for "ignore retry when doing immediate delivery". |
| 498 | |
| 499 | . Add an option to the smtp transport to make it treat 5xx on connection as if |
| 500 | it were 4xx. Or possible add a sophisticated "after command X, treat xxx as |
| 501 | yyy". |
| 502 | |
| 503 | . A way of rewriting addresses in non-standard header lines such as |
| 504 | Mail-Followup-To. |
| 505 | |
| 506 | . Global option to enable initgroups() for exim uid. Default off. |
| 507 | |
| 508 | . When verifying a sender, should it be rewritten with any T rewrites, because |
| 509 | it would be so rewritten if it actually was a recipient in a message? |
| 510 | |
| 511 | . Sean Witham wants a way of defining macros that are not privileged, and a |
| 512 | sort of #ifdef structure that allows for different configurations in the same |
| 513 | file. |
| 514 | |
| 515 | . Allow :fail: to specify that 551 be used instead of 550. Maybe allow a code |
| 516 | at the start, optionally? What about :defer:? |
| 517 | |
| 518 | . SMTP timeout in middle of receiving message: log sender address if known, and |
| 519 | possibly message_id if known. |
| 520 | |
| 521 | . Make -brw show rewrites for transports too. |
| 522 | |
| 523 | . Have the MTA log destinations that have timed-out on a ident request and |
| 524 | no longer send rfc1413_queries to them. Add an option for how not to cache |
| 525 | these entries. |
| 526 | |
| 527 | . Options and/or a utility to enable non-privileged users to view the queue |
| 528 | (e.g. -bpp), manipulate their own messages, etc. |
| 529 | |
| 530 | . Specify a port along with a host in a route_list. |
| 531 | |
| 532 | . A generalized "From" escaping scheme that also escapes >From so that the |
| 533 | whole thing can be reversed. |
| 534 | |
| 535 | . There was a request for the \dns_again_means_nonexist\ option not to be |
| 536 | instantaneous, but to operate only after the DNS has been giving "try again" |
| 537 | for some time. Use the misc hints database. |
| 538 | |
| 539 | |
| 540 | |
| 541 | ------------------------------------------------------------------------------ |
| 542 | ------------------------------------------------------------------------------ |
| 543 | ----- The Exim 4 Wish List ------ |
| 544 | ------------------------------------------------------------------------------ |
| 545 | ------------------------------------------------------------------------------ |
| 546 | |
| 547 | (1) 01-Jan-02 U Use of dynamically loaded libraries. |
| 548 | |
| 549 | People want Exim to use dynamically loaded modules for a variety of reasons. |
| 550 | When I started to create Exim, I never expected anything other than source |
| 551 | distribution; the RPMs and inclusions in OS distributions caught me by |
| 552 | surprise. I know very little about the mechanics of dynamic loading, but I'm |
| 553 | aware that not all operating systems support it. I'm also aware that not all |
| 554 | people support it! |
| 555 | |
| 556 | Furthermore, a way round this might be to supply more hooks along the lines of |
| 557 | local_scan(). Then people can write their own dynamic loaders if they want. |
| 558 | ------------------------------------------------------------------------------ |
| 559 | |
| 560 | (3) 01-Jan-02 U Test for over-quota at SMTP time |
| 561 | |
| 562 | This is a hard one, because the only way to test for over quota is to try to |
| 563 | deliver a message, certainly if system quotas are being used. And also, the |
| 564 | only available size at RCPT time is the SIZE option, though of course the test |
| 565 | could be run at DATA time. I think maybe we leave this one to an external |
| 566 | program, and require people to use ${run} to access the data. Let someone else |
| 567 | figure out how to extract the current mailbox size! |
| 568 | |
| 569 | One suggestion is to implement |
| 570 | |
| 571 | ${file_size:/path/to/file} |
| 572 | ${directory_size:/path/to/directory} |
| 573 | |
| 574 | so that explicit checks can be done. It may be necessary to have four |
| 575 | operators, two being based on the block count, and two showing the "visible" |
| 576 | size. Directory scanning is expensive; is there any scope for caching? It would |
| 577 | seem not (you don't often get two addresses to the same user). |
| 578 | ------------------------------------------------------------------------------ |
| 579 | |
| 580 | (4) 01-Jan-02 S Option to reject if no From: or Date: header line |
| 581 | |
| 582 | Exim, in common with many other MTAs, inserts a From: or Date: header line if |
| 583 | one is missing. (It also inserts a blank Bcc:, but that is no longer needed by |
| 584 | RFC 2822 - it was by 822.) The suggestion is an option to give an error |
| 585 | instead. This could be done by making it possible to detect these insertions in |
| 586 | the acl_smtp_data ACL. |
| 587 | ------------------------------------------------------------------------------ |
| 588 | |
| 589 | (6) 01-Jan-02 S Option to disable the use of -t |
| 590 | Dave C. |
| 591 | |
| 592 | Would require work so that Exim itself doesn't use -t. |
| 593 | ------------------------------------------------------------------------------ |
| 594 | |
| 595 | (7) 01-Jan-02 M Avoid showing LDAP passwords in log lines for LDAP errors |
| 596 | John W Baxter |
| 597 | |
| 598 | May be tricky, because at the higher levels, the format of the query is not |
| 599 | understood. |
| 600 | ------------------------------------------------------------------------------ |
| 601 | |
| 602 | (8) 01-Jan-02 S Expand once_repeat in autoreply |
| 603 | John Jetmore |
| 604 | ------------------------------------------------------------------------------ |
| 605 | |
| 606 | (9) 01-Jan-02 S Headers as well as body in file for autoreply |
| 607 | Florian Laws |
| 608 | ------------------------------------------------------------------------------ |
| 609 | |
| 610 | (10) 01-Jan-02 T Make "true" and "false" valid expansion conditions |
| 611 | |
| 612 | This might help with "and" and "or" when one of the sub-conditions is, for |
| 613 | example, a lookup. |
| 614 | ------------------------------------------------------------------------------ |
| 615 | |
| 616 | (11) 01-Jan-02 S Allow a filter to include another file. |
| 617 | ------------------------------------------------------------------------------ |
| 618 | |
| 619 | (12) 01-Jan-02 M Support for different SQL servers per query |
| 620 | |
| 621 | In other words, the global mysql_servers etc. is too restrictive. |
| 622 | ------------------------------------------------------------------------------ |
| 623 | |
| 624 | (14) 01-Jan-02 M? Support for Sendmail milters |
| 625 | |
| 626 | This could perhaps be done by extending the local_scan() idea and providing a |
| 627 | "standard" module which interfaced to milter. |
| 628 | ------------------------------------------------------------------------------ |
| 629 | |
| 630 | (15) 01-Jan-02 M More hooks like local_scan() |
| 631 | |
| 632 | One request has been for a similar hook at logging time. For other SMTP |
| 633 | interactions, maybe a hook into the ACL? See also 79 and 218 and 301. |
| 634 | ------------------------------------------------------------------------------ |
| 635 | |
| 636 | (17) 11-Jan-02 M The construction of config.h needs refactoring |
| 637 | |
| 638 | This has been hacked about substantially since the original implementation. |
| 639 | Given that there is a program (buildconfig), the messing around with the |
| 640 | environment could be abolished. Also, the distinction between "yes" and "no" |
| 641 | isn't always properly made (tests for #ifdef don't care about the value). |
| 642 | ------------------------------------------------------------------------------ |
| 643 | |
| 644 | (18) 24-Jan-02 S Make $value retain its value after a top-level expansion |
| 645 | |
| 646 | This was specifically for use in filter files. Currently it reverts to empty |
| 647 | as a consequence of save/restore for every lookup. It might be confusing to |
| 648 | do otherwise, however. |
| 649 | ------------------------------------------------------------------------------ |
| 650 | |
| 651 | (19) 29-Jan-02 L Use of multiple DBM libraries |
| 652 | |
| 653 | The problem is how to handle conflicting function names. Much research is |
| 654 | needed. |
| 655 | ------------------------------------------------------------------------------ |
| 656 | |
| 657 | (20) 29-Jan-02 S Make system filter refreeze after manual thaw |
| 658 | |
| 659 | Currently, a "freeze" in a system filter doesn't freeze after a manual thaw. |
| 660 | ------------------------------------------------------------------------------ |
| 661 | |
| 662 | (21) 12-Feb-02 S Expand return_size_limit |
| 663 | Joachim Wieland |
| 664 | |
| 665 | Is this really worth it? A per-transport value is also suggested - that would |
| 666 | mean remembering the value with each failed address and taking a minimum or |
| 667 | a maximimum (which?). |
| 668 | ------------------------------------------------------------------------------ |
| 669 | |
| 670 | (24) 21-Feb-02 ? A way of testing TLS using -bh |
| 671 | ------------------------------------------------------------------------------ |
| 672 | |
| 673 | (27) 06-Mar-02 M Distinguishing between different temporary callout errors |
| 674 | |
| 675 | The request was to distinguish between a 4xx error and a failure to connect. |
| 676 | Problem is: how to cope when there is more than one host? Maybe only if ALL |
| 677 | fail to connect. An option like /callout_no_connect_ok. |
| 678 | ------------------------------------------------------------------------------ |
| 679 | |
| 680 | (30) 12-Mar-02 S Add "recipients" precondition to routers. |
| 681 | |
| 682 | This would avoid having to use "condition". (See also requirement for $address |
| 683 | mentioned above.) However, it would also require adding a caching feature, and |
| 684 | probably $recipient_data (cf $domain_data). |
| 685 | ------------------------------------------------------------------------------ |
| 686 | |
| 687 | (31) 21-Mar-02 S Variables that indicate 8-bit message and 8-bit host, and |
| 688 | a way of using them to suppress a transport filter |
| 689 | |
| 690 | A variable that is set if the message contains 8-bit characters, and another |
| 691 | that is set during the smtp transport if the host supports 8-bit. Then we also |
| 692 | need a condition that's expanded in the transport to control whether the filter |
| 693 | is run or not (e.g. transport_filter_condition). |
| 694 | ------------------------------------------------------------------------------ |
| 695 | |
| 696 | (32) 22-Mar-02 M More info about callout fails for header sender verify |
| 697 | |
| 698 | When there's a callout failure for an envelope address, the error message |
| 699 | contains details (by default) of the callout commands. This doesn't happen |
| 700 | for addresses in the header because there may be more than one of them, and |
| 701 | deciding how to give that information is tricky. Can we do better? |
| 702 | ------------------------------------------------------------------------------ |
| 703 | |
| 704 | (33) 25-Mar-02 S Option to assume nomatch in dnslist lookups that time out |
| 705 | |
| 706 | Currently this causes a DEFER. |
| 707 | ------------------------------------------------------------------------------ |
| 708 | |
| 709 | (34) 26-Mar-02 S Access to DNS lookup functions via local_scan() API |
| 710 | |
| 711 | This would make local_scan() writers lives easier for DNS usage. |
| 712 | ------------------------------------------------------------------------------ |
| 713 | |
| 714 | (36) 02-Apr-02 ? A way of throttling, but allowing, relaying that would |
| 715 | otherwise be denied |
| 716 | |
| 717 | This was suggested in connection with anonymizing messages. The "wait" command |
| 718 | in ACLs goes some way towards this. Is it enough? |
| 719 | ------------------------------------------------------------------------------ |
| 720 | |
| 721 | (41) 17-Apr-02 T Make config.samples available as a directory for ftp |
| 722 | |
| 723 | This is so that people can browse individual samples directly. |
| 724 | ------------------------------------------------------------------------------ |
| 725 | |
| 726 | (42) 23-Apr-02 T An option not to flatten newlines in $message_body. |
| 727 | |
| 728 | Or maybe better to provide $message_body_nl so as to have both. |
| 729 | ------------------------------------------------------------------------------ |
| 730 | |
| 731 | (43) 23-Apr-02 T An option to treat 4xx as 5xx from STARTTLS |
| 732 | |
| 733 | This would make Exim retry in clear unless the host is in hosts_require_tls. |
| 734 | ------------------------------------------------------------------------------ |
| 735 | |
| 736 | (44) 24-Apr-02 ? Use errors_to for timeouts after redirect syntax errors |
| 737 | |
| 738 | A syntax error in redirection data (with skip_syntax_errors false) causes a |
| 739 | defer. Eventually, the address may time out. This suggestion is that, when it |
| 740 | does, the bounce is sent to errors_to rather than to the sender. |
| 741 | ------------------------------------------------------------------------------ |
| 742 | |
| 743 | (45) 13-May-02 T smtp_etrn_serialize_id = .... |
| 744 | |
| 745 | The default behaviour would be equivalent to |
| 746 | |
| 747 | smtp_etrn_serialize_id = $smtp_command_argument |
| 748 | ------------------------------------------------------------------------------ |
| 749 | |
| 750 | (47) 16-May-02 S Access to all addresses in batched local delivery |
| 751 | Miquel van Smoorenburg |
| 752 | |
| 753 | In a batched local delivery with more than one recipient, there's no way to |
| 754 | access the list of recipients for doing custom things, such as stuffing them |
| 755 | all into a header. (BSMTP is the only approach; not everybody can use it.) |
| 756 | Suggested patch supplied. |
| 757 | ------------------------------------------------------------------------------ |
| 758 | |
| 759 | (48) 21-May-02 M Support for ATRN (server and client) |
| 760 | Brian Candler |
| 761 | |
| 762 | Server: If Exim had the ability to accept an ATRN command and then simply |
| 763 | invoke an external program, passing the SMTP stream on stdin and stdout and |
| 764 | the authenticated id as a parameter, that would do the job nicely. |
| 765 | |
| 766 | Client: We need a variant of 'exim -bs' which would connect to a specified |
| 767 | host, send AUTH/ATRN, and then accept incoming messages as usual. |
| 768 | ------------------------------------------------------------------------------ |
| 769 | |
| 770 | (50) 22-May-02 T Add comment (duplicate address) to Envelope-To: |
| 771 | |
| 772 | This is just to minimize the confusion some people have. |
| 773 | ------------------------------------------------------------------------------ |
| 774 | |
| 775 | (51) 07-Jun-02 S Option to use another address in callout MAIL FROM |
| 776 | |
| 777 | This would be an address to try if MAIL FROM:<> failed. Is this actually going |
| 778 | to be helpful? See also 101. |
| 779 | ------------------------------------------------------------------------------ |
| 780 | |
| 781 | (53) 11-Jun-02 S Make local_scan() dynamically loadable |
| 782 | |
| 783 | David Woodhouse sent a patch. There's a more sophisticated one from Marc |
| 784 | Merlin. (See also Peter Benie's comments.) But should the base Exim have all |
| 785 | this in it? |
| 786 | ------------------------------------------------------------------------------ |
| 787 | |
| 788 | (54) 11-Jun-02 S Ignore -Ac if called as mailq |
| 789 | |
| 790 | I am not sure if this makes sense. This flag requests a listing of a different |
| 791 | mail queue, but Exim doesn't work like that. Is is not better for people to be |
| 792 | aware of this? |
| 793 | ------------------------------------------------------------------------------ |
| 794 | |
| 795 | (55) 13-Jun-02 M Rewriting whole header lines |
| 796 | Dave C. |
| 797 | |
| 798 | Current rewriting rules apply to individual addresses in header lines. This |
| 799 | feature would use a regex to match whole lines and replace them. It could be |
| 800 | useful for patching up syntactically invalid lines from crappy clients, before |
| 801 | the syntax check kicks in. (It might also be useful for hiding local host names |
| 802 | in Received: headers.) |
| 803 | ------------------------------------------------------------------------------ |
| 804 | |
| 805 | (58) 26-Jun-02 ? Extend PAM support |
| 806 | |
| 807 | Apparently PAM can do challenge-response authentication. The Exim interface |
| 808 | can't handle this. Investigate and think about how to do this. |
| 809 | ------------------------------------------------------------------------------ |
| 810 | |
| 811 | (59) 26-Jun-02 M A "custom" authenticator |
| 812 | |
| 813 | ... that is simply a front end to external code. For example, there may be |
| 814 | an external API that hides the user password and does CRAM-MD5 when passed the |
| 815 | details of the challenge and response. |
| 816 | ------------------------------------------------------------------------------ |
| 817 | |
| 818 | (60) 27-Jun-02 S Make trusted_users a local part list |
| 819 | |
| 820 | So that it can use lsearch etc. |
| 821 | ------------------------------------------------------------------------------ |
| 822 | |
| 823 | (62) 28-Jun-02 S Remove headers before DATA ACL |
| 824 | Patrice Fournier |
| 825 | |
| 826 | "I'd like to be able to give Exim a list of headers that must be removed |
| 827 | from the message at arrival, before data_acl processing (and before the |
| 828 | rcpt_acl warn headers are added to the message)." |
| 829 | ------------------------------------------------------------------------------ |
| 830 | |
| 831 | (63) 28-Jun-02 S Access to ACL-added headers in ACLs |
| 832 | Patrice Fournier |
| 833 | |
| 834 | "I'd like also to be able to look at the already added headers by a |
| 835 | rcpt_acl when still checking rcpt_acl (either later in the acl for the same |
| 836 | RCPT TO or for another RCPT TO)." |
| 837 | ------------------------------------------------------------------------------ |
| 838 | |
| 839 | (65) 28-Jun-02 M Expand fallback hosts |
| 840 | |
| 841 | See also 174 of the Exim 3 list. |
| 842 | ------------------------------------------------------------------------------ |
| 843 | |
| 844 | (66) 01-Jul-02 M Use Berkeley DB 4 concurrent access features |
| 845 | |
| 846 | This might give better performance on very busy sites by reducing the |
| 847 | contention for access to hints databases. Rob Butler points out that this could |
| 848 | also be useful to allow updates of other DB files used by Exim to happen |
| 849 | concurrently. Another thing to think about with BDB is the possible use of |
| 850 | B-trees. |
| 851 | ------------------------------------------------------------------------------ |
| 852 | |
| 853 | (68) 01-Jul-02 S Add sender host to delivery line |
| 854 | |
| 855 | "Would it be possible to have a "sending_host_on_delivery" option that |
| 856 | logs the IP of the sending host in the => line?" Also requested was amount of |
| 857 | data transmitted for a non-delivery attempt. |
| 858 | ------------------------------------------------------------------------------ |
| 859 | |
| 860 | (69) 03-Jul-02 T Log selector to log whoson checs |
| 861 | Matt Bernstein |
| 862 | |
| 863 | "I'd quite like a log_selector option which could spot you'd done a whoson |
| 864 | lookup in your DATA ACL and maybe log it as W=user." |
| 865 | ------------------------------------------------------------------------------ |
| 866 | |
| 867 | (70) 09-Jul-02 S A way of changing the RCPT address in an accept router |
| 868 | |
| 869 | So as to avoid duplication problems when sending multiple addresses in multiple |
| 870 | copies to the same address. |
| 871 | ------------------------------------------------------------------------------ |
| 872 | |
| 873 | (73) 17-Jul-02 M Match a list from within a condition |
| 874 | |
| 875 | e.g. ${if matchdomain {$domain}{+domainlist} ... |
| 876 | ${if matchhost {$sender_host_address}{1.2.3.4/10:2.3.4.5/16}... |
| 877 | |
| 878 | Thought needed about how to handle host names. This may be too messy to specify |
| 879 | cleanly. |
| 880 | |
| 881 | 22-Apr-04: Implemented for domains, addresses, and local parts. Hosts are |
| 882 | too messy! |
| 883 | ------------------------------------------------------------------------------ |
| 884 | |
| 885 | (74) 22-Jul-02 M Extend -bV to do more semantic checking |
| 886 | |
| 887 | For example, diagnose "local_hosts" that should probably be "+local_hosts". |
| 888 | ------------------------------------------------------------------------------ |
| 889 | |
| 890 | (75) 23-Jul-02 S Reference option on command line |
| 891 | |
| 892 | The idea here is that a spam scanner that re-injects a message can supply a |
| 893 | reference on the command line that gets logged with R=. |
| 894 | ------------------------------------------------------------------------------ |
| 895 | |
| 896 | (78) 30-Jul-02 S Expand queue_only (and/or queue_only_file) |
| 897 | |
| 898 | The requirement is to make it possible to queue messages if certain conditions |
| 899 | are met (e.g. messages from certain local users). See also 93. |
| 900 | |
| 901 | This control can now be achieved in the ACL - is this still needed? |
| 902 | ------------------------------------------------------------------------------ |
| 903 | |
| 904 | (79) 31-Jul-02 S Additional info for log lines |
| 905 | |
| 906 | An option to set an expanded string to be added to <= lines. And also for the |
| 907 | other delivery lines? See also 15. |
| 908 | ------------------------------------------------------------------------------ |
| 909 | |
| 910 | (84) 09-Aug-02 S Make interfaces available in a variable |
| 911 | |
| 912 | Something like $local_interfaces. Maybe limit the max length. |
| 913 | ------------------------------------------------------------------------------ |
| 914 | |
| 915 | (85) 12-Aug-02 S/M Notice database connection failures |
| 916 | |
| 917 | The small version of this just removes a server from the list within a single |
| 918 | Exim process when a connection to it fails. The bigger project would use the |
| 919 | retry database - but that has implications for bottlenecking and may not be |
| 920 | helpful. See also item 109. Another suggestion is to randomize the order in |
| 921 | which database servers are tried (randomize_database_servers). And another is |
| 922 | to measure response times and remember which server is fastest. |
| 923 | ------------------------------------------------------------------------------ |
| 924 | |
| 925 | (87) 12-Aug-02 M Partial lookups for query-style lookups |
| 926 | |
| 927 | The suggestion is to allow the lookup to contain a keystring (same syntax as |
| 928 | single-key lookups) which is then permuted and place in a suitable variable |
| 929 | each time - $permuted_key or something. |
| 930 | ------------------------------------------------------------------------------ |
| 931 | |
| 932 | (88) 20-Aug-02 S Allow special retrying for forced defer |
| 933 | |
| 934 | See also 146 in Exim 3 wish list above. |
| 935 | ------------------------------------------------------------------------------ |
| 936 | |
| 937 | (89) 20-Aug-02 S Also allow retry rules on routers and transports |
| 938 | ------------------------------------------------------------------------------ |
| 939 | |
| 940 | (90) 23-Aug-02 M Macros with arguments, a la C |
| 941 | |
| 942 | I don't like this, because of the cost of frequent interpretation. |
| 943 | ------------------------------------------------------------------------------ |
| 944 | |
| 945 | (93) 27-Aug-02 S queue_only_condition |
| 946 | Peter A. Savitch |
| 947 | |
| 948 | queue_only_condition global option, expanded string. This contain |
| 949 | condition, which if evaluated to `no' or `false' or `0', behaves like |
| 950 | queue_only (queue_only_load ?). Don't know what to do is the string |
| 951 | expansion fails with DEFER (either force queueing or continue with |
| 952 | immediate delivery). Another option can control Exim behaviour if the |
| 953 | expansion fails. Don't know how the name for it ;-) See also 78. |
| 954 | |
| 955 | This control can now be achieved in the ACL - is the new feature now needed? |
| 956 | ------------------------------------------------------------------------------ |
| 957 | |
| 958 | (95) 27-Aug-02 S Log all parents as a router option |
| 959 | |
| 960 | So that specific addresses can be logged like this. Should there be more log |
| 961 | selector options per router? Per transport? |
| 962 | ------------------------------------------------------------------------------ |
| 963 | |
| 964 | (99) 28-Aug-02 L Test pre-conditions in order given |
| 965 | |
| 966 | This would get round certain problems with require_files. However, it is |
| 967 | totally incompatible, and therefore an "Exim 5" wish. |
| 968 | ------------------------------------------------------------------------------ |
| 969 | |
| 970 | (101) 02-Oct-02 M Callout and <> rejections |
| 971 | |
| 972 | Some people don't want to fail the callout if the MAIL FROM:<> command is |
| 973 | rejected. Think of a way of handling this tidily. See also 51. |
| 974 | ------------------------------------------------------------------------------ |
| 975 | |
| 976 | (102) 03-Oct-02 M Log option to suppress message-id logging |
| 977 | |
| 978 | M because it would involve a change to eximstats. |
| 979 | ------------------------------------------------------------------------------ |
| 980 | |
| 981 | (106) 09-Oct-02 S Appendfile to create directory not as user |
| 982 | |
| 983 | Arrange for the setup entry to appendfile to create the directory under some |
| 984 | other uid (and with given owners/permissions?) |
| 985 | ------------------------------------------------------------------------------ |
| 986 | |
| 987 | (109) 15-Oct-02 M Remember when LDAP (etc) servers are down |
| 988 | |
| 989 | The idea would be to use some kind of retry rule, just like for hosts. |
| 990 | See also 85. |
| 991 | ------------------------------------------------------------------------------ |
| 992 | |
| 993 | (110) 18-Oct-02 M errors_to for pipe command in filter |
| 994 | |
| 995 | To work in the same was as errors_to for deliver commands. |
| 996 | ------------------------------------------------------------------------------ |
| 997 | |
| 998 | (113) 15-Nov-02 M support for XMLRPC |
| 999 | |
| 1000 | Patch supplied for 4.10 by Joel Vandal. |
| 1001 | ------------------------------------------------------------------------------ |
| 1002 | |
| 1003 | (114) 04-Dec-02 M local_scan: return message on accept |
| 1004 | |
| 1005 | (This actually dates from earlier.) The problem with this is that the string |
| 1006 | currently passes into $local_scan_data. Thus, an incompatible change of some |
| 1007 | sort would be required. Possibly a global that local_scan can set? |
| 1008 | ------------------------------------------------------------------------------ |
| 1009 | |
| 1010 | (118) 10-Dec-02 S access to Perl from local_scan |
| 1011 | ------------------------------------------------------------------------------ |
| 1012 | |
| 1013 | (119) 12-Dec-02 M ability to specify additional headers in an autoreply |
| 1014 | |
| 1015 | This is so that vacation messages etc can have MIME headers that specify, for |
| 1016 | example, the character set. |
| 1017 | ------------------------------------------------------------------------------ |
| 1018 | |
| 1019 | (125) 02-Jan-03 M Per-host daemon logging |
| 1020 | |
| 1021 | "So what I would like is an option like debug_hosts, that allows to specify |
| 1022 | an hostlist, and if the current incoming/outgoing hosts matches, creates a |
| 1023 | logfile like $hostname_(in|out).log in my logdirectory." |
| 1024 | ------------------------------------------------------------------------------ |
| 1025 | |
| 1026 | (127) 06-Jan-03 M Different messages for different callout failures |
| 1027 | |
| 1028 | The real requirement here is to detect when a callout "MAIL FROM:<>" failed, so |
| 1029 | that a specific warning about that can be sent, different to the message when a |
| 1030 | callout "RCPT TO:" fails. I think this is in fact now mostly done. |
| 1031 | ------------------------------------------------------------------------------ |
| 1032 | |
| 1033 | (129) 09-Jan-03 M Keep track of DNSBL timeouts, and refrain from calling |
| 1034 | |
| 1035 | If so configured, keep track of DNSBL timeouts in a hints record, and don't |
| 1036 | retry that DNSBL for a while after (a sufficient number of) timeouts. It is |
| 1037 | effectively disabled for a while. Log enable/disable, of course. Another |
| 1038 | thought is an option not to apply +defer_unknown unless *all* DNSBL lookups in |
| 1039 | a list defer. |
| 1040 | ------------------------------------------------------------------------------ |
| 1041 | |
| 1042 | (130) 09-Jan-03 M A number of LDAP-related things |
| 1043 | Peter A. Savitch |
| 1044 | |
| 1045 | OpenLDAP 2.1 is going to be more popular (2.1.9 is available with many |
| 1046 | bug fixes). TLS-enabled LDAP is an interesting and usefull thing. |
| 1047 | I can try to implement some things and send the patches, like with |
| 1048 | ldapi. |
| 1049 | |
| 1050 | How do You see: |
| 1051 | |
| 1052 | 1) The propagation of TLS options (key, certificate, CA certificate) |
| 1053 | to the OpenLDAP library. |
| 1054 | |
| 1055 | 2) (was dereferencing; done in 4.23). |
| 1056 | ------------------------------------------------------------------------------ |
| 1057 | |
| 1058 | (131) 09-Jan-03 S Additional variables |
| 1059 | Peter A. Savitch |
| 1060 | |
| 1061 | $root_uid Why? |
| 1062 | |
| 1063 | (Some that were previously here are done) |
| 1064 | |
| 1065 | $smtp_accept_count -- used for acl_smtp_connect |
| 1066 | |
| 1067 | $queue_runners -- children of the listening daemon could use this |
| 1068 | value for controlling the number of queue runners |
| 1069 | |
| 1070 | I don't like either of these because they cannot be real-time values. They |
| 1071 | would be snapshots of the values at the time the process was forked from the |
| 1072 | daemon, and I fear they would just be confusing. For processes that were not |
| 1073 | forked from the daemon they couldn't be set at all. |
| 1074 | ------------------------------------------------------------------------------ |
| 1075 | |
| 1076 | (131) 09-Jan-03 S Additional options |
| 1077 | Peter A. Savitch |
| 1078 | |
| 1079 | exim_processes_max |
| 1080 | exim_file_descriptors_max |
| 1081 | queue_run_condition -- to deprecate queue_run_max, better system |
| 1082 | load control |
| 1083 | |
| 1084 | Given Exim's distributed nature, I'm not at all sure how the first two of these |
| 1085 | can usefully be implemented. |
| 1086 | ------------------------------------------------------------------------------ |
| 1087 | |
| 1088 | (132) 16-Jan-03 M Option for when a transport filter fails (crashes) |
| 1089 | |
| 1090 | Freezing is one obvious option. Currently, Exim just retries. Another user |
| 1091 | wanted to retry without the filter, but that is much harder. |
| 1092 | ------------------------------------------------------------------------------ |
| 1093 | |
| 1094 | (136) 24-Jan-03 M Make "personal" available as a condition for use in routers |
| 1095 | ------------------------------------------------------------------------------ |
| 1096 | |
| 1097 | (138) 28-Jan-03 M A variable containing what was matched in a host list |
| 1098 | |
| 1099 | Or, presumably, other lists. This is so that ACL messages can say things like |
| 1100 | "your host name matches xxxx". Note: not the same as $domain_data. Also, this |
| 1101 | could be tricky with lookups and things that match in files. |
| 1102 | ------------------------------------------------------------------------------ |
| 1103 | |
| 1104 | (143) 06-Mar-03 L Ability to have multiple authenticators of same type |
| 1105 | |
| 1106 | For example, to have two PLAIN authenticators; if the first fails, try the |
| 1107 | second. |
| 1108 | ------------------------------------------------------------------------------ |
| 1109 | |
| 1110 | (144) 07-Mar-03 T ACL control = local_scan_skip to skip the local scan |
| 1111 | |
| 1112 | A bigger project would be control = local_scan <xxx> where xxx could select |
| 1113 | different local_scan functions (possibly by dynamic loading). |
| 1114 | |
| 1115 | This can now be simulated using the fact that ACL variables are preserved, |
| 1116 | so it doesn't look as it once did. |
| 1117 | ------------------------------------------------------------------------------ |
| 1118 | |
| 1119 | (145) 07-Mar-03 T Export string_cat() to local_scan() |
| 1120 | ------------------------------------------------------------------------------ |
| 1121 | |
| 1122 | (147) 17-Mar-03 T Option to treat 5xx as 4xx if received on initial connection |
| 1123 | |
| 1124 | This issue is controversial. That may be a good reason for not changing |
| 1125 | anything. |
| 1126 | ------------------------------------------------------------------------------ |
| 1127 | |
| 1128 | (153) 25-Apr-03 S A way of making log_as_local apply to the smtp transport |
| 1129 | |
| 1130 | Either an option on the transport, or log_remote_as_local for the router. |
| 1131 | Messy, either way. Maybe log_local_as_local and log_remote_as_local, and |
| 1132 | deprecate log_as_local? |
| 1133 | ------------------------------------------------------------------------------ |
| 1134 | |
| 1135 | (154) 01-May-03 M Teergrubing at the CR/LF level |
| 1136 | |
| 1137 | It is believed that the most effective way to teergrube is to insert a delay |
| 1138 | between transmitting CR and LF in the SMTP response. Furthermore, this is also |
| 1139 | the best place to test for bad synchronization (i.e. at the last possible |
| 1140 | time). |
| 1141 | ------------------------------------------------------------------------------ |
| 1142 | |
| 1143 | (155) 01-May-03 S "control=no_pipelining" for connect and EHLO ACLs |
| 1144 | |
| 1145 | Yet more flexibility! Maybe this should be a more general control for what is |
| 1146 | sent in response to EHLO. |
| 1147 | ------------------------------------------------------------------------------ |
| 1148 | |
| 1149 | (156) 06-May-02 M Finer-grained synchronisation checking |
| 1150 | |
| 1151 | On operating systems that can be asked whether any sent bytes have not yet been |
| 1152 | ACK'd at the TCP/IP level, a finer-grained check for proper synchronisation can |
| 1153 | be done. All bytes must have been ACK'd if the client has received the previous |
| 1154 | response before sending the next command. See also 293. |
| 1155 | ------------------------------------------------------------------------------ |
| 1156 | |
| 1157 | (157) 07-May-03 M Newline as a list item separator |
| 1158 | |
| 1159 | This will make life easier for lists obtained form databases where the |
| 1160 | separator is naturally a newline. |
| 1161 | ------------------------------------------------------------------------------ |
| 1162 | |
| 1163 | (158) 13-May-03 M Ability to add to OK message for SMTP commands |
| 1164 | |
| 1165 | For sending reasons for slow response, etc. |
| 1166 | ------------------------------------------------------------------------------ |
| 1167 | |
| 1168 | (160) 19-May-03 M Remove headers using wild cards |
| 1169 | ------------------------------------------------------------------------------ |
| 1170 | |
| 1171 | (162) 28-May-03 M/L Use of real numbers in filters, expansions, and options |
| 1172 | |
| 1173 | The motivation for this is for handling spam scores that are real numbers. The |
| 1174 | questions are (a) how widely should it spread and (b) whether floating point or |
| 1175 | fixed point representations should be used. And what about the eval operator? |
| 1176 | ------------------------------------------------------------------------------ |
| 1177 | |
| 1178 | (164) 02-Jun-03 S Set variables for interface and port in smtp transport |
| 1179 | |
| 1180 | These could be useful for varying HELO data etc. See also several other |
| 1181 | items about interfaces above. |
| 1182 | ------------------------------------------------------------------------------ |
| 1183 | |
| 1184 | (166) 18-Jun-03 S CN verification in client TLS code |
| 1185 | |
| 1186 | A tls_verify_cn option is suggested by Sven Geggus. |
| 1187 | ------------------------------------------------------------------------------ |
| 1188 | |
| 1189 | (168) 19-Jun-03 S Ability to add a header recording envelope rewrites |
| 1190 | |
| 1191 | Current code adds a deleted header with only some information. Maybe what is |
| 1192 | needed is a flag for a rewrite rule. |
| 1193 | ------------------------------------------------------------------------------ |
| 1194 | |
| 1195 | (169) 19-Jun-03 M A way of detecting timeouts in callout returns |
| 1196 | |
| 1197 | ------------------------------------------------------------------------------ |
| 1198 | |
| 1199 | (170) 23-Jun-03 S Option to accept rather than defer after local scan timeout |
| 1200 | |
| 1201 | Suggested patch supplied. |
| 1202 | ------------------------------------------------------------------------------ |
| 1203 | |
| 1204 | (171) 23-Jun-03 S Option to make timeout a soft failure on pipe transport |
| 1205 | |
| 1206 | ------------------------------------------------------------------------------ |
| 1207 | |
| 1208 | (172) 23-Jun-03 M Option to make SQL query to specific server |
| 1209 | |
| 1210 | ------------------------------------------------------------------------------ |
| 1211 | |
| 1212 | (175) 04-Jul-03 S show_all_ancestors_in_errmsg for the redirect router |
| 1213 | |
| 1214 | This is the opposite of hide_child_in_errmsg in effect. |
| 1215 | ------------------------------------------------------------------------------ |
| 1216 | |
| 1217 | (180) 14-Jul-03 M Extend never_users to be more flexible |
| 1218 | |
| 1219 | e.g. never_users = ! mailnull : ! cyrus : !mailman : 0-100 |
| 1220 | ------------------------------------------------------------------------------ |
| 1221 | |
| 1222 | (183) 16-Jul-03 S freeze_tell_text to add custom text to the message |
| 1223 | |
| 1224 | ------------------------------------------------------------------------------ |
| 1225 | |
| 1226 | (185) 24-Jul-03 S An expansion operator that decodes RFC 2047 strings |
| 1227 | |
| 1228 | ------------------------------------------------------------------------------ |
| 1229 | |
| 1230 | (188) 13-Aug-03 T batch_max=0 to mean unlimited |
| 1231 | |
| 1232 | ------------------------------------------------------------------------------ |
| 1233 | |
| 1234 | (189) 22-Aug-03 S Allow filter "logwrite" to write to syslog |
| 1235 | |
| 1236 | I feel this is a dangerous facility, and also of very minority interest, at |
| 1237 | least for user's filters. Allowing a system filter to write to mainlog or |
| 1238 | syslog may be different. However, writing the main log would only be possible |
| 1239 | if the filter runs as root or exim. |
| 1240 | ------------------------------------------------------------------------------ |
| 1241 | |
| 1242 | (190) 22-Aug-03 S A way of testing "forced delivery" in filter and routers |
| 1243 | ------------------------------------------------------------------------------ |
| 1244 | |
| 1245 | (191) 26-Aug-03 M Preserve $address_data for a verified recipient |
| 1246 | |
| 1247 | The idea is to preserve it in the recipients data structure so that local_scan |
| 1248 | can have access to it. The value could also be used as the initial value of |
| 1249 | $address_data while routing. |
| 1250 | ------------------------------------------------------------------------------ |
| 1251 | |
| 1252 | (192) 05-Sep-03 M Better handling of TXT records for dnslists |
| 1253 | |
| 1254 | When multiple lists are accessible via a merged lookup, handling TXT records |
| 1255 | is difficult. An option for doing the TXT lookup in a sub-list has been |
| 1256 | suggested, with syntax such as |
| 1257 | |
| 1258 | dnslists = list.example.org=127.0.0.2%dialups \ |
| 1259 | ,127.0.0.3%relays \ |
| 1260 | ,127.0.0.5%spews |
| 1261 | ------------------------------------------------------------------------------ |
| 1262 | |
| 1263 | (194) 10-Sep-03 M $addresslist_data to be like $host_data/$domain_data |
| 1264 | |
| 1265 | ------------------------------------------------------------------------------ |
| 1266 | |
| 1267 | (195) 29-Sep-03 M A variable containing the error for verify = header_syntax |
| 1268 | |
| 1269 | Maybe there should always be a variable with the error message for all the |
| 1270 | different kinds of verify failure. |
| 1271 | ------------------------------------------------------------------------------ |
| 1272 | |
| 1273 | (196) 30-Sep-03 S A way of detecting whether it was HELO or EHLO in the ACL |
| 1274 | |
| 1275 | $received_protocol isn't reset until after the command is accepted (which |
| 1276 | seems right), and $smtp_data shows only the arguments. Maybe $smtp_command? |
| 1277 | ------------------------------------------------------------------------------ |
| 1278 | |
| 1279 | (197) 30-Sep-03 S MACROS_DROP_PRIVS and ALT_CONFIG_DROP_PRIVS |
| 1280 | |
| 1281 | Now that alternative configurations can be restricted to certain directories, |
| 1282 | some more flexibility can be allowed. Not by default, though. |
| 1283 | ------------------------------------------------------------------------------ |
| 1284 | |
| 1285 | (198) 01-Oct-03 M Accept mail after local_scan() crash instead of defer |
| 1286 | |
| 1287 | This may not be as easy to implement as it sounds; one is never sure of the |
| 1288 | environment after a crash. Is is actually a good idea? The crashing local_scan |
| 1289 | may have wrecked the memory in arbitrary ways; for example, screwing up the |
| 1290 | recipients list... |
| 1291 | ------------------------------------------------------------------------------ |
| 1292 | |
| 1293 | (199) 01-Oct-03 M ${pipe which will pipe the message to a script ... |
| 1294 | |
| 1295 | ... and otherwise behave as ${run. Probably needs to have locking out features |
| 1296 | so that it can be turned off for users .forwards if the sysadmin so desires. |
| 1297 | ------------------------------------------------------------------------------ |
| 1298 | |
| 1299 | (200) 07-Oct-03 L Alternative ways of storing hints |
| 1300 | |
| 1301 | People want to store hints in databases. Some assert that SQL databases can |
| 1302 | be made to perform satisfactorily. If a general interface could be worked on, |
| 1303 | people could at least try different strategies. See also 66 above, which is |
| 1304 | specifically concerned with Berkeley DB. Another possible option is a switch to |
| 1305 | disable smtp-wait hints - to avoid contention problems. |
| 1306 | ------------------------------------------------------------------------------ |
| 1307 | |
| 1308 | (201) 07-Oct-03 M A "soft bounce" feature |
| 1309 | |
| 1310 | This is an option that turns all hard bounces into soft bounces. The idea is |
| 1311 | that it can be used as a safety-net while testing configurations. Instead of a |
| 1312 | local bounce, the message stays on the queue; instead of 5xx SMTP responses, |
| 1313 | 4xx ones are given. |
| 1314 | |
| 1315 | The ability to do the opposite - turn 4xx into 5xx under certain circumstances |
| 1316 | might also be useful (e.g. after a certain time). This might best be done by |
| 1317 | extending the retry logic to recognize 4xx as a special error. (This is now |
| 1318 | done.) |
| 1319 | ------------------------------------------------------------------------------ |
| 1320 | |
| 1321 | (202) 10-Oct-03 S -bvsomething to do a callout after the verify |
| 1322 | ------------------------------------------------------------------------------ |
| 1323 | |
| 1324 | (203) 14-Oct-03 S verify=something to easily check for header presence |
| 1325 | |
| 1326 | This is purely cosmetic; "condition" can already be used. |
| 1327 | ------------------------------------------------------------------------------ |
| 1328 | |
| 1329 | (204) 27-Oct-03 S an inverted queue_only_file |
| 1330 | |
| 1331 | That is, queue if a file does NOT exist. |
| 1332 | ------------------------------------------------------------------------------ |
| 1333 | |
| 1334 | (205) 27-Oct-03 S expand smtp_accept_queue_per_connection |
| 1335 | |
| 1336 | ------------------------------------------------------------------------------ |
| 1337 | |
| 1338 | (206) 27-Oct-03 S appendfile: a variable containing the maildir base name |
| 1339 | |
| 1340 | ------------------------------------------------------------------------------ |
| 1341 | |
| 1342 | (207) 29-Oct-03 S ability to keep trusted users in a file - expand it. |
| 1343 | ------------------------------------------------------------------------------ |
| 1344 | |
| 1345 | (208) 31-Oct-03 M cache temporary verification errors and fail after a time |
| 1346 | |
| 1347 | This request was for a way of turning temporary verification failures into |
| 1348 | permanent ones after some fixed time. |
| 1349 | ------------------------------------------------------------------------------ |
| 1350 | |
| 1351 | (209) 31-Oct-03 S a way of making crashes in pipe commands temporary errors |
| 1352 | |
| 1353 | ------------------------------------------------------------------------------ |
| 1354 | |
| 1355 | (210) 31-Oct-03 S runtime option to change the daemon name used for tcprwappers |
| 1356 | |
| 1357 | A patch for compile time was supplied, but this seems better as a runtime |
| 1358 | option, for use with multiple Exim daemons. |
| 1359 | ------------------------------------------------------------------------------ |
| 1360 | |
| 1361 | (211) 31-Oct-03 S ability to disable debugging output from -bh & -bhc |
| 1362 | ------------------------------------------------------------------------------ |
| 1363 | |
| 1364 | (212) 31-Oct-03 M specify headers lines in HELO ACL to be added to all msgs |
| 1365 | ------------------------------------------------------------------------------ |
| 1366 | |
| 1367 | (214) 05-Nov-03 S Put the wild part of local part prefix/suffx in variables |
| 1368 | |
| 1369 | Unfortunately, this isn't quite as trivial as it seems. |
| 1370 | ------------------------------------------------------------------------------ |
| 1371 | |
| 1372 | (215) 14-Nov-03 S A way of turning off message-submission fix-ups |
| 1373 | |
| 1374 | Globally, and perhaps also via an ACL control so that it can be done on a |
| 1375 | per-message basis. |
| 1376 | ------------------------------------------------------------------------------ |
| 1377 | |
| 1378 | (215) 26-Nov-03 M/L Conversion of IDNA domain names for logging |
| 1379 | |
| 1380 | IDNA (RFCs 3490-3492) converts domains names containing non-ASCII characters |
| 1381 | into ASCII strings of a special form. Exim will of course handle these. |
| 1382 | However, it might be nice to convert them to a local code for logging. This |
| 1383 | might be quite a big project: there's also output from -bp and eximon queue |
| 1384 | display and no doubt other places as well. (Utilities that process the logs, |
| 1385 | e.g. exigrep, eximstats, will be automatically handled if the logs are |
| 1386 | changed.) |
| 1387 | ------------------------------------------------------------------------------ |
| 1388 | |
| 1389 | (216) 27-Nov-03 S Option to bounce if required TLS doesn't happen |
| 1390 | |
| 1391 | This is for the smtp transport with hosts_require_tls set. Currently, it |
| 1392 | defers. Possibly the best approach is to make the error one that can be seen by |
| 1393 | the retry logic. |
| 1394 | ------------------------------------------------------------------------------ |
| 1395 | |
| 1396 | (217) 27-Nov-03 M A function to pass back variables from Perl |
| 1397 | |
| 1398 | This is a function that can be called from Perl, to take a name and a value and |
| 1399 | put that value into an Exim variable. |
| 1400 | ------------------------------------------------------------------------------ |
| 1401 | |
| 1402 | (218) 01-Dec-03 M A local_scan-like hook at system filter time |
| 1403 | |
| 1404 | That is, make a C API available for custom filtering at this point. |
| 1405 | ------------------------------------------------------------------------------ |
| 1406 | |
| 1407 | (221) 18-Dec-03 U Merge routers and ACLs - or at least make more similar |
| 1408 | |
| 1409 | "It will be very useful to be able to use most of the ACL conditions |
| 1410 | (authenticated, hosts, senders, sender_domains, ... ) in routers and also the |
| 1411 | possibility to have multiple conditions in routers. It will be great to also |
| 1412 | be able to set variables in routers like in acl's." This is effectively a |
| 1413 | radical suggestion for a complete re-design, and is therefore BIG. |
| 1414 | ------------------------------------------------------------------------------ |
| 1415 | |
| 1416 | (222) 19-Dec-03 S Iterative option for dnsdb |
| 1417 | |
| 1418 | A way of getting a dnsdb lookup to chop off components until something is |
| 1419 | found: e.g. ${lookup dndsb-i{ns=a.b.c.d}} would look for nameservers for |
| 1420 | a.b.c.d, then b.c.d, etc. |
| 1421 | ------------------------------------------------------------------------------ |
| 1422 | |
| 1423 | (223) 22-Dec-03 S Support SOA lookup in dnsdb lookups |
| 1424 | ------------------------------------------------------------------------------ |
| 1425 | |
| 1426 | (225) 22-Dec-03 M Add acl= to routers |
| 1427 | |
| 1428 | This would use an ACL to "control access" to a router, opening up a number |
| 1429 | of interesting possibilities. Details of possible limitations need to be |
| 1430 | investigated. |
| 1431 | ------------------------------------------------------------------------------ |
| 1432 | |
| 1433 | (226) 23-Dec-03 S A way of treating DEFER as fail in dnsdb lookups |
| 1434 | |
| 1435 | (i.e. the dnsdb lookup failed, so accept the message) |
| 1436 | ------------------------------------------------------------------------------ |
| 1437 | |
| 1438 | (227) 30-Jan-04 M A configuration .if facility |
| 1439 | |
| 1440 | "Second with the .ifdef and such, it would be nice to have a base .if, |
| 1441 | so I could do something like |
| 1442 | .if DEFINED_DATA == xyz |
| 1443 | configuration here |
| 1444 | .elseif DEFINED_DATA == abc |
| 1445 | configuration here |
| 1446 | .else |
| 1447 | configuration here |
| 1448 | .endif |
| 1449 | also this would be nice at least in my case in the system filters, but |
| 1450 | isn't required but you could pass the defined data to the system, in |
| 1451 | variables." |
| 1452 | ------------------------------------------------------------------------------ |
| 1453 | |
| 1454 | (229) 30-Jan-04 M New expansion mechanism: {list ...} |
| 1455 | |
| 1456 | "Proposed syntax: {list {separator}{item}{item}...} |
| 1457 | This first expands the contents of {separator} and all of the {item}s, |
| 1458 | then constructs a separator-delimited list. The twist is: if an {item} |
| 1459 | generates the empty string, no separator will be generated for it. |
| 1460 | The entire construct will fail is {separator} fails, or all {item}s |
| 1461 | fail. If just some {item}s fail, they will be treated as if they |
| 1462 | generated empty strings. |
| 1463 | Examples: |
| 1464 | {list {,}{aaaaaa}{bbbbbb}{cccccc}} -> aaaaaa,bbbbbb,cccccc |
| 1465 | {list {,}{:fail:}{bbbbbb}{cccccc}} -> bbbbbb,cccccc |
| 1466 | {list {,}{aaaaaa}{:fail:}{cccccc}} -> aaaaaa,cccccc |
| 1467 | {list { }{aaaaaa}{bbbbbb}{}} -> aaaaaa bbbbbb |
| 1468 | {list { }{:fail:}{:fail:}{:fail:}} -> :fail: |
| 1469 | {list {:fail:}{aaaaa}{bbbb}{cccc}} -> :fail: |
| 1470 | See particularly examples 2-4, which handle the case of a missing first |
| 1471 | and last item with ease; doing this using {if ...} would be quite difficult!" |
| 1472 | ------------------------------------------------------------------------------ |
| 1473 | |
| 1474 | (230) 30-Jan-04 M Find IP addresses of a domain's nameservers |
| 1475 | |
| 1476 | This needs some way of processing a list of things in a similar way, which |
| 1477 | should perhaps be a more general facility. |
| 1478 | ------------------------------------------------------------------------------ |
| 1479 | |
| 1480 | (231) 30-Jan-04 ? -C has a number of problems when used for real |
| 1481 | |
| 1482 | -C was intended for testing; people are using it for "alternate" |
| 1483 | configurations, and it doesn't work too well. Can a better way of doing this be |
| 1484 | invented? |
| 1485 | ------------------------------------------------------------------------------ |
| 1486 | |
| 1487 | (232) 02-Feb-04 ? Make parts of the code loadable |
| 1488 | |
| 1489 | The idea being that drivers, etc. could be compiled separately. There are, of |
| 1490 | course, security issues. This is not something I want to go into at present. |
| 1491 | ------------------------------------------------------------------------------ |
| 1492 | |
| 1493 | (235) 02-Feb-04 T Make smtp_accept_count available as a variable |
| 1494 | |
| 1495 | This is for use in ACLs. Of course, it is a snapshot of the count at the |
| 1496 | start of the receiving process. |
| 1497 | ------------------------------------------------------------------------------ |
| 1498 | |
| 1499 | (236) 02-Feb-04 S String in local_scan that's added to the binary version string |
| 1500 | ------------------------------------------------------------------------------ |
| 1501 | |
| 1502 | (237) 02-Feb-04 M Add_header in ACLs because "message" is overloaded |
| 1503 | |
| 1504 | This would be useful for verbs where "message" is an error message. |
| 1505 | ------------------------------------------------------------------------------ |
| 1506 | |
| 1507 | (238) 05-Feb-04 S ${address to handle multiple addresses |
| 1508 | |
| 1509 | At present, ${address expects to see just one address. An extension would let |
| 1510 | it handle header lines with multiple addresses, just retaining the actual |
| 1511 | addresses. Or perhaps a new operator is needed? |
| 1512 | ------------------------------------------------------------------------------ |
| 1513 | |
| 1514 | (239) 23-Feb-04 ? Expansion items for encryption/decryption |
| 1515 | |
| 1516 | Perhaps for some kind of cookie handling? This would need an external crypto |
| 1517 | library, because there's no crypto code in Exim itself. |
| 1518 | ------------------------------------------------------------------------------ |
| 1519 | |
| 1520 | (240) 23-Feb-04 ? Some way to know if a ip is a mx for a given domain |
| 1521 | |
| 1522 | Some kind of iterative operation for dnsdb might be a general way of providing |
| 1523 | this. |
| 1524 | ------------------------------------------------------------------------------ |
| 1525 | |
| 1526 | (242) 01-Mar-04 ? Run a filter from an expansion condition |
| 1527 | |
| 1528 | This would add a lot of power to ACLs, but its implementation might be tricky |
| 1529 | because of the possibility of recursion. |
| 1530 | ------------------------------------------------------------------------------ |
| 1531 | |
| 1532 | (243) 01-Mar-04 ? Run an ACL from an expansion condition |
| 1533 | |
| 1534 | The problem here is knowing what data is available at an arbitrary time. |
| 1535 | ------------------------------------------------------------------------------ |
| 1536 | |
| 1537 | (244) 01-Mar-04 ? Add an on-success event to transports |
| 1538 | |
| 1539 | This could just be an expansion string, whose value is either ignored or |
| 1540 | logged, but it could be used to run SQL updates or run programs etc. |
| 1541 | However, what is "success" when a transport has multiple recipients? |
| 1542 | ------------------------------------------------------------------------------ |
| 1543 | |
| 1544 | (245) 01-Mar-04 M Add all the string expansion conditions to filters |
| 1545 | |
| 1546 | Some thought would be needed on how to design the syntax for this. |
| 1547 | ------------------------------------------------------------------------------ |
| 1548 | |
| 1549 | (247) 09-Mar-04 S IP addresses that are never looked up |
| 1550 | |
| 1551 | It would be nice if we could prevent this for certain IP addresses for |
| 1552 | which we _know_ we'll never get a valid PTR record, like 2002::/16. |
| 1553 | So a new option might reasonably default to: |
| 1554 | |
| 1555 | hosts_never_lookup = <; 2002::/16 |
| 1556 | ------------------------------------------------------------------------------ |
| 1557 | |
| 1558 | (253) 05-Apr-04 M Use ESMTP and TLS for recipient callout verification |
| 1559 | |
| 1560 | The best way to do this would involve quite a bit of refactoring so as to |
| 1561 | abstract some of the code from the smtp transport into subroutines that could |
| 1562 | also be used from the callout code. The tls parameters should probably be |
| 1563 | taken from the transport. That might also require some substantial code |
| 1564 | refactoring. See also 294. |
| 1565 | ------------------------------------------------------------------------------ |
| 1566 | |
| 1567 | (260) 30-Apr-04 S Respect +tls_cipher +tls_peerdn in rejectlog entries |
| 1568 | |
| 1569 | ------------------------------------------------------------------------------ |
| 1570 | |
| 1571 | (261) 05-May-04 S Add a "required_version" option |
| 1572 | |
| 1573 | So that configurations can insist on a specific Exim version. |
| 1574 | ------------------------------------------------------------------------------ |
| 1575 | |
| 1576 | (262) 10-May-04 S Add "scratch" ACL variables |
| 1577 | |
| 1578 | The idea is for variables that are flushed at the start of each ACL. I'm not |
| 1579 | really convinced that these are worth implementing. |
| 1580 | ------------------------------------------------------------------------------ |
| 1581 | |
| 1582 | (263) 10-May-04 S Add variable $router_name $transport_name |
| 1583 | |
| 1584 | These could be used in debug_print settings, which are output during -bt, and |
| 1585 | thus don't need the privilege to run with -d. |
| 1586 | ------------------------------------------------------------------------------ |
| 1587 | |
| 1588 | (265) 25-May-04 M An init.d script for exim is needed |
| 1589 | |
| 1590 | The old sendmail script used to "just work" because it just did -bd -q 20m or |
| 1591 | whatever. Newer versions start more than one sendmail daemon, so do not work. |
| 1592 | ------------------------------------------------------------------------------ |
| 1593 | |
| 1594 | (267) 25-May-04 S tarpitting delay option |
| 1595 | |
| 1596 | A modifier that sets a delay between lines for multiline responses. |
| 1597 | ------------------------------------------------------------------------------ |
| 1598 | |
| 1599 | (268) 25-May-04 S? Add a PID to every log line |
| 1600 | |
| 1601 | Given that pids are reused non-cyclically these days, is this actually useful? |
| 1602 | ------------------------------------------------------------------------------ |
| 1603 | |
| 1604 | (269) 26-May-04 U Run both a system and a user filter in test mode |
| 1605 | |
| 1606 | exim -bF systemfilter -bf userfilter -f sender@dom < message |
| 1607 | |
| 1608 | This would allow testing the way the userfilter handles the system |
| 1609 | variables set by the systemfilter. |
| 1610 | ------------------------------------------------------------------------------ |
| 1611 | |
| 1612 | (270) 01-Jun-04 M Add headers at top and middle |
| 1613 | |
| 1614 | Various initiatives like SPF and DomainKeys require header lines to be added |
| 1615 | above or in the middle of existing headers. Exim always adds at the bottom. |
| 1616 | When these requirements are more standard and clearer, some way of controlling |
| 1617 | where header lines are added will probably become necessary. Some new syntax |
| 1618 | will be required. |
| 1619 | |
| 1620 | This can now be done fairly generally from local_scan(), and at the start and |
| 1621 | after the Received: block from an ACL. Is anything more needed? |
| 1622 | ------------------------------------------------------------------------------ |
| 1623 | |
| 1624 | (271) 02-Jun-04 L Callouts at routing time |
| 1625 | |
| 1626 | From a user's message: |
| 1627 | |
| 1628 | > I would like to be able to: |
| 1629 | >[...] |
| 1630 | > 2) Forcing callouts as address verification at router level |
| 1631 | > [ check_callout just like check_local_user ] |
| 1632 | > |
| 1633 | > I would like to redirect messages in some domain to "domain with callout |
| 1634 | > verification" and to "domain without callout verification" |
| 1635 | > |
| 1636 | > e.g. |
| 1637 | > userA@domain.in -> userX@doamin.out-verify (use callout to verify) |
| 1638 | > userB@domain.in -> userY@doamin.out-noverify (do not use callout verify) |
| 1639 | > |
| 1640 | > [both out-* domains delivered via "callout ready" transports] |
| 1641 | |
| 1642 | Other versions of the wish: |
| 1643 | * limiting callouts in acls to specific transport |
| 1644 | verify = recipient/callout=5s,transport:intranet_smtp |
| 1645 | * adding "select transport" to ACL conditions |
| 1646 | accept domains = +local_domains |
| 1647 | transport = cyrus_ltcp |
| 1648 | verify = recipient/callout=5s |
| 1649 | ------------------------------------------------------------------------------ |
| 1650 | |
| 1651 | (272) 07-Jun-04 S Expand hosts_randomize |
| 1652 | |
| 1653 | It occurs in manualroute and in smtp. |
| 1654 | ------------------------------------------------------------------------------ |
| 1655 | |
| 1656 | (278) 21-Jun-04 M quota_warn_message_file option |
| 1657 | |
| 1658 | Similar to the bounce and delivery warn message files. |
| 1659 | ------------------------------------------------------------------------------ |
| 1660 | |
| 1661 | (280) 23-Jun-04 M A way of adding a header line after callout defer_ok |
| 1662 | |
| 1663 | This would record that, e.g., a sender domain verified, but the callout |
| 1664 | could not be done. |
| 1665 | ------------------------------------------------------------------------------ |
| 1666 | |
| 1667 | (285) 16-Jul-04 M Separate and independent log_selector for rejectlog |
| 1668 | |
| 1669 | For example: mainlog_selector and rejectlog_selector, with log_selector setting |
| 1670 | both of them. |
| 1671 | ------------------------------------------------------------------------------ |
| 1672 | |
| 1673 | (286) 21-Jul-04 M Distinguishing a larger number of errors |
| 1674 | |
| 1675 | For instance, detecting "connection reset by peer" (ENETRESET or ECONNRESET) |
| 1676 | might be useful. |
| 1677 | ------------------------------------------------------------------------------ |
| 1678 | |
| 1679 | (288) 10-Aug-04 M Option for verify to require MX |
| 1680 | |
| 1681 | e.g. verify=sender/require_mx |
| 1682 | I'm not too keen because this is rather special purpose, and of course could |
| 1683 | only apply if the verification happened to hit a dnslookup router. |
| 1684 | ------------------------------------------------------------------------------ |
| 1685 | |
| 1686 | (289) 10-Aug-04 L Option to treat defers in database lookups as "not found" |
| 1687 | |
| 1688 | This is so that alternatives can be coded for when databases are down. A |
| 1689 | suggested patch has been sent, but it just catches all instances of "defer" |
| 1690 | from a lookup in an expansion string. These can occur for a number of different |
| 1691 | reasons, not just connection failures. I think that we need a specific |
| 1692 | "connection failed" indicator. Also, what about lookups in lists? |
| 1693 | ------------------------------------------------------------------------------ |
| 1694 | |
| 1695 | (291) 13-Aug-04 M An ACL or "local_scan()" to be run on size excession |
| 1696 | |
| 1697 | The idea is to give something a chance to look at the data so far received when |
| 1698 | more than message_size_limit (or some other limit) has arrived. I am not sure |
| 1699 | how useful this would actually be in practice. |
| 1700 | ------------------------------------------------------------------------------ |
| 1701 | |
| 1702 | (292) 13-Aug-04 M Overall timeout for message reception |
| 1703 | |
| 1704 | A client could in priciple keep an SMTP connection open for a very long time by |
| 1705 | trickling in data very slowly. Also, after message_size_limit is exceeded, Exim |
| 1706 | continues to swallow the data (though it does not write it to disk) until the |
| 1707 | end is reached. Again, the connection could be held open for a very long time. |
| 1708 | Some kind of overall time limit for an SMTP connection, possibly reset at the |
| 1709 | start of each message, might be helpful in these situations. |
| 1710 | ------------------------------------------------------------------------------ |
| 1711 | |
| 1712 | (294) 23-Aug-04 L Callouts and AUTH and LMTP |
| 1713 | |
| 1714 | People want to do callouts using LMTP as well as SMTP, and that would also |
| 1715 | include sockets as well as TCP/IP connections. Also, people want to make use of |
| 1716 | AUTH during the callout checking, on all types of connection. I suppose that |
| 1717 | means making TLS available as well. This probably means a rewrite of the code |
| 1718 | that actually does the callout. Should we use the relevant transport in a new |
| 1719 | "callout" mode instead of keeping things separate? See also 253. |
| 1720 | |
| 1721 | And here's another submitted idea: "My actual suggestion is that if this model |
| 1722 | is followed, the parent process doesn't have to stop the callout process if it |
| 1723 | is taking too long to respond: it can return 450 to the incoming connection |
| 1724 | within the 5 minute SMTP command timeout and leave the callout process to |
| 1725 | continue, in the hope that it will eventually get a result and store it in the |
| 1726 | callout cache in time for the sender's next attempt." |
| 1727 | ------------------------------------------------------------------------------ |
| 1728 | |
| 1729 | (296) 09-Sep-04 S Make deliver_time work for == lines as well as => |
| 1730 | |
| 1731 | What about ** lines? |
| 1732 | ------------------------------------------------------------------------------ |
| 1733 | |
| 1734 | (298) 25-Oct-04 S Debugging the daemon process only |
| 1735 | |
| 1736 | When there are daemon problems (e.g. it dies) it would be helpful to be able to |
| 1737 | turn on debugging that did not get passed on to any subprocesses. |
| 1738 | ------------------------------------------------------------------------------ |
| 1739 | |
| 1740 | (299) 25-Oct-04 S Options to make Sieve "keep" pass to next router |
| 1741 | |
| 1742 | Currently, "keep" saves in the mailbox. Probably need two options, for implicit |
| 1743 | and explicit keep commands. |
| 1744 | ------------------------------------------------------------------------------ |
| 1745 | |
| 1746 | (300) 25-Oct-04 S Option to lock out Sieve or Exim filter |
| 1747 | |
| 1748 | Currently, if allow_filter is set, either kind of filter is permitted. |
| 1749 | ------------------------------------------------------------------------------ |
| 1750 | |
| 1751 | (301) 27-Oct-04 M Use an "ACL" to filter logging |
| 1752 | |
| 1753 | This idea was for ACL syntax to be able to "accept" or "deny" individual log |
| 1754 | lines. This would make it possible to have, for example, per-host logging for |
| 1755 | certain things. See also 15 above. |
| 1756 | ------------------------------------------------------------------------------ |
| 1757 | |
| 1758 | (302) 28-Oct-04 M Expand pass_router and redirect_router |
| 1759 | |
| 1760 | Doing this would mean postponing the validity checks till the router was |
| 1761 | actually used instead of doing them at start up. It does not seem to be a |
| 1762 | facility that will be widely used. |
| 1763 | ------------------------------------------------------------------------------ |
| 1764 | |
| 1765 | (303) 28-Oct-04 M Support SQL relay |
| 1766 | |
| 1767 | This would make it easier for packagers to support "generic SQL" without having |
| 1768 | to choose which one. It can be slotted in using a MySQL interface without |
| 1769 | modifying Exim, but native support would be nice. |
| 1770 | ------------------------------------------------------------------------------ |
| 1771 | |
| 1772 | (304) 02-Nov-04 M A way of seeing the whole message in Perl or ${run |
| 1773 | |
| 1774 | At present, the headers are available in $message_headers, but only part of |
| 1775 | the body is visible. The only way to pass the whole body would be as a file |
| 1776 | descriptor because it can be very large. See also (42). |
| 1777 | ------------------------------------------------------------------------------ |
| 1778 | |
| 1779 | (305) 02-Nov-04 M A Perl transport |
| 1780 | |
| 1781 | The suggestion here is that an embedded Perl function takes responsibility for |
| 1782 | doing the delivery. I am not at all keen on this. One way of doing it would be |
| 1783 | to implement (244), which provides an "on success" string expansion. Then |
| 1784 | anyone who wants this could run that on a transport that does nothing. |
| 1785 | ------------------------------------------------------------------------------ |
| 1786 | --- HWM 305 ------------------------------------------------------------------ |
| 1787 | ---------------------------- End of WishList --------------------------------- |