xref: /csrg-svn/usr.sbin/sendmail/src/TODO (revision 66337)
1*66337Seric(Version 8.22 of 03/12/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.
3564705Seric	[8.8]
3664652Seric
3766328SericX ****	Mailer flag to enable/disable surrounding route-addrs with
3866328Seric	angle brackets in setsender().  UUCP cleanup scripts treat
3966328Seric	these as file redirection.
4066328Seric
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
7266013Seric? ****	Should $( [1.2.3.4] $) convert the address to a name?
7366013Seric
74*66337SericE ****	Change collect() handling to use high level timeouts instead
75*66337Seric	of per-line timeouts -- the current mechanism is swamping
76*66337Seric	the machine with system calls.  (Look at KJS code.)
7766013Seric
78*66337SericE ***	Long term host status -- store host status on disk for sharing
79*66337Seric	between runs.
80*66337Seric
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
12165165SericX ***	DECNET_RELAY support in configs.
12265165Seric
12365753SericX ***	-wN command line flag to set the width of mailq output.
12465753Seric	(Allan Johannesen)
12565753Seric
12666328SericE ***	Move mailertable lookup after UUCP-specific class checks?
12766328Seric	(Kimmo Suominen <kim@tac.nyc.ny.us>)
12866328Seric
12966328SericE ***	Users in more than one list with different owners get duplicate
13066328Seric	deliveries -- maybe just assign them arbitrarily to one
13166328Seric	envelope or the other?
13266328Seric
13366328SericX **	Make MAXBADCOMMANDS run time configurable.
13466328Seric
13566328SericE **	Allow mailertable entries of the form ``error:message''.
13666328Seric
13766328SericX **	Have .forward files re-queue if the home directory isn't
13866328Seric	accessible?  On some option...
13966328Seric	(Q.G.Campbell@newcastle.ac.uk)
14066328Seric
14166328SericX **	Have local delivery queue if NIS is down?  On some option...
14266328Seric	(Q.G.Campbell@newcastle.ac.uk)
14366328Seric
14466328SericE **	Have nullclient configuration resolve local names to the local
14566328Seric	mailer and then redirect them in ruleset 5; this allows you to
14666328Seric	redirect root differently depending on the client.  It's not
14766328Seric	clear this is really a good idea though.
14866328Seric
14966013SericE **	Move CurHostAddr into mci struct, and make CurMCI variable
15066013Seric	point to this, so that logging will give the correct address
15166013Seric	instead of (0) for cached connections.  Motonori Nakamura.
15266013Seric
15365907SericX **	Allow use of a generalized network service for aliasing?
15465907Seric	How would the protocol be defined?
15565907Seric	James Gritton <gritton@byu.edu>.
15665907Seric
15765555SericE **	Make "local configuration error" a temporary failure?
15865555Seric	(add EX_CONFIG to the markfailure list)
15965555Seric
16065353SericX **	(sigh) BSMTP.
16165353Seric
16265226SericX **	"E" configuration line that sets environment variables.
16365226Seric
16465219SericE **	Change listen() high-load backoff to accept and issue a 4xx
16565219Seric	message so that it responds more quickly.
16665219Seric
16765188SericE **	Change "/usr/tmp/dead.letter" to be based on _PATH_VARTMP.
16865188Seric
16965119SericB **	Commas in NAME envariable cause problems (Peter Wan
17065119Seric	<peter@cc.gatech.edu>).  Merge with suggestions to use
17165119Seric	MIME-format for 8-bit characters?
17265119Seric
17365119SericE **	Save address information that comes back as the "additional
17465119Seric	records" part of an MX lookup, to avoid additional name server
17565119Seric	attempts.  If there is an MX record without an additional A
17665119Seric	record, delete it (this avoids a problem with misconfigured
17765119Seric	DNS situations).
17865119Seric
17965119SericX **	Allow a way to extend the $Z macro with local configuration
18065119Seric	information.
18165119Seric
18264755SericX **	Allow $x in -bt mode to expand macro "x".  (BCX)  [8.8]
18364755Seric
18464755SericX **	Allow /address in -bt mode to expand address through ruleset 0,
18564755Seric	aliases, etc. and display results.  [8.8]
18664755Seric
18764755SericX **	"R mailer address" in -bt mode does remotename on address.
18864755Seric
18964755SericE **	Adjust "infinite loop in rule" code to handle entire ruleset
19064755Seric	(Code from Michael Corrigan).
19164755Seric
19264718SericE **	Allow :include: from command line (not SMTP) to assist in
19364718Seric	"personal list" management -- i.e., creating lists that
19464718Seric	cannot be EXPNed.
19564718Seric
19664718SericX **	Database (keyed lookup) auto-rebuild.
19764718Seric
19864705SericX **	Find a good test suite and include in the distribution.
19964652Seric
20064718SericS **	You can use symbolic links to point into protected directories.
20164718Seric	(AEJ)
20264652Seric
20364705SericX **	Extend OI to allow separate settings for canonification, MX, and A
20464718Seric	lookups.  [8.8?]
20564652Seric
20664718SericX **	Add $!x class to match any number of words not in class x. (KRE)
20764683Seric
20864705SericX **	LOCAL_RULE_5 (Spencer Sun, spencer@phoenix.Princeton.EDU)
20964703Seric
21064705SericX **	Add "bestmx" map -- returns "best MX host" for this address.
21164705Seric	Allows you to do automatic detection of when you are the best
21264705Seric	MX for a given address.  [8.7?]
21364703Seric
21465353SericX **	Some way to diddle resolver flags on a per-lookup basis, such
21565353Seric	as a flag to the map declaration.  (Rick McCarty)
21665353Seric	- Is this really a good idea?  DNSRCH can be turned off by
21765353Seric	  putting a dot at the end.  AAONLY?
21865353Seric
21964718SericX **	Extend makemap to "gather" values -- i.e., merge entries that
22064718Seric	have the same keys. [8.8]  (BCX)
22164703Seric
22264718SericE **	Allow error messages on individual addresses in the qf file.
22364718Seric	(BCX)
22464718Seric
22564718SericX **	Multi-character option names.  [9.1]
22664718Seric
22764718SericX **	User database extensions for mailing lists:
22864718Seric	list:precedence -- Precedence: value for new message
22964718Seric	list:envelopefrom -- envelope "from" value for new message
23064718Seric	others?  [8.8]
23164718Seric
23265353SericX **	Command line switch to set precedence (for mailing list
23365353Seric	generation).  (BCX)
23465353Seric
23564755SericB **	Restore `T' line to eliminate X-Authentication-Warning: at
23664755Seric	inappropriate times.  (Christophe Wolfhugel)
23764755Seric	- T could become a shorthand for Ct -- i.e., create a new
23864755Seric	  predefined class.
23964755Seric	- Eliminate "<user> set sender to <address>" message entirely?
24064755Seric	  (this is the workaround)
24164755Seric
24265119SericB **	Return-Path: header should have <> added if not already there.
24365119Seric
24465119SericX **	Add heuristic to determine if other end is a sendmail; use
24565119Seric	that to decide whether or not to honor F=I mailer flag.
24665119Seric	[der Mouse <mouse@collatz.mcrcim.mcgill.edu>]
24765119Seric
24865119SericX **	Automatically drop into MIME mode if you have a full name
24965119Seric	with 8-bit characters.  See envelope.c 8.19.1.1 and util.c
25065119Seric	8.17.1.1.  From Anders Ellefsrud <anders@ifi.uio.no>.
25165119Seric
25265119SericX **	-b? flag to read a header and show you what it will look like
25365119Seric	after all rewriting for an indicated address.
25465119Seric
25565188SericE **	Log $u in logsender() (for=<someaddress>).
25665188Seric
25765753SericB **	Include SOCKADDR in MCI struct for logging (currently gives
25865753Seric	a sockaddr of zero when printing from the cache).
25965753Seric
26066328SericX **	Allow option to set the characters that are autoquoted in
26166328Seric	addresses?
26266328Seric
26365907SericX *	Map that does MB/MR lookups.  Rick McCarty <mccarty@io.com>.
26465907Seric
26565119SericX *	Allow $> anywhere in RHS.  John Boeske <jboeske@ualberta.ca>.
26665119Seric
26764755SericX *	-V flag to print state of all (?) compilation flags.
26864755Seric
26964718SericX *	Handle Expires: header field (if still in queue).
27064718Seric
27164705SericX *	WIN/3B support (non-atomic rename, no h_addr_list, others?)
27264705Seric	(Bruce Lilly <blilly!bruce@uu.psi.com>)
27364703Seric
27464705SericX *	Sun YBTS daemon uses -ba.  [Martin Kiff <MGK@newton.npl.co.uk>]
27564705Seric
27664705SericB *	EXPN adds @domain to all mailers, including prog.  Is this right?
27764705Seric	[Bob Henry]
27864705Seric
27964705SericB *	EXPN adds @localhost instead of @$M.  [Pel Emanuelsson]
28064705Seric
28164705SericE *	Change body put code to time out around individual puts.  This will
28264705Seric	make the timeout algorithm more responsive and more resilient.
28364705Seric	Unfortunately, it's also a pain in the butt.
28464705Seric
28564705SericX *	Some way to relay unfound local users to another site.
28664705Seric
28764705SericX *	Disable all default RW sets except mailer-specific?
288