Beta.6
[unix-history] / usr / src / usr.sbin / sendmail / RELEASE_NOTES
CommitLineData
05ea1abf 1 SENDMAIL RELEASE NOTES
9503f767 2 @(#)RELEASE_NOTES 8.7.Beta (Berkeley) %G%
05ea1abf
EA
3
4This listing shows the version of the sendmail binary, the version
5of the sendmail configuration files, the date of release, and a
6summary of the changes in that release.
7
9503f767
EA
88.7/8.7 95/xx/xx CURRENTLY IN BETA PRERELEASE!!!
9 Fix a problem that could cause sendmail to run out of file
10 descriptors due to a trashed data structure after a
11 vfork. Fix from Brian Coan of the Institute for
12 Global Communications.
13 Change the VRFY response if you have disabled VRFY -- some
14 people seemed to think that it was too rude.
15 Avoid reference to uninitialized file descriptor if HASFLOCK
16 was not defined. This was used "safely" in the sense
17 that it only did a stat, but it would have set the
18 map modification time improperly. Problem pointed out
19 by Roy Mongiovi of Georgia Tech.
20 Clean up the Subject: line on warning messages and return
21 receipts so that they don't say "Returned mail:"; this
22 can be confusing.
23 Move ruleset entry/exit debugging from 21.2 to 21.1 -- this is
24 useful enough to make it worthwhile printing on "-d".
25 Avoid logging alias statistics every time you read the alias
26 file on systems with no database method compiled in.
27 If you have a name with a trailing dot, and you try looking it
28 up using gethostbyname without the dot (for /etc/hosts
29 compatibility), be sure to turn off RES_DEFNAMES and
30 RES_DNSRCH to avoid finding the wrong name accidently.
31 Problem noted by Charles Amos of the University of
32 Maryland.
33 Don't do timeouts in collect if you are not running SMTP.
34 There is nothing that says you can't have a long
35 running program piped into sendmail (possibly via
36 /bin/mail, which just execs sendmail). Problem reported
37 by Don "Truck" Lewis of Silicon Systems.
38 Try gethostbyname() even if the DNS lookup fails iff option I
39 is not set. This allows you to have hosts listed in
40 NIS or /etc/hosts that are not known to DNS. It's normally
41 a bad idea, but can be useful on firewall machines. This
42 should really be broken out on a separate flag, I suppose.
43 Avoid compile warnings against BIND 4.9.3, which uses function
44 prototypes. From Don Lewis of Silicon Systems.
45 Avoid possible incorrect diagnosis of DNS-related errors caused
46 by things like attempts to resolve uucp names using
47 $[ ... $] -- the fix is to clear h_errno at appropriate
48 times. From Kyle Jones of UUNET.
49 SECURITY: avoid denial-of-service attacks possible by destroying
50 the alias database file by setting resource limits low.
51 This involves adding two new compile-time options:
52 HASSETRLIMIT (indicating that setrlimit(2) support is
53 available) and HASULIMIT (indicating that ulimit(2) support
54 is available -- the Release 3 form is used). The former
55 is assumed on BSD-based systems, the latter on System
56 V-based systems. Attack noted by Phil Brandenberger of
57 Swarthmore University.
58 New syntaxes in test (-bt) mode:
59 ``.Dmvalue'' will define macro "m" to "value".
60 ``.Ccvalue'' will add "value" to class "c".
61 ``.Sruleset'' will dump the contents of the indicated
62 ruleset.
63 ``-ddebug-spec'' is equivalent to the command-line
64 -d debug flag.
65 ``$m'' will print the value of macro "m".
66 ``/mx host'' returns the MX records for ``host''.
67 ``/try address'' will parse address, returning the value of
68 crackaddr (essentially, the comment information)
69 and the parsed address (the same as -bv).
4c15d218
EA
70 ``/tryflags flags'' will set flags used by parsing. The
71 flags can be `H' for header or `E' for envelope,
72 and `S' for sender or `R' for recipient. These
73 can be combined, so `HR' sets flags for header
74 recipients.
9503f767
EA
75 Somewhat better handling of UNIX-domain socket addresses -- it
76 should show the pathname rather than hex bytes.
77 Restore ``-ba'' mode -- this reads a file from stdin and parses
78 the header for envelope sender information and uses
79 CR-LF as message terminators. It was thought to be
80 obsolete (used only for Arpanet NCP protocols), but it
81 turns out that the UK ``Grey Book'' protocols require
82 that functionality.
83 Fix a fix in previous release -- if gethostname and gethostbyname
44dda2d9
EA
84 return a name without dots, and if an attempt to canonify
85 that name fails, wait one minute and try again. This can
86 result in an extra 60 second delay on startup if your system
87 hostname (as returned by hostname(1)) has no dot and no names
88 listed in /etc/hosts or your NIS map have a dot.
9503f767
EA
89 Check for proper domain name on HELO and EHLO commands per
90 RFC 1123 section 5.2.5. Problem noted by Thomas Dwyer III
91 of Michigan Technological University.
92 Relax chownsafe rules slightly -- old version said that if you
93 can't tell if _POSIX_CHOWN_RESTRICTED is set (that is,
94 if fpathconf returned EINVAL or ENOSYS), assume that
95 chown is not safe. The new version falls back to whether
96 you are on a BSD system or not. This is important for
97 SunOS, which apparently always returns one of those
98 error codes. This impacts whether you can mail to files
99 or not.
100 Syntax errors such as unbalanced parentheses in the configuration
101 file could be omitted if you had "Oem" prior to the
102 syntax error in the config file. Change to always print
103 the error message. It was especially wierd because it
104 would cause a "warning" message to be sent to the Postmaster
105 for every message sent (but with no transcript). Problem
106 noted by Gregory Paris of Motorola.
107 Rewrite collect and putbody to handle full 8-bit data, including
108 zero bytes. These changes are internally extensive, but
109 should have minimal impact on external function.
110 Allow full words for option names -- if the option letter is
111 (apparently) a space, then take the word following -- e.g.,
112 O MatchGECOS=TRUE
113 The full list of old and new names is as follows:
114 7 SevenBitInput
115 8 EightBitMode
116 A AliasFile
117 a AliasWait
118 B BlankSub
119 b MinFreeBlocks/MaxMessageSize
120 C CheckpointInterval
121 c HoldExpensive
122 D AutoRebuildAliases
123 d DeliveryMode
124 E ErrorHeader
125 e ErrorMode
126 f SaveFromLine
127 F TempFileMode
128 G MatchGECOS
129 H HelpFile
130 h MaxHopCount
131 i IgnoreDots
132 I ResolverOptions
133 J ForwardPath
134 j SendMimeErrors
135 k ConnectionCacheSize
136 K ConnectionCacheTimeout
137 L LogLevel
138 l UseErrorsTo
139 m MeToo
140 n CheckAliases
141 O DaemonPortOptions
142 o OldStyleHeaders
143 P PostmasterCopy
144 p PrivacyOptions
145 Q QueueDirectory
146 q QueueFactor
147 R DontPruneRoutes
148 r, T Timeout
149 S StatusFile
150 s SuperSafe
151 t TimeZoneSpec
152 u DefaultUser
153 U UserDatabaseSpec
154 V FallbackMXhost
155 v Verbose
156 w TryNullMXList
157 x QueueLA
158 X RefuseLA
159 Y ForkEachJob
160 y RecipientFactor
161 z ClassFactor
162 Z RetryFactor
163 To avoid possible problems with an older sendmail,
164 configuration level 6 is accepted by this version of
165 sendmail; any config file using the new names should
166 specify "V6" in the configuration.
167 Change address parsing to properly note that a phrase before a
168 colon and a trailing semicolon are essentially the same
169 as text outside of angle brackets (i.e., sendmail should
170 treat them as comments). This is to handle the
171 ``group name: addr1, addr2, ..., addrN;'' syntax (it will
172 assume that ``group name:'' is a comment on the first
173 address and the ``;'' is a comment on the last address).
174 This requires config file support to get right. It does
175 understand that :: is NOT this syntax, and can be turned
176 off completely by setting the ColonOkInAddresses option.
177 Level 6 config files added with new mailer flags:
178 A Addresses are aliasable.
179 i Do udb rewriting on envelope as well as header
180 sender lines. Applies to the from address mailer
181 flags rather than the recipient mailer flags.
182 j Do udb rewriting on header recipient addresses.
183 Applies to the sender mailer flags rather than the
184 recipient mailer flags.
185 k Disable check for loops when doing HELO command.
186 o Always run as the mail recipient, even on local
187 delivery.
188 w Check for an /etc/passwd entry for this user.
189 5 Pass addresses through ruleset 5.
190 : Check for :include: on this address.
191 | Check for |program on this address.
192 / Check for /file on this address.
193 @ Look up sender header addresses in the user
194 database. Applies to the mailer flags for the
195 mailer corresponding to the envelope sender
196 address, rather than to recipient mailer flags.
197 Pre-level 6 configuration files set A, w, 5, :, |, /, and @
198 on the "local" mailer, the o flag on the "prog" and "*file*"
199 mailers, and the ColonOkInAddresses option.
200 Eight-to-seven bit MIME conversions. This borrows ideas from
201 John Beck of Hewlett-Packard, who generously contributed
202 their implementation to me, which I then didn't use (see
203 mime.c for an explanation of why). This adds the
204 EightBitMode option (a.k.a. `8') and an F=8 mailer flag
205 to control handling of 8-bit data. These have to cope with
206 two types of 8-bit data: unlabelled 8-bit data (that is,
207 8-bit data that is entered without declaring it as 8-bit
208 MIME -- technically this is illegal according to the
209 specs) and labelled 8-bit data (that is, it was declared
210 as 8BITMIME in the ESMTP session or by using the
211 -B8BITMIME command line flag). If the F=8 mailer flag is
212 set then 8-bit data is sent to non-8BITMIME machines
213 instead of converting to 7 bit (essentially using
214 just-send-8 semantics). The values for EightBitMode are:
215 m convert unlabelled 8-bit input to 8BITMIME, and do
216 any necessary conversion of 8BITMIME to 7BIT
217 (essentially, the full MIME option).
218 p pass unlabelled 8-bit input, but convert labelled
219 8BITMIME input to 7BIT as required (default).
220 s strict adherence: reject unlabelled 8-bit input,
221 convert 8BITMIME to 7BIT as required. The F=8
222 flag is ignored.
223 Unlabelled 8-bit data is rejected in mode `s' regardless of
224 the setting of F=8.
225 Add new internal class 'n', which is the set of MIME Content-Types
226 which can not be 8 to 7 bit encoded because of other
227 considerations. Types "multipart/*" and "message/*" are
228 never directly encoded (although their components can be).
4c15d218
EA
229 Add new internal class 'm', which is the set of subtypes of the
230 MIME message/* content type that can be treated as though
231 they are an RFC822 message. It is predefined to have
232 "rfc822". Suggested By Kari Hurtta.
9503f767
EA
233 Add new internal class 'e'. This is the set of MIME
234 Content-Transfer-Encodings that can be converted to
235 a seven bit format (Quoted-Printable or Base64). It is
236 preinitialized to contain "7bit", "8bit", and "binary".
237 Add C=charset mailer parameter and the the DefaultCharSet option (no
238 short name) to set the default character set to use in the
239 Content-Type: header when doing encoding of an 8-bit message
240 which isn't marked as MIME into MIME format. If the C=
241 parameter is set on the Envelope From address, use that as
242 the default encoding; else use the DefaultCharSet option.
243 If neither is set, it defaults to "unknown-8bit" as
244 suggested by RFC 1428 section 3.
245 Allow ``U=user:group'' field in mailer definition to set a default
246 user and group that a mailer will be executed as. This
247 overrides the 'u' and 'g' options, and if the `F=S' flag is
248 also set, it is the uid/gid that will always be used (that
249 is, the controlling address is ignored). The values may be
250 numeric or symbolic; if only a symbolic user is given (no
251 group) that user's default group in the passwd file is used
252 as the group. Based on code donated by Chip Rosenthal of
253 Unicom.
254 Allow `u' option to also accept user:group as a value, in the same
255 fashion as the U= mailer option.
256 Add the symbolic time zone name in the Arpanet format dates (as
257 a comment). This adds a new compile-time configuration
258 flag: TZ_TYPE can be set to TZ_TM_NAME (use the value
259 of (struct tm *)->tm_name), TZ_TM_ZONE (use the value
260 of (struct tm *)->tm_zone), TZ_TZNAME (use extern char
261 *tzname[(struct tm *)->tm_isdst]), TZ_TIMEZONE (use
262 timezone()), or TZ_NONE (don't include the comment). Code
263 from Chip Rosenthal.
264 The "Timeout" option (formerly "r") is extended to allow suboptions.
265 For example,
266 O Timeout.helo = 2m
267 There are also two new suboptions "queuereturn" and
268 "queuewarn"; these subsume the old T option. Thus, to
269 set them both the preferred new syntax is
270 O Timeout.queuereturn = 5d
271 O Timeout.queuewarn = 4h
272 Sort queue by host name instead of by message priority if the
273 QueueSortOrder option (no short name) is set is set to
274 ``host''. This makes better use of the connection cache,
275 but may delay more ``interactive'' messages behind large
276 backlogs under some circumstances. This is probably a
277 good option if you have high speed links or don't do lots
278 of ``batch'' messages, but less good if you are using
279 something like PPP on a 14.4 modem. Based on code
280 contributed by Roy Mongiovi of Georgia Tech (my main
281 contribution was to make it configurable).
282 Save i-number of df file in qf file to simplify rebuilding of queue
283 after disasterous disk crash. Suggested by Kyle Jones of
284 UUNET; closely based on code from KJS DECWRL code written
285 by Paul Vixie. NOTA BENE: The qf files produced by 8.7
286 are NOT back compatible with 8.6 -- that is, you can convert
287 from 8.6 to 8.7, but not the other direction.
288 Add ``F=d'' mailer flag to disable all use of angle brackets in
289 route-addrs in envelopes; this is because in some cases
290 they can be sent to the shell, which interprets them as
291 I/O redirection.
292 Don't include error file (option E) with return-receipts; this
293 can be confusing.
294 Don't send "Warning: cannot send" messages to owner-* or
295 *-request addresses. Suggested by Christophe Wolfhugel
296 of the Institut Pasteur, Paris.
297 Allow -O command line flag to set long form options.
298 Add "MinQueueAge" option to set the minimum time between attempts
299 to run the queue. For example, if the queue interval
300 (-q value) is five minutes, but the minimum queue age
301 is fifteen minutes, jobs won't be tried more often than
302 once every fifteen minutes. This can be used to give
303 you more responsiveness if your delivery mode is set to
304 queue-only.
305 Allow "fileopen" timeout (default: 60 seconds) for opening
306 :include: and .forward files.
307 Add "-k", "-v", and "-z" flags to map definitions; these set the
308 key field name, the value field name, and the field
309 delimiter. The field delimiter can be a single character
310 or the sequence "\t" or "\n" for tab or newline.
311 These are for use by NIS+ and similar access methods.
0893d326
EA
312 Change maps to always strip quotes before lookups; the -q flag
313 turns off this behaviour. Suggested by Motonori Nakamura.
9503f767
EA
314 Add "nisplus" map class. Takes -k and -v flags to choose the
315 key and value field names respectively. Code donated by
316 Sun Microsystems.
317 Add "hesiod" map class. The "file name" is used as the
318 "HesiodNameType" parameter to hes_resolve(3). Returns the
319 first value found for the match. Code donated by Scott
320 Hutton of Indiana University.
321 Add "netinfo" (NeXT NetInfo) map class. Maps can have a -k flag to
322 specify the name of the property that is searched as the
323 key and a -v flag to specify the name of the property that
324 is returned as the value (defaults to "members"). The
325 default map is "/aliases".
326 Add "text" map class. This does slow, linear searches through
327 text files. The -z flag specifies a column delimiter
328 (defaults to any sequence of white space), the -k flag
329 sets the key column number, and the -v flag sets the
330 value column number. Lines beginning with `#' are treated
331 as comments.
332 Add "program" map class to execute arbitrary programs. The search
333 key is presented as the last argument; the output is one
334 line read from the programs standard output. Exit statuses
335 are from sysexits.h.
336 Add "sequence" map class -- searches maps in sequence until it
337 finds a match. For example, the declarations:
338 Kmap1 ...
339 Kmap2 ...
340 Kmapseq sequence map1 map2
341 defines a map "mapseq" that first searches map1; if the
342 value is found it is returned immediately, otherwise
343 map2 is searched and the value returned.
344 Add "switch" map class. This is much like "sequence" except that
345 the ordering is fetched from an external file, usually
346 the system service switch. The parameter is the name of
347 the service to switch on, and the maps that it will use
348 are this name followed by ".service_type". For example,
349 if the declaration of the map is
350 Ksample switch hosts
351 and the system service switch specifies that hosts are
352 looked up using dns and nis in that order, then this is
353 equivalent to
354 Ksample sequence hosts.dns hosts.nis
355 The subordinate maps must already be defined.
356 Add "user" map class -- looks up users using getpwnam. Takes a
357 "-v field" flag on the definition that tells what passwd
358 entry to return -- legal values are name, passwd, uid, gid,
359 gecos, dir, and shell. Generally expected to be used with
360 the -m (matchonly) flag.
361 Add "bestmx" map class -- returns the best MX value for the host
362 listed as the value. If there are several "best" MX records
363 for this host, one will be chosen at random.
364 Add "userdb" map class -- looks up entries in the user database.
365 The "file name" is actually the tag that will be used,
366 typically "mailname". If there are multiple entries
367 matching the name, the one chosen is undefined.
368 Add multiple queue timeouts (both return and warning). These are
369 set by the Precedence: or Priority: header fields to one of
370 three values. If a Priority: is set and has value "normal",
371 "urgent", or "non-urgent" the corresponding timeouts are
372 used. If no priority is set, the Precedence: is consulted;
373 if negative, non-urgent timeouts are used; if greater than
374 zero, urgent timeouts are used. Otherwise, normal timeouts
375 are used. The timeouts are set by setting the six timeouts
376 queue{warn,return}.{urgent,normal,non-urgent}.
377 Fix problem when a mail address is resolved to a $#error mailer
378 with a temporary failure indication; it works in SMTP,
379 but when delivering locally the mail is silently discarded.
380 This patch, from Kyle Jones of UUNET, bounces it instead
381 of queueing it (queueing is very hard).
382 When using /etc/hosts or NIS-style lookups, don't assume that
383 the first name in the list is the best one -- instead,
384 search for the first one with a dot. For example, if
385 an /etc/hosts entry reads
386 128.32.149.68 mammoth mammoth.CS.Berkeley.EDU
387 this change will use the second name as the canonical
388 machine name instead of the initial, unqualified name.
9503f767
EA
389 Change dequote map to replace spaces in quoted text with a value
390 indicated by the -s flag on the dequote map definition.
391 For example, ``Mdequote dequote -s_'' will change
392 "Foo Bar" into an unquoted Foo_Bar instead of leaving it
393 quoted (because of the space character). Suggested by Dan
394 Oscarsson for use in X.400 addresses.
395 Implement long macro names as ${name}; long class names can
396 be similarly referenced as $={name} and $~{name}.
397 Definitions are (e.g.) ``D{name}value''. Names that have
398 a leading lower case letter or punctuation characters are
399 reserved for internal use by sendmail; i.e., config files
400 should use names that begin with a capital letter. Based
401 on code contributed by Dan Oscarsson.
402 Fix core dump if getgrgid returns a null group list (as opposed
403 to an empty group list, that is, a pointer to a list
404 with no members). Fix from Andrew Chang of Sun Microsystems.
405 Fix possible core dump if malloc fails -- if the malloc in xalloc
406 failed, it called syserr which called newstr which called
407 xalloc.... The newstr is now avoided for "panic" messages.
408 Reported by Stuart Kemp of James Cook University.
409 Improve connection cache timeouts; previously, they were not even
410 checked if you were delivering to anything other than an
411 IPC-connected host, so a series of (say) local mail
412 deliveries could cause cached connections to be open
413 much longer than the specified timeout.
414 If an incoming message exceeds the maximum message size, stop
415 writing the incoming bytes to the queue data file, since
416 this can fill your mqueue partition -- this is a possible
417 denial-of-service attack.
418 Don't reject all numeric local user names unless HESIOD is
419 defined. It turns out that Posix allows all-numeric
420 user names. Fix from Tony Sanders of BSDI.
421 Add service switch support. If the local OS has a service
ac4255b1
EA
422 switch (e.g., /etc/nsswitch.conf on Solaris or /etc/svc.conf
423 on DEC systems) that will be used; otherwise, it falls back
424 to using a local mechanism based on the ServiceSwitchFile
425 option (default: /etc/service.switch). For example, if the
9503f767 426 service switch lists "files" and "nis" for the aliases
ac4255b1
EA
427 service, that will be the default lookup order. the "files"
428 ("local" on DEC) service type expands to any alias files
429 you listed in the configuration file, even if they aren't
430 actually file lookups.
9503f767
EA
431 Option I (NameServerOptions) no longer sets the "UseNameServer"
432 variable which tells whether or not DNS should be considered
433 canonical. This is now determined based on whether or not
434 "dns" is in the service list for "hosts".
435 Add preliminary support for the ESMTP "DSN" extension (Delivery
436 Status Notifications). This is not yet a standard
437 and the implementation is for experimentation only.
438 For this reason it only announces itself as "X-DSN-0"
439 instead of "DSN". DSN notifications override
440 Return-Receipt-To:.
441 Add T=mtstype keyletter to mailer definitions to define the value
442 for the Final-MTS-Type: and Remote-MTS-Type: fields in the
443 DSN-standard return message.
444 Extend heuristic to force running in ESMTP mode to look for the
445 six-character string "ESMTP " anywhere in the 220 greeting
446 message (not just the second line). This is to provide
447 better compatibility with other ESMTP servers.
448 Print sequence number of job when running the queue so you can
449 easily see how much progress you have made. Suggested
450 by Peter Wemm of DIALix.
451 Map newlines to spaces in logged message-ids; some versions of
452 syslog truncate the rest of the line after newlines.
453 Suggested by Fletcher Mattox of U. Texas.
454 Move up forking for job runs so that if a message is split into
455 multiple envelopes you don't get "fork storms" -- this
456 also improves the connection cache utilization.
457 Accept "<<>>", "<<<>>>", and so forth as equivalent to "<>" for
458 the purposes of refusing to send error returns. Suggested
459 by Motonori Nakamura of Ritsumeikan University.
460 Relax rules on when a file can be written when referenced from
461 the aliases file: use the default uid/gid instead of the
462 real uid/gid. This allows you to create a file owned by
463 and writable only by the default uid/gid that will work
464 all the time (without having the setuid bit set). Change
465 suggested by Shau-Ping Lo and Andrew Cheng of Sun
466 Microsystems.
467 Add "DialDelay" option (no short name) to provide an "extra"
468 delay for dial on demand systems. If this is non-zero
469 and a connect fails, sendmail will wait this long and
470 then try again. If it takes longer than the kernel
471 timeout interval to establish the connection, this
472 option can give the network software time to establish
473 the link. The default units are seconds.
474 Move logging of sender information to be as early as possible;
475 previously, it could be delayed a while for SMTP mail
476 sent to aliases. Suggested by Brad Knowles of the
477 Defense Information Systems Agency.
478 Call res_init() before setting RES_DEBUG; this is required by
479 BIND 4.9.3, or so I'm told. From Douglas Anderson of
480 the National Computer Security Center.
481 Add xdelay= field in logs -- this is a transaction delay, telling
482 you how long it took to deliver to this address on the
483 last try. It is intended to be used for sorting mailing
484 lists to favor "quick" addresses. Provided for use by
485 the mailprio scripts (see below).
486 If a map cannot be opened, and that map is non-optional, and
487 an address requires that map for resolution, queue the
488 map instead of bouncing it. This involves creating a
489 pseudo-class of maps called "bogus-map" -- if a required
490 map cannot be opened, the class is changed to bogus-map;
491 all queries against bogus-map return "tempfail". The
492 bogus-map class is not directly accessible. A sample
493 implementation was donated by Jem Taylor of Glasgow
494 University Computing Service.
495 Don't make a bad ``MAIL FROM:'' address on one message blow away
496 other messages to the same host later in the queue.
497 Problem noted by Eric Prestemon of American University.
498 Fix a possible core dump when mailing to a program that talks
499 SMTP on its standard input. Fix from Keith Moore of
500 the University of Kentucky.
501 Make it possible to resolve filenames to $#local $: @ /filename;
502 previously, the "@" would cause it to not be recognized
503 as a file. Problem noted by Brian Hill of U.C. Davis.
504 Accept a -1 signal to re-exec the daemon. This only works if
505 argv[0] is a full path to sendmail.
506 Fix bug in "addr=..." field in O option on little-endian machines
507 -- the network number wasn't being converted to network
508 byte order. Patch from Kurt Lidl of Pix Technologies
509 Corporation.
510 Pre-initialize the resolver early on; this is to avoid a bug with
511 BIND 4.9.3 that can cause the _res.retry field to get
512 reset to zero, causing all name server lookups to time
513 out. Fix from Matt Day of Artisoft.
514 Restore T line (trusted users) in config file -- but instead of
515 locking out the -f flag, they just tell whether or not
516 an X-Authentication-Warning: will be added. This really
517 just creates new entries in class 't', so "Ft/file/name"
518 can be used to read trusted user names from a file.
44dda2d9
EA
519 Trusted users are also allowed to execute programs even
520 if they have a shell that isn't in /etc/shells.
9503f767
EA
521 Improve NEWDB alias file rebuilding so it will create them
522 properly if they do not already exist. This had been
523 a MAYBENEXTRELEASE feature in 8.6.9.
524 Check for @:@ entry in NIS maps before starting up to avoid
525 (but not prevent, sigh) race conditions. This ought to
526 be handled properly in ypserv, but isn't. Suggested by
527 Michael Beirne of Motorola.
528 Refuse connections if there isn't enough space on the filesystem
529 holding the queue. Contributed by Robert Dana of Wolf
530 Communications.
531 Skip checking for directory permissions in the path to a file
532 when checking for file permissions iff setreuid()
533 succeeded -- it is unnecessary in that case. This avoids
534 significant performance problems when looking for .forward
535 files. Based on a suggestion by Win Bent of USC.
536 Allow symbolic ruleset names. Syntax can be "Sname" to get an
537 arbitrary ruleset number assigned or "Sname = integer"
538 to assign a specific ruleset number. Reference is
539 $>name_or_number. Names can be composed of alphas, digits,
540 underscore, or hyphen (first character must be non-numeric).
541 Allow -o flag on AliasFile lines to make the alias file optional.
542 From Bryan Costales of ICSI.
543 Add NoRecipientAction option to handle the case where there is
544 no legal recipient header in the message. It can take
545 on values:
546 None Leave the message as is. The
547 message will be passed on even
548 though it is in technically
549 illegal syntax.
550 Add-To Add a To: header with any
551 recipients that it can find from
552 the envelope. This risks exposing
553 Bcc: recipients.
554 Add-Apparently-To Add an Apparently-To: header. This
555 has almost no redeeming social value,
556 and is provided only for back
557 compatibility.
558 Add-To-Undisclosed Add a header reading
559 To: undisclosed-recipients:;
560 which will have the effect of
561 making the message legal without
562 exposing Bcc: recipients.
563 Add-Bcc To add an empty Bcc: header.
564 There is a chance that mailers down
565 the line will delete this header,
566 which could cause exposure of Bcc:
567 recipients.
568 The default is NoRecipientAction=None.
569 Truncate (rather than delete) Bcc: lines in the header. This
570 should prevent later sendmails (at least, those that don't
571 themselves delete Bcc:) from considering this message to
572 be non-conforming -- although it does imply that non-blind
573 recipients can see that a Bcc: was sent, albeit not to whom.
574 Add SafeFileEnvironment option. If declared, files named as delivery
575 targets must be regular files in addition to the regular
576 checks. Also, if the option is non-null then it is used as
577 the name of a directory that is used as a chroot(2)
578 environment for the delivery; the file names listed in an
579 alias or forward should include the name of this root.
580 For example, if you run with
581 O SafeFileEnvironment=/arch
582 then aliases should reference "/arch/rest/of/path". If a
583 value is given, sendmail also won't try to save to
584 /usr/tmp/dead.letter (instead it just leaves the job in the
585 queue as Qfxxxxxx). Inspired by *Hobbit*'s sendmail patch kit.
586 Support -A flag for alias files; this will comma concatenate like
587 entries. For example, given the aliases:
588 list: member1
589 list: member2
590 and an alias file declared as:
591 OAhash:-A /etc/aliases
592 the final alias inserted will be "list: member1,member2";
593 without -A you will get an error on the second and subsequent
594 alias for "list". Contributed by Bryan Costales of ICSI.
595 Line-buffer transcript file. Suggested by Liudvikas Bukys.
596 Fix a problem that could cause very long addresses to core dump in
597 some special circumstances. Problem pointed out by Allan
598 Johannesen.
599 (Internal change.) Change interface to expand() (macro expansion)
600 to be simpler and more consistent.
601 Delete check for funny qf file names. This didn't really give
602 any extra security and caused some people some problems.
603 (If you -really- want this, define PICKY_QF_NAME_CHECK
604 at compile time.) Suggested by Kyle Jones of UUNET.
605 (Internal change.) Change EF_NORETURN to EF_NO_BODY_RETN and
606 merge with DSN code; this is simpler and more consistent.
607 This may affect some people who have written their own
608 checkcompat() routine.
609 (Internal change.) Eliminate `D' line in qf file. The df file
610 is now assumed to be the same name as the qf file (with
611 the `q' changed to a `d', of course).
612 Avoid forking for delivery if all recipient mailers are marked as
613 "expensive" -- this can be a major cost on some systems.
614 Essentially, this forces sendmail into "queue only" mode
615 if all it is going to do is queue anyway.
616 Avoid sending a null message in some rather unusual circumstances
617 (specifically, the RCPT command returns a temporary
618 failure but the connection is lost before the DATA
619 command). Fix from Scott Hammond of Secure Computing
620 Corporation.
621 Change makesendmail to use a somewhat more rational naming scheme:
622 Makefiles and obj directories are named $os.$rel.$arch,
623 where $os is the operating system (e.g., SunOS), $rel is
624 the release number (e.g., 5.3), and $arch is the machine
625 architecture (e.g., sun4). Any of these can be omitted,
626 and anything after the first dot in a release number can
627 be replaced with "x" (e.g., SunOS.4.x.sun4). The previous
628 version used $os.$arch.$rel and was rather less general.
4c15d218
EA
629 Change makesendmail to do a "make depend" in the target directory
630 when it is being created. This involves adding an empty
631 "depend:" entry in most Makefiles.
9503f767
EA
632 Ignore IDENT return value if the OSTYPE field returns "OTHER",
633 as indicated by RFC 1413. Pointed out by Kari Hurtta
634 of the Finnish Meteorological Institute.
635 Fix problem that could cause multiple responses to DATA command
636 on header syntax errors (e.g., lines beginning with colons).
637 Problem noted by Jens Thomassen of the University of Oslo.
638 Don't let null bytes in headers cause truncation of the rest of
639 the header.
640 Log Authentication-Warning:s. Suggested by Motonori Nakamura.
641 Increase timeouts on message data puts to allow time for receivers
642 to canonify addresses in headers on the fly. This is still
643 a rather ugly heuristic. From Motonori Nakamura.
644 Add "HasWildcardMX" suboption to ResolverOptions; if set, MX
4c15d218
EA
645 records are not used when canonifying names, and when MX
646 lookups are done for addressing they must be fully
647 qualified. This is useful if you have a wildcard MX record,
648 although it may cause other problems. In general, don't use
649 wildcard MX records. Patch from Motonori Nakamura.
9503f767
EA
650 Eliminate default two-line SMTP greeting message. Instead of
651 adding an extra "ESMTP spoken here" line, the word "ESMTP"
652 is added between the first and second word of the first
653 line of the greeting message (i.e., immediately after the
654 host name). This eliminates the need for the BROKEN_SMTP_PEERS
655 compile flag. Old sendmails won't see the ESMTP, but that's
656 acceptable because SIZE was the only useful extension that
657 old sendmails understand.
658 Avoid gethostbyname calls on UNIX domain sockets during SIGUSR1
659 invoked state dumps. From Masaharu Onishi.
660 Allow on-line comments in .forward and :include: files; they are
661 introduced by the string "<LWSP>#@#<LWSP>", where <LWSP>
662 is a space or a tab. This is intended for native
663 representation of non-ASCII sets such as Japanese, where
664 existing encodings would be unreadable or would lose
665 data -- for example,
666 <motonori@cs.ritsumei.ac.jp> NAKAMURA Motonori
667 (romanized/less information)
668 <motonori@cs.ritsumei.ac.jp> =?ISO-2022-JP?B?GyRCQ2ZCPBsoQg==?=
669 =?ISO-2022-JP?B?GyRCQUdFNRsoQg==?=
670 (with MIME encoding, not human readable)
671 <motonori@cs.ritsumei.ac.jp> #@# ^[$BCfB<^[(B ^[$BAGE5^[(B
672 (native encoding with ISO-2022-JP)
673 The last form is human readable in the Japanese environment.
674 Based on a fix from (surprise!) Motonori Nakamura.
675 Don't make SMTP error returns on MAIL FROM: line be "sticky" for all
676 messages to that host; these are most frequently associated
677 with addresses rather than the host, with the exception of
678 421 (service shutting down). The effect was to cause queues
679 to sometimes take an excessive time to flush. Reported by
680 Robert Sargent of Southern Geographics Technologies.
681 Add Nice=N mailer option to set the niceness at which a mailer will
682 run.
683 When looking for a default config file (that is, not specified using
684 a -C flag), try a configuration file name extended by the
685 binary version number -- e.g., sendmail.8.7.Alpha.9.cf,
686 sendmail.8.7.Alpha.cf, sendmail.8.7.cf, sendmail.8.cf, and
687 sendmail.cf in that order. This should make it easier to
688 test new versions in a shared environment.
689 Log queue runs that are skipped due to high loads. They are logged
690 at LOG_INFO priority iff the log level is > 8. Contributed
691 by Bruce Nagel of Data General.
692 Allow the error mailer to accept a DSN-style error status code
693 instead of an sysexits status code in the host part.
694 Anything with a dot will be interpreted as a DSN-style code.
695 Add new mailer flag: F=3 will tell translations to Quoted-Printable
696 to encode characters that might be munged by an EBCDIC system
697 in addition to the set required by RFC 1521. The additional
698 characters are !, ", #, $, @, [, \, ], ^, `, {, |, }, and ~.
699 (Think of "IBM 360" as the mnemonic for this flag.)
700 Change check for mailing to files to look for a pathname of [FILE]
701 rather than looking for the mailer named *file*. The mapping
702 of leading slashes still goes to the *file* mailer. This
703 allows you to implement the *file* mailer as a separate
704 program, for example, to insert a Content-Length: header
705 or do special security policy. However, note that the usual
706 initial checking for the file permissions is still done, and
707 the program in question needs to be very careful about how
708 it does the file write to avoid security problems.
709 Be able to read ~root/.forward even if the path isn't accessible to
710 regular users. This is disrecommended because sendmail
711 sometimes does not run as root (e.g., when an unsafe option
712 is specified on the command line), but should otherwise be
713 safe because .forward files must be owned by the user for
714 whom mail is being forwarded, and cannot be a symbolic link.
715 Suggested by Forrest Aldrich of Wang Laboratories.
716 Add new "HostsFile" option that is the pathname to the /etc/hosts
717 file. This is used for canonifying hostnames when the
718 service type is "files".
719 Implement programs on F (read class from file) line. The syntax is
720 Fc|/path/to/program to read the output from the program
721 into class "c".
722 Probe the network interfaces to find alternate names for this
723 host. Requires the SIOCGIFCONF ioctl call. Code
724 contributed by SunSoft.
725 Add "E" configuration line to set or propogate environment
726 variables into children. "E<envar>" will propogate
727 the named variable from the environment when sendmail
728 was invoked into any children it calls; "E<envar>=<value>"
729 sets the named variable to the indicated value. Any
730 variables not explicitly named will not be in the child
731 environment. However, sendmail still forces an
732 "AGENT=sendmail" environment variable, in part to enforce
733 at least one environment variable, since many programs and
734 libraries die horribly if this is not guaranteed.
647e559b
EA
735 Change heuristic for rebuilding both NEWDB and NDBM versions of
736 alias databases -- new algorithm looks for the substring
737 "/yp/" in the file name. This is more portable and involves
738 less overhead. Suggested by Motonori Nakamura.
0893d326
EA
739 Dynamically allocate the queue work list so that you don't lose
740 jobs in large queue runs. The old QUEUESIZE compile parameter
741 is replaced by QUEUESEGSIZE (the unit of allocation, which
742 should not need to be changed) and the MaxQueueRunSize option,
743 which is the absolute maximum number of jobs that will ever
744 be handled in a single queue run. Based on code contributed
745 by Brian Coan of the Institute for Global Communications.
746 Log message when a message is dropped because it exceeds the maximum
747 message size. Suggested by Leo Bicknell of Virginia Tech.
ac4255b1
EA
748 Allow trusted users (those on a T line or in $=t) to use -bs without
749 an X-Authentication-Warning: added. Suggested by Mark Thomas
750 of Mark G. Thomas Consulting.
0fb25c9c
EA
751 Announce state of compile flags on -d0.1 (-d0.10 throws in the
752 OS-dependent defines). The old semantic of -d0.1 to not
753 run the daemon in background has been moved to -d99.100,
754 and the old 52.5 flag (to avoid disconnect() from closing
755 all output files) has been moved to 52.100. This makes
756 things more consistent (flags below .100 don't change
757 semantics) and separates out the backgrounding so that
44dda2d9
EA
758 it doesn't happen automatically on other unrelated debugging
759 flags.
0fb25c9c
EA
760 If -t is used but no addresses are found in the header, give an
761 error message rather than just doing nothing. Fix from
762 Motonori Nakamura.
763 On systems (like SunOS) where the effective gid is not necessarily
764 included in the group list returned by getgroups(), the
765 `restrictmailq' option could sometimes cause an authorized
766 user to not be able to use `mailq'. Fix from Charles Hannum
767 of MIT.
768 Allow symbolic service names for [IPC] mailers. Suggested by
769 Gerry Magennis of Logica International.
770 Add DontExpandCnames option to prevent $[ ... $] from expanding CNAMEs
771 when running DNS. For example, if the name FTP.Foo.ORG is
772 a CNAME for Cruft.Foo.ORG, then when sitting on a machine in
773 the Foo.ORG domain a lookup of "FTP" returns "Cruft.Foo.ORG"
774 if this option is not set, or "FTP.Foo.ORG" if it is set.
775 This is technically illegal under RFC 822 and 1123, but the
776 IETF is moving toward legalizing it. Note that turning on
777 this option is not sufficient to guarantee that a downstream
778 neighbor won't rewrite the address for you.
fa3cf037
EA
779 Add "-m" flag to makesendmail script -- this tells you what object
780 directory and Makefile it will use, but doesn't actually do
781 the make.
44dda2d9
EA
782 Do some additional checking on the contents of the qf file to try
783 to detect attacks against the qf file. In particular,
784 abort on any line beginning "From ", and add an "end of
785 file" line -- any data after that line is prohibited.
4c15d218
EA
786 Always use /etc/sendmail.cf, regardless of the arbitrary vendor
787 choices. This can be overridden in the Makefile by using
788 either -DUSE_VENDOR_CF_PATH to get the vendor location
789 (to the extent that we know it) or by defining
790 _PATH_SENDMAILCF (which is a "hard override"). This allows
791 sendmail 8 to have more consistent installation instructions.
9503f767
EA
792 PORTABILITY FIXES:
793 Solaris 2 from Rob McMahon <cudcv@csv.warwick.ac.uk>.
794 System V Release 4 from Motonori Nakamura of Ritsumeikan
795 University. This expands the disk size
796 checking to include all (?) SVR4 configurations.
797 System V Release 4 from Kimmo Suominen -- initgroups(3)
798 and setrlimit(2) are both available.
799 System V Release 4 from sob@sculley.ffg.com -- some versions
800 apparently "have EX_OK defined in other headerfiles."
801 Linux Makefile typo.
802 Linux getusershell(3) is broken in Slackware 2.0 --
803 from Andrew Pam of Xanadu Australia.
804 More Linux tweaking from John Kennedy of California State
805 University, Chico.
806 Cray changes from Eric Wassenaar: ``On Cray, shorts,
807 ints, and longs are all 64 bits, and all structs
808 are multiples of 64 bits. This means that the
809 sizeof operator returns only multiples of 8.
810 This requires adaptation of code that really
811 deals with 32 bit or 16 bit fields, such as IP
812 addresses or nameserver fields.''
813 DG/UX 5.4.3 from Mark T. Robinson <mtr@ornl.gov>. To
814 get the old behaviour, use -DDGUX_5_4_2.
815 DG/UX hack: add _FORCE_MAIL_LOCAL_=yes environment
816 variable to fix bogus /bin/mail behaviour.
817 Tandem NonStop-UX from Rick McCarty <mccarty@mpd.tandem.com>.
818 This also cleans up some System V Release 4 compile
819 problems.
820 Solaris 2: sendmail.cw file should be in /etc/mail to
821 match all the other configuration files. Fix
822 from Glenn Barry of Emory University.
823 Solaris 2.3: compile problem in conf.c. Fix from Alain
824 Nissen of the University of Liege, Belgium.
825 Ultrix: freespace calculation was incorrect. Fix from
826 Takashi Kizu of Osaka University.
827 SVR4: running in background gets a SIGTTOU because the
828 emulation code doesn't realize that "getpeername"
829 doesn't require reading the file. Fix from Peter
830 Wemm of DIALix.
831 Solaris 2.3: due to an apparent bug in the socket emulation
832 library, sockets can get into a "wedged" state where
833 they just return EPROTO; closing and re-opening the
834 socket clears the problem. Fix from Bob Manson
835 of Ohio State University.
836 Hitachi 3050R & 3050RX running HI-UX/WE2: portability
837 fixes from Akihiro Hashimoto ("Hash") of Chiba
838 University.
839