xref: /csrg-svn/usr.sbin/sendmail/src/TODO (revision 67420)
1*67420Seric(Version 8.23 of 06/17/94)
233732Sbostic
364705SericKey:
464705Seric  X -- extension (user visible change)
564705Seric  B -- bug fix
664705Seric  S -- security fix
764705Seric  E -- enhancement to existing algorithm
857668Seric
965958Seric
1064705SericX ****	8 -> 7 bit MIME conversion.
1157943Seric
1264705SericE ****	Change NoReturn to be an envelope flag. [8.7]
1358964Seric
1464705SericX ****	Add M_NOLOOPBACKCHK (k) mailer flag to turn off check of name in
1564705Seric	HELO command. [8.8]
1660606Seric
1764705SericX ****	Merge Sun changes.  [8.7]
1859609Seric
1965119SericX ****	Macro giving size of the message in bytes.
2065119Seric
2165188SericX ****	Create a "service switch" abstraction that will interface with
2265188Seric	Sun NSS, Ultrix /etc/svc.conf, etc.  This will allow you to
2365188Seric	turn off DNS entirely, a la ``OIoff''.  [8.7]
2464652Seric
2564718SericX ****	Should have new mailer flags to override LocalMailer stuff:
2664652Seric	- M_ALIASABLE (A) -- can use as the LHS of an alias.
2764652Seric	- M_HASPWENT (w) -- should have a /etc/passwd entry.  If not found
2864652Seric	  there, implies user unknown.  Also implies .forward and UDB
2964652Seric	  searching, search for |, /, and :include:, etc.).
3064652Seric	- Actually, UDB searching and |, /, and :include: mapping should
3164652Seric	  probably be on another flag.  (Cannot be 'l' for back compat
3264652Seric	  reasons.)
3364652Seric	- Need for $@host part of triple and Return-Receipt-To: processing
3464652Seric	  should also be split apart.
35*67420Seric	- M_RUNASRCPT (?) -- always setuid to the recipient before calling
36*67420Seric	  the mailer.
3764705Seric	[8.8]
3864652Seric
3966328SericX ****	Mailer flag to enable/disable surrounding route-addrs with
4066328Seric	angle brackets in setsender().  UUCP cleanup scripts treat
4166328Seric	these as file redirection.
4266328Seric
4365119SericX ****	Mailer flag to override MX lookups.
4465119Seric
4564755SericE ****	Fix parseaddr to return a dummy mailer with QBADADDR set for
4664755Seric	all cases except null input; change calls to be more sceptical
4764755Seric	about the return value, checking this bit instead of just
4864755Seric	checking for == NULL.  (Eric Wassenaar)  [8.7]
4964755Seric
5064799SericX ****	Run time configurable locking -- e.g., compile in HASFLOCK and
5164799Seric	HASLOCKF, and then choose at runtime between these.
5264799Seric
5365353SericB ****	Aliases with .REDIRECT fail during newaliases if the "n" flag
5465353Seric	is given.  Problem is, sometimes you want them to, sometimes
5565353Seric	you don't.  Perhaps two flavors of "error" mailer?
5665353Seric
5765353SericB ****	Calls to gethostbyname with a trailing dot fail if you are
5865353Seric	not running DNS.
5965353Seric
6065119SericE ****	Move delivery forking from sendenvelope to sendall so that
6165119Seric	the connection cache works between split envelopes, and to
6265119Seric	avoid a flurry of processes should you be sending to lots of
6365119Seric	sub-lists.
6465119Seric
6565119SericX ****	Add uucp-bang mailer that strips off any domain name from
6665119Seric	the envelope recipient address first; this is for use in
6765119Seric	mailer table entries.
6865119Seric
6965188SericX ****	"quote" map (inverse of dequote).  Lets you turn node::user
7065188Seric	into "node::user"@DECNET.gateway
7165188Seric
7265219SericX ****	Named rulesets.
7365219Seric
7466013Seric? ****	Should $( [1.2.3.4] $) convert the address to a name?
7566013Seric
7666337SericE ****	Change collect() handling to use high level timeouts instead
7766337Seric	of per-line timeouts -- the current mechanism is swamping
7866337Seric	the machine with system calls.  (Look at KJS code.)
7966013Seric
80*67420SericX ****	Add smrsh to release.
81*67420Seric
82*67420SericE ****	Have returned warning messages (and errors?) include a
83*67420Seric	``Precedence: automatic'' header to make them easier to filter.
84*67420Seric
85*67420SericE ***	Arrange to run queue jobs as the owner of that queue file.  This
86*67420Seric	probably requires forcing a fork in order to be able to completely
87*67420Seric	restore the uid/gid portably without leaking out root privileges.
88*67420Seric
8966337SericE ***	Long term host status -- store host status on disk for sharing
9066337Seric	between runs.
9166337Seric
9265869SericX ***	Extend I option to allow setting of retry and timeout values.
9365869Seric	drl@vuse.vanderbilt.edu (David R. Linn).
9465869Seric
9565753SericX ***	Total connection cache lifespan timeout -- a way to give a
9665753Seric	timeout on connections regardless of whether they are active
9765753Seric	or not.  For single threaded servers such as Microsoft SMTP
9865753Seric	gateway.  Douglas Anderson <dlander@afterlife.ncsc.mil>.
9965753Seric
10065188SericX ***	Mailer flag that does a "ping" equivalent -- if it fails, wait
10165188Seric	30 seconds and try again (for dialup PPP connections).  Could
10265188Seric	just try the connection and then immediately retry on some
10365188Seric	kinds of failures.
10465188Seric
10565119SericX ***	Create a macro that has message size.
10665119Seric	Peter Wemm <peter@DIALix.oz.au>
10765119Seric
10864718SericE ***	Dynamically allocate MAXNAME buffers for headers.
10964718Seric
11065119SericE ***	Dynamically allocate "line" buffer in readaliases().
11165119Seric
11264705SericX ***	Add ability to disable Return-Receipt-To: on a privacy flag. [8.8]
11364652Seric
11464718SericX ***	Add -P to set precedence (e.g., -Pbulk). [8.8]  (BCX)
11564652Seric
11664718SericX ***	Runtime option to enable/disable IDENT protocol.
11764718Seric
11864718SericE ***	Don't send ErrMsgFile to postmaster bounces.  (Josh Smith,
11964718Seric	josh@osiris.ac.hmc.edu).
12064718Seric
12164718SericX ***	Add "user" map to look up a user name via getpwnam -- so that
12264718Seric	non-local names can be forwarded to another site.  [8.8]
12364718Seric
12464799SericE ***	Have daemons that start up check the alias database for
12564799Seric	correctness and auto-rebuild if necessary.  This is to handle
12664799Seric	the case of a system crash during an alias database rebuild.
12764799Seric
12864799SericE ***	Eliminate E qf line and e_errorqueue; use e_errorsto a la
12964799Seric	e_receiptto.  This simplifies and gives symmetry.  (Eric
13064799Seric	Wassenaar)
13164799Seric
13265165SericX ***	DECNET_RELAY support in configs.
13365165Seric
13465753SericX ***	-wN command line flag to set the width of mailq output.
13565753Seric	(Allan Johannesen)
13665753Seric
13766328SericE ***	Move mailertable lookup after UUCP-specific class checks?
13866328Seric	(Kimmo Suominen <kim@tac.nyc.ny.us>)
13966328Seric
14066328SericE ***	Users in more than one list with different owners get duplicate
14166328Seric	deliveries -- maybe just assign them arbitrarily to one
14266328Seric	envelope or the other?
14366328Seric
14466328SericX **	Make MAXBADCOMMANDS run time configurable.
14566328Seric
14666328SericE **	Allow mailertable entries of the form ``error:message''.
14766328Seric
14866328SericX **	Have .forward files re-queue if the home directory isn't
14966328Seric	accessible?  On some option...
15066328Seric	(Q.G.Campbell@newcastle.ac.uk)
15166328Seric
15266328SericX **	Have local delivery queue if NIS is down?  On some option...
15366328Seric	(Q.G.Campbell@newcastle.ac.uk)
15466328Seric
15566328SericE **	Have nullclient configuration resolve local names to the local
15666328Seric	mailer and then redirect them in ruleset 5; this allows you to
15766328Seric	redirect root differently depending on the client.  It's not
15866328Seric	clear this is really a good idea though.
15966328Seric
16066013SericE **	Move CurHostAddr into mci struct, and make CurMCI variable
16166013Seric	point to this, so that logging will give the correct address
16266013Seric	instead of (0) for cached connections.  Motonori Nakamura.
16366013Seric
16465907SericX **	Allow use of a generalized network service for aliasing?
16565907Seric	How would the protocol be defined?
16665907Seric	James Gritton <gritton@byu.edu>.
16765907Seric
16865555SericE **	Make "local configuration error" a temporary failure?
16965555Seric	(add EX_CONFIG to the markfailure list)
17065555Seric
17165353SericX **	(sigh) BSMTP.
17265353Seric
17365226SericX **	"E" configuration line that sets environment variables.
17465226Seric
17565219SericE **	Change listen() high-load backoff to accept and issue a 4xx
17665219Seric	message so that it responds more quickly.
17765219Seric
17865188SericE **	Change "/usr/tmp/dead.letter" to be based on _PATH_VARTMP.
17965188Seric
18065119SericB **	Commas in NAME envariable cause problems (Peter Wan
18165119Seric	<peter@cc.gatech.edu>).  Merge with suggestions to use
18265119Seric	MIME-format for 8-bit characters?
18365119Seric
18465119SericE **	Save address information that comes back as the "additional
18565119Seric	records" part of an MX lookup, to avoid additional name server
18665119Seric	attempts.  If there is an MX record without an additional A
18765119Seric	record, delete it (this avoids a problem with misconfigured
18865119Seric	DNS situations).
18965119Seric
19065119SericX **	Allow a way to extend the $Z macro with local configuration
19165119Seric	information.
19265119Seric
19364755SericX **	Allow $x in -bt mode to expand macro "x".  (BCX)  [8.8]
19464755Seric
19564755SericX **	Allow /address in -bt mode to expand address through ruleset 0,
19664755Seric	aliases, etc. and display results.  [8.8]
19764755Seric
19864755SericX **	"R mailer address" in -bt mode does remotename on address.
19964755Seric
20064755SericE **	Adjust "infinite loop in rule" code to handle entire ruleset
20164755Seric	(Code from Michael Corrigan).
20264755Seric
20364718SericE **	Allow :include: from command line (not SMTP) to assist in
20464718Seric	"personal list" management -- i.e., creating lists that
20564718Seric	cannot be EXPNed.
20664718Seric
20764718SericX **	Database (keyed lookup) auto-rebuild.
20864718Seric
20964705SericX **	Find a good test suite and include in the distribution.
21064652Seric
21164718SericS **	You can use symbolic links to point into protected directories.
21264718Seric	(AEJ)
21364652Seric
21464705SericX **	Extend OI to allow separate settings for canonification, MX, and A
21564718Seric	lookups.  [8.8?]
21664652Seric
21764718SericX **	Add $!x class to match any number of words not in class x. (KRE)
21864683Seric
21964705SericX **	LOCAL_RULE_5 (Spencer Sun, spencer@phoenix.Princeton.EDU)
22064703Seric
22164705SericX **	Add "bestmx" map -- returns "best MX host" for this address.
22264705Seric	Allows you to do automatic detection of when you are the best
22364705Seric	MX for a given address.  [8.7?]
22464703Seric
22565353SericX **	Some way to diddle resolver flags on a per-lookup basis, such
22665353Seric	as a flag to the map declaration.  (Rick McCarty)
22765353Seric	- Is this really a good idea?  DNSRCH can be turned off by
22865353Seric	  putting a dot at the end.  AAONLY?
22965353Seric
23064718SericX **	Extend makemap to "gather" values -- i.e., merge entries that
23164718Seric	have the same keys. [8.8]  (BCX)
23264703Seric
23364718SericE **	Allow error messages on individual addresses in the qf file.
23464718Seric	(BCX)
23564718Seric
23664718SericX **	Multi-character option names.  [9.1]
23764718Seric
23864718SericX **	User database extensions for mailing lists:
23964718Seric	list:precedence -- Precedence: value for new message
24064718Seric	list:envelopefrom -- envelope "from" value for new message
24164718Seric	others?  [8.8]
24264718Seric
24365353SericX **	Command line switch to set precedence (for mailing list
24465353Seric	generation).  (BCX)
24565353Seric
24664755SericB **	Restore `T' line to eliminate X-Authentication-Warning: at
24764755Seric	inappropriate times.  (Christophe Wolfhugel)
24864755Seric	- T could become a shorthand for Ct -- i.e., create a new
24964755Seric	  predefined class.
25064755Seric	- Eliminate "<user> set sender to <address>" message entirely?
25164755Seric	  (this is the workaround)
25264755Seric
25365119SericB **	Return-Path: header should have <> added if not already there.
25465119Seric
25565119SericX **	Add heuristic to determine if other end is a sendmail; use
25665119Seric	that to decide whether or not to honor F=I mailer flag.
25765119Seric	[der Mouse <mouse@collatz.mcrcim.mcgill.edu>]
25865119Seric
25965119SericX **	Automatically drop into MIME mode if you have a full name
26065119Seric	with 8-bit characters.  See envelope.c 8.19.1.1 and util.c
26165119Seric	8.17.1.1.  From Anders Ellefsrud <anders@ifi.uio.no>.
26265119Seric
26365119SericX **	-b? flag to read a header and show you what it will look like
26465119Seric	after all rewriting for an indicated address.
26565119Seric
26665188SericE **	Log $u in logsender() (for=<someaddress>).
26765188Seric
26865753SericB **	Include SOCKADDR in MCI struct for logging (currently gives
26965753Seric	a sockaddr of zero when printing from the cache).
27065753Seric
27166328SericX **	Allow option to set the characters that are autoquoted in
27266328Seric	addresses?
27366328Seric
27465907SericX *	Map that does MB/MR lookups.  Rick McCarty <mccarty@io.com>.
27565907Seric
27665119SericX *	Allow $> anywhere in RHS.  John Boeske <jboeske@ualberta.ca>.
27765119Seric
27864755SericX *	-V flag to print state of all (?) compilation flags.
27964755Seric
28064718SericX *	Handle Expires: header field (if still in queue).
28164718Seric
28264705SericX *	WIN/3B support (non-atomic rename, no h_addr_list, others?)
28364705Seric	(Bruce Lilly <blilly!bruce@uu.psi.com>)
28464703Seric
28564705SericX *	Sun YBTS daemon uses -ba.  [Martin Kiff <MGK@newton.npl.co.uk>]
28664705Seric
28764705SericB *	EXPN adds @domain to all mailers, including prog.  Is this right?
28864705Seric	[Bob Henry]
28964705Seric
29064705SericB *	EXPN adds @localhost instead of @$M.  [Pel Emanuelsson]
29164705Seric
29264705SericE *	Change body put code to time out around individual puts.  This will
29364705Seric	make the timeout algorithm more responsive and more resilient.
29464705Seric	Unfortunately, it's also a pain in the butt.
29564705Seric
29664705SericX *	Some way to relay unfound local users to another site.
29764705Seric
29864705SericX *	Disable all default RW sets except mailer-specific?
299