xref: /csrg-svn/usr.sbin/sendmail/src/TODO (revision 66013)
1*66013Seric(Version 8.20 of 02/06/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
4165119SericX ****	Mailer flag to override MX lookups.
4265119Seric
4364755SericE ****	Fix parseaddr to return a dummy mailer with QBADADDR set for
4464755Seric	all cases except null input; change calls to be more sceptical
4564755Seric	about the return value, checking this bit instead of just
4664755Seric	checking for == NULL.  (Eric Wassenaar)  [8.7]
4764755Seric
4864799SericX ****	Run time configurable locking -- e.g., compile in HASFLOCK and
4964799Seric	HASLOCKF, and then choose at runtime between these.
5064799Seric
5165353SericB ****	Aliases with .REDIRECT fail during newaliases if the "n" flag
5265353Seric	is given.  Problem is, sometimes you want them to, sometimes
5365353Seric	you don't.  Perhaps two flavors of "error" mailer?
5465353Seric
5565353SericB ****	Calls to gethostbyname with a trailing dot fail if you are
5665353Seric	not running DNS.
5765353Seric
5865119SericE ****	Move delivery forking from sendenvelope to sendall so that
5965119Seric	the connection cache works between split envelopes, and to
6065119Seric	avoid a flurry of processes should you be sending to lots of
6165119Seric	sub-lists.
6265119Seric
6365119SericX ****	Add uucp-bang mailer that strips off any domain name from
6465119Seric	the envelope recipient address first; this is for use in
6565119Seric	mailer table entries.
6665119Seric
6765188SericX ****	"quote" map (inverse of dequote).  Lets you turn node::user
6865188Seric	into "node::user"@DECNET.gateway
6965188Seric
7065219SericX ****	Named rulesets.
7165219Seric
72*66013Seric? ****	Should $( [1.2.3.4] $) convert the address to a name?
73*66013Seric
74*66013SericX ****	Let I option include retry count etc.
75*66013Seric	drl@vuse.vanderbilt.edu (David R. Linn)
76*66013Seric
7765869SericX ***	Extend I option to allow setting of retry and timeout values.
7865869Seric	drl@vuse.vanderbilt.edu (David R. Linn).
7965869Seric
8065753SericX ***	Total connection cache lifespan timeout -- a way to give a
8165753Seric	timeout on connections regardless of whether they are active
8265753Seric	or not.  For single threaded servers such as Microsoft SMTP
8365753Seric	gateway.  Douglas Anderson <dlander@afterlife.ncsc.mil>.
8465753Seric
8565188SericX ***	Mailer flag that does a "ping" equivalent -- if it fails, wait
8665188Seric	30 seconds and try again (for dialup PPP connections).  Could
8765188Seric	just try the connection and then immediately retry on some
8865188Seric	kinds of failures.
8965188Seric
9065119SericX ***	Create a macro that has message size.
9165119Seric	Peter Wemm <peter@DIALix.oz.au>
9265119Seric
9364718SericE ***	Dynamically allocate MAXNAME buffers for headers.
9464718Seric
9565119SericE ***	Dynamically allocate "line" buffer in readaliases().
9665119Seric
9764705SericX ***	Add ability to disable Return-Receipt-To: on a privacy flag. [8.8]
9864652Seric
9964718SericX ***	Add -P to set precedence (e.g., -Pbulk). [8.8]  (BCX)
10064652Seric
10164718SericX ***	Runtime option to enable/disable IDENT protocol.
10264718Seric
10364718SericE ***	Don't send ErrMsgFile to postmaster bounces.  (Josh Smith,
10464718Seric	josh@osiris.ac.hmc.edu).
10564718Seric
10664718SericX ***	Add "user" map to look up a user name via getpwnam -- so that
10764718Seric	non-local names can be forwarded to another site.  [8.8]
10864718Seric
10964799SericE ***	Have daemons that start up check the alias database for
11064799Seric	correctness and auto-rebuild if necessary.  This is to handle
11164799Seric	the case of a system crash during an alias database rebuild.
11264799Seric
11364799SericE ***	Eliminate E qf line and e_errorqueue; use e_errorsto a la
11464799Seric	e_receiptto.  This simplifies and gives symmetry.  (Eric
11564799Seric	Wassenaar)
11664799Seric
11765119SericB ***	Fix syslog buffer overflow problems.
11865119Seric
11965165SericX ***	DECNET_RELAY support in configs.
12065165Seric
12165753SericX ***	-wN command line flag to set the width of mailq output.
12265753Seric	(Allan Johannesen)
12365753Seric
124*66013SericE **	Move CurHostAddr into mci struct, and make CurMCI variable
125*66013Seric	point to this, so that logging will give the correct address
126*66013Seric	instead of (0) for cached connections.  Motonori Nakamura.
127*66013Seric
12865907SericX **	Allow use of a generalized network service for aliasing?
12965907Seric	How would the protocol be defined?
13065907Seric	James Gritton <gritton@byu.edu>.
13165907Seric
13265555SericE **	Make "local configuration error" a temporary failure?
13365555Seric	(add EX_CONFIG to the markfailure list)
13465555Seric
13565353SericX **	(sigh) BSMTP.
13665353Seric
13765226SericX **	"E" configuration line that sets environment variables.
13865226Seric
13965219SericE **	Change listen() high-load backoff to accept and issue a 4xx
14065219Seric	message so that it responds more quickly.
14165219Seric
14265188SericE **	Change "/usr/tmp/dead.letter" to be based on _PATH_VARTMP.
14365188Seric
14465119SericB **	Commas in NAME envariable cause problems (Peter Wan
14565119Seric	<peter@cc.gatech.edu>).  Merge with suggestions to use
14665119Seric	MIME-format for 8-bit characters?
14765119Seric
14865119SericE **	Save address information that comes back as the "additional
14965119Seric	records" part of an MX lookup, to avoid additional name server
15065119Seric	attempts.  If there is an MX record without an additional A
15165119Seric	record, delete it (this avoids a problem with misconfigured
15265119Seric	DNS situations).
15365119Seric
15465119SericX **	Allow a way to extend the $Z macro with local configuration
15565119Seric	information.
15665119Seric
15764755SericX **	Allow $x in -bt mode to expand macro "x".  (BCX)  [8.8]
15864755Seric
15964755SericX **	Allow /address in -bt mode to expand address through ruleset 0,
16064755Seric	aliases, etc. and display results.  [8.8]
16164755Seric
16264755SericX **	"R mailer address" in -bt mode does remotename on address.
16364755Seric
16464755SericE **	Adjust "infinite loop in rule" code to handle entire ruleset
16564755Seric	(Code from Michael Corrigan).
16664755Seric
16764718SericE **	Allow :include: from command line (not SMTP) to assist in
16864718Seric	"personal list" management -- i.e., creating lists that
16964718Seric	cannot be EXPNed.
17064718Seric
17164718SericX **	Database (keyed lookup) auto-rebuild.
17264718Seric
17364705SericX **	Find a good test suite and include in the distribution.
17464652Seric
17564718SericS **	You can use symbolic links to point into protected directories.
17664718Seric	(AEJ)
17764652Seric
17864705SericX **	Extend OI to allow separate settings for canonification, MX, and A
17964718Seric	lookups.  [8.8?]
18064652Seric
18164718SericX **	Add $!x class to match any number of words not in class x. (KRE)
18264683Seric
18364705SericX **	LOCAL_RULE_5 (Spencer Sun, spencer@phoenix.Princeton.EDU)
18464703Seric
18564705SericX **	Add "bestmx" map -- returns "best MX host" for this address.
18664705Seric	Allows you to do automatic detection of when you are the best
18764705Seric	MX for a given address.  [8.7?]
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 **	Multi-character option names.  [9.1]
20164718Seric
20264718SericX **	User database extensions for mailing lists:
20364718Seric	list:precedence -- Precedence: value for new message
20464718Seric	list:envelopefrom -- envelope "from" value for new message
20564718Seric	others?  [8.8]
20664718Seric
20765353SericX **	Command line switch to set precedence (for mailing list
20865353Seric	generation).  (BCX)
20965353Seric
21064755SericB **	Restore `T' line to eliminate X-Authentication-Warning: at
21164755Seric	inappropriate times.  (Christophe Wolfhugel)
21264755Seric	- T could become a shorthand for Ct -- i.e., create a new
21364755Seric	  predefined class.
21464755Seric	- Eliminate "<user> set sender to <address>" message entirely?
21564755Seric	  (this is the workaround)
21664755Seric
21765119SericB **	Return-Path: header should have <> added if not already there.
21865119Seric
21965119SericX **	Add heuristic to determine if other end is a sendmail; use
22065119Seric	that to decide whether or not to honor F=I mailer flag.
22165119Seric	[der Mouse <mouse@collatz.mcrcim.mcgill.edu>]
22265119Seric
22365119SericX **	Automatically drop into MIME mode if you have a full name
22465119Seric	with 8-bit characters.  See envelope.c 8.19.1.1 and util.c
22565119Seric	8.17.1.1.  From Anders Ellefsrud <anders@ifi.uio.no>.
22665119Seric
22765119SericX **	-b? flag to read a header and show you what it will look like
22865119Seric	after all rewriting for an indicated address.
22965119Seric
23065188SericE **	Log $u in logsender() (for=<someaddress>).
23165188Seric
23265753SericB **	Include SOCKADDR in MCI struct for logging (currently gives
23365753Seric	a sockaddr of zero when printing from the cache).
23465753Seric
23565907SericX *	Map that does MB/MR lookups.  Rick McCarty <mccarty@io.com>.
23665907Seric
23765119SericX *	Allow $> anywhere in RHS.  John Boeske <jboeske@ualberta.ca>.
23865119Seric
23964755SericX *	-V flag to print state of all (?) compilation flags.
24064755Seric
24164718SericX *	Handle Expires: header field (if still in queue).
24264718Seric
24364705SericX *	WIN/3B support (non-atomic rename, no h_addr_list, others?)
24464705Seric	(Bruce Lilly <blilly!bruce@uu.psi.com>)
24564703Seric
24664705SericX *	Sun YBTS daemon uses -ba.  [Martin Kiff <MGK@newton.npl.co.uk>]
24764705Seric
24864705SericB *	EXPN adds @domain to all mailers, including prog.  Is this right?
24964705Seric	[Bob Henry]
25064705Seric
25164705SericB *	EXPN adds @localhost instead of @$M.  [Pel Emanuelsson]
25264705Seric
25364705SericE *	Change body put code to time out around individual puts.  This will
25464705Seric	make the timeout algorithm more responsive and more resilient.
25564705Seric	Unfortunately, it's also a pain in the butt.
25664705Seric
25764705SericX *	Some way to relay unfound local users to another site.
25864705Seric
25964705SericX *	Disable all default RW sets except mailer-specific?
260