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