166352Seric SENDMAIL RELEASE NOTES 2*69664Seric @(#)RELEASE_NOTES 8.7.Beta (Berkeley) 05/24/95 366352Seric 466352SericThis listing shows the version of the sendmail binary, the version 566352Sericof the sendmail configuration files, the date of release, and a 666352Sericsummary of the changes in that release. 766352Seric 869632Seric8.7/8.7 95/xx/xx CURRENTLY IN BETA PRERELEASE!!! 969632Seric Fix a problem that could cause sendmail to run out of file 1069632Seric descriptors due to a trashed data structure after a 1169632Seric vfork. Fix from Brian Coan of the Institute for 1269632Seric Global Communications. 1369632Seric Change the VRFY response if you have disabled VRFY -- some 1469632Seric people seemed to think that it was too rude. 1569632Seric Avoid reference to uninitialized file descriptor if HASFLOCK 1669632Seric was not defined. This was used "safely" in the sense 1769632Seric that it only did a stat, but it would have set the 1869632Seric map modification time improperly. Problem pointed out 1969632Seric by Roy Mongiovi of Georgia Tech. 2069632Seric Clean up the Subject: line on warning messages and return 2169632Seric receipts so that they don't say "Returned mail:"; this 2269632Seric can be confusing. 2369632Seric Move ruleset entry/exit debugging from 21.2 to 21.1 -- this is 2469632Seric useful enough to make it worthwhile printing on "-d". 2569632Seric Avoid logging alias statistics every time you read the alias 2669632Seric file on systems with no database method compiled in. 2769632Seric If you have a name with a trailing dot, and you try looking it 2869632Seric up using gethostbyname without the dot (for /etc/hosts 2969632Seric compatibility), be sure to turn off RES_DEFNAMES and 3069632Seric RES_DNSRCH to avoid finding the wrong name accidently. 3169632Seric Problem noted by Charles Amos of the University of 3269632Seric Maryland. 3369632Seric Don't do timeouts in collect if you are not running SMTP. 3469632Seric There is nothing that says you can't have a long 3569632Seric running program piped into sendmail (possibly via 3669632Seric /bin/mail, which just execs sendmail). Problem reported 3769632Seric by Don "Truck" Lewis of Silicon Systems. 3869632Seric Try gethostbyname() even if the DNS lookup fails iff option I 3969632Seric is not set. This allows you to have hosts listed in 4069632Seric NIS or /etc/hosts that are not known to DNS. It's normally 4169632Seric a bad idea, but can be useful on firewall machines. This 4269632Seric should really be broken out on a separate flag, I suppose. 4369632Seric Avoid compile warnings against BIND 4.9.3, which uses function 4469632Seric prototypes. From Don Lewis of Silicon Systems. 4569632Seric Avoid possible incorrect diagnosis of DNS-related errors caused 4669632Seric by things like attempts to resolve uucp names using 4769632Seric $[ ... $] -- the fix is to clear h_errno at appropriate 4869632Seric times. From Kyle Jones of UUNET. 4969632Seric SECURITY: avoid denial-of-service attacks possible by destroying 5069632Seric the alias database file by setting resource limits low. 5169632Seric This involves adding two new compile-time options: 5269632Seric HASSETRLIMIT (indicating that setrlimit(2) support is 5369632Seric available) and HASULIMIT (indicating that ulimit(2) support 5469632Seric is available -- the Release 3 form is used). The former 5569632Seric is assumed on BSD-based systems, the latter on System 5669632Seric V-based systems. Attack noted by Phil Brandenberger of 5769632Seric Swarthmore University. 5869632Seric New syntaxes in test (-bt) mode: 5969632Seric ``.Dmvalue'' will define macro "m" to "value". 6069632Seric ``.Ccvalue'' will add "value" to class "c". 6169632Seric ``.Sruleset'' will dump the contents of the indicated 6269632Seric ruleset. 6369632Seric ``-ddebug-spec'' is equivalent to the command-line 6469632Seric -d debug flag. 6569632Seric ``$m'' will print the value of macro "m". 6669632Seric ``/mx host'' returns the MX records for ``host''. 6769632Seric ``/try address'' will parse address, returning the value of 6869632Seric crackaddr (essentially, the comment information) 6969632Seric and the parsed address (the same as -bv). 7069632Seric Somewhat better handling of UNIX-domain socket addresses -- it 7169632Seric should show the pathname rather than hex bytes. 7269632Seric Restore ``-ba'' mode -- this reads a file from stdin and parses 7369632Seric the header for envelope sender information and uses 7469632Seric CR-LF as message terminators. It was thought to be 7569632Seric obsolete (used only for Arpanet NCP protocols), but it 7669632Seric turns out that the UK ``Grey Book'' protocols require 7769632Seric that functionality. 7869632Seric Fix a fix in previous release -- if gethostname and gethostbyname 7969632Seric return a name without dots, and if a DNS lookup of that 8069632Seric name fails, wait one minute and try again even if DNS 8169632Seric not specified in the config file -- the problem is that 8269632Seric this code is executed before the config file is read. 8369632Seric This can result in an extra 60 second delay on startup 8469632Seric if (1) you have DNS compiled in, (2) you are not running 8569632Seric DNS, (3) your system hostname (as returned by hostname(1)) 8669632Seric has no dot, AND (4) the canonical name listed in /etc/hosts 8769632Seric or your NIS map has no dot. 8869632Seric Check for proper domain name on HELO and EHLO commands per 8969632Seric RFC 1123 section 5.2.5. Problem noted by Thomas Dwyer III 9069632Seric of Michigan Technological University. 9169632Seric Relax chownsafe rules slightly -- old version said that if you 9269632Seric can't tell if _POSIX_CHOWN_RESTRICTED is set (that is, 9369632Seric if fpathconf returned EINVAL or ENOSYS), assume that 9469632Seric chown is not safe. The new version falls back to whether 9569632Seric you are on a BSD system or not. This is important for 9669632Seric SunOS, which apparently always returns one of those 9769632Seric error codes. This impacts whether you can mail to files 9869632Seric or not. 9969632Seric Syntax errors such as unbalanced parentheses in the configuration 10069632Seric file could be omitted if you had "Oem" prior to the 10169632Seric syntax error in the config file. Change to always print 10269632Seric the error message. It was especially wierd because it 10369632Seric would cause a "warning" message to be sent to the Postmaster 10469632Seric for every message sent (but with no transcript). Problem 10569632Seric noted by Gregory Paris of Motorola. 10669632Seric Rewrite collect and putbody to handle full 8-bit data, including 10769632Seric zero bytes. These changes are internally extensive, but 10869632Seric should have minimal impact on external function. 10969632Seric Allow full words for option names -- if the option letter is 11069632Seric (apparently) a space, then take the word following -- e.g., 11169632Seric O MatchGECOS=TRUE 11269632Seric The full list of old and new names is as follows: 11369632Seric 7 SevenBitInput 11469632Seric 8 EightBitMode 11569632Seric A AliasFile 11669632Seric a AliasWait 11769632Seric B BlankSub 11869632Seric b MinFreeBlocks/MaxMessageSize 11969632Seric C CheckpointInterval 12069632Seric c HoldExpensive 12169632Seric D AutoRebuildAliases 12269632Seric d DeliveryMode 12369632Seric E ErrorHeader 12469632Seric e ErrorMode 12569632Seric f SaveFromLine 12669632Seric F TempFileMode 12769632Seric G MatchGECOS 12869632Seric H HelpFile 12969632Seric h MaxHopCount 13069632Seric i IgnoreDots 13169632Seric I ResolverOptions 13269632Seric J ForwardPath 13369632Seric j SendMimeErrors 13469632Seric k ConnectionCacheSize 13569632Seric K ConnectionCacheTimeout 13669632Seric L LogLevel 13769632Seric l UseErrorsTo 13869632Seric m MeToo 13969632Seric n CheckAliases 14069632Seric O DaemonPortOptions 14169632Seric o OldStyleHeaders 14269632Seric P PostmasterCopy 14369632Seric p PrivacyOptions 14469632Seric Q QueueDirectory 14569632Seric q QueueFactor 14669632Seric R DontPruneRoutes 14769632Seric r, T Timeout 14869632Seric S StatusFile 14969632Seric s SuperSafe 15069632Seric t TimeZoneSpec 15169632Seric u DefaultUser 15269632Seric U UserDatabaseSpec 15369632Seric V FallbackMXhost 15469632Seric v Verbose 15569632Seric w TryNullMXList 15669632Seric x QueueLA 15769632Seric X RefuseLA 15869632Seric Y ForkEachJob 15969632Seric y RecipientFactor 16069632Seric z ClassFactor 16169632Seric Z RetryFactor 16269632Seric To avoid possible problems with an older sendmail, 16369632Seric configuration level 6 is accepted by this version of 16469632Seric sendmail; any config file using the new names should 16569632Seric specify "V6" in the configuration. 16669632Seric Change address parsing to properly note that a phrase before a 16769632Seric colon and a trailing semicolon are essentially the same 16869632Seric as text outside of angle brackets (i.e., sendmail should 16969632Seric treat them as comments). This is to handle the 17069632Seric ``group name: addr1, addr2, ..., addrN;'' syntax (it will 17169632Seric assume that ``group name:'' is a comment on the first 17269632Seric address and the ``;'' is a comment on the last address). 17369632Seric This requires config file support to get right. It does 17469632Seric understand that :: is NOT this syntax, and can be turned 17569632Seric off completely by setting the ColonOkInAddresses option. 17669632Seric Level 6 config files added with new mailer flags: 17769632Seric A Addresses are aliasable. 17869632Seric i Do udb rewriting on envelope as well as header 17969632Seric sender lines. Applies to the from address mailer 18069632Seric flags rather than the recipient mailer flags. 18169632Seric j Do udb rewriting on header recipient addresses. 18269632Seric Applies to the sender mailer flags rather than the 18369632Seric recipient mailer flags. 18469632Seric k Disable check for loops when doing HELO command. 18569632Seric o Always run as the mail recipient, even on local 18669632Seric delivery. 18769632Seric w Check for an /etc/passwd entry for this user. 18869632Seric 5 Pass addresses through ruleset 5. 18969632Seric : Check for :include: on this address. 19069632Seric | Check for |program on this address. 19169632Seric / Check for /file on this address. 19269632Seric @ Look up sender header addresses in the user 19369632Seric database. Applies to the mailer flags for the 19469632Seric mailer corresponding to the envelope sender 19569632Seric address, rather than to recipient mailer flags. 19669632Seric Pre-level 6 configuration files set A, w, 5, :, |, /, and @ 19769632Seric on the "local" mailer, the o flag on the "prog" and "*file*" 19869632Seric mailers, and the ColonOkInAddresses option. 19969632Seric Eight-to-seven bit MIME conversions. This borrows ideas from 20069632Seric John Beck of Hewlett-Packard, who generously contributed 20169632Seric their implementation to me, which I then didn't use (see 20269632Seric mime.c for an explanation of why). This adds the 20369632Seric EightBitMode option (a.k.a. `8') and an F=8 mailer flag 20469632Seric to control handling of 8-bit data. These have to cope with 20569632Seric two types of 8-bit data: unlabelled 8-bit data (that is, 20669632Seric 8-bit data that is entered without declaring it as 8-bit 20769632Seric MIME -- technically this is illegal according to the 20869632Seric specs) and labelled 8-bit data (that is, it was declared 20969632Seric as 8BITMIME in the ESMTP session or by using the 21069632Seric -B8BITMIME command line flag). If the F=8 mailer flag is 21169632Seric set then 8-bit data is sent to non-8BITMIME machines 21269632Seric instead of converting to 7 bit (essentially using 21369632Seric just-send-8 semantics). The values for EightBitMode are: 21469632Seric m convert unlabelled 8-bit input to 8BITMIME, and do 21569632Seric any necessary conversion of 8BITMIME to 7BIT 21669632Seric (essentially, the full MIME option). 21769632Seric p pass unlabelled 8-bit input, but convert labelled 21869632Seric 8BITMIME input to 7BIT as required (default). 21969632Seric s strict adherence: reject unlabelled 8-bit input, 22069632Seric convert 8BITMIME to 7BIT as required. The F=8 22169632Seric flag is ignored. 22269632Seric Unlabelled 8-bit data is rejected in mode `s' regardless of 22369632Seric the setting of F=8. 22469632Seric Add new internal class 'n', which is the set of MIME Content-Types 22569632Seric which can not be 8 to 7 bit encoded because of other 22669632Seric considerations. Types "multipart/*" and "message/*" are 22769632Seric never directly encoded (although their components can be). 22869632Seric Add new internal class 'e'. This is the set of MIME 22969632Seric Content-Transfer-Encodings that can be converted to 23069632Seric a seven bit format (Quoted-Printable or Base64). It is 23169632Seric preinitialized to contain "7bit", "8bit", and "binary". 23269632Seric Add C=charset mailer parameter and the the DefaultCharSet option (no 23369632Seric short name) to set the default character set to use in the 23469632Seric Content-Type: header when doing encoding of an 8-bit message 23569632Seric which isn't marked as MIME into MIME format. If the C= 23669632Seric parameter is set on the Envelope From address, use that as 23769632Seric the default encoding; else use the DefaultCharSet option. 23869632Seric If neither is set, it defaults to "unknown-8bit" as 23969632Seric suggested by RFC 1428 section 3. 24069632Seric Allow ``U=user:group'' field in mailer definition to set a default 24169632Seric user and group that a mailer will be executed as. This 24269632Seric overrides the 'u' and 'g' options, and if the `F=S' flag is 24369632Seric also set, it is the uid/gid that will always be used (that 24469632Seric is, the controlling address is ignored). The values may be 24569632Seric numeric or symbolic; if only a symbolic user is given (no 24669632Seric group) that user's default group in the passwd file is used 24769632Seric as the group. Based on code donated by Chip Rosenthal of 24869632Seric Unicom. 24969632Seric Allow `u' option to also accept user:group as a value, in the same 25069632Seric fashion as the U= mailer option. 25169632Seric Add the symbolic time zone name in the Arpanet format dates (as 25269632Seric a comment). This adds a new compile-time configuration 25369632Seric flag: TZ_TYPE can be set to TZ_TM_NAME (use the value 25469632Seric of (struct tm *)->tm_name), TZ_TM_ZONE (use the value 25569632Seric of (struct tm *)->tm_zone), TZ_TZNAME (use extern char 25669632Seric *tzname[(struct tm *)->tm_isdst]), TZ_TIMEZONE (use 25769632Seric timezone()), or TZ_NONE (don't include the comment). Code 25869632Seric from Chip Rosenthal. 25969632Seric The "Timeout" option (formerly "r") is extended to allow suboptions. 26069632Seric For example, 26169632Seric O Timeout.helo = 2m 26269632Seric There are also two new suboptions "queuereturn" and 26369632Seric "queuewarn"; these subsume the old T option. Thus, to 26469632Seric set them both the preferred new syntax is 26569632Seric O Timeout.queuereturn = 5d 26669632Seric O Timeout.queuewarn = 4h 26769632Seric Sort queue by host name instead of by message priority if the 26869632Seric QueueSortOrder option (no short name) is set is set to 26969632Seric ``host''. This makes better use of the connection cache, 27069632Seric but may delay more ``interactive'' messages behind large 27169632Seric backlogs under some circumstances. This is probably a 27269632Seric good option if you have high speed links or don't do lots 27369632Seric of ``batch'' messages, but less good if you are using 27469632Seric something like PPP on a 14.4 modem. Based on code 27569632Seric contributed by Roy Mongiovi of Georgia Tech (my main 27669632Seric contribution was to make it configurable). 27769632Seric Save i-number of df file in qf file to simplify rebuilding of queue 27869632Seric after disasterous disk crash. Suggested by Kyle Jones of 27969632Seric UUNET; closely based on code from KJS DECWRL code written 28069632Seric by Paul Vixie. NOTA BENE: The qf files produced by 8.7 28169632Seric are NOT back compatible with 8.6 -- that is, you can convert 28269632Seric from 8.6 to 8.7, but not the other direction. 28369632Seric Add ``F=d'' mailer flag to disable all use of angle brackets in 28469632Seric route-addrs in envelopes; this is because in some cases 28569632Seric they can be sent to the shell, which interprets them as 28669632Seric I/O redirection. 28769632Seric Don't include error file (option E) with return-receipts; this 28869632Seric can be confusing. 28969632Seric Don't send "Warning: cannot send" messages to owner-* or 29069632Seric *-request addresses. Suggested by Christophe Wolfhugel 29169632Seric of the Institut Pasteur, Paris. 29269632Seric Allow -O command line flag to set long form options. 29369632Seric Add "MinQueueAge" option to set the minimum time between attempts 29469632Seric to run the queue. For example, if the queue interval 29569632Seric (-q value) is five minutes, but the minimum queue age 29669632Seric is fifteen minutes, jobs won't be tried more often than 29769632Seric once every fifteen minutes. This can be used to give 29869632Seric you more responsiveness if your delivery mode is set to 29969632Seric queue-only. 30069632Seric Allow "fileopen" timeout (default: 60 seconds) for opening 30169632Seric :include: and .forward files. 30269632Seric Add "-k", "-v", and "-z" flags to map definitions; these set the 30369632Seric key field name, the value field name, and the field 30469632Seric delimiter. The field delimiter can be a single character 30569632Seric or the sequence "\t" or "\n" for tab or newline. 30669632Seric These are for use by NIS+ and similar access methods. 30769632Seric Add "nisplus" map class. Takes -k and -v flags to choose the 30869632Seric key and value field names respectively. Code donated by 30969632Seric Sun Microsystems. 31069632Seric Add "hesiod" map class. The "file name" is used as the 31169632Seric "HesiodNameType" parameter to hes_resolve(3). Returns the 31269632Seric first value found for the match. Code donated by Scott 31369632Seric Hutton of Indiana University. 31469632Seric Add "netinfo" (NeXT NetInfo) map class. Maps can have a -k flag to 31569632Seric specify the name of the property that is searched as the 31669632Seric key and a -v flag to specify the name of the property that 31769632Seric is returned as the value (defaults to "members"). The 31869632Seric default map is "/aliases". 31969632Seric Add "text" map class. This does slow, linear searches through 32069632Seric text files. The -z flag specifies a column delimiter 32169632Seric (defaults to any sequence of white space), the -k flag 32269632Seric sets the key column number, and the -v flag sets the 32369632Seric value column number. Lines beginning with `#' are treated 32469632Seric as comments. 32569632Seric Add "program" map class to execute arbitrary programs. The search 32669632Seric key is presented as the last argument; the output is one 32769632Seric line read from the programs standard output. Exit statuses 32869632Seric are from sysexits.h. 32969632Seric Add "sequence" map class -- searches maps in sequence until it 33069632Seric finds a match. For example, the declarations: 33169632Seric Kmap1 ... 33269632Seric Kmap2 ... 33369632Seric Kmapseq sequence map1 map2 33469632Seric defines a map "mapseq" that first searches map1; if the 33569632Seric value is found it is returned immediately, otherwise 33669632Seric map2 is searched and the value returned. 33769632Seric Add "switch" map class. This is much like "sequence" except that 33869632Seric the ordering is fetched from an external file, usually 33969632Seric the system service switch. The parameter is the name of 34069632Seric the service to switch on, and the maps that it will use 34169632Seric are this name followed by ".service_type". For example, 34269632Seric if the declaration of the map is 34369632Seric Ksample switch hosts 34469632Seric and the system service switch specifies that hosts are 34569632Seric looked up using dns and nis in that order, then this is 34669632Seric equivalent to 34769632Seric Ksample sequence hosts.dns hosts.nis 34869632Seric The subordinate maps must already be defined. 34969632Seric Add "user" map class -- looks up users using getpwnam. Takes a 35069632Seric "-v field" flag on the definition that tells what passwd 35169632Seric entry to return -- legal values are name, passwd, uid, gid, 35269632Seric gecos, dir, and shell. Generally expected to be used with 35369632Seric the -m (matchonly) flag. 35469632Seric Add "bestmx" map class -- returns the best MX value for the host 35569632Seric listed as the value. If there are several "best" MX records 35669632Seric for this host, one will be chosen at random. 35769632Seric Add "userdb" map class -- looks up entries in the user database. 35869632Seric The "file name" is actually the tag that will be used, 35969632Seric typically "mailname". If there are multiple entries 36069632Seric matching the name, the one chosen is undefined. 36169632Seric Add multiple queue timeouts (both return and warning). These are 36269632Seric set by the Precedence: or Priority: header fields to one of 36369632Seric three values. If a Priority: is set and has value "normal", 36469632Seric "urgent", or "non-urgent" the corresponding timeouts are 36569632Seric used. If no priority is set, the Precedence: is consulted; 36669632Seric if negative, non-urgent timeouts are used; if greater than 36769632Seric zero, urgent timeouts are used. Otherwise, normal timeouts 36869632Seric are used. The timeouts are set by setting the six timeouts 36969632Seric queue{warn,return}.{urgent,normal,non-urgent}. 37069632Seric Fix problem when a mail address is resolved to a $#error mailer 37169632Seric with a temporary failure indication; it works in SMTP, 37269632Seric but when delivering locally the mail is silently discarded. 37369632Seric This patch, from Kyle Jones of UUNET, bounces it instead 37469632Seric of queueing it (queueing is very hard). 37569632Seric When using /etc/hosts or NIS-style lookups, don't assume that 37669632Seric the first name in the list is the best one -- instead, 37769632Seric search for the first one with a dot. For example, if 37869632Seric an /etc/hosts entry reads 37969632Seric 128.32.149.68 mammoth mammoth.CS.Berkeley.EDU 38069632Seric this change will use the second name as the canonical 38169632Seric machine name instead of the initial, unqualified name. 38269632Seric This heuristic is only used for finding your own name on 38369632Seric startup, when the system may not be fully configured yet. 38469632Seric Change dequote map to replace spaces in quoted text with a value 38569632Seric indicated by the -s flag on the dequote map definition. 38669632Seric For example, ``Mdequote dequote -s_'' will change 38769632Seric "Foo Bar" into an unquoted Foo_Bar instead of leaving it 38869632Seric quoted (because of the space character). Suggested by Dan 38969632Seric Oscarsson for use in X.400 addresses. 39069632Seric Implement long macro names as ${name}; long class names can 39169632Seric be similarly referenced as $={name} and $~{name}. 39269632Seric Definitions are (e.g.) ``D{name}value''. Names that have 39369632Seric a leading lower case letter or punctuation characters are 39469632Seric reserved for internal use by sendmail; i.e., config files 39569632Seric should use names that begin with a capital letter. Based 39669632Seric on code contributed by Dan Oscarsson. 39769632Seric Fix core dump if getgrgid returns a null group list (as opposed 39869632Seric to an empty group list, that is, a pointer to a list 39969632Seric with no members). Fix from Andrew Chang of Sun Microsystems. 40069632Seric Fix possible core dump if malloc fails -- if the malloc in xalloc 40169632Seric failed, it called syserr which called newstr which called 40269632Seric xalloc.... The newstr is now avoided for "panic" messages. 40369632Seric Reported by Stuart Kemp of James Cook University. 40469632Seric Improve connection cache timeouts; previously, they were not even 40569632Seric checked if you were delivering to anything other than an 40669632Seric IPC-connected host, so a series of (say) local mail 40769632Seric deliveries could cause cached connections to be open 40869632Seric much longer than the specified timeout. 40969632Seric If an incoming message exceeds the maximum message size, stop 41069632Seric writing the incoming bytes to the queue data file, since 41169632Seric this can fill your mqueue partition -- this is a possible 41269632Seric denial-of-service attack. 41369632Seric Don't reject all numeric local user names unless HESIOD is 41469632Seric defined. It turns out that Posix allows all-numeric 41569632Seric user names. Fix from Tony Sanders of BSDI. 41669632Seric Add service switch support. If the local OS has a service 41769632Seric switch (e.g., /etc/nsswitch.conf on Solaris) that will 41869632Seric be used; otherwise, it falls back to using a local 41969632Seric mechanism based on the ServiceSwitchFile option 42069632Seric (default: /etc/service.switch). For example, if the 42169632Seric service switch lists "files" and "nis" for the aliases 42269632Seric service, that will be the default lookup order. Note 42369632Seric that you can still stack aliases files however, although 42469632Seric you have to list them explicitly as "implicit:filename". 42569632Seric Option I (NameServerOptions) no longer sets the "UseNameServer" 42669632Seric variable which tells whether or not DNS should be considered 42769632Seric canonical. This is now determined based on whether or not 42869632Seric "dns" is in the service list for "hosts". 42969632Seric Add preliminary support for the ESMTP "DSN" extension (Delivery 43069632Seric Status Notifications). This is not yet a standard 43169632Seric and the implementation is for experimentation only. 43269632Seric For this reason it only announces itself as "X-DSN-0" 43369632Seric instead of "DSN". DSN notifications override 43469632Seric Return-Receipt-To:. 43569632Seric Add T=mtstype keyletter to mailer definitions to define the value 43669632Seric for the Final-MTS-Type: and Remote-MTS-Type: fields in the 43769632Seric DSN-standard return message. 43869632Seric Extend heuristic to force running in ESMTP mode to look for the 43969632Seric six-character string "ESMTP " anywhere in the 220 greeting 44069632Seric message (not just the second line). This is to provide 44169632Seric better compatibility with other ESMTP servers. 44269632Seric Print sequence number of job when running the queue so you can 44369632Seric easily see how much progress you have made. Suggested 44469632Seric by Peter Wemm of DIALix. 44569632Seric Map newlines to spaces in logged message-ids; some versions of 44669632Seric syslog truncate the rest of the line after newlines. 44769632Seric Suggested by Fletcher Mattox of U. Texas. 44869632Seric Move up forking for job runs so that if a message is split into 44969632Seric multiple envelopes you don't get "fork storms" -- this 45069632Seric also improves the connection cache utilization. 45169632Seric Accept "<<>>", "<<<>>>", and so forth as equivalent to "<>" for 45269632Seric the purposes of refusing to send error returns. Suggested 45369632Seric by Motonori Nakamura of Ritsumeikan University. 45469632Seric Relax rules on when a file can be written when referenced from 45569632Seric the aliases file: use the default uid/gid instead of the 45669632Seric real uid/gid. This allows you to create a file owned by 45769632Seric and writable only by the default uid/gid that will work 45869632Seric all the time (without having the setuid bit set). Change 45969632Seric suggested by Shau-Ping Lo and Andrew Cheng of Sun 46069632Seric Microsystems. 46169632Seric Add "DialDelay" option (no short name) to provide an "extra" 46269632Seric delay for dial on demand systems. If this is non-zero 46369632Seric and a connect fails, sendmail will wait this long and 46469632Seric then try again. If it takes longer than the kernel 46569632Seric timeout interval to establish the connection, this 46669632Seric option can give the network software time to establish 46769632Seric the link. The default units are seconds. 46869632Seric Move logging of sender information to be as early as possible; 46969632Seric previously, it could be delayed a while for SMTP mail 47069632Seric sent to aliases. Suggested by Brad Knowles of the 47169632Seric Defense Information Systems Agency. 47269632Seric Call res_init() before setting RES_DEBUG; this is required by 47369632Seric BIND 4.9.3, or so I'm told. From Douglas Anderson of 47469632Seric the National Computer Security Center. 47569632Seric Add xdelay= field in logs -- this is a transaction delay, telling 47669632Seric you how long it took to deliver to this address on the 47769632Seric last try. It is intended to be used for sorting mailing 47869632Seric lists to favor "quick" addresses. Provided for use by 47969632Seric the mailprio scripts (see below). 48069632Seric If a map cannot be opened, and that map is non-optional, and 48169632Seric an address requires that map for resolution, queue the 48269632Seric map instead of bouncing it. This involves creating a 48369632Seric pseudo-class of maps called "bogus-map" -- if a required 48469632Seric map cannot be opened, the class is changed to bogus-map; 48569632Seric all queries against bogus-map return "tempfail". The 48669632Seric bogus-map class is not directly accessible. A sample 48769632Seric implementation was donated by Jem Taylor of Glasgow 48869632Seric University Computing Service. 48969632Seric Don't make a bad ``MAIL FROM:'' address on one message blow away 49069632Seric other messages to the same host later in the queue. 49169632Seric Problem noted by Eric Prestemon of American University. 49269632Seric Fix a possible core dump when mailing to a program that talks 49369632Seric SMTP on its standard input. Fix from Keith Moore of 49469632Seric the University of Kentucky. 49569632Seric Make it possible to resolve filenames to $#local $: @ /filename; 49669632Seric previously, the "@" would cause it to not be recognized 49769632Seric as a file. Problem noted by Brian Hill of U.C. Davis. 49869632Seric Accept a -1 signal to re-exec the daemon. This only works if 49969632Seric argv[0] is a full path to sendmail. 50069632Seric Fix bug in "addr=..." field in O option on little-endian machines 50169632Seric -- the network number wasn't being converted to network 50269632Seric byte order. Patch from Kurt Lidl of Pix Technologies 50369632Seric Corporation. 50469632Seric Pre-initialize the resolver early on; this is to avoid a bug with 50569632Seric BIND 4.9.3 that can cause the _res.retry field to get 50669632Seric reset to zero, causing all name server lookups to time 50769632Seric out. Fix from Matt Day of Artisoft. 50869632Seric Restore T line (trusted users) in config file -- but instead of 50969632Seric locking out the -f flag, they just tell whether or not 51069632Seric an X-Authentication-Warning: will be added. This really 51169632Seric just creates new entries in class 't', so "Ft/file/name" 51269632Seric can be used to read trusted user names from a file. 51369632Seric Improve NEWDB alias file rebuilding so it will create them 51469632Seric properly if they do not already exist. This had been 51569632Seric a MAYBENEXTRELEASE feature in 8.6.9. 51669632Seric Check for @:@ entry in NIS maps before starting up to avoid 51769632Seric (but not prevent, sigh) race conditions. This ought to 51869632Seric be handled properly in ypserv, but isn't. Suggested by 51969632Seric Michael Beirne of Motorola. 52069632Seric Refuse connections if there isn't enough space on the filesystem 52169632Seric holding the queue. Contributed by Robert Dana of Wolf 52269632Seric Communications. 52369632Seric Skip checking for directory permissions in the path to a file 52469632Seric when checking for file permissions iff setreuid() 52569632Seric succeeded -- it is unnecessary in that case. This avoids 52669632Seric significant performance problems when looking for .forward 52769632Seric files. Based on a suggestion by Win Bent of USC. 52869632Seric Allow symbolic ruleset names. Syntax can be "Sname" to get an 52969632Seric arbitrary ruleset number assigned or "Sname = integer" 53069632Seric to assign a specific ruleset number. Reference is 53169632Seric $>name_or_number. Names can be composed of alphas, digits, 53269632Seric underscore, or hyphen (first character must be non-numeric). 53369632Seric Allow -o flag on AliasFile lines to make the alias file optional. 53469632Seric From Bryan Costales of ICSI. 53569632Seric Add NoRecipientAction option to handle the case where there is 53669632Seric no legal recipient header in the message. It can take 53769632Seric on values: 53869632Seric None Leave the message as is. The 53969632Seric message will be passed on even 54069632Seric though it is in technically 54169632Seric illegal syntax. 54269632Seric Add-To Add a To: header with any 54369632Seric recipients that it can find from 54469632Seric the envelope. This risks exposing 54569632Seric Bcc: recipients. 54669632Seric Add-Apparently-To Add an Apparently-To: header. This 54769632Seric has almost no redeeming social value, 54869632Seric and is provided only for back 54969632Seric compatibility. 55069632Seric Add-To-Undisclosed Add a header reading 55169632Seric To: undisclosed-recipients:; 55269632Seric which will have the effect of 55369632Seric making the message legal without 55469632Seric exposing Bcc: recipients. 55569632Seric Add-Bcc To add an empty Bcc: header. 55669632Seric There is a chance that mailers down 55769632Seric the line will delete this header, 55869632Seric which could cause exposure of Bcc: 55969632Seric recipients. 56069632Seric The default is NoRecipientAction=None. 56169632Seric Truncate (rather than delete) Bcc: lines in the header. This 56269632Seric should prevent later sendmails (at least, those that don't 56369632Seric themselves delete Bcc:) from considering this message to 56469632Seric be non-conforming -- although it does imply that non-blind 56569632Seric recipients can see that a Bcc: was sent, albeit not to whom. 56669632Seric Add SafeFileEnvironment option. If declared, files named as delivery 56769632Seric targets must be regular files in addition to the regular 56869632Seric checks. Also, if the option is non-null then it is used as 56969632Seric the name of a directory that is used as a chroot(2) 57069632Seric environment for the delivery; the file names listed in an 57169632Seric alias or forward should include the name of this root. 57269632Seric For example, if you run with 57369632Seric O SafeFileEnvironment=/arch 57469632Seric then aliases should reference "/arch/rest/of/path". If a 57569632Seric value is given, sendmail also won't try to save to 57669632Seric /usr/tmp/dead.letter (instead it just leaves the job in the 57769632Seric queue as Qfxxxxxx). Inspired by *Hobbit*'s sendmail patch kit. 57869632Seric Support -A flag for alias files; this will comma concatenate like 57969632Seric entries. For example, given the aliases: 58069632Seric list: member1 58169632Seric list: member2 58269632Seric and an alias file declared as: 58369632Seric OAhash:-A /etc/aliases 58469632Seric the final alias inserted will be "list: member1,member2"; 58569632Seric without -A you will get an error on the second and subsequent 58669632Seric alias for "list". Contributed by Bryan Costales of ICSI. 58769632Seric Line-buffer transcript file. Suggested by Liudvikas Bukys. 58869632Seric Fix a problem that could cause very long addresses to core dump in 58969632Seric some special circumstances. Problem pointed out by Allan 59069632Seric Johannesen. 59169632Seric (Internal change.) Change interface to expand() (macro expansion) 59269632Seric to be simpler and more consistent. 59369632Seric Delete check for funny qf file names. This didn't really give 59469632Seric any extra security and caused some people some problems. 59569632Seric (If you -really- want this, define PICKY_QF_NAME_CHECK 59669632Seric at compile time.) Suggested by Kyle Jones of UUNET. 59769632Seric (Internal change.) Change EF_NORETURN to EF_NO_BODY_RETN and 59869632Seric merge with DSN code; this is simpler and more consistent. 59969632Seric This may affect some people who have written their own 60069632Seric checkcompat() routine. 60169632Seric (Internal change.) Eliminate `D' line in qf file. The df file 60269632Seric is now assumed to be the same name as the qf file (with 60369632Seric the `q' changed to a `d', of course). 60469632Seric Avoid forking for delivery if all recipient mailers are marked as 60569632Seric "expensive" -- this can be a major cost on some systems. 60669632Seric Essentially, this forces sendmail into "queue only" mode 60769632Seric if all it is going to do is queue anyway. 60869632Seric Avoid sending a null message in some rather unusual circumstances 60969632Seric (specifically, the RCPT command returns a temporary 61069632Seric failure but the connection is lost before the DATA 61169632Seric command). Fix from Scott Hammond of Secure Computing 61269632Seric Corporation. 61369632Seric Change makesendmail to use a somewhat more rational naming scheme: 61469632Seric Makefiles and obj directories are named $os.$rel.$arch, 61569632Seric where $os is the operating system (e.g., SunOS), $rel is 61669632Seric the release number (e.g., 5.3), and $arch is the machine 61769632Seric architecture (e.g., sun4). Any of these can be omitted, 61869632Seric and anything after the first dot in a release number can 61969632Seric be replaced with "x" (e.g., SunOS.4.x.sun4). The previous 62069632Seric version used $os.$arch.$rel and was rather less general. 62169632Seric Ignore IDENT return value if the OSTYPE field returns "OTHER", 62269632Seric as indicated by RFC 1413. Pointed out by Kari Hurtta 62369632Seric of the Finnish Meteorological Institute. 62469632Seric Fix problem that could cause multiple responses to DATA command 62569632Seric on header syntax errors (e.g., lines beginning with colons). 62669632Seric Problem noted by Jens Thomassen of the University of Oslo. 62769632Seric Don't let null bytes in headers cause truncation of the rest of 62869632Seric the header. 62969632Seric Log Authentication-Warning:s. Suggested by Motonori Nakamura. 63069632Seric Increase timeouts on message data puts to allow time for receivers 63169632Seric to canonify addresses in headers on the fly. This is still 63269632Seric a rather ugly heuristic. From Motonori Nakamura. 63369632Seric Add "HasWildcardMX" suboption to ResolverOptions; if set, MX 63469632Seric records are not used when canonifying names. This is 63569632Seric useful if you have a wildcard MX record, although it 63669632Seric may cause other problems. In general, don't use wildcard 63769632Seric MX records. Patch from Motonori Nakamura. 63869632Seric Eliminate default two-line SMTP greeting message. Instead of 63969632Seric adding an extra "ESMTP spoken here" line, the word "ESMTP" 64069632Seric is added between the first and second word of the first 64169632Seric line of the greeting message (i.e., immediately after the 64269632Seric host name). This eliminates the need for the BROKEN_SMTP_PEERS 64369632Seric compile flag. Old sendmails won't see the ESMTP, but that's 64469632Seric acceptable because SIZE was the only useful extension that 64569632Seric old sendmails understand. 64669632Seric Avoid gethostbyname calls on UNIX domain sockets during SIGUSR1 64769632Seric invoked state dumps. From Masaharu Onishi. 64869632Seric Allow on-line comments in .forward and :include: files; they are 64969632Seric introduced by the string "<LWSP>#@#<LWSP>", where <LWSP> 65069632Seric is a space or a tab. This is intended for native 65169632Seric representation of non-ASCII sets such as Japanese, where 65269632Seric existing encodings would be unreadable or would lose 65369632Seric data -- for example, 65469632Seric <motonori@cs.ritsumei.ac.jp> NAKAMURA Motonori 65569632Seric (romanized/less information) 65669632Seric <motonori@cs.ritsumei.ac.jp> =?ISO-2022-JP?B?GyRCQ2ZCPBsoQg==?= 65769632Seric =?ISO-2022-JP?B?GyRCQUdFNRsoQg==?= 65869632Seric (with MIME encoding, not human readable) 65969632Seric <motonori@cs.ritsumei.ac.jp> #@# ^[$BCfB<^[(B ^[$BAGE5^[(B 66069632Seric (native encoding with ISO-2022-JP) 66169632Seric The last form is human readable in the Japanese environment. 66269632Seric Based on a fix from (surprise!) Motonori Nakamura. 66369632Seric Don't make SMTP error returns on MAIL FROM: line be "sticky" for all 66469632Seric messages to that host; these are most frequently associated 66569632Seric with addresses rather than the host, with the exception of 66669632Seric 421 (service shutting down). The effect was to cause queues 66769632Seric to sometimes take an excessive time to flush. Reported by 66869632Seric Robert Sargent of Southern Geographics Technologies. 66969632Seric Add Nice=N mailer option to set the niceness at which a mailer will 67069632Seric run. 67169632Seric When looking for a default config file (that is, not specified using 67269632Seric a -C flag), try a configuration file name extended by the 67369632Seric binary version number -- e.g., sendmail.8.7.Alpha.9.cf, 67469632Seric sendmail.8.7.Alpha.cf, sendmail.8.7.cf, sendmail.8.cf, and 67569632Seric sendmail.cf in that order. This should make it easier to 67669632Seric test new versions in a shared environment. 67769632Seric Log queue runs that are skipped due to high loads. They are logged 67869632Seric at LOG_INFO priority iff the log level is > 8. Contributed 67969632Seric by Bruce Nagel of Data General. 68069632Seric Allow the error mailer to accept a DSN-style error status code 68169632Seric instead of an sysexits status code in the host part. 68269632Seric Anything with a dot will be interpreted as a DSN-style code. 68369632Seric Add new mailer flag: F=3 will tell translations to Quoted-Printable 68469632Seric to encode characters that might be munged by an EBCDIC system 68569632Seric in addition to the set required by RFC 1521. The additional 68669632Seric characters are !, ", #, $, @, [, \, ], ^, `, {, |, }, and ~. 68769632Seric (Think of "IBM 360" as the mnemonic for this flag.) 68869632Seric Change check for mailing to files to look for a pathname of [FILE] 68969632Seric rather than looking for the mailer named *file*. The mapping 69069632Seric of leading slashes still goes to the *file* mailer. This 69169632Seric allows you to implement the *file* mailer as a separate 69269632Seric program, for example, to insert a Content-Length: header 69369632Seric or do special security policy. However, note that the usual 69469632Seric initial checking for the file permissions is still done, and 69569632Seric the program in question needs to be very careful about how 69669632Seric it does the file write to avoid security problems. 69769632Seric Be able to read ~root/.forward even if the path isn't accessible to 69869632Seric regular users. This is disrecommended because sendmail 69969632Seric sometimes does not run as root (e.g., when an unsafe option 70069632Seric is specified on the command line), but should otherwise be 70169632Seric safe because .forward files must be owned by the user for 70269632Seric whom mail is being forwarded, and cannot be a symbolic link. 70369632Seric Suggested by Forrest Aldrich of Wang Laboratories. 70469632Seric Add new "HostsFile" option that is the pathname to the /etc/hosts 70569632Seric file. This is used for canonifying hostnames when the 70669632Seric service type is "files". 70769632Seric Implement programs on F (read class from file) line. The syntax is 70869632Seric Fc|/path/to/program to read the output from the program 70969632Seric into class "c". 71069632Seric Probe the network interfaces to find alternate names for this 71169632Seric host. Requires the SIOCGIFCONF ioctl call. Code 71269632Seric contributed by SunSoft. 71369632Seric Add "E" configuration line to set or propogate environment 71469632Seric variables into children. "E<envar>" will propogate 71569632Seric the named variable from the environment when sendmail 71669632Seric was invoked into any children it calls; "E<envar>=<value>" 71769632Seric sets the named variable to the indicated value. Any 71869632Seric variables not explicitly named will not be in the child 71969632Seric environment. However, sendmail still forces an 72069632Seric "AGENT=sendmail" environment variable, in part to enforce 72169632Seric at least one environment variable, since many programs and 72269632Seric libraries die horribly if this is not guaranteed. 723*69664Seric Change heuristic for rebuilding both NEWDB and NDBM versions of 724*69664Seric alias databases -- new algorithm looks for the substring 725*69664Seric "/yp/" in the file name. This is more portable and involves 726*69664Seric less overhead. Suggested by Motonori Nakamura. 72769632Seric PORTABILITY FIXES: 72869632Seric Solaris 2 from Rob McMahon <cudcv@csv.warwick.ac.uk>. 72969632Seric System V Release 4 from Motonori Nakamura of Ritsumeikan 73069632Seric University. This expands the disk size 73169632Seric checking to include all (?) SVR4 configurations. 73269632Seric System V Release 4 from Kimmo Suominen -- initgroups(3) 73369632Seric and setrlimit(2) are both available. 73469632Seric System V Release 4 from sob@sculley.ffg.com -- some versions 73569632Seric apparently "have EX_OK defined in other headerfiles." 73669632Seric Linux Makefile typo. 73769632Seric Linux getusershell(3) is broken in Slackware 2.0 -- 73869632Seric from Andrew Pam of Xanadu Australia. 73969632Seric More Linux tweaking from John Kennedy of California State 74069632Seric University, Chico. 74169632Seric Cray changes from Eric Wassenaar: ``On Cray, shorts, 74269632Seric ints, and longs are all 64 bits, and all structs 74369632Seric are multiples of 64 bits. This means that the 74469632Seric sizeof operator returns only multiples of 8. 74569632Seric This requires adaptation of code that really 74669632Seric deals with 32 bit or 16 bit fields, such as IP 74769632Seric addresses or nameserver fields.'' 74869632Seric DG/UX 5.4.3 from Mark T. Robinson <mtr@ornl.gov>. To 74969632Seric get the old behaviour, use -DDGUX_5_4_2. 75069632Seric DG/UX hack: add _FORCE_MAIL_LOCAL_=yes environment 75169632Seric variable to fix bogus /bin/mail behaviour. 75269632Seric Tandem NonStop-UX from Rick McCarty <mccarty@mpd.tandem.com>. 75369632Seric This also cleans up some System V Release 4 compile 75469632Seric problems. 75569632Seric Solaris 2: sendmail.cw file should be in /etc/mail to 75669632Seric match all the other configuration files. Fix 75769632Seric from Glenn Barry of Emory University. 75869632Seric Solaris 2.3: compile problem in conf.c. Fix from Alain 75969632Seric Nissen of the University of Liege, Belgium. 76069632Seric Ultrix: freespace calculation was incorrect. Fix from 76169632Seric Takashi Kizu of Osaka University. 76269632Seric SVR4: running in background gets a SIGTTOU because the 76369632Seric emulation code doesn't realize that "getpeername" 76469632Seric doesn't require reading the file. Fix from Peter 76569632Seric Wemm of DIALix. 76669632Seric Solaris 2.3: due to an apparent bug in the socket emulation 76769632Seric library, sockets can get into a "wedged" state where 76869632Seric they just return EPROTO; closing and re-opening the 76969632Seric socket clears the problem. Fix from Bob Manson 77069632Seric of Ohio State University. 77169632Seric Hitachi 3050R & 3050RX running HI-UX/WE2: portability 77269632Seric fixes from Akihiro Hashimoto ("Hash") of Chiba 77369632Seric University. 77469632Seric AIX changes to allow setproctitle to work from Rainer Sch�pf 77569632Seric of Zentrum f�r Datenverarbeitung der Universit�t 77669632Seric Mainz. 77769632Seric SCO Unix from Chip Rosenthal of Unicom (code was using the 77869632Seric wrong statfs call). 77969632Seric ANSI C fixes from Adam Glass (NetBSD project). 78069632Seric Stardent Titan/ANSI C fixes from Kate Hedstrom of Rutgers 78169632Seric University. 78269632Seric DG-UX fixes from Bruce Nagel of Data General. 78369632Seric IRIX64 updates from Mark Levinson of the University of 78469632Seric Rochester Medical Center. 78569632Seric Altos System V (``the first UNIX/XENIX merge the Altos 78669632Seric did for their Series 1000 & Series 2000 line; 78769632Seric their merged code was licenced back to AT&T and 78869632Seric Microsoft and became System V release 3.2'') from 78969632Seric Tim Rice <timr@crl.com>. 79069632Seric OSF/1 running on Intel Paragon from Jeff A. Earickson 79169632Seric <jeff@ssd.intel.com> of Intel Scalable Systems 79269632Seric Divison. 79369632Seric Amdahl UTS System V 2.1.5 (SVr3-based) from Janet Jackson 79469632Seric <janet@dialix.oz.au>. 79569632Seric System V Release 4 (statvfs semantic fix) from Alain 79669632Seric Durand of I.M.A.G. 79769632Seric HP-UX 10.x multiprocessor load average changes from 79869632Seric Scott Hutton and Jeff Sumler of Indiana University. 79969632Seric Cray CSOS from Scott Bolte of Cray Computer Corporation. 80069632Seric Unicos 8.0 from Douglas K. Rand of the University of North 80169632Seric Dakota, Scientific Computing Center. 80269632Seric Solaris 2.4 fixes from Sanjay Dani of Dani Communications. 80369632Seric ConvexOS 11.0 from Christophe Wolfhugel. 80469632Seric IRIX 4.0.5 from David Ashton-Reader of CADcentre. 80569632Seric ISC UNIX from J. J. Bailey. 80669632Seric HP-UX 9.xx on the 8xx series machines from Remy Giraud 80769632Seric of Meteo France. 80869632Seric HP-UX configuration from Tom Lane <tgl@sss.pgh.pa.us>. 80969632Seric IRIX 5.2 and 5.3 from Kari E. Hurtta. 81069632Seric FreeBSD 2.0 from Mike Hickey of Federal Data Corporation. 81169632Seric Sony NEWS-OS 4.2.1R and 6.0.3 from Motonori Nakamura. 81269632Seric Omron LUNA unios-b, mach from Motonori Nakamura. 81369632Seric NEC EWS-UX/V 4.2 from Motonori Nakamura. 81469632Seric NeXT 2.1 from Bryan Costales. 81569632Seric AUX patch thanks to Mike Erwin of Apple Computer. 81669632Seric HP-UX 10.0 from John Beck of Hewlett-Packard. 81769632Seric Ultrix: allow -DBROKEN_RES_SEARCH=0 if you are using a 81869632Seric non-DEC resolver. Suggested by Allan Johannesen. 81969632Seric MAKEMAP: allow -d flag to allow insertion of duplicate aliases 82069632Seric in type ``btree'' maps. The semantics of this are undefined 82169632Seric for regular maps, but it can be useful for the user database. 82269632Seric MAKEMAP: lock database file while rebuilding to avoid sendmail 82369632Seric lookups while the rebuild is going on. There is a race 82469632Seric condition between the open(... O_TRUNC ...) and the lock 82569632Seric on the file, but it should be quite small. 82669632Seric SMRSH: sendmail restricted shell added to the release. This can 82769632Seric be used as an alternative to /bin/sh for the "prog" mailer, 82869632Seric giving the local administrator more control over what 82969632Seric programs can be run from sendmail. 83069632Seric CONTRIB: a patch to rmail.c from Bill Gianopoulos of Raytheon 83169632Seric to allow rmail to compile on systems that don't have 83269632Seric function prototypes and systems that don't have snprintf. 83369632Seric CONTRIB: add the "mailprio" scripts that will help you sort mailing 83469632Seric lists by transaction delay times so that addresses that 83569632Seric respond quickly get sent first. This is to prevent very 83669632Seric sluggish servers from delaying other peoples' mail. 83769632Seric Contributed by Tony Sanders of BSDI. 83869632Seric CONTRIB: add the "bsdi.mc" file as contributed by Tony Sanders 83969632Seric of BSDI. This has a lot of comments to help people out. 84069632Seric CONFIG: fix mail from <> so it will properly convert to 84169632Seric MAILER-DAEMON on local addresses. 84269632Seric CONFIG: fix code that was supposed to catch colons in host 84369632Seric names. Problem noted by John Gardiner Myers of CMU. 84469632Seric CONFIG: allow use of SMTP_MAILER_MAX in nullclient configuration. 84569632Seric From Paul Riddle of the University of Maryland, Baltimore 84669632Seric County. 84769632Seric CONFIG: Catch and reject "." as a host address. 84869632Seric CONFIG: Generalize domaintable to look up all domains, not 84969632Seric just unqualified ones. 85069632Seric CONFIG: Delete OLD_SENDMAIL support -- as near as I can tell, it 85169632Seric was never used and didn't work anyway. 85269632Seric CONFIG: Set flags A, w, 5, :, /, |, and @ on the "local" mailer 85369632Seric and d on all mailers in the UUCP class. 85469632Seric CONFIG: Allow "user+detail" to be aliased specially: it will first 85569632Seric look for an alias for "user+detail", then for "user+*", and 85669632Seric finally for "user". This is intended for forwarding mail 85769632Seric for system aliases such as root and postmaster to a 85869632Seric centralized hub. 85969632Seric CONFIG: add confEIGHT_BIT_HANDLING to set option 8 (see above). 86069632Seric CONFIG: add smtp8 mailer; this has the F=8 (just-send-8) flag set. 86169632Seric The F=8 flag is also set on the "relay" mailer, since 86269632Seric this is expected to be another sendmail. 86369632Seric CONFIG: avoid qualifying all UUCP addresses sent via SMTP with 86469632Seric the name of the UUCP_RELAY -- in some cases, this is the 86569632Seric wrong value (e.g., when we have local UUCP connections), 86669632Seric and this can create unreplyable addresses. From Chip 86769632Seric Rosenthal of Unicom. 86869632Seric CONFIG: add confRECEIVED_HEADER to change the format of the 86969632Seric Received: header inserted into all messages. Suggested by 87069632Seric Gary Mills of the University of Manitoba. 87169632Seric CONFIG: Make "notsticky" the default; use FEATURE(stickyhost) 87269632Seric to get the old behaviour. I did this upon observing 87369632Seric that almost everyone needed this feature, and that the 87469632Seric concept I was trying to make happen didn't work with 87569632Seric some user agents anyway. FEATURE(notsticky) still works, 87669632Seric but it is a no-op. 87769632Seric CONFIG: Add LUSER_RELAY -- the host to which unrecognized user 87869632Seric names are sent, rather than immediately diagnosing them 87969632Seric as User Unknown. 88069632Seric CONFIG: Add SMTP_MAILER_ARGS, ESMTP_MAILER_ARGS, SMTP8_MAILER_ARGS, 88169632Seric and RELAY_MAILER_ARGS to set the arguments for the 88269632Seric indicated mailers. All default to "IPC $h". Patch from 88369632Seric Larry Parmelee of Cornell University. 88469632Seric CONFIG: pop mailer needs F=n flag to avoid "annoying side effects 88569632Seric on the client side" and F=P to get an appropriate 88669632Seric return-path. From Kimmo Suominen. 88769632Seric CONFIG: add FEATURE(local_procmail) to use the procmail program 88869632Seric as the local mailer. For addresses of the form "user+detail" 88969632Seric the "detail" part is passed to procmail via the -a flag. 89069632Seric Contributed by Kimmo Suominen. 89169632Seric CONFIG: add MAILER(procmail) to add an interface to procmail for 89269632Seric use from mailertables. This lets you execute arbitrary 89369632Seric procmail scripts. Contributed by Kimmo Suominen. 89469632Seric CONFIG: add T= fields (MTS type) to local, smtp, and uucp mailers. 89569632Seric CONFIG: add OSTYPE(ptx2) for DYNIX/ptx 2.x from Sequent. From 89669632Seric Paul Southworth of CICNet Systems Support. 89769632Seric CONFIG: use -a$g as default to UUCP mailers, instead of -a$f. 89869632Seric This causes the null return path to be rewritten as 89969632Seric MAILER-DAEMON; otherwise UUCP gets horribly confused. 90069632Seric From Michael Hohmuth of Technische Universitat Dresden. 90169632Seric CONFIG: Add FEATURE(bestmx_is_local) to cause any hosts that 90269632Seric list us as the best possible MX record to be treated as 90369632Seric though they were local (essentially, assume that they 90469632Seric are included in $=w). This can cause additional DNS 90569632Seric traffic, but is easier to administer if this fits your 90669632Seric local model. It does not work reliably if there are 90769632Seric multiple hosts that share the best MX preference. 90869632Seric Code contributed by John Oleynick of Rutgers. 90969632Seric CONFIG: Add FEATURE(smrsh) to use smrsh (the SendMail Restricted 91069632Seric SHell) instead of /bin/sh as the program used for delivery 91169632Seric to programs. If an argument is included, it is used as 91269632Seric the path to smrsh; otherwise, /usr/local/etc/smrsh is 91369632Seric assumed. 91469632Seric CONFIG: Add LOCAL_MAILER_MAX and PROCMAILER_MAILER_MAX to limit the 91569632Seric size of messages to the local and procmail mailers 91669632Seric respectively. Contributed by Brad Knowles of the Defense 91769632Seric Information Systems Agency. 91869632Seric CONFIG: Handle leading ``phrase:'' and trailing ``;'' as comments 91969632Seric (just like text outside of angle brackets) in order to 92069632Seric properly deal with ``group: addr1, ... addrN;'' syntax. 92169632Seric CONFIG: Require OSTYPE macro (the defaults really don't apply to 92269632Seric any real systems any more) and tweak the DOMAIN macro 92369632Seric so that it is less likely that users will accidently use 92469632Seric the Berkeley defaults. Also, create some generic files 92569632Seric that really can be used in the real world. 92669632Seric CONFIG: Add new configuration macros to set character sets for 92769632Seric messages _arriving from_ various mailers: LOCAL_MAILER_CHARSET, 92869632Seric SMTP_MAILER_CHARSET, and UUCP_MAILER_CHARSET. 92969632Seric CONFIG: Change UUCP_MAX_SIZE to UUCP_MAILER_MAX for consistency. 93069632Seric The old name will still be accepted for a while at least. 93169632Seric CONFIG: Implement DECNET_RELAY as spec for host to which DECNET 93269632Seric mail (.DECNET pseudo-domain or node::user) will be sent. 93369632Seric As with all relays, it can be ``mailer:hostname''. Suggested 93469632Seric by Scott Hutton. 93569632Seric CONFIG: Add MAILER(mail11) to get DECnet support. Code contributed 93669632Seric by Barb Dijker of Labyrinth Computer Services. 937*69664Seric CONFIG: change confCHECK_ALIASES to default to False -- it has poor 938*69664Seric performance for large alias files, and this confused many 939*69664Seric people. 94069632Seric NEW FILES: 94169632Seric cf/cf/cs-hpux10.mc 94269632Seric cf/cf/cs-solaris2.mc 94369632Seric cf/cf/generic-hpux10.mc 94469632Seric cf/cf/generic-hpux9.mc 94569632Seric cf/cf/generic-osf1.mc 94669632Seric cf/cf/generic-solaris2.mc 94769632Seric cf/cf/generic-sunos4.1.mc 94869632Seric cf/cf/generic-ultrix4.mc 94969632Seric cf/cf/huginn.cs.mc 95069632Seric cf/domain/berkeley-only.m4 95169632Seric cf/domain/generic.m4 95269632Seric cf/feature/bestmx_is_local.m4 95369632Seric cf/feature/local_procmail.m4 95469632Seric cf/feature/smrsh.m4 95569632Seric cf/feature/stickydomain.m4 956*69664Seric cf/mailer/mail11.m4 95769632Seric cf/mailer/procmail.m4 95869632Seric cf/ostype/amdahl-uts.m4 95969632Seric cf/ostype/hpux10.m4 96069632Seric cf/ostype/ptx2.m4 96169632Seric cf/ostype/unknown.m4 96269632Seric contrib/bsdi.mc 96369632Seric contrib/mailprio 96469632Seric contrib/rmail.oldsys.patch 96569632Seric smrsh/README 96669632Seric smrsh/smrsh.8 96769632Seric smrsh/smrsh.c 96869632Seric src/Makefiles/Makefile.CSOS 969*69664Seric src/Makefiles/Makefile.EWS-UX_V 97069632Seric src/Makefiles/Makefile.IRIX.5.x 97169632Seric src/Makefiles/Makefile.IRIX64 97269632Seric src/Makefiles/Makefile.ISC 973*69664Seric src/Makefiles/Makefile.NEWS-OS.4.x 974*69664Seric src/Makefiles/Makefile.NEWS-OS.6.x 97569632Seric src/Makefiles/Makefile.NonStop-UX 97669632Seric src/Makefiles/Makefile.Paragon 97769632Seric src/Makefiles/Makefile.SunOS.5.3 97869632Seric src/Makefiles/Makefile.SunOS.5.4 97969632Seric src/Makefiles/Makefile.UNIX_SV.4.2.i386 98069632Seric src/Makefiles/Makefile.uts.systemV 98169632Seric src/mime.c 982*69664Seric test/t_seteuid.c 98369632Seric RENAMED FILES: 98469632Seric cf/cf/alpha.mc => cf/cf/s2k-osf1.mc 98569632Seric cf/cf/chez.mc => cf/cf/chez.cs.mc 98669632Seric cf/cf/hpux-cs-exposed.mc => cf/cf/cs-hpux9.mc 98769632Seric cf/cf/osf1-cs-exposed.mc => cf/cf/cs-osf1.mc 98869632Seric cf/cf/s2k.mc => cf/cf/s2k-ultrix4.mc 98969632Seric cf/cf/sunos4.1-cs-exposed.mc => cf/cf/cs-sunos4.1.mc 99069632Seric cf/cf/ultrix4.1-cs-exposed.mc => cf/cf/cs-ultrix4.mc 99169632Seric cf/cf/vangogh.mc => cf/cf/vangogh.cs.mc 99269632Seric cf/domain/Berkeley.m4 => cf/domain/Berkeley.EDU.m4 99369632Seric cf/domain/cs-exposed.m4 => cf/domain/CS.Berkeley.EDU.m4 99469632Seric cf/domain/eecs-hidden.m4 => cf/domain/EECS.Berkeley.EDU.m4 99569632Seric cf/domain/s2k.m4 => cf/domain/S2K.Berkeley.EDU.m4 99669632Seric cf/ostype/hpux.m4 => cf/ostype/hpux9.m4 99769632Seric cf/ostype/ultrix4.1.m4 => cf/ostype/ultrix4.m4 99869632Seric src/Makefile.* => src/Makefiles/Makefile.* 99969632Seric OBSOLETED FILES: 100069632Seric cf/cf/cogsci.mc 100169632Seric cf/cf/cs-exposed.mc 100269632Seric cf/cf/cs-hidden.mc 100369632Seric cf/cf/hpux-cs-hidden.mc 100469632Seric cf/cf/knecht.mc 100569632Seric cf/cf/osf1-cs-hidden.mc 100669632Seric cf/cf/sunos3.5-cs-exposed.mc 100769632Seric cf/cf/sunos3.5-cs-hidden.mc 100869632Seric cf/cf/sunos4.1-cs-hidden.mc 100969632Seric cf/cf/ultrix4.1-cs-hidden.mc 101069632Seric cf/domain/cs-hidden.m4 101169632Seric contrib/rcpt-streaming 101269632Seric src/Makefiles/Makefile.SunOS.5.x 101369632Seric 101468613Seric8.6.12/8.6.12 95/03/28 101568613Seric Fix to IDENT code (it was getting the size of the reply buffer 101668613Seric too small, so nothing was ever accepted). Fix from several 101768613Seric people, including Allan Johannesen, Shane Castle of the 101868613Seric Boulder County Information Services, and Jeff Smith of 101968613Seric Warwick University (all arrived within a few hours of 102068613Seric each other!). 102168613Seric Fix a problem that could cause large jobs to run out of 102268613Seric file descriptors on systems that use vfork() rather 102368613Seric than fork(). 102468613Seric 102568503Seric8.6.11/8.6.11 95/03/08 102668503Seric The ``possible attack'' message would be logged more often 102768503Seric than necessary if you are using Pine as a user agent. 102868503Seric The wrong host would be reported in the ``possible attack'' 102968503Seric message when attempted from IDENT. 103068503Seric In some cases the syslog buffer could be overflowed when 103168503Seric reporting the ``possible attack'' message. This can 103268503Seric cause denial of service attacks. Truncate the message 103368503Seric to 80 characters to prevent this problem. 103468503Seric When reading the IDENT response a loop is needed around the 103568503Seric read from the network to ensure that you don't get 103668503Seric partial lines. 103768503Seric Password entries without any shell listed (that is, a null 103868503Seric shell) wouldn't match as "ok". Problem noted by 103968503Seric Rob McMahon. 104068503Seric When running BIND 4.9.x a problem could occur because the 104168503Seric _res.options field is initialized differently than it 104268503Seric was historically -- this requires that sendmail call 104368503Seric res_init before it tweaks any bits. 104468503Seric Fix an incompatibility in openxscript() between the file open mode 104568503Seric and the stdio mode passed to fdopen. This caused UnixWare 104668503Seric 2.0 to have conniptions. Fix from Martin Sohnius of 104768503Seric Novell Labs Europe. 104868503Seric Fix problem with static linking of local getopt routine when 104968503Seric using GNU's ld command. Fix from John Kennedy of 105068503Seric Cal State Chico. 105168503Seric It was possible to turn off privacy flags. Problem noted by 105268503Seric *Hobbit*. 105368503Seric Be more paranoid about writing files. Suggestions by *Hobbit* 105468503Seric and Liudvikas Bukys. 105568503Seric MAKEMAP: fixes for 64 bit machines (DEC Alphas in particular) 105668503Seric from Spider Boardman. 105768503Seric CONFIG: No changes (version number only, to keep it in sync 105868503Seric with the binaries). 105968503Seric 106068280Seric8.6.10/8.6.10 95/02/10 106168274Seric SECURITY: Diagnose bogus values to some command line flags that 106268274Seric could allow trash to get into headers and qf files. 106368274Seric Validate the name of the user returned by the IDENT protocol. 106468274Seric Some systems that really dislike IDENT send intentionally 106568274Seric bogus information. Problem pointed out by Michael Bushnell 106668274Seric of the Free Software Foundation. Has some security 106768274Seric implications. 106868274Seric Fix a problem causing error messages about DNS problems when 106968274Seric the host name contained a percent sign to act oddly 107068274Seric because it was passed as a printf-style format string. 107168274Seric In some cases this could cause core dumps. 107268274Seric Avoid possible buffer overrun in returntosender() if error 107368274Seric message is quite ling. From Fletcher Mattox of the 107468274Seric University of Texas. 107568274Seric Fix a problem that would silently drop "too many hops" error 107668274Seric messages if and only if you were sending to an alias. 107768274Seric From Jon Giltner of the University of Colorado and 107868274Seric Dan Harton of Oak Ridge National Laboratory. 107968274Seric Fix a bug that caused core dumps on some systems if -d11.2 was 108068274Seric set and e->e_message was null. Fix from Bruce Nagel of 108168274Seric Data General. 108268274Seric Fix problem that can still cause df files to be left around 108368274Seric after "hop count exceeded" messages. Fix from Andrew 108468274Seric Chang and Shau-Ping Lo of SunSoft. 108568274Seric Fix a problem that can cause buffer overflows on very long 108668274Seric user names (as might occur if you piped to a program 108768274Seric with a lot of arguments). 108868274Seric Avoid returning an error and re-queueing if the host signature 108968274Seric is null; this can occur on addresses like ``user@.''. 109068274Seric Problem noted by Wesley Craig and the University of 109168274Seric Michigan. 109268274Seric Avoid possible calls to malloc(0) if MCI caching is turned 109368274Seric off. Bug fix from Pierre David of the Laboratoire 109468274Seric Parallelisme, Reseaux, Systemes et Modelisation (PRiSM), 109568274Seric Universite de Versailles - St Quentin, and Jacky 109668274Seric Thibault. 109768274Seric Make a local copy of the line being sent via senttolist() -- in 109868274Seric some cases, buffers could get trashed by map lookups 109968274Seric causing it to do unexpected things. This also simplifies 110068274Seric some of the map code. 110168503Seric CONFIG: No changes (version number only, to keep it in sync 110268503Seric with the binaries). 110368274Seric 110466956Seric8.6.9/8.6.9 94/04/19 110566920Seric Do all mail delivery completely disconnected from any terminal. 110666920Seric This provides consistency with daemon delivery and 110766920Seric may have some security implications. 110866920Seric Make sure that malloc doesn't get called with zero size, 110966920Seric since that fails on some systems. Reported by Ed 111066920Seric Hill of the University of Iowa. 111166920Seric Fix multi-line values for $e (SMTP greeting message). Reported 111266920Seric by Mike O'Connor of Ford Motor Company. 111366920Seric Avoid syserr if no NIS domain name is defined, but the map it 111466920Seric is trying to open is optional. From Win Bent of USC. 111566920Seric Changes for picky compilers from Ed Gould of Digital Equipment. 111666920Seric Hesiod support for UDB from Todd Miller of the University of 111766920Seric Colorado. Use "hesiod" as the service name in the U 111866920Seric option. 111966920Seric Fix a problem that failed to set the "authentic" host name (that 112066920Seric is, the one derived from the socket info) if you called 112166920Seric sendmail -bs from inetd. Based on code contributed by 112266920Seric Todd Miller (this problem was also reported by Guy Helmer 112366920Seric of Dakota State University). This also fixes a related 112466996Seric problem reported by Liudvikas Bukys of the University of 112566996Seric Rochester. 112666920Seric Parameterize "nroff -h" in all the Makefiles so people with 112766920Seric variant versions can use them easily. Suggested by 112866920Seric Peter Collinson of Hillside Systems. 112966920Seric SMTP "MAIL" commands with multiple ESMTP parameters required two 113066920Seric spaces between parameters instead of one. Reported by 113166920Seric Valdis Kletnieks of Virginia Tech. 113266920Seric Reduce the number of system calls during message collection by 113366920Seric using global timeouts around the collect() loop. This 113466920Seric code was contributed by Eric Wassenaar. 113566920Seric If the initial hostname name gathering results in a name 113666920Seric without a dot (usually caused by NIS misconfiguration) 113766920Seric and BIND is compiled in, directly access DNS to get 113866920Seric the canonical name. This should make life easier for 113966920Seric Solaris systems. If it still can't be resolved, and 114066920Seric if the name server is listed as "required", try again 114166920Seric in 30 seconds. If that also fails, exit immediately to 114266920Seric avoid bogus "config error: mail loops back to myself" 114366920Seric messages. 114466920Seric Improve the "MAIL DELETED BECAUSE OF LACK OF DISK SPACE" error 114566920Seric message to explain how much space was available and 114666920Seric sound a bit less threatening. Suggested by Stan Janet 114766920Seric of the National Institute of Standards and Technology. 114866920Seric If mail is delivered to an alias that has an owner, deliver any 114966920Seric requested return-receipt immediately, and strip the 115066920Seric Return-Receipt-To: header from the subsequent message. 115166920Seric This prevents a certain class of denial of service 115266920Seric attack, arguably gives more reasonable semantics, and 115366920Seric moves things more towards what will probably become a 115466920Seric network standard. Suggested by Christopher Davis of 115566920Seric Kapor Enterprises. 115666920Seric Add a "noreceipts" privacy flag to turn off all return receipts 115766920Seric without recompiling. 115866920Seric Avoid printing ESMTP parameters as part of the error message 115966920Seric if there are errors during parsing. This change is 116066920Seric purely cosmetic. 116166920Seric Avoid sending out error messages during the collect phase of 116266920Seric SMTP; there is an MVS mailer from UCLA that gets 116366920Seric confused by this. Of course, I think it's their bug.... 116466920Seric Check for the $j macro getting undefined, losing a dot, or getting 116566920Seric lost from $=w in the daemon before accepting a connection; 116666920Seric if it is, it dumps state, prints a LOG_ALERT message, 116766920Seric and drops core for debugging. This is an attempt to 116866920Seric track down a bug that I thought was long since gone. 116966920Seric If you see this, please forward the log fragment to 117066920Seric sendmail@CS.Berkeley.EDU. 117166920Seric Change OLD_NEWDB from a #ifdef to a #if so it can be turned off 117266920Seric with -DOLD_NEWDB=0 on the command line. From Christophe 117366920Seric Wolfhugel. 117466920Seric Instead of trying to truncate the listen queue for the server 117566920Seric SMTP port when the load average is too high, just close 117666920Seric the port completely and reopen it later as needed. 117766920Seric This ensures that the other end gets a quick "connection 117866920Seric refused" response, and that the connection can be 117966920Seric recovered later. In particular, some socket emulations 118066920Seric seem to get confused if you tweak the listen queue 118166920Seric size around and can never start listening to connections 118266920Seric again. The down side is that someone could start up 118366920Seric another daemon process in the interim, so you could 118466920Seric have multiple daemons all not listening to connections; 118566920Seric this could in turn cause the sendmail.pid file to be 118666920Seric incorrect. A better approach might be to accept the 118766920Seric connection and give a 421 code, but that could break 118866920Seric other mailers in mysterious ways and have paging behaviour 118966920Seric implications. 119066920Seric Fix a glitch in TCP-level debugging that caused flag 16.101 to 119166920Seric set debugging on the wrong socket. From Eric Wassenaar. 119266920Seric When creating a df* temporary file, be sure you truncate any 119366920Seric existing data in the file -- otherwise system crashes 119466920Seric and the like could result in extra data being sent. 119566920Seric DOC: Replace the CHANGES-R5-R8 readme file with a paper in the 119666920Seric doc directory. This includes some additional 119766920Seric information. 119866920Seric CONFIG: change UUCP rules to never add $U! or $k! on the front 119966920Seric of recipient envelope addresses. This should have been 120066920Seric handled by the $&h trick, but broke if people were 120166920Seric mixing domainized and UUCP addresses. They should 120266920Seric probably have converted all the way over to uucp-uudom 120366920Seric instead of uucp-{new,old}, but the failure mode was to 120466920Seric loop the mail, which was bad news. 120566920Seric Portability fixes: 120666920Seric Newer BSDI systems (several people). 120766920Seric Older BSDI systems from Christophe Wolfhugel. 120866920Seric Intergraph CLIX, from Paul Southworth of CICNet. 120966920Seric UnixWare, from Evan Champion. 121066920Seric NetBSD from Adam Glass. 121166920Seric Solaris from Quentin Campbell of the University of 121266920Seric Newcastle upon Tyne. 121366920Seric IRIX from Dean Cookson and Bill Driscoll of Mitre 121466920Seric Corporation. 121569632Seric NCR 3000 from Kevin Darcy of Chrysler Financial Corporation. 121666920Seric SunOS (it has setsid() and setvbuf() calls) from 121766920Seric Jonathan Kamens of OpenVision Technologies. 121866920Seric HP-UX from Tor Lillqvist. 121966920Seric New Files: 122066920Seric src/Makefile.CLIX 122166920Seric src/Makefile.NCR3000 122266920Seric doc/changes/Makefile 122366920Seric doc/changes/changes.me 122466920Seric doc/changes/changes.ps 122566920Seric 122666432Seric8.6.8/8.6.6 94/03/21 122766432Seric SECURITY: it was possible to read any file as root using the 122866432Seric E (error message) option. Reported by Richard Jones; 122966432Seric fixed by Michael Corrigan and Christophe Wolfhugel. 123066432Seric 123166356Seric8.6.7/8.6.6 94/03/14 123266356Seric SECURITY: it was possible to get root access by using wierd 123366356Seric values to the -d flag. Thanks to Alain Durand of 123466356Seric INRIA for forwarding me the notice from the bugtraq 123566356Seric list. 123666356Seric 123766352Seric8.6.6/8.6.6 94/03/13 123866352Seric SECURITY: the ability to give files away on System V-based 123966352Seric systems proved dangerous -- don't run as the owner 124066352Seric of a :include: file on a system that allows giveaways. 124166352Seric Unfortunately, this also applies to determining a 124266352Seric valid shell. 124366352Seric IMPORTANT: Previous versions weren't expiring old connections 124466352Seric in the connection cache for a long time under some 124566352Seric circumstances. This could result in resource exhaustion, 124666352Seric both at your end and at the other end. This checks the 124766352Seric connections for timeouts much more frequently. From 124866352Seric Doug Anderson of NCSC. 124966352Seric Fix a glitch that snuck in that caused programs to be run as 125066352Seric the sender instead of the recipient if the mail was 125166352Seric from a local user to another local user. From 125266352Seric Motonori Nakamura of Kyoto University. 125366352Seric Fix "wildcard" on /etc/shell matching -- instead of looking 125466352Seric for "*", look for "/SENDMAIL/ANY/SHELL/". From 125566352Seric Bryan Costales of ICSI. 125666352Seric Change the method used to declare the "statfs" availability; 125766352Seric instead of HASSTATFS and/or HASUSTAT with a ton of 125866352Seric tweaking in conf.c, there is a single #define called 125966352Seric SFS_TYPE which takes on one of six values (SFS_NONE 126066352Seric for no statfs availability, SFS_USTAT for the ustat(2) 126166352Seric syscall, SFS_4ARGS for a four argument statfs(2) call, 126266352Seric and SFS_VFS, SFS_MOUNT, or SFS_STATFS for a two argument 126366352Seric statfs(2) call with the declarations in <sys/vfs.h>, 126466352Seric <sys/mount.h>, or <sys/statfs.h> respectively). 126566352Seric Fix glitch in NetInfo support that could return garbage if 126666352Seric there was no "/locations/sendmail" property. From 126766352Seric David Meyer of the University of Virginia. 126866352Seric Change HASFLOCK from defined/not-defined to a 0/1 definition 126966352Seric to allow Linux to turn it off even though it is a 127066352Seric BSD-like system. 127166352Seric Allow setting of "ident" timeout to zero to turn off the ident 127266352Seric protocol entirely. 127366352Seric Make 7-bit stripping local to a connection (instead of to a 127466352Seric mailer); this allows you to specify that SMTP is a 127566352Seric 7-bit channel, but revert to 8-bit should it advertise 127666352Seric that it supports 8BITMIME. You still have to specify 127766352Seric mailer flag 7 to get this stripping at all. 127866352Seric Improve makesendmail script so it handles more cases automatically. 127966352Seric Tighten up restrictions on taking ownership of :include: files 128066352Seric to avoid problems on systems that allow you to give away 128166352Seric files. 128266352Seric Fix a problem that made it impossible to rebuild the alias 128366352Seric file if it was on a read-only file system. From 128466352Seric Harry Edmon of the University of Washington. 128566352Seric Improve MX randomization function. From John Gardiner Myers 128666352Seric of CMU. 128766352Seric Fix a minor glitch causing a bogus message to be printed (used 128866352Seric %s instead of %d in a printf string for the line number) 128966352Seric when a bad queue file was read. From Harry Edmon. 129066352Seric Allow $s to remain NULL on locally generated mail. I'm not 129166352Seric sure this is necessary, but a lot of people have complained 129266352Seric about it, and there is a legitimate question as to whether 129366352Seric "localhost" is legal as an 822-style domain. 129466352Seric Fix a problem with very short line lengths (mailer L= flag) in 129566352Seric headers. This causes a leading space to be added onto 129666352Seric continuation lines (including in the body!), and also 129766352Seric tries to wrap headers containing addresses (From:, To:, 129866352Seric etc) intelligently at the shorter line lengths. Problem 129966352Seric Reported by Lars-Johan Liman of SUNET Operations Center. 130066352Seric Log the real user name when logging syserrs, since these can have 130166352Seric security implications. Suggested by several people. 130266352Seric Fix address logging of cached connections -- it used to always 130366352Seric log the numeric address as zero. This is a somewhat 130466352Seric bogus implementation in that it does an extra system 130566352Seric call, but it should be an inexpensive one. Fix from 130666352Seric Motonori Nakamura. 130766352Seric Tighten up handling of short syslog buffers even more -- there 130866352Seric were cases where the outgoing relay= name was too long 130966352Seric to share a line with delay= and mailer= logging. 131066352Seric Limit the overhead on split envelopes to one open file descriptor 131166352Seric per envelope -- previously the overhead was three 131266352Seric descriptors. This was in response to a problem reported 131366352Seric by P{r (Pell) Emanuelsson. 131466352Seric Fixes to better handle the case of unexpected connection closes; 131566352Seric this redirects the output to the transcript so the info 131666352Seric is not lost. From Eric Wassenaar. 131766352Seric Fix potential string overrun if you macro evaluate a string that 131866352Seric has a naked $ at the end. Problem noted by James Matheson 131966352Seric <jmrm@eng.cam.ac.uk>. 132066352Seric Make default error number on $#error messages 553 (``Requested 132166352Seric action not taken: mailbox name not allowed'') instead of 132266352Seric 501 (``Syntax error in parameters or arguments'') to 132366352Seric avoid bogus "protocol error" messages. 132466352Seric Strip off any existing trailing dot on names during $[ ... $] 132566352Seric lookup. This prevents it from ending up with two dots 132666352Seric on the end of dot terminated names. From Wesley Craig 132766352Seric of the University of Michigan and Bryan Costales of ICSI. 132866352Seric Clean up file class reading so that the debugging information is 132966352Seric more informative. It hadn't been using setclass, so you 133066352Seric didn't see the class items being added. 133166352Seric Avoid core dump if you are running a version of sendmail where 133266352Seric NIS is compiled in, and you specify an NIS map, but 133366352Seric NIS is not running. Fix from John Oleynick of 133466352Seric Rutgers. 133566352Seric Diagnose bizarre case where res_search returns a failure value, 133666352Seric but sets h_errno to a success value. 133766352Seric Make sure that "too many hops" messages are considered important 133866352Seric enough to send an error to the Postmaster (that is, the 133966352Seric address specified in the P option). This fix should 134066352Seric help problems that cause the df file to be left around 134166352Seric sometimes -- unfortunately, I can't seem to reproduce 134266352Seric the problem myself. 134366352Seric Avoid core dump (null pointer reference) on EXPN command; this 134466352Seric only occurred if your log level was set to 10 or higher 134566352Seric and the target account was an alias or had a .forward file. 134666352Seric Problem noted by Janne Himanka. 134766352Seric Avoid "denial of service" attacks by someone who is flooding your 134866352Seric SMTP port with bad commands by shutting the connection 134966352Seric after 25 bad commands are issued. From Kyle Jones of 135066352Seric UUNET. 135166352Seric Fix core dump on error messages with very long "to" buffers; 135266352Seric fmtmsg overflows the message buffer. Fixed by trimming 135366352Seric the to address to 203 characters. Problem reported by 135466352Seric John Oleynick. 135566352Seric Fix configuration for HASFLOCK -- there were some spots where 135666352Seric a #ifndef was incorrectly #ifdef. Pointed out by 135766352Seric George Baltz of the University of Maryland. 135866352Seric Fix a typo in savemail() that could cause the error message To: 135966352Seric lists to be incorrect in some places. From Motonori 136066352Seric Nakamura. 136166352Seric Fix a glitch that can cause duplicate error messages on split 136266352Seric envelopes where an address on one of the lists has a 136366352Seric name server failure. Fix from Voradesh Yenbut of the 136466352Seric University of Washington. 136566352Seric Fix possible bogus pointer reference on ESMTP parameters that 136666352Seric don't have an ``=value'' part. 136766352Seric CNAME loops caused an error message to be generated, but also 136866352Seric re-queued the message. Changed to just re-queue the 136966352Seric message (it's really hard to just bounce it because 137066352Seric of the wierd way the name server works in the presence 137166352Seric of CNAME loops). Problem noted by James M.R.Matheson 137266352Seric of Cambridge University. 137366352Seric Avoid giving ``warning: foo owned process doing -bs'' messages 137466352Seric if they use ``MAIL FROM:<foo>'' where foo is their true 137566352Seric user name. Suggested by Andreas Stolcke of ICSI. 137666352Seric Change the NAMED_BIND compile flag to be a 0/1 flag so you can 137766352Seric override it easily in the Makefile -- that is, you can 137866352Seric turn it off using -DNAMED_BIND=0. 137966352Seric If a gethostbyname(...) of an address with a trailing dot fails, 138066352Seric try it without the trailing dot. This is because if 138166352Seric you have a version of gethostbyname() that falls back 138266352Seric to NIS or the /etc/hosts file it will fail to find 138366352Seric perfectly reasonable names that just don't happen to 138466352Seric be dot terminated in the hosts file. You don't want to 138566352Seric strip the dot first though because we're trying to ensure 138666352Seric that country names that match one of your subdomains get 138766352Seric a chance. 138866352Seric PRALIASES: fix bogus output on non-null-terminated strings. 138966352Seric From Bill Gianopoulos of Raytheon. 139066352Seric CONFIG: Avoid rewriting anything that matches $w to be $j. 139166352Seric This was in code intended to only catch the self-literal 139266352Seric address (that is, [1.2.3.4], where 1.2.3.4 is your 139366352Seric IP address), but the code was broken. However, it will 139466352Seric still do this if $M is defined; this is necessary to 139566352Seric get client configurations to work (sigh). Note that this 139666352Seric means that $M overrides :mailname entries in the user 139766352Seric database! Problem noted by Paul Southworth. 139866352Seric CONFIG: Fix definition of Solaris help file location. From 139966352Seric Steve Cliffe <steve@gorgon.cs.uow.edu.au>. 140066352Seric CONFIG: Fix bug that broke news.group.USENET mappings. 140166352Seric CONFIG: Allow declaration of SMTP_MAILER_MAX, FAX_MAILER_MAX, 140266352Seric and USENET_MAILER_MAX to tweak the maximum message 140366352Seric size for various mailers. 140466352Seric CONFIG: Change definition of USENET_MAILER_ARGS to include argv[0] 140566352Seric instead of assuming that it is "inews" for consistency 140666352Seric with other mailers. From Michael Corrigan of UC San Diego. 140766352Seric CONFIG: When mail is forwarded to a LOCAL_RELAY or a MAIL_HUB, 140866352Seric qualify the address in the SMTP envelope as user@{relay|hub} 140966352Seric instead of user@$j. From Bill Wisner of The Well. 141066352Seric CONFIG: Fix route-addr syntax in nullrelay configuration set. 141166352Seric CONFIG: Don't turn off case mapping of user names in the local 141266352Seric mailer for IRIX. This was different than most every other 141366352Seric system. 141466352Seric CONFIG: Avoid infinite loops on certainly list:; syntaxes in 141566352Seric envelope. Noted by Thierry Besancon 141666352Seric <besancon@excalibur.ens.fr>. 141766352Seric CONFIG: Don't include -z by default on uux line -- most systems 141866352Seric don't want it set by default. Pointed out by Philippe 141966352Seric Michel of Thomson CSF. 142066352Seric CONFIG: Fix some bugs with mailertables -- for example, if your 142166352Seric host name was foo.bar.ray.com and you matched against 142266352Seric ".ray.com", the old implementation bound %1 to "bar" 142366352Seric instead of "foo.bar". Also, allow "." in the mailertable 142466352Seric to match anything -- essentially, take over SMART_HOST. 142566352Seric This also moves matching of explicit local host names 142666352Seric before the mailertable so they don't have to be special 142766352Seric cased in the mailertable data. Reported by Bill 142866352Seric Gianopoulos of Raytheon; the fix for the %1 binding 142966352Seric problem was contributed by Nicholas Comanos of the 143066352Seric University of Sydney. 143166352Seric CONFIG: Don't include "root" in class $=L (users to deliver 143266352Seric locally, even if a hub or relay exists) by default. 143366352Seric This is because of the known bug where definition of 143466352Seric both a LOCAL_RELAY and a MAIL_HUB causes $=L to ignore 143566352Seric both and deliver into the local mailbox. 143666352Seric CONFIG: Move up bitdomain and uudomain handling so that they 143766352Seric are done before .UUCP class matching; uudomain was 143866352Seric reported as ineffective before. This also frees up 143966352Seric diversion 8 for future use. Problem reported by Kimmo 144066352Seric Suominen. 144166352Seric CONFIG: Don't try to convert dotted IP address (e.g., [1.2.3.4]) 144266352Seric into host names. As pointed out by Jonathan Kamens, 144366352Seric these are often used because either the forward or reverse 144466352Seric mapping is broken; this translation makes it broken again. 144566352Seric DOC: Clarify $@ and $: in the Install & Op Guide. From Kimmo 144666352Seric Suominen. 144766352Seric Portability fixes: 144866352Seric Unicos from David L. Kensiski of Sterling Sofware. 144966352Seric DomainOS from Don Lewis of Silicon Systems. 145066352Seric GNU m4 1.0.3 from Karst Koymans of Utrecht University. 145166352Seric Convex from Kimmo Suominen <kim@tac.nyc.ny.us>. 145266352Seric NetBSD from Adam Glass <glass@sun-lamp.cs.berkeley.edu>. 145366352Seric BSD/386 from Tony Sanders of BSDI. 145466352Seric Apollo from Eric Wassenaar. 145566352Seric DGUX from Doug Anderson. 145666352Seric Sequent DYNIX/ptx 2.0 from Tim Wright of Sequent. 145766352Seric NEW FILES: 145866352Seric src/Makefile.DomainOS 145966352Seric src/Makefile.PTX 146066352Seric src/Makefile.SunOS.5.1 146166352Seric src/Makefile.SunOS.5.2 146266352Seric src/Makefile.SunOS.5.x 146366352Seric src/mailq.1 146466352Seric cf/ostype/domainos.m4 146566352Seric doc/op/Makefile 146666352Seric doc/intro/Makefile 146766352Seric doc/usenix/Makefile 146866352Seric 146966348Seric8.6.5/8.6.5 94/01/13 147066348Seric Security fix: /.forward could be owned by anyone (the test 147166348Seric to allow root to own any file was backwards). From 147266348Seric Bob Campbell at U.C. Berkeley. 147366348Seric Security fix: group ids were not completely set when programs 147466348Seric were invoked. This caused programs to have group 147566348Seric permissions they should not have had (usually group 147666348Seric daemon instead of their own group). In particular, 147766348Seric Perl scripts would refuse to run. 147866348Seric Security: check to make sure files that are written are not 147966348Seric symbolic links (at least under some circumstances). 148066348Seric Although this does not respond to a specific known 148166348Seric attack, it's just a good idea. Suggested by 148266348Seric Christian Wettergren. 148366348Seric Security fix: if a user had an NFS mounted home directory on 148466348Seric a system with a restricted shell listed in their 148566348Seric /etc/passwd entry, they could still execute any 148666348Seric program by putting that in their .forward file. 148766348Seric This fix prevents that by insisting that their shell 148866348Seric appear in /etc/shells before allowing a .forward to 148966348Seric execute a program or write a file. You can disable 149066348Seric this by putting "*" in /etc/shells. It also won't 149166348Seric permit world-writable :include: files to reference 149266348Seric programs or files (there's no way to disable this). 149366348Seric These behaviours are only one level deep -- for 149466348Seric example, it is legal for a world-writable :include: 149566348Seric file to reference an alias that writes a file, on 149666348Seric the assumption that the alias file is well controlled. 149766348Seric Security fix: root was not treated suspiciously enough when 149866348Seric looking into subdirectories. This would potentially 149966348Seric allow a cracker to examine files that were publically 150066348Seric readable but in a non-publically searchable directory. 150166348Seric Fix a problem that causes an error on QUIT on a cached 150266348Seric connection to create problems on the current job. 150366348Seric These are typically unrelated, so errors occur in 150466348Seric the wrong place. 150566348Seric Reset CurrentLA in sendall() -- this makes sendmail queue 150666348Seric runs more responsive to load average, and fixes a 150766348Seric problem that ignored the load average in locally 150866348Seric generated mail. From Eric Wassenaar. 150966348Seric Fix possible core dump on aliases with null LHS. From 151066348Seric John Orthoefer of BB&N. 151166348Seric Revert to using flock() whenever possible -- there are just 151266348Seric too many bugs in fcntl() locking, particularly over 151366348Seric NFS, that cause sendmail to fail in perverse ways. 151466348Seric Fix a bug that causes the connection cache to get confused 151566348Seric when sending error messages. This resulted in 151666348Seric "unexpected close" messages. It should fix itself 151766348Seric on the following queue run. Problem noted by 151866996Seric Liudvikas Bukys of the University of Rochester. 151966348Seric Include $k in $=k as documented in the Install & Op Guide. 152066348Seric This seems odd, but it was documented.... From 152166348Seric Michael Corrigan of UCSD. 152266348Seric Fix problem that caused :include:s from alias files to be 152366348Seric forced to be owned by root instead of daemon 152466348Seric (actually DefUid). From Tim Irvin. 152566348Seric Diagnose unrecognized I option values -- from Mortin Forssen 152666348Seric of the Chalmers University of Technology. 152766348Seric Make "error" mailer work consistently when there is no error 152866348Seric code associated with it -- previously it returned OK 152966348Seric even though there was a real problem. Now it assumes 153066348Seric EX_UNAVAILABLE. 153166348Seric Fix bug that caused the last header line of messages that had 153266348Seric no body and which were terminated with EOF instead of 153366348Seric "." to be discarded. Problem noted by Liudvikas Bukys. 153466348Seric Fix core dump on SMTP mail to programs that failed -- it tried 153566348Seric to go to a "next MX host" when none existed, causing 153666348Seric a core dump. From der Mouse at McGill University. 153766348Seric Change IDENTPROTO from a defined/not defined to a 0/1 switch; 153866348Seric this makes it easier to turn it off (using 153966348Seric -DIDENTPROTO=0 in the Makefile). From der Mouse. 154066348Seric Fix YP_MASTER_NAME store to use the unupdated result of 154166348Seric gethostname() (instead of myhostname(), which tries 154266348Seric to fully qualify the name) to be consistent with 154366348Seric SunOS. If your hostname is unqualified, this fixes 154466348Seric transfers to slave servers. Bug noted by Keith 154566348Seric McMillan of Ameritech Services, Inc. 154666348Seric Fix Ultrix problem: gethostbyname() can return a very large 154766348Seric (> 500) h_length field, which causes the sockaddr 154866348Seric to be trashed. Use the size of the sockaddr instead. 154966348Seric Fix from Bob Manson of Ohio State. 155066348Seric Don't assume "-a." on host lookups if NAMED_BIND is not 155166348Seric defined -- this confuses gethostbyname on hosts 155266348Seric file lookups, which doesn't understand the trailing 155366348Seric dot convention. 155466348Seric Log SMTP server subprocesses that die with a signal instead 155566348Seric of from a clean exit. 155666348Seric If you don't have option "I" set, don't assume that a DNS 155766348Seric "host unknown" message is authoritative -- it 155866348Seric might still be found in /etc/hosts. 155966348Seric Fix a problem that would cause Deferred: messages to be sent 156066348Seric as the subject of an error message, even though the 156166348Seric actual cause of a message was more severe than that. 156266348Seric Problem noted by Chris Seabrook of OSSI. 156366348Seric Fix race condition in DBM alias file locking. From Kyle 156466348Seric Jones of UUNET. 156566348Seric Limit delivery syslog line length to avoid bugs in some 156666348Seric versions of syslog(3). This adds a new compile time 156766348Seric variable SYSLOG_BUFSIZE. From Jay Plett of Princeton 156866348Seric University, which is in turn derived from IDA. 156966348Seric Fix quotes inside of comments in addresses -- previously 157066348Seric it insisted that they be balanced, but the 822 spec 157166348Seric says that they should be ignored. 157266348Seric Dump open file state to syslog upon receiving SIGUSR1 (for 157366348Seric debugging). This also evaluates ruleset 89, if set 157466348Seric (with the null input), and logs the result. This 157566348Seric should be used sparingly, since the rewrite process 157666348Seric is not reentrant. 157766348Seric Change -qI, -qR, and -qS flags to be case-insensitive as 157866348Seric documented in the Bat Book. 157966348Seric If the mailer returned EX_IOERR or EX_OSERR, sendmail did not 158066348Seric return an error message and did not requeue the message. 158166348Seric Fix based on code from Roland Dirlewanger of 158266348Seric Reseau Regional Aquarel, Bordeaux, France. 158366348Seric Fix a problem that caused a seg fault if you got a 421 error 158466348Seric code during some parts of connection initialization. 158566348Seric I've only seen this when talking to buggy mailers on 158666348Seric the other end, but it shouldn't give a seg fault in 158766348Seric any case. From Amir Plivatsky. 158866348Seric Fix core dump caused by a ruleset call that returns null. 158966348Seric Fix from Bryan Costales of ICSI. 159066348Seric Full-Name: field was being ignored. Fix from Motonori Nakamura 159166348Seric of Kyoto University. 159266348Seric Fix a possible problem with very long input lines in setproctitle. 159366348Seric From P{r Emanuelsson. 159466348Seric Avoid putting "This is a warning message" out on return receipts. 159566348Seric Suggested by Douglas Anderson. 159666348Seric Detect loops caused by recursive ruleset calls. Suggested by 159766348Seric Bryan Costales. 159866348Seric Initialize non-alias maps during alias rebuilds -- they may be 159966348Seric needed for parsing. Problem noted by Douglas Anderson. 160066348Seric Log sender address even if no message was collected in SMTP 160166348Seric (e.g., if all RCPTs failed). Suggested by Motonori 160266348Seric Nakamura. 160366348Seric Don't reflect the owner-list contents into the envelope sender 160466348Seric address if the value contains ", :, /, or | (to avoid 160566348Seric illegal addresses appearing there). 160666348Seric Efficiency hack for toktype macro -- from Craig Partridge of 160766348Seric BB&N. 160866348Seric Clean up DNS error printing so that a host name is always 160966348Seric included. 161066348Seric Remember to set $i during queue runs. Reported by Stephen 161166348Seric Campbell of Dartmouth University. 161266348Seric If ${HOSTALIASES} is set, use it during canonification so that 161366348Seric headers are properly mapped. Reported by Anne Bennett 161466348Seric of Concordia University. 161566348Seric Avoid printing misleading error message if SMTP mailer (not 161666348Seric using [IPC]) should die on a core dump. 161766348Seric Avoid incorrect diagnosis of "file 1 closed" when it is caused 161866348Seric by the other end closing the connection. From 161966348Seric Dave Morrison of Oracle. 162066348Seric Improve several of the error messages printed by "mailq" 162166348Seric to include a host name or other useful information. 162266348Seric Add NetInfo preliminary support for NeXT systems. From Vince 162366348Seric DeMarco. 162466348Seric Fix a glitch that sometimes caused :include:s that pointed to 162566348Seric NFS filesystems that were down to give an "aliasing/ 162666348Seric forwarding loop broken" message instead of queueing 162766348Seric the message for retry. Noted by William C Fenner of 162866348Seric the NRL Connection Machine Facility. 162966348Seric Fix a problem that could cause a core dump if the input sequence 163066348Seric had (or somehow acquired) a \231 character. 163166348Seric Make sure that route-addrs always have <angle brackets> around 163266348Seric them in non-SMTP envelopes (SMTP envelopes already do 163366348Seric this properly). 163466348Seric Avoid wierd headers on unbalanced punctuation of the form: 163566348Seric ``Joe User <user)'' -- this caused reference to the 163666348Seric null macro. Fix from Rick McCarty of IO.COM. 163766348Seric Fix a problem that caused an alias "user: user@local.host" to 163866348Seric not have the QNOTREMOTE bit set; this caused configs 163966348Seric to act as if FEATURE(notsticky) was defined even when 164066348Seric it was not. The effect of the problem was to make it 164166348Seric very hard to to set up satellite sites that had a few 164266348Seric local accounts, with everything else forwarded to a 164366348Seric corporate hub. Reported by Detlef Drewanz of the 164466348Seric University of Rostock and Mark Frost of NCD. 164566348Seric Change queuing to not call rulesets 3, {1 or 2}, 4 on header 164666348Seric addresses. This is more efficient (fewer name server 164766348Seric calls) and fixes certain unusual configurations, such 164866348Seric as those that have ruleset 4 do something that is 164966348Seric non-idempotent unless a mailer-specific ruleset did 165066348Seric something else. Problem reported by Brian J. Coan 165166348Seric of the Institute for Global Communications. 165266348Seric Fix the "obsolete argument" routine in main to better understand 165366348Seric new arguments. For example, if you used ``sendmail 165466348Seric -C config -v -q'' it would choke on the -q because 165566348Seric the -C would stop looking for old-format arguments. 165666348Seric Fix the code that was intended to allow two users to forward their 165766348Seric mail to the same program and have them appear unique. 165866348Seric Portability fixes for: 165966348Seric SCO UNIX from Murray Kucherawy. 166066348Seric SCO Open Server 3.2v4 from Philippe Brand. 166166348Seric System V Release 4 from Rick Ellis and others. 166266348Seric OSF/1 from Steve Campbell. 166366348Seric DG/UX from Ben Mesander of the USGS and Bryan Curnutt 166466348Seric of Stoner Associates. 166566348Seric Motorola SysV88 from Kevin Johnson of Motorola. 166666348Seric Solaris 2.3 from Casper H.S. Dik of the University 166766348Seric of Amsterdam and John Caruso of University 166866348Seric of Maryland. 166966348Seric FreeBSD from Ollivier Robert. 167066348Seric NetBSD from Adam Glass. 167166348Seric TitanOS from Kate Hedstrom of Rutgers University. 167266348Seric Irix from Bryan Curnutt. 167366348Seric Dynix from Jim Davis of the University of Arizona. 167466348Seric RISC/os. 167566348Seric Linux from John Kennedy of California State University 167666348Seric at Chico. 167766348Seric Solaris 2.x from Tony Boner of the U.S. Air Force. 167866348Seric NEXTSTEP 3.x from Vince DeMarco. 167966348Seric HP-UX from various people. NOTA BENE: the location 168066348Seric of the config file has moved to /usr/lib 168166348Seric to match the HP-UX version of sendmail. 168266348Seric CONFIG: Don't do any recipient rewriting on relay mailer; 168366348Seric since this is intended only for internal use, the 168466348Seric usual RFC 821/822/1123 rules can be relaxed. The 168566348Seric main point of this is to avoid munging (ugh) UUCP 168666348Seric addresses when relaying internally. 168766348Seric CONFIG: fix typo in mailer/uucp.m4 that mutilates list:; 168866348Seric syntax addresses delivered via UUCP. Solution 168966348Seric provided by Peter Wemm. 169066348Seric CONFIG: fix thumb-fumble in default UUCP relaying in ruleset 169166348Seric zero; it caused double @ signs in addresses. From 169266348Seric Irving Reid of the University of Toronto. 169366348Seric CONFIG: Portability fixes for SCO Unix 3.2 with TCP/IP 1.2.1 169466348Seric from Markku Toijala of ICL Personal Systems Oy. 169566348Seric CONFIG: Add trailing "." on pseudo-domains for consistency; 169666348Seric this fixes a problem (noted by Al Whaley of Sunnyside) 169766348Seric that made it hard to recognize your own pseudodomain 169866348Seric names. 169966348Seric CONFIG: catch "@host" syntax errors (i.e., null local-parts) 170066348Seric rather than letting them get "local configuration 170166348Seric error"s. Problem noted by John Gardiner Myers. 170266348Seric CONFIG: add uucp-uudom mailer variant, based on code posted 170366348Seric by Spider Boardman <spider@Orb.Nashua.NH.US>; this 170466348Seric has uucp-dom semantics but old UUCP syntax. This 170566348Seric also permits "uucp-old" as an alias for "uucp" and 170666348Seric "uucp-new" as a synonym for "suucp" for consistency. 170766348Seric CONFIG: add POP mailer support (from Kimmo Suominen 170866348Seric <kim@grendel.lut.fi>). 170966348Seric CONFIG: drop CSNET_RELAY support -- CSNET is long gone. 171066348Seric CONFIG: fix bug caused with domain literal addresses (e.g., 171166348Seric ``[128.32.131.12]'') when FEATURE(allmasquerade) 171266348Seric was set; it would get an additional @masquerade.host 171366348Seric added to the address. Problem noted by Peter Wan 171466348Seric of Georgia Tech. 171566348Seric CONFIG: make sure that the local UUCP name is in $=w. From 171666348Seric Jim Murray of Stratus. 171766348Seric CONFIG: changes to UUCP rewriting to simulate IDA-style "V" 171866348Seric mailer flag. Briefly, if you are sending to host 171966348Seric "foo", then it rewrites "foo!...!baz" to "...!baz", 172066348Seric "foo!baz" remains "foo!baz", and anything else has 172166348Seric the local name prepended. 172266348Seric CONFIG: portability fixes for HP-UX. 172366348Seric DOC: several minor problems fixed in the Install & Op Guide. 172466348Seric MAKEMAP: fix core dump problem on lines that are too long or 172566348Seric which lack newline. From Mark Delany. 172666348Seric MAILSTATS: print sums of columns (total messages & kbytes 172766348Seric in and out of the system). From Tom Ferrin of UC 172866348Seric San Francisco Computer Graphics Lab. 172966348Seric SIGNIFICANT USER- OR SYSAD-VISIBLE CHANGES: 173066348Seric On HP-UX, /etc/sendmail.cf has been moved to 173166348Seric /usr/lib/sendmail.cf to match HP sendmail. 173266348Seric Permissions have been tightened up on world-writable 173366348Seric :include: files and accounts that have shells 173466348Seric that are not listed in /etc/shells. This may 173566348Seric cause some .forward files that have worked 173666348Seric before to start failing. 173766348Seric SIGUSR1 dumps some state to the log. 173866348Seric NEW FILES: 173966348Seric src/Makefile.DGUX 174066348Seric src/Makefile.Dynix 174166348Seric src/Makefile.FreeBSD 174266348Seric src/Makefile.Mach386 174366348Seric src/Makefile.NetBSD 174466348Seric src/Makefile.RISCos 174566348Seric src/Makefile.SCO 174666348Seric src/Makefile.SVR4 174766348Seric src/Makefile.Titan 174866348Seric cf/mailer/pop.m4 174966348Seric cf/ostype/bsdi1.0.m4 175066348Seric cf/ostype/dgux.m4 175166348Seric cf/ostype/dynix3.2.m4 175266348Seric cf/ostype/sco3.2.m4 175366348Seric makemap/Makefile.dist 175466348Seric praliases/Makefile.dist 175566348Seric 175666347Seric8.6.4/8.6.4 93/10/31 175766347Seric Repair core-dump problem (write to read-only memory segment) 175866347Seric if you fall back to the return-to-Postmaster case in 175966347Seric savemail. Problem reported by Richard Liu. 176066347Seric Immediately diagnose bogus sender addresses in SMTP. This 176166347Seric makes quite certain that crackers can't use this 176266347Seric class of attack. 176366347Seric Reliability Fix: check return value from fclose() and fsync() 176466347Seric in a few critical places. 176566347Seric Minor problem in initsys() that reversed a condition for 176666347Seric redirecting the output channel on queue runs. It's 176766347Seric not clear this code even does anything. From Eric 176866347Seric Wassenaar of the Dutch National Institute for Nuclear 176966347Seric and High-Energy Physics. 177066347Seric Fix some problems that caused queue runs to do "too much work", 177166347Seric such as double-reading the Errors-To: header. From 177266347Seric Eric Wassenaar. 177366347Seric Error messages on writing the temporary file (including the 177466347Seric data file) were getting suppressed in SMTP -- this 177566347Seric fix causes them to be properly reported. From Eric 177666347Seric Wassenaar. 177766347Seric Some changes to support AF_UNIX sockets -- this will only 177866347Seric really become relevant in the next release, but some 177966347Seric people need it for local patches. From Michael 178066347Seric Corrigan of UC San Diego. 178166347Seric Use dynamically allocated memory (instead of static buffers) 178266347Seric for macros defined in initsys() and settime(); since 178366347Seric these can have different values depending on which 178466347Seric envelope they are in. From Eric Wassenaar. 178566347Seric Improve logging to show ctladdr on to= logging; this tells you 178666347Seric what uid/gid processes ran as. 178766347Seric Fix a problem that caused error messages to be discarded if 178866347Seric the sender address was unparseable for some reason; 178966347Seric this was supposed to fall back to the "return to 179066347Seric postmaster" case. 179166347Seric Improve aliaswait backoff algorithm. 179266347Seric Portability patches for Linux (8.6.3 required another header 179366347Seric file) (from Karl London) and SCO UNIX. 179466347Seric CONFIG: patch prog mailer to not strip host name off of envelope 179566347Seric addresses (so that it matches local again). From 179666347Seric Christopher Davis. 179766347Seric CONFIG: change uucp-dom mailer so that "<>" translates to $n; 179866347Seric this prevents uux from seeing lines with null names like 179966347Seric ``From Sat Oct 30 14:55:31 1993''. From Motonori 180066347Seric Nakamura of Kyoto University. 180166347Seric CONFIG: handle <list:;> syntax correctly. This isn't legal, but 180266347Seric it shouldn't fail miserably. From Motonori Nakamura. 180366347Seric 180466346Seric8.6.3/8.6.3 93/10/24 180566346Seric IMPORTANT FIX: Fix several problems that caused open files to 180666346Seric be "lost" during queue runs; this overflowed the open 180766346Seric file table on large runs. An assumption that fdopen 180866346Seric always succeeds sometimes resulted in core dumps when 180966346Seric this happens; sometimes the message is delivered twice, 181066346Seric sometimes (probably) infinite times. This problem in 181166346Seric various form was reported by P{r (Pell) Emanuelsson and 181266346Seric Robert Campbell of U.C. Berkeley. 181366346Seric Special diagnosis of EMFILE error conditions -- it now prints 181466346Seric the known open file descriptors so you can figure out 181566346Seric what is consuming so much resources. 181666346Seric Fix a couple of problems caused by early address parsing 181766346Seric errors -- one caused it to return a "this is only a 181866346Seric warning" when it really wasn't, and the other started 181966346Seric parsing through a random pointer. The first was 182066346Seric noted by Eric Wassenaar. 182166346Seric Fix an infinite loop problem caused by null components in the 182266346Seric host signature. Problem noted by Jan Sorensen. 182366346Seric Be sure to reset the "current date" when sending an error 182466346Seric message -- PostMasterCopy messages were being sent 182566346Seric with an old Date: header. 182666346Seric Fix a problem that caused duplicated mail when sendmail was 182766346Seric (1) compiled without HASFLOCK, (2) you are sending to 182866346Seric an alias that has an owner-* alias, (3) you execute 182966346Seric sendmail with -t flag, (4) you run in -odb mode, and 183066346Seric (5) the sender specifies both the alias name and 183166346Seric another alias [i.e., the envelope is split], then 183266346Seric duplicate messages are sent. The problem description 183366346Seric and one-line fix are from Motonori Nakamura of Kyoto 183466346Seric University. 183566346Seric Avoid a problem that causes error messages to be discarded 183666346Seric in some cases -- this was the result of a "fix" to 183766346Seric avoid duplicate error messages, but two are better 183866346Seric than zero. Reported by Tim Rylance. 183966346Seric Fix a minor botch in checkfd012() -- fix from Dave Hill of 184066346Seric Computervision R&D Ltd. 184166346Seric Remove "X-Authentication-Warning: <user> set sender to <address> 184266346Seric using -f" entirely -- it is far too eager to include 184366346Seric this, and it is confusing folks. I'll try to make it 184466346Seric work "right" in 8.7. Problem noted by Yoshitaka 184566346Seric Tokugawa of dit Co., Ltd. 184666346Seric Fix a race condition with the errno value in tick() and 184766346Seric reapchild() -- this caused occasional misdiagnosis 184866346Seric of problems. Kyle Jones of UUNET helped this along. 184966346Seric Repair rule loop-detection code. From Michael Corrigan of 185066346Seric U.C. San Diego. 185166346Seric Fix a problem that caused sender domain addition (C mailer 185266346Seric flag to be ignored if you use -odq or use -odb with 185366346Seric a high load average. Problem reported by Jim Murray 185466346Seric of Stratus. 185566346Seric Fix ident protocol on multi-homed machines. It was not 185666346Seric always using the correct interface. Fix from J.R. 185766346Seric Oldroyd of Opal. 185866346Seric Previously, sendmail assumed that any SMTP greeting message 185966346Seric that wasn't 2xx was a temporary failure -- it should 186066346Seric only take 4xx as a temporary failure, and return a 186166346Seric solid error message on anything else -- for example, 186266346Seric to allow you to reject connections on a workstation 186366346Seric that is MXed to a mail server. 186466346Seric Portability enhancements for 386BSD/FreeBSD/NetBSD from 186566346Seric Ollivier Robert. 186666346Seric CONFIG: FEATURE(always_add_domain) didn't always add the domain; 186766346Seric in particular, on local mail it modified the header sender 186866346Seric but not the header recipient address(es). Reported by 186966346Seric Jeffrey Honig of Cornell University. Also, strip 187066346Seric any host from envelope recipient address(es), since 187166346Seric local mailers don't understand host names -- this is 187266346Seric to help mailertable entries. From Christopher Davis. 187366346Seric CONFIG: masquerading didn't apply to addresses that already 187466346Seric had a domain. This change replaces a local hostname 187566346Seric by the masquerade name in the SMTP mailer (previously 187666346Seric it only added the masquerade name if it didn't already 187766346Seric have a domain name). Several people complained about 187866346Seric this. 187966346Seric 188066345Seric8.6.2/8.6.2 93/10/15 188166345Seric Put a "successful delivery" message in the transcript for 188266345Seric addresses that get return-receipts. 188366345Seric Put a prominent "this is only a warning" message in warning 188466345Seric messages -- some people don't read carefully enough 188566345Seric and end up sending the message several times. 188666345Seric Include reason for temporary failure in the "warning" return 188766345Seric message. Currently, it just says "cannot send for 188866345Seric four hours". 188966345Seric Fix the "Original message received" time generated for 189066345Seric returntosender messages. It was previously listed as 189166345Seric the current time. Bug reported by Eric Hagberg of 189266345Seric Cornell University Medical College. 189366345Seric If there is an error when writing the body of a message, 189466345Seric don't send the trailing dot and wait for a response 189566345Seric in sender SMTP, as this could cause the connection to 189666345Seric hang up under some bizarre circumstances. From Eric 189766345Seric Wassenaar. 189866345Seric Fix some server SMTP synchronization problems caused when 189966345Seric connections fail during message collection. From 190066345Seric Eric Wassenaar. 190166345Seric Fix a problem that can cause srvrsmtp to reject mail if the 190266345Seric name server is down -- it accepts the RCPT but rejects 190366345Seric the DATA command. Problem reported by Jim Murray of 190466345Seric Stratus. 190566345Seric Fix a problem that can cause core dumps if the config file 190666345Seric incorrectly resolves to a null hostname. Reported by 190766345Seric Allan Johannesen of WPI. 190866345Seric Non-root use of -C flag, dangerous -f flags, and use of -oQ 190966345Seric by non-root users were not put into 191066345Seric X-Authentication-Warning:s as intended because the 191166345Seric config file hadn't set the PrivacyFlags yet. Fix 191266345Seric from Sven-Ove Westberg of the University of Lulea. 191366345Seric Under very odd circumstances, the alias file rebuild code 191466345Seric could get confused as to whether a database was 191566345Seric open or not. 191666345Seric Check "vendor code" on the end of V lines -- this is 191766345Seric intended to provide a hook for vendor-specific 191866345Seric configuration syntax. (This is a "new feature", 191966345Seric but I've made an exception to my rule in a belief 192066345Seric that this is a highly exceptional case.) 192166345Seric Portability fixes for DG/UX (from Douglas Anderson of NCSC), 192266345Seric SCO Unix (from Murray Kucherawy), A/UX, and OSF/1 192366345Seric (from Jon Forrest of UC Berkeley) 192466345Seric CONFIG: fix ``mailer:host'' form of UUCP relay naming. 192566345Seric 192666344Seric8.6.1/8.6 93/10/08 192766344Seric Portability fixes for A/UX and Encore UMAX V. 192866344Seric Fix error message handling -- if you had a name server down 192966344Seric causing an error during parsing, that message was never 193066344Seric propogated to the queue file. 193166344Seric 193266343Seric8.6/8.6 93/10/05 193366343Seric Configuration cleanup: make it easier to undo IDENTPROTO in 193466343Seric conf.h (other systems have the same bug). 193566343Seric If HASGETDTABLESIZE and _SC_OPEN_MAX are both defined, assume 193666343Seric getdtablesize() instead of sysconf(); a disturbingly 193766343Seric large number of systems defined _SC_OPEN_MAX in the 193866343Seric header files but don't have the syscall. 193966343Seric Another patch to really truly ignore MX records in getcanonname 194066343Seric if trymx == FALSE. 194166343Seric Fix problem that caused the "250 IAA25499 Message accepted for 194266343Seric delivery" message to be omitted if there was an error 194366343Seric in the header of the message (e.g., a bad Errors-To: 194466343Seric line). Pointed out by Michael Corrigan of UCSD. 194566343Seric Announce name of host we are chatting when we get errors; this 194666343Seric is an IDA-ism suggested by Christophe Wolfhugel. 194766343Seric Portability fixes for Alpha OSF/1 (from Anthony Baxter of the 194866343Seric Australian Artificial Intelligence Institute), SCO Unix 194966343Seric (from Murray Kucherawy of Hookup Communication Corp.), 195066343Seric NeXT (from Vince DeMarco and myself), Linux (from 195166343Seric Karl London <karl@borg.demon.co.uk>), BSDI (from 195266343Seric Christophe Wolfhugel, and SVR4 on Dell (from Kimmo 195366343Seric Suominen), AUX 3.0 on Macintosh, and ANSI C compilers. 195466343Seric Some changes to get around gcc optimizer bugs. From Takahiro 195566343Seric Kanbe. 195666343Seric Fix error recovery in queueup if another tf file of the same 195766343Seric name already exists. Problem stumbled over by Bill 195866343Seric Wisner of The Well. 195966343Seric Output YP_MASTER_NAME and YP_LAST_MODIFIED without null bytes. 196066343Seric Problem noted by Keith McMillan of Ameritech Services. 196166343Seric Deal with group permissions properly when opening .forward and 196266343Seric :include: files. This relaxes the 8.1C restrictions 196366343Seric slightly more. This includes proper setting of groups 196466343Seric when reading :include: files, allowing you to read some 196566343Seric files that you should be able to read but have previously 196666343Seric been denied unless you owned them or they had "other" 196766343Seric read permission. 196866343Seric Make certain that $j is in $=w (after the .cf is read) so that 196966343Seric if the user is forced to override some silly system, 197066343Seric MX suppression will still work. 197166343Seric Fix a couple of efficiency problems where newstr was double- 197266343Seric calling expensive routines. In at least one case, it 197366343Seric wasn't guaranteed that they would always return the 197466343Seric same result. Problem noted by Christophe Wolfhugel. 197566343Seric Fix null pointer dereference in putoutmsg -- only on an error 197666343Seric condition from a non-SMTP mailer. From Motonori 197766343Seric Nakamura. 197866343Seric Macro expand "C" line class definitions before scanning so that 197966343Seric "CX $Z" works. 198066343Seric Fix problem that caused error message to be sent while still 198166343Seric trying to send the original message if the connection 198266343Seric is closed during a DATA command after getting an error 198366343Seric on an RCPT command (pretty obscure). Problem reported 198466343Seric by John Myers of CMU. 198566343Seric Fix reply to NOOP to be 250 instead of 200 -- this is a long 198666343Seric term bug. 198766343Seric Fix a nasty bug causing core dumps when returning the "warning: 198866343Seric cannot deliver for N hours -- will keep trying" message; 198966343Seric it only occurred if you had PostMasterCopy set and 199066343Seric only on some architectures. Although sendmail would 199166343Seric keep trying, it would send error messages on each 199266343Seric queue interval. This is an important fix. 199366343Seric Allow u and g options to take user and group names respectively. 199466343Seric Don't do a chdir into the queue directory in -bt mode to make 199566343Seric ruleset testing a bit easier. 199666343Seric Don't allow users to turn off logging (using -oL) on the command 199766343Seric line -- command line can only raise, not lower, logging 199866343Seric level. 199966343Seric Set $u to the original recipient on the SMTP transaction or on 200066343Seric the command line. This is only done if there is exactly 200166343Seric one recipient. Technically, this does not meet the 200266343Seric specs, because it does not guarantee a domain on the 200366343Seric address. 200466343Seric Fix a problem that dumped error messages on bad addresses if 200566343Seric you used the -t flag. Problem noted by Josh Smith of 200666343Seric Harvey Mudd College. 200766343Seric Given an address such as ``<foo> <bar>'', auto-quote the first 200866343Seric ``<foo>'' part, giving ``"<foo>" <bar>''. This is to 200966343Seric avoid the problem of people who use angle brackets in 201066343Seric their full name information. 201166343Seric Fix a null pointer dereference if you set option "l", have 201266343Seric an Errors-To: header in the message, and have Errors-To: 201366343Seric defined in the config file H lines. From J.R. Oldroyd. 201466343Seric Put YPCOMPAT on #ifdef NIS instead -- it's one less thing to get 201566343Seric wrong when compiling. Suggested by Rick McCarty of TI. 201666343Seric Fix a problem that could pass negative SIZE parameter if the 201766343Seric df file got lost; this would cause servers to always 201866343Seric give a temporary failure, making the problem even worse. 201966343Seric Problem noted by Allan Johannesen of WPI. 202066343Seric Add "ident" timeout (one of the "r" option selectors) for IDENT 202166343Seric protocol timeouts (30s default). Requested by Murray 202266343Seric Kucherawy of HookUp Communication Corp. to handle bogus 202366343Seric PC TCP/IP implementations. 202466343Seric Change $w default definition to be just the first component of 202566343Seric the domain name on config level 5. The $j macro defaults 202666343Seric to the FQDN; $m remains as before. This lets well-behaved 202766343Seric config files use any of the short, long, or subdomain 202866343Seric names. 202966343Seric Add makesendmail script in src to try to automate multi-architecture 203066343Seric builds. I know, this is sub-optimal, but it is still 203166343Seric helpful. 203266343Seric Fix very obscure race condition that can cause a queue run to 203366343Seric get a queue file for an already completed job. This 203466343Seric problem has existed for years. Problem noted by the 203566343Seric long suffering Allan Johannesen of WPI. 203666343Seric Fix a problem that caused the raw sender name to be passed to 203766343Seric udbsender instead of the canonified name -- this caused 203866343Seric it to sometimes miss records that it should have found. 203966343Seric Relax check of name on HELO packet so that a program using -bs 204066343Seric that claims to be itself works properly. 204166343Seric Restore rewriting of $: part of address through 2, R, 4 in 204266343Seric buildaddr -- this requires passing a lot of flags to get 204366343Seric it right. Unlike old versions, this ONLY rewrites 204466343Seric recipient addresses, not sender addresses. 204566343Seric Fix a bug that caused core dumps in config files that cannot 204666343Seric resolve /file/name style addresses. Fix from Jonathan 204766343Seric Kamens of OpenVision Technologies. 204866343Seric Fix problem with fcntl locking that can cause error returns to 204966343Seric be lost if the lock is lost; this required fully 205066343Seric queueing everything, dropping the envelope (so errors 205166343Seric would get returned), and then re-reading the queue from 205266343Seric scratch. 205366343Seric Fix a problem that caused aliases that redefine an otherwise 205466343Seric true address to still send to the original address 205566343Seric if and only if the alias failed in certain bizarre 205666343Seric ways (e.g, if they pointed at a list:; syntax address). 205766343Seric Problem pointed out by Jonathan Kamens. 205866343Seric Remove support for frozen configuration files. They caused 205966343Seric more trouble than it was worth. 206066343Seric Fix problem that can cause error messages to get ignored when 206166343Seric using both -odb and -t flags. Problem noted by Rob 206266343Seric McNicholas at U.C. Berkeley. 206366343Seric Include all "normal" variations on hostname in $=w. For example, 206466343Seric if the host name is vangogh.cs.berkeley.edu, $=w will 206566343Seric contain vangogh, vangogh.cs, and vangogh.cs.berkeley.edu. 206666343Seric Add "restrictqrun" privacy flag -- without this, anyone can run 206766343Seric the queue. 206866343Seric Reset SmtpPhase global on initial connection creation so that 206966343Seric messages don't come out with stale information. 207066343Seric Pass an "ext" argument to lockfile so that error/log messages 207166343Seric will properly reflect the true filename being locked. 207266343Seric Put all [...] address forms into $=w -- this eliminates the need 207366343Seric for MAXIPADDR in conf.h. Suggested by John Gardiner 207466343Seric Myers of CMU. 207566343Seric Fix a bug that can cause qf files to be left around even after 207666343Seric an SMTP RSET command. Problem and fix from Michael 207766343Seric Corrigan. 207866343Seric Don't send a PostMasterCopy to errors when the Precedence: is 207966343Seric negative. Error reports still go to the envelope 208066343Seric sender address. 208166343Seric Add LA_SHORT for load averages. 208266343Seric Lock sendmail.st file when posting statistics. 208366343Seric Add "SendBufSize" and "RcvBufSize" suboptions to "O" option to 208466343Seric set the size of the TCP send and receive buffers; if you 208566343Seric run over a slow slip line you may need to set these down 208666343Seric (although it would be better to fix the SLIP implementation 208766343Seric so that it's not necessary to recompile every program 208866343Seric that does bulk data transfer). 208966343Seric Allow null defaults on $( ... $) lookups. Problem reported by 209066343Seric Amir Plivatsky. 209166343Seric Diagnose crufty S and V config lines. This resulted from an 209266343Seric observation that some people were using the SITE macro 209366343Seric without the SITECONFIG macro first, which was causing 209466343Seric bogus config files that were not caught. 209566343Seric Fix makemap -f flag to turn off case folding (it was turning it 209666343Seric on instead). THIS IS A USER VISIBLE CHANGE!!! 209766343Seric Fix a problem that caused multiple error messages to be sent if 209866343Seric you used "sendmail -t -oem -odb", your system uses fcntl 209966343Seric locking, and one of the recipient addresses is unknown. 210066343Seric Reset uid earlier in include() so that recursive .forwards or 210166343Seric :include:s don't use the wrong uid. 210266343Seric If file descriptor 0, 1, or 2 was closed when sendmail was 210366343Seric called, the code to recover the descriptor was broken. 210466343Seric This sometimes (only sometimes) caused problems with the 210566343Seric alias file. Fix from Motonori Nakamura. 210666343Seric Fix a problem that caused aliaswait to go into infinite recursion 210766343Seric if the @:@ metasymbol wasn't found in the alias file. 210866343Seric Improve error message on newaliases if database files cannot be 210966343Seric opened or if running with no database format defined. 211066343Seric Do a better estimation of the size of error messages when NoReturn 211166343Seric is set. Problem noted by P{r (Pell) Emanuelsson. 211266343Seric Fix a problem causing the "c" option (don't connect to expensive 211366343Seric mailers) to be ignored in SMTP. Problem noted and the 211466343Seric solution suggested by Robert Elz of Munnari University. 211566343Seric Improve connection caching algorithm by passing "[host]" to 211666343Seric hostsignature, which strips the square brackets and 211766343Seric returns the real name. This allows mailertable entries 211866343Seric to match regular entries. 211966343Seric Re-enable Return-Receipt-To: -- people seem to want this stupid 212066343Seric feature, even if it doesn't work right. 212166343Seric Catch and log attempts to try the "wiz" command in server SMTP. 212266343Seric This also ups the log level from LOG_NOTICE to LOG_CRIT. 212366343Seric Be more generous at assigning $z to the home directory -- do this 212466343Seric for programs that are specified through a .forward file. 212566343Seric Fix from Andrew Chang of Sun Microsystems. 212666343Seric Always save a fatal error message in preference to a non-fatal 212766343Seric error message so that the "subject" line of return 212866343Seric messages is the best possible. 212966343Seric CONFIG: reduce the number of quotes needed to quote configuration 213066343Seric parameters with commas: two quotes should work now, e.g., 213166343Seric define(ALIAS_FILE, ``/etc/aliases,/etc/aliases.local''). 213266343Seric CONFIG: class $=Z is a set of UUCP hosts that use uucp-dom 213366343Seric connections (domain-ized UUCP). 213466343Seric CONFIG: fix bug in default maps (-o must be before database file 213566343Seric name). Pointed out by Christophe Wolfhugel. 213666343Seric CONFIG: add FEATURE(nodns) to state that we are not relying on 213766343Seric DNS. This would presumably be used in UUCP islands. 213866343Seric CONFIG: add OSTYPE(nextstep) and OSTYPE(linux). 213966343Seric CONFIG: log $u in Received: line. This is in technical violation 214066343Seric of the standards, since it doesn't guarantee a domain 214166343Seric on the address. 214266343Seric CONFIG: don't assume "m" in local mailer flags -- this means that 214366343Seric if you redefine LOCAL_MAILER_FLAGS you will have to include 214466343Seric the "m" flag should you want it. Apparently some Solaris 2.2 214566343Seric installations can't handle multiple local recipients. 214666343Seric Problem noted by Josh Smith. 214766343Seric CONFIG: add confDOMAIN_NAME to set $j (if undefined, $j defaults). 214866343Seric CONFIG: change default version level from 4 to 5. 214966343Seric CONFIG: add FEATURE(nullclient) to create a config file that 215066343Seric forwards all mail to a hub without ever looking at the 215166343Seric addresses in any detail. 215266343Seric CONFIG: properly strip mailer: information off of relays when 215366343Seric used to change .BITNET form into %-hack form. 215466343Seric CONFIG: fix a problem that caused infinite loops if presented 215566343Seric with an address such as "!foo". 215666343Seric CONFIG: check for self literal (e.g., [128.32.131.12]) even if 215766343Seric the reverse "PTR" mapping is broken. There's a better 215866343Seric way to do this, but the change is fairly major and I 215966343Seric want to hold it for another release. Problem noted by 216066343Seric Bret Marquis. 216166343Seric 216266342Seric8.5/8.5 93/07/23 216366342Seric Serious bug: if you used a command line recipient that was unknown 216466342Seric sendmail would not send a return message (it was treating 216566342Seric everything as though it had an SMTP-style client that 216666342Seric would do the return itself). Problem noted by Josh Smith. 216766342Seric Change "trymx" option in getcanonname() to ignore all MX data, 216866342Seric even during a T_ANY query. This actually didn't break 216966342Seric anything, because the only time you called getcanonname 217066342Seric with !trymx was if you already knew there were no MX 217166342Seric records, but it is somewhat cleaner. From Motonori 217266342Seric Nakamura. 217366342Seric Don't call getcanonname from getmxrr if you already know there 217466342Seric are no DNS records matching the name. 217566342Seric Fix a problem causing error messages to always include "The 217666342Seric original message was received ... from localhost". 217766342Seric The correct original host information is now included. 217866342Seric Previous change to cf/sh/makeinfo.sh doesn't port to Ultrix (their 217966342Seric version of "test" doesn't have the -x flag). Change it 218066342Seric to use -f instead. From John Myers. 218166342Seric CONFIG: 8.4 mistakenly set the default SMTP-style mailer to 218266342Seric esmtp -- it should be smtp. 218366342Seric CONFIG: send all relayed mail using confRELAY_MAILER (defaults 218466342Seric to "relay" (a variant of "smtp") if MAILER(smtp) is used, 218566342Seric else "suucp" if MAILER(uucp) is used, else "unknown"); 218666342Seric this cleans up the configs somewhat. This fixes a serious 218766342Seric problem that caused route-addrs to get mistaken as relays, 218866342Seric pointed out by John Myers. WARNING: this also causes 218966342Seric the default on SMART_HOST to change from "suucp" to 219066342Seric "relay" if you have MAILER(smtp) specified. 219166342Seric 219266341Seric8.4/8.4 93/07/22 219366341Seric Add option `w'. If you receive a message that comes to you because 219466341Seric you are the best (lowest preference) target of an MX, and 219566341Seric you haven't explicitly recognized the source MX host in 219666341Seric your .cf file, this option will cause you to try the target 219766341Seric host directly (as if there were no MX for it at all). If 219866341Seric `w' is not set, this case is a configuration error. 219966341Seric Beware: if `w' is set, senders may get bogus errors like 220066341Seric "message timed out" or "host unknown" for problems that 220166341Seric are really configuration errors. This option is 220266341Seric disrecommended, provided only for compatibility with 220366341Seric UIUC sendmail. 220466341Seric Fix a problem that caused the incoming socket to be left open 220566341Seric when sendmail forks after the DATA command. This caused 220666341Seric calling systems to wait in FIN_WAIT_2 state until the 220766341Seric entire list was processed and the child closed -- a 220866341Seric potentially prodigious amount of time. Problem noted 220966341Seric by Neil Rickert. 221066341Seric Fix problem (created in 6.64) that caused mail sent to multiple 221166341Seric addresses, one of which was a bad address, to completely 221266341Seric suppress the sending of the message. This changes 221366341Seric handling of EF_FATALERRS somewhat, and adds an 221466341Seric EF_GLOBALERRS flag. This also fixes a potential problem 221566341Seric with duplicate error messages if there is a syntax error 221666341Seric in the header of a message that isn't noticed until late 221766341Seric in processing. Original problem pointed out by Josh Smith 221866341Seric of Harvey Mudd College. This release includes quite a bit 221966341Seric of dickering with error handling (see below). 222066341Seric Back out SMTP transaction if MAIL gets nested 501 error. This 222166341Seric will only hurt already-broken software and should help 222266341Seric humans. 222366341Seric Fix a problem that broke aliases when neither NDBM nor NEWDB were 222466341Seric compiled in. It would never read the alias file. 222566341Seric Repair unbalanced `)' and `>' (the "open" versions are already 222666341Seric repaired). 222766341Seric Logging of "done" in dropenvelope() was incorrect: it would 222866341Seric log this even when the queue file still existed. Change 222966341Seric this to only log "done" (at log level 11) when the 223066341Seric queue file is actually removed. From John Myers. 223166341Seric Log "lost connection" in server SMTP at log level 20 if there 223266341Seric is no pending transaction. Some senders just close the 223366341Seric connection rather than sending QUIT. 223466341Seric Fix a bug causing getmxrr to add a dot to the end of unqualified 223566341Seric domains that do not have MX records -- this would cause 223666341Seric the subsequent host name lookup to fail. The problem 223766341Seric only occurred if you had FEATURE(nocanonify) set. 223866341Seric Problem noted by Rick McCarty of Texas Instruments. 223966341Seric Fix invocation of setvbuf when passed a -X flag -- I had 224066341Seric unwittingly used an ANSI C extension, and this caused 224166341Seric core dumps on some machines. 224266341Seric Diagnose self-destructive alias loops on RCPT as well as EXPN. 224366341Seric Previously it just gave an empty send queue, which 224466341Seric then gave either "Need RCPT (recipient)" at the DATA 224566341Seric (confusing, since you had given an RCPT command which 224666341Seric returned 250) or just dropped the email, depending on 224766341Seric whether you were running VERBose mode. Now it usually 224866341Seric diagnoses this case as "aliasing/forwarding loop broken". 224966341Seric Unfortunately, it still doesn't adequately diagnose 225066341Seric some true error conditions. 225166341Seric Add internal concept of "warning messages" using 6xx codes. 225266341Seric These are not reported only to Postmaster. Unbalanced 225366341Seric parens, brackets, and quotes are printed as 653 codes. 225466341Seric They are always mapped to 5xx codes before use in SMTP. 225566341Seric Clean up error messages to tell both the actual address that 225666341Seric failed and the alias they arose from. This makes it 225766341Seric somewhat easier to diagnose problems. Difficulty noted 225866341Seric by Motonori Nakamura. 225966341Seric Fix a problem that inappropriately added a ctladdr to addresses 226066341Seric that shouldn't have had one during a queue run. This 226166341Seric caused error messages to be handled differently during 226266341Seric a queue run than a direct run. 226366341Seric Don't print the qf name and line number if you get errors during 226466341Seric the direct run of the queue from srvrsmtp -- this was 226566341Seric just extra stuff for users to crawl through. 226666341Seric Put command line flags on second line of pid file so you can 226766341Seric auto-restart the daemon with all appropriate arguments. 226866341Seric Use "kill `head -1 /etc/sendmail.pid`" to stop the 226966341Seric daemon, and "eval `tail -1 /etc/sendmail.pid`" to 227066341Seric restart it. 227166341Seric Remove the ``setuid(getuid())'' in main -- this caused the 227266341Seric IDENT daemon to screw up. This required that I change 227366341Seric HASSETEUID to HASSETREUID and complicate the mode 227466341Seric changing somewhat because both Ultrix and SunOS seem 227566341Seric to have a bug causing seteuid() to set the saved uid 227666341Seric as well as the effective. The program test/t_setreuid.c 227766341Seric will test to see if your implementation of setreuid(2) 227866341Seric is appropriately functional. 227966341Seric The FallBackMX (option V) handling failed to properly identify 228066341Seric fallback to yourself -- most of the code was there, 228166341Seric but it wasn't being enabled. Problem noted by Murray 228266341Seric Kucherawy of the University of Waterloo. 228366341Seric Change :include: open timeout from ETIMEDOUT to an internal 228466341Seric code EOPENTIMEOUT; this avoids adding "during SmtpPhase 228566341Seric with CurHostName" in error messages, which can be 228666341Seric confusing. Reported by Jonathan Kamens of OpenVision 228766341Seric Technologies. 228866341Seric Back out setpgrp (setpgid on POSIX systems) call to reset the 228966341Seric process group id. The original fix was to get around 229066341Seric some problems with recalcitrant MUAs, but it breaks 229166341Seric any call from a shell that creates a process group id 229266341Seric different from the process id. I could try to fix 229366341Seric this by diddling the tty owner (using tcsetpgrp or 229466341Seric equivalent) but this is too likely to break other 229566341Seric things. 229666341Seric Portability changes: 229766341Seric Support -M as equivalent to -oM on Ultrix -- apparently 229866341Seric DECnet calls sendmail with -MrDECnet -Ms<HOST> -bs 229966341Seric instead of using standard flags. Oh joy. This 230066341Seric behaviour reported by Jon Giltner of University 230166341Seric of Colorado. 230266341Seric SGI IRIX -- this includes several changes that should 230366341Seric help other strict ANSI compilers. 230466341Seric SCO Unix -- from Murray Kucherawy of HookUp Communication 230566341Seric Corporation. 230666341Seric Solaris running the Sun C compiler (which despite the 230766341Seric documentation apparently doesn't define 230866341Seric __STDC__ by default). 230966341Seric ConvexOS from Eric Schnoebelen of Convex. 231066341Seric Sony NEWS workstations and Omron LUNA workstations from 231166341Seric Motonori Nakamura. 231266341Seric CONFIG: add confTRY_NULL_MX_LIST to set option `w'. 231366341Seric CONFIG: delete `C' and `e' from default SMTP mailers flags; 231466341Seric several people have made a good argument that this 231566341Seric creates more problems than it solves (although this 231666341Seric may prove painful in the short run). 231766341Seric CONFIG: generalize all the relays to accept a "mailer:host" 231866341Seric format. 231966341Seric CONFIG: move local processing in ruleset 0 into a new ruleset 232066341Seric 98 (8 on old sendmail). Domain literal [a.b.c.d] 232166341Seric addresses are also passed through this ruleset. 232266341Seric CONFIG: if neither SMART_HOST nor MAILER(smtp) were defined, 232366341Seric internet-style addresses would "fall off the end" of 232466341Seric ruleset zero and be interpreted as local -- however, 232566341Seric the angle brackets confused the recursive call. 232666341Seric These are now diagnosed as "Unrecognized host name". 232766341Seric CONFIG: USENET rules weren't included in S0 because of a mistaken 232866341Seric ifdef(`_MAILER_USENET_') instead of 232966341Seric ifdef(`_MAILER_usenet_'). Problem found by Rein Tollevik 233066341Seric of SINTEF RUNIT, Oslo. 233166341Seric CONFIG: move up LOCAL_RULE_0 processing so that it happens very 233266341Seric early in ruleset 0; this allows .mc authors to bypass 233366341Seric things like the "short circuit" code for local addresses. 233466341Seric Prompted by a comment by Bill Wisner of The Well. 233566341Seric CONFIG: add confSMTP_MAILER to define the mailer used (smtp or 233666341Seric esmtp) to send SMTP mail. This allows you to default 233766341Seric to esmtp but use a mailertable or other override to 233866341Seric deal with broken servers. This logic was pointed out 233966341Seric to me by Bill Wisner. Ditto for confLOCAL_MAILER. 234066341Seric Changes to cf/sh/makeinfo.sh to make it portable to SVR4 234166341Seric environments. Ugly as sin. 234266341Seric 234366340Seric8.3/8.3 93/07/13 234466340Seric Fix setuid problems introduced in 8.2 that caused messages 234566340Seric like "Cannot create qfXXXXXX: Invalid argument" 234666340Seric or "Cannot reopen dfXXXXXX: Permission denied". This 234766340Seric involved a new compile flag "HASSETEUID" that takes 234866340Seric the place of the old _POSIX_SAVED_IDS -- it turns out 234966340Seric that the POSIX interface is broken enough to break 235066340Seric some systems badly. This includes some fixes for 235166340Seric HP-UX. Also fixes problems where the real uid is 235266340Seric not reset properly on startup (from Neil Rickert). 235366340Seric Fix a problem that caused timed out messages to not report the 235466340Seric addresses that timed out. Error messages are also more 235566340Seric "user friendly". 235666340Seric Drop required bandwidth on connections from 64 bytes/sec to 235766340Seric 16 bytes/sec. 235866340Seric Further Solaris portability changes -- doesn't require the BSD 235966340Seric compatibility library. This also adds a new 236066340Seric "HASGETDTABLESIZE" compile flag which can be used if 236166340Seric you want to use getdtablesize(2) instead of sysconf(2). 236266340Seric These are loosely based on changes from David Meyer at 236366340Seric University of Oregon. This now seems to work, at least 236466340Seric for quick test cases. 236566340Seric Fix a problem that can cause duplicate error messages to be 236666340Seric sent if you are in SMTP, you send to multiple addresses, 236766340Seric and at least one of those addresses is good and points 236866340Seric to an account that has a .forward file (whew!). 236966340Seric Fix a problem causing messages to be discarded if checkcompat() 237066340Seric returned EX_TEMPFAIL (because it didn't properly mark 237166340Seric the "to" address). Problem noted by John Myers. 237266340Seric Fix dfopen to return NULL if the open failed; I was depending 237366340Seric on fdopen(-1) returning NULL, which isn't the case. This 237466340Seric isn't serious, but does result in wierd error diagnoses. 237566340Seric From Michael Corrigan. 237666340Seric CONFIG: add UUCP_MAX_SIZE M4 macro to set the maximum size of 237766340Seric messages sent through UUCP-family mailers. Suggested 237866340Seric by Bill Wisner of The Well. 237966340Seric CONFIG: if both MAILER(uucp) and MAILER(smtp) are specified, 238066340Seric include a "uucp-dom" mailer that uses domain-style 238166340Seric addressing. Suggested by Bill Wisner. 238266340Seric CONFIG: Add LOCAL_SHELL_FLAGS and LOCAL_SHELL_ARGS to match 238366340Seric LOCAL_MAILER_FLAGS and LOCAL_MAILER_ARGS. Suggested by 238466340Seric Christophe Wolfhugel. 238566340Seric CONFIG: Add OSTYPE(aix3). From Christophe Wolfhugel. 238666340Seric 238766339Seric8.2/8.2 93/07/11 238866339Seric Don't drop out on config file parse errors in -bt mode. 238966339Seric On older configuration files, assume option "l" (use Errors-To 239066339Seric header) for back compatibility. NOTE: this DOES NOT 239166339Seric imply an endorsement of the Errors-To: header in any way. 239266339Seric Accept -x flag on AIX-3 as well as OSF/1. Why, why, why??? 239366339Seric Don't log errors on EHLO -- it isn't a "real" error for an old 239466339Seric SMTP server to give an error on this command, and 239566339Seric logging it in the transcript can be confusing. Fix 239666339Seric from Bill Wisner. 239766339Seric IRIX compatibility changes provided by Dan Rich 239866339Seric <drich@sandman.lerc.nasa.gov>. 239966339Seric Solaris 2 compatibility changes. Provided by Bob Cunningham 240066339Seric <bob@kahala.soest.hawaii.edu>, John Oleynick 240166339Seric <juo@klinzhai.rutgers.edu> 240266339Seric Debugging: -d17 was overloaded (hostsignature and usersmtp.c); 240366339Seric move usersmtp (smtpinit and smtpmailfrom) to -d18 to 240466339Seric match the other flags in that file. 240566339Seric Flush transcript before fork in mailfile(). From Eric Wassenaar. 240666339Seric Save h_errno in mci struct and improve error message display. 240766339Seric Changes from Eric Wassenaar. 240866339Seric Open /dev/null for the transcript if the create of the xf file 240966339Seric failed; this avoids at least one possible null pointer 241066339Seric reference in very wierd cases. From Eric Wassenaar. 241166339Seric Clean up statistics gathering; it was over-reporting because of 241266339Seric forks. From Eric Wassenaar. 241366339Seric Fix problem that causes old Return-Path: line to override new 241466339Seric Return-Path: line (conf.c needs H_FORCE to avoid 241566339Seric re-using old value). From Motonori Nakamura. 241666339Seric Fix broken -m flag in K definition -- even if -m (match only) 241766339Seric was specified, it would still replace the key with the 241866339Seric value. Noted by Rick McCarty of Texas Instruments. 241966339Seric If the name server timed out over several days, no "timed out" 242066339Seric message would ever be sent back. The timeout code 242166339Seric has been moved from markfailure() to dropenvelope() 242266339Seric so that all such failures should be diagnosted. Pointed 242366339Seric out by Christophe Wolfhugel and others. 242466339Seric Relax safefile() constraints: directories in an include or 242566339Seric forward path must be readable by self if the controlling 242666339Seric user owns the entry, readable by all otherwise (e.g., 242766339Seric when reading your .forward file, you have to own and 242866339Seric have X permssion in it; everyone needs X permission in 242966339Seric the root and directories leading up to your home); 243066339Seric include files must be readable by anyone, but need not 243166339Seric be owned by you. 243266339Seric If _POSIX_SAVED_IDS is defined, setuid to the owner before 243366339Seric reading a .forward file; this gets around some problems 243466339Seric on NFS mounts if root permission is not exported and 243566339Seric the user's home directory isn't x'able. 243666339Seric Additional NeXT portability enhancements from Axel Zinser. 243766339Seric Additional HP-UX portability enhancements from Brian Bullen. 243866339Seric Add a timeout around SMTP message writes; this assumes you can 243966339Seric get throughput of at least 64 bytes/second. Note that 244066339Seric this does not impact the "datafinal" default, which 244166339Seric is separate; this is just intended to work around 244266339Seric network clogs that will occur before the final dot 244366339Seric is sent. From Eric Wassenaar. 244466339Seric Change map code to set the "include null" flag adaptively -- 244566339Seric it initially tries both, but if it finds anything 244666339Seric matching without a null it never tries again with a 244766339Seric null and vice versa. If -N is specified, it never 244866339Seric tries without the null and creates new maps with a 244966339Seric null byte. If -O is specified, it never tries with 245066339Seric the null (for efficiency). If -N and -O are specified, 245166339Seric you get -NO (get it?) lookup at all, so this would 245266339Seric be a bad idea. If you don't specify either -N or -O, 245366339Seric it adapts. 245466339Seric Fix recognition of "same from address" so that MH submissions 245566339Seric will insert the appropriate full name information; 245666339Seric this used to work and got broken somewhere along the 245766339Seric way. 245866339Seric Some changes to eliminate some unnecessary SYSERRs in the 245966339Seric log. For example, if you lost a connection, don't 246066339Seric bother reporting that fact on the connection you lost. 246166339Seric Add some "extended debugging" flags to try to track down 246266339Seric why we get occassional problems with file descriptor 246366339Seric one being closed when execing a mailer; it seems to 246466339Seric only happen when there has been another error in the 246566339Seric same transaction. This requires XDEBUG, defined 246666339Seric by default in conf.h. 246766339Seric Add "-X filename" command line flag, which logs both sides of 246866339Seric all SMTP transactions. This is intended ONLY for 246966339Seric debugging bad implementations of other mailers; start 247066339Seric it up, send a message from a mailer that is failing, 247166339Seric and then kill it off and examine the indicated log. 247266339Seric This output is not intended to be particularly human 247366339Seric readable. This also adds the HASSETVBUF compile 247466339Seric flag, defaulted on if your compiler defines __STDC__. 247566339Seric CONFIG: change SMART_HOST to override an SMTP mailer. If you 247666339Seric have a local net that should get direct connects, you 247766339Seric will need to use LOCAL_NET_CONFIG to catch these hosts. 247866339Seric See cf/README for an example. 247966339Seric CONFIG: add LOCAL_MAILER_ARGS (default: `mail -d $u') to handle 248066339Seric sites that don't use the -d flag. 248166339Seric CONFIG: hide recipient addresses as well as sender addresses 248266339Seric behind $M if FEATURE(allmasquerade) is specified; this 248366339Seric has been requested by several people, but can break 248466339Seric local aliases. For example, if you mail to "localalias" 248566339Seric this will be rewritten as "localalias@masqueradehost"; 248666339Seric although initial delivery will work, replies will be 248766339Seric broken. Use it sparingly. 248866339Seric CONFIG: add FEATURE(domaintable). This maps unqualified domains 248966339Seric to qualified domains in headers. I believe this is 249066339Seric largely equivalent to the IDA feature of the same name. 249166339Seric CONFIG: use $U as UUCP name instead of $k. This permits you 249266339Seric to override the "system name" as your UUCP name -- 249366339Seric in particular, to use domain-ized UUCP names. From 249466339Seric Bill Wisner of The Well. 249566339Seric CONFIG: create new mailer "esmtp" that always tries EHLO 249666339Seric first. This is currently unused in the config files, 249766339Seric but could be used in a mailertable entry. 249866339Seric 249966338Seric8.1C/8.1B 93/06/27 250066338Seric Serious security bug fix: it was possible to read any file on 250166338Seric the system, regardless of ownership and permissions. 250266338Seric If a subroutine returns a fully qualified address, return it 250366338Seric immediately instead of feeding it back into rewriting. 250466338Seric This fixes a problem with mailertable lookups. 250566338Seric CONFIG: fix some M4 frotz (concat => CONCAT) 250666338Seric 250766338Seric8.1B/8.1A 93/06/12 250866338Seric Serious bug fix: pattern matching backup algorithm stepped by 250966338Seric two tokens in classes instead of one. Found by Claus 251066338Seric Assmann at University of Kiel, Germany. 251166338Seric 251266338Seric8.1A/8.1A 93/06/08 251366338Seric Another mailertable fix.... 251466338Seric 251566338Seric8.1/8.1 93/06/07 251666338Seric 4.4BSD freeze. No semantic changes. 251766338Seric 251866338Seric6.65/6.34 93/06/06 251966338Seric Fix some lintish problems. 252066338Seric Fix some cases where server SMTP behaved poorly when handed bogus 252166338Seric input, pointed out by Eric Wassenaar. 252266338Seric CONFIG: fix some more (sigh) mailertable bugs -- thanks to 252366338Seric Motonori Nakamura of Kyoto University (again). 252466338Seric 252566338Seric6.64/6.33 93/06/05 252666338Seric Don't send 050 (-v) information after the 250 response to a QUIT 252766338Seric command in srvrsmtp -- clients usually close the connection 252866338Seric at this point, and it causes bogus error messages. 252966338Seric Don't send messages that have errors on input (such as unbalanced 253066338Seric parentheses) during SMTP transactions, since a return 253166338Seric message has (probably) already been sent. 253266338Seric Give better diagnostics on timeouts during network reads, including 253366338Seric information similar to the SMTP phase. 253466338Seric Fix bug that caused SMTP messages to deliver synchronously; this 253566338Seric happened after the DATA 250, and hence caused reading the 253666338Seric next command to be delayed. 253766338Seric Ignore Errors-To: header unless 'l' (lower case el) header is 253866338Seric specified. The Errors-To: header violates RFC 1123. 253966338Seric Errors-To: was only needed to take the place of the 254066338Seric envelope sender in the days when most Unix mailers 254166338Seric didn't understand about the two kinds of senders. 254266338Seric Don't send warning messages in response to automatically generated 254366338Seric messages (that is, those From:<>). 254466338Seric CONFIG: fix some rather stupid typos in the mailertable code 254566338Seric pointed out by Motonori Nakamura of Kyoto University. 254666338Seric CONFIG: add confUSE_ERRORS_TO configuration option. 254766338Seric CONFIG: if ALWAYS_ADD_DOMAIN is selected, try to use $M 254866338Seric (masquerade name) instead of $j. 254966338Seric CONFIG: don't add dots to relay names (added in 6.29); it breaks 255066338Seric several things, and can be simulated by dot terminating 255166338Seric the names of relays. For example, use: 255266338Seric DBbit.net.relay. 255366338Seric (note the trailing dot). 255466338Seric 255566338Seric6.63/6.32 93/06/01 255666338Seric Fix prototypes to eliminate chars in argument lists -- some 255766338Seric compilers are pissy about this. 255866338Seric Log protocol ($r) and body type if set so we can determine if 255966338Seric the adaptive algorithms are working. 256066338Seric Pessimize on locking of database files (particularly for NEWDB 256166338Seric databases) during opens. There were problems with 256266338Seric processes opening the file while it was rebuilt; since 256366338Seric NEWDB caches heavily, the reader opened an empty file, 256466338Seric which is an error. If your system has the ability to 256566338Seric lock atomically on open, this works properly; otherwise, 256666338Seric there are race conditions. 256766338Seric Check mod time on .pag file instead of .dir in NDBM aliases 256866338Seric because the .dir file doesn't get updated for small 256966338Seric alias files. From John Gardiner Myers of CMU. 257066338Seric More Solaris portability -- it now compiles on Solaris, but 257166338Seric hangs up in gethostbyname(). 257266338Seric Move setting of RES_DEBUG flag before first myhostname() call 257366338Seric so we can see name server traffic on that call. 257466338Seric Fsync() queue files. 257566338Seric Fix a problem that causes -bi to try to rebuild maps other than 257666338Seric the alias file(s). 257766338Seric Fix a problem that caused udb to reject entries from any but 257866338Seric the first database listed. 257966338Seric Rearrange doc subdirectory for 4.4BSD release tape. 258066338Seric CONFIG: put $r into the Received line. This was an oversight. 258166338Seric CONFIG: fix typo (call to ruleset 99 should have been rulset 90). 258266338Seric CONFIG: move "auxiliary" subroutines to be in ruleset 90-99 258366338Seric range -- in the long run, single digit rulesets may 258466338Seric become reserved for builtin use by sendmail. 258566338Seric CONFIG: fix major problem that causes host aliases (that is, 258666338Seric anything in $=w != $j) to not be recognized. This has 258766338Seric been around since 6.30. 258866338Seric 258966338Seric6.62/6.31 93/05/28 259066338Seric BETA RELEASE 259166338Seric Fix recursive syserr (if there is an error printing a syserr 259266338Seric message). This makes the code much less eager to consider 259366338Seric a write error as serious. This also includes some 259466338Seric heuristics to be clever about closed connections. 259566338Seric Lock NEWDB files during gets. This requires version 1.5 or later 259666338Seric of the db library. If you have an older version, you 259766338Seric can use -DOLD_NEWDB. This will go away in a few weeks. 259866338Seric Fix problem causing aliases that use host maps to get overwritten. 259966338Seric Do appropriate byte swapping on port numbers in ident protocol 260066338Seric code. Fix from Allan Johannesen of WPI. 260166338Seric Defer opening of map files to the same time as alias files so that 260266338Seric the daemon will tend to pick up new versions more promptly. 260366338Seric Prototype a bunch more functions. 260466338Seric Some Solaris 2.1 changes (still doesn't link though). 260566338Seric Try to simplify Makefiles by including more subordinate #defines 260666338Seric in conf.h (based on OS type). 260766338Seric CONFIG: check for domains if FEATURE(mailertable) is defined. 260866338Seric For example, if the host name is "knecht.cs.berkeley.edu" 260966338Seric it will search the following mailertable keys: 261066338Seric knecht.cs.berkeley.edu 261166338Seric .cs.berkeley.edu 261266338Seric .berkeley.edu 261366338Seric .edu 261466338Seric This could be used to replace the special relays for bitnet 261566338Seric and similar nets. 261666338Seric 261766338Seric6.61/6.30 93/05/24 261866338Seric Fix problem that prevented appending dots on canonified host 261966338Seric names. This breaks tons of config files -- very 262066338Seric important fix. 262166338Seric Fix improper pointer dereference in response to HELO command. 262266338Seric Fix core dump if debugging set in map_rewrite. 262366338Seric CONFIG: add FEATURE(always_add_domain) to always attach the 262466338Seric local domain (only impacts local mail). 262566338Seric CONFIG: try to avoid turning names into $j -- although 262666338Seric technically a host can only have one "canonical name", 262766338Seric it seems to be common practice to have several. 262866338Seric 262966338Seric6.60/6.29 93/05/22 263066338Seric Major change: merge alias databases with maps. This expands and 263166338Seric changes the map class interface but fixes a bunch of bugs. 263266338Seric The important user-visible change is that the file name 263366338Seric in a K line now does not include the ".db" extension; this 263466338Seric is added automatically. Also, the -d (NIS domain) flag is 263566338Seric missing from the K config line; use @domain instead. 263666338Seric When compiling, the *_MAP names are gone -- just compile 263766338Seric in NDBM, NEWDB, and/or NIS support. 263866338Seric Announce mailer/host/user triple on -bv flag -- from Brian 263966338Seric Bullen of Stirling University. 264066338Seric Don't send more than one line in response to HELO -- it confuses 264166338Seric Pony Express, which then behaves very badly. However, 264266338Seric this change does send two line 220 greetings, with the 264366338Seric second line reading "ESMTP spoken here". The usersmtp 264466338Seric module recognizes this and goes into ESMTP mode regardless 264566338Seric of the setting of the "a" mailer flag. Thus, "a" means 264666338Seric "always try EHLO". 264766338Seric AIX portability changes (thanks to Christophe Wolfhugel of 264866338Seric Herve Schauer Consultants (Paris) for providing me with 264966338Seric an INSA account for this purpose). Lightly tested. Use 265066338Seric -D_AIX3. This probably breaks compatibility with some 265166338Seric older systems (e.g., 4.2bsd) but still works on SunOS 265266338Seric 4.1.2, Ultrix 4.2A, HP-UX 8.07, OSF/1 T1.3, and AIX 3.2.3. 265366338Seric Fix a problem causing an error message loop if the output channel 265466338Seric is hosed. 265566338Seric Add the Makefiles that I use for various environments -- some are 265666338Seric Berkeley make versions and some are old make versions. 265766338Seric My makefile for the NeXT box has gotten lost, alas! 265866338Seric PRALIASES: support for printing NEWDB databases. From 265966338Seric Michael J. Corrigan of U.C. San Diego. 266066338Seric CONFIG: don't pass pseudo-domains to $[ ... $] (if you have 266166338Seric a wildcard MX it can have wierd results). From 266266338Seric Christophe Wolfhugel. 266366338Seric CONFIG: dot terminate relay hostnames in S0. From Christophe 266466338Seric Wolfhugel. 266566338Seric 266666338Seric6.59/6.28 93/05/13 266766338Seric Log version with SMTP daemon startup message. 266866338Seric Adjust setproctitle to work on NetBSD and BSD/386. 266966338Seric Fix null pointer reference in MX fallback code. 267066338Seric A bunch of minor fixes from Eric Wassenaar: 267166338Seric If deliver cannot execv the mailer, return EX_OSERR 267266338Seric instead of EX_TEMPFAIL (to give better 267366338Seric error messages). 267466338Seric Consistently malloc e_message. 267566338Seric Catch degenerate case of calling returntosender() 267666338Seric with an empty returnq. 267766338Seric MIME reformatting. 267866338Seric 267966338Seric6.58/6.28 93/05/13 268066338Seric Fix bug that can cause incorrect verbose display of user smtp 268166338Seric messages. 268266338Seric Disable SMTP VERB command if PRIV_NOEXPN is set (since this 268366338Seric could reveal the same information. 268466338Seric Allow failure when reading SMTP greeting message to go on to 268566338Seric next MX host. 268666338Seric Add "MIME-Version: 1.0" header if using MIME (this was NOT 268766338Seric included in RFC 1344, but Bill King of Allan-Bradley 268866338Seric Company forwarded me email from Nathaniel Borenstein 268966338Seric claiming that it was an inadvertent omission). 269066338Seric Don't use Content-Type: X-message-header. According to John 269166338Seric Myers of CMU, many MIME readers will completely ignore 269266338Seric the data if they don't recognize it. Instead, just 269366338Seric add a blank line to make it a legal (empty) message. 269466338Seric Fix problem causing dots to keep getting appended to cached 269566338Seric hostnames. This can cause buffer overrun conditions. 269666338Seric The problem was found by Erik Forsberg of Retix, 269766338Seric although I used a different bug fix than he provided. 269866338Seric Fix parsing of split header/envelope rewriting specs -- from 269966338Seric Eric Forsberg. 270066338Seric Fix from Eric Wassenaar to correct To: lists in error messages. 270166338Seric 270266338Seric6.57/6.28 93/05/11 270366338Seric Fix minor glitch causing extra ctladdrs to be output to queue 270466338Seric file. Just an annoyance. 270566338Seric Cache results of name server canonification lookups to avoid 270666338Seric backed up queue runs. 270766338Seric Major rewrite of alias.c: considerable cleanup, plus sample 270866338Seric (untested) support for NIS aliases. The "A" option 270966338Seric can now be a comma separated list (or be repeated) -- 271066338Seric that is, you can have multiple alias databases. Each 271166338Seric database can have the syntax ``class:file''; if no class 271266338Seric is specified, the "implicit" class is assumed. Implicit 271366338Seric searches through a list of compiled in types -- hash, 271466338Seric dbm, nis, and stab. Alias files are searched in the 271566338Seric order they are listed. For example: 271666338Seric OAhash:/etc/aliases.local,/etc/aliases 271766338Seric OAnis:mail.aliases@my.nis.domain 271866338Seric first searches the hash database /etc/aliases.local, 271966338Seric then the regular /etc/aliases database, then the NIS 272066338Seric map "mail.aliases" in the NIS domain "my.nis.domain". 272166338Seric If in Verbose mode (probably from VERB command) run SMTP job 272266338Seric in foreground and don't do RCPT optimizations. 272366338Seric Add udb :mailsender as equivalent to owner- for regular aliases. 272466338Seric Delete option 8; add option 7 that means the opposite. That is, 272566338Seric default to 8-bit mode; a special option is needed to 272666338Seric force sendmail into 7 bit mode. 272766338Seric Send error messages in encapsulated MIME format. 272866338Seric New compile flag "NIS" that turns on NIS alias and NIS map 272966338Seric support. 273066338Seric Add "j" option to send error messages in MIME (RFC 1341) 273166338Seric encapsulated message format per RFC 1344. The 273266338Seric syntax is pretty ugly if you don't have MIME-aware 273366338Seric user agents. 273466338Seric Clean up message handling (for display in mailq output). 273566338Seric New setproctitle implementation for 4.4bsd. 273666338Seric Create files (such as ~/dead.letter) using mode FileMode (the 273766338Seric F option value) instead of 0666. 273866338Seric Fix bug causing output of EXPN command to not be fully qualified. 273966338Seric This may cause some problems with UUCP addresses that 274066338Seric will require some config file assistance -- specifically, 274166338Seric the $: part has to include the host name for this output 274266338Seric to make sense. 274366338Seric Fix a problem that sometimes diagnosed errors and still sent the 274466338Seric message if the header syntax was bad. 274566338Seric Fix a bug that caused an error message to be emailed when sendmail 274666338Seric was operating in -bv mode. 274766338Seric Add "ListenQueueSize" keyword to daemon options option (OO) to 274866338Seric set the queue size parameter passed to listen(). You 274966338Seric will normally have to tweak your kernel to up this. 275066338Seric Strip spaces off of beginning of message-id before logging (in 275166338Seric case it was folded across lines). 275266338Seric Tweak compile flags in daemon.c -- there were some cases where 275366338Seric it wouldn't work without NETINET. 275466338Seric Change *file* mailer to output all the usual default headers 275566338Seric (From, Date, Message-Id). It gets used when sending 275666338Seric back error messages. 275766338Seric CONFIG: explicitly catch and diagnose list:; syntax in ruleset 275866338Seric zero -- this is not a valid recipient syntax according 275966338Seric to RFC 821. 276066338Seric CONFIG: add confMIME_FORMAT_ERRORS to send error messages in 276166338Seric MIME format. Defaults to on. 276266338Seric CONFIG: add SMTP_MAILER_FLAGS and UUCP_MAILER_FLAGS to augment 276366338Seric the flags for those mailers. 276466338Seric 276566338Seric6.56/6.27 93/05/01 276666338Seric Fix problem that causes the fallback mail to postmaster 276766338Seric (case ESM_POSTMASTER in savemail()) to not look at 276866338Seric aliases (ugh). 276966338Seric Some more HPUX tweaking (compile flag hpux => __hpux so it 277066338Seric still works in ANSI mode). 277166338Seric Don't try to flock non-regular files when mailing to a file. 277266338Seric In particular, this was a problem if you tried to 277366338Seric send to /dev/null. 277466338Seric Fix a wierd bug that can cause senders to be queued as 277566338Seric recipients if the name server is down when the mail 277666338Seric is initially sent. This hack just ignores sender 277766338Seric deletion (essentially, it sets the MeToo flag) if there 277866338Seric is a TEMPFAIL during processing of the sender address. 277966338Seric Obscure. 278066338Seric Fix a dangling else problem -- from Brian Bullen from University 278166338Seric of Stirling, UK. 278266338Seric Add the "b" mailer flag to force a blank line on the end of 278366338Seric messages. Some brilliant versions of /bin/mail insist 278466338Seric on this but do not add it themselves. 278566338Seric Add the "g" mailer flag to prevent user SMTP from sending 278666338Seric "MAIL From:<>". This is only intended to be a 278766338Seric transitional gesture, and should not be used if at 278866338Seric all possible. It appears that Berkeley and IDA 278966338Seric config files have always handled this properly; the 279066338Seric UK config kit apparently does not. 279166338Seric Don't lowercase and then capitalize header field names -- leave 279266338Seric them with original capitalization. Fixes from Bill 279366338Seric King of Allen-Bradley Company. 279466338Seric Further cleanup and improved reporting of error messages, 279566338Seric particularly conditions that cause messages to be 279666338Seric requeued for future delivery. 279766338Seric Tweak syslog priorities in some cases. 279866338Seric CONFIG: clean up route-addr on UUCP addresses. 279966338Seric 280066338Seric6.55/6.25 93/04/27 280166338Seric HPUX 8.07 compatibility changes in getla() -- I had to make 280266338Seric these changes to get it to work at Berkeley, although 280366338Seric others seem to have been working before (???). 280466338Seric Various patches to XLA code. 280566338Seric Fix problem that causes setuid bit on files to be ignored from 280666338Seric SMTP or in queue runs. Problem noted by Jason Ornstein 280766338Seric of Under The Wire, Inc. 280866338Seric Fix problem that can cause CNAMEs to be ignored. 280966338Seric Generalize getmxrr to match local host in $=w instead of a 281066338Seric single name passed in. 281166338Seric Some cleanup from Eric Wassenaar: 281266338Seric Use FileMailer instead of ProgMailer in two places. 281366338Seric Eliminate duplicate 8th-bit stripping in commaize. 281466338Seric Fix a problem with mis-parsing of backslash escapes 281566338Seric under some circumstances. 281666338Seric NIS map fix (was always including trailing null character) 281766338Seric from Mike Glendinning of Ingres UK. 281866338Seric Add "a" mailer flag to try using ESMTP. It tries the EHLO 281966338Seric command and if that fails falls back to regular SMTP. 282066338Seric Also parses EHLO option keywords. If host supports 282166338Seric SIZE extension, this is added to the MAIL FROM: 282266338Seric command. 282366338Seric Extend "b" option to include a second value which is the 282466338Seric maximum message size this server is willing to accept. 282566338Seric For example, a value of "10/1000000" says that there 282666338Seric must be ten blocks free, and sendmail will reject 282766338Seric any message larger than one megabyte. 282866338Seric Some portability hooks for NeXT (this could be applicable 282966338Seric to Mach in general). You have to create an empty 283066338Seric file called "unistd.h" to get it to compile. 283166338Seric Adjust config values (MAXLINE, MAXATOM, and PSBUFSIZE) to 283266338Seric be more generous. 283366338Seric Add X400-Received: to the list of headers tagged with H_TRACE 283466338Seric in conf.c. From Bill King, Allen-Bradley Co. 283566338Seric 283666338Seric6.54/6.25 93/04/19 283766338Seric Fix problem that caused redefinition of SMTP and QUEUE compile 283866338Seric flags. Pointed out by Jon Forrest of the Sequoia 2000 283966338Seric project at Berkeley. 284066338Seric Properly handle \! hack -- it was treating host\!user as one 284166338Seric token (host!user) instead of three (host, !, user). 284266338Seric Fix from Eric Wassenaar of NIKHEF-H. 284366338Seric Fix compilation problem in getauthinfo() if IDENTPROTO is off. 284466338Seric Turn off DEFNAMES and DNSRCH when getting the hostsignature 284566338Seric (i.e., MX records) in level 1 configuration files; this 284666338Seric matches the old behaviour. From Motonori Nakamura of 284766338Seric Kyoto University. 284866338Seric Improve error message printing -- if sent through an alias, 284966338Seric error messages include the name of the alias in the 285066338Seric message. Unfortunately, in order to make this work 285166338Seric properly in queue runs, this changes the format of the 285266338Seric C line in the qf file. The relatively uselessness of 285366338Seric the previous information was pointed out to me by 285466338Seric Allan E Johannesen of WPI. 285566338Seric Add XLA compile flag to add hooks to Christophe Wolfhugel's 285666338Seric extended load average code. This is still in very early 285766338Seric form. For information regarding the guts of the xla 285866338Seric code, contact Christophe.Wolfhugel@grasp.insa-lyon.fr. 285966338Seric Additional hooks for detecting tempfails in rewriting rules 286066338Seric (that is, in map lookups). 286166338Seric 286266338Seric6.53/6.25 93/04/15 286366338Seric Properly diagnose ruleset zero returning null (instead of a mailer 286466338Seric triple). From Motonori Nakamura of Kyoto University. 286566338Seric More generalization of socket code for other protocols. 286666338Seric Shorten timeouts on reverse name lookups -- since they are done 286766338Seric during connection establishment, long timeouts here can 286866338Seric cause higher level timeouts. This mainly serves to accept 286966338Seric mail from hosts that do not have proper reverse (PTR) DNS 287066338Seric records set up. 287166338Seric Reset e_statmsg before each mailer invocation to avoid bogus 287266338Seric messages in the log. 287366338Seric Redefine $r, $s, and $_ in error envelopes so you don't get 287466338Seric incorrect cruft in the error message. Problem noted by 287566338Seric Motonori Nakamura of Kyoto University. 287666338Seric Fix a problem that can cause failure to return errors to Postmaster 287766338Seric in certain cases. From Motonori Nakamura. 287866338Seric Fix a problem that can cause some systems to give duplicate error 287966338Seric messages when a bad syntax address such as "<a" is presented 288066338Seric to an SMTP server. It doesn't seem to occur on all 288166338Seric machines. From Motonori Nakamura. 288266338Seric Default IDENTPROTO off for Ultrix and HPUX, which apparently have 288366338Seric the interesting "feature" that when they receive a "Host 288466338Seric unreachable" message they closes all open connections to 288566338Seric that host. However, some firewall gateways send this message 288666338Seric if you try to connect to an unauthorized port, such as the 288766338Seric IDENT port (113). Thus, no email can be received from such 288866338Seric hosts. There is some evidence that versions of Ultrix before 288966338Seric 4.3 do not have this problem. Thanks to Tom Ivar Helbekkmo 289066338Seric for pointing out this behaviour to me and to Michael Corrigan 289166338Seric of U.C. San Diego for informing me about the HPUX problem. 289266338Seric Allow IPC mailers to return a colon-separated list of hosts in the 289366338Seric $@ clause; these are searched in order as though they were 289466338Seric MX records. 289566338Seric When sending an error report, print the list of addresses tagged 289666338Seric as bad. Requested by Allan E Johannesen of WPI. 289766338Seric Change map function calls to return a status code. This gets 289866338Seric passed back as the result of rewrite. Parseaddr marks 289966338Seric the address as a QUEUEUP address if the return code is 290066338Seric EX_TEMPFAIL. All this to queue properly if the name 290166338Seric server is down. This code is not well tested. This code 290266338Seric changes the interface to map lookup functions (a fifth 290366338Seric parameter, int *statp, is added). Feature requested by 290466338Seric Dan Oscarsson. 290566338Seric Don't delete quotes (in the dequote map) if there are spaces in 290666338Seric the string, since this would cause them to be replaced by 290766338Seric the SpaceSub character. 290866338Seric Accept BODY=8BITMIME on SMTP MAIL command. This isn't advertised 290966338Seric because the 8BIT to 7BIT translation doesn't exist yet. 291066338Seric This does add a "bodytype" field to both envelope and 291166338Seric queue file and a -B command line flag to pass the type in 291266338Seric during direct invocations. 291366338Seric Discard return error messages only on responses to responses to 291466338Seric responses, not on responses to responses. That is, the 291566338Seric algorithm is to try return to sender, then return to 291666338Seric postmaster, then discard. Previously it discarded 291766338Seric immediately if the return to sender pass failed. 291866338Seric CONFIG: back out change to hide unqualified hostnames behind %-hack. 291966338Seric This screws up local aliases and .forward files. 292066338Seric CONFIG: add FEATURE(nocanonify) to turn off calls to $[ ... $]; 292166338Seric some sites only handle completely canonified names. 292266338Seric Requested by John Gardiner Myers of CMU. 292366338Seric CONFIG: some UUCP code was still included even if FEATURE(nouucp) 292466338Seric was specified. 292566338Seric 292666338Seric6.52/6.24 93/04/10 292766338Seric Clean up some minor glitches on error return messages pointed out 292866338Seric by Motonori Nakamura of Kyoto University. 292966338Seric Fix reply() to not reset SmtpReplyBuffer on fatal errors; this 293066338Seric was supposed to reset SmtpMsg Buffer. This makes the 293166338Seric client side code virtually useless. Reported by Allan 293266338Seric E Johannesen of WPI and Phil Brandenberger of Swarthmore. 293366338Seric Better debug messages if fuzzy is disabled, suggested by Allan 293466338Seric E Johannesen of WPI. 293566338Seric Offset SmtpReplyBuffer by four in usersmtp when checking for 293666338Seric loopback. From Eric Wassenaar. 293766338Seric Don't set $s until after runinchild in srvrsmtp -- otherwise 293866338Seric it gets cleared. From Eric Wassenaar. 293966338Seric Implement IDA-style $&x for deferred macro expansion. 294066338Seric More POSIX compatibility. 294166338Seric CONFIG: Hide unqualified hostnames behind %-hack using $s as the 294266338Seric actual sender. This is only done if $r is non-null, that 294366338Seric is, if this is not locally submitted mail. 294466338Seric CONFIG: Add FEATURE(bitdomain) allowing mapping of BITNET host 294566338Seric names to internet domains. A program contributed by 294666338Seric John Gardiner Myers of CMU to create the maps is included 294766338Seric in the contrib directory (in the "misc" tar file). 294866338Seric CONFIG: Add FEATURE(uucpdomain) for a similar mapping for UUCP 294966338Seric hosts. There is currently no tool to create this map. 295066338Seric 295166338Seric6.51/6.23 93/04/04 295266338Seric Add D= mailer flag to specify a path of possible working directories 295366338Seric in which to execute the mailer. This is intended for the 295466338Seric prog mailer; some shells can get upset if they don't have 295566338Seric access to the current directory. 295666338Seric Add RFC 1413 (IDENT) protocol support. This is only very loosely 295766338Seric tested. This adds a $_ macro to be the authenticated 295866338Seric info (in ``user@domain [address]'' form) and debug flag 295966338Seric 9 to trace the protocol. 296066338Seric Check for loopbacks in usersmtp instead of srvrsmtp -- there is no 296166338Seric reason for a local agent to not be talking to the localhost 296266338Seric (although the inverse is not true). 296366338Seric Add a few hooks for automated map rebuilding. This is certainly 296466338Seric not done yet. 296566338Seric CONFIG: Have prog mailer specify a path of ``D=$z:/'' -- that is, 296666338Seric user's home directory then the root. 296766338Seric CONFIG: Log RFC 1413 identification in Received: line. 296866338Seric 296966338Seric6.50/6.22 93/04/01 297066338Seric Fixes to requeueing code to make it compute priority, nrcpts, 297166338Seric and the like properly. 297266338Seric 297366338Seric6.49/6.22 93/04/01 297466338Seric Diagnose incorrect privacy flags. Suggested by Bryan Costales 297566338Seric of ICSI. 297666338Seric Some ANSI C fixes. 297766338Seric Arrange to quote backslashes as well as other special characters 297866338Seric in the phrase part of a route-addr. 297966338Seric Some fixes to FallBackMX code suggested by Motonori Nakamura of 298066338Seric Kyoto University. 298166338Seric More vigorous zeroing of CurHostAddr to avoid logging of bogus 298266338Seric host addresses when you are actually just printing 298366338Seric information from the MCI structure; problem noted by 298466338Seric Michael Corrigan of U.C. San Diego. 298566338Seric Don't ignore rest of queue if any job is not runnable. This can 298666338Seric also cause an incorrect job to be lost. Fix from 298766338Seric Eric Wassenaar. 298866338Seric Always respond "quickly" to RCPT command; do alias expansion and 298966338Seric the like later. This also means that mail for lists that 299066338Seric have errors will be acccepted, and an error sent back 299166338Seric later. This is done by instantiating the queue file 299266338Seric and then immediately running and requeueing it. 299366338Seric 299466338Seric6.48/6.22 93/03/30 299566338Seric Fix incorrect diagnosis of infinite loop in ruleset. Problem noted 299666338Seric by several people. 299766338Seric Improve information printed when infinite loops are discovered. 299866338Seric Zero CurHostAddr to fix erroneous internet addresses in log when no 299966338Seric addresses can be bound. Pointed out by Motonori Nakamura 300066338Seric of Kyoto University. 300166338Seric "Probe" SMTP connections using RSET instead of NOOP "just in case". 300266338Seric Suggested by John Gardiner Myers of CMU. 300366338Seric Don't warn about -f if you are setting sender to yourself. 300466338Seric 300566338Seric6.47/6.22 93/03/29 300666338Seric Fix incompatible call to endmailer in smtpquit which causes core 300766338Seric dumps. Noted by Allan E Johannesen of WPI. 300866338Seric HPUX portability changes from Michael J. Corrigan of UC San Diego. 300966338Seric Require MAIL before RCPT command in srvrsmtp.c. This had been 301066338Seric intentional from the 821 draft days when the order wasn't 301166338Seric clear, but is silly now. 301266338Seric Fix bug in nis_magic routine that was initializing parameters 301366338Seric incorrectly. Fix from Takahiro Kanbe of Fuji Xerox 301466338Seric Information Systems Co., Ltd. 301566338Seric Change default for PrivacyFlags in conf.c to 0 -- since it always 301666338Seric "or"s in new values, there was no way to turn off the 301766338Seric AuthWarning stuff. 301866338Seric Add O option to set SMTP daemon options. 301966338Seric Add V option to set fallback MX host. This always sorts at lower 302066338Seric priority than anything it gets from the name server. It 302166338Seric should only be used for environments with very bad network 302266338Seric connectivity. Requested by several people. 302366338Seric Log sending info. It's not clear this is a good idea. 302466338Seric CONFIG: fix typo in mailertable code. Noted by Phil Brandenberger 302566338Seric of Swarthmore. 302666338Seric CONFIG: add confDAEMON_OPTIONS and confFALLBACK_MX to set options 302766338Seric O and V, respectively. 302866338Seric 302966338Seric6.46/6.21 93/03/26 303066338Seric Fix botch in server SMTP that broke transactions that did not 303166338Seric use HELO first (like MH). Fix from Michael Corrigan 303266338Seric of U.C. San Diego. 303366338Seric Fall back to other MX records if there is an error anywhere 303466338Seric in delivery (actually on MAIL or DATA -- RCPT is harder). 303566338Seric Suggested by John Gardiner Myers and Motonori Nakamura. 303666338Seric Revert to non-prototypes -- it turns out that our ANSI C 303766338Seric compiler is more forgiving than most others about 303866338Seric mixing prototyped extern declarations with non-prototyped 303966338Seric function definitions. 304066338Seric Fix a problem with multi-word class matching pointed out by 304166338Seric Neil Rickert. Given: 304266338Seric CX b a.b.c 304366338Seric R$+ $=X $+ $: $1 < $2 > $3 304466338Seric the input "user@a.b.c" failed instead of being properly 304566338Seric rewritten as "user@a.<b>.c". 304666338Seric Neil also convinced me that it was correct that $~ should match 304766338Seric only one token -- the problem is that it's always possible 304866338Seric to add another token, so $~ matches far too eagerly. 304966338Seric 305066338Seric6.45/6.21 93/03/25 305166338Seric Implement multi-word classes (properly!). 305266338Seric 305366338Seric6.44/6.21 93/03/25 305466338Seric Add X-Authentication-Warning: headers to clue users into possible 305566338Seric attempts to forge mail. This is on the authwarnings 305666338Seric privacy flag, but is the default. Suggested by Bryan 305766338Seric Costales of ICSI. 305866338Seric Pass default units for convtime in so they can be more reasonable. 305966338Seric Allow config files to always add a new Comments: header (i.e., 306066338Seric they will be added even if an old one already exists). 306166338Seric Suggested by Bryan Costales of ICSI. 306266338Seric Allow config files to delete an existing Return-Path: header. 306366338Seric These should only be added at final delivery. Suggested 306466338Seric by Bryan Costales of ICSI. 306566338Seric Some debugging additions. Suggested by Bryan Costales of ICSI. 306666338Seric Clean up logging of Family 0 addresses. Noted by David Muir 306766338Seric Sharnoff and others. 306866338Seric Add a "dequote" map class. This allows config files to strip 306966338Seric quotes off of addresses. Note that this is not a builtin 307066338Seric map, just a class -- so you have to define the map 307166338Seric using the K line. 307266338Seric Fix a bug in the queueup() loop getting a locked tf where in 307366338Seric very odd cases it can fall off the bottom and core dump. 307466338Seric Of course, it was P{r Emanuelsson who found it.... 307566338Seric Open a new transcript when splitting an envelope. Problem found 307666338Seric by Allan E Johannesen of WPI. 307766338Seric Improved error output in endmailer if the mailer core dumps. 307866338Seric CONFIG: Fix typo in UUCP mailer definition. 307966338Seric CONFIG: Default several of the new options on: eight bit input, 308066338Seric privacy flags set to "authwarnings", and message warning 308166338Seric set to 4h. 308266338Seric CONFIG: Use dequote map. 308366338Seric 308466338Seric6.43/6.20 93/03/23 308566338Seric Fix problem with assumption of an sa_len field in a generic 308666338Seric sockaddr -- it turns out that most vendors haven't 308766338Seric picked up this (very important) fix. 308866338Seric Change compilation flags for daemon code -- select one or both 308966338Seric of NETINET or NETISO, but don't ever set DAEMON manually. 309066338Seric CONFIG: add FEATURE(mailertable) to do IDA-style mailertables. 309166338Seric 309266338Seric6.42/6.19 93/03/19 309366338Seric Use Postmaster as default fallback return address, not root. 309466338Seric POSIX changes for file descriptor handling. 309566338Seric Diagnose errors writing new queue file. 309666338Seric If you change the owner using an owner- alias, also change the 309766338Seric error mode to EM_MAIL so that errors don't get dropped 309866338Seric into an inappropriate directory. Problem noted by 309966338Seric Allan E Johannesen of WPI. 310066338Seric If you are su'ed to root, send email as who you really are, not 310166338Seric as root. From Brian Kantor of U.C. San Diego. 310266338Seric Allow warning messages to be sent after a configurable interval 310366338Seric has passed without delivery. The message is sent only 310466338Seric once per envelope. This changes the format of the qf 310566338Seric file to have an F line, and the format of the T option 310666338Seric to accept take the format "return/warn" (both intervals). 310766338Seric Don't force all local names to lower case -- this was left over 310866338Seric from the wierd handling of case mapping on aliases. It 310966338Seric is now driven (as expected) by the "u" mailer flag. 311066338Seric Problem noted by P{r Emanuelsson. 311166338Seric Fix problem that caused headers on returned email to be trashed; 311266338Seric they were getting freed, but are still accessible via 311366338Seric BlankEnvelope. 311466338Seric Fix problem that caused bogus ids to be created on returned 311566338Seric mail. 311666338Seric Add support for ISO and other non-INET networking. This is by 311766338Seric no means finished yet. This does assume a lot of other 311866338Seric system support, like a version of gethostbyname that 311966338Seric returns non-AF_INET addresses. 312066338Seric CONFIG: change default on prog mailer to keep upper case in 312166338Seric user names (i.e., in the program command line). 312266338Seric CONFIG: strip trailing dots off of hosts in uucp mailer before 312366338Seric convert to bang format. 312466338Seric CONFIG: create new "relay" mailer for $R (LOCAL_RELAY) and $H 312566338Seric (MAIL_HUB) delivery that doesn't add local domain. Note 312666338Seric that this violates 821, but is probably "more correct" 312766338Seric for what we are trying to do. Problem pointed out by 312866338Seric Michael Graff of Iowa State. 312966338Seric 313066338Seric6.41/6.18 93/03/18 313166338Seric Clean up unnecessary creates of queue ids (i.e., empty qf files) 313266338Seric when not needed, such as when starting up an SMTP 313366338Seric connection. 313466338Seric Fix problem where split envelopes aren't instantiated in the queue. 313566338Seric This is quite a serious bug. 313666338Seric Owner- aliases had problems with leading spaces causing a 313766338Seric premature delimitation. 313866338Seric 313966338Seric6.40/6.18 93/03/18 314066338Seric Have ending 250 (after DATA) include the id; suggested by 314166338Seric Brian Kantor of UC San Diego. 314266338Seric Add logging on envelope splitting. 314366338Seric Change queue ids to have one more letter encoding the hour of 314466338Seric the day so that during a single day there is a greater 314566338Seric likelihood of uniqueness; requested by Brian Kantor. 314666338Seric 314766338Seric6.39/6.18 93/03/18 314866338Seric Fix minor compile problem if LOCKF is defined. 314966338Seric Define size of tobuf in conf.h. Observed by Toshinari Takahashi 315066338Seric of Toshiba. 315166338Seric Restore e_sender -- this is equivalent to e_from.q_paddr without 315266338Seric decorations such as angle brackets and comments. 315366338Seric OSF/1 on Alpha changes from Allan E Johannesen of WPI. 315466338Seric CONFIG: fix typo in S3 for list syntax (;: => :;). Thanks to 315566338Seric Christopher Hoover for noting the problem. 315666338Seric 315766338Seric6.38/6.17 93/03/17 315866338Seric Pass envelope to disconnect to avoid another use of CurEnv, which 315966338Seric can apparently end up being null at inopportune times. 316066338Seric Log "received from" as "relay=" for consistency (suggested by 316166338Seric John Gardiner Myers). 316266338Seric Fix major bug in header handling: if no From: line existed in 316366338Seric the header (so sendmail inserts one), and the sender is 316466338Seric an alias that has an owner, the From: line shows the 316566338Seric owner (as well as the envelope). Fixed by early binding 316666338Seric the headers (which will change debugging output). 316766338Seric HPUX portability patches from Michael J. Corrigan of UC San Diego. 316866338Seric Some attempts to adapt better to out of open file conditions. 316966338Seric Some changes to ctladdr handling in queue files. 317066338Seric 317166338Seric6.37/6.17 93/03/16 317266338Seric MAJOR CHANGE: delete e_sender and e_returnpath (why are these 317366338Seric different from e_from?) and $< macro. 317466338Seric Log correct IP address in relay= field even if the connection 317566338Seric times out. 317666338Seric Log "received from [RESPONSE]" on EF_RESPONSE messages (from 317766338Seric John Gardiner Myers). 317866338Seric Fixes to SysExMsg logging (sometimes just got "message: %s" 317966338Seric instead of "message: error message"), noted by Eric 318066338Seric Wassenaar. Also reported by Motonori Nakamura. 318166338Seric Improvements to MX piggybacking code, from Motonori Nakamura. 318266338Seric Fix case where CurHostName points to an auto variable that has 318366338Seric been deallocated (from Motonori Nakamura). 318466338Seric Fix bug causing newlines to be included in aliases if option 318566338Seric "n" (check alias RHS) is set; bug noted by David Muir 318666338Seric Sharnoff. 318766338Seric Fix problem causing user names that should be mapped to lower 318866338Seric case to not be mapped if they are sent during a queue 318966338Seric run. This greatly simplifies the case mapping code. 319066338Seric Problem noted by Allan E Johannesen of WPI. 319166338Seric Don't do recipient address rewriting in buildaddr. This 319266338Seric improperly did recipient rewriting on sender addresses, 319366338Seric and just seems bogus in general -- but the change could 319466338Seric break some .cf files. 319566338Seric Pass TZ envariable to child processes for System V. 319666338Seric CONFIG: allow LOCAL_RULE_1 and LOCAL_RULE_2 if you want to 319766338Seric define those rulesets. 319866338Seric KNOWN PROBLEM: I have seen some problems on SunOS that causes 319966338Seric the User Data Base to give errors on some addresses. I 320066338Seric have tracked the problem back at least as far as 93.02.15 320166338Seric (version 6.22). Running with debugging on makes it 320266338Seric go away, so I conclude that it is referencing uninitialized 320366338Seric stack data. I haven't been able to track this down yet. 320466338Seric 320566338Seric6.36/6.16 93/03/08 320666338Seric Allow local mailer to specify $@host -- this lets you assign the 320766338Seric "foo" part of jgm+foo to $h for passing in to the local 320866338Seric mailer. 320966338Seric Additional debug printing in getcanonname (show query type). 321066338Seric Don't add the e_fromdomain on sender addresses -- this interacts 321166338Seric wierdly with the owner- code. 321266338Seric Improve delivery logging to not log obvious or meaningless stuff. 321366338Seric Include numeric IP address in Received: lines per RFC 1123 section 321466338Seric 5.2.8. 321566338Seric Fixed a bug in checking stat() return value if restrictmailq is 321666338Seric set. Also, check the entire group set instead of just the 321766338Seric primary group. Both from John Gardiner Myers. 321866338Seric Don't have usrerr automatically print errno, since this is often 321966338Seric misleading. 322066338Seric Use transienterror() in makeconnection after connect() fails and 322166338Seric in openmailer after execve() fails (from Eric Wassenaar). 322266338Seric Also moved transienterror() from util.c to conf.c. 322366338Seric Clean up from= logging on response messages. 322466338Seric Undo patch allowing prescan to return a null vector -- it breaks 322566338Seric too many things. 322666338Seric Config: FEATURE(notsticky) lets you use UDB for everything coming 322766338Seric in to the machine, even if it is specifically targetted 322866338Seric to this machine. Without it, UDB is bypassed if the user 322966338Seric name is fully qualified. 323066338Seric Config: fix another minor botch with <> (local mailer wasn't 323166338Seric mapping them properly). 323266338Seric 323366338Seric6.35/6.15 93/03/05 323466338Seric Fix getrealhostname to return null if sinlen <= 0 -- this can 323566338Seric occur if stdin is a pipe. 323666338Seric Avoid infinite loop in getcanonname if name server return 323766338Seric NO_DATA (for example). 323866338Seric Config: avoid having C flag qualify list syntax and error syntax. 323966338Seric 324066338Seric6.34/6.14 93/03/05 324166338Seric Fix logging in deliver to not pass too many parameters to Ultrix 324266338Seric versions of syslog. 324366338Seric Don't write the pid file until after the daemon has actually 324466338Seric opened and conditioned the connection. 324566338Seric Consider addresses "different" if their q_uids differ (so that 324666338Seric two users forwarding to the same program will be seen 324766338Seric as different, rather than the same). 324866338Seric Fix problem with bad parameters in main() -- they set ExitStat 324966338Seric but don't exit. 325066338Seric Fix null pointer references through RealHostName -- painfully 325166338Seric discovered by Allan E Johannesen of WPI. 325266338Seric Fix bug causing user@@localhost to core dump (yuch). 325366338Seric Config: don't put two @host.dom.ain on users in $=E in SMTP 325466338Seric mailer. Also, catch user@ (no host) in ruleset 0. 325566338Seric 325666338Seric6.33/6.13 93/03/03 325766338Seric Config: add confCW_FILE as the name of the cw configuration file 325866338Seric (defaults to /etc/sendmail.cw). From P{r Emanuelsson. 325966338Seric Allow prescan to return a pointer to an empty list -- this is 326066338Seric not an error. Also, clean up error reporting to avoid 326166338Seric double errors (prescan reports once, then the caller 326266338Seric reports again). 326366338Seric Changes to avoid trusting T_ANY queries -- run them, but if you 326466338Seric don't get the info you expected, do T_A and T_MX queries 326566338Seric anyhow. This also fixes an oversight where _res.options 326666338Seric bits were being ignored. 326766338Seric If PRIV_NOVRFY is set, use 252 response code instead of 502 per 326866338Seric RFC 1123 section 5.2.3. It's not 100% clear that this 326966338Seric is correct, but it probably works better with stupid 327066338Seric mailers that do a VRFY and only check the first digit. 327166338Seric 327266338Seric6.32/6.12 93/03/02 327366338Seric Fix uninitialized variable "protocol" in smtp code. 327466338Seric Include <unistd.h> in sendmail.h -- move towards POSIX/ANSI. 327566338Seric Additional hooks for RFC 1427 (ESMTP SIZE extension). This 327666338Seric includes requiring that enoughspace() know the system 327766338Seric block size, which will undoubtedly break most ports. 327866338Seric Trace flag 19 in use for srvrsmtp.c. 327966338Seric Additional logging -- notably the sending mailer name. This 328066338Seric also changes the delivery logging to strict field=value 328166338Seric syntax. 328266338Seric Fix some problems with messages getting sent even to addresses 328366338Seric that had been marked bad -- from Eric Wassenaar. 328466338Seric More WIDE changes: accept host name inside [...] as non-MXed 328566338Seric host. This is intended ONLY for use inside firewalled 328666338Seric environments, where the MX points at the gateway. 328766338Seric Change .cf file conventions so that mapping for <> addresses 328866338Seric don't have an @ in them (to avoid confusing the C mailer 328966338Seric flag). Pointed out by Neil Rickert. 329066338Seric Config extensions for Sam Leffler's FlexFAX software. 329166338Seric 329266338Seric6.31/6.10 93/02/28 329366338Seric Fix some more bugs in alias owner code -- there were some wierd 329466338Seric cases where an error in a non-aliased name would override 329566338Seric the return info in an aliased name with an owner. 329666338Seric Changes from WIDE Project, forwarded to me by Motonori Nakamura: 329766338Seric Log actual delivery host (after MX et al); from 329866338Seric yasuhiro@dcl.co.jp. 329966338Seric Log daemon startup. 330066338Seric Deliver Postmaster copies without a body. 330166338Seric Better logging of SMTP senders. 330266338Seric Send all program email as daemon even when local. 330366338Seric As requested in various forms from many people, accept -qIstring 330466338Seric to limit queue runs to jobs with queue-id matching string. 330566338Seric Similarly for -qRstring for recipients, -qSstring for 330666338Seric senders. 330766338Seric Initial hooks for ESMTP support (see RFC 1425). 330866338Seric Fixed a syntax error in the UUCP mailer specification that caused 330966338Seric core dumps on startup. 331066338Seric Check for missing A= or P= arguments in mailer definitions. 331166338Seric 331266338Seric6.30/6.10 93/02/27 331366338Seric Require FROZENCONFIG compilation flag to include frozen 331466338Seric configuration code. Frozen configuration is really 331566338Seric not a very good idea any more, particularly in shared 331666338Seric library environments. 331766338Seric Do better checking of errno after opens of :include: and .forward 331866338Seric files to defer delivery on network and other transient 331966338Seric errors. Suggestion from Craig Everhart. 332066338Seric Fix minor botch in read timeout macro processing. 332166338Seric Add FEATURE(nouucp) to config files for sites that know absolutely 332266338Seric nothing about UUCP. 332366338Seric Add built cf files to distribution tape and clarify how to build 332466338Seric them if you don't have the Berkeley make. 332566338Seric Some sizeof(long) portability changes for the Alpha, from Allan 332666338Seric E Johannesen. 332766338Seric Add "restrictmailq" privacy flag -- if set, only people in the same 332866338Seric group as your queue directory can print the queue. If you 332966338Seric set this, be sure you also restrict access to log files.... 333066338Seric Fix another bug in owner-list stuff that can cause data files to 333166338Seric be "lost". 333266338Seric Fix a bug with queue runs that cause forwards to yourself to go 333366338Seric into alias/forwarding loops. I'm still iffy about this 333466338Seric fix. 333566338Seric Fix from Eric Wassenaar for suppression of return message code. 333666338Seric 333766338Seric6.29/6.9 93/02/24 333866338Seric Fix yet another problem in alias owner code -- put the wrong return 333966338Seric address on the enclosed return-to-sender letter. 334066338Seric 334166338Seric6.28/6.9 93/02/24 334266338Seric Fix botch in alias owner code that caused it to not operate if the 334366338Seric error was detected locally. 334466338Seric 334566338Seric6.27/6.9 93/02/24 334666338Seric M_LOCAL => M_LOCALMAILER to avoid conflict with Ultrix include 334766338Seric file <sys/mount.h>. 334866338Seric Miscellaneous bug fixes from Eric Wassenaar: 334966338Seric sendmail -bv -t logs the from line even though in verify 335066338Seric mode only. 335166338Seric sendmail -v can go into queue mode if shouldqueue returns 335266338Seric TRUE. 335366338Seric Add route-addr pruning per RFC 1123 section 5.3.3. This can be 335466338Seric disabled using the "R" option. 335566338Seric Delete (always undocumented) -R flag (save original recipients); 335666338Seric there are ways to syslog(3) these now. 335766338Seric Clean up SMTP reply codes -- specify them as needed in the code, 335866338Seric instead of in conf.c -- this was needed during the NCP to 335966338Seric TCP transition, but seems silly now. This also changes 336066338Seric parameters to message and nmessage. 336166338Seric Have mailstats read the .cf file to find the sendmail.st file and 336266338Seric get text versions of mailer names. An initial version of 336366338Seric this code was provided by Tuominen Keijo (although the 336466338Seric comments indicate the good bits were written by "E.V."). 336566338Seric Add yet more System V compatibility hacks. 336666338Seric Fix bug in VRFY code (assumes everything must be a local user). 336766338Seric Allow specification of any of the hard-wired pathnames in the 336866338Seric Makefile. 336966338Seric Delete concept of "trusted users" -- this really didn't provide 337066338Seric any security anyway, and caused some problems. 337166338Seric Delete last vestige of support for the word "at" as an equivalent 337266338Seric to the character "@". 337366338Seric Propagate owner-foo alias information into the envelope sender. 337466338Seric Based on code from John Gardiner Myers. This is a major 337566338Seric semantic change -- beware! 337666338Seric Allow $@ on LHS to indicate "match zero" -- this is used to match 337766338Seric the null expression. 337866338Seric 337966338Seric6.26/6.8 93/02/21 338066338Seric Don't "lose" queue runs. Very important fix from (who else?) 338166338Seric Eric Wassenaar. 338266338Seric Completely reset state on RSET command -- from Eric Wassenaar. 338366338Seric Send error messages and return receipts using an envelope sender 338466338Seric of <> regardless of the setting of $n. Rewriting rules 338566338Seric can undo this if they feel the necessity, as might be 338666338Seric needed for networks that don't understand the syntax. 338766338Seric This is permitted by RFC 821 section 3.6 and required by 338866338Seric RFC 1123 section 5.3.3. THIS REQUIRES VERSION 4 CONFIG 338966338Seric FILES because the rulesets must be able to parse <> 339066338Seric properly. 339166338Seric Don't ever send error messages to "<>" -- they will get sent to 339266338Seric the local postmaster or dumped in /usr/tmp/dead.letter 339366338Seric instead. Per RFC 1123 section 5.3.3. 339466338Seric Explicitly check for email to yourself as a dotted quad. You 339566338Seric have to call $[ [ ... ] $] to get this. 339666338Seric Up the message timeout to five days per RFC 1123 section 5.3.1.1. 339766338Seric Make all read timeouts individually configurable, as strongly 339866338Seric recommended by RFC 1123 section 5.3.2. 339966338Seric Use f_bavail (blocks available to regular users) instead of f_bfree 340066338Seric (blocks available to superuser) in free block checks. 340166338Seric Change $d macro to be the current time, not the origination time, 340266338Seric since this is consistent with how it is used now. 340366338Seric Generalization of enoughspace from Eric Wassenaar covering 340466338Seric SGI, Apollo, HPUX, Ultrix, and SunOS. 340566338Seric Ignore process group signals -- some front ends can do this if 340666338Seric you kill a window too quickly. From Eric Wassenaar. 340766338Seric Change umask to 022. 340866338Seric 340966338Seric6.25/6.8 93/02/20 341066338Seric Close all cached connections before calling mailers and after 341166338Seric forking for delivery (caused double closes which resulted 341266338Seric in false errors). 341366338Seric Add FEATURE(redirect) in config files -- this allows you to alias 341466338Seric old addresses to a pointer to the new address that will 341566338Seric give a 551 error message, but not deliver the mail. 341666338Seric Some code changes to make the 551 errors look pretty. 341766338Seric Names of M4 program paths in config files have changed -- they 341866338Seric are all XXX_MAILER_PATH now, to match XXX_MAILER_FLAGS. 341966338Seric Fix a bug in the QSELFREF code having to do with empty .forward 342066338Seric files, reported by Eric Wassenaar. 342166338Seric Add option "p" (privacy flags); this allows you to tune how 342266338Seric picky the SMTP server will be. This also adds the 342366338Seric confPRIVACY_FLAGS M4 macro in the config files. 342466338Seric Add option "b" (minimum blocks free). If there are fewer than 342566338Seric this number of blocks free on the filesystem containing 342666338Seric the queue directory, the SMTP MAIL command will return 342766338Seric a 452 response and ask you to try again later. This 342866338Seric also adds the confMIN_FREE_BLOCKS M4 macro in the config 342966338Seric files. 343066338Seric Made VRFY just verify (doesn't expand aliases and .forward files); 343166338Seric EXPN does full expansion. RCPT in queue-only mode also 343266338Seric doesn't chase aliases and .forward. 343366338Seric 343466338Seric6.24/6.7 93/02/19 343566338Seric Increase the number of domain search entries in domain.c to allow 343666338Seric for the extra "" entry indicating the root domain. 343766338Seric Reported by Motonori Nakamura of Kyoto U. 343866338Seric Add a "SMART_HOST" in the configs for UUCP-connected sites that 343966338Seric want to forward all mail with extra "@"s to that site. 344066338Seric Also allows SMART_HOST, LOCAL_RELAY, and MAIL_HUB to 344166338Seric be specified as ``mailer:hostname'' to use an alternate 344266338Seric mailer. 344366338Seric Clarified and updated some wording in the Operations Guide. 344466338Seric Add the "c" mailer flag -- this suppresses all comment parts of 344566338Seric addresses (requested by John Curran of NEARnet). 344666338Seric Have -v print prompts in -bt mode even if stdin is not a terminal 344766338Seric (default behaviour is to be silent if not reading from 344866338Seric a terminal). Suggested by Bryan Costales, ICSI. 344966338Seric Move the metacharacters from C0 space (\001-\037) into C1 space 345066338Seric (\201-\237). This also fixes a bunch of potential bugs 345166338Seric with G1 characters (\240-\276) in headers relating to 345266338Seric negative numbers passed to isspace() et al. 345366338Seric Add YP_LAST_MODIFIED and YP_MASTER_NAME to DBM version of alias 345466338Seric database if YPCOMPAT is #defined. Enhancement from 345566338Seric Takahiro Kanbe of Fuji Xerox Information Systems Co., Ltd. 345666338Seric Add "list" Precedence (-30); this can be used with old sendmails 345766338Seric which will map to precedence 0 (which will return error 345866338Seric messages). Suggested by Stephen R. van den Berg. 345966338Seric Many bug fixes from Eric Wassenaar of the National Institute for 346066338Seric Nuclear and High-Energy Physics, Amsterdam: 346166338Seric Clear timeouts properly on open failures in include(). 346266338Seric Don't dereference through NULL if no home directory found. 346366338Seric Re-establish SIGCHLD signal on System 5 in reapchild(). 346466338Seric Avoid NULL pointer reference on -pFOO flag. 346566338Seric Properly handle backslash escapes in comments. 346666338Seric Correctly check reply status on SMTP NOOP command. 346766338Seric Properly save SMTP error message if peer gives 346866338Seric "Service Shutting Down" message. 346966338Seric Avoid writing to the transcript if it couldn't be opened. 347066338Seric Signal errors in SMTP children to parent properly. 347166338Seric Handle self references in a list more globally (include a 347266338Seric QSELFREF bit in the address flags). This enhancement 347366338Seric was suggested by Eric Wassenaar. 347466338Seric Use initgroups() in hpux, even though it's System-V based. The 347566338Seric HASINITGROUPS compile flag can set this on other systems. 347666338Seric This HPUX behaviour was pointed out by Eric Wassenaar. 347766338Seric 347866338Seric6.23/6.6 93/02/16 347966338Seric Clean up handling of LogLevel to make it easier to figure out 348066338Seric what's on what level. 348166338Seric Change log levels to have some consistency: 348266338Seric 1 serious system failures, security problems 348366338Seric 2 lost communications, protocol failures 348466338Seric 3 other serious failures 348566338Seric 4 minor errors 348666338Seric 5 message collection 348766338Seric 6 vrfy logging, creation of return-to-sender 348866338Seric 7 delivery failures 348966338Seric 8 delivery successes 349066338Seric 9 delivery tempfails (queue ups) 349166338Seric 10 database expansion 349266338Seric >64 debugging 349366338Seric Allow IDA-style separated processing on S= and R= in Mailer 349466338Seric definition lines. Note that rulesets 1 and 2 are 349566338Seric still used for both addresses as before. Bruce Lilly 349666338Seric gave a convincing argument that RFC976 insists on 349766338Seric this behaviour. 349866338Seric Added some time zones to arpatounix -- they may not be in the 349966338Seric standards, but they are in use. However, I may delete 350066338Seric arpatounix entirely -- there appears to be no reason 350166338Seric for it to exist. 350266338Seric Change to UUCP mailer (in cf directory) to try to do a saner job. 350366338Seric I'm still not certain about this mailer in general. 350466338Seric 350566338Seric6.22/6.5 93/02/15 350666338Seric Fix bug that prevents saving letters in ~/dead.letter. 350766338Seric Don't add angle brackets in VRFY command if angle brackets already 350866338Seric exist in the address. 350966338Seric Fix bogus error message in udbexpand. 351066338Seric Null terminate host buffers in buildaddr (broken in 6.21) -- 351166338Seric IMPORTANT FIX!! 351266338Seric 351366338Seric6.21/6.5 93/02/15 351466338Seric Fix another incorrect error message in alias.c, found by Azuma 351566338Seric Okamoto. 351666338Seric Fix a couple of problems in the more-configurable config files, 351766338Seric found by Tom Ivar Helbekkmo. 351866338Seric Fix problem with quoted :include: entries. 351966338Seric Don't duplicate the filename on verbose printing of .forward and 352066338Seric :include: contents. 352166338Seric Extend size of prescan buffer (to allow bigger addresses). Also, 352266338Seric detect some buffer overflows. 352366338Seric Log user SMTP protocol errors (log level 4). 352466338Seric 352566338Seric6.20/6.4 93/02/14 352666338Seric Fix another problem in the MCI state machine caused when there 352766338Seric were errors generated from the other end to commands 352866338Seric other than RCPT. 352966338Seric 353066338Seric6.19/6.4 93/02/14 353166338Seric Include load average support for DEC Alpha running OSF/1. 353266338Seric Fix multiple-response problem with errors in MAIL From: line. 353366338Seric Fix SMTP reply codes for invalid address syntaxes (give 501; 353466338Seric never give multiple error messages for a single message). 353566338Seric Fix problem where a cached connection timeout rejects all 353666338Seric later connects to that host. 353766338Seric Fix incorrect error message if alias.c is compiled with DBM only. 353866338Seric Additional changes to fix nested conditionals (from Bruce Lilly). 353966338Seric Recover more gracefully from operating system failures, particularly 354066338Seric NULL returns from openmailer (from Noritoshi Demizu, 354166338Seric OMRON Corporation). 354266338Seric Log forward, alias, and userdb expand operations on log level 10; 354366338Seric concept suggested by P{r (Pell) Emanuelsson. 354466338Seric Changes for HPUX 8.07 compatibility. 354566338Seric 354666338Seric6.18/6.4 93/02/12 354766338Seric Allow any config option to be set using an M4 define. 354866338Seric Change UNAME compile flag to HASUNAME for IDA compatibility 354966338Seric (besides, it's a better name). 355066338Seric Note in README that on SunOS it must be linked -Bstatic. 355166338Seric Fairly major change in domain.c to handle wildcard MX records 355266338Seric more rationally. NOTE: the "w" option (no wildcard MX 355366338Seric records match local domain) has been eliminated. 355466338Seric Fix some unset variable references pointed out by Bruce Lilly. 355566338Seric Fix host name in process titles when using cached connection. 355666338Seric 355766338Seric6.17/6.3 93/01/28 355866338Seric Fix System 5 compatibility changes to be compatible with the rest 355966338Seric of the world. 356066338Seric 356166338Seric6.16/6.3 93/01/28 356266338Seric Experimental fix for problem handling errors in the SMTP 356366338Seric protocol in conjunction with connection caching. 356466338Seric System 5 compatibility changes. 356566338Seric 356666338Seric6.15/6.3 93/01/26 356766338Seric Fix a bug that causes local mail delivered using -odq to be 356866338Seric eliminated as a duplicate (because it matched the 356966338Seric ctladdr, now passed in as a C line). These changes 357066338Seric are pretty tricky...... 357166338Seric 357266338Seric6.14/6.3 93/01/25 357366338Seric Add debugging for some MCI errors. 357466338Seric 357566338Seric6.13/6.3 93/01/22 357666338Seric Fix -e compatibility flag to take a value. 357766338Seric Fix a couple of minor compilation warnings on Sun cc. 357866338Seric Improve error messages in a few cases to be more self-explanatory. 357966338Seric 358066338Seric6.12/6.3 93/01/21 358166338Seric Fix yet-another problem with environment handling, pointed out 358266338Seric by Yoshitaka Tokugawa and Tom Ivar Helbekkmo. 358366338Seric Some heuristics to try to limit resource exhaustion problems 358466338Seric if a downstream host has been down for a long time. 358566338Seric Fix problem with incorrect host name being logged in "Connection 358666338Seric timed out" messages (from Tom Ivar Helbekkmo). 358766338Seric Fix some ANSI C problems (from Takahiro Kanbe). 358866338Seric Properly log message sender on returned mail during queue run. 358966338Seric Count number of recipients properly. 359066338Seric Fix a problem in yp map code. 359166338Seric Diagnose "message timed out" (from Motonori Nakamura). 359266338Seric 359366338Seric6.11/6.3 93/01/20 359466338Seric Fix problem with address delimitor inside quotes. 359566338Seric Define $k and $=k to be the UUCP name (from the uname call) 359666338Seric based on code from Bruce Lilly. 359766338Seric 359866338Seric6.10/6.2 93/01/18 359966338Seric Implement arpatounix (largely code from Bruce Lilly). 360066338Seric Log more info (suggested by John Myers). 360166338Seric Allow nested $?...$|...$. (inspired by code from Bruce Lilly of 360266338Seric Sony US). 360366338Seric POSIX compatibility (noted by Keith Bostic). 360466338Seric Handle SMTP MAIL command errors properly (urged by several people, 360566338Seric notably John Myers of CMU). 360666338Seric Do early diagnosis of .cf errors (notably referencing a RHS 360766338Seric substitution that isn't on the LHS). 360866338Seric Adjust checkpointing to better handle batched recipients, suggested 360966338Seric by John Myers. 361066338Seric Fix miscellaneous bugs. 361166338Seric (config files:) Implement MAIL_HUB for all local mail (to handle 361266338Seric NFS-mounted directories) as urged by Tom Ivar Helbekkmo 361366338Seric of the Norwegian School of Economics. 361466338Seric 361566338Seric6.9/6.1 93/01/13 361666338Seric Environment handling simplification/bug fix -- child processes 361766338Seric get a minimal, fixed environment. This avoids different 361866338Seric behaviour in queue runs. 361966338Seric Handle commas inside comments properly. 362066338Seric Properly limit large messages submitted in -obq mode. 362166338Seric 362266338Seric6.8/6.1 93/01/10 362366338Seric Check mtime of thaw file against .cf and sendmail binary, based on 362466338Seric code from John Myers. 362566338Seric 362666338Seric6.7/6.1 93/01/10 362766338Seric MX piggybacking, based on code from John Myers@CMU. 362866338Seric Allow checkcompat to return -1 to mean tempfail. 362966338Seric Bug fix in m_mno computation. 363066338Seric 363166338Seric6.6/6.1 93/01/09 363266338Seric Tuning of queueing functions as recommended by John Gardiner Myers. 363366338Seric Return mail headers (no body) on messages with negative precedence. 363466338Seric Minor other bug fixes. 363566338Seric 363666338Seric6.5/6.1 93/01/03 363766338Seric Fix botch causing queued headers to have ?XX? prefixes. 363866338Seric 363966338Seric6.4/6.1 93/01/02 364066338Seric Changes to recognize special mailer types (e.g., file) early. 364166338Seric 364266338Seric6.3/6.1 93/01/01 364366338Seric Pass timeouts to sfgets. 364466338Seric Check for control characters in addresses. 364566338Seric Fixed deferred error reporting. 364666338Seric Report duplicate aliases. 364766338Seric Handle mixed case recursive aliases. 364866338Seric Misc bug fixes. 364966338Seric 365066338Seric6.2/6.1 92/12/30 365166338Seric Put return-receipt-to on a conf.c flag (but don't set it). 365266338Seric Fix minor syslog problem. 3653