RELEASE_NOTES
上传用户:xu_441
上传日期:2007-01-04
资源大小:1640k
文件大小:330k
源码类别:

Email客户端

开发平台:

Unix_Linux

  1. Rinske of Siemens Business Services VAS.
  2. Solaris: Make sure HASGETUSERSHELL setting for SunOS is not
  3. used on a Solaris machine.  Problem noted by
  4. Stephen Ma of Jtec Pty Limited.
  5. CONFIG: SINIX: Update from Gerald Rinske of Siemens Business
  6. Services VAS.
  7. MAKEMAP: Use a better heuristic for detecting GDBM.
  8. CONTRIB: expn.pl: Updated version from the author, David Muir Sharnoff.
  9. OP.ME: Document the F=i mailer flag.  Problem noted by Per Hedeland of
  10. Ericsson.
  11. 8.8.7/8.8.7 1997/08/03
  12. If using Berkeley DB on systems without O_EXLOCK (open a file with
  13. an exclusive lock already set -- i.e., almost all systems
  14. except 4.4-BSD derived systems), the initial attempt at
  15. rebuilding aliases file if the database didn't already
  16. exist would fail.  Patch from Raymund Will of LST Software
  17. GmbH.
  18. Bogus incoming SMTP commands would reset the SMTP conversation.
  19. Problem noted by Fredrik J鰊sson of the Royal Institute
  20. of Technology, Stockholm.
  21. Since TCP Wrappers includes setenv(), unsetenv(), and putenv(),
  22. some environments could give "multiple definitions" for these
  23. routines during compilation.  If using TCP Wrappers, assume
  24. that these routines are included as though they were in the
  25. C library.  Patch from Robert La Ferla.
  26. When a NEWDB database map was rebuilt at the same time it was being
  27. used by a queue run, the maps could be left locked for the
  28. duration of the queue run, causing other processes to hang.
  29. Problem noted by Kendall Libby of Shore.NET.
  30. In some cases, NoRecipientAction=add-bcc was being ignored, so the
  31. mail was passed on without any recipient header.  This could
  32. cause problems downstream.  Problem noted by Xander Jansen
  33. of SURFnet ExpertiseCentrum.
  34. Give error when GDBM is used with sendmail.  GDBM's locking and
  35. linking of the .dir and .pag files interferes with sendmail's
  36. locking and security checks.  Problems noted by Fyodor
  37. Yarochkin of the Kyrgyz Republic FreeNet.
  38. Don't fsync qf files if SuperSafe option is not set.
  39. Avoid extra calls to gethostbyname for addresses for which a
  40. gethostbyaddr found no value.  Also, ignore any returns
  41. from gethostbyaddr that look like a dotted quad.
  42. If PTR lookup fails when looking up an SMTP peer, don't tag it as
  43. "may be forged", since at the network level we pretty much
  44. have to assume that the information is good.
  45. In some cases, errors during an SMTP session could leave files
  46. open or locked.
  47. Better handling of missing file descriptors (0, 1, 2) on startup.
  48. Better handling of non-setuid binaries -- avoids certain obnoxious
  49. errors during testing.
  50. Errors in file locking of NEWDB maps had the incorrect file name
  51. printed in the error message.
  52. If the AllowBogusHELO option were set and an EHLO with a bad or
  53. missing parameter were issued, the EHLO behaved like a HELO.
  54. Load limiting never kicked in for incoming SMTP transactions if the
  55. DeliveryMode=background and any recipient was an alias or
  56. had a .forward file.  From Nik Conwell of Boston University.
  57. On some non-Posix systems, the decision of whether chown(2) permits
  58. file giveaway was undefined.  From Tetsu Ushijima of the
  59. Tokyo Institute of Technology.
  60. Fix race condition that could cause the body of a message to be
  61. lost (so only the header was delivered).  This only occurs
  62. on systems that do not use flock(2), and only when a queue
  63. runner runs during a critical section in another message
  64. delivery.  Based on a patch from Steve Schweinhart of
  65. Results Computing.
  66. If a qf file was found in a mail queue directory that had a problem
  67. (wrong ownership, bad format, etc.) and the file name was
  68. exactly MAXQFNAME bytes long, then instead of being tried
  69. once, it would be tried on every queue run.  Problem noted
  70. by Bryan Costales of Mercury Mail.
  71. If the system supports an st_gen field in the status structure,
  72. include it when reporting that a file has changed after open.
  73. This adds a new compile flag, HAS_ST_GEN (0/1 option).
  74. This out to be checked as well as reported, since it is
  75. theoretically possible for an attacker to remove a file after
  76. it is opened and replace it with another file that has the
  77. same i-number, but some filesystems (notably AFS) return
  78. garbage in this field, and hence always look like the file
  79. has changed.  As a practical matter this is not a security
  80. problem, since the files can be neither hard nor soft links,
  81. and on no filesystem (that I am aware of) is it possible to
  82. have two files on the same filesystem with the same i-number
  83. simultaneously.
  84. Delete the root Makefile from the distribution -- it is only for
  85. use internally, and does not work at customer sites.
  86. Fix botch that caused the second MAIL FROM: command in a single
  87. transaction to clear the entire transaction.  Problem
  88. noted by John Kennedy of Cal State University, Chico.
  89. Work properly on machines that have _PATH_VARTMP defined without
  90. a trailing slash.  (And a pox on vendors that decide to
  91. ignore the established conventions!)  Problem noted by
  92. Gregory Neil Shapiro of WPI.
  93. Internal changes to make it easier to add another protocol family
  94. (intended for IPv6).  Patches are from John Kennedy of
  95. CSU Chico.
  96. In certain cases, 7->8 bit MIME decoding of Base64 text could leave
  97. an extra space at the beginning of some lines.  Problem
  98. noted by Charles Karney of Princeton University; fix based
  99. on a patch from Christophe Wolfhugel.
  100. Portability:
  101. Allow _PATH_VENDOR_CF to be set in Makefile for consistency
  102. with the _Sendmail_ book, 2nd edition.  Note that
  103. the book is actually wrong: _PATH_SENDMAILCF should
  104. be used instead.
  105. AIX 3.x: Include <sys/select.h>.  Patch from Gene Rackow
  106. of Argonne National Laboratory.
  107. OpenBSD from from Paul DuBois of the University of Wisconsin.
  108. RISC/os 4.0 from Paul DuBois of the University of Wisconsin.
  109. SunOS: Include <memory.h> to fix warning from util.c.  From
  110. James Aldridge of EUnet Ltd.
  111. Solaris: Change STDIR (location of status file) to /etc/mail
  112. in Makefiles.
  113. Linux, Dynix, UNICOS: Remove -DNDBM and -lgdbm from
  114. Makefiles.  Use NEWDB on Linux instead.
  115. NCR MP-RAS 3.x with STREAMware TCP/IP: SIOCGIFNUM ioctl
  116. exists but behaves differently than other OSes.
  117. Add SIOCGIFNUM_IS_BROKEN compile flag to get
  118. around the problem.  Problem noted by Tom Moore of
  119. NCR Corp.
  120. HP-UX 9.x: fix compile warnings for old select API.  Problem
  121. noted by Tom Smith of Digital Equipment Corp.
  122. UnixWare 2.x: compile warnings on offsetof macro.  Problem
  123. noted by Tom Good of the Community Access Information
  124. Resource Network
  125. SCO 4.2: compile problems caused by a change in the type of
  126. the "length" parameters passed to accept, getpeername,
  127. getsockname, and getsockopt.  Adds new compile flags
  128. SOCKADDR_SIZE_T and SOCKOPT_SIZE_T.  Problem reported
  129. by Tom Good of St. Vincent's North Richmond Community
  130. Mental Health Center Residential Services.
  131. AIX 4: Use size_t for SOCKADDR_SIZE_T and SOCKOPT_SIZE_T.
  132. Suggested by Brett Hogden of Rochester Gas & Electric
  133. Corp.
  134. Linux: avoid compile problem for versions of <setjmp.h> that
  135. #define both setjmp and longjmp.  Problem pointed out
  136. by J.R. Oldroyd of TerraNet.
  137. CONFIG: SCO UnixWare 2.1: Support for OSTYPE(sco-uw-2.1)
  138. from Christopher Durham of SCO.
  139. CONFIG: NEXTSTEP: define confCW_FILE to
  140. /etc/sendmail/sendmail.cw to match the usual
  141. configuration.  Patch from Dennis Glatting of
  142. PlainTalk.
  143. CONFIG: MAILER(fax) called a program that hasn't existed for a long
  144. time.  Convert to use the HylaFAX 4.0 conventions.  Suggested
  145. by Harry Styron.
  146. CONFIG: Improve sample anti-spam rulesets in cf/cf/knecht.mc.  These
  147. are the rulesets in use on sendmail.org.
  148. MAKEMAP: give error on GDBM files.
  149. MAIL.LOCAL: Make error messages a bit more explicit, for example,
  150. telling more details on what actually changed when "file
  151. changed after open".
  152. CONTRIB: etrn.pl: Ignore comments in Fw files.  Support multiple Fw
  153. files.
  154. CONTRIB: passwd-to-alias.pl: Handle 8 bit characters and '-'.
  155. NEW FILES:
  156. src/Makefiles/Makefile.OpenBSD
  157. src/Makefiles/Makefile.RISCos.4_0
  158. test/t_exclopen.c
  159. cf/ostype/sco-uw-2.1.m4
  160. DELETED FILES:
  161. Makefile
  162. 8.8.6/8.8.6 1997/06/14
  163.     *************************************************************
  164.     * The extensive assistance of Gregory Neil Shapiro of WPI *
  165.     * in preparing this release is gratefully appreciated. *
  166.     * Sun Microsystems has also provided resources toward *
  167.     * continued sendmail development. *
  168.     *************************************************************
  169. SECURITY: A few systems allow an open with the O_EXCL|O_CREAT open
  170. mode bits set to create a file that is a symbolic link that
  171. points nowhere.  This makes it possible to create a root
  172. owned file in an arbitrary directory by inserting the symlink
  173. into a writable directory after the initial lstat(2) check
  174. determined that the file did not exist.  The only verified
  175. example of a system having these odd semantics for O_EXCL
  176. and symbolic links was HP-UX prior to version 9.07.  Most
  177. systems do not have the problem, since a exclusive create
  178. of a file disallows symbolic links.  Systems that have been
  179. verified to NOT have the problem include AIX 3.x, *BSD,
  180. DEC OSF/1, HP-UX 9.07 and higher, Linux, SunOS, Solaris,
  181. and Ultrix.  This is a potential exposure on systems that
  182. have this bug and which do not have a MAILER-DAEMON alias
  183. pointing at a legitimate account, since this will cause old
  184. mail to be dropped in /var/tmp/dead.letter.
  185. SECURITY: Problems can occur on poorly managed systems, specifically,
  186. if maps or alias files are in world writable directories.
  187. If your system has alias maps in writable directories, it
  188. is potentially possible for an attacker to replace the .db
  189. (or .dir and .pag) files by symbolic links pointing at
  190. another database; this can be used either to expose
  191. information (e.g., by pointing an alias file at /etc/spwd.db
  192. and probing for accounts), or as a denial-of-service attack
  193. (by trashing the password database).  The fix disallows
  194. symbolic links entirely when rebuilding alias files or on
  195. maps that are in writable directories, and always warns on
  196. writable directories; 8.9 will probably consider writable
  197. directories to be fatal errors.  This does not represent an
  198. exposure on systems that have alias files in unwritable
  199. system directories.
  200. SECURITY: disallow .forward or :include: files that are links (hard
  201. or soft) if the parent directory (or any directory in the
  202. path) is writable by anyone other than the owner.  This is
  203. similar to the previous case for user files.  This change
  204. should not affect most systems, but is necessary to prevent
  205. an attacker who can write the directory from pointing such
  206. files at other files that are readable only by the owner.
  207. SECURITY: Tighten safechown rules: many systems will say that they
  208. have a safe (restricted to root) chown even on files that
  209. are mounted from another system that allows owners to give
  210. away files.  The new rules are very strict, trusting file
  211. ownership only in those few cases where the system has
  212. been verified to be at least as paranoid as necessary.
  213. However, it is possible to relax the rules to partially
  214. trust the ownership if the directory path is not world or
  215. group writable.  This might allow someone who has a legitimate
  216. :include: file (referenced directly from /etc/aliases) to
  217. become another non-root user if the :include: file is in a
  218. non-writable directory on an NFS-mounted filesystem where
  219. the local system says that giveaway is denied but it is
  220. actually permitted.  I believe this to be a very small set
  221. of cases.  If in doubt, do not point :include: aliases at
  222. NFS-mounted filesystems.
  223. SECURITY: When setting a numeric group id using the RunAsUser option
  224. (e.g., "O RunAsUser=10:20", the group id would not be set.
  225. Implicit group ids (e.g., "O RunAsUser=mailnull") or alpha
  226. group ids (e.g., "O RunAsUser=mailuser:mailgrp") worked fine.
  227. The user id was still set properly.  Problem noted by Uli
  228. Pralle of the Technical University of Berlin.
  229. Save the initial gid set for use when checking for if the
  230. PrivacyOptions=restrictmailq option is set.  Problem reported
  231. by Wolfgang Ley of DFN-CERT.
  232. Make 55x reply codes to the SMTP DATA-"." be non-sticky (i.e., a
  233. failure on one message won't affect future messages to the
  234. same host).
  235. IP source route printing had an "off by one" error that would
  236. affect any options that came after the route option.  Patch
  237. from Theo de Raadt.
  238. The "Message is too large" error didn't successfully bounce the error
  239. back to the sender.  Problem reported by Stephen More of
  240. PSI; patch from Gregory Neil Shapiro of WPI.
  241. Change SMTP status code 553 to map into Extended code 5.1.0 (instead
  242. of 5.1.3); it apparently gets used in multiple ways.
  243. Suggested by John Myers of Portola Communications.
  244. Fix possible extra null byte generated during collection if errors
  245. occur at the beginning of the stream.  Patch contributed by
  246. Andrey A. Chernov and Gregory Neil Shapiro.
  247. Code changes to avoid possible reentrant call of malloc/free within
  248. a signal handler.  Problem noted by John Beck of Sun
  249. Microsystems.
  250. Move map initialization to be earlier so that check_relay ruleset
  251. will have the latest version of the map data.  Problem noted
  252. by Paul Forgey of Metainfo; patch from Gregory Neil Shapiro.
  253. If there are fatal errors during the collection phase (e.g., message
  254. too large) don't send the bogus message.
  255. Avoid "cannot open xfAAA00000" messages when sending to aliases that
  256. have errors and have owner- aliases.  Problem noted by Michael
  257. Barber of MTU; fix from Gregory Neil Shapiro of WPI.
  258. Avoid null pointer dereference on illegal Boundary= parameters in
  259. multipart/mixed Content-Type: header.  Problem noted by
  260. Richard Muirden of RMIT University.
  261. Always print error messages during newaliases (-bi) even if the
  262. ErrorMode is not set to "print".  Fix from Gregory Neil
  263. Shapiro.
  264. Test mode could core dump if you did a /map lookup in an optional map
  265. that could not be opened.  Based on a fix from John Beck of
  266. Sun Microsystems.
  267. If DNS is misconfigured so that the last MX record tried points to
  268. a host that does not have an A record, but other MX records
  269. pointed to something reasonable, don't bounce the message
  270. with a "host unknown" error.  Note that this should really
  271. be fixed in the zone file for the domain.  Problem noted by
  272. Joe Rhett of Navigist, Inc.
  273. If a map fails (e.g., DNS times out) on all recipient addresses, mark
  274. the message as having been tried; otherwise the next queue
  275. run will not realize that this is a second attempt and will
  276. retry immediately.  Problem noted by Bryan Costales of
  277. Mercury Mail.
  278. If the clock is set backwards, and a MinQueueAge is set, no jobs
  279. will be run until the later setting of the clock is reached.
  280. "Problem" (I use the term loosely) noted by Eric Hagberg of
  281. Morgan Stanley.
  282. If the load average rises above the cutoff threshold (above which
  283. sendmail will not process the queue at all) during a queue
  284. run, abort the queue run immediately.  Problem noted by
  285. Bryan Costales of Mercury Mail.
  286. The variable queue processing algorithm (based on the message size,
  287. number of recipients, message precedence, and job age) was
  288. non-functional -- either the entire queue was processed or
  289. none of the queue was processed.  The updated algorithm
  290. does no queue run if a single recipient zero size job will
  291. not be run.
  292. If there is a fatal ("panic") message that will cause sendmail to
  293. die immediately, never hold the error message for future
  294. printing.
  295. Force ErrorMode=print in -bt mode so that all errors are printed
  296. regardless of the setting of the ErrorMode option in the
  297. configuration file.  Patch from Gregory Neil Shapiro.
  298. New compile flag HASSTRERROR says that this OS has the strerror(3)
  299. routine available in one of the libraries.  Use it in conf.h.
  300. The -m (match only) flag now works on host class maps.
  301. If class hash or btree maps are rebuilt, sendmail will now detect
  302. this and reopen the map.  Previously, they could give
  303. erroneous results during a single message processing
  304. (but would recover when the next message was received).
  305. Don't delete zero length queue files when doing queue runs until the
  306. files are at least ten minutes old.  This avoids a potential
  307. race condition: the creator creates the qf file, getting back
  308. a file descriptor.  The queue runner locks it and deletes it
  309. because it is zero length.  The creator then writes the
  310. descriptor that is now for a disconnected file, and the
  311. job goes away.  Based on a suggestion by Bryan Costales.
  312. When determining the "validated" host name ($_ macro), do a forward
  313. (A) DNS lookup on the result of the PTR lookup and compare
  314. results.  If they differ or if the PTR lookup fails, tag the
  315. address as "may be forged".
  316. Log null connections (i.e., hosts that connect but do not do any
  317. substantive activity on the connection before disconnecting;
  318. "substantive" is defined to be MAIL, EXPN, VRFY, or ETRN.
  319. Always permit "writes" to /dev/null regardless of the link count.
  320. This is safe because /dev/null is special cased, and no open
  321. or write is ever actually attempted.  Patch from Villy Kruse
  322. of TwinCom.
  323. If a message cannot be sent because of a 552 (exceeded storage
  324. allocation) response to the MAIL FROM:<>, and a SIZE= parameter
  325. was given, don't return the body in the bounce, since there
  326. is a very good chance that the message will double-bounce.
  327. Fix possible line truncation if a quoted-printable had an =00 escape
  328. in the body.  Problem noted by Charles Karney of the Princeton
  329. Plasma Physics Laboratory.
  330. Notify flags (e.g., -NSUCCESS) were lost on user+detail addresses.
  331. Problem noted by Kari Hurtta of the Finnish Meteorological
  332. Institute.
  333. The MaxDaemonChildren option wasn't applying to queue runs as
  334. documented.  Note that this increases the potential denial
  335. of service problems with this option: an attacker can
  336. connect many times, and thereby lock out queue runs as well
  337. as incoming connections.  If you use this option, you should
  338. run the "sendmail -bd" and "sendmail -q30m" jobs separately
  339. to avoid this attack.  Failure to limit noted by Matthew
  340. Dillon of BEST Internet Communications.
  341. Always give a message in newaliases if alias files cannot be
  342. opened instead of failing silently.  Suggested by Gregory
  343. Neil Shapiro.  This change makes the code match the O'Reilly
  344. book (2nd edition).
  345. Some older versions of the resolver could return with h_errno == -1
  346. if no name server could be reached, causing mail to bounce
  347. instead of queueing.  Treat this like TRY_AGAIN.  Fix from
  348. John Beck of SunSoft.
  349. If a :include: file is owned by a user that does not have an entry
  350. in the passwd file, sendmail could dereference a null pointer.
  351. Problem noted by Satish Mynam of Sun Microsystems.
  352. Take precautions to make sure that the SMTP protocol cannot get out
  353. of sync if (for example) an alias file cannot be opened.
  354. Fix a possible race condition that can cause a SIGALRM to come in
  355. immediately after a SIGHUP, causing the new sendmail to die.
  356. Avoid possible hang on SVr3 systems when doing child reaping.  Patch
  357. from Villy Kruse of TwinCom.
  358. Ignore improperly formatted SMTP reply codes.  Previously these were
  359. partially processed, which could cause confusing error
  360. returns.
  361. Fix possible bogus pointer dereference when doing ldapx map lookups
  362. on some architectures.
  363. Portability:
  364. A/UX: from Jim Jagielski of NASA/GSFC.
  365. glibc: SOCK_STREAM was changed from a #define to an enum,
  366. thus breaking #ifdef SOCK_STREAM.  Only option seems
  367. to be to assume SOCK_STREAM if __GNU_LIBRARY__ is
  368. defined.  Problem reported by A Sun of the University
  369. of Washington.
  370. Solaris: use SIOCGIFNUM to get the number of interfaces on
  371. the system rather than guessing at compile time.
  372. Patch contributed by John Beck of Sun Microsystems.
  373. Intel Paragon: from Wendy Lin of Purdue University.
  374. GNU Hurd: from Miles Bader of the GNU project.
  375. RISC/os 4.50 from Harlan Stenn of PFCS Corporation.
  376. ISC Unix: wait never returns if SIGCLD signals are blocked.
  377. Unfortunately releasing them opens a race condition,
  378. but there appears to be no fix for this.  Patch from
  379. Gregory Neil Shapiro.
  380. BIND 8.1 for IPv6 compatibility from John Kennedy.
  381. Solaris: a bug in strcasecmp caused characters with the
  382. high order bit set to apparently randomly match
  383. letters -- for example, $| (0233) matches "i" and "I".
  384. Problem noted by John Gregson of the University of
  385. Cambridge.
  386. IRIX 6.x: make Makefile.IRIX.6.2 apply to all 6.x.  From
  387. Kari Hurtta.
  388. IRIX 6.x: Create Makefiles for systems that claim to be
  389. IRIX64 but are 6.2 or higher (so use the regular
  390. IRIX Makefile).
  391. IRIX 6.x: Fix load average computation on 64 bit kernels.
  392. Problem noted by Eric Hagberg of Morgan Stanley.
  393. CONFIG: Some canonification was still done for UUCP-like addresses
  394. even if FEATURE(nocanonify) was set.  Problem pointed out by
  395. Brian Candler.
  396. CONFIG: In some cases UUCP mailers wouldn't properly recognize all
  397. local names as local.  Problem noted by Jeff Polk of BSDI;
  398. fix provided by Gregory Neil Shapiro.
  399. CONFIG: The "local:user" syntax entries in mailertables and other
  400. "mailer:user" syntax locations returned an incorrect value
  401. for the $h macro.  Problem noted by Gregory Neil Shapiro.
  402. CONFIG: Retain "+detail" information when forwarding mail to a
  403. MAIL_HUB, LUSER_RELAY, or LOCAL_RELAY.  Patch from Philip
  404. Guenther of Gustavus Adolphus College.
  405. CONFIG: Make sure user+detail works for FEATURE(virtusertable);
  406. rules are the same as for aliasing.  Based on a patch from
  407. Gregory Neil Shapiro.
  408. CONFIG: Break up parsing rules into several pieces; this should
  409. have no functional change in this release, but makes it
  410. possible to have better anti-spam rulesets in the future.
  411. CONFIG: Disallow double dots in host names to avoid having the
  412. HostStatusDirectory store status under the wrong name.
  413. In some cases this can be used as a denial-of-service attack.
  414. Problem noted by Ron Jarrell of Virginia Tech, patch from
  415. Gregory Neil Shapiro.
  416. CONFIG: Don't use F=m (multiple recipients per invocation) for
  417. MAILER(procmail), but do pass F=Pn9 (include Return-Path:,
  418. don't include From_, and convert to 8-bit).  Suggestions
  419. from Kimmo Suominen and Roderick Schertler.
  420. CONFIG: Domains under $=M (specified with MASQUERADE_DOMAIN) were
  421. being masqueraded as though FEATURE(masquerade_entire_domain)
  422. was specified, even when it wasn't.
  423. MAIL.LOCAL: Solaris 2.6 has snprintf.  From John Beck of SunSoft.
  424. MAIL.LOCAL: SECURITY: check to make sure that an attacker doesn't
  425. "slip in" a symbolic link between the lstat(2) call and the
  426. exclusive open.  This is only a problem on System V derived
  427. systems that allow an exclusive create on files that are
  428. symbolic links pointing nowhere.
  429. MAIL.LOCAL: If the final mailbox close() failed, the user id was
  430. not reset back to root, which on some systems would cause
  431. later mailboxes to fail.  Also, any partial message would
  432. not be truncated, which could result in repeated deliveries.
  433. Problem noted by Bruce Evans via Peter Wemm (FreeBSD
  434. developers).
  435. MAKEMAP: Handle cases where O_EXLOCK is #defined to be 0.  A similar
  436. change to the sendmail map code was made in 8.8.3.  Problem
  437. noted by Gregory Neil Shapiro.
  438. MAKEMAP: Give warnings on file problems such as map files that are
  439. symbolic links; although makemap is not setuid root, it is
  440. often run as root and hence has the potential for the same
  441. sorts of problems as alias rebuilds.
  442. MAKEMAP: Change compilation so that it will link properly on
  443. NEXTSTEP.
  444. CONTRIB: etrn.pl: search for Cw as well as Fw lines in sendmail.cf.
  445. Accept an optional list of arguments following the server
  446. name for the ETRN arguments to use (instead of $=w).  Other
  447. miscellaneous bug fixes.  From Christian von Roques via
  448. John Beck of Sun Microsystems.
  449. CONTRIB: Add passwd-to-alias.pl, contributed by Kari Hurtta.  This
  450. Perl script converts GECOS information in the /etc/passwd
  451. file into aliases, allowing for faster access to full name
  452. lookups; it is also clever about adding aliases (to root)
  453. for system accounts.
  454. NEW FILES:
  455. src/safefile.c
  456. cf/ostype/gnuhurd.m4
  457. cf/ostype/irix6.m4
  458. contrib/passwd-to-alias.pl
  459. src/Makefiles/Makefile.IRIX64.6.1
  460. src/Makefiles/Makefile.IRIX64.6.x
  461. RENAMED FILES:
  462. src/Makefiles/Makefile.IRIX.6.2 => Makefile.IRIX.6.x
  463. src/Makefiles/Makefile.IRIX64 => Makefile.IRIX64.6.0
  464. 8.8.5/8.8.5 1997/01/21
  465. SECURITY: Clear out group list during startup.  Without this, sendmail
  466. will continue to run with the group permissions of the caller,
  467. even if RunAsUser is specified.
  468. SECURITY: Make purgestat (-bH) be root-only.  This is not in response
  469. to any known attack, but it's best to be conservative.
  470. Suggested by Peter Wemm of DIALix.
  471. SECURITY: Fix buffer overrun problem in MIME code that has possible
  472. security implications.  Patch from Alex Garthwaite of the
  473. University of Pennsylvania.
  474. Use of a -f flag with a phrase attached (e.g., "-f 'Full Name <addr>'")
  475. would truncate the address after "Full".  Although the -f
  476. syntax is incorrect (since it is in the envelope, it
  477. shouldn't have comments and full names), the failure mode
  478. was unnecessarily awful.
  479. Fix a possible null pointer dereference when converting 8-bit data
  480. to a 7-bit format.  Problem noted by Jim Hutchins of
  481. Sandia National Labs and David James of British Telecom.
  482. Clear out stale state that affected F=9 on SMTP mailers in queue
  483. runs.  Although this really shouldn't be used (F=9 is for
  484. final delivery only, and using it on an SMTP mailer makes
  485. it possible for a message to be converted from 8->7->8->7
  486. bits several times), it shouldn't have failed with a syserr.
  487. Problem noted by Eric Hagberg of Morgan Stanley.
  488. _Really_ fix the multiple :maildrop code in the user database
  489. module.  Patch from Roy Mongiovi of Georgia Tech.
  490. Let F lines in the configuration file actually read root-only
  491. files if the configuration file is safe.  Based on a
  492. patch from Keith Reynolds of SCO.
  493. ETRN followed by QUIT would hold the connection open until the queue
  494. run completed.  Problem noted by Truck Lewis of TDK
  495. Semiconductor Corp.
  496. It turns out that despite the documentation, the TCP wrappers library
  497. does _not_ log rejected connections.  Do the logging ourselves.
  498. Problem noted by Fletcher Mattox of the University of Texas
  499. at Austin.
  500. If sendmail finds a qf file in its queue directory that is an unknown
  501. version (e.g., when backing out to an old version), the
  502. error is reported on every queue run.  Change it to only
  503. give the error once (and rename the qf => Qf).  Patch from
  504. William A. Gianopoulos of Raytheon Company.
  505. Start a new session when doing background delivery; currently it
  506. ignored signals but didn't start a new signal, that caused
  507. some problems if a background process tried to send mail
  508. under certain circumstances.  Problem noted by Eric Hagberg
  509. of Morgan Stanley; fix from Kari Hurtta.
  510. Simplify test for skipping a queue run to just check if the current
  511. load average is >= the queueing load average.  Previously
  512. the check factored in some other parameters that caused it
  513. to essentially never skip the queue run.  Patch from Bryan
  514. Costales.
  515. If the SMTP server is running in "nullserver" mode (that is, it is
  516. rejecting all commands), start sleeping after MAXBADCOMMAND
  517. (25) commands; this helps prevent a bad guy from putting
  518. you into a tight loop as a denial-of-service attack.  Based
  519. on an e-mail conversation with Brad Knowles of AOL.
  520. Slow down when too many "light weight" commands have been issued;
  521. this helps prevent a class of denial-of-service attacks.
  522. The current values and defaults are:
  523.     MAXNOOPCOMMANDS 20 NOOP, VERB, ONEX, XUSR
  524.     MAXHELOCOMMANDS 3 HELO, EHLO
  525.     MAXVRFYCOMMANDS 6 VRFY, EXPN
  526.     MAXETRNCOMMANDS 8 ETRN
  527. These will probably be configurable in a future release.
  528. On systems that have uid_t typedefed to be an unsigned short, programs
  529. that had the F=S flag and no U= equate would be invoked with
  530. the real uid set to 65535 rather than being left unchanged.
  531. In some cases, NOTIFY=NEVER was not being honored.  Problem noted
  532. by Steve Hubert of the University of Washington, Seattle.
  533. Mail that was Quoted-Printable encoded and had a soft line break on
  534. the last line (i.e., an incomplete continuation) had the last
  535. line dropped.  Since this appears to be illegal it isn't
  536. clear what to do with it, but flushing the last line seems
  537. to be a better "fail soft" approach.  Based on a patch from
  538. Eric Hagberg.
  539. If AllowBogusHELO and PrivacyOptions=needmailhelo are both set, a
  540. bogus HELO command still causes the "Polite people say HELO
  541. first" error message.  Problem pointed out by Chris Thomas
  542. of UCLA; patch from John Beck of SunSoft.
  543. Handle "sendmail -bp -qSfoobar" properly if restrictqrun is set
  544.  in PrivacyOptions.  The -q shouldn't turn this command off.
  545.  Problem noted by Murray Kucherawy of Pacific Bell Internet;
  546.  based on a patch from Gregory Neil Shapiro of WPI.
  547. Don't consider SMTP reply codes 452 or 552 (exceeded storage allocation)
  548. in a DATA transaction to be sticky; these can occur because
  549. a message is too large, and smaller messages should still go
  550. through.  Problem noted by Matt Dillon of Best Internet
  551. Communications.
  552. In some cases bounces were saved in /var/tmp/dead.letter even if they
  553. had been successfully delivered to the envelope sender.
  554. Problem noted Eric Hagberg of Morgan Stanley; solution from
  555. Gregory Neil Shapiro of WPI.
  556. Give better diagnostics on long alias lines.  Based on code contributed
  557. by Patrick Gosling of the University of Cambridge.
  558. Increase the number of virtual interfaces that will be probed for
  559. alternate names.  Problem noted by Amy Rich of Shore.Net.
  560. PORTABILITY:
  561. UXP/DS V20L10 for Fujitsu DS/90: Makefile patches from
  562. Toshiaki Nomura of Fujitsu Limited.
  563. SunOS with LDAP support: compile problems with struct timeval.
  564. Patch from Nick Cuccia of TCSI Corporation.
  565. SCO: from Keith Reynolds of SCO.
  566. Solaris: kstat load average computation wasn't being used.
  567. Fixes from Michael Ju. Tokarev of Telecom Service, JSC
  568. (Moscow).
  569. OpenBSD: from Jason Downs of teeny.org.
  570. Altos System V: from Tim Rice.
  571. Solaris 2.5: from Alan Perry of SunSoft.
  572. Solaris 2.6: from John Beck of SunSoft.
  573. Harris Nighthawk PowerUX (mh6000 box): from Bob Miorelli
  574. of Pratt & Whitney <miorelli@pweh.com>.
  575. CONFIG: It seems that I hadn't gotten the Received: line syntax
  576. _just_right_ yet.  Tweak it again.  I'll omit the names
  577. of the "contributors" (quantity two) in this one case.
  578. As of now, NO MORE DISCUSSION about the syntax of the
  579. Received: line.
  580. CONFIG: Although FEATURE(nullclient) uses EXPOSED_USER (class $=E),
  581. it never inserts that class into the output file.  Fix it
  582. so it will honor EXPOSED_USER but will _not_ include root
  583. automatically in this class.  Problem noted by Ronan KERYELL
  584. of Centre de Recherche en Informatique de l'蒫ole Nationale
  585. Sup閞ieure des Mines de Paris (CRI-ENSMP).
  586. CONFIG: Clean up handling of "local:" syntax in relay specifications
  587. such as LUSER_RELAY.  This change permits the following
  588. syntaxes:  ``local:'' will send to the same user on the
  589. local machine (e.g., in a mailertable entry for "host",
  590. ``local:'' will cause an address addressed to user@host to
  591. go to user on the local machone).  ``local:user'' will send
  592. to the named user on the local machine.  ``local:user@host''
  593. is equivalent to ``local:user'' (the host is ignored).  In
  594. all cases, the original user@host is passed in $@ (i.e., the
  595. detail information).  Inspired by a report from Michael Fuhr.
  596. CONFIG: Strip quotes from the first word of an "error:" host
  597. indication.  This lets you set (for example) the LUSER_RELAY
  598. to be ``error:"5.1.1" Your Message Here''.  Note the use
  599. of the " so that the resulting string is properly quoted.
  600. Problem noted by Gregory Neil Shapiro of WPI.
  601. OP.ME: documentation was inconsistent about whether sendmail did a
  602. NOOP or a RSET to probe the connection (it does a RSET).
  603. Inconsistency noted by Deeran Peethamparam.
  604. OP.ME: insert additional blank pages so it will print properly on
  605. a duplex printer.  From Matthew Black of Cal State University,
  606. Long Beach.
  607. 8.8.4/8.8.4 1996/12/02
  608. SECURITY: under some circumstances, an attacker could get additional
  609. permissions by hard linking to files that were group
  610. writable by the attacker.  The solution is to disallow any
  611. files that have hard links -- this will affect .forward,
  612. :include:, and output files.  Problem noted by Terry
  613. Kyriacopoulos of Interlog Internet Services.  As a
  614. workaround, set UnsafeGroupWrites -- always a good idea.
  615. SECURITY: the TryNullMXList (w) option should not be safe -- if it
  616. is, it is possible to do a denial-of-service attack on
  617. MX hosts that rely on the use of the null MX list.  There
  618. is no danger if you have this option turned off (the default).
  619. Problem noted by Dan Bernstein.  Also, make the DontInitGroups
  620. unsafe.  I know of no specific attack against this, although
  621. a denial-of-service attack is probably possible, but in theory
  622. you should not be able to safely tweak anything that affects
  623. the permissions that are used when mail is delivered.
  624. Purgestat could go into an infinite loop if one of the host status
  625. directories somehow became empty.  Problem noted by Roy
  626. Mongiovi of Georgia Tech.
  627. Processes got "lost" when counting children due to a race condition.
  628. This caused "proc_list_probe: lost pid" messages to be logged.
  629. Problem noted by several people.
  630. On systems with System V SIGCLD child signal semantics (notably AIX
  631. and HP-UX), mail transactions would print the message "451
  632. SMTP-MAIL: lost child: No child processes".  Problem noted
  633. by several people.
  634. Miscellaneous compiler warnings on picky compilers (or when setting
  635. gcc to high warning levels).  From Tom Moore of NCR Corp.
  636. SMTP protocol errors, and most errors on MAIL FROM: lines should
  637. not be persistent between runs, since they are based on the
  638. message rather than the host.  Problem noted by Matt Dillon
  639. of Best Internet Communications.
  640. The F=7 flag was ignored on SMTP mailers.  Problem noted by Tom Moore
  641. of NCR (a.k.a., AT&T Global Information Solutions).
  642. Avoid the possibility of having a child daemon run to completion
  643. (including closing the SMTP socket) before the parent has
  644. had a chance to close the socket; this can cause the parent
  645. to hang for a long time waiting for the socket to drain.
  646. Patch from Don Lewis of TDK Semiconductor.
  647. If the fork() failed in a queue run, the queue runners would not be
  648. rescheduled (so queue runs would stop).  Patch from Don Lewis.
  649. Some error conditions in ETRN could cause output without an SMTP
  650. status code.  Problem noted by Don Lewis.
  651. Multiple :maildrop addresses in the user database didn't work properly.
  652. Patch from Roy Mongiovi of Georgia Tech.
  653. Add ".db" automatically onto any user database spec that does not
  654. already have it; this is for consistency with makemap, the
  655. K line, and the documentation.  Inconsistency pointed out
  656. by Roy Mongiovi.
  657. Allow sendmail to be properly called in nohup mode.  Patch from
  658. Kyle Jones of UUNET.
  659. Change ETRN to ignore but still update host status files; previously
  660. it would ignore them and not save the updated status, which
  661. caused stale information to be maintained.  Based on a patch
  662. from Christopher Davis of Kapor Enterprises Inc.  Also, have
  663. ETRN ignore the MinQueueAge option.
  664. Patch long term host status to recover more gracefully from an empty
  665. host status file condition.  Patch from NAKAMURA Motonori
  666. of Kyoto University.
  667. Several patches to signal handling code to fix potential race
  668. conditions from Don Lewis.
  669. Make it possible to compile with -DDAEMON=0 (previously it had some
  670. compile errors).  This turns DAEMON, QUEUE, and SMTP into
  671. 0/1 compilation flags.  Note that DAEMON is an obsolete
  672. compile flag; use NETINET instead.  Solution based on a
  673. patch from Bryan Costales.
  674. PORTABILITY FIXES:
  675. AIX4: getpwnam() and getpwuid() do a sequential scan of the
  676. /etc/security/passwd file when called as root.  This
  677. is very slow on some systems.  To speed it up, use the
  678. (undocumented) _getpw{nam,uid}_shadow() routines.
  679. Patch from Chris Thomas of UCLA/OAC Systems Group.
  680. SCO 5.x: include -lprot in the Makefile.  Patch from Bill
  681. Glicker of Burrelle's Information Service.
  682. NEWS-OS 4.x: need a definition for MODE_T to compile.  Patch
  683. from Makoto MATSUSHITA of Osaka University.
  684. SunOS 4.0.3: compile problems.  Patches from Andrew Cole of
  685. Leeds University and SASABE Tetsuro of the University
  686. of Tokyo.
  687. DG/UX 5.4.4.11 from Brian J. Murrell of InterLinx Support
  688. Services, Inc.
  689. Domain/OS from Don (Truck) Lewis of TDK Semiconductor Corp.
  690. I believe this to have only been a problem if you
  691. compiled with -DUSE_VENDOR_CF_PATH -- another reason
  692. to stick with /etc/sendmail.cf as your One True Path.
  693. Digital UNIX (OSF/1 on Alpha) load average computation from
  694. Martin Laubach of the Technischen Universit鋞 Wien.
  695. CONFIG: change default Received: line to be multiple lines rather
  696. than one long one.  By popular demand.
  697. MAIL.LOCAL: warnings weren't being logged on some systems.  Patch
  698. from Jerome Berkman of U.C. Berkeley.
  699. MAKEMAP: be sure to zero hinfo to avoid cruft that can cause runs
  700. to take a very long time.  Problem noted by Yoshiro YONEYA
  701. of NTT Software Corporation.
  702. CONTRIB: add etrn.pl, contributed by John Beck.
  703. NEW FILES:
  704. contrib/etrn.pl
  705. 8.8.3/8.8.3 1996/11/17
  706. SECURITY: it was possible to get a root shell by lying to sendmail
  707. about argv[0] and then sending it a signal.  Problem noted
  708. by Leshka Zakharoff <leshka@leshka.chuvashia.su> on the
  709. best-of-security list.
  710. Log sendmail binary version number in "Warning: .cf version level
  711. (%d) exceeds program functionality (%d) message" -- this
  712. should make it clearer to people that they are running
  713. the wrong binary.
  714. Fix a problem that occurs when you open an SMTP connection and then
  715. do one or more ETRN commands followed by a MAIL command; at
  716. the end of the DATA phase sendmail would incorrectly report
  717. "451 SMTP-MAIL: lost child: No child processes".  Problem
  718. noted by Eric Bishop of Virginia Tech.
  719. When doing text-based host canonification (typically /etc/hosts
  720. lookup), a null host name would match any /etc/hosts entry
  721. with space at the end of the line.  Problem noted by Steve
  722. Hubert of the University of Washington, Seattle.
  723. 7 to 8 bit BASE64 MIME conversions could duplicate bits of text.
  724. Problem reported by Tom Smith of Digital Equipment Corp.
  725. Increase the size of the DNS answer buffer -- the standard UDP packet
  726. size PACKETSZ (512) is not sufficient for some nameserver
  727. answers containing very many resource records.  The resolver
  728. may also switch to TCP and retry if it detects UDP packet
  729. overflow.  Also, allow for the fact that the resolver
  730. routines res_query and res_search return the size of the
  731. *un*truncated answer in case the supplied answer buffer it
  732. not big enough to accommodate the entire answer.  Patch from
  733. Eric Wassenaar.
  734. Improvements to MaxDaemonChildren code.  If you think you have too
  735. many children, probe the ones you have to verify that they
  736. are still around.  Suggested by Jared Mauch of CICnet, Inc.
  737. Also, do this probe before growing the vector of children
  738. pids; this previously caused the vector to grow indefinitely
  739. due to a race condition.  Problem reported by Kyle Jones of
  740. UUNET.
  741. On some architectures, <db.h> (from the Berkeley DB library) defines
  742. O_EXLOCK to zero; this fools the map compilation code into
  743. thinking that it can avoid race conditions by locking on open.
  744. Change it to check for O_EXLOCK non-zero.  Problem noted by
  745. Leif Erlingsson of Data Lege.
  746. Always call res_init() on startup (if compiled in, of course) to
  747. allow the sendmail.cf file to tweak resolver flags; without
  748. it, flag tweaks in ResolverOptions are ignored.  Patch from
  749. Andrew Sun of Merrill Lynch.
  750. Improvements to host status printing code.  Suggested by Steve Hubert
  751. of the University of Washington, Seattle.
  752. Change MinQueueAge option processing to do the check for the job age
  753. when reading the queue file, rather than at the end; this
  754. avoids parsing the addresses, which can do DNS lookups.
  755. Problem noted by John Beck of InReference, Inc.
  756. When MIME was being 7->8 bit decoded, "From " lines weren't being
  757. properly escaped.  Problem noted by Peter Nilsson of the
  758. University of Linkoping.
  759. In some cases, sendmail would retain root permissions during queue
  760. runs even if RunAsUser was set.  Problem noted by Mark
  761. Thomas of Mark G. Thomas Consulting.
  762. If the F=l flag was set on an SMTP mailer to indicate that it is
  763. actually local delivery, and NOTIFY=SUCCESS is specified in
  764. the envelope, and the receiving SMTP server speaks DSN, then
  765. the DSN would be both generated locally and propagated to the
  766. other end.
  767. The U= mailer field didn't correctly extract the group id if the
  768. user id was numeric.  Problem noted by Kenneth Herron of
  769. MCI Telecommunications Communications.
  770. If a message exceeded the fixed maximum size on input, the body of
  771. the message was included in the bounce.  Note that this did
  772. not occur if it exceeded the maximum _output_ size.  Problem
  773. reported by Kyle Jones of UUNET.
  774. PORTABILITY FIXES:
  775. AIX4: 4.1 doesn't have a working setreuid(2); change the
  776. AIX4 defines to use seteuid(2) instead, which
  777. works on 4.1 as well as 4.2.  Problem noted by
  778. H錵an Lindholm of interAF, Sweden.
  779. AIX4: use tzname[] vector to determine time zone name.
  780. Patch from NAKAMURA Motonori of Kyoto University.
  781. MkLinux: add Makefile.Linux.ppc and OSTYPE(mklinux) support.
  782. Contributed by Paul DuBois <dubois@primate.wisc.edu>.
  783. Solaris: kstat(3k) support for retrieving the load average.
  784. This adds the LA_KSTAT definition for LA_TYPE.
  785. The outline of the implementation was contributed
  786. by Michael Tokarev of Telecom Service, JSC, Moscow.
  787. HP-UX 10.0 gripes about the (perfectly legal!) forward
  788. declaration of struct rusage at the top of conf.h;
  789. change it to only be included if you are using gcc,
  790. which is apparently the only compiler that requires
  791. it in the first place.  Problem noted by Jeff
  792. Earickson of Colby College.
  793. IRIX: don't default to using gcc.  IRIX is a civilized
  794. operating system that comes with a decent compiler
  795. by default.  Problem noted by Barry Bouwsma and
  796. Kari Hurtta.
  797. CONFIG: specify F=9 as default in FEATURE(local_procmail) for
  798. consistency with other local mailers.  Inconsistency
  799. pointed out by Teddy Hogeborn <teddy@fukt.hk-r.se>.
  800. CONFIG: if the "limited best mx" feature is used (to reduce DNS
  801. overhead) as part of the bestmx_is_local feature, the
  802. domain part was dropped from the name.  Patch from Steve
  803. Hubert of the University of Washington, Seattle.
  804. CONFIG: catch addresses of the form "user@.dom.ain"; these could
  805. end up being translated to the null host name, which would
  806. return any entry in /etc/hosts that had a space at the end
  807. of the line.  Problem noted by Steve Hubert of the
  808. University of Washington, Seattle.
  809. CONFIG: add OSTYPE(aix4).  From Michael Sofka of Rensselaer
  810. Polytechnic Institute.
  811. MAKEMAP: tweak hash and btree parameters for better performance.
  812. Patch from Matt Dillon of Best Internet Communications.
  813. NEW FILES:
  814. src/Makefiles/Makefile.Linux.ppc
  815. cf/ostype/aix4.m4
  816. cf/ostype/mklinux.m4
  817. 8.8.2/8.8.2 1996/10/18
  818. SECURITY: fix a botch in the 7-bit MIME patch; the previous patch
  819. changed the code but didn't fix the problem.
  820. PORTABILITY FIXES:
  821. Solaris: Don't use the system getusershell(3); it can
  822. apparently corrupt the heap in some circumstances.
  823. Problem found by Ken Pizzini of Spry, Inc.
  824. OP.ME: document several mailer flags that were accidentally omitted
  825. from this document.  These flags were F=d, F=j, F=R, and F=9.
  826. CONFIG: no changes.
  827. 8.8.1/8.8.1 1996/10/17
  828. SECURITY: unset all environment variables that the resolver will
  829. examine during queue runs and daemon mode.  Problem noted
  830. by Dan Bernstein of the University of Illinois at Chicago.
  831. SECURITY: in some cases an illegal 7-bit MIME-encoded text/plain
  832. message could overflow a buffer if it was converted back
  833. to 8 bits.  This caused core dumps and has the potential
  834. for a remote attack.  Problem first noted by Gregory Shapiro
  835. of WPI.
  836. Avoid duplicate deliveries of error messages on systems that don't
  837. have flock(2) support.  Patch from Motonori Nakamura of
  838. Kyoto University.
  839. Ignore null FallBackMX (V) options.  If this option is null (as
  840. opposed to undefined) it can cause "null signature" syserrs
  841. on illegal host names.
  842. If a Base64 encoded text/plain message has no trailing newline in
  843. the encoded text, conversion back to 8 bits will drop the
  844. final line.  Problem noted by Pierre David.
  845. If running with a RunAsUser, sendmail would give bogus "cannot
  846. setuid" (or seteuid, or setreuid) messages on some systems.
  847. Problem pointed out by Jordan Mendelson of Web Services, Inc.
  848. Always print error messages in -bv mode -- previously, -bv would
  849. be absolutely silent on errors if the error mode was sent
  850. to (say) mail-back.  Problem noted by Kyle Jones of UUNET.
  851. If -qI/R/S is set (or the ETRN command is used), ignore all long
  852. term host status.  This is necessary because it is common
  853. to do this when you know a host has just come back up.
  854. Disallow duplicate HELO/EHLO commands as required by RFC 1651 section
  855. 4.2.  Excessive permissiveness noted by Lee Flight of the
  856. University of Leicester.
  857. If a service (such as NIS) is specified as the last entry in the
  858. service switch, but that service is not compiled in, sendmail
  859. would return a temporary failure when an entry was not found
  860. in the map.  This caused the message to be queued instead of
  861. bouncing immediately.  Problem noted by Harry Edmon of the
  862. University of Washington.
  863. PORTABILITY FIXES:
  864. Solaris 2.3 had compilation problems in conf.c.  Several
  865. people pointed this out.
  866. NetBSD from Charles Hannum of MIT.
  867. AIX4 improvements based on info from Steve Bauer of South
  868. Dakota School of Mines & Technology.
  869. CONFIG: ``error:code message'' syntax was broken in virtusertable.
  870. Patch from Gil Kloepfer Jr.
  871. CONFIG: if FEATURE(nocanonify) was specified, hosts in $=M (set
  872. using MASQUERADE_DOMAIN) were not masqueraded unless they
  873. were also in $=w.  Problem noted by Zoltan Basti of
  874. Softec.
  875. MAIL.LOCAL: patches to compile and link cleanly on AIX.  Based
  876. on a patch from Eric Hagberg of Morgan Stanley.
  877. MAIL.LOCAL: patches to compile on NEXTSTEP.  From Patrick Nolan
  878. of Stanford via Robert La Ferla.
  879. 8.8.0/8.8.0 1996/09/26
  880. Under some circumstances, Bcc: headers would not be properly
  881. deleted.  Pointed out by Jonathan Kamens of OpenVision.
  882. Log a warning if the sendmail daemon is invoked without a full
  883. pathname, which prevents "kill -1" from working.  I was
  884. urged to put this in by Andrey A. Chernov of DEMOS (Russia).
  885. Fix small buffer overflow.  Since the data in this buffer was not
  886. read externally, there was no security problem (and in fact
  887. probably wouldn't really overflow on most compilers).  Pointed
  888. out by KIZU takashi of Osaka University.
  889. Fix problem causing domain literals such as [1.2.3.4] to be ignored
  890. if a FallbackMXHost was specified in the configuration file
  891. -- all mail would be sent to the fallback even if the original
  892. host was accessible.  Pointed out by Munenari Hirayama of
  893. NSC (Japan).
  894. A message that didn't terminate with a newline would (sometimes) not
  895. have the trailing "." added properly in the SMTP dialogue,
  896. causing SMTP to hang.  Patch from Per Hedeland of Ericsson.
  897. The DaemonPortOptions suboption to bind to a particular address was
  898. incorrect and nonfunctional due to a misunderstanding of the
  899. semantics of binding on a passive socket.  Patch from
  900. NIIBE Yutaka of Mitsubishi Research Institute.
  901. Increase the number of MX hosts for a single name to 100 to better
  902. handle the truly huge service providers such as AOL, which
  903. has 13 at the moment (and climbing).  In order to avoid
  904. trashing memory, the buffer for all names has only been
  905. slightly increased in size, to 12.8K from 10.2K -- this means
  906. that if a single name had 100 MX records, the average size
  907. of those records could not exceed 128 bytes.  Requested by
  908. Brad Knowles of America On Line.
  909. Restore use of IDENT returns where the OSTYPE field equals "OTHER".
  910. Urged by Dan Bernstein of U.C. Berkeley.
  911. Print q_statdate and q_specificity in address structure debugging
  912. printout.
  913. Expand MCI structure flag bits for debugging output.
  914. Support IPv6-style domain literals, which can have colons between
  915. square braces.
  916. Log open file descriptors for the "cannot dup" messages in deliver();
  917. this is an attempt to track down a bug that one person seems
  918. to be having (it may be a Solaris bug!).
  919. DSN NOTIFY parameters were not properly propagated across queue runs;
  920. this caused the NOTIFY info to sometimes be lost.  Problem
  921. pointed out by Claus Assmann of the
  922. Christian-Albrechts-University of Kiel.
  923. The statistics gathered in the sendmail.st file were too high; in
  924. some cases failures (e.g., user unknown or temporary failure)
  925. would count as a delivery as far as the statistics were
  926. concerned.  Problem noted by Tom Moore of AT&T GIS.
  927. Systems that don't have flock() would not send split envelopes in
  928. the initial run.  Problem pointed out by Leonard Zubkoff of
  929. Dandelion Digital.
  930. Move buffer overflow checking -- these primarily involve distrusting
  931. results that may come from NIS and DNS.
  932. 4.4-BSD-derived systems, including FreeBSD, NetBSD, and BSD/OS didn't
  933. include <paths.h> and hence had the wrong pathnames for a few
  934. things like /var/tmp.  Reported by Matthew Green.
  935. Conditions were reversed for the Priority: header, resulting in all
  936. values being interpreted as non-urgent except for non-urgent,
  937. which was interpreted as normal.  Patch from Bryan Costales.
  938. The -o (optional) flag was being ignored on hash and btree maps
  939. since 8.7.2.  Fix from Bryan Costales.
  940. Content-Types listed in class "q" will always be encoded as
  941. Quoted-Printable (or more accurately, will never be encoded
  942. as base64).  The class can have primary types (e.g., "text")
  943. or full types (e.g., "text/plain").  Based on a suggestion by
  944. Marius Olafsson of the University of Iceland.
  945. Define ${envid} to be the original envelope id (from the ESMTP DSN
  946. dialogue) so it can be passed to programs in mailers.
  947. Define ${bodytype} to be the body type (from the -B flag or the
  948. BODY= ESMTP parameter) so it can be passed to programs in
  949. mailers.
  950. Cause the VRFY command to return 252 instead of 250 unless the F=q
  951. flag is set in the mailer descriptor.  Suggested by John
  952. Myers of CMU.
  953. Implement ESMTP ETRN command to flush the queue for a specific host.
  954. The command takes a host name; data for that host is
  955. immediately (and asynchronously) flushed.  Because this shares
  956. the -qR implementation, other hosts may be attempted, but
  957. there should be no security implications.  Implementation
  958. from John Beck of InReference, Inc.  See RFC 1985 for details.
  959. Add three new command line flags to pass in DSN parameters: -V envid
  960. (equivalent to ENVID=envid on the MAIL command), -R ret
  961. (equivalent to RET=ret on the MAIL command), and -Nnotify
  962. (equivalent to NOTIFY=notify on the RCPT command).  Note
  963. that the -N flag applies to all recipients; there is no way
  964. to specify per-address notifications on the command line,
  965. nor is there an equivalent for the ORCPT= per-address
  966. parameter.
  967. Restore LogLevel option to be safe (it can only be increased);
  968. apparently I went into paranoid mode between 8.6 and 8.7
  969. and made it unsafe.  Pointed out by Dabe Murphy of the
  970. University of Maryland.
  971. New logging on log level 15:  all SMTP traffic.  Patches from
  972. Andrew Gross of San Diego Supercomputer Center.
  973. NetInfo property value searching code wasn't stopping when it found
  974. a match.  This was causing the wrong values to be found (and
  975. had a memory leak).  Found by Bastian Schleuter of TU-Berlin.
  976. Add new F=0 (zero) mailer flag to turn off MX lookups.  It was pointed
  977. out by Bill Wisner of Electronics for Imaging that you can't
  978. use the bracket address form for the MAIL_HUB macro, since
  979. that causes the brackets to remain in the envelope recipient
  980. address used for delivery.  The simple fix (stripping off the
  981. brackets in the config file) breaks the use of IP literal
  982. addresses.  This flag will solve that problem.
  983. Add MustQuoteChars option.  This is a list of characters that must
  984. be quoted if they are found in the phrase part of an address
  985. (that is, the full name part).  The characters @,;:()[] are
  986. always in this list and cannot be removed.  The default is
  987. this list plus . and ' to match RFC 822.
  988. Add AllowBogusHELO option; if set, sendmail will allow HELO commands
  989. that do not include a host name for back compatibility with
  990. some stupid SMTP clients.  Setting this violates RFC 1123
  991. section 5.2.5.
  992. Add MaxDaemonChildren option; if this is set, sendmail will start
  993. rejecting connections if it has more than this many
  994. outstanding children accepting mail.  Note that you may
  995. see more processes than this because of outgoing mail; this
  996. is for incoming connections only.
  997. Add ConnectionRateThrottle option.  If set to a positive value, the
  998. number of incoming SMTP connections that will be permitted
  999. in a single second is limited to this number.  Connections are
  1000. not refused during this time, just deferred.  The intent is to
  1001. flatten out demand so that load average limiting can kick in.
  1002. It is less radical than MaxDaemonChildren, which will stop
  1003. accepting connections even if all the connections are idle
  1004. (e.g., due to connection caching).
  1005. Add Timeout.hoststatus option.  This interval (defaulting to 30m)
  1006. specifies how long cached information about the state of a
  1007. host will be kept before they are considered stale and the
  1008. host is retried.  If you are using persistent host status
  1009. (i.e., the HostStatusDirectory option is set) this will apply
  1010. between runs; otherwise, it applies only within a single queue
  1011. run and hence is useful only for hosts that have large queues
  1012. that take a very long time to run.
  1013. Add SingleLineFromHeader option.  If set, From: headers are coerced
  1014. into being a single line even if they had newlines in them
  1015. when read.  This is to get around a botch in Lotus Notes.
  1016. Text class maps were totally broken -- if you ever retrieved the last
  1017. item in a table it would be truncated.  Problem noted by
  1018. Gregory Neil Shapiro of WPI.
  1019. Extend the lines printed by the mailq command (== the -bp flag) when
  1020. -v is given to 120 characters; this allows more information
  1021. to be displayed.  Suggested by Gregory Neil Shapiro of WPI.
  1022. Allow macro definitions (`D' lines) with unquoted commas; previously
  1023. this was treated as end-of-input.  Problem noted by Bryan
  1024. Costales.
  1025. The RET= envelope parameter (used for DSNs) wasn't properly written
  1026. to the queue file.  Fix from John Hughes of Atlantic
  1027. Technologies, Inc.
  1028. Close /var/tmp/dead.letter after a successful write -- otherwise
  1029. if this happens in a queue run it can cause nasty delays.
  1030. Problem noted by Mark Horton of AT&T.
  1031. If userdb entries pointed to userdb entries, and there were multiple
  1032. values for a given key, the database cursor would get
  1033. trashed by the recursive call.  Problem noted by Roy Mongiovi
  1034. of Georgia Tech.  Fixed by reading all the values and creating
  1035. a comma-separated list; thus, the -v output will be somewhat
  1036. different for this case.
  1037. Fix buffer allocation problem with Hesiod-based userdb maps when
  1038. HES_GETMAILHOST is defined.  Based on a patch by Betty Lee
  1039. of Stanford University.
  1040. When envelopes were split due to aliases with owner- aliases, and
  1041. there was some error on one of the lists, more than one of
  1042. the owners would get the message.  Problem pointed out by
  1043. Roy Mongiovi of Georgia Tech.
  1044. Detect excessive recursion in macro expansions, e.g., $X defined
  1045. in terms of $Y which is defined in terms of $X.  Problem
  1046. noted by Bryan Costales; patch from Eric Wassenaar.
  1047. When using F=U to get "ugly UUCP" From_ lines, a buffer could in
  1048. some cases get trashed causing bogus From_ lines.  Fix from
  1049. Kyle Jones of UUNET.
  1050. When doing load average initialization, if the nlist call for avenrun
  1051. failed, the second and subsequent lookups wouldn't notice
  1052. that fact causing bogus load averages to be returned.  Noted
  1053. by Casper Dik of Sun Holland.
  1054. Fix problem with incompatibility with some versions of inet_aton that
  1055. have changed the return value to unsigned, so a check for an
  1056. error return of -1 doesn't work.  Use INADDR_NONE instead.
  1057. This could cause mail to addresses such as [foo.com] to bounce
  1058. or get dropped.  Problem noted by Christophe Wolfhugel of the
  1059. Pasteur Institute.
  1060. DSNs were inconsistent if a failure occurred during the DATA phase
  1061. rather than the RCPT phase: the Action: would be correct, but
  1062. the detailed status information would be wrong.  Problem noted
  1063. by Bob Snyder of General Electric Company.
  1064. Add -U command line flag and the XUSR ESMTP extension, both indicating
  1065. that this is the initial MUA->MTA submission.  The flag current
  1066. does nothing, but in future releases (when MUAs start using
  1067. these flags) it will probably turn on things like DNS
  1068. canonification.
  1069. Default end-of-line string (E= specification on mailer [M] lines)
  1070. to rn on SMTP mailers.  Default remains n on non-SMTP
  1071. mailers.
  1072. Change the internal definition for the *file* and *include* mailers
  1073. to have $u in the argument vectors so that they aren't
  1074. misinterpreted as SMTP mailers and thus use rn line
  1075. termination.  This will affect anyone who has redefined
  1076. either of these in their configuration file.
  1077. Don't assume that IDENT servers close the connection after a query;
  1078. responses can be newline terminated.  From Terry Kennedy of
  1079. St. Peter's College.
  1080. Avoid core dumps on erroneous configuration files that have
  1081. $#mailer with nothing following.  From Bryan Costales.
  1082. Avoid null pointer dereference with high debug values in unlockqueue.
  1083. Fix from Randy Martin of Clemson University.
  1084. Fix possible buffer overrun when expanding very large macros.  Fix
  1085. from Kyle Jones of UUNET.
  1086. After 25 EXPN or VRFY commands, start pausing for a second before
  1087. processing each one.  This avoids a certain form of denial
  1088. of service attack.  Potential attack pointed out by Bryan
  1089. Costales.
  1090. Allow new named (not numbered!) config file rules to do validity
  1091. checking on SMTP arguments: check_mail for MAIL commands and
  1092. check_rcpt for RCPT commands.  These rulesets can do anything
  1093. they want; their result is ignored unless they resolve to the
  1094. $#error mailer, in which case the indicated message is printed
  1095. and the command is rejected.  Similarly, the check_compat
  1096. ruleset is called before delivery with "from_addr $| to_addr"
  1097. (the $| is a meta-symbol used to separate the two addresses);
  1098. it can give a "this sender can't send to this recipient"
  1099. notification.  Note that this patch allows $| to stand alone
  1100. in rulesets.
  1101. Define new macros ${client_name}, ${client_addr}, and ${client_port}
  1102. that have the name, IP address, and port number (respectively)
  1103. of the SMTP client (that is, the entity at the other end of
  1104. the connection.  These can be used in (e.g.) check_rcpt to
  1105. verify that someone isn't trying to relay mail through your
  1106. host inappropriately.  Be sure to use the deferred evaluation
  1107. form, for example $&{client_name}, to avoid having these bound
  1108. when sendmail reads the configuration file.
  1109. Add new config file rule check_relay to check the incoming connection
  1110. information.  Like check_compat, it is passed the host name
  1111. and host address separated by $| and can reject connections
  1112. on that basis.
  1113. Allow IDA-style recursive function calls.  Code contributed by Mark
  1114. Lovell and Paul Vixie.
  1115. Eliminate the "No ! in UUCP From address!" message" -- instead, create
  1116. a virtual UUCP address using either a domain address or the $k
  1117. macro.  Based on code contributed by Mark Lovell and Paul
  1118. Vixie.
  1119. Add Stanford LDAP map.  Requires special libraries that are not
  1120. included with sendmail.  Contributed by Booker C. Bense
  1121. <bbense@networking.stanford.edu>; contact him for support.
  1122. See also the src/READ_ME file.
  1123. Allow -dANSI to turn on ANSI escape sequences in debug output; this
  1124. puts metasymbols (e.g., $+) in reverse video.  Really useful
  1125. only for debugging deep bits of code where it is important to
  1126. distinguish between the single-character metasymbol $+ and the
  1127. two characters $, +.
  1128. Changed ruleset 89 (executed in dumpstate()) to a named ruleset,
  1129. debug_dumpstate.
  1130. Add new UnsafeGroupWrites option; if set, .forward and :include:
  1131. files that are group writable are considered "unsafe" -- that
  1132. is, programs and files referenced from such files are not
  1133. valid recipients.
  1134. Delete bogosity test for FallBackMX host; this prevented it to be a
  1135. name that was not in DNS or was a domain-literal.  Problem
  1136. noted by Tom May.
  1137. Change the introduction to error messages to more clearly delineate
  1138. permanent from temporary failures; if both existed in a
  1139. single message it could be confusing.  Suggested by John
  1140. Beck of InReference, Inc.
  1141. The IngoreDot (i) option didn't work for lines that were terminated
  1142. with CRLF.  Problem noted by Ted Stockwell of Secure
  1143. Computing Corporation.
  1144. Add a heuristic to improve the handling of unbalanced `<' signs in
  1145. message headers.  Problem reported by Matt Dillon of Best
  1146. Internet Communications.
  1147. Check for bogus characters in the 0200-0237 range; since these are
  1148. used internally, very strange errors can occur if those
  1149. characters appear in headers.  Problem noted by Anders Gertz
  1150. of Lysator.
  1151. Implement 7 -> 8 bit MIME conversions.  This only takes place if the
  1152. recipient mailer has the F=9 flag set, and only works on
  1153. text/plain body types.  Code contributed by Marius Olafsson
  1154. of the University of Iceland.
  1155. Special case "postmaster" name so that it is always treated as lower
  1156. case in alias files regardless of configuration settings;
  1157. this prevents some potential problems where "Postmaster" or
  1158. "POSTMASTER" might not match "postmaster".  In most cases
  1159. this change is a no-op.
  1160. The -o map flag was ignored for text maps.  Problem noted by Bryan
  1161. Costales.
  1162. The -a map flag was ignored for dequote maps.  Problem noted by
  1163. Bryan Costales.
  1164. Fix core dump when a lookup of a class "prog" map returns no
  1165. response.  Patch from Bryan Costales.
  1166. Log instances where sendmail is deferring or rejecting connections
  1167. on LogLevel 14.  Suggested by Kyle Jones of UUNET.
  1168. Include port number in process title for network daemons.  Suggested
  1169. by Kyle Jones of UUNET.
  1170. Send ``double bounces'' (errors that occur when sending an error
  1171. message) to the address indicated in the DoubleBounceAddress
  1172. option (default: postmaster).  Previously they were always
  1173. sent to postmaster.  Suggested by Kyle Jones of UUNET.
  1174. Add new mode, -bD, that acts like -bd in all respects except that
  1175. it runs in foreground.  This is useful for using with a
  1176. wrapper that "watches" system services.  Suggested by Kyle
  1177. Jones of UUNET.
  1178. Fix botch in spacing around (parenthesized) comments in addresses
  1179. when the comment comes before the address.  Patch from
  1180. Motonori Nakamura of Kyoto University.
  1181. Use the prefix "Postmaster notify" on the Subject: lines of messages
  1182. that are being bounced to postmaster, rather than "Returned
  1183. mail".  This permits the person who is postmaster more
  1184. easily determine what messages are to their role as
  1185. postmaster versus bounces to mail they actually sent.  Based
  1186. on a suggestion by Motonori Nakamura.
  1187. Add new value "time" for QueueSortOrder option; this causes the queue
  1188. to be sorted strictly by the time of submission.  Note that
  1189. this can cause very bad behavior over slow lines (because
  1190. large jobs will tend to delay small jobs) and on nodes with
  1191. heavy traffic (because old things in the queue for hosts that
  1192. are down delay processing of new jobs).  Also, this does not
  1193. guarantee that jobs will be delivered in submission order
  1194. unless you also set DeliveryMode=queue.  In general, it should
  1195. probably only be used on the command line, and only in
  1196. conjunction with -qRhost.domain.  In fact, there are very few
  1197. cases where it should be used at all.  Based on an
  1198. implementation by Motonori Nakamura.
  1199. If a map lookup in ruleset 5 returns tempfail, queue the message in
  1200. the same manner as other rulesets.  Previously a temporary
  1201. failure in ruleset 5 was ignored.  Patch from Booker Bense
  1202. of Stanford University.
  1203. Don't proceed to the next MX host if an SMTP MAIL command returns a
  1204. 5yz (permanent failure) code.  The next MX host will still be
  1205. tried if the connection cannot be opened in the first place
  1206. or if the MAIL command returns a 4yz (temporary failure) code.
  1207. (It's hard to know what to do here, since neither RFC 974 nor
  1208. RFC 1123 specify when to proceed to the next MX host.)
  1209. Suggested by Jonathan Kamens of OpenVision, Inc.
  1210. Add new "-t" flag for map definitions (the "K" line in the .cf file).
  1211. This causes map lookups that get a temporary failure (e.g.,
  1212. name server failure) to _not_ defer the delivery of the
  1213. message.  This should only be used if your configuration file
  1214. is prepared to do something sensible in this case.  Based on
  1215. an idea by Gregory Shapiro of WPI.
  1216. Fix problem finding network interface addresses.  Patch from
  1217. Motonori Nakamura.
  1218. Don't reject qf entries that are not owned by your effective uid if
  1219. you are not running setuid; this makes management of certain
  1220. kinds of firewall setups difficult.  Patch suggested by
  1221. Eamonn Coleman of Qualcomm.
  1222. Add persistent host status.  This keeps the information normally
  1223. maintained within a single queue run in disk files that are
  1224. shared between sendmail instances.  The HostStatusDirectory
  1225. is the directory in which the information is maintained.  If
  1226. not set, persistent host status is turned off.  If not a full
  1227. pathname, it is relative to the queue directory.  A common
  1228. value is ".hoststat".
  1229. There are also two new operation modes:
  1230.   * -bh prints the status of hosts that have had recent
  1231.     connections.
  1232.   * -bH purges the host statuses.  No attempt is made to save
  1233.     recent status information.
  1234. This feature was originally written by Paul Vixie of Vixie
  1235. Enterprises for KJS and adapted for V8 by Mark Lovell of
  1236. Bigrock Consulting.  Paul's funding of Mark and Mark's patience
  1237. with my insistence that things fit cleanly into the V8
  1238. framework is gratefully appreciated.
  1239. New SingleThreadDelivery option (requires HostStatusDirectory to
  1240. operate).  Avoids letting two sendmails on the local machine
  1241. open connections to the same remote host at the same time.
  1242. This reduces load on the other machine, but can cause mail to
  1243. be delayed (for example, if one sendmail is delivering a huge
  1244. message, other sendmails won't be able to send even small
  1245. messages).  Also, it requires another file descriptor (for the
  1246. lock file) per connection, so you may have to reduce
  1247. ConnectionCacheSize to avoid running out of per-process
  1248. file descriptors.  Based on the persistent host status code
  1249. contributed by Paul Vixie and Mark Lovell.
  1250. Allow sending to non-simple files (e.g., /dev/null) even if the
  1251. SafeFileEnvironment option is set.  Problem noted by Bryan
  1252. Costales.
  1253. The -qR flag mistakenly matched flags in the "R" line of the queue
  1254. file.  Problem noted by Bryan Costales.
  1255. If a job was aborted using the interrupt signal (e.g., control-C from
  1256. the keyboard), on some occasions an empty df file would be
  1257. left around; these would collect in the queue directory.
  1258. Problem noted by Bryan Costales.
  1259. Change the makesendmail script to enhance the search for Makefiles
  1260. based on release number.  For example, on SunOS 5.5.1, it will
  1261. search for Makefile.SunOS.5.5.1, Makefile.SunOS.5.5, and then
  1262. Makefile.SunOS.5.x (in addition to the other rules, e.g.,
  1263. adding $arch).  Problem noted by Jason Mastaler of Atlanta
  1264. Webmasters.
  1265. When creating maps using "newaliases", always map the keys to lower
  1266. case when creating the map unless the -f flag is specified on
  1267. the map itself.  Previously this was done based on the F=u
  1268. flag in the local mailer, which meant you could create aliases
  1269. that you could never access.  Problem noted by Bob Wu of DEC.
  1270. When a job was read from the queue, the bits causing notification on
  1271. failure or delay were always set.  This caused those
  1272. notifications to be sent even if NOTIFY=NEVER had been
  1273. specified.  Problem noted by Steve Hubert of the University
  1274. of Washington, Seattle.
  1275. Add new configurable routine validate_connection (in conf.c).  This
  1276. lets you decide if you are willing to accept traffic from
  1277. this host.  If it returns FALSE, all SMTP commands will return
  1278. "550 Access denied".  -DTCPWRAPPERS will include support for
  1279. TCP wrappers; you will need to add -lwrap to the link line.
  1280. (See src/READ_ME for details.)
  1281. Don't include the "THIS IS A WARNING MESSAGE ONLY" banner on postmaster
  1282. bounces.  Some people seemed to think that this could be
  1283. confusing (even though it is true).  Suggested by Motonori
  1284. Nakamura.
  1285. Add new RunAsUser option; this causes sendmail to do a setuid to that
  1286. user early in processing to avoid potential security problems.
  1287. However, this means that all .forward and :include: files must
  1288. be readable by that user, and all files to be written must be
  1289. writable by that user and all programs will be executed by that
  1290. user.  It is also incompatible with the SafeFileEnvironment
  1291. option.  In other words, it may not actually add much to
  1292. security.  However, it should be useful on firewalls and other
  1293. places where users don't have accounts and the aliases file is
  1294. well constrained.
  1295. Add Timeout.iconnect.  This is like Timeout.connect except it is used
  1296. only on the first attempt to delivery to an address.  It could
  1297. be set to be lower than Timeout.connect on the principle that
  1298. the mail should go through quickly to responsive hosts; less
  1299. responsive hosts get to wait for the next queue run.
  1300. Fix a problem on Solaris that occasionally causes programs
  1301. (such as vacation) to hang with their standard input connected
  1302. to a UDP port.  It also created some signal handling problems.
  1303. The problems turned out to be an interaction between vfork(2)
  1304. and some of the libraries, particularly NIS/NIS+.  I am
  1305. indebted to Tor Egge <tegge@idt.ntnu.no> for this fix.
  1306. Change user class map to do the same matching that actual delivery
  1307. will do instead of just a /etc/passwd lookup.  This adds
  1308. fuzzy matching to the user map.  Patch from Dan Oscarsson.
  1309. The Timeout.* options are not safe -- they can be used to create a
  1310. denial-of-service attack.  Problem noted by Christophe
  1311. Wolfhugel.
  1312. Don't send PostmasterCopy messages in the event of a "delayed"
  1313. notification.  Suggested by Barry Bouwsma.
  1314. Don't advertise "VERB" ESMTP extension if the "noexpn" privacy
  1315. option is set, since this disables VERB mode.  Suggested
  1316. by John Hawkinson of MIT.
  1317. Complain if the QueueDirectory (Q) option is not set.  Problem noted
  1318. by Motonori Nakamura of Kyoto University.
  1319. Only queue messages on transient .forward open failures if there
  1320. were no successful opens.  The previous behavior caused it
  1321. to queue even if a "fall back" .forward was found.  Problem
  1322. noted by Ann-Kian Yeo of the Dept. of Information Systems
  1323. and Computer Science (DISCS), NUS, Singapore.
  1324. Don't do 8->7 bit conversions when bouncing a MIME message that
  1325. is bouncing because of a MIME error during 8->7 bit conversion;
  1326. the encapsulated message will bounce again, causing a loop.
  1327. Problem noted by Steve Hubert of the University of Washington.
  1328. Create xf (transcript) files using the TempFileMode option value
  1329. instead of 0644.  Suggested by Ann-Kian Yeo of the
  1330. National University of Singapore.
  1331. Print errors if setgid/setuid/etc. fail during delivery.  This helps
  1332. detect cases where DefaultUid is set to something that the
  1333. system can't cope with.
  1334. PORTABILITY FIXES:
  1335. Support for AIX/RS 2.2.1 from Mark Whetzel of Western
  1336. Atlas International.
  1337. Patches for Intel Paragon OSF/1 1.3 from Leo Bicknell
  1338. <bicknell@ufp.org>.
  1339. On DEC OSF/1 3.2 and earlier, the MatchGECOS code would only
  1340. work on the first recipient of a message due to a
  1341. bug in the getpwent family.  If this is something you
  1342. use, you can define DEC_OSF_BROKEN_GETPWENT=1 for a
  1343. workaround.  From Maximum Entropy of Sanford C.
  1344. Bernstein and Associates.
  1345. FreeBSD 1.1.5.1 uname -r returns a string containing
  1346. parentheses, which breaks makesendmail.  Reported
  1347. by Piero Serini <piero@strider.ibenet.it>.
  1348. Sequent DYNIX/ptx 4.0.2 patches from Jack Woolley of
  1349. Systems and Computer Technology Corporation.
  1350. Solaris 2.x: omit the UUCP grade parameter (-g flag) because
  1351. it is system-dependent.  Problem noted by J.J. Bailey
  1352. of Bailey Computer Consulting.
  1353. Pyramid NILE running DC/OSx support from Earle F. Ake of
  1354. Hassler Communication Systems Technology, Inc.
  1355. HP-UX 10.x compile glitches, reported by Anne Brink of the
  1356. U.S. Army and James Byrne of Harte & Lyne Limited.
  1357. NetBSD from Matthew Green of the NetBSD crew.
  1358. SCO 5.x from Keith Reynolds of SCO.
  1359. IRIX 6.2 from Robert Tarrall of the University of
  1360. Colorado and Kari Hurtta of the Finnish Meteorological
  1361. Institute.
  1362. UXP/DS (Fujitsu/ICL DS/90 series) support from Diego R.
  1363. Lopez, CICA (Seville).
  1364. NCR SVR4 MP-RAS 3.x support from Tom Moore of NCR.
  1365. PTX 3.2.0 from Kenneth Stailey of the US Department of Labor
  1366. Employment Standards Administration.
  1367. Altos System V (5.3.1) from Tim Rice of Multitalents.
  1368. Concurrent Systems Corporation Maxion from Donald R. Laster
  1369. Jr.
  1370. NetInfo maps (improved debugging and multi-valued aliases)
  1371. from Adrian Steinmann of Steinmann Consulting.
  1372. ConvexOS 11.5 (including SecureWare C2 and the Share Scheduler)
  1373. from Eric Schnoebelen of Convex.
  1374. Linux 2.0 mail.local patches from Horst von Brand.
  1375. NEXTSTEP 3.x compilation from Robert La Ferla.
  1376. NEXTSTEP 3.x code changes from Allan J. Nathanson of NeXT.
  1377. Solaris 2.5 configuration fixes for mail.local by Jim Davis
  1378. of the University of Arizona.
  1379. Solaris 2.5 has a working setreuid.  Noted by David Linn of
  1380. Vanderbilt University.
  1381. Solaris changes for praliases, makemap, mailstats, and smrsh.
  1382. Previously you had to add -DSOLARIS in Makefile.dist;
  1383. this auto-detects.  Based on a patch from Randall
  1384. Winchester of the University of Maryland.
  1385. CONFIG: add generic-nextstep3.3.mc file.  Contributed by
  1386. Robert La Ferla of Hot Software.
  1387. CONFIG: allow mailertables to resolve to ``error:code message''
  1388. (where "code" is an exit status) on domains (previously
  1389. worked only on hosts).  Patch from Cor Bosman of Xs4all
  1390. Foundation.
  1391. CONFIG: hooks for IPv6-style domain literals.
  1392. CONFIG: predefine ALIAS_FILE and change the prototype file so that
  1393. if it is undefined the AliasFile option is never set; this
  1394. should be transparent for most everyone.  Suggested by John
  1395. Myers of CMU.
  1396. CONFIG: add FEATURE(limited_masquerade).  Without this feature, any
  1397. domain listed in $=w is masqueraded.  With it, only those
  1398. domains listed in a MASQUERADE_DOMAIN macro are masqueraded.
  1399. CONFIG: add FEATURE(masquerade_entire_domain).  This causes
  1400. masquerading specified by MASQUERADE_DOMAIN to apply to all
  1401. hosts under those domains as well as the domain headers
  1402. themselves.  For example, if a configuration had
  1403. MASQUERADE_DOMAIN(foo.com), then without this feature only
  1404. foo.com would be masqueraded; with it, *.foo.com would be
  1405. masqueraded as well.  Based on an implementation by Richard
  1406. (Pug) Bainter of U. Texas.
  1407. CONFIG: add FEATURE(genericstable) to do a more general rewriting of
  1408. outgoing addresses.  Defaults to ``hash -o /etc/genericstable''.
  1409. Keys are user names; values are outgoing mail addresses.  Yes,
  1410. this does overlap with the user database, and figuring out
  1411. just when to use which one may be tricky.  Based on code
  1412. contributed by Richard (Pug) Bainter of U. Texas with updates
  1413. from Per Hedeland of Ericsson.
  1414. CONFIG: add FEATURE(virtusertable) to do generalized rewriting of
  1415. incoming addresses.  Defaults to ``hash -o /etc/virtusertable''.
  1416. Keys are either fully qualified addresses or just the host
  1417. part (with the @ sign).  For example, a table containing:
  1418. info@foo.com foo-info
  1419. info@bar.com bar-info
  1420. @baz.org jane@elsewhere.net
  1421. would send all mail destined for info@foo.com to foo-info
  1422. (which is presumably an alias), mail addressed to info@bar.com
  1423. to bar-info, and anything addressed to anyone at baz.org will
  1424. be sent to jane@elsewhere.net.  The names foo.com, bar.com,
  1425. and baz.org must all be in $=w.  Based on discussions with
  1426. a great many people.
  1427. CONFIG: add nullclient configurations to define SMTP_MAILER_FLAGS.
  1428. Suggested by Richard Bainter.
  1429. CONFIG: add FAX_MAILER_ARGS to tweak the arguments passed to the
  1430. "fax" mailer.
  1431. CONFIG: allow mailertable entries to resolve to local:user; this
  1432. passes the original user@host in to procmail-style local
  1433. mailers as the "detail" information to allow them to do
  1434. additional clever processing.  From Joe Pruett of
  1435. Teleport Corporation.  Delivery to the original user can
  1436. be done by specifying "local:" (with nothing after the colon).
  1437. CONFIG: allow any context that takes "mailer:domain" to also take
  1438. "mailer:user@domain" to force mailing to the given user;
  1439. "local:user" can also be used to do local delivery.  This
  1440. applies on *_RELAY and in the mailertable entries.  Based
  1441. on a suggestion by Ribert Kiessling of Easynet.
  1442. CONFIG: Allow FEATURE(bestmx_is_local) to take an argument that
  1443. limits the possible domains; this reduces the number of DNS
  1444. lookups required to support this feature.  For example,
  1445. FEATURE(bestmx_is_local, my.site.com) limits the lookups
  1446. to domains under my.site.com.  Code contributed by Anthony
  1447. Thyssen <anthony@cit.gu.edu.au>.
  1448. CONFIG: LOCAL_RULESETS introduces any locally defined rulesets,
  1449. such as the check_rcpt ruleset.  Suggested by Gregory Shapiro
  1450. of WPI.
  1451. CONFIG: MAILER_DEFINITIONS introduces any mailer definitions, in the
  1452. event you have to define local mailers.  Suggested by
  1453. Gregory Shapiro of WPI.
  1454. CONFIG: fix cases where a three- (or more-) stage route-addr could
  1455. be misinterpreted as a list:...; syntax.  Based on a patch by
  1456. Vlado Potisk <Vlado_Potisk@tempest.sk>.
  1457. CONFIG: Fix masquerading of UUCP addresses when the UUCP relay is
  1458. remotely connected.  The address host!user was being
  1459. converted to host!user@thishost instead of host!user@uurelay.
  1460. Problem noted by William Gianopoulos of Raytheon Company.
  1461. CONFIG: add confTO_ICONNECT to set Timeout.iconnect.
  1462. CONFIG: change FEATURE(redirect) message from "User not local" to
  1463. "User has moved"; the former wording was confusing if the
  1464. new address is still on the local host.  Based on a suggestion
  1465. by Andreas Luik.
  1466. CONFIG: add support in FEATURE(nullclient) for $=E (exposed users).
  1467. However, the class is not pre-initialized to contain root.
  1468. Suggested by Gregory Neil Shapiro.
  1469. CONTRIB: Remove XLA code at the request of the author, Christophe
  1470. Wolfhugel.
  1471. CONTRIB: Add re-mqueue.pl, contributed by Paul Pomes of Qualcomm.
  1472. MAIL.LOCAL: make it possible to compile mail.local on Solaris.  Note
  1473. well: this produces a slightly different mailbox format (no
  1474. Content-Length: headers), file ownerships and modes are
  1475. different (not owned by group mail; mode 600 instead of 660),
  1476. and the local mailer flags will have to be tweaked (make them
  1477. match bsd4.4) in order to use this mailer.  Patches from Paul
  1478. Hammann of the Missouri Research and Education Network.
  1479. MAIL.LOCAL: in some cases it could return EX_OK even though there
  1480. was a delivery error, such as if the ownership on the file
  1481. was wrong or the mode changed between the initial stat and
  1482. the open.  Problem reported by William Colburn of the New
  1483. Mexico Institute of Mining and Technology.
  1484. MAILSTATS: handle zero length files more reliably.  Patch from Bryan
  1485. Costales.
  1486. MAILSTATS: add man page contributed by Keith Bostic of BSDI.
  1487. MAKEMAP: The -d flag (to allow duplicate keys) to a btree map wasn't
  1488. honored.  Fix from Michael Scott Shappe.
  1489. PRALIASES: add man page contributed by Keith Bostic of BSDI.
  1490. NEW FILES:
  1491. src/Makefiles/Makefile.AIX.2
  1492. src/Makefiles/Makefile.IRIX.6.2
  1493. src/Makefiles/Makefile.maxion
  1494. src/Makefiles/Makefile.NCR.MP-RAS.3.x
  1495. src/Makefiles/Makefile.SCO.5.x
  1496. src/Makefiles/Makefile.UXPDSV20
  1497. mailstats/mailstats.8
  1498. praliases/praliases.8
  1499. cf/cf/generic-nextstep3.3.mc
  1500. cf/feature/genericstable.m4
  1501. cf/feature/limited_masquerade.m4
  1502. cf/feature/masquerade_entire_domain.m4
  1503. cf/feature/virtusertable.m4
  1504. cf/ostype/aix2.m4
  1505. cf/ostype/altos.m4
  1506. cf/ostype/maxion.m4
  1507. cf/ostype/solaris2.ml.m4
  1508. cf/ostype/uxpds.m4
  1509. contrib/re-mqueue.pl
  1510. DELETED FILES:
  1511. src/Makefiles/Makefile.Solaris
  1512. contrib/xla/README
  1513. contrib/xla/xla.c
  1514. RENAMED FILES:
  1515. src/Makefiles/Makefile.NCR3000 => Makefile.NCR.MP-RAS.2.x
  1516. src/Makefiles/Makefile.SCO.3.2v4.2 => Makefile.SCO.4.2
  1517. src/Makefiles/Makefile.UXPDS => Makefile.UXPDSV10
  1518. src/Makefiles/Makefile.NeXT => Makefile.NeXT.2.x
  1519. src/Makefiles/Makefile.NEXTSTEP => Makefile.NeXT.3.x
  1520. 8.7.6/8.7.3 1996/09/17
  1521. SECURITY: It is possible to force getpwuid to fail when writing the
  1522. queue file, causing sendmail to fall back to running programs
  1523. as the default user.  This is not exploitable from off-site.
  1524. Workarounds include using a unique user for the DefaultUser
  1525. (old u & g options) and using smrsh as the local shell.
  1526. SECURITY: fix some buffer overruns; in at least one case this allows
  1527. a local user to get root.  This is not known to be exploitable
  1528. from off-site.  The workaround is to disable chfn(1) commands.
  1529. 8.7.5/8.7.3 1996/03/04
  1530. Fix glitch in 8.7.4 when putting certain internal lines; this can
  1531. in some case cause connections to hang or messages to have
  1532. extra spaces in odd places.  Patch from Eric Wassenaar;
  1533. reports from Eric Hall of Chiron Corporation, Stephen
  1534. Hansen of Stanford University, Dean Gaudet of HotWired,
  1535. and others.
  1536. 8.7.4/8.7.3 1996/02/18
  1537. SECURITY: In some cases it was still possible for an attacker to
  1538. insert newlines into a queue file, thus allowing access to
  1539. any user (except root).
  1540. CONFIG: no changes -- it is not a bug that the configuration
  1541. version number is unchanged.
  1542. 8.7.3/8.7.3 1995/12/03
  1543. Fix botch in name server timeout in RCPT code; this problem caused
  1544. two responses in SMTP, which breaks things horribly.  Fix
  1545. from Gregory Neil Shapiro of WPI.
  1546. Verify that L= value on M lines cannot be negative, which could cause
  1547. negative array subscripting.  Not a security problem since
  1548. this has to be in the config file, but it could have caused
  1549. core dumps.  Pointed out by Bryan Costales.
  1550. Fix -d21 debug output for long macro names.  Pointed out by Bryan
  1551. Costales.
  1552. PORTABILITY FIXES:
  1553. SCO doesn't have ftruncate.  From Bill Aten of Computerizers.
  1554. IBM's version of arpa/nameser.h defaults to the wrong byte
  1555. order.  Tweak it to work properly.  Based on fixes
  1556. from Fletcher Mattox of UTexas and Betty Lee of
  1557. Stanford University.
  1558. CONFIG: add confHOSTS_FILE m4 variable to set HostsFile option.
  1559. Deficiency pointed out by Bryan Costales of ICSI.
  1560. 8.7.2/8.7.2 1995/11/19
  1561. REALLY fix the backslash escapes in SmtpGreetingMessage,
  1562. OperatorChars, and UnixFromLine options.  They were not
  1563. properly repaired in 8.7.1.
  1564. Completely delete the Bcc: header if and only if there are other
  1565. valid recipient headers (To:, Cc: or Apparently-To:, the
  1566. last being a historic botch, of course).  If Bcc: is the
  1567. only recipient header in the message, its value is tossed,
  1568. but the header name is kept.  The old behavior (always keep
  1569. the header name and toss the value) allowed primary recipients
  1570. to see that a Bcc: went to _someone_.
  1571. Include queue id on ``Authentication-Warning: <host>: <user> set
  1572. sender to <address> using -f'' syslog messages.  Suggested
  1573. by Kari Hurtta.
  1574. If a sequence or switch map lookup entry gets a tempfail but then
  1575. continues on to another map type, but the name is not found,
  1576. return a temporary failure from the sequence or switch map.
  1577. For example, if hosts search ``dns files'' and DNS fails
  1578. with a tempfail, the hosts map will go on and search files,
  1579. but if it fails the whole thing should be a tempfail, not
  1580. a permanent (host unknown) failure, even though that is the
  1581. failure in the hosts.files map.  This error caused hard
  1582. bounces when it should have requeued.
  1583. Aliases to files such as /users/bar/foo/inbox, with /users/bar/foo
  1584. owned by bar mode 700 and inbox being setuid bar stopped
  1585. working properly due to excessive paranoia.  Pointed out by
  1586. John Hawkinson of Panix.
  1587. An SMTP RCPT command referencing a host that gave a nameserver
  1588. timeout would return a 451 command (8.6 accepted it and
  1589. queued it locally).  Revert to the 8.6 behavior in order
  1590. to simplify queue management for clustered systems.  Suggested
  1591. by Gregory Neil Shapiro of WPI.  The same problem could break
  1592. MH, which assumes that the SMTP session will succeed (tsk, tsk
  1593. -- mail gets lost!); this was pointed out by Stuart Pook of
  1594. Infobiogen.
  1595. Fix possible buffer overflow in munchstring().  This was not a security
  1596. problem because you couldn't specify any argument to this
  1597. without first giving up root privileges, but it is still a
  1598. good idea to avoid future problems.  Problem noted by John
  1599. Hawkinson and Sam Hartman of MIT.
  1600. ``452 Out of disk space for temp file'' messages weren't being
  1601. printed.  Fix from David Perlin of Nanosoft.
  1602. Don't advertise the ESMTP DSN extension if the SendMimeErrors option
  1603. is not set, since this is required to get the actual DSNs
  1604. created.  Problem pointed out by John Gardiner Myers of CMU.
  1605. Log permission problems that cause .forward and :include: files to
  1606. be untrusted or ignored on log level 12 and higher.  Suggested
  1607. by Randy Martin of Clemson University.
  1608. Allow user ids in U= clauses of M lines to have hyphens and
  1609. underscores.
  1610. Fix overcounting of recipients -- only happened when sending to an
  1611. alias.  Pointed out by Mark Andrews of SGI and Jack Woolley
  1612. of Systems and Computer Technology Corporation.
  1613. If a message is sent to an address that fails, the error message that
  1614. is returned could show some extraneous "success" information
  1615. included even if the user did not request success notification,
  1616. which was confusing.  Pointed out by Allan Johannesen of WPI.
  1617. Config files that had no AliasFile definition were defaulting to
  1618. using /etc/aliases; this caused problems with nullclient
  1619. configurations.  Change it back to the 8.6 semantics of
  1620. having no local alias file unless it is declared.  Problem
  1621. noted by Charles Karney of Princeton University.
  1622. Fix compile problem if NOTUNIX is defined.  Pointed out by Bryan
  1623. Costales of ICSI.
  1624. Map lookups of class "userdb" maps were always case sensitive; they
  1625. should be controlled by the -f flag like other maps.  Pointed
  1626. out by Bjart Kvarme <bjart.kvarme@usit.uio.no>.
  1627. Fix problem that caused some addresses to be passed through ruleset 5
  1628. even when they were tagged as "sticky" by prefixing the
  1629. address with an "@".  Patch from Thomas Dwyer III of Michigan
  1630. Technological University.
  1631. When converting a message to Quoted-Printable, prevent any lines with
  1632. dots alone on a line by themselves.  This is because of the
  1633. preponderance of broken mailers that still get this wrong.
  1634. Code contributed by Per Hedeland of Ericsson.
  1635. Fix F{macro}/file construct -- it previously did nothing.  Pointed
  1636. out by Bjart Kvarme of USIT/UiO (Norway).
  1637. Announce whether a cached connection is SMTP or ESMTP (in -v mode).
  1638. Requested by Allan Johannesen.
  1639. Delete check for text format of alias files -- it should be legal
  1640. to have the database format of the alias files without the
  1641. text version.  Problem pointed out by Joe Rhett of Navigist,
  1642. Inc.
  1643. If "Ot" was specified with no value, the TZ variable was not properly
  1644. imported from the environment.  Pointed out by Frank Crawford
  1645. <frank@ansto.gov.au>.
  1646. Some architectures core dumped on "program" maps that didn't have
  1647. extra arguments.  Patch from Booker C. Bense of Stanford
  1648. University.
  1649. Queue run processes would re-spawn daemons when given a SIGHUP; only
  1650. the parent should do this.  Fix from Brian Coan of the
  1651. Association for Progressive Communications.
  1652. If MinQueueAge was set and a message was considered but not run
  1653. during a queue run and the Timeout.queuereturn interval was
  1654. reached, a "timed out" error message would be returned that
  1655. didn't include the failed address (and claimed to be a warning
  1656. even though it was fatal).  The fix is to not return such
  1657. messages until they are actually tried, i.e., in the next
  1658. MinQueueAge interval.  Problem noted by Rein Tollevik of
  1659. SINTEF RUNIT, Oslo.
  1660. Add HES_GETMAILHOST compile flag to support MIT Hesiod distributions
  1661. that have the hes_getmailhost() routine.  DEC Hesiod
  1662. distributions do not have this routine.  Based on a patch
  1663. from Betty Lee of Stanford University.
  1664. Extensive cleanups to map open code to handle a locking race condition
  1665. in ndbm, hash, and btree format database files on some (most
  1666. non-4.4-BSD based) OS architectures.  This should solve the
  1667. occasional "user unknown" problem during alias rebuilds that
  1668. has plagued me for quite some time.  Based on a patch from
  1669. Thomas Dwyer III of Michigan Technological University.
  1670. PORTABILITY FIXES:
  1671. Solaris: Change location of newaliases and mailq from
  1672. /usr/ucb to /usr/bin to match Sun settings.  From
  1673. James B. Davis of TCI.
  1674. DomainOS: Makefile.DomainOS doesn't require -ldbm.  From
  1675. Don Lewis of Silicon Systems.
  1676. HP-UX 10: rename Makefile.HP-UX.10 => Makefile.HP-UX.10.x
  1677. so that the makesendmail script will find it.  Pointed
  1678. out by Richard Allen of the University of Iceland.
  1679. Also, use -Aa -D_HPUX_SOURCE instead of -Ae, which
  1680. isn't supported on all compilers.
  1681. UXPDS: compilation fixes from Diego R. Lopez.
  1682. CONFIG: FAX mailer wasn't setting .FAX as a pseudo-domain unless
  1683. you also had a FAX_RELAY.  From Thomas.Tornblom@Hax.SE.
  1684. CONFIG: Minor glitch in S21 -- attachment of local domain name
  1685. didn't have trailing dot.  From Jim Hickstein of Teradyne.
  1686. CONFIG: Fix best_mx_is_local feature to allow nested addresses such as
  1687. user%host@thishost.  From Claude Scarpelli of Infobiogen
  1688. (France).
  1689. CONFIG: OSTYPE(hpux10) failed to define the location of the help file.
  1690. Pointed out by Hannu Martikka of Nokia Telecommunications.
  1691. CONFIG: Diagnose some inappropriate ordering in configuration files,
  1692. such as FEATURE(smrsh) listed after MAILER(local).  Based on
  1693. a bug report submitted by Paul Hoffman of Proper Publishing.
  1694. CONFIG: Make OSTYPE files consistently not override settings that
  1695. have already been set.  Previously it worked differently
  1696. for different files.
  1697. CONFIG: Change relay mailer to do masquerading like 8.6 did.  My take
  1698. is that this is wrong, but the change was causing problems
  1699. for some people.  From Per Hedeland of Ericsson.
  1700. CONTRIB: bitdomain.c patch from John Gardiner Myers <jgm+@CMU.EDU>;
  1701. portability changes for Posix environments (no functional
  1702. changes).
  1703. 8.7.1/8.7.1 1995/10/01
  1704. Old macros that have become options (SmtpGreetingMessage,
  1705. OperatorChars, and UnixFromLine) didn't allow backslash
  1706. escapes in the options, where they previously had.  Bug
  1707. pointed out by John Hawkinson of MIT.
  1708. Fix strange case of an executable called by a program map that
  1709. returns a value but also a non-zero exit status; this
  1710. would give contradictory results in the higher level; in
  1711. particular, the default clause in the map lookup would be
  1712. ignored.  Change to ignore the value if the program returns
  1713. non-zero exit status.  From Tom Moore of AT&T GIS.
  1714. Shorten parameters passed to syslog() in some contexts to avoid a
  1715. bug in many vendors' implementations of that routine.  Although
  1716. this isn't really a bug in sendmail per se, and my solution
  1717. has to assume that syslog() has at least a 1K buffer size
  1718. internally (I know some vendors have shortened this
  1719. dramatically -- they're on their own), sendmail is a popular
  1720. target.  Also, limit the size of %s arguments in sprintf.
  1721. These both have possible security implications.  Solutions
  1722. suggested by Casper Dik of Sun's Network Security Group
  1723. (Holland), Mark Seiden, and others.
  1724. Fix a problem that might cause a non-standard -B (body type)
  1725. parameter to be passed to the next server with undefined
  1726. results.  This could have security implications.
  1727. If a filesystem was at > 100% utilization, the freediskspace()
  1728. routine incorrectly returned an error rather than zero.
  1729. Problem noted by G. Paul Ziemba of Alantec.
  1730. Change MX sort order so that local hostnames (those in $=w) always
  1731. sort first within a given preference.  This forces the bestmx
  1732. map to always return the local host first, if it is included
  1733. in the list of highest priority MX records.  From K. Robert
  1734. Elz.
  1735. Avoid some possible null pointer dereferences.  Fixes from Randy
  1736. Martin <WOLF@CLEMSON.EDU>
  1737. When sendmail starts up on systems that have no fully qualified
  1738. domain name (FQDN) anywhere in the first matching host map
  1739. (e.g., /etc/hosts if the hosts service searches "files dns"),
  1740. sendmail would sleep to try to find a FQDN, which it really
  1741. really needs.  This has been changed to fall through to the
  1742. next map type if it can't find a FQDN -- i.e., if the hosts
  1743. file doesn't have a FQDN, it will try dns even though the
  1744. short name was found in /etc/hosts.  This is probably a crock,
  1745. but many people have hosts files without FQDNs.  Remember:
  1746. domain names are your friends.
  1747. Log a high-priority message if you can't find your FQDN during startup.
  1748. Suggested by Simon Barnes of Schlumberger Limited.
  1749. When using Hesiod, initialize it early to improve error reporting.
  1750. Patch from Don Lewis of Silicon Systems, Inc.
  1751. Apparently at least some versions of Linux have a 90 !minute! TCP
  1752. connection timeout in the kernel.  Add a new "connect" timeout
  1753. to limit this time.  Defaults to zero (use whatever the
  1754. kernel provides).  Based on code contributed by J.R. Oldroyd
  1755. of TerraNet.
  1756. Under some circumstances, a failed message would not be properly
  1757. removed from the queue, causing tons of bogus error messages.
  1758. (This fix eliminates the problematic EF_KEEPQUEUE flag.)
  1759. Problem noted by Allan E Johannesen and Gregory Neil Shapiro
  1760. of WPI.
  1761. PORTABILITY FIXES:
  1762. On IRIX 5.x, there was an inconsistency in the setting
  1763. of sendmail.st location.  Change the Makefile to
  1764. install it in /var/sendmail.st to match the OSTYPE
  1765. file and SGI standards.  From Andre
  1766. <andre@curry.zfe.siemens.de>.
  1767. Support for Fujitsu/ICL UXP/DS (For the DS/90 Series)
  1768. from Diego R. Lopez <drlopez@cica.es>.
  1769. Linux compilation patches from J.R. Oldroyd of TerraNet, Inc.
  1770. LUNA 2 Mach patches from Motonori Nakamura.
  1771. SunOS Makefile was including -ldbm, which is for the old
  1772. dbm library.  The ndbm library is part of libc.
  1773. CONFIG: avoid bouncing ``user@host.'' (note trailing dot) with
  1774. ``local configuration error'' in nullclient configuration.
  1775. Patch from Gregory Neil Shapiro of WPI.
  1776. CONFIG: don't allow an alias file in nullclient configurations --
  1777. since all addresses are relayed, they give errors during
  1778. rebuild.  Suggested by Per Hedeland of Ericsson.
  1779. CONFIG: local mailer on Solaris 2 should always get a -f flag because
  1780. otherwise the F=S causes the From_ line to imply that root is
  1781. the sender.  Problem pointed out by Claude Scarpelli of
  1782. Infobiogen (France).
  1783. NEW FILES:
  1784. cf/feature/use_ct_file.m4 (omitted from 8.7 by mistake)
  1785. src/Makefiles/Makefile.KSR (omitted from 8.7 by mistake)
  1786. src/Makefiles/Makefile.UXPDS
  1787. 8.7/8.7 1995/09/16
  1788. Fix a problem that could cause sendmail to run out of file
  1789. descriptors due to a trashed data structure after a
  1790. vfork.  Fix from Brian Coan of the Institute for
  1791. Global Communications.
  1792. Change the VRFY response if you have disabled VRFY -- some
  1793. people seemed to think that it was too rude.
  1794. Avoid reference to uninitialized file descriptor if HASFLOCK
  1795. was not defined.  This was used "safely" in the sense
  1796. that it only did a stat, but it would have set the
  1797. map modification time improperly.  Problem pointed out
  1798. by Roy Mongiovi of Georgia Tech.
  1799. Clean up the Subject: line on warning messages and return
  1800. receipts so that they don't say "Returned mail:"; this
  1801. can be confusing.
  1802. Move ruleset entry/exit debugging from 21.2 to 21.1 -- this is
  1803. useful enough to make it worthwhile printing on "-d".
  1804. Avoid logging alias statistics every time you read the alias
  1805. file on systems with no database method compiled in.
  1806. If you have a name with a trailing dot, and you try looking it
  1807. up using gethostbyname without the dot (for /etc/hosts
  1808. compatibility), be sure to turn off RES_DEFNAMES and
  1809. RES_DNSRCH to avoid finding the wrong name accidentally.
  1810. Problem noted by Charles Amos of the University of
  1811. Maryland.
  1812. Don't do timeouts in collect if you are not running SMTP.
  1813. There is nothing that says you can't have a long
  1814. running program piped into sendmail (possibly via
  1815. /bin/mail, which just execs sendmail).  Problem reported
  1816. by Don "Truck" Lewis of Silicon Systems.
  1817. Try gethostbyname() even if the DNS lookup fails iff option I
  1818. is not set.  This allows you to have hosts listed in
  1819. NIS or /etc/hosts that are not known to DNS.  It's normally
  1820. a bad idea, but can be useful on firewall machines.  This
  1821. should really be broken out on a separate flag, I suppose.
  1822. Avoid compile warnings against BIND 4.9.3, which uses function
  1823. prototypes.  From Don Lewis of Silicon Systems.
  1824. Avoid possible incorrect diagnosis of DNS-related errors caused
  1825. by things like attempts to resolve uucp names using
  1826. $[ ... $] -- the fix is to clear h_errno at appropriate
  1827. times.  From Kyle Jones of UUNET.
  1828. SECURITY: avoid denial-of-service attacks possible by destroying
  1829. the alias database file by setting resource limits low.
  1830. This involves adding two new compile-time options:
  1831. HASSETRLIMIT (indicating that setrlimit(2) support is
  1832. available) and HASULIMIT (indicating that ulimit(2) support
  1833. is available -- the Release 3 form is used).  The former
  1834. is assumed on BSD-based systems, the latter on System
  1835. V-based systems.  Attack noted by Phil Brandenberger of
  1836. Swarthmore University.
  1837. New syntaxes in test (-bt) mode:
  1838. ``.Dmvalue'' will define macro "m" to "value".
  1839. ``.Ccvalue'' will add "value" to class "c".
  1840. ``=Sruleset'' will dump the contents of the indicated
  1841. ruleset.
  1842. ``=M'' will display the known mailers.
  1843. ``-ddebug-spec'' is equivalent to the command-line
  1844. -d debug flag.
  1845. ``$m'' will print the value of macro $m.
  1846. ``$=c'' will print the contents of class $=c.
  1847. ``/mx host'' returns the MX records for ``host''.
  1848. ``/parse address'' will parse address, returning the value of
  1849. crackaddr (essentially, the comment information)
  1850. and the parsed address.
  1851. ``/try mailer address'' will rewrite address into the form
  1852. it will have when presented to the indicated mailer.
  1853. ``/tryflags flags'' will set flags used by parsing.  The
  1854. flags can be `H' for header or `E' for envelope,
  1855. and `S' for sender or `R' for recipient.  These
  1856. can be combined, so `HR' sets flags for header
  1857. recipients.
  1858. ``/canon hostname'' will try to canonify hostname and
  1859. return the result.
  1860. ``/map mapname key'' will look up `key' in the indicated
  1861. `mapname' and return the result.
  1862. Somewhat better handling of UNIX-domain socket addresses -- it
  1863. should show the pathname rather than hex bytes.
  1864. Restore ``-ba'' mode -- this reads a file from stdin and parses
  1865. the header for envelope sender information and uses
  1866. CR-LF as message terminators.  It was thought to be
  1867. obsolete (used only for Arpanet NCP protocols), but it
  1868. turns out that the UK ``Grey Book'' protocols require
  1869. that functionality.
  1870. Fix a fix in previous release -- if gethostname and gethostbyname
  1871. return a name without dots, and if an attempt to canonify
  1872. that name fails, wait one minute and try again.  This can
  1873. result in an extra 60 second delay on startup if your system
  1874. hostname (as returned by hostname(1)) has no dot and no names
  1875. listed in /etc/hosts or your NIS map have a dot.
  1876. Check for proper domain name on HELO and EHLO commands per
  1877. RFC 1123 section 5.2.5.  Problem noted by Thomas Dwyer III
  1878. of Michigan Technological University.
  1879. Relax chownsafe rules slightly -- old version said that if you
  1880. can't tell if _POSIX_CHOWN_RESTRICTED is set (that is,
  1881. if fpathconf returned EINVAL or ENOSYS), assume that
  1882. chown is not safe.  The new version falls back to whether
  1883. you are on a BSD system or not.  This is important for
  1884. SunOS, which apparently always returns one of those
  1885. error codes.  This impacts whether you can mail to files
  1886. or not.
  1887. Syntax errors such as unbalanced parentheses in the configuration
  1888. file could be omitted if you had "Oem" prior to the
  1889. syntax error in the config file.  Change to always print
  1890. the error message.  It was especially weird because it
  1891. would cause a "warning" message to be sent to the Postmaster
  1892. for every message sent (but with no transcript).  Problem
  1893. noted by Gregory Paris of Motorola.
  1894. Rewrite collect and putbody to handle full 8-bit data, including
  1895. zero bytes.  These changes are internally extensive, but
  1896. should have minimal impact on external function.
  1897. Allow full words for option names -- if the option letter is
  1898. (apparently) a space, then take the word following -- e.g.,
  1899. O MatchGECOS=TRUE
  1900. The full list of old and new names is as follows:
  1901. 7 SevenBitInput
  1902. 8 EightBitMode
  1903. A AliasFile
  1904. a AliasWait
  1905. B BlankSub
  1906. b MinFreeBlocks/MaxMessageSize
  1907. C CheckpointInterval
  1908. c HoldExpensive
  1909. D AutoRebuildAliases
  1910. d DeliveryMode
  1911. E ErrorHeader
  1912. e ErrorMode
  1913. f SaveFromLine
  1914. F TempFileMode
  1915. G MatchGECOS
  1916. H HelpFile
  1917. h MaxHopCount
  1918. i IgnoreDots
  1919. I ResolverOptions
  1920. J ForwardPath
  1921. j SendMimeErrors
  1922. k ConnectionCacheSize
  1923. K ConnectionCacheTimeout
  1924. L LogLevel
  1925. l UseErrorsTo
  1926. m MeToo
  1927. n CheckAliases
  1928. O DaemonPortOptions
  1929. o OldStyleHeaders
  1930. P PostmasterCopy
  1931. p PrivacyOptions
  1932. Q QueueDirectory
  1933. q QueueFactor
  1934. R DontPruneRoutes
  1935. r, T Timeout
  1936. S StatusFile
  1937. s SuperSafe
  1938. t TimeZoneSpec
  1939. u DefaultUser
  1940. U UserDatabaseSpec
  1941. V FallbackMXHost
  1942. v Verbose
  1943. w TryNullMXList
  1944. x QueueLA
  1945. X RefuseLA
  1946. Y ForkEachJob
  1947. y RecipientFactor
  1948. z ClassFactor
  1949. Z RetryFactor
  1950. The old macros that passed information into sendmail have
  1951. been changed to options; those correspondences are:
  1952. $e SmtpGreetingMessage
  1953. $l UnixFromLine
  1954. $o OperatorChars
  1955. $q (deleted -- not necessary)
  1956. To avoid possible problems with an older sendmail,
  1957. configuration level 6 is accepted by this version of
  1958. sendmail; any config file using the new names should
  1959. specify "V6" in the configuration.
  1960. Change address parsing to properly note that a phrase before a
  1961. colon and a trailing semicolon are essentially the same
  1962. as text outside of angle brackets (i.e., sendmail should
  1963. treat them as comments).  This is to handle the
  1964. ``group name: addr1, addr2, ..., addrN;'' syntax (it will
  1965. assume that ``group name:'' is a comment on the first
  1966. address and the ``;'' is a comment on the last address).
  1967. This requires config file support to get right.  It does
  1968. understand that :: is NOT this syntax, and can be turned
  1969. off completely by setting the ColonOkInAddresses option.
  1970. Level 6 config files added with new mailer flags:
  1971.     A Addresses are aliasable.
  1972.     i Do udb rewriting on envelope as well as header
  1973. sender lines.  Applies to the from address mailer
  1974. flags rather than the recipient mailer flags.
  1975.     j Do udb rewriting on header recipient addresses.
  1976. Applies to the sender mailer flags rather than the
  1977. recipient mailer flags.
  1978.     k Disable check for loops when doing HELO command.
  1979.     o Always run as the mail recipient, even on local
  1980. delivery.
  1981.     w Check for an /etc/passwd entry for this user.
  1982.     5 Pass addresses through ruleset 5.
  1983.     : Check for :include: on this address.
  1984.     | Check for |program on this address.
  1985.     / Check for /file on this address.
  1986.     @ Look up sender header addresses in the user
  1987. database.  Applies to the mailer flags for the
  1988. mailer corresponding to the envelope sender
  1989. address, rather than to recipient mailer flags.
  1990. Pre-level 6 configuration files set A, w, 5, :, |, /, and @
  1991. on the "local" mailer, the o flag on the "prog" and "*file*"
  1992. mailers, and the ColonOkInAddresses option.
  1993. Eight-to-seven bit MIME conversions.  This borrows ideas from
  1994. John Beck of Hewlett-Packard, who generously contributed
  1995. their implementation to me, which I then didn't use (see
  1996. mime.c for an explanation of why).  This adds the
  1997. EightBitMode option (a.k.a. `8') and an F=8 mailer flag
  1998. to control handling of 8-bit data.  These have to cope with
  1999. two types of 8-bit data: unlabelled 8-bit data (that is,
  2000. 8-bit data that is entered without declaring it as 8-bit
  2001. MIME -- technically this is illegal according to the
  2002. specs) and labelled 8-bit data (that is, it was declared
  2003. as 8BITMIME in the ESMTP session or by using the
  2004. -B8BITMIME command line flag).  If the F=8 mailer flag is
  2005. set then 8-bit data is sent to non-8BITMIME machines
  2006. instead of converting to 7 bit (essentially using
  2007. just-send-8 semantics).  The values for EightBitMode are:
  2008.     m convert unlabelled 8-bit input to 8BITMIME, and do
  2009. any necessary conversion of 8BITMIME to 7BIT
  2010. (essentially, the full MIME option).
  2011.     p pass unlabelled 8-bit input, but convert labelled
  2012. 8BITMIME input to 7BIT as required (default).
  2013.     s strict adherence: reject unlabelled 8-bit input,
  2014. convert 8BITMIME to 7BIT as required.  The F=8
  2015. flag is ignored.
  2016. Unlabelled 8-bit data is rejected in mode `s' regardless of
  2017. the setting of F=8.
  2018. Add new internal class 'n', which is the set of MIME Content-Types
  2019. which can not be 8 to 7 bit encoded because of other
  2020. considerations.  Types "multipart/*" and "message/*" are
  2021. never directly encoded (although their components can be).
  2022. Add new internal class 's', which is the set of subtypes of the
  2023. MIME message/* content type that can be treated as though
  2024. they are an RFC822 message.  It is predefined to have
  2025. "rfc822".  Suggested By Kari Hurtta.
  2026. Add new internal class 'e'.  This is the set of MIME
  2027. Content-Transfer-Encodings that can be converted to
  2028. a seven bit format (Quoted-Printable or Base64).  It is
  2029. preinitialized to contain "7bit", "8bit", and "binary".
  2030. Add C=charset mailer parameter and the the DefaultCharSet option (no
  2031. short name) to set the default character set to use in the
  2032. Content-Type: header when doing encoding of an 8-bit message
  2033. which isn't marked as MIME into MIME format.  If the C=
  2034. parameter is set on the Envelope From address, use that as
  2035. the default encoding; else use the DefaultCharSet option.
  2036. If neither is set, it defaults to "unknown-8bit" as
  2037. suggested by RFC 1428 section 3.
  2038. Allow ``U=user:group'' field in mailer definition to set a default
  2039. user and group that a mailer will be executed as.  This
  2040. overrides the 'u' and 'g' options, and if the `F=S' flag is
  2041. also set, it is the uid/gid that will always be used (that
  2042. is, the controlling address is ignored).  The values may be
  2043. numeric or symbolic; if only a symbolic user is given (no
  2044. group) that user's default group in the passwd file is used
  2045. as the group.  Based on code donated by Chip Rosenthal of
  2046. Unicom.
  2047. Allow `u' option to also accept user:group as a value, in the same
  2048. fashion as the U= mailer option.
  2049. Add the symbolic time zone name in the Arpanet format dates (as
  2050. a comment).  This adds a new compile-time configuration
  2051. flag: TZ_TYPE can be set to TZ_TM_NAME (use the value
  2052. of (struct tm *)->tm_name), TZ_TM_ZONE (use the value
  2053. of (struct tm *)->tm_zone), TZ_TZNAME (use extern char
  2054. *tzname[(struct tm *)->tm_isdst]), TZ_TIMEZONE (use
  2055. timezone()), or TZ_NONE (don't include the comment).  Code
  2056. from Chip Rosenthal.
  2057. The "Timeout" option (formerly "r") is extended to allow suboptions.
  2058. For example,
  2059.     O Timeout.helo = 2m
  2060. There are also two new suboptions "queuereturn" and
  2061. "queuewarn"; these subsume the old T option.  Thus, to
  2062. set them both the preferred new syntax is
  2063.     O Timeout.queuereturn = 5d
  2064.     O Timeout.queuewarn = 4h
  2065. Sort queue by host name instead of by message priority if the
  2066. QueueSortOrder option (no short name) is set is set to
  2067. ``host''.  This makes better use of the connection cache,
  2068. but may delay more ``interactive'' messages behind large
  2069. backlogs under some circumstances.  This is probably a
  2070. good option if you have high speed links or don't do lots
  2071. of ``batch'' messages, but less good if you are using
  2072. something like PPP on a 14.4 modem.  Based on code
  2073. contributed by Roy Mongiovi of Georgia Tech (my main
  2074. contribution was to make it configurable).
  2075. Save i-number of df file in qf file to simplify rebuilding of queue
  2076. after disastrous disk crash.  Suggested by Kyle Jones of
  2077. UUNET; closely based on code from KJS DECWRL code written
  2078. by Paul Vixie.  NOTA BENE: The qf files produced by 8.7
  2079. are NOT back compatible with 8.6 -- that is, you can convert
  2080. from 8.6 to 8.7, but not the other direction.
  2081. Add ``F=d'' mailer flag to disable all use of angle brackets in
  2082. route-addrs in envelopes; this is because in some cases
  2083. they can be sent to the shell, which interprets them as
  2084. I/O redirection.
  2085. Don't include error file (option E) with return-receipts; this
  2086. can be confusing.
  2087. Don't send "Warning: cannot send" messages to owner-* or
  2088. *-request addresses.  Suggested by Christophe Wolfhugel
  2089. of the Institut Pasteur, Paris.
  2090. Allow -O command line flag to set long form options.
  2091. Add "MinQueueAge" option to set the minimum time between attempts
  2092. to run the queue.  For example, if the queue interval
  2093. (-q value) is five minutes, but the minimum queue age
  2094. is fifteen minutes, jobs won't be tried more often than
  2095. once every fifteen minutes.  This can be used to give
  2096. you more responsiveness if your delivery mode is set to
  2097. queue-only.
  2098. Allow "fileopen" timeout (default: 60 seconds) for opening
  2099. :include: and .forward files.
  2100. Add "-k", "-v", and "-z" flags to map definitions; these set the
  2101. key field name, the value field name, and the field
  2102. delimiter.  The field delimiter can be a single character
  2103. or the sequence "t" or "n" for tab or newline.
  2104. These are for use by NIS+ and similar access methods.
  2105. Change maps to always strip quotes before lookups; the -q flag
  2106. turns off this behavior.  Suggested by Motonori Nakamura.
  2107. Add "nisplus" map class.  Takes -k and -v flags to choose the
  2108. key and value field names respectively.  Code donated by
  2109. Sun Microsystems.
  2110. Add "hesiod" map class.  The "file name" is used as the
  2111. "HesiodNameType" parameter to hes_resolve(3).  Returns the
  2112. first value found for the match.  Code donated by Scott
  2113. Hutton of Indiana University.
  2114. Add "netinfo" (NeXT NetInfo) map class.  Maps can have a -k flag to
  2115. specify the name of the property that is searched as the
  2116. key and a -v flag to specify the name of the property that
  2117. is returned as the value (defaults to "members").  The
  2118. default map is "/aliases".  Some code based on code
  2119. contributed by Robert La Ferla of Hot Software.
  2120. Add "text" map class.  This does slow, linear searches through
  2121. text files.  The -z flag specifies a column delimiter
  2122. (defaults to any sequence of white space), the -k flag
  2123. sets the key column number, and the -v flag sets the
  2124. value column number.  Lines beginning with `#' are treated
  2125. as comments.
  2126. Add "program" map class to execute arbitrary programs.  The search
  2127. key is presented as the last argument; the output is one
  2128. line read from the programs standard output.  Exit statuses
  2129. are from sysexits.h.
  2130. Add "sequence" map class -- searches maps in sequence until it
  2131. finds a match.  For example, the declarations:
  2132.     Kmap1 ...
  2133.     Kmap2 ...
  2134.     Kmapseq sequence map1 map2
  2135. defines a map "mapseq" that first searches map1; if the
  2136. value is found it is returned immediately, otherwise
  2137. map2 is searched and the value returned.
  2138. Add "switch" map class.  This is much like "sequence" except that
  2139. the ordering is fetched from an external file, usually
  2140. the system service switch.  The parameter is the name of
  2141. the service to switch on, and the maps that it will use
  2142. are the name of the switch map followed by ".service_type".
  2143. For example, if the declaration of the map is
  2144.     Ksample switch hosts
  2145. and the system service switch specifies that hosts are
  2146. looked up using dns and nis in that order, then this is
  2147. equivalent to
  2148.     Ksample sequence sample.dns sample.nis
  2149. The subordinate maps (sample.*) must already be defined.
  2150. Add "user" map class -- looks up users using getpwnam.  Takes a
  2151. "-v field" flag on the definition that tells what passwd
  2152. entry to return -- legal values are name, passwd, uid, gid,
  2153. gecos, dir, and shell.  Generally expected to be used with
  2154. the -m (matchonly) flag.
  2155. Add "bestmx" map class -- returns the best MX value for the host
  2156. listed as the value.  If there are several "best" MX records
  2157. for this host, one will be chosen at random.
  2158. Add "userdb" map class -- looks up entries in the user database.
  2159. The "file name" is actually the tag that will be used,
  2160. typically "mailname".  If there are multiple entries
  2161. matching the name, the one chosen is undefined.
  2162. Add multiple queue timeouts (both return and warning).  These are
  2163. set by the Precedence: or Priority: header fields to one of
  2164. three values.  If a Priority: is set and has value "normal",
  2165. "urgent", or "non-urgent" the corresponding timeouts are
  2166. used.  If no priority is set, the Precedence: is consulted;
  2167. if negative, non-urgent timeouts are used; if greater than
  2168. zero, urgent timeouts are used.  Otherwise, normal timeouts
  2169. are used.  The timeouts are set by setting the six timeouts
  2170. queue{warn,return}.{urgent,normal,non-urgent}.
  2171. Fix problem when a mail address is resolved to a $#error mailer
  2172. with a temporary failure indication; it works in SMTP,
  2173. but when delivering locally the mail is silently discarded.
  2174. This patch, from Kyle Jones of UUNET, bounces it instead
  2175. of queueing it (queueing is very hard).
  2176. When using /etc/hosts or NIS-style lookups, don't assume that
  2177. the first name in the list is the best one -- instead,
  2178. search for the first one with a dot.  For example, if
  2179. an /etc/hosts entry reads
  2180.     128.32.149.68 mammoth mammoth.CS.Berkeley.EDU
  2181. this change will use the second name as the canonical
  2182. machine name instead of the initial, unqualified name.
  2183. Change dequote map to replace spaces in quoted text with a value
  2184. indicated by the -s flag on the dequote map definition.
  2185. For example, ``Mdequote dequote -s_'' will change
  2186. "Foo Bar" into an unquoted Foo_Bar instead of leaving it
  2187. quoted (because of the space character).  Suggested by Dan
  2188. Oscarsson for use in X.400 addresses.
  2189. Implement long macro names as ${name}; long class names can
  2190. be similarly referenced as $={name} and $~{name}.
  2191. Definitions are (e.g.) ``D{name}value''.  Names that have
  2192. a leading lower case letter or punctuation characters are
  2193. reserved for internal use by sendmail; i.e., config files
  2194. should use names that begin with a capital letter.  Based
  2195. on code contributed by Dan Oscarsson.
  2196. Fix core dump if getgrgid returns a null group list (as opposed
  2197. to an empty group list, that is, a pointer to a list
  2198. with no members).  Fix from Andrew Chang of Sun Microsystems.
  2199. Fix possible core dump if malloc fails -- if the malloc in xalloc
  2200. failed, it called syserr which called newstr which called
  2201. xalloc....  The newstr is now avoided for "panic" messages.
  2202. Reported by Stuart Kemp of James Cook University.
  2203. Improve connection cache timeouts; previously, they were not even
  2204. checked if you were delivering to anything other than an
  2205. IPC-connected host, so a series of (say) local mail
  2206. deliveries could cause cached connections to be open
  2207. much longer than the specified timeout.
  2208. If an incoming message exceeds the maximum message size, stop
  2209. writing the incoming bytes to the queue data file, since