xref: /csrg-svn/usr.sbin/sendmail/src/TODO (revision 68838)
1*68838Seric(Version 8.37 of 04/21/95)
233732Sbostic
3*68838Seric==============================================================================
4*68838SericFor Release 8.7:
5*68838Seric  - better DSN error codes throughout code
6*68838Seric  - getcanonname needs to be in service switch?
7*68838Seric  - another pass through Sun changes
8*68838Seric  - another pass through documentation
9*68838Seric==============================================================================
10*68838Seric
1164705SericKey:
1264705Seric  X -- extension (user visible change)
1364705Seric  B -- bug fix
1464705Seric  S -- security fix
1564705Seric  E -- enhancement to existing algorithm
1657668Seric
1765958Seric
1868089SericX ****	Multiple queues.
1968089Seric
2064705SericX ****	Merge Sun changes.  [8.7]
2159609Seric
2264755SericE ****	Fix parseaddr to return a dummy mailer with QBADADDR set for
2364755Seric	all cases except null input; change calls to be more sceptical
2464755Seric	about the return value, checking this bit instead of just
2564755Seric	checking for == NULL.  (Eric Wassenaar)  [8.7]
2664755Seric
2764799SericX ****	Run time configurable locking -- e.g., compile in HASFLOCK and
2864799Seric	HASLOCKF, and then choose at runtime between these.
2964799Seric
3065353SericB ****	Aliases with .REDIRECT fail during newaliases if the "n" flag
3165353Seric	is given.  Problem is, sometimes you want them to, sometimes
3265353Seric	you don't.  Perhaps two flavors of "error" mailer?
3365353Seric
3465353SericB ****	Calls to gethostbyname with a trailing dot fail if you are
3565353Seric	not running DNS.
3665353Seric
3765119SericX ****	Add uucp-bang mailer that strips off any domain name from
3865119Seric	the envelope recipient address first; this is for use in
3965119Seric	mailer table entries.
4065119Seric
4165188SericX ****	"quote" map (inverse of dequote).  Lets you turn node::user
4265188Seric	into "node::user"@DECNET.gateway
4365188Seric
4468527SericE ****	Change userdb code to use underlying maps, at least for
4568527Seric	:mailname; this lets people use NIS to supply generics
4668527Seric	information.  (Or should the generics code just be broken
4768527Seric	out into the config file?)
4868527Seric
4966013Seric? ****	Should $( [1.2.3.4] $) convert the address to a name?
5066013Seric
51*68838SericX ***	Multiple queue runners.
52*68838Seric
5368089SericE ***	Have recipient lines rewritten by the user database.
5468089Seric
5567420SericE ***	Arrange to run queue jobs as the owner of that queue file.  This
5667420Seric	probably requires forcing a fork in order to be able to completely
5767420Seric	restore the uid/gid portably without leaking out root privileges.
5867420Seric
5966337SericE ***	Long term host status -- store host status on disk for sharing
6066337Seric	between runs.
6166337Seric
6265869SericX ***	Extend I option to allow setting of retry and timeout values.
6365869Seric	drl@vuse.vanderbilt.edu (David R. Linn).
6465869Seric
6565753SericX ***	Total connection cache lifespan timeout -- a way to give a
6665753Seric	timeout on connections regardless of whether they are active
6765753Seric	or not.  For single threaded servers such as Microsoft SMTP
6865753Seric	gateway.  Douglas Anderson <dlander@afterlife.ncsc.mil>.
6965753Seric
7065119SericX ***	Create a macro that has message size.
7165119Seric	Peter Wemm <peter@DIALix.oz.au>
7265119Seric
7364718SericE ***	Dynamically allocate MAXNAME buffers for headers.
7464718Seric
7565119SericE ***	Dynamically allocate "line" buffer in readaliases().
7665119Seric
7764718SericX ***	Add -P to set precedence (e.g., -Pbulk). [8.8]  (BCX)
7864652Seric
7964718SericE ***	Don't send ErrMsgFile to postmaster bounces.  (Josh Smith,
8064718Seric	josh@osiris.ac.hmc.edu).
8164718Seric
8264799SericE ***	Have daemons that start up check the alias database for
8364799Seric	correctness and auto-rebuild if necessary.  This is to handle
8464799Seric	the case of a system crash during an alias database rebuild.
8564799Seric
8664799SericE ***	Eliminate E qf line and e_errorqueue; use e_errorsto a la
8764799Seric	e_receiptto.  This simplifies and gives symmetry.  (Eric
8864799Seric	Wassenaar)
8964799Seric
9065165SericX ***	DECNET_RELAY support in configs.
9165165Seric
9265753SericX ***	-wN command line flag to set the width of mailq output.
9365753Seric	(Allan Johannesen)
9465753Seric
9566328SericE ***	Move mailertable lookup after UUCP-specific class checks?
9666328Seric	(Kimmo Suominen <kim@tac.nyc.ny.us>)
9766328Seric
9866328SericE ***	Users in more than one list with different owners get duplicate
9966328Seric	deliveries -- maybe just assign them arbitrarily to one
10066328Seric	envelope or the other?
10166328Seric
10268401SericE ***	Mailer flag to turn off MX lookups.
10368401Seric
104*68838SericE **	If you get a connection from a host for which you have queued
105*68838Seric	mail, deliver everything to that host.  Intended for dialup SLIP
106*68838Seric	style connections.
107*68838Seric
10868527SericX **	Rewriting rules based on incoming mailer.
10968527Seric
11068227SericX **	Have a ruleset (6?) that gets both sender and recipient
11168227Seric	addresses to check compatibility.  Can you do enough interesting
11268227Seric	things with this?
11368227Seric
11466328SericX **	Make MAXBADCOMMANDS run time configurable.
11566328Seric
11666328SericE **	Allow mailertable entries of the form ``error:message''.
11766328Seric
11866328SericX **	Have .forward files re-queue if the home directory isn't
11966328Seric	accessible?  On some option...
12066328Seric	(Q.G.Campbell@newcastle.ac.uk)
12166328Seric
12266328SericX **	Have local delivery queue if NIS is down?  On some option...
12366328Seric	(Q.G.Campbell@newcastle.ac.uk)
12466328Seric
12566328SericE **	Have nullclient configuration resolve local names to the local
12666328Seric	mailer and then redirect them in ruleset 5; this allows you to
12766328Seric	redirect root differently depending on the client.  It's not
12866328Seric	clear this is really a good idea though.
12966328Seric
13066013SericE **	Move CurHostAddr into mci struct, and make CurMCI variable
13166013Seric	point to this, so that logging will give the correct address
13266013Seric	instead of (0) for cached connections.  Motonori Nakamura.
13366013Seric
13465907SericX **	Allow use of a generalized network service for aliasing?
13565907Seric	How would the protocol be defined?
13665907Seric	James Gritton <gritton@byu.edu>.
13765907Seric
13865555SericE **	Make "local configuration error" a temporary failure?
13965555Seric	(add EX_CONFIG to the markfailure list)
14065555Seric
14165353SericX **	(sigh) BSMTP.
14265353Seric
14365226SericX **	"E" configuration line that sets environment variables.
14465226Seric
14565219SericE **	Change listen() high-load backoff to accept and issue a 4xx
14665219Seric	message so that it responds more quickly.
14765219Seric
14865119SericB **	Commas in NAME envariable cause problems (Peter Wan
14965119Seric	<peter@cc.gatech.edu>).  Merge with suggestions to use
15065119Seric	MIME-format for 8-bit characters?
15165119Seric
15265119SericE **	Save address information that comes back as the "additional
15365119Seric	records" part of an MX lookup, to avoid additional name server
15465119Seric	attempts.  If there is an MX record without an additional A
15565119Seric	record, delete it (this avoids a problem with misconfigured
15665119Seric	DNS situations).
15765119Seric
15865119SericX **	Allow a way to extend the $Z macro with local configuration
15965119Seric	information.
16065119Seric
16164755SericX **	Allow $x in -bt mode to expand macro "x".  (BCX)  [8.8]
16264755Seric
16364755SericX **	Allow /address in -bt mode to expand address through ruleset 0,
16464755Seric	aliases, etc. and display results.  [8.8]
16564755Seric
16664755SericX **	"R mailer address" in -bt mode does remotename on address.
16764755Seric
16864755SericE **	Adjust "infinite loop in rule" code to handle entire ruleset
16964755Seric	(Code from Michael Corrigan).
17064755Seric
17164718SericE **	Allow :include: from command line (not SMTP) to assist in
17264718Seric	"personal list" management -- i.e., creating lists that
17364718Seric	cannot be EXPNed.
17464718Seric
17564718SericX **	Database (keyed lookup) auto-rebuild.
17664718Seric
17764705SericX **	Find a good test suite and include in the distribution.
17864652Seric
17964718SericS **	You can use symbolic links to point into protected directories.
18064718Seric	(AEJ)
18164652Seric
18264705SericX **	Extend OI to allow separate settings for canonification, MX, and A
18364718Seric	lookups.  [8.8?]
18464652Seric
18564718SericX **	Add $!x class to match any number of words not in class x. (KRE)
18664683Seric
18764705SericX **	LOCAL_RULE_5 (Spencer Sun, spencer@phoenix.Princeton.EDU)
18864703Seric
18965353SericX **	Some way to diddle resolver flags on a per-lookup basis, such
19065353Seric	as a flag to the map declaration.  (Rick McCarty)
19165353Seric	- Is this really a good idea?  DNSRCH can be turned off by
19265353Seric	  putting a dot at the end.  AAONLY?
19365353Seric
19464718SericX **	Extend makemap to "gather" values -- i.e., merge entries that
19564718Seric	have the same keys. [8.8]  (BCX)
19664703Seric
19764718SericE **	Allow error messages on individual addresses in the qf file.
19864718Seric	(BCX)
19964718Seric
20064718SericX **	User database extensions for mailing lists:
20164718Seric	list:precedence -- Precedence: value for new message
20264718Seric	list:envelopefrom -- envelope "from" value for new message
20364718Seric	others?  [8.8]
20464718Seric
20565353SericX **	Command line switch to set precedence (for mailing list
20665353Seric	generation).  (BCX)
20765353Seric
20865119SericB **	Return-Path: header should have <> added if not already there.
20965119Seric
21065119SericX **	Add heuristic to determine if other end is a sendmail; use
21165119Seric	that to decide whether or not to honor F=I mailer flag.
21265119Seric	[der Mouse <mouse@collatz.mcrcim.mcgill.edu>]
21365119Seric
21465119SericX **	Automatically drop into MIME mode if you have a full name
21565119Seric	with 8-bit characters.  See envelope.c 8.19.1.1 and util.c
21665119Seric	8.17.1.1.  From Anders Ellefsrud <anders@ifi.uio.no>.
21765119Seric
21865119SericX **	-b? flag to read a header and show you what it will look like
21965119Seric	after all rewriting for an indicated address.
22065119Seric
22165188SericE **	Log $u in logsender() (for=<someaddress>).
22265188Seric
22365753SericB **	Include SOCKADDR in MCI struct for logging (currently gives
22465753Seric	a sockaddr of zero when printing from the cache).
22565753Seric
22666328SericX **	Allow option to set the characters that are autoquoted in
22766328Seric	addresses?
22866328Seric
229*68838SericX **	Substring map class.
230*68838Seric
23165907SericX *	Map that does MB/MR lookups.  Rick McCarty <mccarty@io.com>.
23265907Seric
23365119SericX *	Allow $> anywhere in RHS.  John Boeske <jboeske@ualberta.ca>.
23465119Seric
23564755SericX *	-V flag to print state of all (?) compilation flags.
23664755Seric
23764718SericX *	Handle Expires: header field (if still in queue).
23864718Seric
23964705SericX *	WIN/3B support (non-atomic rename, no h_addr_list, others?)
24064705Seric	(Bruce Lilly <blilly!bruce@uu.psi.com>)
24164703Seric
24264705SericX *	Sun YBTS daemon uses -ba.  [Martin Kiff <MGK@newton.npl.co.uk>]
24364705Seric
24464705SericB *	EXPN adds @domain to all mailers, including prog.  Is this right?
24564705Seric	[Bob Henry]
24664705Seric
24764705SericB *	EXPN adds @localhost instead of @$M.  [Pel Emanuelsson]
24864705Seric
24964705SericE *	Change body put code to time out around individual puts.  This will
25064705Seric	make the timeout algorithm more responsive and more resilient.
25164705Seric	Unfortunately, it's also a pain in the butt.
25264705Seric
25364705SericX *	Some way to relay unfound local users to another site.
25464705Seric
25564705SericX *	Disable all default RW sets except mailer-specific?
25668240Seric
25768240Seric
25868240Seric-------------------------------------------------------------------------------
25968240Seric
26068240SericIDA Features that have been requested:
26168240Seric
26268240Seric* USERMAILER
26368240Seric
26468240Seric* LOCAL_MX_HANDLER
26568527Seric
26668527Seric* NIS_MAILHOST
26768527Seric
26868527Seric* GENERICFROM
269