*** KNOWNBUGS.OLD Wed Jan 12 06:00:44 1994 --- KNOWNBUGS Sun Mar 13 10:10:15 1994 *************** *** 1,25 **** K N O W N B U G S I N S E N D M A I L ! (for 8.6.5) The following are bugs or deficiencies in sendmail that I am aware of but which have not been fixed in the current release. You probably want to get the most up to date version of this from FTP.CS.Berkeley.EDU ! in /ucb/sendmail/KNOWNBUGS. ! This list is not guaranteed to be complete, especially for fixed bugs. ! Many bugs are reported and fixed without ever making it as far as this ! file. See the file RELEASE_NOTES (in the root directory of the sendmail ! distribution) for more details. - +----------------------------------------------+ - | THE FOLLOWING PROBLEMS ARE STILL OUTSTANDING | - +----------------------------------------------+ - - * Null bytes are not handled properly. Sendmail should handle full binary data. As it stands, it handles --- 1,19 ---- K N O W N B U G S I N S E N D M A I L ! (for 8.6.6) The following are bugs or deficiencies in sendmail that I am aware of but which have not been fixed in the current release. You probably want to get the most up to date version of this from FTP.CS.Berkeley.EDU ! in /ucb/sendmail/KNOWNBUGS. For descriptions of bugs that have been ! fixed, see the file RELEASE_NOTES (in the root directory of the sendmail ! distribution). ! This list is not guaranteed to be complete. * Null bytes are not handled properly. Sendmail should handle full binary data. As it stands, it handles *************** *** 125,171 **** You can eliminate this by adding commas at the end of each line of the :include: file. ! +-------------------------------------------+ ! | THE FOLLOWING PROBLEMS ARE FIXED IN 8.6.5 | ! +-------------------------------------------+ ! * Route-addrs missing angle brackets. ! ! There are cases where route-addrs do not get angle brackets around them, ! such as in the "-r" flag on mailers or in the From_ line created when ! mailing to files. ! ! * No "exposed users" in "nullrelay" configuration. ! ! The "nullrelay" configuration hides all addresses behind the mail ! hub name. Some sites might prefer to expose some names such as ! root. This information is always available in Received: lines. ! ! * owner-* alias that uses :include: broken. ! ! If you have aliases set up as: ! ! owner-listname: :include:/some/file ! ! sendmail will break because it considers this a "sender address", ! which is not permitted to use the :include: syntax. The easiest ! workaround is to change this to: ! ! owner-listname: :include:/some/file, ! ! (note the trailing comma); a somewhat cleaner solution is to use: ! ! owner-listname: listname-request ! listname-request: :include:/some/file ! ! * "SYSERR: openmailer(local): fd 1 not open" message ! ! File descriptor 1 (standard output) should not be closed during normal ! processing. This is checked periodically, and sometimes this condition ! is found and this message is produced. Sendmail repairs the problem, ! and the mail is still delivered, but I still don't know why it happens. ! (There was a bug that was fixed in 8.6.beta.13 that might be related, ! but I think this bug still exists.) ! ! (Version 8.15, last updated 1/12/94) --- 119,131 ---- You can eliminate this by adding commas at the end of each line of the :include: file. + * Excessive mailing list nesting can run out of file descriptors. ! If you have a mailing list that includes lots of other mailing ! lists, each of which has a separate owner, you can run out of ! file descriptors. Each mailing list with a separate owner uses ! one open file descriptor (prior to 8.6.6 it was three open ! file descriptors per list). This is particularly egregious if ! you have your connection cache set to be large. ! (Version 8.17, last updated 3/13/94) *** Makefile.OLD Sat Sep 25 08:37:04 1993 --- Makefile Sun Feb 27 09:01:37 1994 *************** *** 1,22 **** ! # @(#)Makefile 8.2 (Berkeley) 9/25/93 SUBDIR= src mailstats makemap praliases VER= XX tar: Files.base Files.cf Files.misc Files.xdoc (cd src; ${MAKE}) (cd doc; PRINTER=ps ${MAKE}) (cd cf/cf; ${MAKE}) ! pax -w -x tar -L -f sendmail.${VER}.base.tar `cat Files.base` compress sendmail.${VER}.base.tar ! pax -w -x tar -L -f sendmail.${VER}.cf.tar `cat Files.cf` compress sendmail.${VER}.cf.tar ! pax -w -x tar -L -f sendmail.${VER}.misc.tar `cat Files.misc` compress sendmail.${VER}.misc.tar ! pax -w -x tar -L -f sendmail.${VER}.xdoc.tar `cat Files.xdoc` compress sendmail.${VER}.xdoc.tar ftp: sendmail.${VER}.base.tar.Z sendmail.${VER}.cf.tar.Z sendmail.${VER}.misc.tar.Z sendmail.${VER}.xdoc.tar.Z ! rcp sendmail.${VER}.*.tar.Z RELEASE_NOTES barad-dur:/disks/barad-dur/ftp/sendmail/. .include --- 1,24 ---- ! # @(#)Makefile 8.3 (Berkeley) 2/27/94 SUBDIR= src mailstats makemap praliases + FTPDIR= barad-dur:/disks/barad-dur/ftp/sendmail/. VER= XX tar: Files.base Files.cf Files.misc Files.xdoc (cd src; ${MAKE}) (cd doc; PRINTER=ps ${MAKE}) + (cd doc; chmod 444 op/op.ps intro/intro.ps usenix/usenix.ps) (cd cf/cf; ${MAKE}) ! pax -w -x tar -L -f sendmail.${VER}.base.tar `grep -v ^# Files.base` compress sendmail.${VER}.base.tar ! pax -w -x tar -L -f sendmail.${VER}.cf.tar `grep -v ^# Files.cf` compress sendmail.${VER}.cf.tar ! pax -w -x tar -L -f sendmail.${VER}.misc.tar `grep -v ^# Files.misc` compress sendmail.${VER}.misc.tar ! pax -w -x tar -L -f sendmail.${VER}.xdoc.tar `grep -v ^# Files.xdoc` compress sendmail.${VER}.xdoc.tar ftp: sendmail.${VER}.base.tar.Z sendmail.${VER}.cf.tar.Z sendmail.${VER}.misc.tar.Z sendmail.${VER}.xdoc.tar.Z ! rcp sendmail.${VER}.*.tar.Z RELEASE_NOTES FAQ KNOWNBUGS ${FTPDIR} .include *** READ_ME.OLD Tue Jan 4 07:52:09 1994 --- READ_ME Wed Jan 26 17:39:28 1994 *************** *** 1,5 **** /*- ! * @(#)READ_ME 8.8 (Berkeley) 1/4/94 */ SENDMAIL RELEASE 8 --- 1,5 ---- /*- ! * @(#)READ_ME 8.9 (Berkeley) 1/26/94 */ SENDMAIL RELEASE 8 *************** *** 113,123 **** RFC987 Mapping between RFC822 and X.400 RFC1049 Content-Type header field (extension to RFC822) ! Unfortunately, for a variety of reasons the Makefiles are for the new ! Berkeley "make" and will not work on the old, traditional make. I urge ! you to get this make from Net2 (available on many public FTP archives). ! Failing that, some directories have a "Makefile.dist" that will work on ! older versions of make (but don't have the niceties included). +-------------------+ --- 113,121 ---- RFC987 Mapping between RFC822 and X.400 RFC1049 Content-Type header field (extension to RFC822) ! Warning to AIX users: this version of sendmail does not implement ! MB, MR, or MG DNS resource records, as defined as experiments in ! RFC883. +-------------------+ *************** *** 134,140 **** --- 132,142 ---- also probably find that you have to add -I/where/you/put/db/include to the sendmail makefile to get db.h to work properly. + Be sure you remove ndbm.h and ndbm.o from the db distribution. These + will cause problems with sendmail because sendmail already understands + about NEWDB and NDBM coexisting. + +-------------+ | USE WITH MH | +-------------+ *************** *** 163,169 **** BINDIR?= /usr/sbin The other directories should all have Makefile.dist files that work ! on the old make. For more details, see src/READ_ME. +---------------------+ --- 165,177 ---- BINDIR?= /usr/sbin The other directories should all have Makefile.dist files that work ! on the old make, albeit without all the niceties included. ! ! You can also get a new Berkeley make from the Net2 release (available ! on many public FTP archives). This version should also interpret old ! Makefiles, so you could drop it in as your default make. ! ! For more details, see src/READ_ME. +---------------------+ *** RELEASE_NOTES.OLD Fri Jan 14 07:13:10 1994 --- RELEASE_NOTES Sun Mar 13 09:42:08 1994 *************** *** 1,3 **** --- 1,242 ---- + SENDMAIL RELEASE NOTES + @(#)RELEASE_NOTES 8.6.6.1 (Berkeley) 3/13/94 + + This listing shows the version of the sendmail binary, the version + of the sendmail configuration files, the date of release, and a + summary of the changes in that release. + + 8.6.6/8.6.6 94/03/13 + SECURITY: the ability to give files away on System V-based + systems proved dangerous -- don't run as the owner + of a :include: file on a system that allows giveaways. + Unfortunately, this also applies to determining a + valid shell. + IMPORTANT: Previous versions weren't expiring old connections + in the connection cache for a long time under some + circumstances. This could result in resource exhaustion, + both at your end and at the other end. This checks the + connections for timeouts much more frequently. From + Doug Anderson of NCSC. + Fix a glitch that snuck in that caused programs to be run as + the sender instead of the recipient if the mail was + from a local user to another local user. From + Motonori Nakamura of Kyoto University. + Fix "wildcard" on /etc/shell matching -- instead of looking + for "*", look for "/SENDMAIL/ANY/SHELL/". From + Bryan Costales of ICSI. + Change the method used to declare the "statfs" availability; + instead of HASSTATFS and/or HASUSTAT with a ton of + tweaking in conf.c, there is a single #define called + SFS_TYPE which takes on one of six values (SFS_NONE + for no statfs availability, SFS_USTAT for the ustat(2) + syscall, SFS_4ARGS for a four argument statfs(2) call, + and SFS_VFS, SFS_MOUNT, or SFS_STATFS for a two argument + statfs(2) call with the declarations in , + , or respectively). + Fix glitch in NetInfo support that could return garbage if + there was no "/locations/sendmail" property. From + David Meyer of the University of Virginia. + Change HASFLOCK from defined/not-defined to a 0/1 definition + to allow Linux to turn it off even though it is a + BSD-like system. + Allow setting of "ident" timeout to zero to turn off the ident + protocol entirely. + Make 7-bit stripping local to a connection (instead of to a + mailer); this allows you to specify that SMTP is a + 7-bit channel, but revert to 8-bit should it advertise + that it supports 8BITMIME. You still have to specify + mailer flag 7 to get this stripping at all. + Improve makesendmail script so it handles more cases automatically. + Tighten up restrictions on taking ownership of :include: files + to avoid problems on systems that allow you to give away + files. + Fix a problem that made it impossible to rebuild the alias + file if it was on a read-only file system. From + Harry Edmon of the University of Washington. + Improve MX randomization function. From John Gardiner Myers + of CMU. + Fix a minor glitch causing a bogus message to be printed (used + %s instead of %d in a printf string for the line number) + when a bad queue file was read. From Harry Edmon. + Allow $s to remain NULL on locally generated mail. I'm not + sure this is necessary, but a lot of people have complained + about it, and there is a legitimate question as to whether + "localhost" is legal as an 822-style domain. + Fix a problem with very short line lengths (mailer L= flag) in + headers. This causes a leading space to be added onto + continuation lines (including in the body!), and also + tries to wrap headers containing addresses (From:, To:, + etc) intelligently at the shorter line lengths. Problem + Reported by Lars-Johan Liman of SUNET Operations Center. + Log the real user name when logging syserrs, since these can have + security implications. Suggested by several people. + Fix address logging of cached connections -- it used to always + log the numeric address as zero. This is a somewhat + bogus implementation in that it does an extra system + call, but it should be an inexpensive one. Fix from + Motonori Nakamura. + Tighten up handling of short syslog buffers even more -- there + were cases where the outgoing relay= name was too long + to share a line with delay= and mailer= logging. + Limit the overhead on split envelopes to one open file descriptor + per envelope -- previously the overhead was three + descriptors. This was in response to a problem reported + by P{r (Pell) Emanuelsson. + Fixes to better handle the case of unexpected connection closes; + this redirects the output to the transcript so the info + is not lost. From Eric Wassenaar. + Fix potential string overrun if you macro evaluate a string that + has a naked $ at the end. Problem noted by James Matheson + . + Make default error number on $#error messages 553 (``Requested + action not taken: mailbox name not allowed'') instead of + 501 (``Syntax error in parameters or arguments'') to + avoid bogus "protocol error" messages. + Strip off any existing trailing dot on names during $[ ... $] + lookup. This prevents it from ending up with two dots + on the end of dot terminated names. From Wesley Craig + of the University of Michigan and Bryan Costales of ICSI. + Clean up file class reading so that the debugging information is + more informative. It hadn't been using setclass, so you + didn't see the class items being added. + Avoid core dump if you are running a version of sendmail where + NIS is compiled in, and you specify an NIS map, but + NIS is not running. Fix from John Oleynick of + Rutgers. + Diagnose bizarre case where res_search returns a failure value, + but sets h_errno to a success value. + Make sure that "too many hops" messages are considered important + enough to send an error to the Postmaster (that is, the + address specified in the P option). This fix should + help problems that cause the df file to be left around + sometimes -- unfortunately, I can't seem to reproduce + the problem myself. + Avoid core dump (null pointer reference) on EXPN command; this + only occurred if your log level was set to 10 or higher + and the target account was an alias or had a .forward file. + Problem noted by Janne Himanka. + Avoid "denial of service" attacks by someone who is flooding your + SMTP port with bad commands by shutting the connection + after 25 bad commands are issued. From Kyle Jones of + UUNET. + Fix core dump on error messages with very long "to" buffers; + fmtmsg overflows the message buffer. Fixed by trimming + the to address to 203 characters. Problem reported by + John Oleynick. + Fix configuration for HASFLOCK -- there were some spots where + a #ifndef was incorrectly #ifdef. Pointed out by + George Baltz of the University of Maryland. + Fix a typo in savemail() that could cause the error message To: + lists to be incorrect in some places. From Motonori + Nakamura. + Fix a glitch that can cause duplicate error messages on split + envelopes where an address on one of the lists has a + name server failure. Fix from Voradesh Yenbut of the + University of Washington. + Fix possible bogus pointer reference on ESMTP parameters that + don't have an ``=value'' part. + CNAME loops caused an error message to be generated, but also + re-queued the message. Changed to just re-queue the + message (it's really hard to just bounce it because + of the wierd way the name server works in the presence + of CNAME loops). Problem noted by James M.R.Matheson + of Cambridge University. + Avoid giving ``warning: foo owned process doing -bs'' messages + if they use ``MAIL FROM:'' where foo is their true + user name. Suggested by Andreas Stolcke of ICSI. + Change the NAMED_BIND compile flag to be a 0/1 flag so you can + override it easily in the Makefile -- that is, you can + turn it off using -DNAMED_BIND=0. + If a gethostbyname(...) of an address with a trailing dot fails, + try it without the trailing dot. This is because if + you have a version of gethostbyname() that falls back + to NIS or the /etc/hosts file it will fail to find + perfectly reasonable names that just don't happen to + be dot terminated in the hosts file. You don't want to + strip the dot first though because we're trying to ensure + that country names that match one of your subdomains get + a chance. + PRALIASES: fix bogus output on non-null-terminated strings. + From Bill Gianopoulos of Raytheon. + CONFIG: Avoid rewriting anything that matches $w to be $j. + This was in code intended to only catch the self-literal + address (that is, [1.2.3.4], where 1.2.3.4 is your + IP address), but the code was broken. However, it will + still do this if $M is defined; this is necessary to + get client configurations to work (sigh). Note that this + means that $M overrides :mailname entries in the user + database! Problem noted by Paul Southworth. + CONFIG: Fix definition of Solaris help file location. From + Steve Cliffe . + CONFIG: Fix bug that broke news.group.USENET mappings. + CONFIG: Allow declaration of SMTP_MAILER_MAX, FAX_MAILER_MAX, + and USENET_MAILER_MAX to tweak the maximum message + size for various mailers. + CONFIG: Change definition of USENET_MAILER_ARGS to include argv[0] + instead of assuming that it is "inews" for consistency + with other mailers. From Michael Corrigan of UC San Diego. + CONFIG: When mail is forwarded to a LOCAL_RELAY or a MAIL_HUB, + qualify the address in the SMTP envelope as user@{relay|hub} + instead of user@$j. From Bill Wisner of The Well. + CONFIG: Fix route-addr syntax in nullrelay configuration set. + CONFIG: Don't turn off case mapping of user names in the local + mailer for IRIX. This was different than most every other + system. + CONFIG: Avoid infinite loops on certainly list:; syntaxes in + envelope. Noted by Thierry Besancon + . + CONFIG: Don't include -z by default on uux line -- most systems + don't want it set by default. Pointed out by Philippe + Michel of Thomson CSF. + CONFIG: Fix some bugs with mailertables -- for example, if your + host name was foo.bar.ray.com and you matched against + ".ray.com", the old implementation bound %1 to "bar" + instead of "foo.bar". Also, allow "." in the mailertable + to match anything -- essentially, take over SMART_HOST. + This also moves matching of explicit local host names + before the mailertable so they don't have to be special + cased in the mailertable data. Reported by Bill + Gianopoulos of Raytheon; the fix for the %1 binding + problem was contributed by Nicholas Comanos of the + University of Sydney. + CONFIG: Don't include "root" in class $=L (users to deliver + locally, even if a hub or relay exists) by default. + This is because of the known bug where definition of + both a LOCAL_RELAY and a MAIL_HUB causes $=L to ignore + both and deliver into the local mailbox. + CONFIG: Move up bitdomain and uudomain handling so that they + are done before .UUCP class matching; uudomain was + reported as ineffective before. This also frees up + diversion 8 for future use. Problem reported by Kimmo + Suominen. + CONFIG: Don't try to convert dotted IP address (e.g., [1.2.3.4]) + into host names. As pointed out by Jonathan Kamens, + these are often used because either the forward or reverse + mapping is broken; this translation makes it broken again. + DOC: Clarify $@ and $: in the Install & Op Guide. From Kimmo + Suominen. + Portability fixes: + Unicos from David L. Kensiski of Sterling Sofware. + DomainOS from Don Lewis of Silicon Systems. + GNU m4 1.0.3 from Karst Koymans of Utrecht University. + Convex from Kimmo Suominen . + NetBSD from Adam Glass . + BSD/386 from Tony Sanders of BSDI. + Apollo from Eric Wassenaar. + DGUX from Doug Anderson. + Sequent DYNIX/ptx 2.0 from Tim Wright of Sequent. + NEW FILES: + src/Makefile.DomainOS + src/Makefile.PTX + src/Makefile.SunOS.5.1 + src/Makefile.SunOS.5.2 + src/Makefile.SunOS.5.x + src/mailq.1 + cf/ostype/domainos.m4 + doc/op/Makefile + doc/intro/Makefile + doc/usenix/Makefile + 8.6.5/8.6.5 94/01/13 Security fix: /.forward could be owned by anyone (the test to allow root to own any file was backwards). From *************** *** 185,190 **** --- 424,431 ---- new arguments. For example, if you used ``sendmail -C config -v -q'' it would choke on the -q because the -C would stop looking for old-format arguments. + Fix the code that was intended to allow two users to forward their + mail to the same program and have them appear unique. Portability fixes for: SCO UNIX from Murray Kucherawy. SCO Open Server 3.2v4 from Philippe Brand. *** cf/README.OLD Wed Jan 12 06:19:02 1994 --- cf/README Sat Mar 12 08:49:57 1994 *************** *** 4,10 **** Eric Allman ! @(#)README 8.21 (Berkeley) 1/12/94 This document describes the sendmail configuration files being used --- 4,10 ---- Eric Allman ! @(#)README 8.27 (Berkeley) 3/12/94 This document describes the sendmail configuration files being used *************** *** 13,19 **** old versions of sendmail and cannot be expected to work well. These configuration files are probably not as general as previous ! versions, and don't handle as many of the wierd cases automagically. I was able to simplify by them for two reasons. First, the network has become more consistent -- for example, at this point, everyone on the internet is supposed to be running a name server, so hacks to --- 13,19 ---- old versions of sendmail and cannot be expected to work well. These configuration files are probably not as general as previous ! versions, and don't handle as many of the weird cases automagically. I was able to simplify by them for two reasons. First, the network has become more consistent -- for example, at this point, everyone on the internet is supposed to be running a name server, so hacks to *************** *** 23,30 **** does describe the vast majority of sites with which I am familiar, including those outside the US. ! Of course, the downside of this is that if you do live in a wierd ! world, things are going to get wierder for you. I'm sorry about that, but at the time we at Berkeley had a problem, and it seemed like the right thing to do. --- 23,30 ---- does describe the vast majority of sites with which I am familiar, including those outside the US. ! Of course, the downside of this is that if you do live in a weird ! world, things are going to get weirder for you. I'm sorry about that, but at the time we at Berkeley had a problem, and it seemed like the right thing to do. *************** *** 163,170 **** --- 163,174 ---- USENET_MAILER_FLAGS [rlsDFMmn] The mailer flags for the usenet mailer. USENET_MAILER_ARGS [-m -h -n] The command line arguments for the usenet mailer. + USENET_MAILER_MAX [100000] The maximum size of messages that will + be accepted by the usenet mailer. SMTP_MAILER_FLAGS [undefined] Flags added to SMTP mailer. Default flags are `mDFMUX' (and `a' for esmtp mailer). + SMTP_MAILER_MAX [undefined] The maximum size of messages that will + be transported using the smtp or esmtp mailers. UUCP_MAILER_FLAGS [undefined] Flags added to UUCP mailer. Default flags are `DFMhuU' (and `m' for suucp mailer, minus `U' for uucp-dom mailer). *************** *** 172,182 **** passed to the UUCP mailer. UUCP_MAX_SIZE [100000] The maximum size message accepted for transmission by the UUCP mailers. ! HOSTMAP_SPEC [dbm -o /etc/hostmap] The value for the builtin ! hostmap key definition. You can redefine this ! to change the class, flags, and filename of ! the hostmap. The default flag (-o) makes this ! map optional. +---------+ | DOMAINS | --- 176,185 ---- passed to the UUCP mailer. UUCP_MAX_SIZE [100000] The maximum size message accepted for transmission by the UUCP mailers. ! FAX_MAILER_PATH [/usr/local/lib/fax/mailfax] The program used to ! submit FAX messages. ! FAX_MAILER_MAX [100000] The maximum size message accepted for ! transmission by FAX. +---------+ | DOMAINS | *************** *** 410,415 **** --- 413,432 ---- lists of UUCP hosts they speak with directly. This can get a bit more tricky. For an example of a "complex" site, see cf/ucbvax.mc. + If your host is known by several different names, you need to augment + the $=w class. This is a list of names by which you are known, and + anything sent to an address using a host name in this list will be + treated as local mail. You can do this in two ways: either create + the file /etc/sendmail.cw containing a list of your aliases (one per + line), and use ``FEATURE(use_cw_file)'' in the .mc file, or add the + line: + + Cw alias.host.name + + at the end of that file. See the ``vangogh.mc'' file for an example. + Be sure you use the fully-qualified name of the host, rather than a + short name. + The SITECONFIG macro allows you to indirectly reference site-dependent configuration information stored in the siteconfig subdirectory. For example, the line *************** *** 418,435 **** reads the file uucp.ucbvax for local connection information. The second parameter is the local name (in this case just "ucbvax" since ! it is locally connected, and hence a UUCP hostname) and the name of ! the class in which to store the host information. Another SITECONFIG ! line reads SITECONFIG(uucp.ucbarpa, ucbarpa.Berkeley.EDU, W) This says that the file uucp.ucbarpa contains the list of UUCP sites connected to ucbarpa.Berkeley.EDU. The $=W class will be used to ! store this list. [The machine ucbarpa is gone now, but I've left this out-of-date configuration file around to demonstrate how you might do this.] The siteconfig file (e.g., siteconfig/uucp.ucbvax.m4) contains nothing more than a sequence of SITE macros describing connectivity. For example: --- 435,460 ---- reads the file uucp.ucbvax for local connection information. The second parameter is the local name (in this case just "ucbvax" since ! it is locally connected, and hence a UUCP hostname). The third ! parameter is the name of both a macro to store the local name (in ! this case, $U) and the name of the class (e.g., $=U) in which to store ! the host information read from the file. Another SITECONFIG line reads SITECONFIG(uucp.ucbarpa, ucbarpa.Berkeley.EDU, W) This says that the file uucp.ucbarpa contains the list of UUCP sites connected to ucbarpa.Berkeley.EDU. The $=W class will be used to ! store this list, and $W is defined to be ucbarpa.Berkeley.EDU, that ! is, the name of the relay to which the hosts listed in uucp.ucbarpa ! are connected. [The machine ucbarpa is gone now, but I've left this out-of-date configuration file around to demonstrate how you might do this.] + Note that the case of SITECONFIG with a third parameter of ``U'' is + special; the second parameter is assumed to be the UUCP name of the + local site, rather than the name of a remote site, and the UUCP name + is entered into $=w (the list of local hostnames) as $U.UUCP. + The siteconfig file (e.g., siteconfig/uucp.ucbvax.m4) contains nothing more than a sequence of SITE macros describing connectivity. For example: *************** *** 547,553 **** to be converted to "user@decvax.dec.com" and "user@research.att.com" respectively. ! This could also be used to look hosts in a database map: LOCAL_RULE_3 R$* < @ $+ > $* $: $1 < @ $(hostmap $2 $) > $3 --- 572,578 ---- to be converted to "user@decvax.dec.com" and "user@research.att.com" respectively. ! This could also be used to look up hosts in a database map: LOCAL_RULE_3 R$* < @ $+ > $* $: $1 < @ $(hostmap $2 $) > $3 *************** *** 559,565 **** via MX records. For example, you might have: LOCAL_RULE_0 ! R$+ < @ cnmat.Berkeley.EDU > $#uucp $@ cnmat $: $1 You would use this if you had installed an MX record for cnmat.Berkeley.EDU pointing at this host; this rule catches the message and forwards it on --- 584,590 ---- via MX records. For example, you might have: LOCAL_RULE_0 ! R$+ <@ host.dom.ain.> $#uucp $@ cnmat $: $1 < @ host.dom.ain.> You would use this if you had installed an MX record for cnmat.Berkeley.EDU pointing at this host; this rule catches the message and forwards it on *************** *** 585,593 **** MASQUERADE_AS(host.domain) ! This causes outgoing SMTP mail to be labelled as coming from the indicated domain, rather than $j. One normally masquerades as one ! of your own subdomains (for example, it's unlikely that I would choose to masquerade as an MIT site). The masquerade name is not normally canonified, so it is important --- 610,618 ---- MASQUERADE_AS(host.domain) ! This causes outgoing SMTP mail to be labeled as coming from the indicated domain, rather than $j. One normally masquerades as one ! of one's own subdomains (for example, it's unlikely that I would choose to masquerade as an MIT site). The masquerade name is not normally canonified, so it is important *************** *** 628,636 **** define(`MAIL_HUB', mailer:hostname) Again, ``mailer:'' defaults to "smtp". If you define both LOCAL_RELAY ! and MAIL_HUB, unqualified names and names in class L will be sent to ! the LOCAL_RELAY and other local names will be sent to MAIL_HUB. For ! example, if are on machine mastodon.CS.Berkeley.EDU, the following combinations of settings will have the indicated effects: email sent to.... eric eric@mastodon.CS.Berkeley.EDU --- 653,663 ---- define(`MAIL_HUB', mailer:hostname) Again, ``mailer:'' defaults to "smtp". If you define both LOCAL_RELAY ! and MAIL_HUB, unqualified names will be sent to the LOCAL_RELAY and ! other local names will be sent to MAIL_HUB. Names in $=L will be ! delivered locally, so you MUST have aliases or .forward files for them. ! ! For example, if are on machine mastodon.CS.Berkeley.EDU, the following combinations of settings will have the indicated effects: email sent to.... eric eric@mastodon.CS.Berkeley.EDU *************** *** 1081,1087 **** hack Local hacks. These can be referenced using the HACK macro. They shouldn't be of more than voyeuristic interest outside the .Berkeley.EDU domain, but who knows? ! We've all got our own peccadilloes. siteconfig Site configuration -- e.g., tables of locally connected UUCP sites. --- 1108,1114 ---- hack Local hacks. These can be referenced using the HACK macro. They shouldn't be of more than voyeuristic interest outside the .Berkeley.EDU domain, but who knows? ! We've all got our own peccadillos. siteconfig Site configuration -- e.g., tables of locally connected UUCP sites. *************** *** 1197,1201 **** 5 locally interpreted names (overrides $R) 6 local configuration (at top of file) 7 mailer definitions ! 8 special local name recognition (late in ruleset 3) 9 special local rulesets (1 and 2) --- 1224,1228 ---- 5 locally interpreted names (overrides $R) 6 local configuration (at top of file) 7 mailer definitions ! 8 9 special local rulesets (1 and 2) *** cf/cf/vangogh.mc.OLD Mon Jun 7 10:07:59 1993 --- cf/cf/vangogh.mc Wed Jan 26 17:38:50 1994 *************** *** 34,43 **** # include(`../m4/cf.m4') ! VERSIONID(`@(#)vangogh.mc 8.1 (Berkeley) 6/7/93') DOMAIN(cs.exposed)dnl OSTYPE(bsd4.4)dnl MAILER(local)dnl MAILER(smtp)dnl define(`MCI_CACHE_SIZE', 5) ! Cw okeeffe --- 34,44 ---- # include(`../m4/cf.m4') ! VERSIONID(`@(#)vangogh.mc 8.2 (Berkeley) 1/26/94') DOMAIN(cs.exposed)dnl OSTYPE(bsd4.4)dnl MAILER(local)dnl MAILER(smtp)dnl define(`MCI_CACHE_SIZE', 5) ! Cw okeeffe.CS.Berkeley.EDU ! Cw python.CS.Berkeley.EDU *** cf/domain/Berkeley.m4.OLD Mon Dec 20 10:49:11 1993 --- cf/domain/Berkeley.m4 Fri Feb 18 13:04:17 1994 *************** *** 33,41 **** # SUCH DAMAGE. # divert(0) ! VERSIONID(`@(#)Berkeley.m4 8.4 (Berkeley) 12/20/93') define(`UUCP_RELAY', `ucbvax.Berkeley.EDU')dnl ! define(`BITNET_RELAY', `jade.Berkeley.EDU')dnl define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward')dnl define(`confCW_FILE', `-o /etc/sendmail.cw')dnl FEATURE(redirect)dnl --- 33,41 ---- # SUCH DAMAGE. # divert(0) ! VERSIONID(`@(#)Berkeley.m4 8.5 (Berkeley) 2/18/94') define(`UUCP_RELAY', `ucbvax.Berkeley.EDU')dnl ! define(`BITNET_RELAY', `CMSA.Berkeley.EDU')dnl define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward')dnl define(`confCW_FILE', `-o /etc/sendmail.cw')dnl FEATURE(redirect)dnl *** cf/feature/allmasquerade.m4.OLD Wed Jul 7 14:59:27 1993 --- cf/feature/allmasquerade.m4 Sat Jan 22 09:47:51 1994 *************** *** 34,41 **** # divert(0) ! VERSIONID(`@(#)allmasquerade.m4 8.1 (Berkeley) 7/7/93') divert(-1) ! define(`_ALL_MASQUERADE_') --- 34,41 ---- # divert(0) ! VERSIONID(`@(#)allmasquerade.m4 8.2 (Berkeley) 1/22/94') divert(-1) ! define(`_ALL_MASQUERADE_', 1) *** cf/feature/bitdomain.m4.OLD Tue Nov 30 09:01:07 1993 --- cf/feature/bitdomain.m4 Sat Feb 19 07:56:20 1994 *************** *** 34,40 **** # divert(0) ! VERSIONID(`@(#)bitdomain.m4 8.4 (Berkeley) 11/30/93') divert(-1) --- 34,40 ---- # divert(0) ! VERSIONID(`@(#)bitdomain.m4 8.6 (Berkeley) 2/19/94') divert(-1) *************** *** 43,49 **** POPDIVERT ! PUSHDIVERT(8) # handle BITNET mapping ! R$* < @ $+ .BITNET. > $* $: $1 < @ $(bitdomain $2 $: $2.BITNET. $) > $3 POPDIVERT --- 43,49 ---- POPDIVERT ! PUSHDIVERT(2) # handle BITNET mapping ! R$* < @ $+ .BITNET > $* $: $1 < @ $(bitdomain $2 $: $2.BITNET $) > $3 POPDIVERT *** cf/feature/uucpdomain.m4.OLD Tue Nov 30 09:01:08 1993 --- cf/feature/uucpdomain.m4 Sat Feb 19 07:56:20 1994 *************** *** 34,40 **** # divert(0) ! VERSIONID(`@(#)uucpdomain.m4 8.4 (Berkeley) 11/30/93') divert(-1) --- 34,40 ---- # divert(0) ! VERSIONID(`@(#)uucpdomain.m4 8.6 (Berkeley) 2/19/94') divert(-1) *************** *** 43,49 **** POPDIVERT ! PUSHDIVERT(8) # handle UUCP mapping ! R$* < @ $+ .UUCP. > $* $: $1 < @ $(uudomain $2 $: $2.UUCP. $) > $3 POPDIVERT --- 43,49 ---- POPDIVERT ! PUSHDIVERT(2) # handle UUCP mapping ! R$* < @ $+ .UUCP > $* $: $1 < @ $(uudomain $2 $: $2.UUCP $) > $3 POPDIVERT *** cf/m4/nullrelay.m4.OLD Fri Sep 3 09:20:38 1993 --- cf/m4/nullrelay.m4 Tue Feb 1 10:16:32 1994 *************** *** 34,40 **** # divert(0) ! VERSIONID(`@(#)nullrelay.m4 8.4 (Berkeley) 9/3/93') # # This configuration applies only to relay-only hosts. They send --- 34,40 ---- # divert(0) ! VERSIONID(`@(#)nullrelay.m4 8.5 (Berkeley) 2/1/94') # # This configuration applies only to relay-only hosts. They send *************** *** 266,272 **** ifdef(`_NO_CANONIFY_', `dnl', `# eliminate local host if present R@ $=w $=: $+ $@ @ $M $2 $3 @thishost ... ! R@ $+ $@ $1 @somewhere ... R$+ @ $=w $@ $1 @ $M ...@thishost R$+ @ $+ $@ $1 @ $2 ...@somewhere --- 266,272 ---- ifdef(`_NO_CANONIFY_', `dnl', `# eliminate local host if present R@ $=w $=: $+ $@ @ $M $2 $3 @thishost ... ! R@ $+ $@ @ $1 @somewhere ... R$+ @ $=w $@ $1 @ $M ...@thishost R$+ @ $+ $@ $1 @ $2 ...@somewhere *** cf/m4/proto.m4.OLD Thu Jan 13 06:40:24 1994 --- cf/m4/proto.m4 Fri Mar 4 09:10:36 1994 *************** *** 34,40 **** # divert(0) ! VERSIONID(`@(#)proto.m4 8.30 (Berkeley) 1/12/94') MAILER(local)dnl --- 34,40 ---- # divert(0) ! VERSIONID(`@(#)proto.m4 8.45 (Berkeley) 3/4/94') MAILER(local)dnl *************** *** 118,129 **** # who gets all local email traffic ($R has precedence for unqualified names) DH`'ifdef(`MAIL_HUB', MAIL_HUB) ! # who I masquerade as (can be $j) ! DM`'ifdef(`MASQUERADE_NAME', MASQUERADE_NAME, $j) # class L: names that should be delivered locally, even if we have a relay # class E: names that should be exposed as from this host, even if we masquerade ! CLroot CEroot undivert(5)dnl --- 118,129 ---- # who gets all local email traffic ($R has precedence for unqualified names) DH`'ifdef(`MAIL_HUB', MAIL_HUB) ! # who I masquerade as (null for no masquerading) ! DM`'ifdef(`MASQUERADE_NAME', MASQUERADE_NAME) # class L: names that should be delivered locally, even if we have a relay # class E: names that should be exposed as from this host, even if we masquerade ! #CLroot CEroot undivert(5)dnl *************** *** 171,177 **** Oa`'confALIAS_WAIT # location of alias file ! OA`'ifdef(`ALIAS_FILE', ALIAS_FILE, /etc/aliases) # minimum number of free blocks on filesystem Ob`'confMIN_FREE_BLOCKS --- 171,177 ---- Oa`'confALIAS_WAIT # location of alias file ! OA`'ifdef(`ALIAS_FILE', `ALIAS_FILE', /etc/aliases) # minimum number of free blocks on filesystem Ob`'confMIN_FREE_BLOCKS *************** *** 360,366 **** ######################### H?P?Return-Path: $g ! HReceived: $?sfrom $s $.$?_($_) $.by $j ($v/$Z)$?r with $r$. id $i$?u for $u$.; $b H?D?Resent-Date: $a H?D?Date: $a H?F?Resent-From: $q --- 360,366 ---- ######################### H?P?Return-Path: $g ! HReceived: $?sfrom $s $.$?_($?s$|from $.$_) $.by $j ($v/$Z)$?r with $r$. id $i$?u for $u$.; $b H?D?Resent-Date: $a H?D?Date: $a H?F?Resent-From: $q *************** *** 443,451 **** R$* < @ localhost . $m > $* $: $1 < @ $j . > $2 local domain ifdef(`_NO_UUCP_', `dnl', `R$* < @ localhost . UUCP > $* $: $1 < @ $j . > $2 .UUCP domain') ! R$* < @ [ $+ ] > $* $: $1 < @ [[ $2 ]] > $3 catch [a.b.c.d] ! R$* < @ [ $=w ] > $* $: $1 < @ $j . > $3 self-literal ! R$* < @ [[ $+ ]] > $* $: $1 < @ [ $2 ] > $3 strip dbl [[]] ifdef(`DOMAIN_TABLE', ` # look up unqualified domains in the domain table R$* < @ $- > $* $: $1 < @ $(domaintable $2 $) > $3', --- 443,451 ---- R$* < @ localhost . $m > $* $: $1 < @ $j . > $2 local domain ifdef(`_NO_UUCP_', `dnl', `R$* < @ localhost . UUCP > $* $: $1 < @ $j . > $2 .UUCP domain') ! R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [a.b.c.d] ! R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal ! R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr ifdef(`DOMAIN_TABLE', ` # look up unqualified domains in the domain table R$* < @ $- > $* $: $1 < @ $(domaintable $2 $) > $3', *************** *** 483,490 **** R$* < @ $* $=P > $* $: $1 < @ $2 $3 . > $4 R$* < @ $* . . > $* $1 < @ $2 . > $3 - undivert(8)dnl - # if this is the local hostname, make sure we treat is as canonical R$* < @ $j > $* $: $1 < @ $j . > $2 --- 483,488 ---- *************** *** 496,504 **** R$*<@> $@ $1 handle <> and list:; - # resolve numeric addresses to name if possible - R$* < @ [ $+ ] > $* $: $1 < @ $[ [$2] $] > $3 lookup numeric internet addr - # strip trailing dot off possibly canonical name R$* < @ $+ . > $* $1 < @ $2 > $3 --- 494,499 ---- *************** *** 533,545 **** S0 R<@> $#_LOCAL_ $: <> special case error msgs ! R$*:;<@> $#error $@ USAGE $: "list:; syntax illegal for recipient addresses" R<@ $+> $#error $@ USAGE $: "user address required" ifdef(`_MAILER_smtp_', `# handle numeric address spec - ifdef(`_NO_CANONIFY_', `dnl', - `R$* < @ [ $+ ] > $* $: $1 < @ $[ [$2] $] > $3 numeric internet addr') R$* < @ [ $+ ] > $* $: $>_SET_98_ $1 < @ [ $2 ] > $3 numeric internet spec R$* < @ [ $+ ] > $* $#_SMTP_ $@ [$2] $: $1 < @ [$2] > $3 still numeric: send', `dnl') --- 528,539 ---- S0 R<@> $#_LOCAL_ $: <> special case error msgs ! R$* : $* ; $#error $@ USAGE $: "list:; syntax illegal for recipient addresses" R<@ $+> $#error $@ USAGE $: "user address required" + R<$* : $* > $#error $@ USAGE $: "colon illegal in host name part" ifdef(`_MAILER_smtp_', `# handle numeric address spec R$* < @ [ $+ ] > $* $: $>_SET_98_ $1 < @ [ $2 ] > $3 numeric internet spec R$* < @ [ $+ ] > $* $#_SMTP_ $@ [$2] $: $1 < @ [$2] > $3 still numeric: send', `dnl') *************** *** 551,565 **** # handle local hacks R$* $: $>_SET_98_ $1 - ifdef(`MAILER_TABLE', - ` - # try mailer table lookup - R$* <@ $+ > $* $: < $2 > $1 < @ $2 > $3 extract host name - R< $+ . > $* $: < $1 > $2 strip trailing dot - R< $+ > $* $: < $(mailertable $1 $) > $2 lookup - R< $- : $+ > $* $# $1 $@ $2 $: $3 check -- resolved? - R< $+ > $* $: $>90 <$1> $2 try domain', - `dnl') # short circuit local delivery so forwarded email works ifdef(`_LOCAL_NOT_STICKY_', --- 545,550 ---- *************** *** 572,577 **** --- 557,571 ---- R$+ < $+ @ > $#_LOCAL_ $: $1 nope, local address', `R$+ < $+ @ $+ > $#_LOCAL_ $: $1 yep .... R$+ < $+ @ > $#_LOCAL_ $: @ $1 nope, local address')') + ifdef(`MAILER_TABLE', + ` + # not local -- try mailer table lookup + R$* <@ $+ > $* $: < $2 > $1 < @ $2 > $3 extract host name + R< $+ . > $* $: < $1 > $2 strip trailing dot + R< $+ > $* $: < $(mailertable $1 $) > $2 lookup + R< $- : $+ > $* $# $1 $@ $2 $: $3 check -- resolved? + R< $+ > $* $: $>90 <$1> $2 try domain', + `dnl') undivert(4)dnl ifdef(`_NO_UUCP_', `dnl', *************** *** 608,614 **** `dnl')') ifdef(`_MAILER_usenet_', ` # addresses sent to net.group.USENET will get forwarded to a newsgroup ! R$+ . USENET. $#usenet $: $1', `dnl') ifdef(`_LOCAL_RULES_', --- 602,608 ---- `dnl')') ifdef(`_MAILER_usenet_', ` # addresses sent to net.group.USENET will get forwarded to a newsgroup ! R$+ . USENET $#usenet $: $1', `dnl') ifdef(`_LOCAL_RULES_', *************** *** 646,653 **** S5 # see if we have a relay or a hub ! R$+ $: $>_SET_95_ < $R > $1 try relay ! R$+ $: $>_SET_95_ < $H > $1 try hub') ifdef(`MAILER_TABLE', ` --- 640,650 ---- S5 # see if we have a relay or a hub ! R$+ $: < $R > $1 try relay ! R< > $+ $: < $H > $1 try hub ! R< > $+ $@ $1 nope, give up ! R< $- : $+ > $+ $: $>_SET_95_ < $1 : $2 > $3 < @ $2 > ! R< $+ > $+ $@ $>_SET_95_ < $1 > $2 < @ $1 >') ifdef(`MAILER_TABLE', ` *************** *** 657,666 **** ################################################################### S90 ! R<$- . $+ > $* $: < $(mailertable .$2 $@ $1 $) > $3 lookup ! R<$- : $+ > $* $# $1 $@ $2 $: $3 check -- resolved? ! R< . $+ > $* $@ $>90 <$1> $2 no -- strip & try again ! R<$*> $* $@ $2 no match', `dnl') ################################################################### --- 654,665 ---- ################################################################### S90 ! R$* <$- . $+ > $* $: $1$2 < $(mailertable .$3 $@ $1$2 $@ $2 $) > $4 ! R$* <$- : $+ > $* $# $2 $@ $3 $: $4 check -- resolved? ! R$* < . $+ > $* $@ $>90 $1 . <$2> $3 no -- strip & try again ! R$* < $* > $* $: < $(mailertable . $@ $1$2 $) > $3 try "." ! R<$- : $+ > $* $# $1 $@ $2 $: $3 "." found? ! R< $* > $* $@ $2 no mailertable match', `dnl') ################################################################### *** cf/m4/version.m4.OLD Sat Jan 22 08:29:11 1994 --- cf/m4/version.m4 Sun Mar 13 09:44:59 1994 *************** *** 32,39 **** # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # ! VERSIONID(`@(#)version.m4 8.6.1.5 (Berkeley) 1/13/94') # divert(0) # Configuration version number ! DZ8.6.5 --- 32,39 ---- # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # ! VERSIONID(`@(#)version.m4 8.6.6.1 (Berkeley) 3/13/94') # divert(0) # Configuration version number ! DZ8.6.6 *** cf/mailer/fax.m4.OLD Mon Jun 7 10:11:19 1993 --- cf/mailer/fax.m4 Mon Jan 24 12:06:57 1994 *************** *** 37,48 **** ifdef(`FAX_MAILER_PATH',, `define(`FAX_MAILER_PATH', /usr/local/lib/fax/mailfax)') POPDIVERT #################################### ### FAX Mailer specification ### #################################### ! VERSIONID(`@(#)fax.m4 8.1 (Berkeley) 6/7/93') ! Mfax, P=FAX_MAILER_PATH, F=DFMhu, S=14, R=24, M=100000, A=mailfax $u $h $f --- 37,50 ---- ifdef(`FAX_MAILER_PATH',, `define(`FAX_MAILER_PATH', /usr/local/lib/fax/mailfax)') + ifdef(`FAX_MAILER_MAX',, + `define(`FAX_MAILER_MAX', 100000)') POPDIVERT #################################### ### FAX Mailer specification ### #################################### ! VERSIONID(`@(#)fax.m4 8.2 (Berkeley) 1/24/94') ! Mfax, P=FAX_MAILER_PATH, F=DFMhu, S=14, R=24, M=FAX_MAILER_MAX, A=mailfax $u $h $f No differences encountered *** cf/mailer/pop.m4.OLD Wed Dec 15 06:36:42 1993 --- cf/mailer/pop.m4 Sat Feb 19 07:55:43 1994 *************** *** 39,54 **** POPDIVERT - LOCAL_CONFIG - # POP mailer is a pseudo-domain - CPPOP - POPDIVERT - #################################### ### POP Mailer specification ### #################################### ! VERSIONID(`@(#)pop.m4 8.1 (Berkeley) 12/15/93') Mpop, P=POP_MAILER_PATH, F=CONCAT(`lsDFM', POP_MAILER_FLAGS), S=10, R=20/40, A=POP_MAILER_ARGS --- 39,53 ---- POPDIVERT #################################### ### POP Mailer specification ### #################################### ! VERSIONID(`@(#)pop.m4 8.2 (Berkeley) 2/19/94') Mpop, P=POP_MAILER_PATH, F=CONCAT(`lsDFM', POP_MAILER_FLAGS), S=10, R=20/40, A=POP_MAILER_ARGS + + LOCAL_CONFIG + # POP mailer is a pseudo-domain + CPPOP *** cf/mailer/smtp.m4.OLD Mon Dec 27 14:49:22 1993 --- cf/mailer/smtp.m4 Mon Feb 14 08:31:21 1994 *************** *** 40,51 **** ### SMTP Mailer specification ### ##################################### ! VERSIONID(`@(#)smtp.m4 8.13 (Berkeley) 12/27/93') Msmtp, P=[IPC], F=CONCAT(mDFMuX, SMTP_MAILER_FLAGS), S=11/31, R=ifdef(`_ALL_MASQUERADE_', `11/31', `21'), E=\r\n, ! ifdef(`_OLD_SENDMAIL_',, `L=990, ')A=IPC $h Mesmtp, P=[IPC], F=CONCAT(mDFMuXa, SMTP_MAILER_FLAGS), S=11/31, R=ifdef(`_ALL_MASQUERADE_', `11/31', `21'), E=\r\n, ! ifdef(`_OLD_SENDMAIL_',, `L=990, ')A=IPC $h Mrelay, P=[IPC], F=CONCAT(mDFMuXa, SMTP_MAILER_FLAGS), S=11/31, R=61, E=\r\n, ifdef(`_OLD_SENDMAIL_',, `L=2040, ')A=IPC $h --- 40,51 ---- ### SMTP Mailer specification ### ##################################### ! VERSIONID(`@(#)smtp.m4 8.15 (Berkeley) 2/14/94') Msmtp, P=[IPC], F=CONCAT(mDFMuX, SMTP_MAILER_FLAGS), S=11/31, R=ifdef(`_ALL_MASQUERADE_', `11/31', `21'), E=\r\n, ! ifdef(`_OLD_SENDMAIL_',, `L=990, ')ifdef(`SMTP_MAILER_MAX', `M=SMTP_MAILER_MAX, ')A=IPC $h Mesmtp, P=[IPC], F=CONCAT(mDFMuXa, SMTP_MAILER_FLAGS), S=11/31, R=ifdef(`_ALL_MASQUERADE_', `11/31', `21'), E=\r\n, ! ifdef(`_OLD_SENDMAIL_',, `L=990, ')ifdef(`SMTP_MAILER_MAX', `M=SMTP_MAILER_MAX, ')A=IPC $h Mrelay, P=[IPC], F=CONCAT(mDFMuXa, SMTP_MAILER_FLAGS), S=11/31, R=61, E=\r\n, ifdef(`_OLD_SENDMAIL_',, `L=2040, ')A=IPC $h *************** *** 82,89 **** R$* <@> $* $@ $1 <@> $2 pass null host through R< @ $* > $* $@ < @ $1 > $2 pass route-addr through R$=E < @ $=w . > $@ $1 < @ $2 > exposed user as is ! R$* < @ $=w . > $: $1 < @ $M > masquerade as domain ! R$* < @ > $: $1 < @ $j > in case $M undefined R$* $@ $>61 $1 qualify unqual'ed names --- 82,90 ---- R$* <@> $* $@ $1 <@> $2 pass null host through R< @ $* > $* $@ < @ $1 > $2 pass route-addr through R$=E < @ $=w . > $@ $1 < @ $2 > exposed user as is ! R$* < @ $=w . > $: $1 < @ $2 @ $M > masquerade as domain ! R$* < @ $+ @ > $@ $1 < @ $2 > in case $M undefined ! R$* < @ $+ @ $+ > $@ $1 < @ $3 > $M is defined -- use it R$* $@ $>61 $1 qualify unqual'ed names *** cf/mailer/usenet.m4.OLD Mon Jun 7 10:11:32 1993 --- cf/mailer/usenet.m4 Mon Jan 24 12:07:30 1994 *************** *** 35,47 **** ifdef(`USENET_MAILER_PATH',, `define(`USENET_MAILER_PATH', /usr/lib/news/inews)') ifdef(`USENET_MAILER_FLAGS',, `define(`USENET_MAILER_FLAGS', `rlsDFMmn')') ! ifdef(`USENET_MAILER_ARGS',, `define(`USENET_MAILER_ARGS', `-m -h -n')') POPDIVERT #################################### ### USENET Mailer specification ### #################################### ! VERSIONID(`@(#)usenet.m4 8.1 (Berkeley) 6/7/93') ! Musenet, P=USENET_MAILER_PATH, F=USENET_MAILER_FLAGS, S=10, R=20, ! A=inews USENET_MAILER_ARGS $u --- 35,47 ---- ifdef(`USENET_MAILER_PATH',, `define(`USENET_MAILER_PATH', /usr/lib/news/inews)') ifdef(`USENET_MAILER_FLAGS',, `define(`USENET_MAILER_FLAGS', `rlsDFMmn')') ! ifdef(`USENET_MAILER_ARGS',, `define(`USENET_MAILER_ARGS', `inews -m -h -n')') POPDIVERT #################################### ### USENET Mailer specification ### #################################### ! VERSIONID(`@(#)usenet.m4 8.3 (Berkeley) 1/24/94') ! Musenet, P=USENET_MAILER_PATH, F=USENET_MAILER_FLAGS, S=10, R=20,ifdef(`USENET_MAILER_MAX', ` M=USENET_MAILER_MAX,') ! A=USENET_MAILER_ARGS $u *** cf/mailer/uucp.m4.OLD Mon Jan 10 08:01:11 1994 --- cf/mailer/uucp.m4 Wed Feb 16 07:58:07 1994 *************** *** 34,40 **** # ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)') ! ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -z -a$f -gC $h!rmail ($u)')') ifdef(`UUCP_MAILER_FLAGS',, `define(`UUCP_MAILER_FLAGS', `')') ifdef(`UUCP_MAX_SIZE',, `define(`UUCP_MAX_SIZE', 100000)') POPDIVERT --- 34,40 ---- # ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)') ! ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$f -gC $h!rmail ($u)')') ifdef(`UUCP_MAILER_FLAGS',, `define(`UUCP_MAILER_FLAGS', `')') ifdef(`UUCP_MAX_SIZE',, `define(`UUCP_MAX_SIZE', 100000)') POPDIVERT *************** *** 42,48 **** ### UUCP Mailer specification ### ##################################### ! VERSIONID(`@(#)uucp.m4 8.13 (Berkeley) 1/10/94') # # There are innumerable variations on the UUCP mailer. It really --- 42,48 ---- ### UUCP Mailer specification ### ##################################### ! VERSIONID(`@(#)uucp.m4 8.15 (Berkeley) 2/16/94') # # There are innumerable variations on the UUCP mailer. It really *************** *** 151,157 **** PUSHDIVERT(4) # resolve locally connected UUCP links ! R$* < @ $=Z . UUCP. > $* $#uucp-uudom $@ $1 $: $1 < @ $2 .UUCP. > $3 @host.UUCP: ... R$* < @ $=Y . UUCP. > $* $#uucp-new $@ $2 $: $1 < @ $2 .UUCP. > $3 R$* < @ $=U . UUCP. > $* $#uucp-old $@ $2 $: $1 < @ $2 .UUCP. > $3 POPDIVERT --- 151,157 ---- PUSHDIVERT(4) # resolve locally connected UUCP links ! R$* < @ $=Z . UUCP. > $* $#uucp-uudom $@ $2 $: $1 < @ $2 .UUCP. > $3 R$* < @ $=Y . UUCP. > $* $#uucp-new $@ $2 $: $1 < @ $2 .UUCP. > $3 R$* < @ $=U . UUCP. > $* $#uucp-old $@ $2 $: $1 < @ $2 .UUCP. > $3 POPDIVERT *** cf/ostype/bsd4.3.m4.OLD Mon Jun 7 10:11:42 1993 --- cf/ostype/bsd4.3.m4 Thu Feb 10 09:03:27 1994 *************** *** 34,38 **** # divert(0) ! VERSIONID(`@(#)bsd4.3.m4 8.1 (Berkeley) 6/7/93') define(`QUEUE_DIR', /usr/spool/mqueue)dnl --- 34,39 ---- # divert(0) ! VERSIONID(`@(#)bsd4.3.m4 8.2 (Berkeley) 2/10/94') define(`QUEUE_DIR', /usr/spool/mqueue)dnl + define(`UUCP_MAILER_ARGS', `uux - -r -z -a$f $h!rmail ($u)')dnl *** cf/ostype/bsd4.4.m4.OLD Mon Jun 7 10:11:45 1993 --- cf/ostype/bsd4.4.m4 Thu Feb 10 09:03:27 1994 *************** *** 35,41 **** # divert(0) ! VERSIONID(`@(#)bsd4.4.m4 8.1 (Berkeley) 6/7/93') define(`HELP_FILE', /usr/share/misc/sendmail.hf)dnl define(`STATUS_FILE', /var/log/sendmail.st)dnl define(`LOCAL_MAILER_PATH', /usr/libexec/mail.local)dnl --- 35,42 ---- # divert(0) ! VERSIONID(`@(#)bsd4.4.m4 8.2 (Berkeley) 2/10/94') define(`HELP_FILE', /usr/share/misc/sendmail.hf)dnl define(`STATUS_FILE', /var/log/sendmail.st)dnl define(`LOCAL_MAILER_PATH', /usr/libexec/mail.local)dnl + define(`UUCP_MAILER_ARGS', `uux - -r -z -a$f $h!rmail ($u)')dnl *** cf/ostype/domainos.m4.OLD Sun Jan 23 16:47:31 1994 --- cf/ostype/domainos.m4 Sun Jan 23 16:47:23 1994 *************** *** 0 **** --- 1,42 ---- + divert(-1) + # + # Copyright (c) 1983 Eric P. Allman + # Copyright (c) 1988, 1993 + # The Regents of the University of California. All rights reserved. + # + # Redistribution and use in source and binary forms, with or without + # modification, are permitted provided that the following conditions + # are met: + # 1. Redistributions of source code must retain the above copyright + # notice, this list of conditions and the following disclaimer. + # 2. Redistributions in binary form must reproduce the above copyright + # notice, this list of conditions and the following disclaimer in the + # documentation and/or other materials provided with the distribution. + # 3. All advertising materials mentioning features or use of this software + # must display the following acknowledgement: + # This product includes software developed by the University of + # California, Berkeley and its contributors. + # 4. Neither the name of the University nor the names of its contributors + # may be used to endorse or promote products derived from this software + # without specific prior written permission. + # + # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + # SUCH DAMAGE. + # + + divert(0) + VERSIONID(`@(#)domainos.m4 8.1 (Berkeley) 1/23/94') + divert(-1) + + define(`ALIAS_FILE', /usr/lib/aliases) + define(`STATUS_FILE', /usr/lib/sendmail.st) + define(`QUEUE_DIR', /usr/spool/mqueue) *** cf/ostype/irix.m4.OLD Sat Nov 27 09:29:26 1993 --- cf/ostype/irix.m4 Tue Feb 1 11:51:31 1994 *************** *** 34,41 **** # divert(0) ! VERSIONID(`@(#)irix.m4 8.3 (Berkeley) 11/27/93') ! define(`LOCAL_MAILER_FLAGS', Ehmu)dnl define(`QUEUE_DIR', /usr/spool/mqueue)dnl define(`ALIAS_FILE', /usr/lib/aliases)dnl define(`STATUS_FILE', /usr/lib/sendmail.st)dnl --- 34,41 ---- # divert(0) ! VERSIONID(`@(#)irix.m4 8.4 (Berkeley) 2/1/94') ! define(`LOCAL_MAILER_FLAGS', Ehm)dnl define(`QUEUE_DIR', /usr/spool/mqueue)dnl define(`ALIAS_FILE', /usr/lib/aliases)dnl define(`STATUS_FILE', /usr/lib/sendmail.st)dnl *** cf/ostype/solaris2.m4.OLD Sat Aug 7 09:11:55 1993 --- cf/ostype/solaris2.m4 Sun Jan 23 16:48:06 1994 *************** *** 34,43 **** # divert(0) ! VERSIONID(`@(#)solaris2.m4 8.1 (Berkeley) 8/7/93') divert(-1) define(`ALIAS_FILE', /etc/mail/aliases) ! define(`HELP_FILE', /var/lib/sendmail.hf) define(`STATUS_FILE', /etc/mail/sendmail.st) define(`LOCAL_MAILER_FLAGS', `fSn') --- 34,43 ---- # divert(0) ! VERSIONID(`@(#)solaris2.m4 8.2 (Berkeley) 1/23/94') divert(-1) define(`ALIAS_FILE', /etc/mail/aliases) ! define(`HELP_FILE', /etc/mail/sendmail.hf) define(`STATUS_FILE', /etc/mail/sendmail.st) define(`LOCAL_MAILER_FLAGS', `fSn') *** cf/sh/makeinfo.sh.OLD Fri Jul 23 14:55:52 1993 --- cf/sh/makeinfo.sh Fri Mar 4 07:33:00 1994 *************** *** 32,38 **** # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # ! # @(#)makeinfo.sh 8.3 (Berkeley) 7/23/93 # usewhoami=0 --- 32,38 ---- # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # ! # @(#)makeinfo.sh 8.4 (Berkeley) 3/4/94 # usewhoami=0 *************** *** 73,77 **** else host=`uname -n` fi ! echo '#####' built by $user on `date` ! echo '#####' in `pwd` on $host --- 73,77 ---- else host=`uname -n` fi ! echo '#####' built by $user@$host on `date` ! echo '#####' in `pwd` | sed 's/\/tmp_mnt//' *** doc/intro/Makefile.OLD Tue Jun 8 17:25:01 1993 --- doc/intro/Makefile Mon Feb 28 10:18:07 1994 *************** *** 1,4 **** ! # @(#)Makefile 8.1 (Berkeley) 6/8/93 DIR= smm/09.sendmail SRCS= intro.me --- 1,4 ---- ! # @(#)Makefile 8.2 (Berkeley) 2/28/94 DIR= smm/09.sendmail SRCS= intro.me *************** *** 7,12 **** --- 7,13 ---- all: intro.ps intro.ps: ${SRCS} + rm -f ${.TARGET} ${PIC} ${SRCS} | ${ROFF} > ${.TARGET} .include *** doc/op/Makefile.OLD Tue Jun 8 17:24:19 1993 --- doc/op/Makefile Mon Feb 28 10:17:05 1994 *************** *** 1,4 **** ! # @(#)Makefile 8.1 (Berkeley) 6/8/93 DIR= smm/08.sendmailop SRCS= op.me --- 1,4 ---- ! # @(#)Makefile 8.2 (Berkeley) 2/28/94 DIR= smm/08.sendmailop SRCS= op.me *************** *** 7,12 **** --- 7,13 ---- all: op.ps op.ps: ${SRCS} + rm -f ${.TARGET} ${PIC} ${SRCS} | ${EQN} | ${ROFF} > ${.TARGET} .include *** doc/op/op.me.OLD Wed Jan 12 06:52:00 1994 --- doc/op/op.me Thu Mar 3 08:09:48 1994 *************** *** 30,36 **** .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" ! .\" @(#)op.me 8.32 (Berkeley) 1/12/94 .\" .\" eqn op.me | pic | troff -me .eh 'SMM:08-%''Sendmail Installation and Operation Guide' --- 30,36 ---- .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" ! .\" @(#)op.me 8.34 (Berkeley) 3/3/94 .\" .\" eqn op.me | pic | troff -me .eh 'SMM:08-%''Sendmail Installation and Operation Guide' *************** *** 69,75 **** Mammoth Project eric@CS.Berkeley.EDU .sp ! Version 8.32 .sp For Sendmail Version 8.6 .)l --- 69,75 ---- Mammoth Project eric@CS.Berkeley.EDU .sp ! Version 8.34 .sp For Sendmail Version 8.6 .)l *************** *** 2471,2480 **** and assigned to the .b $u macro. .pp ! Normally, a ruleset that matches is retried, that is, ! the ruleset loops until it fails. A RHS may also be preceded by a .b $@ or a --- 2471,2492 ---- and assigned to the .b $u macro. + As a special case, if the value to + .b $# + is + .q local + and the first character of the + .b $: + value is + .q @ , + the + .q @ + is stripped off, and a flag is set in the address descriptor + that causes sendmail to not do ruleset 5 processing. .pp ! Normally, a rule that matches is retried, that is, ! the rule loops until it fails. A RHS may also be preceded by a .b $@ or a *************** *** 3387,3393 **** This is the default if the .b L flag is set. ! Note that setting this is not sufficient to get full eight bit data passed through .i sendmail . If the --- 3399,3405 ---- This is the default if the .b L flag is set. ! Note that clearing this option is not sufficient to get full eight bit data passed through .i sendmail . If the *************** *** 6875,6881 **** .\"Eric Allman .\"Britton-Lee, Inc. .\".sp ! .\"Version 8.32 .\".ce 0 .bp 2 .rs --- 6887,6893 ---- .\"Eric Allman .\"Britton-Lee, Inc. .\".sp ! .\"Version 8.34 .\".ce 0 .bp 2 .rs *** doc/usenix/Makefile.OLD Mon Jun 7 10:18:10 1993 --- doc/usenix/Makefile Mon Feb 28 10:17:36 1994 *************** *** 1,4 **** ! # @(#)Makefile 8.1 (Berkeley) 6/7/93 SRCS= usenix.me MACROS= -me --- 1,4 ---- ! # @(#)Makefile 8.2 (Berkeley) 2/28/94 SRCS= usenix.me MACROS= -me *************** *** 6,11 **** --- 6,12 ---- all: usenix.ps usenix.ps: ${SRCS} + rm -f ${.TARGET} ${PIC} ${SRCS} | ${ROFF} > ${.TARGET} .include *** praliases/praliases.c.OLD Wed Sep 22 10:55:40 1993 --- praliases/praliases.c Sun Mar 6 08:59:32 1994 *************** *** 39,45 **** #endif /* not lint */ #ifndef lint ! static char sccsid[] = "@(#)praliases.c 8.2 (Berkeley) 9/22/93"; #endif /* not lint */ #include --- 39,45 ---- #endif /* not lint */ #ifndef lint ! static char sccsid[] = "@(#)praliases.c 8.3 (Berkeley) 3/6/94"; #endif /* not lint */ #include *************** *** 85,99 **** if (db = dbopen(buf, O_RDONLY, 0444 , DB_HASH, NULL)) { if (!argc) { while(!db->seq(db, &newdbkey, &newdbcontent, R_NEXT)) ! printf("%s:%s\n", newdbkey.data, ! newdbcontent.data); } else for (; *argv; ++argv) { newdbkey.data = *argv; newdbkey.size = strlen(*argv) + 1; ! if ( !db->get(db, &newdbkey, &newdbcontent, 0) ) ! printf("%s:%s\n", newdbkey.data, ! newdbcontent.data); else printf("%s: No such key\n", newdbkey.data); --- 85,100 ---- if (db = dbopen(buf, O_RDONLY, 0444 , DB_HASH, NULL)) { if (!argc) { while(!db->seq(db, &newdbkey, &newdbcontent, R_NEXT)) ! printf("%.*s:%.*s\n", ! newdbkey.size, newdbkey.data, ! newdbcontent.size, newdbcontent.data); } else for (; *argv; ++argv) { newdbkey.data = *argv; newdbkey.size = strlen(*argv) + 1; ! if (!db->get(db, &newdbkey, &newdbcontent, 0)) ! printf("%s:%.*s\n", newdbkey.data, ! newdbcontent.size, newdbcontent.data); else printf("%s: No such key\n", newdbkey.data); *************** *** 110,116 **** for (key = dbm_firstkey(dbp); key.dptr != NULL; key = dbm_nextkey(dbp)) { content = dbm_fetch(dbp, key); ! (void)printf("%s:%s\n", key.dptr, content.dptr); } else for (; *argv; ++argv) { key.dptr = *argv; --- 111,119 ---- for (key = dbm_firstkey(dbp); key.dptr != NULL; key = dbm_nextkey(dbp)) { content = dbm_fetch(dbp, key); ! (void)printf("%.*s:%.*s\n", ! key.dsize, key.dptr, ! content.dsize, content.dptr); } else for (; *argv; ++argv) { key.dptr = *argv; *************** *** 119,125 **** if (!content.dptr) (void)printf("%s: No such key\n", key.dptr); else ! (void)printf("%s:%s\n", key.dptr, content.dptr); } #ifdef NEWDB } --- 122,129 ---- if (!content.dptr) (void)printf("%s: No such key\n", key.dptr); else ! (void)printf("%s:%.*s\n", key.dptr, ! content.dsize, content.dptr); } #ifdef NEWDB } *** src/Makefile.OLD Mon Dec 20 10:52:10 1993 --- src/Makefile Sat Mar 5 11:51:53 1994 *************** *** 1,4 **** ! # @(#)Makefile 8.3 (Berkeley) 12/20/93 PROG= sendmail --- 1,4 ---- ! # @(#)Makefile 8.4 (Berkeley) 2/3/94 PROG= sendmail *************** *** 21,27 **** util.c version.c DPADD= LDADD= ! MAN1= newaliases.0 MAN5= aliases.0 MAN8= sendmail.0 LINKS= /usr/sbin/sendmail /usr/bin/newaliases \ --- 21,27 ---- util.c version.c DPADD= LDADD= ! MAN1= mailq.0 newaliases.0 MAN5= aliases.0 MAN8= sendmail.0 LINKS= /usr/sbin/sendmail /usr/bin/newaliases \ *** src/Makefile.BSD43.OLD Wed Feb 2 05:51:28 1994 --- src/Makefile.BSD43 Sat Mar 5 11:50:24 1994 *************** *** 8,13 **** --- 8,18 ---- # This is based on work from Jim Oldroyd -- I believe he was # using a fairly old Mt Xinu port. # + # It should also work on UMIPS-BSD from MIPS, if you still have + # any lying around. + # + # @(#)Makefile.BSD43 8.2 (Berkeley) 3/5/94 + # # use O=-O (usual) or O=-g (debugging) O= -O *************** *** 65,71 **** BINGRP= kmem BINMODE=6555 ! ALL= sendmail aliases.0 newaliases.0 sendmail.0 all: ${ALL} --- 70,76 ---- BINGRP= kmem BINMODE=6555 ! ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0 all: ${ALL} *************** *** 87,92 **** --- 92,100 ---- aliases.0: aliases.5 nroff -h -mandoc aliases.5 > aliases.0 + mailq.0: mailq.1 + nroff -h -mandoc mailq.1 > mailq.0 + newaliases.0: newaliases.1 nroff -h -mandoc newaliases.1 > newaliases.0 *************** *** 103,112 **** install -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR} # doesn't actually install them -- you may want to install pre-nroff versions ! install-docs: aliases.0 newaliases.0 sendmail.0 clean: ! rm -f ${OBJS} sendmail aliases.0 newaliases.0 sendmail.0 # dependencies # gross overkill, and yet still not quite enough.... --- 111,120 ---- install -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR} # doesn't actually install them -- you may want to install pre-nroff versions ! install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0 clean: ! rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0 # dependencies # gross overkill, and yet still not quite enough.... *** src/Makefile.BSDI.OLD Thu Feb 3 08:52:53 1994 --- src/Makefile.BSDI Sat Mar 5 11:51:53 1994 *************** *** 1,97 **** ! # ! # This Makefile is designed to work on the old "make" program. It does ! # not use the obj subdirectory. It also does not install documentation ! # automatically -- think of it as a quick start for sites that have the ! # old make program (I recommend that you get and port the new make if you ! # are going to be doing any signficant work on sendmail). ! # ! # This has been tested on BSDI's BSD/386 release 1.0. ! # ! # use O=-O (usual) or O=-g (debugging) ! O= -O ! # define the database mechanisms available for map & alias lookups: ! # -DNDBM -- use new DBM ! # -DNEWDB -- use new Berkeley DB ! # -DNIS -- include NIS support ! # The really old (V7) DBM library is no longer supported. ! # See READ_ME for a description of how these flags interact. ! # ! DBMDEF= -DNDBM -DNEWDB -DOLD_NEWDB ! ! # environment definitions (e.g., -D_AIX3) ! ENVDEF= -DLA_TYPE=LA_SUBR ! ! # see also conf.h for additional compilation flags ! ! # include directories ! #INCDIRS=-I/usr/sww/include/db ! ! # library directories ! #LIBDIRS=-L/usr/sww/lib ! ! # libraries required on your system ! LIBS= -lutil -lkvm ! ! # location of sendmail binary (usually /usr/sbin or /usr/lib) ! BINDIR= ${DESTDIR}/usr/sbin ! ! # location of sendmail.st file (usually /var/log or /usr/lib) ! STDIR= ${DESTDIR}/var/log ! ! # location of sendmail.hf file (usually /usr/share/misc or /usr/lib) ! HFDIR= ${DESTDIR}/usr/share/misc ! ! # additional .o files needed ! OBJADD= ! ! ################### end of user configuration flags ###################### ! ! CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF} ! ! OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \ ! deliver.o domain.o envelope.o err.o headers.o macro.o main.o \ ! map.o mci.o parseaddr.o queue.o readcf.o recipient.o \ ! savemail.o srvrsmtp.o stab.o stats.o sysexits.o \ ! trace.o udb.o usersmtp.o util.o version.o ${OBJADD} ! ! LINKS= ${DESTDIR}/usr/bin/newaliases ${DESTDIR}/usr/bin/mailq BINOWN= root BINGRP= kmem BINMODE=6555 ! ALL= sendmail aliases.0 newaliases.0 sendmail.0 ! ! all: ${ALL} ! ! sendmail: ${BEFORE} ${OBJS} ! ${CC} -o sendmail ${OBJS} ${LIBDIRS} ${LIBS} ! ! aliases.0: aliases.5 ! nroff -mandoc aliases.5 > aliases.0 ! ! newaliases.0: newaliases.1 ! nroff -mandoc newaliases.1 > newaliases.0 ! ! sendmail.0: sendmail.8 ! nroff -mandoc sendmail.8 > sendmail.0 ! ! install: install-sendmail install-docs ! ! install-sendmail: sendmail ! install -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR} ! for i in ${LINKS}; do (rm -f $$i; ln -s ${BINDIR}/sendmail $$i); done install -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \ ! ${STDIR}/sendmail.st ! install -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR} ! # doesn't actually install them -- you may want to install pre-nroff versions ! install-docs: aliases.0 newaliases.0 sendmail.0 ! ! clean: ! rm -f ${OBJS} sendmail aliases.0 newaliases.0 sendmail.0 ! ! # dependencies ! # gross overkill, and yet still not quite enough.... ! ${OBJS}: sendmail.h conf.h --- 1,32 ---- ! # @(#)Makefile.BSDI 8.1 (Berkeley) 2/26/94 ! PROG= sendmail ! DBMDEF= -DNEWDB ! CFLAGS+=-I${.CURDIR} ${DBMDEF} -DNETISO ! SRCS= alias.c arpadate.c clock.c collect.c conf.c convtime.c daemon.c \ ! deliver.c domain.c envelope.c err.c headers.c macro.c main.c map.c \ ! mci.c parseaddr.c queue.c readcf.c recipient.c savemail.c srvrsmtp.c \ ! stab.c stats.c sysexits.c trace.c udb.c usersmtp.c \ ! util.c version.c ! DPADD= ${LIBUTIL} ${LIBKVM} ! LDADD= -lutil -lkvm ! MAN1= mailq.0 newaliases.0 ! MAN5= aliases.0 ! MAN8= sendmail.0 ! LINKS= /usr/sbin/sendmail /usr/bin/newaliases \ ! /usr/sbin/sendmail /usr/bin/mailq ! BINDIR= /usr/sbin BINOWN= root BINGRP= kmem BINMODE=6555 ! beforeinstall: ! # install -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \ ! # ${DESTDIR}/etc/sendmail.fc install -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \ ! ${DESTDIR}/var/log/sendmail.st ! install -c -o ${BINOWN} -g ${BINGRP} -m 444 ${.CURDIR}/sendmail.hf \ ! ${DESTDIR}/usr/share/misc ! .include *** src/Makefile.DomainOS.OLD Sat Jan 22 07:36:32 1994 --- src/Makefile.DomainOS Tue Mar 8 10:00:08 1994 *************** *** 0 **** --- 1,121 ---- + # + # This Makefile is designed to work on the old "make" program. It does + # not use the obj subdirectory. It also does not install documentation + # automatically -- think of it as a quick start for sites that have the + # old make program (I recommend that you get and port the new make if you + # are going to be doing any signficant work on sendmail). + # + # This has been tested on DomainOS 10.3.5 + # + # @(#)Makefile.DomainOS 8.3 (Berkeley) 3/8/94 + # + # + + # use O=-O (usual) or O=-g (debugging) + O= -O + + # define the database mechanisms available for map & alias lookups: + # -DNDBM -- use new DBM + # -DNEWDB -- use new Berkeley DB + # -DNDBM -DNEWDB -DYPCOMPAT -- use both plus YP compatility + # -DNIS -- include client NIS support + # The really old (V7) DBM library is no longer supported. + # If YPCOMPAT is defined and /var/yp/Makefile exists, sendmail will build + # both the NEWDB and DBM libraries (the DBM just for YP). + # + + DBMDEF= -DNDBM + + # environment definitions (e.g., -D_AIX3) + ENVDEF= + + # see also conf.h for additional compilation flags + + # include directories + INCDIRS= + + # loader options + LDOPTS= + + # library directories + LIBDIRS= + + # libraries required on your system + # You might want to use the BIND 4.9 resolver library here + #LIBS= -ldb -ldbm + LIBS= -ldbm -lresolv + + # location of sendmail binary (usually /usr/sbin or /usr/lib) + BINDIR= ${DESTDIR}/usr/lib + + # location of sendmail.st file (usually /var/log or /usr/lib) + STDIR= ${DESTDIR}/usr/adm + + # location of sendmail.hf file (usually /usr/share/misc or /usr/lib) + HFDIR= ${DESTDIR}/usr/lib + + # additional .o files needed + OBJADD= + + # additional pseudo-sources needed + BEFORE= unistd.h dirent.h + + ################### end of user configuration flags ###################### + + CFLAGS= -I. -A nansi $O ${INCDIRS} ${DBMDEF} ${ENVDEF} + + OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \ + deliver.o domain.o envelope.o err.o headers.o macro.o main.o \ + map.o mci.o parseaddr.o queue.o readcf.o recipient.o \ + savemail.o srvrsmtp.o stab.o stats.o sysexits.o \ + trace.o udb.o usersmtp.o util.o version.o ${OBJADD} + + LINKS= ${DESTDIR}/usr/ucb/newaliases ${DESTDIR}/usr/ucb/mailq + BINOWN= root + BINGRP= kmem + BINMODE=6555 + + ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0 + + all: ${ALL} + + sendmail: ${BEFORE} ${OBJS} + ${CC} -o sendmail ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS} + + unistd.h: + cp /dev/null unistd.h + + dirent.h: + echo "#include " > dirent.h + echo "#define dirent direct" >> dirent.h + + aliases.0: aliases.5 + nroff -h -mandoc aliases.5 > aliases.0 + + mailq.0: mailq.1 + nroff -h -mandoc mailq.1 > mailq.0 + + newaliases.0: newaliases.1 + nroff -h -mandoc newaliases.1 > newaliases.0 + + sendmail.0: sendmail.8 + nroff -h -mandoc sendmail.8 > sendmail.0 + + install: install-sendmail install-docs + + install-sendmail: sendmail + install -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR} + for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done + install -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \ + ${STDIR}/sendmail.st + install -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR} + + # doesn't actually install them -- you may want to install pre-nroff versions + install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0 + + clean: + rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0 + + # dependencies + # gross overkill, and yet still not quite enough.... + ${OBJS}: sendmail.h conf.h *** src/Makefile.NetBSD.OLD Mon Jan 10 07:29:03 1994 --- src/Makefile.NetBSD Sat Mar 5 11:51:53 1994 *************** *** 1,9 **** # # NetBSD Makefile # - # @(#)Makefile 8.2 (Berkeley) 8/15/93 - PROG= sendmail # define the database format to use for aliases et al. Can be -DNEWDB (for --- 1,10 ---- # # NetBSD Makefile # + # @(#)Makefile.NetBSD 8.1 (Berkeley) 2/26/94 + # @Id: Makefile.NetBSD,v 1.3 1994/02/01 05:33:44 glass Exp $ + # PROG= sendmail # define the database format to use for aliases et al. Can be -DNEWDB (for *************** *** 14,20 **** # databases are read, but the new format will be used on any rebuilds. On # really gnarly systems, you can set this to null; it will crawl like a high # spiral snail, but it will work. ! DBMDEF= -DNEWDB -DNDBM #nasty warning about gcc 2.4.x caused bugs CFLAGS=-I${.CURDIR} ${DBMDEF} -DNETISO --- 15,21 ---- # databases are read, but the new format will be used on any rebuilds. On # really gnarly systems, you can set this to null; it will crawl like a high # spiral snail, but it will work. ! DBMDEF= -DNEWDB -DNIS #nasty warning about gcc 2.4.x caused bugs CFLAGS=-I${.CURDIR} ${DBMDEF} -DNETISO *************** *** 25,33 **** mci.c parseaddr.c queue.c readcf.c recipient.c savemail.c srvrsmtp.c \ stab.c stats.c sysexits.c trace.c udb.c usersmtp.c \ util.c version.c ! DPADD= $(LIBUTIL) ! LDADD= -lutil ! MAN1= newaliases.0 MAN5= aliases.0 MAN8= sendmail.0 LINKS= /usr/sbin/sendmail /usr/bin/newaliases \ --- 26,32 ---- mci.c parseaddr.c queue.c readcf.c recipient.c savemail.c srvrsmtp.c \ stab.c stats.c sysexits.c trace.c udb.c usersmtp.c \ util.c version.c ! MAN1= mailq.0 newaliases.0 MAN5= aliases.0 MAN8= sendmail.0 LINKS= /usr/sbin/sendmail /usr/bin/newaliases \ *************** *** 34,41 **** /usr/sbin/sendmail /usr/bin/mailq BINDIR= /usr/sbin BINOWN= root ! BINGRP= kmem ! BINMODE=6555 beforeinstall: # install -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \ --- 33,39 ---- /usr/sbin/sendmail /usr/bin/mailq BINDIR= /usr/sbin BINOWN= root ! BINMODE=4555 beforeinstall: # install -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \ *** src/Makefile.PTX.OLD Wed Feb 9 09:42:29 1994 --- src/Makefile.PTX Sat Mar 5 11:50:26 1994 *************** *** 0 **** --- 1,109 ---- + # + # This Makefile is designed to work on the old "make" program. It does + # not use the obj subdirectory. It also does not install documentation + # automatically -- think of it as a quick start for sites that have the + # old make program (I recommend that you get and port the new make if you + # are going to be doing any signficant work on sendmail). + # + # For Sequent DYNIX/ptx. + # + # From Tim "Pinball Wizard" Wright . + # + # @(#)Makefile.PTX 8.2 (Berkeley) 3/5/94 + # + + # use O=-O (usual) or O=-g (debugging) + O= -g + + # define the database mechanisms available for map & alias lookups: + # -DNDBM -- use new DBM + # -DNEWDB -- use new Berkeley DB + # -DNIS -- include NIS support + # The really old (V7) DBM library is no longer supported. + # See READ_ME for a description of how these flags interact. + # + DBMDEF= -DNDBM + + # environment definitions (e.g., -D_AIX3) + ENVDEF= + + # see also conf.h for additional compilation flags + + # include directories + #INCDIRS=-I/usr/sww/include/db + INCDIRS= + + # loader options + LDOPTS= + + # library directories + #LIBDIRS=-L/usr/sww/lib + LIBDIRS= + + # libraries required on your system + #LIBS= -ldb -ldbm + LIBS= -lsocket -linet -lnsl -lseq + + # location of sendmail binary (usually /usr/sbin or /usr/lib) + BINDIR= ${DESTDIR}/usr/lib + + # location of sendmail.st file (usually /var/log or /usr/lib) + STDIR= ${DESTDIR}/usr/lib + + # location of sendmail.hf file (usually /usr/share/misc or /usr/lib) + HFDIR= ${DESTDIR}/usr/lib + + # additional .o files needed + OBJADD= + + ################### end of user configuration flags ###################### + + CFLAGS= -I. $O ${INCDIRS} ${DBMDEF} ${ENVDEF} + + OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \ + deliver.o domain.o envelope.o err.o headers.o macro.o main.o \ + map.o mci.o parseaddr.o queue.o readcf.o recipient.o \ + savemail.o srvrsmtp.o stab.o stats.o sysexits.o \ + trace.o udb.o usersmtp.o util.o version.o ${OBJADD} + + LINKS= ${DESTDIR}/usr/bin/newaliases ${DESTDIR}/usr/bin/mailq + BINOWN= root + BINGRP= sys + BINMODE=6555 + + ALL= sendmail aliases.0 newaliases.0 sendmail.0 + + all: ${ALL} + + sendmail: $& ${BEFORE} ${OBJS} + ${CC} -o sendmail ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS} + + aliases.0: aliases.5 + nroff -h -mandoc aliases.5 > aliases.0 + + newaliases.0: newaliases.1 + nroff -h -mandoc newaliases.1 > newaliases.0 + + sendmail.0: sendmail.8 + nroff -h -mandoc sendmail.8 > sendmail.0 + + INSTALL=install + + install: install-sendmail install-docs + + install-sendmail: sendmail + ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR} + for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done + ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 /dev/null \ + ${STDIR}/sendmail.st + ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR} + + # doesn't actually install them -- you may want to install pre-nroff versions + install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0 + + clean: + rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0 + + # dependencies + # gross overkill, and yet still not quite enough.... + ${OBJS}: sendmail.h conf.h *** src/Makefile.dist.OLD Mon Dec 20 10:52:10 1993 --- src/Makefile.dist Sat Mar 5 11:50:24 1994 *************** *** 5,11 **** # old make program (I recommend that you get and port the new make if you # are going to be doing any signficant work on sendmail). # ! # @(#)Makefile.dist 8.9 (Berkeley) 12/20/93 # # use O=-O (usual) or O=-g (debugging) --- 5,11 ---- # old make program (I recommend that you get and port the new make if you # are going to be doing any signficant work on sendmail). # ! # @(#)Makefile.dist 8.11 (Berkeley) 3/5/94 # # use O=-O (usual) or O=-g (debugging) *************** *** 64,70 **** BINGRP= kmem BINMODE=6555 ! ALL= sendmail aliases.0 newaliases.0 sendmail.0 all: ${ALL} --- 64,70 ---- BINGRP= kmem BINMODE=6555 ! ALL= sendmail aliases.0 mailq.0 newaliases.0 sendmail.0 all: ${ALL} *************** *** 74,79 **** --- 74,82 ---- aliases.0: aliases.5 nroff -h -mandoc aliases.5 > aliases.0 + mailq.0: mailq.1 + nroff -h -mandoc mailq.1 > mailq.0 + newaliases.0: newaliases.1 nroff -h -mandoc newaliases.1 > newaliases.0 *************** *** 92,101 **** ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR} # doesn't actually install them -- you may want to install pre-nroff versions ! install-docs: aliases.0 newaliases.0 sendmail.0 clean: ! rm -f ${OBJS} sendmail aliases.0 newaliases.0 sendmail.0 # dependencies # gross overkill, and yet still not quite enough.... --- 95,104 ---- ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR} # doesn't actually install them -- you may want to install pre-nroff versions ! install-docs: aliases.0 mailq.0 newaliases.0 sendmail.0 clean: ! rm -f ${OBJS} sendmail aliases.0 mailq.0 newaliases.0 sendmail.0 # dependencies # gross overkill, and yet still not quite enough.... *** src/READ_ME.OLD Wed Jan 12 06:00:15 1994 --- src/READ_ME Sun Mar 13 09:38:25 1994 *************** *** 30,36 **** # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # ! # @(#)READ_ME 8.47 (Berkeley) 1/12/94 # This directory contains the source files for sendmail. --- 30,36 ---- # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # ! # @(#)READ_ME 8.58 (Berkeley) 3/13/94 # This directory contains the source files for sendmail. *************** *** 138,143 **** --- 138,149 ---- BSD/386 or 386BSD-based systems, use the one that already exists on your system. You may need to define OLD_NEWDB to do this.] + [NOTE WELL: it is CRITICAL that you remove ndbm.o from libdb.a and + ndbm.h from the appropriate include directories if you want to get + ndbm support. These files OVERRIDE calls to ndbm routines -- in + particular, if you leave ndbm.h in, you can find yourself using + the new db package even if you don't define NEWDB.] + If NEWDB and NDBM are defined (but not NIS), then sendmail will read NDBM format alias files, but the next time a newaliases is run the format will be converted to NEWDB; that format will be used forever *************** *** 179,184 **** --- 185,191 ---- have to make -- see below. _AIX3 Define this if you are IBM AIX 3.x. RISCOS Define this if you are running RISC/os from MIPS. + IRIX Define this if you are running IRIX from SGI. _SCO_unix_ Define this if you are on SCO UNIX. _SCO_unix_4_2 Define this if you are on SCO Open Server 3.2v4. *************** *** 204,215 **** SYSTEM5. HASUNSETENV Define this if your system library has the "unsetenv" subroutine. - HASSTATFS Define this if you have the statfs(2) system call. It's - not a disaster to get this wrong -- but you do lose the - queue free space code. - HASUSTAT Define this if you have the ustat(2) system call. It's - not a disaster to get this wrong -- but you do lose the - queue free space code. HASSETSID Define this if you have the setsid(2) system call. This is implied if your system appears to be POSIX compliant. HASINITGROUPS Define this if you have the initgroups(3) routine. --- 211,216 ---- *************** *** 270,288 **** If you are an very old compiler you may need to define this to be "char *". LA_TYPE The type of load average your kernel supports. These ! can be LA_SUBR (4) if you have the getloadavg(3) routine, LA_MACH (5) to use MACH-style load averages (calls ! processor_set_info()), LA_FLOAT (3) if you read kmem and ! interpret the value as a floating point number, LA_INT (2) ! to interpret as a long integer, or LA_SHORT (6) to ! interpret as a short integer. These last three have ! several other parameters that they try to divine: the ! name of your kernel, the name of the variable in the ! kernel to examine, the number of bits of precision in ! a fixed point load average, and so forth. In desparation, ! use LA_ZERO (1) -- it always returns the load average as ! "zero" (and does so on all architectures). The actual ! code is in conf.c -- it can be tweaked if you are brave. ERRLIST_PREDEFINED If set, assumes that some header file defines sys_errlist. This may be needed if you get type conflicts on this --- 271,306 ---- If you are an very old compiler you may need to define this to be "char *". LA_TYPE The type of load average your kernel supports. These ! can be one of: ! LA_ZERO (1) -- it always returns the load average as ! "zero" (and does so on all architectures). ! LA_SUBR (4) if you have the getloadavg(3) routine, LA_MACH (5) to use MACH-style load averages (calls ! processor_set_info()), ! LA_PROCSTR (7) to read /proc/loadavg and interpret it ! as a string representing a floating-point ! number (Linux-style), ! LA_FLOAT (3) if you read kmem and interpret the value ! as a floating point number, ! LA_INT (2) to interpret as a long integer, ! LA_SHORT (6) to interpret as a short integer. ! These last three have several other parameters that they ! try to divine: the name of your kernel, the name of the ! variable in the kernel to examine, the number of bits of ! precision in a fixed point load average, and so forth. ! In desperation, use LA_ZERO. The actual code is in ! conf.c -- it can be tweaked if you are brave. ! SFS_TYPE Encodes how your kernel can locate the amount of free ! space on a disk partition. This can be set to SFS_NONE ! (0) if you have no way of getting this information, ! SFS_USTAT (1) if you have the ustat(2) system call, ! SFS_4ARGS (2) if you have a four-argument statfs(2) ! system call (and the include file is ), ! and SFS_VFS (3), SFS_MOUNT (4), or SFS_STATFS (5) if ! you have the two-argument statfs(2) system call, with ! includes in , , or ! respectively. The default if nothing is defined is ! SFS_NONE. ERRLIST_PREDEFINED If set, assumes that some header file defines sys_errlist. This may be needed if you get type conflicts on this *************** *** 301,306 **** --- 319,330 ---- e-mail message will log many more messages, since it will log each piece of information as a separate line in syslog. + BROKEN_RES_SEARCH + On Ultrix (and maybe other systems?) if you use the + res_search routine with an unknown host name, it returns + -1 but sets h_errno to 0 instead of HOST_NOT_FOUND. If + you set this, sendmail considers 0 to be the same as + HOST_NOT_FOUND. +-----------------------+ *************** *** 371,377 **** the header files you used -- some people have used the 4.9 headers and linked with BIND 4.8 or vice versa, and it doesn't work. Unfortunately, it doesn't fail in an obvious way -- things just ! subtlely don't work. +-------------------------------------+ --- 395,401 ---- the header files you used -- some people have used the 4.9 headers and linked with BIND 4.8 or vice versa, and it doesn't work. Unfortunately, it doesn't fail in an obvious way -- things just ! subtly don't work. +-------------------------------------+ *************** *** 440,445 **** --- 464,473 ---- Solaris 2.x (SunOS 5.x) To compile for Solaris, be sure you use -DSOLARIS. + To the best of my knowledge, Solaris does not have the + gethostbyname problem described above. However, it does + have another one: + From a correspondent: For solaris 2.2, I have *************** *** 450,467 **** qualified host name. I think "files" has to be before "dns" in /etc/nsswitch.conf during bootup. ! To the best of my knowledge, Solaris does not have the ! gethostbyname problem described above. The Solaris "syslog" function is apparently limited to something about 90 characters because of a kernel limitation. If you have ! source code, you can probably up this number. The syslogd patch ! is included in kernel jumbo patch for Solaris 2.2 as of revision ! -39 or so. At least one person is running with patch 100999-45 ! and their long lost sendmail logging is finally showing up. At ! least one other person is running with patch 101318 installed ! under Solaris 2.3 with success. OSF/1 If you are compiling on OSF/1 (DEC Alpha), you must use -L/usr/shlib (otherwise it core dumps on startup). You may also --- 478,519 ---- qualified host name. I think "files" has to be before "dns" in /etc/nsswitch.conf during bootup. ! From another correspondent: + When running sendmail under Solaris, the gethostbyname() + hack in conf.c which should perform proper canonicalization + of host names could fail. Result: the host name is not + canonicalized despite the hack, and you'll have to define $j + and $m in sendmail.cf somewhere. + + The reason could be that /etc/nsswitch.conf is improperly + configured (at least from sendmail's point of view). For + example, the line + + hosts: files nisplus dns + + will make gethostbyname() look in /etc/hosts first, then ask + nisplus, then dns. However, if /etc/hosts does not contain + the full canonicalized hostname, then no amount of + gethostbyname()s will work. + + Solution (or rather, a workaround): Ask nisplus first, then + dns, then local files: + + hosts: nisplus dns [NOTFOUND=return] files + The Solaris "syslog" function is apparently limited to something about 90 characters because of a kernel limitation. If you have ! source code, you can probably up this number. You can get patches ! that fix this problem: the patch ids are: + Solaris 2.1 100834 + Solaris 2.2 100999 + Solaris 2.3 101318 + + Be sure you have the appropriate patch installed or you won't + see system logging. + OSF/1 If you are compiling on OSF/1 (DEC Alpha), you must use -L/usr/shlib (otherwise it core dumps on startup). You may also *************** *** 471,476 **** --- 523,539 ---- Also, the enclosed makefile removed /usr/sbin/smtpd; if you need it, just create the link to the sendmail binary. + IRIX + The header files on SGI IRIX are completely prototyped, and as + a result you can sometimes get some warning messages during + compilation. These can be ignored. There are two errors in + deliver only if you are using gcc, both of the form ``warning: + passing arg N of `execve' from incompatible pointer type''. + Also, if you compile with -DNIS, you will get a complaint + about a declaration of struct dom_binding in a prototype + when compiling map.c; this is not important because the + function being prototyped is not used in that file. + NeXT If you are compiling on NeXT, you will have to create an empty file "unistd.h" and create a file "dirent.h" containing: *************** *** 560,565 **** --- 623,672 ---- DG/UX -- the person who has this working, Douglas Anderson , used procmail instead. + Apollo DomainOS + If you are compiling on Apollo, you will have to create an empty + file "unistd.h" and create a file "dirent.h" containing: + + #include + #define dirent direct + + (The Makefile.DomainOS will attempt to do both of these for you.) + + HP-UX 8.00 + Date: Mon, 24 Jan 1994 13:25:45 +0200 + From: Kimmo Suominen + Subject: 8.6.5 w/ HP-UX 8.00 on s300 + + Just compiled and fought with sendmail 8.6.5 on a HP9000/360 (ie. a + series 300 machine) running HP-UX 8.00. + + I was getting segmentation fault when delivering to a local user. + With debugging I saw it was faulting when doing _free@libc... *sigh* + It seems the new implementation of malloc on s300 is buggy as of 8.0, + so I tried out the one in -lmalloc (malloc(3X)). With that it seems + to work just dandy. + + When linking, you will get the following error: + + ld: multiply defined symbol _freespace in file /usr/lib/libmalloc.a + + but you can just ignore it. You might want to add this info to the + README file for the future... + + Linux + Something broke between versions 0.99.13 and 0.99.14 of Linux: + the flock() system call gives errors. If you are running .14, + you must not use flock. You can do this with -DHASFLOCK=0. + + AIX + This version of sendmail does not support MB, MG, and MR resource + records, which are supported by AIX sendmail. + + RISC/os + RISC/os from MIPS is a merged AT&T/Berkeley system. When you + compile on that platform you will get duplicate definitions + on many files. You can ignore these. + System V Release 4 Based Systems There is a single Makefile that is intended for all SVR4-based systems (called Makefile.SVR4). It defines __svr4__, which is *************** *** 642,648 **** --- 749,767 ---- I'm told that GNU getopt has a problem in that it gets confused by the double call. Use the version in conf.c instead. + BIND 4.9.2 and Ultrix + If you are running on Ultrix, be sure you read the conf/Info.Ultrix + carefully -- there is information in there that you need to know + in order to avoid errors of the form: + /lib/libc.a(gethostent.o): sethostent: multiply defined + /lib/libc.a(gethostent.o): endhostent: multiply defined + /lib/libc.a(gethostent.o): gethostbyname: multiply defined + /lib/libc.a(gethostent.o): gethostbyaddr: multiply defined + + during the link stage. + + +--------------+ | MANUAL PAGES | +--------------+ *************** *** 742,745 **** Eric Allman ! (Version 8.47, last update 1/12/94 05:59:56) --- 861,864 ---- Eric Allman ! (Version 8.58, last update 3/13/94 09:38:06) *** src/alias.c.OLD Sat Dec 11 14:21:35 1993 --- src/alias.c Mon Feb 28 10:04:58 1994 *************** *** 36,42 **** # include #ifndef lint ! static char sccsid[] = "@(#)alias.c 8.21 (Berkeley) 12/11/93"; #endif /* not lint */ --- 36,42 ---- # include #ifndef lint ! static char sccsid[] = "@(#)alias.c 8.24 (Berkeley) 2/28/94"; #endif /* not lint */ *************** *** 114,120 **** message("aliased to %s", p); #ifdef LOG if (LogLevel > 9) ! syslog(LOG_INFO, "%s: alias %s => %s", e->e_id, a->q_paddr, p); #endif a->q_flags &= ~QSELFREF; AliasLevel++; --- 114,122 ---- message("aliased to %s", p); #ifdef LOG if (LogLevel > 9) ! syslog(LOG_INFO, "%s: alias %s => %s", ! e->e_id == NULL ? "NOQUEUE" : e->e_id, ! a->q_paddr, p); #endif a->q_flags &= ~QSELFREF; AliasLevel++; *************** *** 417,423 **** /* try to lock the source file */ if ((af = fopen(map->map_file, "r+")) == NULL) { ! if (errno != EACCES || automatic || (af = fopen(map->map_file, "r")) == NULL) { int saveerr = errno; --- 419,425 ---- /* try to lock the source file */ if ((af = fopen(map->map_file, "r+")) == NULL) { ! if ((errno != EACCES && errno != EROFS) || automatic || (af = fopen(map->map_file, "r")) == NULL) { int saveerr = errno; *************** *** 748,754 **** #ifdef LOG if (LogLevel > 2) syslog(LOG_ERR, "%s: forward %s: transient error: %s", ! e->e_id, buf, errstring(err)); #endif message("%s: %s: message queued", buf, errstring(err)); user->q_flags |= QQUEUEUP; --- 750,757 ---- #ifdef LOG if (LogLevel > 2) syslog(LOG_ERR, "%s: forward %s: transient error: %s", ! e->e_id == NULL ? "NOQUEUE" : e->e_id, ! buf, errstring(err)); #endif message("%s: %s: message queued", buf, errstring(err)); user->q_flags |= QQUEUEUP; *** src/collect.c.OLD Sat Jan 8 17:29:31 1994 --- src/collect.c Mon Jan 31 17:01:17 1994 *************** *** 33,39 **** */ #ifndef lint ! static char sccsid[] = "@(#)collect.c 8.8 (Berkeley) 1/8/94"; #endif /* not lint */ # include --- 33,39 ---- */ #ifndef lint ! static char sccsid[] = "@(#)collect.c 8.9 (Berkeley) 1/31/94"; #endif /* not lint */ # include *************** *** 317,324 **** "collect: %s on connection from %s, sender=%s: %m\n", problem, host, e->e_from.q_paddr); # endif ! (feof(InChannel) ? usrerr : syserr) ! ("451 collect: %s on connection from %s, from=%s", problem, host, e->e_from.q_paddr); /* don't return an error indication */ --- 317,327 ---- "collect: %s on connection from %s, sender=%s: %m\n", problem, host, e->e_from.q_paddr); # endif ! if (feof(InChannel)) ! usrerr("451 collect: %s on connection from %s, from=%s", ! problem, host, e->e_from.q_paddr); ! else ! syserr("451 collect: %s on connection from %s, from=%s", problem, host, e->e_from.q_paddr); /* don't return an error indication */ *** src/conf.c.OLD Tue Jan 11 07:04:01 1994 --- src/conf.c Sun Mar 6 09:31:18 1994 *************** *** 33,39 **** */ #ifndef lint ! static char sccsid[] = "@(#)conf.c 8.62 (Berkeley) 1/9/94"; #endif /* not lint */ # include "sendmail.h" --- 33,39 ---- */ #ifndef lint ! static char sccsid[] = "@(#)conf.c 8.82 (Berkeley) 3/6/94"; #endif /* not lint */ # include "sendmail.h" *************** *** 628,633 **** --- 628,634 ---- #define LA_SUBR 4 /* call getloadavg */ #define LA_MACH 5 /* MACH load averages (as on NeXT boxes) */ #define LA_SHORT 6 /* read kmem for avenrun; interpret as short */ + #define LA_PROCSTR 7 /* read string ("1.17") from /proc/loadavg */ /* do guesses based on general OS type */ #ifndef LA_TYPE *************** *** 827,836 **** --- 828,883 ---- #else + #if LA_TYPE == LA_PROCSTR + /* + ** Read /proc/loadavg for the load average. This is assumed to be + ** in a format like "0.15 0.12 0.06". + ** + ** Initially intended for Linux. This has been in the kernel + ** since at least 0.99.15. + */ + + # ifndef _PATH_LOADAVG + # define _PATH_LOADAVG "/proc/loadavg" + # endif + + int getla() { + double avenrun; + register int result; + FILE *fp; + + fp = fopen(_PATH_LOADAVG, "r"); + if (fp == NULL) + { + if (tTd(3, 1)) + printf("getla: fopen(%s): %s\n", + _PATH_LOADAVG, errstring(errno)); + return -1; + } + result = fscanf(fp, "%lf", &avenrun); + fclose(fp); + if (result != 1) + { + if (tTd(3, 1)) + printf("getla: fscanf() = %d: %s\n", + result, errstring(errno)); + return -1; + } + if (tTd(3, 1)) + printf("getla(): %.2f\n", avenrun); + + return ((int) (avenrun + 0.5)); + } + + #else + + getla() + { + if (tTd(3, 1)) printf("getla: ZERO\n"); return (0); } *************** *** 838,843 **** --- 885,938 ---- #endif #endif #endif + #endif + + + /* + * Copyright 1989 Massachusetts Institute of Technology + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of M.I.T. not be used in advertising or + * publicity pertaining to distribution of the software without specific, + * written prior permission. M.I.T. makes no representations about the + * suitability of this software for any purpose. It is provided "as is" + * without express or implied warranty. + * + * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T. + * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Authors: Many and varied... + */ + + /* Non Apollo stuff removed by Don Lewis 11/15/93 */ + #ifndef lint + static char rcsid[] = "@(#)$Id: getloadavg.c,v 1.16 1991/06/21 12:51:15 paul Exp $"; + #endif /* !lint */ + + #ifdef apollo + # undef volatile + # include + + /* ARGSUSED */ + int getloadavg( call_data ) + caddr_t call_data; /* pointer to (double) return value */ + { + double *avenrun = (double *) call_data; + int i; + status_$t st; + long loadav[3]; + proc1_$get_loadav(loadav, &st); + *avenrun = loadav[0] / (double) (1 << 16); + return(0); + } + # endif /* apollo */ /* ** SHOULDQUEUE -- should this message be queued or sent? ** *************** *** 909,914 **** --- 1004,1012 ---- */ #ifdef SETPROCTITLE + # ifdef HASSETPROCTITLE + *** ERROR *** Cannot have both SETPROCTITLE and HASSETPROCTITLE defined + # endif # ifdef __hpux # include # endif *************** *** 932,937 **** --- 1030,1037 ---- # define PROCTITLEPAD ' ' #endif + #ifndef HASSETPROCTITLE + /*VARARGS1*/ #ifdef __STDC__ setproctitle(char *fmt, ...) *************** *** 986,991 **** --- 1086,1093 ---- # endif # endif /* SETPROCTITLE */ } + + #endif /* ** REAPCHILD -- pick up the body of my child, lest it become a zombie ** *************** *** 1407,1412 **** --- 1509,1516 ---- #endif + #define WILDCARD_SHELL "/SENDMAIL/ANY/SHELL/" + bool usershellok(shell) char *shell; *************** *** 1417,1423 **** setusershell(); while ((p = getusershell()) != NULL) ! if (strcmp(p, shell) == 0 || strcmp(p, "*") == 0) break; endusershell(); return p != NULL; --- 1521,1527 ---- setusershell(); while ((p = getusershell()) != NULL) ! if (strcmp(p, shell) == 0 || strcmp(p, WILDCARD_SHELL) == 0) break; endusershell(); return p != NULL; *************** *** 1452,1458 **** while (*p != '\0' && *p != '#' && !isspace(*p)) p++; *p = '\0'; ! if (strcmp(shell, q) == 0 || strcmp("*", q) == 0) { fclose(shellf); return TRUE; --- 1556,1562 ---- while (*p != '\0' && *p != '#' && !isspace(*p)) p++; *p = '\0'; ! if (strcmp(shell, q) == 0 || strcmp(WILDCARD_SHELL, q) == 0) { fclose(shellf); return TRUE; *************** *** 1480,1504 **** ** Puts the filesystem block size into bsize. */ ! #ifdef HASSTATFS ! # undef HASUSTAT #endif ! #if defined(HASUSTAT) # include #endif ! ! #ifdef HASSTATFS ! # if defined(IRIX) || defined(apollo) || defined(_SCO_unix_) || defined(UMAXV) || defined(DGUX) || defined(_AIX3) ! # include ! # else ! # if (defined(sun) && !defined(BSD)) || defined(__hpux) || defined(_CONVEX_SOURCE) || defined(NeXT) || defined(_AUX_SOURCE) || defined(MACH386) ! # include ! # else ! # include ! # endif ! # endif #endif long freespace(dir, bsize) --- 1584,1613 ---- ** Puts the filesystem block size into bsize. */ ! /* statfs types */ ! #define SFS_NONE 0 /* no statfs implementation */ ! #define SFS_USTAT 1 /* use ustat */ ! #define SFS_4ARGS 2 /* use four-argument statfs call */ ! #define SFS_VFS 3 /* use implementation */ ! #define SFS_MOUNT 4 /* use implementation */ ! #define SFS_STATFS 5 /* use implementation */ ! ! #ifndef SFS_TYPE ! # define SFS_TYPE SFS_NONE #endif ! #if SFS_TYPE == SFS_USTAT # include #endif ! #if SFS_TYPE == SFS_4ARGS || SFS_TYPE == SFS_STATFS ! # include #endif + #if SFS_TYPE == SFS_VFS + # include + #endif + #if SFS_TYPE == SFS_MOUNT + # include + #endif long freespace(dir, bsize) *************** *** 1505,1512 **** char *dir; long *bsize; { ! #if defined(HASSTATFS) || defined(HASUSTAT) ! # if defined(HASUSTAT) struct ustat fs; struct stat statbuf; # define FSBLOCKSIZE DEV_BSIZE --- 1614,1621 ---- char *dir; long *bsize; { ! #if SFS_TYPE != SFS_NONE ! # if SFS_TYPE == SFS_USTAT struct ustat fs; struct stat statbuf; # define FSBLOCKSIZE DEV_BSIZE *************** *** 1519,1525 **** # else struct statfs fs; # define FSBLOCKSIZE fs.f_bsize ! # if defined(_SCO_unix_) || defined(IRIX) # define f_bavail f_bfree # endif # endif --- 1628,1634 ---- # else struct statfs fs; # define FSBLOCKSIZE fs.f_bsize ! # if defined(_SCO_unix_) || defined(IRIX) || defined(apollo) # define f_bavail f_bfree # endif # endif *************** *** 1526,1535 **** # endif extern int errno; ! # if defined(HASUSTAT) if (stat(dir, &statbuf) == 0 && ustat(statbuf.st_dev, &fs) == 0) # else ! # if defined(IRIX) || defined(apollo) || defined(UMAXV) || defined(DGUX) if (statfs(dir, &fs, sizeof fs, 0) == 0) # else # if defined(ultrix) --- 1635,1644 ---- # endif extern int errno; ! # if SFS_TYPE == SFS_USTAT if (stat(dir, &statbuf) == 0 && ustat(statbuf.st_dev, &fs) == 0) # else ! # if SFS_TYPE == SFS_4ARGS if (statfs(dir, &fs, sizeof fs, 0) == 0) # else # if defined(ultrix) *************** *** 1694,1699 **** --- 1803,1811 ---- #ifdef EADDRNOTAVAIL case EADDRNOTAVAIL: /* Can't assign requested address */ #endif + #ifdef ETXTBSY + case ETXTBSY: /* (Apollo) file locked */ + #endif #if defined(ENOSR) && (!defined(ENOBUFS) || (ENOBUFS != ENOSR)) case ENOSR: /* Out of streams resources */ #endif *************** *** 1726,1732 **** char *ext; int type; { ! # ifndef HASFLOCK int action; struct flock lfd; --- 1838,1844 ---- char *ext; int type; { ! # if !HASFLOCK int action; struct flock lfd; *************** *** 1823,1828 **** --- 1935,1999 ---- return FALSE; } /* + ** CHOWNSAFE -- tell if chown is "safe" (executable only by root) + ** + ** Parameters: + ** fd -- the file descriptor to check. + ** + ** Returns: + ** TRUE -- if only root can chown the file to an arbitrary + ** user. + ** FALSE -- if an arbitrary user can give away a file. + */ + + bool + chownsafe(fd) + int fd; + { + #ifdef __hpux + char *s; + int tfd; + uid_t o_uid, o_euid; + gid_t o_gid, o_egid; + bool rval; + struct stat stbuf; + + o_uid = getuid(); + o_euid = geteuid(); + o_gid = getgid(); + o_egid = getegid(); + fstat(fd, &stbuf); + setresuid(stbuf.st_uid, stbuf.st_uid, -1); + setresgid(stbuf.st_gid, stbuf.st_gid, -1); + s = tmpnam(NULL); + tfd = open(s, O_RDONLY|O_CREAT, 0600); + rval = fchown(tfd, DefUid, DefGid) != 0; + close(tfd); + unlink(s); + setreuid(o_uid, o_euid); + setresgid(o_gid, o_egid, -1); + return rval; + #else + # ifdef _POSIX_CHOWN_RESTRICTED + # if _POSIX_CHOWN_RESTRICTED == -1 + return FALSE; + # else + return TRUE; + # endif + # else + # ifdef _PC_CHOWN_RESTRICTED + return fpathconf(fd, _PC_CHOWN_RESTRICTED) > 0; + # else + # ifdef BSD + return TRUE; + # else + return FALSE; + # endif + # endif + # endif + #endif + } + /* ** GETCFNAME -- return the name of the .cf file. ** ** Some systems (e.g., NeXT) determine this dynamically. *************** *** 1877,1922 **** ** STRTOL -- convert string to long integer ** ** For systems that don't have it in the C library. */ #ifdef NEEDSTRTOL long ! strtol(p, ep, b) ! char *p; ! char **ep; ! int b; { ! long l = 0; ! char c; ! char maxd; ! int neg = 1; ! maxd = (b > 10) ? '9' : b + '0'; ! ! if (p && *p == '-') { ! neg = -1; ! p++; } ! while (p && (c = *p)) { ! if (c >= '0' && c <= maxd) { ! l = l*b + *p++ - '0'; ! continue; } - if (c >= 'A' && c <= 'Z') - c -= 'A' + 'a'; - c = c - 'a' + 10; - if (b > c) { - l = l*b + c; - p++; - continue; - } - break; } ! l *= neg; ! if (ep) ! *ep = p; ! return l; } #endif --- 2048,2151 ---- ** STRTOL -- convert string to long integer ** ** For systems that don't have it in the C library. + ** + ** This is taken verbatim from the 4.4-Lite C library. */ #ifdef NEEDSTRTOL + #if defined(LIBC_SCCS) && !defined(lint) + static char sccsid[] = "@(#)strtol.c 8.1 (Berkeley) 6/4/93"; + #endif /* LIBC_SCCS and not lint */ + + #include + + /* + * Convert a string to a long integer. + * + * Ignores `locale' stuff. Assumes that the upper and lower case + * alphabets and digits are each contiguous. + */ + long ! strtol(nptr, endptr, base) ! const char *nptr; ! char **endptr; ! register int base; { ! register const char *s = nptr; ! register unsigned long acc; ! register int c; ! register unsigned long cutoff; ! register int neg = 0, any, cutlim; ! /* ! * Skip white space and pick up leading +/- sign if any. ! * If base is 0, allow 0x for hex and 0 for octal, else ! * assume decimal; if base is already 16, allow 0x. ! */ ! do { ! c = *s++; ! } while (isspace(c)); ! if (c == '-') { ! neg = 1; ! c = *s++; ! } else if (c == '+') ! c = *s++; ! if ((base == 0 || base == 16) && ! c == '0' && (*s == 'x' || *s == 'X')) { ! c = s[1]; ! s += 2; ! base = 16; } ! if (base == 0) ! base = c == '0' ? 8 : 10; ! ! /* ! * Compute the cutoff value between legal numbers and illegal ! * numbers. That is the largest legal value, divided by the ! * base. An input number that is greater than this value, if ! * followed by a legal input character, is too big. One that ! * is equal to this value may be valid or not; the limit ! * between valid and invalid numbers is then based on the last ! * digit. For instance, if the range for longs is ! * [-2147483648..2147483647] and the input base is 10, ! * cutoff will be set to 214748364 and cutlim to either ! * 7 (neg==0) or 8 (neg==1), meaning that if we have accumulated ! * a value > 214748364, or equal but the next digit is > 7 (or 8), ! * the number is too big, and we will return a range error. ! * ! * Set any if any `digits' consumed; make it negative to indicate ! * overflow. ! */ ! cutoff = neg ? -(unsigned long)LONG_MIN : LONG_MAX; ! cutlim = cutoff % (unsigned long)base; ! cutoff /= (unsigned long)base; ! for (acc = 0, any = 0;; c = *s++) { ! if (isdigit(c)) ! c -= '0'; ! else if (isalpha(c)) ! c -= isupper(c) ? 'A' - 10 : 'a' - 10; ! else ! break; ! if (c >= base) ! break; ! if (any < 0 || acc > cutoff || acc == cutoff && c > cutlim) ! any = -1; ! else { ! any = 1; ! acc *= base; ! acc += c; } } ! if (any < 0) { ! acc = neg ? LONG_MIN : LONG_MAX; ! errno = ERANGE; ! } else if (neg) ! acc = -acc; ! if (endptr != 0) ! *endptr = (char *)(any ? s - 1 : nptr); ! return (acc); } #endif *************** *** 1998,2004 **** char *directory; char *propname; { ! char *propval; int i; void *ni = NULL; void *lastni = NULL; --- 2227,2233 ---- char *directory; char *propname; { ! char *propval = NULL; int i; void *ni = NULL; void *lastni = NULL; *** src/conf.h.OLD Sat Jan 8 17:53:13 1994 --- src/conf.h Fri Mar 11 14:42:24 1994 *************** *** 31,37 **** * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ! * @(#)conf.h 8.75 (Berkeley) 1/8/94 */ /* --- 31,37 ---- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ! * @(#)conf.h 8.96 (Berkeley) 3/11/94 */ /* *************** *** 80,93 **** # define NETUNIX 1 /* include unix domain support */ # define NETINET 1 /* include internet support */ # define SETPROCTITLE 1 /* munge argv to display current status */ - # define NAMED_BIND 1 /* use Berkeley Internet Domain Server */ # define MATCHGECOS 1 /* match user names from gecos field */ # define XDEBUG 1 /* enable extended debugging */ - # ifdef NEWDB # define USERDB 1 /* look in user database (requires NEWDB) */ # endif /* ** Most systems have symbolic links today, so default them on. You ** can turn them off by #undef'ing this below. --- 80,101 ---- # define NETUNIX 1 /* include unix domain support */ # define NETINET 1 /* include internet support */ # define SETPROCTITLE 1 /* munge argv to display current status */ # define MATCHGECOS 1 /* match user names from gecos field */ # define XDEBUG 1 /* enable extended debugging */ # ifdef NEWDB # define USERDB 1 /* look in user database (requires NEWDB) */ # endif + /********************************************************************** + ** 0/1 Compilation options. + ** #define these to 1 if they are available; + ** #define them to 0 otherwise. + **********************************************************************/ + + # ifndef NAMED_BIND + # define NAMED_BIND 1 /* use Berkeley Internet Domain Server */ + # endif + /* ** Most systems have symbolic links today, so default them on. You ** can turn them off by #undef'ing this below. *************** *** 131,140 **** # undef m_flags # define SYSTEM5 1 /* include all the System V defines */ # define HASINITGROUPS 1 /* has initgroups(3) call */ - # define HASSTATFS 1 /* has the statfs(2) syscall */ # define HASSETREUID 1 /* has setreuid(2) call */ ! # define setreuid(r, e) setresuid(r, e, -1) # define LA_TYPE LA_FLOAT # define GIDSET_T gid_t # define _PATH_UNIX "/hp-ux" # ifndef _PATH_SENDMAILCF --- 139,148 ---- # undef m_flags # define SYSTEM5 1 /* include all the System V defines */ # define HASINITGROUPS 1 /* has initgroups(3) call */ # define HASSETREUID 1 /* has setreuid(2) call */ ! # define setreuid(r, e) setresuid(r, e, -1) # define LA_TYPE LA_FLOAT + # define SFS_TYPE SFS_VFS /* use statfs() implementation */ # define GIDSET_T gid_t # define _PATH_UNIX "/hp-ux" # ifndef _PATH_SENDMAILCF *************** *** 159,169 **** # ifdef _AIX3 # define HASINITGROUPS 1 /* has initgroups(3) call */ - # define HASSTATFS 1 /* has the statfs(2) syscall */ # define HASUNAME 1 /* use System V uname(2) system call */ # define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ # define FORK fork /* no vfork primitive available */ # undef SETPROCTITLE /* setproctitle confuses AIX */ # endif --- 167,177 ---- # ifdef _AIX3 # define HASINITGROUPS 1 /* has initgroups(3) call */ # define HASUNAME 1 /* use System V uname(2) system call */ # define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ # define FORK fork /* no vfork primitive available */ # undef SETPROCTITLE /* setproctitle confuses AIX */ + # define SFS_TYPE SFS_STATFS /* use statfs() impl */ # endif *************** *** 177,188 **** # include # define HASSETREUID 1 /* has setreuid(2) call */ # define HASINITGROUPS 1 /* has initgroups(3) call */ - # define HASSTATFS 1 /* has the statfs(2) syscall */ # define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ # define FORK fork /* no vfork primitive available */ # define WAITUNION 1 /* use "union wait" as wait argument type */ # define setpgid BSDsetpgrp # define GIDSET_T gid_t # endif --- 185,196 ---- # include # define HASSETREUID 1 /* has setreuid(2) call */ # define HASINITGROUPS 1 /* has initgroups(3) call */ # define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ # define FORK fork /* no vfork primitive available */ # define WAITUNION 1 /* use "union wait" as wait argument type */ # define setpgid BSDsetpgrp # define GIDSET_T gid_t + # define SFS_TYPE SFS_4ARGS /* four argument statfs() call */ # endif *************** *** 195,204 **** #if defined(sun) && !defined(BSD) - # define LA_TYPE LA_INT # define HASINITGROUPS 1 /* has initgroups(3) call */ # define HASUNAME 1 /* use System V uname(2) system call */ # define HASGETUSERSHELL 1 /* DOES have getusershell(3) call in libc */ # ifdef SOLARIS_2_3 # define SOLARIS --- 203,212 ---- #if defined(sun) && !defined(BSD) # define HASINITGROUPS 1 /* has initgroups(3) call */ # define HASUNAME 1 /* use System V uname(2) system call */ # define HASGETUSERSHELL 1 /* DOES have getusershell(3) call in libc */ + # define LA_TYPE LA_INT # ifdef SOLARIS_2_3 # define SOLARIS *************** *** 222,233 **** # ifndef _PATH_SENDMAILPID # define _PATH_SENDMAILPID "/etc/mail/sendmail.pid" # endif # else /* SunOS 4.0.3 or 4.1.x */ # define HASSETREUID 1 /* has setreuid(2) call */ ! # define HASSTATFS 1 /* has the statfs(2) syscall */ ! # define HASFLOCK 1 /* has flock(2) call */ # include # ifdef SUNOS403 --- 230,246 ---- # ifndef _PATH_SENDMAILPID # define _PATH_SENDMAILPID "/etc/mail/sendmail.pid" # endif + # ifndef SYSLOG_BUFSIZE + # define SYSLOG_BUFSIZE 1024 /* allow full size syslog buffer */ + # endif # else /* SunOS 4.0.3 or 4.1.x */ # define HASSETREUID 1 /* has setreuid(2) call */ ! # ifndef HASFLOCK ! # define HASFLOCK 1 /* has flock(2) call */ ! # endif ! # define SFS_TYPE SFS_VFS /* use statfs() implementation */ # include # ifdef SUNOS403 *************** *** 255,269 **** #ifdef DGUX # define SYSTEM5 1 # define LA_TYPE LA_SUBR - # define HASSTATFS 1 /* has the statfs(2) syscall */ # define HASSETREUID 1 /* has setreuid(2) call */ # define HASUNAME 1 /* use System V uname(2) system call */ # define HASSETSID 1 /* has Posix setsid(2) call */ # define HASINITGROUPS 1 /* has initgroups(3) call */ # ifndef IDENTPROTO # define IDENTPROTO 0 /* TCP/IP implementation is broken */ # endif # undef SETPROCTITLE /* these include files must be included early on DG/UX */ # include --- 268,283 ---- #ifdef DGUX # define SYSTEM5 1 # define LA_TYPE LA_SUBR # define HASSETREUID 1 /* has setreuid(2) call */ # define HASUNAME 1 /* use System V uname(2) system call */ # define HASSETSID 1 /* has Posix setsid(2) call */ # define HASINITGROUPS 1 /* has initgroups(3) call */ + # define HASGETUSERSHELL 0 /* does not have getusershell(3) */ # ifndef IDENTPROTO # define IDENTPROTO 0 /* TCP/IP implementation is broken */ # endif # undef SETPROCTITLE + # define SFS_TYPE SFS_4ARGS /* four argument statfs() call */ /* these include files must be included early on DG/UX */ # include *************** *** 283,294 **** */ #ifdef ultrix - # define HASSTATFS 1 /* has the statfs(2) syscall */ # define HASSETREUID 1 /* has setreuid(2) call */ # define HASUNSETENV 1 /* has unsetenv(3) call */ # define HASINITGROUPS 1 /* has initgroups(3) call */ ! # define HASFLOCK 1 /* has flock(2) call */ # define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ # ifdef vax # define LA_TYPE LA_FLOAT # else --- 297,311 ---- */ #ifdef ultrix # define HASSETREUID 1 /* has setreuid(2) call */ # define HASUNSETENV 1 /* has unsetenv(3) call */ # define HASINITGROUPS 1 /* has initgroups(3) call */ ! # define HASUNAME 1 /* use System V uname(2) system call */ ! # ifndef HASFLOCK ! # define HASFLOCK 1 /* has flock(2) call */ ! # endif # define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ + # define BROKEN_RES_SEARCH 1 /* res_search(unknown) returns h_errno=0 */ # ifdef vax # define LA_TYPE LA_FLOAT # else *************** *** 295,300 **** --- 312,318 ---- # define LA_TYPE LA_INT # define LA_AVENRUN "avenrun" # endif + # define SFS_TYPE SFS_MOUNT /* use statfs() impl */ # ifndef IDENTPROTO # define IDENTPROTO 0 /* TCP/IP implementation is broken */ # endif *************** *** 306,317 **** */ #ifdef __osf__ - # define HASSTATFS 1 /* has the statfs(2) syscall */ # define HASUNSETENV 1 /* has unsetenv(3) call */ # define HASSETREUID 1 /* has setreuid(2) call */ # define HASINITGROUPS 1 /* has initgroups(3) call */ ! # define HASFLOCK 1 /* has flock(2) call */ # define LA_TYPE LA_INT # ifndef _PATH_SENDMAILPID # define _PATH_SENDMAILPID "/var/run/sendmail.pid" # endif --- 324,337 ---- */ #ifdef __osf__ # define HASUNSETENV 1 /* has unsetenv(3) call */ # define HASSETREUID 1 /* has setreuid(2) call */ # define HASINITGROUPS 1 /* has initgroups(3) call */ ! # ifndef HASFLOCK ! # define HASFLOCK 1 /* has flock(2) call */ ! # endif # define LA_TYPE LA_INT + # define SFS_TYPE SFS_MOUNT /* use statfs() impl */ # ifndef _PATH_SENDMAILPID # define _PATH_SENDMAILPID "/var/run/sendmail.pid" # endif *************** *** 324,332 **** #ifdef NeXT # define HASINITGROUPS 1 /* has initgroups(3) call */ ! # define HASFLOCK 1 /* has flock(2) call */ # define NEEDGETOPT 1 /* need a replacement for getopt(3) */ - # define HASSTATFS 1 /* has the statfs(2) syscall */ # define WAITUNION 1 /* use "union wait" as wait argument type */ # define sleep sleepX # define setpgid setpgrp --- 344,353 ---- #ifdef NeXT # define HASINITGROUPS 1 /* has initgroups(3) call */ ! # ifndef HASFLOCK ! # define HASFLOCK 1 /* has flock(2) call */ ! # endif # define NEEDGETOPT 1 /* need a replacement for getopt(3) */ # define WAITUNION 1 /* use "union wait" as wait argument type */ # define sleep sleepX # define setpgid setpgrp *************** *** 333,338 **** --- 354,360 ---- # ifndef LA_TYPE # define LA_TYPE LA_MACH # endif + # define SFS_TYPE SFS_VFS /* use statfs() implementation */ # ifndef _POSIX_SOURCE typedef int pid_t; # undef WEXITSTATUS *************** *** 355,370 **** #ifdef BSD4_4 # define HASUNSETENV 1 /* has unsetenv(3) call */ - # define HASSTATFS 1 /* has the statfs(2) syscall */ # include # define ERRLIST_PREDEFINED /* don't declare sys_errlist */ # ifndef LA_TYPE # define LA_TYPE LA_SUBR # endif #endif /* ** 386BSD / FreeBSD 1.0E / NetBSD (all architectures, all versions) ** ** 4.3BSD clone, closer to 4.4BSD --- 377,415 ---- #ifdef BSD4_4 # define HASUNSETENV 1 /* has unsetenv(3) call */ # include # define ERRLIST_PREDEFINED /* don't declare sys_errlist */ # ifndef LA_TYPE # define LA_TYPE LA_SUBR # endif + # define SFS_TYPE SFS_MOUNT /* use statfs() impl */ #endif /* + ** BSD/386 (all versions) + ** From Tony Sanders, BSDI + */ + + #ifdef __bsdi__ + # define HASUNSETENV 1 /* has the unsetenv(3) call */ + # define HASSETSID 1 /* has the setsid(2) POSIX syscall */ + # define SFS_TYPE SFS_MOUNT /* use statfs() impl */ + # if defined(_BSDI_VERSION) && _BSDI_VERSION >= 199312 + # define HASSETPROCTITLE 1 /* setproctitle is in libc */ + # else + # define SETPROCTITLE 1 + # endif + # include + # define ERRLIST_PREDEFINED /* don't declare sys_errlist */ + # ifndef LA_TYPE + # define LA_TYPE LA_SUBR + # endif + #endif + + + + /* ** 386BSD / FreeBSD 1.0E / NetBSD (all architectures, all versions) ** ** 4.3BSD clone, closer to 4.4BSD *************** *** 375,386 **** #if defined(__386BSD__) || defined(__FreeBSD__) || defined(__NetBSD__) # define HASUNSETENV 1 /* has unsetenv(3) call */ # define HASSETSID 1 /* has the setsid(2) POSIX syscall */ - # define HASSTATFS 1 /* has the statfs(2) syscall */ # include # define ERRLIST_PREDEFINED /* don't declare sys_errlist */ # ifndef LA_TYPE # define LA_TYPE LA_SUBR # endif #endif --- 420,431 ---- #if defined(__386BSD__) || defined(__FreeBSD__) || defined(__NetBSD__) # define HASUNSETENV 1 /* has unsetenv(3) call */ # define HASSETSID 1 /* has the setsid(2) POSIX syscall */ # include # define ERRLIST_PREDEFINED /* don't declare sys_errlist */ # ifndef LA_TYPE # define LA_TYPE LA_SUBR # endif + # define SFS_TYPE SFS_MOUNT /* use statfs() impl */ #endif *************** *** 394,401 **** # define MACH386 1 # define HASUNSETENV 1 /* has unsetenv(3) call */ # define HASINITGROUPS 1 /* has initgroups(3) call */ ! # define HASFLOCK 1 /* has flock(2) call */ ! # define HASSTATFS 1 /* has the statfs(2) syscall */ # define NEEDGETOPT 1 /* need a replacement for getopt(3) */ # define NEEDSTRTOL 1 /* need the strtol() function */ # define setpgid setpgrp --- 439,447 ---- # define MACH386 1 # define HASUNSETENV 1 /* has unsetenv(3) call */ # define HASINITGROUPS 1 /* has initgroups(3) call */ ! # ifndef HASFLOCK ! # define HASFLOCK 1 /* has flock(2) call */ ! # endif # define NEEDGETOPT 1 /* need a replacement for getopt(3) */ # define NEEDSTRTOL 1 /* need the strtol() function */ # define setpgid setpgrp *************** *** 402,407 **** --- 448,454 ---- # ifndef LA_TYPE # define LA_TYPE LA_FLOAT # endif + # define SFS_TYPE SFS_VFS /* use statfs() implementation */ # undef HASSETVBUF /* don't actually have setvbuf(3) */ # undef WEXITSTATUS # undef WIFEXITED *************** *** 417,427 **** /* ** 4.3 BSD -- this is for very old systems ** ** You'll also have to install a new resolver library. ** I don't guarantee that support for this environment is complete. */ ! #ifdef oldBSD43 # define NEEDVPRINTF 1 /* need a replacement for vprintf(3) */ # define NEEDGETOPT 1 /* need a replacement for getopt(3) */ # define ARBPTR_T char * --- 464,476 ---- /* ** 4.3 BSD -- this is for very old systems ** + ** Should work for mt Xinu MORE/BSD and Mips UMIPS-BSD 2.1. + ** ** You'll also have to install a new resolver library. ** I don't guarantee that support for this environment is complete. */ ! #if defined(oldBSD43) || defined(MORE_BSD) || defined(umipsbsd) # define NEEDVPRINTF 1 /* need a replacement for vprintf(3) */ # define NEEDGETOPT 1 /* need a replacement for getopt(3) */ # define ARBPTR_T char * *************** *** 465,475 **** #ifdef _SCO_unix_ # define SYSTEM5 1 /* include all the System V defines */ # define SYS5SIGNALS 1 /* SysV signal semantics -- reset on each sig */ - # define HASSTATFS 1 /* has the statfs(2) syscall */ # define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ # define FORK fork # define MAXPATHLEN PATHSIZE # define LA_TYPE LA_SHORT # undef NETUNIX /* no unix domain socket support */ #endif --- 514,524 ---- #ifdef _SCO_unix_ # define SYSTEM5 1 /* include all the System V defines */ # define SYS5SIGNALS 1 /* SysV signal semantics -- reset on each sig */ # define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ # define FORK fork # define MAXPATHLEN PATHSIZE # define LA_TYPE LA_SHORT + # define SFS_TYPE SFS_STATFS /* use statfs() impl */ # undef NETUNIX /* no unix domain socket support */ #endif *************** *** 476,490 **** /* ** ConvexOS 11.0 and later */ #ifdef _CONVEX_SOURCE # define BSD 1 /* include all the BSD defines */ # define HASUNAME 1 /* use System V uname(2) system call */ - # define HASSTATFS 1 /* has the statfs(2) syscall */ # define HASSETSID 1 /* has POSIX setsid(2) call */ # define NEEDGETOPT 1 /* need replacement for getopt(3) */ # define LA_TYPE LA_FLOAT # ifndef IDENTPROTO # define IDENTPROTO 0 /* TCP/IP implementation is broken */ # endif --- 525,553 ---- /* ** ConvexOS 11.0 and later + ** + ** "Todd C. Miller" claims this + ** works on 9.1 as well. */ #ifdef _CONVEX_SOURCE # define BSD 1 /* include all the BSD defines */ # define HASUNAME 1 /* use System V uname(2) system call */ # define HASSETSID 1 /* has POSIX setsid(2) call */ # define NEEDGETOPT 1 /* need replacement for getopt(3) */ # define LA_TYPE LA_FLOAT + # define SFS_TYPE SFS_VFS /* use statfs() implementation */ + # ifndef _PATH_SENDMAILCF + # define _PATH_SENDMAILCF "/usr/lib/sendmail.cf" + # endif + # ifndef S_IREAD + # define S_IREAD _S_IREAD + # define S_IWRITE _S_IWRITE + # define S_IEXEC _S_IEXEC + # define S_IFMT _S_IFMT + # define S_IFCHR _S_IFCHR + # define S_IFBLK _S_IFBLK + # endif # ifndef IDENTPROTO # define IDENTPROTO 0 /* TCP/IP implementation is broken */ # endif *************** *** 500,506 **** #ifdef RISCOS # define HASUNSETENV 1 /* has unsetenv(3) call */ ! # define HASFLOCK 1 /* has flock(2) call */ # define WAITUNION 1 /* use "union wait" as wait argument type */ # define NEEDGETOPT 1 /* need a replacement for getopt(3) */ # define LA_TYPE LA_INT --- 563,571 ---- #ifdef RISCOS # define HASUNSETENV 1 /* has unsetenv(3) call */ ! # ifndef HASFLOCK ! # define HASFLOCK 1 /* has flock(2) call */ ! # endif # define WAITUNION 1 /* use "union wait" as wait argument type */ # define NEEDGETOPT 1 /* need a replacement for getopt(3) */ # define LA_TYPE LA_INT *************** *** 522,540 **** /* ** Linux 0.99pl10 and above... ! ** From Karl London . */ #ifdef __linux__ ! # define BSD 1 /* pretend to be BSD based today */ ! # undef NEEDVPRINTF 1 /* need a replacement for vprintf(3) */ # define NEEDGETOPT 1 /* need a replacement for getopt(3) */ # define HASUNSETENV 1 /* has unsetenv(3) call */ # ifndef LA_TYPE ! # define LA_TYPE LA_FLOAT # endif # include ! # define GIDSET_T gid_t #endif --- 587,618 ---- /* ** Linux 0.99pl10 and above... ! ** ! ** Thanks to, in reverse order of contact: ! ** ! ** John Kennedy ! ** Florian La Roche ! ** Karl London ! ** ! ** Last compiled against: [03/02/94 @ 05:34 PM (Wednesday)] ! ** sendmail 8.6.6.b9 named 4.9.2-931205-p1 db-1.73 ! ** gcc 2.5.8 libc.so.4.5.19 ! ** slackware 1.1.2 linux 0.99.15 */ #ifdef __linux__ ! # define BSD 1 /* include BSD defines */ # define NEEDGETOPT 1 /* need a replacement for getopt(3) */ + # define HASUNAME 1 /* use System V uname(2) system call */ # define HASUNSETENV 1 /* has unsetenv(3) call */ + # define ERRLIST_PREDEFINED /* don't declare sys_errlist */ + # define GIDSET_T gid_t /* from */ # ifndef LA_TYPE ! # define LA_TYPE LA_PROCSTR # endif + # define SFS_TYPE SFS_VFS /* use statfs() impl */ # include ! # undef atol /* wounded in */ #endif *************** *** 563,571 **** #ifdef _AUX_SOURCE # include # define BSD /* has BSD routines */ - # define HASSTATFS 1 /* has the statfs(2) syscall */ # define HASUNAME 1 /* use System V uname(2) system call */ - # define HASUSTAT 1 /* use System V ustat(2) syscall */ # define HASSETVBUF 1 /* we have setvbuf(3) in libc */ # define SIGFUNC_DEFINED /* sigfunc_t already defined */ # ifndef IDENTPROTO --- 641,647 ---- ***************