xref: /csrg-svn/usr.sbin/sendmail/src/TODO (revision 68227)
1*68227Seric(Version 8.29 of 02/05/95)
233732Sbostic
364705SericKey:
464705Seric  X -- extension (user visible change)
564705Seric  B -- bug fix
664705Seric  S -- security fix
764705Seric  E -- enhancement to existing algorithm
857668Seric
965958Seric
1068089SericX ****	Multiple queues.
1168089Seric
1264705SericX ****	Merge Sun changes.  [8.7]
1359609Seric
1464755SericE ****	Fix parseaddr to return a dummy mailer with QBADADDR set for
1564755Seric	all cases except null input; change calls to be more sceptical
1664755Seric	about the return value, checking this bit instead of just
1764755Seric	checking for == NULL.  (Eric Wassenaar)  [8.7]
1864755Seric
1964799SericX ****	Run time configurable locking -- e.g., compile in HASFLOCK and
2064799Seric	HASLOCKF, and then choose at runtime between these.
2164799Seric
2265353SericB ****	Aliases with .REDIRECT fail during newaliases if the "n" flag
2365353Seric	is given.  Problem is, sometimes you want them to, sometimes
2465353Seric	you don't.  Perhaps two flavors of "error" mailer?
2565353Seric
2665353SericB ****	Calls to gethostbyname with a trailing dot fail if you are
2765353Seric	not running DNS.
2865353Seric
2965119SericX ****	Add uucp-bang mailer that strips off any domain name from
3065119Seric	the envelope recipient address first; this is for use in
3165119Seric	mailer table entries.
3265119Seric
3365188SericX ****	"quote" map (inverse of dequote).  Lets you turn node::user
3465188Seric	into "node::user"@DECNET.gateway
3565188Seric
3665219SericX ****	Named rulesets.
3765219Seric
3866013Seric? ****	Should $( [1.2.3.4] $) convert the address to a name?
3966013Seric
4068089SericE ***	Have recipient lines rewritten by the user database.
4168089Seric
4267420SericE ***	Arrange to run queue jobs as the owner of that queue file.  This
4367420Seric	probably requires forcing a fork in order to be able to completely
4467420Seric	restore the uid/gid portably without leaking out root privileges.
4567420Seric
4666337SericE ***	Long term host status -- store host status on disk for sharing
4766337Seric	between runs.
4866337Seric
4965869SericX ***	Extend I option to allow setting of retry and timeout values.
5065869Seric	drl@vuse.vanderbilt.edu (David R. Linn).
5165869Seric
5265753SericX ***	Total connection cache lifespan timeout -- a way to give a
5365753Seric	timeout on connections regardless of whether they are active
5465753Seric	or not.  For single threaded servers such as Microsoft SMTP
5565753Seric	gateway.  Douglas Anderson <dlander@afterlife.ncsc.mil>.
5665753Seric
5765188SericX ***	Mailer flag that does a "ping" equivalent -- if it fails, wait
5865188Seric	30 seconds and try again (for dialup PPP connections).  Could
5965188Seric	just try the connection and then immediately retry on some
6065188Seric	kinds of failures.
6165188Seric
6265119SericX ***	Create a macro that has message size.
6365119Seric	Peter Wemm <peter@DIALix.oz.au>
6465119Seric
6564718SericE ***	Dynamically allocate MAXNAME buffers for headers.
6664718Seric
6765119SericE ***	Dynamically allocate "line" buffer in readaliases().
6865119Seric
6964718SericX ***	Add -P to set precedence (e.g., -Pbulk). [8.8]  (BCX)
7064652Seric
7164718SericE ***	Don't send ErrMsgFile to postmaster bounces.  (Josh Smith,
7264718Seric	josh@osiris.ac.hmc.edu).
7364718Seric
7464799SericE ***	Have daemons that start up check the alias database for
7564799Seric	correctness and auto-rebuild if necessary.  This is to handle
7664799Seric	the case of a system crash during an alias database rebuild.
7764799Seric
7864799SericE ***	Eliminate E qf line and e_errorqueue; use e_errorsto a la
7964799Seric	e_receiptto.  This simplifies and gives symmetry.  (Eric
8064799Seric	Wassenaar)
8164799Seric
8265165SericX ***	DECNET_RELAY support in configs.
8365165Seric
8465753SericX ***	-wN command line flag to set the width of mailq output.
8565753Seric	(Allan Johannesen)
8665753Seric
8766328SericE ***	Move mailertable lookup after UUCP-specific class checks?
8866328Seric	(Kimmo Suominen <kim@tac.nyc.ny.us>)
8966328Seric
9066328SericE ***	Users in more than one list with different owners get duplicate
9166328Seric	deliveries -- maybe just assign them arbitrarily to one
9266328Seric	envelope or the other?
9366328Seric
94*68227SericX **	Have a ruleset (6?) that gets both sender and recipient
95*68227Seric	addresses to check compatibility.  Can you do enough interesting
96*68227Seric	things with this?
97*68227Seric
9866328SericX **	Make MAXBADCOMMANDS run time configurable.
9966328Seric
10066328SericE **	Allow mailertable entries of the form ``error:message''.
10166328Seric
10266328SericX **	Have .forward files re-queue if the home directory isn't
10366328Seric	accessible?  On some option...
10466328Seric	(Q.G.Campbell@newcastle.ac.uk)
10566328Seric
10666328SericX **	Have local delivery queue if NIS is down?  On some option...
10766328Seric	(Q.G.Campbell@newcastle.ac.uk)
10866328Seric
10966328SericE **	Have nullclient configuration resolve local names to the local
11066328Seric	mailer and then redirect them in ruleset 5; this allows you to
11166328Seric	redirect root differently depending on the client.  It's not
11266328Seric	clear this is really a good idea though.
11366328Seric
11466013SericE **	Move CurHostAddr into mci struct, and make CurMCI variable
11566013Seric	point to this, so that logging will give the correct address
11666013Seric	instead of (0) for cached connections.  Motonori Nakamura.
11766013Seric
11865907SericX **	Allow use of a generalized network service for aliasing?
11965907Seric	How would the protocol be defined?
12065907Seric	James Gritton <gritton@byu.edu>.
12165907Seric
12265555SericE **	Make "local configuration error" a temporary failure?
12365555Seric	(add EX_CONFIG to the markfailure list)
12465555Seric
12565353SericX **	(sigh) BSMTP.
12665353Seric
12765226SericX **	"E" configuration line that sets environment variables.
12865226Seric
12965219SericE **	Change listen() high-load backoff to accept and issue a 4xx
13065219Seric	message so that it responds more quickly.
13165219Seric
13265188SericE **	Change "/usr/tmp/dead.letter" to be based on _PATH_VARTMP.
13365188Seric
13465119SericB **	Commas in NAME envariable cause problems (Peter Wan
13565119Seric	<peter@cc.gatech.edu>).  Merge with suggestions to use
13665119Seric	MIME-format for 8-bit characters?
13765119Seric
13865119SericE **	Save address information that comes back as the "additional
13965119Seric	records" part of an MX lookup, to avoid additional name server
14065119Seric	attempts.  If there is an MX record without an additional A
14165119Seric	record, delete it (this avoids a problem with misconfigured
14265119Seric	DNS situations).
14365119Seric
14465119SericX **	Allow a way to extend the $Z macro with local configuration
14565119Seric	information.
14665119Seric
14764755SericX **	Allow $x in -bt mode to expand macro "x".  (BCX)  [8.8]
14864755Seric
14964755SericX **	Allow /address in -bt mode to expand address through ruleset 0,
15064755Seric	aliases, etc. and display results.  [8.8]
15164755Seric
15264755SericX **	"R mailer address" in -bt mode does remotename on address.
15364755Seric
15464755SericE **	Adjust "infinite loop in rule" code to handle entire ruleset
15564755Seric	(Code from Michael Corrigan).
15664755Seric
15764718SericE **	Allow :include: from command line (not SMTP) to assist in
15864718Seric	"personal list" management -- i.e., creating lists that
15964718Seric	cannot be EXPNed.
16064718Seric
16164718SericX **	Database (keyed lookup) auto-rebuild.
16264718Seric
16364705SericX **	Find a good test suite and include in the distribution.
16464652Seric
16564718SericS **	You can use symbolic links to point into protected directories.
16664718Seric	(AEJ)
16764652Seric
16864705SericX **	Extend OI to allow separate settings for canonification, MX, and A
16964718Seric	lookups.  [8.8?]
17064652Seric
17164718SericX **	Add $!x class to match any number of words not in class x. (KRE)
17264683Seric
17364705SericX **	LOCAL_RULE_5 (Spencer Sun, spencer@phoenix.Princeton.EDU)
17464703Seric
17564705SericX **	Add "bestmx" map -- returns "best MX host" for this address.
17664705Seric	Allows you to do automatic detection of when you are the best
17764705Seric	MX for a given address.  [8.7?]
17864703Seric
17965353SericX **	Some way to diddle resolver flags on a per-lookup basis, such
18065353Seric	as a flag to the map declaration.  (Rick McCarty)
18165353Seric	- Is this really a good idea?  DNSRCH can be turned off by
18265353Seric	  putting a dot at the end.  AAONLY?
18365353Seric
18464718SericX **	Extend makemap to "gather" values -- i.e., merge entries that
18564718Seric	have the same keys. [8.8]  (BCX)
18664703Seric
18764718SericE **	Allow error messages on individual addresses in the qf file.
18864718Seric	(BCX)
18964718Seric
19064718SericX **	Multi-character option names.  [9.1]
19164718Seric
19264718SericX **	User database extensions for mailing lists:
19364718Seric	list:precedence -- Precedence: value for new message
19464718Seric	list:envelopefrom -- envelope "from" value for new message
19564718Seric	others?  [8.8]
19664718Seric
19765353SericX **	Command line switch to set precedence (for mailing list
19865353Seric	generation).  (BCX)
19965353Seric
20064755SericB **	Restore `T' line to eliminate X-Authentication-Warning: at
20164755Seric	inappropriate times.  (Christophe Wolfhugel)
20264755Seric	- T could become a shorthand for Ct -- i.e., create a new
20364755Seric	  predefined class.
20464755Seric	- Eliminate "<user> set sender to <address>" message entirely?
20564755Seric	  (this is the workaround)
20664755Seric
20765119SericB **	Return-Path: header should have <> added if not already there.
20865119Seric
20965119SericX **	Add heuristic to determine if other end is a sendmail; use
21065119Seric	that to decide whether or not to honor F=I mailer flag.
21165119Seric	[der Mouse <mouse@collatz.mcrcim.mcgill.edu>]
21265119Seric
21365119SericX **	Automatically drop into MIME mode if you have a full name
21465119Seric	with 8-bit characters.  See envelope.c 8.19.1.1 and util.c
21565119Seric	8.17.1.1.  From Anders Ellefsrud <anders@ifi.uio.no>.
21665119Seric
21765119SericX **	-b? flag to read a header and show you what it will look like
21865119Seric	after all rewriting for an indicated address.
21965119Seric
22065188SericE **	Log $u in logsender() (for=<someaddress>).
22165188Seric
22265753SericB **	Include SOCKADDR in MCI struct for logging (currently gives
22365753Seric	a sockaddr of zero when printing from the cache).
22465753Seric
22566328SericX **	Allow option to set the characters that are autoquoted in
22666328Seric	addresses?
22766328Seric
22865907SericX *	Map that does MB/MR lookups.  Rick McCarty <mccarty@io.com>.
22965907Seric
23065119SericX *	Allow $> anywhere in RHS.  John Boeske <jboeske@ualberta.ca>.
23165119Seric
23264755SericX *	-V flag to print state of all (?) compilation flags.
23364755Seric
23464718SericX *	Handle Expires: header field (if still in queue).
23564718Seric
23664705SericX *	WIN/3B support (non-atomic rename, no h_addr_list, others?)
23764705Seric	(Bruce Lilly <blilly!bruce@uu.psi.com>)
23864703Seric
23964705SericX *	Sun YBTS daemon uses -ba.  [Martin Kiff <MGK@newton.npl.co.uk>]
24064705Seric
24164705SericB *	EXPN adds @domain to all mailers, including prog.  Is this right?
24264705Seric	[Bob Henry]
24364705Seric
24464705SericB *	EXPN adds @localhost instead of @$M.  [Pel Emanuelsson]
24564705Seric
24664705SericE *	Change body put code to time out around individual puts.  This will
24764705Seric	make the timeout algorithm more responsive and more resilient.
24864705Seric	Unfortunately, it's also a pain in the butt.
24964705Seric
25064705SericX *	Some way to relay unfound local users to another site.
25164705Seric
25264705SericX *	Disable all default RW sets except mailer-specific?
253