xref: /original-bsd/usr.sbin/sendmail/src/TODO (revision f4a18198)
1(Version 8.23 of 06/17/94)
2
3Key:
4  X -- extension (user visible change)
5  B -- bug fix
6  S -- security fix
7  E -- enhancement to existing algorithm
8
9
10X ****	8 -> 7 bit MIME conversion.
11
12E ****	Change NoReturn to be an envelope flag. [8.7]
13
14X ****	Add M_NOLOOPBACKCHK (k) mailer flag to turn off check of name in
15	HELO command. [8.8]
16
17X ****	Merge Sun changes.  [8.7]
18
19X ****	Macro giving size of the message in bytes.
20
21X ****	Create a "service switch" abstraction that will interface with
22	Sun NSS, Ultrix /etc/svc.conf, etc.  This will allow you to
23	turn off DNS entirely, a la ``OIoff''.  [8.7]
24
25X ****	Should have new mailer flags to override LocalMailer stuff:
26	- M_ALIASABLE (A) -- can use as the LHS of an alias.
27	- M_HASPWENT (w) -- should have a /etc/passwd entry.  If not found
28	  there, implies user unknown.  Also implies .forward and UDB
29	  searching, search for |, /, and :include:, etc.).
30	- Actually, UDB searching and |, /, and :include: mapping should
31	  probably be on another flag.  (Cannot be 'l' for back compat
32	  reasons.)
33	- Need for $@host part of triple and Return-Receipt-To: processing
34	  should also be split apart.
35	- M_RUNASRCPT (?) -- always setuid to the recipient before calling
36	  the mailer.
37	[8.8]
38
39X ****	Mailer flag to enable/disable surrounding route-addrs with
40	angle brackets in setsender().  UUCP cleanup scripts treat
41	these as file redirection.
42
43X ****	Mailer flag to override MX lookups.
44
45E ****	Fix parseaddr to return a dummy mailer with QBADADDR set for
46	all cases except null input; change calls to be more sceptical
47	about the return value, checking this bit instead of just
48	checking for == NULL.  (Eric Wassenaar)  [8.7]
49
50X ****	Run time configurable locking -- e.g., compile in HASFLOCK and
51	HASLOCKF, and then choose at runtime between these.
52
53B ****	Aliases with .REDIRECT fail during newaliases if the "n" flag
54	is given.  Problem is, sometimes you want them to, sometimes
55	you don't.  Perhaps two flavors of "error" mailer?
56
57B ****	Calls to gethostbyname with a trailing dot fail if you are
58	not running DNS.
59
60E ****	Move delivery forking from sendenvelope to sendall so that
61	the connection cache works between split envelopes, and to
62	avoid a flurry of processes should you be sending to lots of
63	sub-lists.
64
65X ****	Add uucp-bang mailer that strips off any domain name from
66	the envelope recipient address first; this is for use in
67	mailer table entries.
68
69X ****	"quote" map (inverse of dequote).  Lets you turn node::user
70	into "node::user"@DECNET.gateway
71
72X ****	Named rulesets.
73
74? ****	Should $( [1.2.3.4] $) convert the address to a name?
75
76E ****	Change collect() handling to use high level timeouts instead
77	of per-line timeouts -- the current mechanism is swamping
78	the machine with system calls.  (Look at KJS code.)
79
80X ****	Add smrsh to release.
81
82E ****	Have returned warning messages (and errors?) include a
83	``Precedence: automatic'' header to make them easier to filter.
84
85E ***	Arrange to run queue jobs as the owner of that queue file.  This
86	probably requires forcing a fork in order to be able to completely
87	restore the uid/gid portably without leaking out root privileges.
88
89E ***	Long term host status -- store host status on disk for sharing
90	between runs.
91
92X ***	Extend I option to allow setting of retry and timeout values.
93	drl@vuse.vanderbilt.edu (David R. Linn).
94
95X ***	Total connection cache lifespan timeout -- a way to give a
96	timeout on connections regardless of whether they are active
97	or not.  For single threaded servers such as Microsoft SMTP
98	gateway.  Douglas Anderson <dlander@afterlife.ncsc.mil>.
99
100X ***	Mailer flag that does a "ping" equivalent -- if it fails, wait
101	30 seconds and try again (for dialup PPP connections).  Could
102	just try the connection and then immediately retry on some
103	kinds of failures.
104
105X ***	Create a macro that has message size.
106	Peter Wemm <peter@DIALix.oz.au>
107
108E ***	Dynamically allocate MAXNAME buffers for headers.
109
110E ***	Dynamically allocate "line" buffer in readaliases().
111
112X ***	Add ability to disable Return-Receipt-To: on a privacy flag. [8.8]
113
114X ***	Add -P to set precedence (e.g., -Pbulk). [8.8]  (BCX)
115
116X ***	Runtime option to enable/disable IDENT protocol.
117
118E ***	Don't send ErrMsgFile to postmaster bounces.  (Josh Smith,
119	josh@osiris.ac.hmc.edu).
120
121X ***	Add "user" map to look up a user name via getpwnam -- so that
122	non-local names can be forwarded to another site.  [8.8]
123
124E ***	Have daemons that start up check the alias database for
125	correctness and auto-rebuild if necessary.  This is to handle
126	the case of a system crash during an alias database rebuild.
127
128E ***	Eliminate E qf line and e_errorqueue; use e_errorsto a la
129	e_receiptto.  This simplifies and gives symmetry.  (Eric
130	Wassenaar)
131
132X ***	DECNET_RELAY support in configs.
133
134X ***	-wN command line flag to set the width of mailq output.
135	(Allan Johannesen)
136
137E ***	Move mailertable lookup after UUCP-specific class checks?
138	(Kimmo Suominen <kim@tac.nyc.ny.us>)
139
140E ***	Users in more than one list with different owners get duplicate
141	deliveries -- maybe just assign them arbitrarily to one
142	envelope or the other?
143
144X **	Make MAXBADCOMMANDS run time configurable.
145
146E **	Allow mailertable entries of the form ``error:message''.
147
148X **	Have .forward files re-queue if the home directory isn't
149	accessible?  On some option...
150	(Q.G.Campbell@newcastle.ac.uk)
151
152X **	Have local delivery queue if NIS is down?  On some option...
153	(Q.G.Campbell@newcastle.ac.uk)
154
155E **	Have nullclient configuration resolve local names to the local
156	mailer and then redirect them in ruleset 5; this allows you to
157	redirect root differently depending on the client.  It's not
158	clear this is really a good idea though.
159
160E **	Move CurHostAddr into mci struct, and make CurMCI variable
161	point to this, so that logging will give the correct address
162	instead of (0) for cached connections.  Motonori Nakamura.
163
164X **	Allow use of a generalized network service for aliasing?
165	How would the protocol be defined?
166	James Gritton <gritton@byu.edu>.
167
168E **	Make "local configuration error" a temporary failure?
169	(add EX_CONFIG to the markfailure list)
170
171X **	(sigh) BSMTP.
172
173X **	"E" configuration line that sets environment variables.
174
175E **	Change listen() high-load backoff to accept and issue a 4xx
176	message so that it responds more quickly.
177
178E **	Change "/usr/tmp/dead.letter" to be based on _PATH_VARTMP.
179
180B **	Commas in NAME envariable cause problems (Peter Wan
181	<peter@cc.gatech.edu>).  Merge with suggestions to use
182	MIME-format for 8-bit characters?
183
184E **	Save address information that comes back as the "additional
185	records" part of an MX lookup, to avoid additional name server
186	attempts.  If there is an MX record without an additional A
187	record, delete it (this avoids a problem with misconfigured
188	DNS situations).
189
190X **	Allow a way to extend the $Z macro with local configuration
191	information.
192
193X **	Allow $x in -bt mode to expand macro "x".  (BCX)  [8.8]
194
195X **	Allow /address in -bt mode to expand address through ruleset 0,
196	aliases, etc. and display results.  [8.8]
197
198X **	"R mailer address" in -bt mode does remotename on address.
199
200E **	Adjust "infinite loop in rule" code to handle entire ruleset
201	(Code from Michael Corrigan).
202
203E **	Allow :include: from command line (not SMTP) to assist in
204	"personal list" management -- i.e., creating lists that
205	cannot be EXPNed.
206
207X **	Database (keyed lookup) auto-rebuild.
208
209X **	Find a good test suite and include in the distribution.
210
211S **	You can use symbolic links to point into protected directories.
212	(AEJ)
213
214X **	Extend OI to allow separate settings for canonification, MX, and A
215	lookups.  [8.8?]
216
217X **	Add $!x class to match any number of words not in class x. (KRE)
218
219X **	LOCAL_RULE_5 (Spencer Sun, spencer@phoenix.Princeton.EDU)
220
221X **	Add "bestmx" map -- returns "best MX host" for this address.
222	Allows you to do automatic detection of when you are the best
223	MX for a given address.  [8.7?]
224
225X **	Some way to diddle resolver flags on a per-lookup basis, such
226	as a flag to the map declaration.  (Rick McCarty)
227	- Is this really a good idea?  DNSRCH can be turned off by
228	  putting a dot at the end.  AAONLY?
229
230X **	Extend makemap to "gather" values -- i.e., merge entries that
231	have the same keys. [8.8]  (BCX)
232
233E **	Allow error messages on individual addresses in the qf file.
234	(BCX)
235
236X **	Multi-character option names.  [9.1]
237
238X **	User database extensions for mailing lists:
239	list:precedence -- Precedence: value for new message
240	list:envelopefrom -- envelope "from" value for new message
241	others?  [8.8]
242
243X **	Command line switch to set precedence (for mailing list
244	generation).  (BCX)
245
246B **	Restore `T' line to eliminate X-Authentication-Warning: at
247	inappropriate times.  (Christophe Wolfhugel)
248	- T could become a shorthand for Ct -- i.e., create a new
249	  predefined class.
250	- Eliminate "<user> set sender to <address>" message entirely?
251	  (this is the workaround)
252
253B **	Return-Path: header should have <> added if not already there.
254
255X **	Add heuristic to determine if other end is a sendmail; use
256	that to decide whether or not to honor F=I mailer flag.
257	[der Mouse <mouse@collatz.mcrcim.mcgill.edu>]
258
259X **	Automatically drop into MIME mode if you have a full name
260	with 8-bit characters.  See envelope.c 8.19.1.1 and util.c
261	8.17.1.1.  From Anders Ellefsrud <anders@ifi.uio.no>.
262
263X **	-b? flag to read a header and show you what it will look like
264	after all rewriting for an indicated address.
265
266E **	Log $u in logsender() (for=<someaddress>).
267
268B **	Include SOCKADDR in MCI struct for logging (currently gives
269	a sockaddr of zero when printing from the cache).
270
271X **	Allow option to set the characters that are autoquoted in
272	addresses?
273
274X *	Map that does MB/MR lookups.  Rick McCarty <mccarty@io.com>.
275
276X *	Allow $> anywhere in RHS.  John Boeske <jboeske@ualberta.ca>.
277
278X *	-V flag to print state of all (?) compilation flags.
279
280X *	Handle Expires: header field (if still in queue).
281
282X *	WIN/3B support (non-atomic rename, no h_addr_list, others?)
283	(Bruce Lilly <blilly!bruce@uu.psi.com>)
284
285X *	Sun YBTS daemon uses -ba.  [Martin Kiff <MGK@newton.npl.co.uk>]
286
287B *	EXPN adds @domain to all mailers, including prog.  Is this right?
288	[Bob Henry]
289
290B *	EXPN adds @localhost instead of @$M.  [Pel Emanuelsson]
291
292E *	Change body put code to time out around individual puts.  This will
293	make the timeout algorithm more responsive and more resilient.
294	Unfortunately, it's also a pain in the butt.
295
296X *	Some way to relay unfound local users to another site.
297
298X *	Disable all default RW sets except mailer-specific?
299