xref: /csrg-svn/usr.sbin/sendmail/src/TODO (revision 66328)
1*66328Seric(Version 8.21 of 03/09/94)
233732Sbostic
364705SericKey:
464705Seric  X -- extension (user visible change)
564705Seric  B -- bug fix
664705Seric  S -- security fix
764705Seric  E -- enhancement to existing algorithm
857668Seric
965958SericB ****	CNAME loops cause message to be both queued and bounced.
1065958Seric	"Right" fix is to change dropenvelope et al to do one or
1165958Seric	the other, but could this cause other problems?
1265958Seric	Eric Hagberg <hagberg@med.cornell.edu>
1365958Seric
1464705SericX ****	8 -> 7 bit MIME conversion.
1557943Seric
1664705SericE ****	Change NoReturn to be an envelope flag. [8.7]
1758964Seric
1864705SericX ****	Add M_NOLOOPBACKCHK (k) mailer flag to turn off check of name in
1964705Seric	HELO command. [8.8]
2060606Seric
2164705SericX ****	Merge Sun changes.  [8.7]
2259609Seric
2365119SericX ****	Macro giving size of the message in bytes.
2465119Seric
2565188SericX ****	Create a "service switch" abstraction that will interface with
2665188Seric	Sun NSS, Ultrix /etc/svc.conf, etc.  This will allow you to
2765188Seric	turn off DNS entirely, a la ``OIoff''.  [8.7]
2864652Seric
2964718SericX ****	Should have new mailer flags to override LocalMailer stuff:
3064652Seric	- M_ALIASABLE (A) -- can use as the LHS of an alias.
3164652Seric	- M_HASPWENT (w) -- should have a /etc/passwd entry.  If not found
3264652Seric	  there, implies user unknown.  Also implies .forward and UDB
3364652Seric	  searching, search for |, /, and :include:, etc.).
3464652Seric	- Actually, UDB searching and |, /, and :include: mapping should
3564652Seric	  probably be on another flag.  (Cannot be 'l' for back compat
3664652Seric	  reasons.)
3764652Seric	- Need for $@host part of triple and Return-Receipt-To: processing
3864652Seric	  should also be split apart.
3964705Seric	[8.8]
4064652Seric
41*66328SericX ****	Mailer flag to enable/disable surrounding route-addrs with
42*66328Seric	angle brackets in setsender().  UUCP cleanup scripts treat
43*66328Seric	these as file redirection.
44*66328Seric
4565119SericX ****	Mailer flag to override MX lookups.
4665119Seric
4764755SericE ****	Fix parseaddr to return a dummy mailer with QBADADDR set for
4864755Seric	all cases except null input; change calls to be more sceptical
4964755Seric	about the return value, checking this bit instead of just
5064755Seric	checking for == NULL.  (Eric Wassenaar)  [8.7]
5164755Seric
5264799SericX ****	Run time configurable locking -- e.g., compile in HASFLOCK and
5364799Seric	HASLOCKF, and then choose at runtime between these.
5464799Seric
5565353SericB ****	Aliases with .REDIRECT fail during newaliases if the "n" flag
5665353Seric	is given.  Problem is, sometimes you want them to, sometimes
5765353Seric	you don't.  Perhaps two flavors of "error" mailer?
5865353Seric
5965353SericB ****	Calls to gethostbyname with a trailing dot fail if you are
6065353Seric	not running DNS.
6165353Seric
6265119SericE ****	Move delivery forking from sendenvelope to sendall so that
6365119Seric	the connection cache works between split envelopes, and to
6465119Seric	avoid a flurry of processes should you be sending to lots of
6565119Seric	sub-lists.
6665119Seric
6765119SericX ****	Add uucp-bang mailer that strips off any domain name from
6865119Seric	the envelope recipient address first; this is for use in
6965119Seric	mailer table entries.
7065119Seric
7165188SericX ****	"quote" map (inverse of dequote).  Lets you turn node::user
7265188Seric	into "node::user"@DECNET.gateway
7365188Seric
7465219SericX ****	Named rulesets.
7565219Seric
7666013Seric? ****	Should $( [1.2.3.4] $) convert the address to a name?
7766013Seric
7866013SericX ****	Let I option include retry count etc.
7966013Seric	drl@vuse.vanderbilt.edu (David R. Linn)
8066013Seric
8165869SericX ***	Extend I option to allow setting of retry and timeout values.
8265869Seric	drl@vuse.vanderbilt.edu (David R. Linn).
8365869Seric
8465753SericX ***	Total connection cache lifespan timeout -- a way to give a
8565753Seric	timeout on connections regardless of whether they are active
8665753Seric	or not.  For single threaded servers such as Microsoft SMTP
8765753Seric	gateway.  Douglas Anderson <dlander@afterlife.ncsc.mil>.
8865753Seric
8965188SericX ***	Mailer flag that does a "ping" equivalent -- if it fails, wait
9065188Seric	30 seconds and try again (for dialup PPP connections).  Could
9165188Seric	just try the connection and then immediately retry on some
9265188Seric	kinds of failures.
9365188Seric
9465119SericX ***	Create a macro that has message size.
9565119Seric	Peter Wemm <peter@DIALix.oz.au>
9665119Seric
9764718SericE ***	Dynamically allocate MAXNAME buffers for headers.
9864718Seric
9965119SericE ***	Dynamically allocate "line" buffer in readaliases().
10065119Seric
10164705SericX ***	Add ability to disable Return-Receipt-To: on a privacy flag. [8.8]
10264652Seric
10364718SericX ***	Add -P to set precedence (e.g., -Pbulk). [8.8]  (BCX)
10464652Seric
10564718SericX ***	Runtime option to enable/disable IDENT protocol.
10664718Seric
10764718SericE ***	Don't send ErrMsgFile to postmaster bounces.  (Josh Smith,
10864718Seric	josh@osiris.ac.hmc.edu).
10964718Seric
11064718SericX ***	Add "user" map to look up a user name via getpwnam -- so that
11164718Seric	non-local names can be forwarded to another site.  [8.8]
11264718Seric
11364799SericE ***	Have daemons that start up check the alias database for
11464799Seric	correctness and auto-rebuild if necessary.  This is to handle
11564799Seric	the case of a system crash during an alias database rebuild.
11664799Seric
11764799SericE ***	Eliminate E qf line and e_errorqueue; use e_errorsto a la
11864799Seric	e_receiptto.  This simplifies and gives symmetry.  (Eric
11964799Seric	Wassenaar)
12064799Seric
12165119SericB ***	Fix syslog buffer overflow problems.
12265119Seric
12365165SericX ***	DECNET_RELAY support in configs.
12465165Seric
12565753SericX ***	-wN command line flag to set the width of mailq output.
12665753Seric	(Allan Johannesen)
12765753Seric
128*66328SericE ***	Move mailertable lookup after UUCP-specific class checks?
129*66328Seric	(Kimmo Suominen <kim@tac.nyc.ny.us>)
130*66328Seric
131*66328SericE ***	Users in more than one list with different owners get duplicate
132*66328Seric	deliveries -- maybe just assign them arbitrarily to one
133*66328Seric	envelope or the other?
134*66328Seric
135*66328SericX **	Make MAXBADCOMMANDS run time configurable.
136*66328Seric
137*66328SericE **	Allow mailertable entries of the form ``error:message''.
138*66328Seric
139*66328SericX **	Have .forward files re-queue if the home directory isn't
140*66328Seric	accessible?  On some option...
141*66328Seric	(Q.G.Campbell@newcastle.ac.uk)
142*66328Seric
143*66328SericX **	Have local delivery queue if NIS is down?  On some option...
144*66328Seric	(Q.G.Campbell@newcastle.ac.uk)
145*66328Seric
146*66328SericE **	Have nullclient configuration resolve local names to the local
147*66328Seric	mailer and then redirect them in ruleset 5; this allows you to
148*66328Seric	redirect root differently depending on the client.  It's not
149*66328Seric	clear this is really a good idea though.
150*66328Seric
15166013SericE **	Move CurHostAddr into mci struct, and make CurMCI variable
15266013Seric	point to this, so that logging will give the correct address
15366013Seric	instead of (0) for cached connections.  Motonori Nakamura.
15466013Seric
15565907SericX **	Allow use of a generalized network service for aliasing?
15665907Seric	How would the protocol be defined?
15765907Seric	James Gritton <gritton@byu.edu>.
15865907Seric
15965555SericE **	Make "local configuration error" a temporary failure?
16065555Seric	(add EX_CONFIG to the markfailure list)
16165555Seric
16265353SericX **	(sigh) BSMTP.
16365353Seric
16465226SericX **	"E" configuration line that sets environment variables.
16565226Seric
16665219SericE **	Change listen() high-load backoff to accept and issue a 4xx
16765219Seric	message so that it responds more quickly.
16865219Seric
16965188SericE **	Change "/usr/tmp/dead.letter" to be based on _PATH_VARTMP.
17065188Seric
17165119SericB **	Commas in NAME envariable cause problems (Peter Wan
17265119Seric	<peter@cc.gatech.edu>).  Merge with suggestions to use
17365119Seric	MIME-format for 8-bit characters?
17465119Seric
17565119SericE **	Save address information that comes back as the "additional
17665119Seric	records" part of an MX lookup, to avoid additional name server
17765119Seric	attempts.  If there is an MX record without an additional A
17865119Seric	record, delete it (this avoids a problem with misconfigured
17965119Seric	DNS situations).
18065119Seric
18165119SericX **	Allow a way to extend the $Z macro with local configuration
18265119Seric	information.
18365119Seric
18464755SericX **	Allow $x in -bt mode to expand macro "x".  (BCX)  [8.8]
18564755Seric
18664755SericX **	Allow /address in -bt mode to expand address through ruleset 0,
18764755Seric	aliases, etc. and display results.  [8.8]
18864755Seric
18964755SericX **	"R mailer address" in -bt mode does remotename on address.
19064755Seric
19164755SericE **	Adjust "infinite loop in rule" code to handle entire ruleset
19264755Seric	(Code from Michael Corrigan).
19364755Seric
19464718SericE **	Allow :include: from command line (not SMTP) to assist in
19564718Seric	"personal list" management -- i.e., creating lists that
19664718Seric	cannot be EXPNed.
19764718Seric
19864718SericX **	Database (keyed lookup) auto-rebuild.
19964718Seric
20064705SericX **	Find a good test suite and include in the distribution.
20164652Seric
20264718SericS **	You can use symbolic links to point into protected directories.
20364718Seric	(AEJ)
20464652Seric
20564705SericX **	Extend OI to allow separate settings for canonification, MX, and A
20664718Seric	lookups.  [8.8?]
20764652Seric
20864718SericX **	Add $!x class to match any number of words not in class x. (KRE)
20964683Seric
21064705SericX **	LOCAL_RULE_5 (Spencer Sun, spencer@phoenix.Princeton.EDU)
21164703Seric
21264705SericX **	Add "bestmx" map -- returns "best MX host" for this address.
21364705Seric	Allows you to do automatic detection of when you are the best
21464705Seric	MX for a given address.  [8.7?]
21564703Seric
21665353SericX **	Some way to diddle resolver flags on a per-lookup basis, such
21765353Seric	as a flag to the map declaration.  (Rick McCarty)
21865353Seric	- Is this really a good idea?  DNSRCH can be turned off by
21965353Seric	  putting a dot at the end.  AAONLY?
22065353Seric
22164718SericX **	Extend makemap to "gather" values -- i.e., merge entries that
22264718Seric	have the same keys. [8.8]  (BCX)
22364703Seric
22464718SericE **	Allow error messages on individual addresses in the qf file.
22564718Seric	(BCX)
22664718Seric
22764718SericX **	Multi-character option names.  [9.1]
22864718Seric
22964718SericX **	User database extensions for mailing lists:
23064718Seric	list:precedence -- Precedence: value for new message
23164718Seric	list:envelopefrom -- envelope "from" value for new message
23264718Seric	others?  [8.8]
23364718Seric
23465353SericX **	Command line switch to set precedence (for mailing list
23565353Seric	generation).  (BCX)
23665353Seric
23764755SericB **	Restore `T' line to eliminate X-Authentication-Warning: at
23864755Seric	inappropriate times.  (Christophe Wolfhugel)
23964755Seric	- T could become a shorthand for Ct -- i.e., create a new
24064755Seric	  predefined class.
24164755Seric	- Eliminate "<user> set sender to <address>" message entirely?
24264755Seric	  (this is the workaround)
24364755Seric
24465119SericB **	Return-Path: header should have <> added if not already there.
24565119Seric
24665119SericX **	Add heuristic to determine if other end is a sendmail; use
24765119Seric	that to decide whether or not to honor F=I mailer flag.
24865119Seric	[der Mouse <mouse@collatz.mcrcim.mcgill.edu>]
24965119Seric
25065119SericX **	Automatically drop into MIME mode if you have a full name
25165119Seric	with 8-bit characters.  See envelope.c 8.19.1.1 and util.c
25265119Seric	8.17.1.1.  From Anders Ellefsrud <anders@ifi.uio.no>.
25365119Seric
25465119SericX **	-b? flag to read a header and show you what it will look like
25565119Seric	after all rewriting for an indicated address.
25665119Seric
25765188SericE **	Log $u in logsender() (for=<someaddress>).
25865188Seric
25965753SericB **	Include SOCKADDR in MCI struct for logging (currently gives
26065753Seric	a sockaddr of zero when printing from the cache).
26165753Seric
262*66328SericX **	Allow option to set the characters that are autoquoted in
263*66328Seric	addresses?
264*66328Seric
26565907SericX *	Map that does MB/MR lookups.  Rick McCarty <mccarty@io.com>.
26665907Seric
26765119SericX *	Allow $> anywhere in RHS.  John Boeske <jboeske@ualberta.ca>.
26865119Seric
26964755SericX *	-V flag to print state of all (?) compilation flags.
27064755Seric
27164718SericX *	Handle Expires: header field (if still in queue).
27264718Seric
27364705SericX *	WIN/3B support (non-atomic rename, no h_addr_list, others?)
27464705Seric	(Bruce Lilly <blilly!bruce@uu.psi.com>)
27564703Seric
27664705SericX *	Sun YBTS daemon uses -ba.  [Martin Kiff <MGK@newton.npl.co.uk>]
27764705Seric
27864705SericB *	EXPN adds @domain to all mailers, including prog.  Is this right?
27964705Seric	[Bob Henry]
28064705Seric
28164705SericB *	EXPN adds @localhost instead of @$M.  [Pel Emanuelsson]
28264705Seric
28364705SericE *	Change body put code to time out around individual puts.  This will
28464705Seric	make the timeout algorithm more responsive and more resilient.
28564705Seric	Unfortunately, it's also a pain in the butt.
28664705Seric
28764705SericX *	Some way to relay unfound local users to another site.
28864705Seric
28964705SericX *	Disable all default RW sets except mailer-specific?
290