summaryrefslogtreecommitdiff
path: root/gnu/usr.sbin
diff options
context:
space:
mode:
authorTodd C. Miller <millert@cvs.openbsd.org>2001-08-01 01:01:42 +0000
committerTodd C. Miller <millert@cvs.openbsd.org>2001-08-01 01:01:42 +0000
commit4a708c64cc0677e84c4b8e77b54d0199042254c4 (patch)
treebbcf5f1289fd8feb0ba87851c79d7eb67dfdf7e6 /gnu/usr.sbin
parent8879a3e7434a6e93c5f42406c82b3dce8d9f277c (diff)
update to sendmail 8.11.5
Diffstat (limited to 'gnu/usr.sbin')
-rw-r--r--gnu/usr.sbin/sendmail/KNOWNBUGS13
-rw-r--r--gnu/usr.sbin/sendmail/README15
-rw-r--r--gnu/usr.sbin/sendmail/RELEASE_NOTES88
-rw-r--r--gnu/usr.sbin/sendmail/cf/README49
-rw-r--r--gnu/usr.sbin/sendmail/cf/cf/courtesan-lists.mc9
-rw-r--r--gnu/usr.sbin/sendmail/cf/cf/courtesan.mc8
-rw-r--r--gnu/usr.sbin/sendmail/cf/cf/generic-hpux10.mc6
-rw-r--r--gnu/usr.sbin/sendmail/cf/cf/openbsd-lists.mc8
-rw-r--r--gnu/usr.sbin/sendmail/cf/m4/proto.m428
-rw-r--r--gnu/usr.sbin/sendmail/cf/m4/version.m44
-rw-r--r--gnu/usr.sbin/sendmail/doc/op/op.me68
-rw-r--r--gnu/usr.sbin/sendmail/include/libmilter/milter.h4
-rw-r--r--gnu/usr.sbin/sendmail/include/sendmail/sendmail.h3
-rw-r--r--gnu/usr.sbin/sendmail/libmilter/README22
-rw-r--r--gnu/usr.sbin/sendmail/libmilter/libmilter.h2
-rw-r--r--gnu/usr.sbin/sendmail/libmilter/sm_gethost.c17
-rw-r--r--gnu/usr.sbin/sendmail/libsmutil/safefile.c83
-rw-r--r--gnu/usr.sbin/sendmail/libsmutil/snprintf.c8
-rw-r--r--gnu/usr.sbin/sendmail/mail.local/mail.local.c2
-rw-r--r--gnu/usr.sbin/sendmail/sendmail/README43
-rw-r--r--gnu/usr.sbin/sendmail/sendmail/clock.c49
-rw-r--r--gnu/usr.sbin/sendmail/sendmail/collect.c5
-rw-r--r--gnu/usr.sbin/sendmail/sendmail/conf.c6
-rw-r--r--gnu/usr.sbin/sendmail/sendmail/conf.h13
-rw-r--r--gnu/usr.sbin/sendmail/sendmail/daemon.c95
-rw-r--r--gnu/usr.sbin/sendmail/sendmail/deliver.c46
-rw-r--r--gnu/usr.sbin/sendmail/sendmail/err.c4
-rw-r--r--gnu/usr.sbin/sendmail/sendmail/main.c13
-rw-r--r--gnu/usr.sbin/sendmail/sendmail/map.c5
-rw-r--r--gnu/usr.sbin/sendmail/sendmail/milter.c50
-rw-r--r--gnu/usr.sbin/sendmail/sendmail/queue.c50
-rw-r--r--gnu/usr.sbin/sendmail/sendmail/readcf.c13
-rw-r--r--gnu/usr.sbin/sendmail/sendmail/sendmail.h10
-rw-r--r--gnu/usr.sbin/sendmail/sendmail/sfsasl.c2
-rw-r--r--gnu/usr.sbin/sendmail/sendmail/srvrsmtp.c6
-rw-r--r--gnu/usr.sbin/sendmail/sendmail/usersmtp.c7
-rw-r--r--gnu/usr.sbin/sendmail/sendmail/util.c77
-rw-r--r--gnu/usr.sbin/sendmail/sendmail/version.c4
-rw-r--r--gnu/usr.sbin/sendmail/vacation/vacation.18
39 files changed, 667 insertions, 276 deletions
diff --git a/gnu/usr.sbin/sendmail/KNOWNBUGS b/gnu/usr.sbin/sendmail/KNOWNBUGS
index 0fac6255b2b..a923cf827d9 100644
--- a/gnu/usr.sbin/sendmail/KNOWNBUGS
+++ b/gnu/usr.sbin/sendmail/KNOWNBUGS
@@ -35,6 +35,13 @@ This list is not guaranteed to be complete.
restructuring of the code -- for example, almost no C library support
could be used to handle strings.
+* Header checks are not called if header value is too long.
+
+ If the value of a header is longer than 1250 (MAXNAME + MAXATOM - 6)
+ characters or it contains a single word longer than 256 (MAXNAME)
+ characters then no header check is done even if one is configured for
+ the header.
+
* Duplicate error messages.
Sometimes identical, duplicate error messages can be generated. As
@@ -193,10 +200,10 @@ This list is not guaranteed to be complete.
local mail delivery and NFS hard mounted home directories should be
avoided, as attempts to open the forward files could hang.
-* Race condition for delivery to setuid files
+* Race condition for delivery to set-user-id files
Sendmail will deliver to a fail if the file is owned by the DefaultUser
- or has the setuid bit set. Unfortunately, some systems clear that bit
+ or has the set-user-id bit set. Unfortunately, some systems clear that bit
when a file is modified. Sendmail compensates by resetting the file mode
back to it's original settings. Unfortunately, there's still a
permission failure race as sendmail checks the permissions before locking
@@ -211,4 +218,4 @@ This list is not guaranteed to be complete.
state. This option and it's use is deprecated and will be removed from a
future version of sendmail.
-$Revision: 1.3 $, Last updated $Date: 2001/01/15 21:08:50 $
+$Revision: 1.4 $, Last updated $Date: 2001/08/01 01:01:40 $
diff --git a/gnu/usr.sbin/sendmail/README b/gnu/usr.sbin/sendmail/README
index dcd78e8e311..138eaa9bc20 100644
--- a/gnu/usr.sbin/sendmail/README
+++ b/gnu/usr.sbin/sendmail/README
@@ -18,7 +18,9 @@ the latest updates.
1. Read this README file, especially this introduction, and the DIRECTORY
PERMISSIONS sections.
-2. Read sendmail/README, especially:
+2. Read the INSTALL file in this directory.
+
+3. Read sendmail/README, especially:
a. the introduction
b. the BUILDING SENDMAIL section
c. the relevant part(s) of the OPERATING SYSTEM AND COMPILE QUIRKS section
@@ -27,8 +29,10 @@ the latest updates.
d. devtools/README
e. devtools/Site/README
+ f. mail.local/README
+ g. smrsh/README
-3. Read cf/README.
+4. Read cf/README.
Sendmail is a trademark of Sendmail, Inc.
@@ -107,7 +111,10 @@ each directory in the file's path.
There are other files you should read. Rooted in this directory are:
FAQ
- Answers to Frequently Asked Questions.
+ The FAQ (frequently answered questions) is no longer maintained
+ with the sendmail release. It is available at
+ http://www.sendmail.org/faq/ . The file FAQ is a reminder of
+ this and a pointer to the web page.
INSTALL
Installation instructions for building and installing sendmail.
KNOWNBUGS
@@ -385,4 +392,4 @@ sendmail Source for the sendmail program itself.
test Some test scripts (currently only for compilation aids).
vacation Source for the vacation program. NOT PART OF SENDMAIL!
-$Revision: 1.4 $, Last updated $Date: 2001/01/15 21:08:50 $
+$Revision: 1.5 $, Last updated $Date: 2001/08/01 01:01:40 $
diff --git a/gnu/usr.sbin/sendmail/RELEASE_NOTES b/gnu/usr.sbin/sendmail/RELEASE_NOTES
index 254a1e524e6..55683387541 100644
--- a/gnu/usr.sbin/sendmail/RELEASE_NOTES
+++ b/gnu/usr.sbin/sendmail/RELEASE_NOTES
@@ -1,11 +1,53 @@
SENDMAIL RELEASE NOTES
- $Sendmail: RELEASE_NOTES,v 8.561.2.5.2.235 2001/05/27 21:39:16 gshapiro Exp $
+ $Sendmail: RELEASE_NOTES,v 8.561.2.5.2.254 2001/07/31 22:42:46 gshapiro Exp $
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.11.5/8.11.5 2001/07/31
+ Fix a possible race condition when sending a HUP signal to restart
+ the daemon. This could terminate the current process without
+ starting a new daemon. Problem reported by Wolfgang Breyha
+ of SE Netway Communications.
+ Only apply MaxHeadersLength when receiving a message via SMTP or
+ the command line. Problem noted by Andrey J. Melnikoff.
+ When finding the system's local hostname on an IPv6-enabled system
+ which doesn't have any IPv6 interface addresses, fall back
+ to looking up only IPv4 addresses. Problem noted by Tim
+ Bosserman of EarthLink.
+ When commands were being rejected due to check_relay or TCP
+ Wrappers, the ETRN command was not giving a response.
+ Incoming IPv4 connections on a Family=inet6 daemon (using
+ IPv4-mapped addresses) were incorrectly labeled as "may be
+ forged". Problem noted by Per Steinar Iversen of Oslo
+ University College.
+ Shutdown address test mode cleanly on SIGTERM. Problem noted by
+ Greg King of the OAO Corporation.
+ Restore the original real uid (changed in main() to prevent
+ out of band signals) before invoking a delivery agent.
+ Some delivery agents use this for the "From " envelope
+ "header". Problem noted by Leslie Carroll of the
+ University at Albany.
+ Mark closed file descriptors properly to avoid reuse. Problem
+ noted by Jeff Bronson of J.D. Bronson, Inc.
+ Setting Timeout options on the command line will also override
+ their sub-suboptions in the .cf file, e.g., -O
+ Timeout.queuereturn=2d will set all queuereturn timeouts
+ to 2 days. Problem noted by Roger B.A. Klorese.
+ Portability:
+ BSD/OS has a broken setreuid() implementation. Problem
+ noted by Vernon Schryver of Rhyolite Software.
+ BSD/OS has /dev/urandom(4) (as of version 4.1/199910 ?).
+ Noted by Vernon Schryver of Rhyolite Software.
+ BSD/OS has fchown(2). Noted by Dave Yadallee of Netline
+ 2000 Internet Solutions Inc.
+ Solaris 2.X and later have strerror(3). From Sebastian
+ Hagedorn of Cologne University.
+ CONFIG: Fix parsing for IPv6 domain literals in addresses
+ (user@[IPv6:address]). Problem noted by Liyuan Zhou.
+
8.11.4/8.11.4 2001/05/28
Clean up signal handling routines to reduce the chances of heap
corruption and other potential race conditions.
@@ -730,18 +772,18 @@ summary of the changes in that release.
8.10.0/8.10.0 2000/03/01
*************************************************************
- * The engineering department at Sendmail, Inc. has suffered *
- * the tragic loss of a key member of our engineering team. *
- * Julie Van Bourg was the Vice President of Engineering *
- * at Sendmail, Inc. during the development and deployment *
- * of this release. It was her vision, dedication, and *
- * support that has made this release a success. Julie died *
- * on October 26, 1999 of cancer. We have lost a leader, a *
- * coach, and a friend. *
- * *
- * This release is dedicated to her memory and to the joy, *
- * strength, ideals, and hope that she brought to all of us. *
- * Julie, we miss you! *
+ * The engineering department at Sendmail, Inc. has suffered *
+ * the tragic loss of a key member of our engineering team. *
+ * Julie Van Bourg was the Vice President of Engineering *
+ * at Sendmail, Inc. during the development and deployment *
+ * of this release. It was her vision, dedication, and *
+ * support that has made this release a success. Julie died *
+ * on October 26, 1999 of cancer. We have lost a leader, a *
+ * coach, and a friend. *
+ * *
+ * This release is dedicated to her memory and to the joy, *
+ * strength, ideals, and hope that she brought to all of us. *
+ * Julie, we miss you! *
*************************************************************
SECURITY: The safe file checks now back track through symbolic
links to make sure the files can't be compromised due
@@ -1586,7 +1628,7 @@ summary of the changes in that release.
CONFIG: OSTYPE(`bsdi1.0') and OSTYPE(`bsdi2.0') have been
deprecated and may be removed from a future release.
BSD/OS users should begin using OSTYPE(`bsdi').
- CONFIG: OpenBSD 2.4 installs mail.local non-setuid root. This
+ CONFIG: OpenBSD 2.4 installs mail.local non-set-user-id root. This
requires a new OSTYPE(`openbsd'). From Todd C. Miller of
Courtesan Consulting.
CONFIG: New OSTYPE(`hpux11') for HP/UX 11.X.
@@ -1846,7 +1888,7 @@ summary of the changes in that release.
the others (if it exists).
DEVTOOLS: Change order of LIBS: first product specific libraries
then the default ones.
- MAIL.LOCAL: Will not be installed setuid root. To use mail.local
+ MAIL.LOCAL: Will not be installed set-user-id root. To use mail.local
as local delivery agent without LMTP mode, use
MODIFY_MAILER_FLAGS(`LOCAL', `+S')
to set the S flag.
@@ -2401,7 +2443,7 @@ summary of the changes in that release.
uid and gid for user bin instead of daemon. If DefaultUser
is set in the configuration file, that value overrides this
default.
- SECURITY: Since 8.8.7, the check for non-setuid binaries
+ SECURITY: Since 8.8.7, the check for non-set-user-id binaries
interfered with setting an alternate group id for the
RunAsUser option. Problem noted by Randall Winchester of
the University of Maryland.
@@ -3069,7 +3111,7 @@ summary of the changes in that release.
In some cases, errors during an SMTP session could leave files
open or locked.
Better handling of missing file descriptors (0, 1, 2) on startup.
- Better handling of non-setuid binaries -- avoids certain obnoxious
+ Better handling of non-set-user-id binaries -- avoids certain obnoxious
errors during testing.
Errors in file locking of NEWDB maps had the incorrect file name
printed in the error message.
@@ -3461,7 +3503,7 @@ summary of the changes in that release.
change to the sendmail map code was made in 8.8.3. Problem
noted by Gregory Neil Shapiro.
MAKEMAP: Give warnings on file problems such as map files that are
- symbolic links; although makemap is not setuid root, it is
+ symbolic links; although makemap is not set-user-id root, it is
often run as root and hence has the potential for the same
sorts of problems as alias rebuilds.
MAKEMAP: Change compilation so that it will link properly on
@@ -4247,9 +4289,9 @@ summary of the changes in that release.
Fix problem finding network interface addresses. Patch from
Motonori Nakamura.
Don't reject qf entries that are not owned by your effective uid if
- you are not running setuid; this makes management of certain
- kinds of firewall setups difficult. Patch suggested by
- Eamonn Coleman of Qualcomm.
+ you are not running set-user-id; this makes management of
+ certain kinds of firewall setups difficult. Patch
+ suggested by Eamonn Coleman of Qualcomm.
Add persistent host status. This keeps the information normally
maintained within a single queue run in disk files that are
shared between sendmail instances. The HostStatusDirectory
@@ -4617,7 +4659,7 @@ summary of the changes in that release.
failure in the hosts.files map. This error caused hard
bounces when it should have requeued.
Aliases to files such as /users/bar/foo/inbox, with /users/bar/foo
- owned by bar mode 700 and inbox being setuid bar stopped
+ owned by bar mode 700 and inbox being set-user-id bar stopped
working properly due to excessive paranoia. Pointed out by
John Hawkinson of Panix.
An SMTP RCPT command referencing a host that gave a nameserver
@@ -5291,7 +5333,7 @@ summary of the changes in that release.
the aliases file: use the default uid/gid instead of the
real uid/gid. This allows you to create a file owned by
and writable only by the default uid/gid that will work
- all the time (without having the setuid bit set). Change
+ all the time (without having the set-user-id bit set). Change
suggested by Shau-Ping Lo and Andrew Cheng of Sun
Microsystems.
Add "DialDelay" option (no short name) to provide an "extra"
diff --git a/gnu/usr.sbin/sendmail/cf/README b/gnu/usr.sbin/sendmail/cf/README
index 83d2b3dc7cc..a953a6845e2 100644
--- a/gnu/usr.sbin/sendmail/cf/README
+++ b/gnu/usr.sbin/sendmail/cf/README
@@ -221,6 +221,11 @@ to create the pathnames. The default value of this variable is
`/etc/mail/'. If you set this macro to a different value, you MUST include
a trailing slash.
+Notice: all filenames used in a .mc (or .cf) file should be absolute
+(starting at the root, i.e., with '/'). Relative filenames most
+likely cause surprises during operations (unless otherwise noted).
+
+
+--------+
| OSTYPE |
+--------+
@@ -1087,9 +1092,9 @@ delay_checks The rulesets check_mail and check_relay will not be called
rbl This feature is deprecated! Please use dnsbl instead.
Turns on rejection of hosts found in the Realtime Blackhole
List. If an argument is provided it is used as the domain
- in which blocked hosts are listed; otherwise, the main
- RBL domain rbl.maps.vix.com is used. For details, see
- http://maps.vix.com/rbl/.
+ in which blocked hosts are listed; otherwise, the main RBL
+ domain rbl.maps.vix.com is used (see NOTE below). For
+ details, see http://maps.vix.com/rbl/.
dnsbl Turns on rejection of hosts found in an DNS based rejection
list. If an argument is provided it is used as the domain
@@ -1102,6 +1107,13 @@ dnsbl Turns on rejection of hosts found in an DNS based rejection
feature can be included several times to query different DNS
based rejection lists.
+ NOTE: The default DNS blacklist, blackholes.mail-abuse.org,
+ is a service offered by the Mail Abuse Prevention System
+ (MAPS). As of July 31, 2001, MAPS is a subscription
+ service, so using that network address won't work if you
+ haven't subscribed. Contact MAPS to subscribe
+ (http://mail-abuse.org/).
+
loose_relay_check
Normally, if % addressing is used for a recipient, e.g.
user%site@othersite, and othersite is in class {R}, the
@@ -1819,9 +1831,17 @@ spammers. To use this database, use
FEATURE(`dnsbl')
This will cause sendmail to reject mail from any site in the
-Realtime Blackhole List database. You can specify an alternative
-RBL domain to check by specifying an argument to the FEATURE.
-The default error message is
+Realtime Blackhole List database. This default DNS blacklist,
+blackholes.mail-abuse.org, is a service offered by the Mail Abuse
+Prevention System (MAPS). As of July 31, 2001, MAPS is a subscription
+service, so using that network address won't work if you haven't
+subscribed. Contact MAPS to subscribe (http://mail-abuse.org/).
+
+You can specify an alternative RBL server to check by specifying an
+argument to the FEATURE. The default error message is
+
+You can specify an alternative RBL domain to check by specifying an
+argument to the FEATURE. The default error message is
Mail from $&{client_addr} refused by blackhole site DOMAIN
@@ -2013,6 +2033,21 @@ probably not be used in production.
In this text, cert will be used as an abreviation for X.509 certificate,
DN is the distinguished name of a cert, and CA is a certification authority.
+For STARTTLS to be offered by sendmail you need to set at least
+this variables (the file names and paths are just examples):
+
+ define(`confCACERT_PATH', `/etc/mail/certs/')
+ define(`confCACERT', `/etc/mail/certs/CA.cert.pem')
+ define(`confSERVER_CERT', `/etc/mail/certs/my.cert.pem')
+ define(`confSERVER_KEY', `/etc/mail/certs/my.key.pem')
+
+On systems which do not have the compile flag HASURANDOM set (see
+sendmail/README) you also must set confRAND_FILE.
+
+See doc/op/op.{me,ps} for more information about these options,
+esp. the sections ``Certificates for STARTTLS'' and ``PRNG for
+STARTTLS''.
+
Macros related to STARTTLS are:
${cert_issuer} holds the DN of the CA (the cert issuer).
@@ -3278,4 +3313,4 @@ M4 DIVERSIONS
8 DNS based blacklists
9 special local rulesets (1 and 2)
-$Revision: 1.6 $, Last updated $Date: 2001/05/29 01:31:10 $
+$Revision: 1.7 $, Last updated $Date: 2001/08/01 01:01:40 $
diff --git a/gnu/usr.sbin/sendmail/cf/cf/courtesan-lists.mc b/gnu/usr.sbin/sendmail/cf/cf/courtesan-lists.mc
index dbb86e07af9..5934c9e3c0a 100644
--- a/gnu/usr.sbin/sendmail/cf/cf/courtesan-lists.mc
+++ b/gnu/usr.sbin/sendmail/cf/cf/courtesan-lists.mc
@@ -6,7 +6,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`$OpenBSD: courtesan-lists.mc,v 1.2 2000/05/15 03:38:25 millert Exp $')
+VERSIONID(`$OpenBSD: courtesan-lists.mc,v 1.3 2001/08/01 01:01:40 millert Exp $')
OSTYPE(openbsd)dnl
dnl
dnl Advertise ourselves as ``lists.courtesan.com''
@@ -42,10 +42,9 @@ dnl
dnl Spam blocking features
FEATURE(access_db)dnl
FEATURE(blacklist_recipients)dnl
-FEATURE(dnsbl, `rbl.maps.vix.com', `Rejected - see http://www.mail-abuse.org/rbl/')dnl
-FEATURE(dnsbl, `dul.maps.vix.com', `Dialup - see http://www.mail-abuse.org/dul/')dnl
-FEATURE(dnsbl, `relays.mail-abuse.org', `Open spam relay - see http://www.mail-abuse.org/rss/')dnl
-dnl FEATURE(dnsbl, `relays.orbs.org', `Open spam relay - see http://www.orbs.org/')dnl
+dnl FEATURE(dnsbl, `rbl.maps.vix.com', `Rejected - see http://www.mail-abuse.org/rbl/')dnl
+dnl FEATURE(dnsbl, `dul.maps.vix.com', `Dialup - see http://www.mail-abuse.org/dul/')dnl
+dnl FEATURE(dnsbl, `relays.mail-abuse.org', `Open spam relay - see http://www.mail-abuse.org/rss/')dnl
dnl
dnl List the mailers we support
MAILER(local)dnl
diff --git a/gnu/usr.sbin/sendmail/cf/cf/courtesan.mc b/gnu/usr.sbin/sendmail/cf/cf/courtesan.mc
index 53e36870c9b..b91f5d3ad56 100644
--- a/gnu/usr.sbin/sendmail/cf/cf/courtesan.mc
+++ b/gnu/usr.sbin/sendmail/cf/cf/courtesan.mc
@@ -4,7 +4,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`$OpenBSD: courtesan.mc,v 1.5 2001/07/26 04:00:35 millert Exp $')
+VERSIONID(`$OpenBSD: courtesan.mc,v 1.6 2001/08/01 01:01:40 millert Exp $')
OSTYPE(openbsd)
dnl
dnl First, we override some default values
@@ -31,9 +31,9 @@ dnl
dnl Spam blocking features
FEATURE(access_db)dnl
FEATURE(blacklist_recipients)dnl
-FEATURE(dnsbl, `rbl.maps.vix.com', `Rejected - see http://www.mail-abuse.org/rbl/')dnl
-FEATURE(dnsbl, `dul.maps.vix.com', `Dialup - see http://www.mail-abuse.org/dul/')dnl
-FEATURE(dnsbl, `relays.mail-abuse.org', `Open spam relay - see http://www.mail-abuse.org/rss/')dnl
+dnl FEATURE(dnsbl, `rbl.maps.vix.com', `Rejected - see http://www.mail-abuse.org/rbl/')dnl
+dnl FEATURE(dnsbl, `dul.maps.vix.com', `Dialup - see http://www.mail-abuse.org/dul/')dnl
+dnl FEATURE(dnsbl, `relays.mail-abuse.org', `Open spam relay - see http://www.mail-abuse.org/rss/')dnl
dnl
dnl Then, we enumerate which mailers we support
MAILER(local)
diff --git a/gnu/usr.sbin/sendmail/cf/cf/generic-hpux10.mc b/gnu/usr.sbin/sendmail/cf/cf/generic-hpux10.mc
index 073240f5ee5..0fe393e14a6 100644
--- a/gnu/usr.sbin/sendmail/cf/cf/generic-hpux10.mc
+++ b/gnu/usr.sbin/sendmail/cf/cf/generic-hpux10.mc
@@ -1,6 +1,6 @@
divert(-1)
#
-# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
+# Copyright (c) 1998, 1999, 2001 Sendmail, Inc. and its suppliers.
# All rights reserved.
# Copyright (c) 1983 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
@@ -13,14 +13,14 @@ divert(-1)
#
#
-# This is a generic configuration file for HP-UX 9.x.
+# This is a generic configuration file for HP-UX 10.x.
# It has support for local and SMTP mail only. If you want to
# customize it, copy it to a name appropriate for your environment
# and do the modifications there.
#
divert(0)dnl
-VERSIONID(`$Sendmail: generic-hpux10.mc,v 8.11 1999/02/07 07:26:02 gshapiro Exp $')
+VERSIONID(`$Sendmail: generic-hpux10.mc,v 8.11.22.2 2001/05/29 17:30:18 ca Exp $')
OSTYPE(hpux10)dnl
DOMAIN(generic)dnl
MAILER(local)dnl
diff --git a/gnu/usr.sbin/sendmail/cf/cf/openbsd-lists.mc b/gnu/usr.sbin/sendmail/cf/cf/openbsd-lists.mc
index bb522c7f4b1..27706ad7fe6 100644
--- a/gnu/usr.sbin/sendmail/cf/cf/openbsd-lists.mc
+++ b/gnu/usr.sbin/sendmail/cf/cf/openbsd-lists.mc
@@ -6,7 +6,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`$OpenBSD: openbsd-lists.mc,v 1.4 2001/01/15 21:08:53 millert Exp $')
+VERSIONID(`$OpenBSD: openbsd-lists.mc,v 1.5 2001/08/01 01:01:40 millert Exp $')
OSTYPE(openbsd)dnl
dnl
dnl Advertise ourselves as ``openbsd.org''
@@ -21,7 +21,10 @@ dnl Override some default values
define(`confPRIVACY_FLAGS', `authwarnings, nobodyreturn')dnl
define(`confTRY_NULL_MX_LIST', `True')dnl
define(`confMAX_HOP', `30')dnl
-define(`confMAX_MIME_HEADER_LENGTH', `256/128')dnl
+dnl
+dnl Keep host status on disk between sendmail runs in the .hoststat dir
+define(`confHOST_STATUS_DIRECTORY', `.hoststat')dnl
+define(`confTO_HOSTSTATUS', `1h')dnl
dnl
dnl Always use fully qualified domains
FEATURE(always_add_domain)
@@ -49,7 +52,6 @@ FEATURE(blacklist_recipients)dnl
dnl FEATURE(dnsbl, `rbl.maps.vix.com', `Rejected - see http://www.mail-abuse.org/rbl/')dnl
dnl FEATURE(dnsbl, `dul.maps.vix.com', `Dialup - see http://www.mail-abuse.org/dul/')dnl
dnl FEATURE(dnsbl, `relays.mail-abuse.org', `Open spam relay - see http://www.mail-abuse.org/rss/')dnl
-dnl FEATURE(dnsbl, `relays.orbs.org', `Open spam relay - see http://www.orbs.org/')dnl
dnl
dnl List the mailers we support
MAILER(local)dnl
diff --git a/gnu/usr.sbin/sendmail/cf/m4/proto.m4 b/gnu/usr.sbin/sendmail/cf/m4/proto.m4
index 1389b37e429..cf721de8d37 100644
--- a/gnu/usr.sbin/sendmail/cf/m4/proto.m4
+++ b/gnu/usr.sbin/sendmail/cf/m4/proto.m4
@@ -13,7 +13,7 @@ divert(-1)
#
divert(0)
-VERSIONID(`$Sendmail: proto.m4,v 8.446.2.5.2.41 2001/05/23 21:32:16 ca Exp $')
+VERSIONID(`$Sendmail: proto.m4,v 8.446.2.5.2.44 2001/07/31 22:25:49 gshapiro Exp $')
MAILER(local)dnl
@@ -161,8 +161,10 @@ ifdef(`_ACCEPT_UNRESOLVABLE_DOMAINS_',`dnl',`dnl
# Resolve map (to check if a host exists in check_mail)
Kresolve host -a<OK> -T<TEMP>')
-ifdef(`_FFR_5_', `# macro storage map
-Kmacro macro')
+ifdef(`_NEED_MACRO_MAP_', `dnl
+ifdef(`_MACRO_MAP_', `', `# macro storage map
+define(`_MACRO_MAP_', `1')dnl
+Kmacro macro')', `dnl')
ifdef(`confCR_FILE', `dnl
# Hosts for which relaying is permitted ($=R)
@@ -631,7 +633,7 @@ R$* < $* > $* <@> $: $1 < $2 > $3 unmark <addr>
R@ $* <@> $: @ $1 unmark @host:...
R$* :: $* <@> $: $1 :: $2 unmark node::addr
R:`include': $* <@> $: :`include': $1 unmark :`include':...
-R$* [ IPv6 $- ] <@> $: $1 [ IPv6 $2 ] unmark IPv6 addr
+R$* [ IPv6 : $+ ] <@> $: $1 [ IPv6 : $2 ] unmark IPv6 addr
R$* : $* [ $* ] $: $1 : $2 [ $3 ] <@> remark if leading colon
R$* : $* <@> $: $2 strip colon if marked
R$* <@> $: $1 unmark
@@ -707,9 +709,9 @@ ifdef(`_NO_UUCP_', `dnl',
`R$* < @ localhost . UUCP > $* $: $1 < @ $j . > $2 .UUCP domain')
# check for IPv6 domain literal (save quoted form)
-R$* < @ [ IPv6 $- ] > $* $: $2 $| $1 < @@ [ $(dequote $2 $) ] > $3 mark IPv6 addr
-R$- $| $* < @@ $=w > $* $: $2 < @ $j . > $4 self-literal
-R$- $| $* < @@ [ $+ ] > $* $@ $2 < @ [ IPv6 $1 ] > $4 canon IP addr
+R$* < @ [ IPv6 : $+ ] > $* $: $2 $| $1 < @@ [ $(dequote $2 $) ] > $3 mark IPv6 addr
+R$+ $| $* < @@ $=w > $* $: $2 < @ $j . > $4 self-literal
+R$+ $| $* < @@ [ $+ ] > $* $@ $2 < @ [ IPv6 : $1 ] > $4 canon IP addr
# check for IPv4 domain literal
R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [a.b.c.d]
@@ -907,8 +909,8 @@ ifdef(`_MAILER_smtp_',
dnl there is no check whether this is really an IP number
R$* < @ [ $+ ] > $* $: $>ParseLocal $1 < @ [ $2 ] > $3 numeric internet spec
R$* < @ [ $+ ] > $* $1 < @ [ $2 ] : $S > $3 Add smart host to path
-R$* < @ [ IPv6 $- ] : > $*
- $#_SMTP_ $@ [ $(dequote $2 $) ] $: $1 < @ [IPv6 $2 ] > $3 no smarthost: send
+R$* < @ [ IPv6 : $+ ] : > $*
+ $#_SMTP_ $@ [ $(dequote $2 $) ] $: $1 < @ [IPv6 : $2 ] > $3 no smarthost: send
R$* < @ [ $+ ] : > $* $#_SMTP_ $@ [$2] $: $1 < @ [$2] > $3 no smarthost: send
R$* < @ [ $+ ] : $- : $*> $* $#$3 $@ $4 $: $1 < @ [$2] > $5 smarthost with mailer
R$* < @ [ $+ ] : $+ > $* $#_SMTP_ $@ $3 $: $1 < @ [$2] > $4 smarthost without mailer',
@@ -936,6 +938,8 @@ R<@> $+ $: $1
R<!> $+ $: $1
R< error : $-.$-.$- : $+ > $* $#error $@ $1.$2.$3 $: $4
R< error : $- $+ > $* $#error $@ $(dequote $1 $) $: $2
+dnl this is not a documented option
+dnl it performs no looping at all for virtusertable
ifdef(`_NO_VIRTUSER_RECURSION_',
`R< $+ > $+ < @ $+ > $: $>ParseLocal $>Parse0 $>canonify $1',
`R< $+ > $+ < @ $+ > $: $>Recurse $1')
@@ -1104,7 +1108,7 @@ dnl <error:text> -> error
dnl <mailer:user@host> lp<@domain>rest -> mailer host user
dnl <mailer:host> address -> mailer host address
dnl <localdomain> address -> address
-dnl <[IPv6 number]> address -> relay number address
+dnl <[IPv6:number]> address -> relay number address
dnl <host> address -> relay host address
###################################################################
@@ -1116,7 +1120,7 @@ R< local : $* > $* $>CanonLocal < $1 > $2
R< $- : $+ @ $+ > $*<$*>$* $# $1 $@ $3 $: $2<@$3> use literal user
R< $- : $+ > $* $# $1 $@ $2 $: $3 try qualified mailer
R< $=w > $* $@ $2 delete local host
-R< [ IPv6 $+ ] > $* $#_RELAY_ $@ $(dequote $1 $) $: $2 use unqualified mailer
+R< [ IPv6 : $+ ] > $* $#_RELAY_ $@ $(dequote $1 $) $: $2 use unqualified mailer
R< $+ > $* $#_RELAY_ $@ $1 $: $2 use unqualified mailer
###################################################################
@@ -1280,7 +1284,7 @@ dnl <result> <passthru>
SLookUpDomain
dnl remove IPv6 mark and dequote address
dnl it is a bit ugly because it is checked on each "iteration"
-R<[IPv6 $-]> <$+> <$*> <$*> $: <[$(dequote $1 $)]> <$2> <$3> <$4>
+R<[IPv6 : $+]> <$+> <$*> <$*> $: <[$(dequote $1 $)]> <$2> <$3> <$4>
dnl workspace <key> <default> <passthru> <mark>
dnl lookup with tag (in front, no delimiter here)
R<$*> <$+> <$*> <$- $-> $: < $(access $5`'_TAG_DELIM_`'$1 $: ? $) > <$1> <$2> <$3> <$4 $5>
diff --git a/gnu/usr.sbin/sendmail/cf/m4/version.m4 b/gnu/usr.sbin/sendmail/cf/m4/version.m4
index 8b330c0b271..56cdc2b1ceb 100644
--- a/gnu/usr.sbin/sendmail/cf/m4/version.m4
+++ b/gnu/usr.sbin/sendmail/cf/m4/version.m4
@@ -11,8 +11,8 @@ divert(-1)
# the sendmail distribution.
#
#
-VERSIONID(`$Sendmail: version.m4,v 8.39.4.29 2001/05/27 21:39:20 gshapiro Exp $')
+VERSIONID(`$Sendmail: version.m4,v 8.39.4.33 2001/07/31 22:34:17 gshapiro Exp $')
#
divert(0)
# Configuration version number
-DZ8.11.4`'ifdef(`confCF_VERSION', `/confCF_VERSION')
+DZ8.11.5`'ifdef(`confCF_VERSION', `/confCF_VERSION')
diff --git a/gnu/usr.sbin/sendmail/doc/op/op.me b/gnu/usr.sbin/sendmail/doc/op/op.me
index 446bcc86770..4b4faa88ef5 100644
--- a/gnu/usr.sbin/sendmail/doc/op/op.me
+++ b/gnu/usr.sbin/sendmail/doc/op/op.me
@@ -9,9 +9,43 @@
.\" the sendmail distribution.
.\"
.\"
-.\" $Sendmail: op.me,v 8.317.4.64 2001/05/24 16:45:49 ca Exp $
+.\" $Sendmail: op.me,v 8.317.4.70 2001/07/24 04:08:25 ca Exp $
.\"
.\" eqn op.me | pic | troff -me
+.\"
+.\" Define \(sc if not defined (for text output)
+.\"
+.if !c \(sc .char \(sc S
+.\"
+.\" Define \(dg as "*" for text output and create a new .DG macro
+.\" which describes the symbol.
+.\"
+.ie !c \(dg \{\
+.char \(dg *
+.de DG
+an asterick
+..
+.\}
+.el \{\
+.de DG
+a dagger
+..
+.\}
+.\"
+.\" Define \(dd as "#" for text output and create a new .DD macro
+.\" which describes the symbol.
+.\"
+.ie !c \(dd \{\
+.char \(dd #
+.de DD
+a pound sign
+..
+.\}
+.el \{\
+.de DD
+a double dagger
+..
+.\}
.eh 'SMM:08-%''Sendmail Installation and Operation Guide'
.oh 'Sendmail Installation and Operation Guide''SMM:08-%'
.\" SD is lib if sendmail is installed in /usr/lib, sbin if in /usr/sbin
@@ -53,7 +87,7 @@ eric@Sendmail.COM
.de Ve
Version \\$2
..
-.Ve $Revision: 1.6 $
+.Ve $Revision: 1.7 $
.rm Ve
.sp
For Sendmail Version 8.11
@@ -2189,8 +2223,12 @@ For compatibility with old configuration files,
if no
.i suboption
is specified,
-all the timeouts marked with a dagger (\(dg) are set to the indicated value.
-All but those marked with a double dagger (\(dd) apply to client SMTP.
+all the timeouts marked with
+.DG
+(\(dg) are set to the indicated value.
+All but those marked with
+.DD
+(\(dd) apply to client SMTP.
.pp
Many of the RFC 1123 minimum values
may well be too short.
@@ -6444,7 +6482,15 @@ Defaults to 600000.
.ip QueueLA=\fILA\fP
[x]
When the system load average exceeds
-.i LA ,
+.i LA
+and the
+.b QueueFactor
+(\c
+.b q )
+option divided by the difference in the current load average and the
+.b QueueLA
+option plus one
+is less than the priority of the message,
just queue messages
(i.e., don't try to send them).
Defaults to 8 multiplied by
@@ -6766,7 +6812,10 @@ This should really
be set.
.ip TempFileMode=\fImode\fP
[F]
-The file mode for queue files.
+The file mode for queue files, files to which
+.i sendmail
+delivers directly, and files in the
+.b HostStatusDirectory .
It is interpreted in octal by default.
Defaults to 0600.
.ip Timeout.\fItype\fP=\|\fItimeout\fP
@@ -8704,7 +8753,8 @@ has been compiled with support for STARTTLS.
When acting as a server,
.i sendmail
requires X.509 certificates to support STARTTLS:
-one as certificate for the server (ServerCertFile)
+one as certificate for the server (ServerCertFile and corresponding
+private ServerKeyFile)
at least one root CA (CACERTFile),
i.e., a certificate that is used to sign other certificates,
and a path to a directory which contains other CAs (CACERTPath).
@@ -8723,7 +8773,7 @@ C=FileName_of_CA_Certificate
ln -s $C `openssl x509 -noout -hash < $C`.0
.)b
An X.509 certificate is also required for authentication in client mode
-(ClientCertFile), however,
+(ClientCertFile and corresponding private ClientKeyFile), however,
.i sendmail
will always use STARTTLS when offered by a server.
The client and server certificates can be identical.
@@ -9425,7 +9475,7 @@ replace it with a blank sheet for double-sided output.
.\".sz 10
.\"Eric Allman
.\".sp
-.\"Version $Revision: 1.6 $
+.\"Version $Revision: 1.7 $
.\".ce 0
.bp 3
.ce
diff --git a/gnu/usr.sbin/sendmail/include/libmilter/milter.h b/gnu/usr.sbin/sendmail/include/libmilter/milter.h
index cf8ab8ed948..6da5b9364ed 100644
--- a/gnu/usr.sbin/sendmail/include/libmilter/milter.h
+++ b/gnu/usr.sbin/sendmail/include/libmilter/milter.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999-2000 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1999-2001 Sendmail, Inc. and its suppliers.
* All rights reserved.
*
* By using this file, you agree to the terms and conditions set
@@ -7,7 +7,7 @@
* the sendmail distribution.
*
*
- * $Sendmail: milter.h,v 8.24.16.9 2001/03/02 21:22:48 geir Exp $
+ * $Sendmail: milter.h,v 8.24.16.10 2001/07/20 04:19:35 gshapiro Exp $
*/
/*
diff --git a/gnu/usr.sbin/sendmail/include/sendmail/sendmail.h b/gnu/usr.sbin/sendmail/include/sendmail/sendmail.h
index a42953448a2..adea3597b1c 100644
--- a/gnu/usr.sbin/sendmail/include/sendmail/sendmail.h
+++ b/gnu/usr.sbin/sendmail/include/sendmail/sendmail.h
@@ -10,7 +10,7 @@
* the sendmail distribution.
*
*
- * $Sendmail: sendmail.h,v 8.34.4.7 2000/10/09 16:15:26 gshapiro Exp $
+ * $Sendmail: sendmail.h,v 8.34.4.8 2001/06/01 05:06:51 gshapiro Exp $
*/
/*
@@ -108,7 +108,6 @@ typedef unsigned int BITMAP256[BITMAPBYTES / sizeof (int)];
extern int safefile __P((char *, UID_T, GID_T, char *, long, int, struct stat *));
extern int safedirpath __P((char *, UID_T, GID_T, char *, long, int, int));
extern int safeopen __P((char *, int, int, long));
-extern FILE *safefopen __P((char *, int, int, long));
extern int dfopen __P((char *, int, int, long));
extern bool filechanged __P((char *, int, struct stat *));
diff --git a/gnu/usr.sbin/sendmail/libmilter/README b/gnu/usr.sbin/sendmail/libmilter/README
index 2e7c69de064..aacaadfa5bf 100644
--- a/gnu/usr.sbin/sendmail/libmilter/README
+++ b/gnu/usr.sbin/sendmail/libmilter/README
@@ -59,14 +59,14 @@ Filters are specified with a key letter ``X'' (for ``eXternal'').
For example:
Xfilter1, S=local:/var/run/f1.sock, F=R
- Xfilter2, S=inet6:999@localhost, F=T, T=S:1s;R:1s;E:5m
+ Xfilter2, S=inet6:999@localhost, F=T, T=C:10m;S:1s;R:1s;E:5m
Xfilter3, S=inet:3333@localhost
specifies three filters. Filters can be specified in your .mc file using
the following:
INPUT_MAIL_FILTER(`filter1', `S=local:/var/run/f1.sock, F=R')
- INPUT_MAIL_FILTER(`filter2', `S=inet6:999@localhost, F=T, T=S:1s;R:1s;E:5m')
+ INPUT_MAIL_FILTER(`filter2', `S=inet6:999@localhost, F=T, T=C:10m;S:1s;R:1s;E:5m')
INPUT_MAIL_FILTER(`filter3', `S=inet:3333@localhost')
The first attaches to a Unix-domain socket in the /var/run directory; the
@@ -80,19 +80,21 @@ If neither F=R nor F=T is specified, the message is passed through sendmail
as if the filter were not present.
Finally, you can override the default timeouts used by sendmail when
-talking to the filters using the T= equate. There are three fields inside
+talking to the filters using the T= equate. There are four fields inside
of the T= equate:
Letter Meaning
- S Timeout for sending information from the MTA to a filter
- R Timeout for reading reply from the filter
- E Overall timeout between sending end-of-message to filter
- and waiting for the final acknowledgment
+ C Timeout for connecting to a filter (if 0, use system timeout)
+ S Timeout for sending information from the MTA to a filter
+ R Timeout for reading reply from the filter
+ E Overall timeout between sending end-of-message to filter
+ and waiting for the final acknowledgment
Note the separator between each is a ';' as a ',' already separates equates
-and therefore can't separate timeouts. The default values (if not set in the config) are:
+and therefore can't separate timeouts. The default values (if not set in
+the config) are:
-T=S:10s;R:10s;E:5m
+T=C:0m;S:10s;R:10s;E:5m
where 's' is seconds and 'm' is minutes.
@@ -424,4 +426,4 @@ main(argc, argv)
/* eof */
-$Revision: 1.6 $, Last updated $Date: 2001/05/29 01:31:12 $
+$Revision: 1.7 $, Last updated $Date: 2001/08/01 01:01:40 $
diff --git a/gnu/usr.sbin/sendmail/libmilter/libmilter.h b/gnu/usr.sbin/sendmail/libmilter/libmilter.h
index 9109051adff..d826f972368 100644
--- a/gnu/usr.sbin/sendmail/libmilter/libmilter.h
+++ b/gnu/usr.sbin/sendmail/libmilter/libmilter.h
@@ -17,7 +17,7 @@
# define EXTERN
# define INIT(x) = x
# ifndef lint
-static char MilterlId[] = "@(#)$Sendmail: libmilter.h,v 8.3.6.14 2001/05/27 14:31:12 ca Exp $";
+static char MilterlId[] = "@(#)$Sendmail: libmilter.h,v 8.3.6.16 2001/06/07 23:21:35 geir Exp $";
# endif /* ! lint */
#else /* _DEFINE */
# define EXTERN extern
diff --git a/gnu/usr.sbin/sendmail/libmilter/sm_gethost.c b/gnu/usr.sbin/sendmail/libmilter/sm_gethost.c
index 246b1947202..57b102f236d 100644
--- a/gnu/usr.sbin/sendmail/libmilter/sm_gethost.c
+++ b/gnu/usr.sbin/sendmail/libmilter/sm_gethost.c
@@ -9,7 +9,7 @@
*/
#ifndef lint
-static char id[] = "@(#)$Sendmail: sm_gethost.c,v 8.7.8.10 2001/05/09 20:57:12 gshapiro Exp $";
+static char id[] = "@(#)$Sendmail: sm_gethost.c,v 8.7.8.11 2001/07/21 00:10:23 gshapiro Exp $";
#endif /* ! lint */
#if _FFR_MILTER
@@ -31,12 +31,15 @@ static char id[] = "@(#)$Sendmail: sm_gethost.c,v 8.7.8.10 2001/05/09 20:57:12 g
#if NETINET6 && NEEDSGETIPNODE
-# ifndef AI_V4MAPPED
-# define AI_V4MAPPED 0 /* dummy */
-# endif /* ! AI_V4MAPPED */
+# ifndef AI_ADDRCONFIG
+# define AI_ADDRCONFIG 0 /* dummy */
+# endif /* ! AI_ADDRCONFIG */
# ifndef AI_ALL
# define AI_ALL 0 /* dummy */
# endif /* ! AI_ALL */
+# ifndef AI_DEFAULT
+# define AI_DEFAULT 0 /* dummy */
+# endif /* ! AI_DEFAULT */
static struct hostent *
getipnodebyname(name, family, flags, err)
@@ -97,11 +100,15 @@ mi_gethostbyname(name, family)
# endif /* SOLARIS == 20300 || SOLARIS == 203 */
#else /* (SOLARIS > 10000 && SOLARIS < 20400) || (defined(SOLARIS) && SOLARIS < 204) || (defined(sony_news) && defined(__svr4)) */
# if NETINET6
+ int flags = AI_DEFAULT|AI_ALL;
int err;
# endif /* NETINET6 */
# if NETINET6
- h = getipnodebyname(name, family, AI_V4MAPPED|AI_ALL, &err);
+# if ADDRCONFIG_IS_BROKEN
+ flags &= ~AI_ADDRCONFIG;
+# endif /* ADDRCONFIG_IS_BROKEN */
+ h = getipnodebyname(name, family, flags, &err);
SM_SET_H_ERRNO(err);
# else /* NETINET6 */
h = gethostbyname(name);
diff --git a/gnu/usr.sbin/sendmail/libsmutil/safefile.c b/gnu/usr.sbin/sendmail/libsmutil/safefile.c
index 531a0eed610..de2b155653c 100644
--- a/gnu/usr.sbin/sendmail/libsmutil/safefile.c
+++ b/gnu/usr.sbin/sendmail/libsmutil/safefile.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998-2000 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1998-2001 Sendmail, Inc. and its suppliers.
* All rights reserved.
* Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
@@ -12,7 +12,7 @@
*/
#ifndef lint
-static char id[] = "@(#)$Sendmail: safefile.c,v 8.81.4.7 2000/09/01 21:09:23 ca Exp $";
+static char id[] = "@(#)$Sendmail: safefile.c,v 8.81.4.10 2001/07/20 04:19:36 gshapiro Exp $";
#endif /* ! lint */
#include <sendmail.h>
@@ -660,10 +660,6 @@ safedirpath(fn, uid, gid, user, flags, level, offset)
** Same as open.
*/
-#ifndef O_ACCMODE
-# define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR)
-#endif /* ! O_ACCMODE */
-
int
safeopen(fn, omode, cmode, sff)
char *fn;
@@ -735,81 +731,6 @@ safeopen(fn, omode, cmode, sff)
return fd;
}
/*
-** SAFEFOPEN -- do a file open with extra checking
-**
-** Parameters:
-** fn -- the file name to open.
-** omode -- the open-style mode flags.
-** cmode -- the create-style mode flags.
-** sff -- safefile flags.
-**
-** Returns:
-** Same as fopen.
-*/
-
-FILE *
-safefopen(fn, omode, cmode, sff)
- char *fn;
- int omode;
- int cmode;
- long sff;
-{
- int fd;
- int save_errno;
- FILE *fp;
- char *fmode;
-
- switch (omode & O_ACCMODE)
- {
- case O_RDONLY:
- fmode = "r";
- break;
-
- case O_WRONLY:
- if (bitset(O_APPEND, omode))
- fmode = "a";
- else
- fmode = "w";
- break;
-
- case O_RDWR:
- if (bitset(O_TRUNC, omode))
- fmode = "w+";
- else if (bitset(O_APPEND, omode))
- fmode = "a+";
- else
- fmode = "r+";
- break;
-
- default:
- syserr("554 5.3.5 safefopen: unknown omode %o", omode);
- fmode = "x";
- }
- fd = safeopen(fn, omode, cmode, sff);
- if (fd < 0)
- {
- save_errno = errno;
- if (tTd(44, 10))
- dprintf("safefopen: safeopen failed: %s\n",
- errstring(errno));
- errno = save_errno;
- return NULL;
- }
- fp = fdopen(fd, fmode);
- if (fp != NULL)
- return fp;
-
- save_errno = errno;
- if (tTd(44, 10))
- {
- dprintf("safefopen: fdopen(%s, %s) failed: omode=%x, sff=%lx, err=%s\n",
- fn, fmode, omode, sff, errstring(errno));
- }
- (void) close(fd);
- errno = save_errno;
- return NULL;
-}
- /*
** FILECHANGED -- check to see if file changed after being opened
**
** Parameters:
diff --git a/gnu/usr.sbin/sendmail/libsmutil/snprintf.c b/gnu/usr.sbin/sendmail/libsmutil/snprintf.c
index e62c4a83e25..0aaeb668ff2 100644
--- a/gnu/usr.sbin/sendmail/libsmutil/snprintf.c
+++ b/gnu/usr.sbin/sendmail/libsmutil/snprintf.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998-2000 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1998-2001 Sendmail, Inc. and its suppliers.
* All rights reserved.
* Copyright (c) 1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
@@ -12,7 +12,7 @@
*/
#ifndef lint
-static char id[] = "@(#)$Sendmail: snprintf.c,v 8.27.16.2 2000/09/17 17:04:24 gshapiro Exp $";
+static char id[] = "@(#)$Sendmail: snprintf.c,v 8.27.16.4 2001/07/20 04:19:37 gshapiro Exp $";
#endif /* ! lint */
#include <sendmail.h>
@@ -86,10 +86,10 @@ sm_vsnprintf(str, count, fmt, args)
sm_dopr( str, fmt, args );
if (count > 0)
DoprEnd[0] = 0;
- if (SnprfOverflow && tTd(57, 2))
+ if (SnprfOverflow > 0 && tTd(57, 2))
dprintf("\nvsnprintf overflow, len = %ld, str = %s",
(long) count, shortenstring(str, MAXSHORTSTR));
- return strlen(str);
+ return strlen(str) + SnprfOverflow;
}
/*
diff --git a/gnu/usr.sbin/sendmail/mail.local/mail.local.c b/gnu/usr.sbin/sendmail/mail.local/mail.local.c
index ddef32d18fd..5b346d565d3 100644
--- a/gnu/usr.sbin/sendmail/mail.local/mail.local.c
+++ b/gnu/usr.sbin/sendmail/mail.local/mail.local.c
@@ -19,7 +19,7 @@ static char copyright[] =
#endif /* ! lint */
#ifndef lint
-static char id[] = "@(#)$Sendmail: mail.local.c,v 8.143.4.57 2001/02/11 20:08:20 gshapiro Exp $";
+static char id[] = "@(#)$Sendmail: mail.local.c,v 8.143.4.58 2001/06/01 05:33:31 gshapiro Exp $";
#endif /* ! lint */
/*
diff --git a/gnu/usr.sbin/sendmail/sendmail/README b/gnu/usr.sbin/sendmail/sendmail/README
index 0e4a697988d..533826c02be 100644
--- a/gnu/usr.sbin/sendmail/sendmail/README
+++ b/gnu/usr.sbin/sendmail/sendmail/README
@@ -9,7 +9,7 @@
# the sendmail distribution.
#
#
-# $Sendmail: README,v 8.263.2.1.2.35 2001/05/09 20:58:32 gshapiro Exp $
+# $Sendmail: README,v 8.263.2.1.2.37 2001/06/03 03:41:12 ca Exp $
#
This directory contains the source files for sendmail(TM).
@@ -82,7 +82,6 @@ Porting to a new Unix-based system should be a matter of creating
an appropriate configuration file in the devtools/OS/ directory.
-
+----------------------+
| DATABASE DEFINITIONS |
+----------------------+
@@ -178,6 +177,7 @@ addresses, so "^[0-9]+$" would match this. By using such a map in a
check_* rule-set, you can block a certain range of addresses that would
otherwise be considered valid.
+
+---------------+
| COMPILE FLAGS |
+---------------+
@@ -463,6 +463,7 @@ NEEDSGETIPNODE Set this if your system supports IPv6 but doesn't include
the getipnodeby{name,addr}() functions. Set automatically
for Linux's glibc.
+
+-----------------------+
| COMPILE-TIME FEATURES |
+-----------------------+
@@ -600,6 +601,13 @@ SFIO Uses sfio instead of stdio. sfio is available from AT&T
OPERATING SYSTEM AND COMPILE QUIRKS.
+Generic notice: If you enable a compile time option that needs
+libraries or include files that don't come with sendmail or are
+installed in a location that your C compiler doesn't use by default
+you should set confINCDIRS and confLIBDIRS as explained in the
+first section: BUILDING SENDMAIL.
+
+
+---------------------+
| DNS/RESOLVER ISSUES |
+---------------------+
@@ -639,6 +647,7 @@ ResolverOptions setting. However, instead, we recommend catching the
problem and reporting it to the name server administrator so we can rid the
world of broken name servers.
+
+----------------------------------------+
| STARTTLS COMPILATION AND CONFIGURATION |
+----------------------------------------+
@@ -649,11 +658,16 @@ sendmail. See devtools/README how to set the correct compile time
parameters; you should at least set the following variables:
define(`confSTDIO_TYPE', `portable')
-APPENDDEF(`confENVDEF', `-DSFIO')
-APPENDDEF(`confLIBS', `-lsfio')
+APPENDDEF(`conf_sendmail_ENVDEF', `-DSFIO')
+APPENDDEF(`conf_sendmail_LIBS', `-lsfio')
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS')
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')
+If you have installed the OpenSSL libraries and include files in
+a location that your C compiler doesn't use by default you should
+set confINCDIRS and confLIBDIRS as explained in the first section:
+BUILDING SENDMAIL.
+
Configuration information can be found in doc/op/op.me (required
certificates) and cf/README (how to tell sendmail about certificates).
@@ -667,10 +681,8 @@ there are any problems listed about permissions (unsafe files)
or the validity of X.509 certificates.
Note: sfio must be used in all libraries with which sendmail exchanges
-file pointers. That is, libsmutil must be compiled with sfio, which
-is accomplished by the above config parameters. Another example is
-PH map support. This does not apply to the usual libraries, e.g.,
-OpenSSL, Berkeley DB, Cyrus SASL.
+file pointers. An example is PH map support. This does not apply to the
+usual libraries, e.g., OpenSSL, Berkeley DB, Cyrus SASL.
Further information can be found via:
http://www.sendmail.org/tips/
@@ -682,7 +694,17 @@ http://www.sendmail.org/tips/
Please read the docs accompanying the library (INSTALL and README).
If you use Berkeley DB for Cyrus SASL then you must compile sendmail
-with the same version of Berkeley DB.
+with the same version of Berkeley DB. See devtools/README how to
+set the correct compile time parameters; you should at least set
+the following variables:
+
+APPENDDEF(`conf_sendmail_ENVDEF', `-DSASL')
+APPENDDEF(`conf_sendmail_LIBS', `-lsasl')
+
+If you have installed the Cyrus SASL library and include files in
+a location that your C compiler doesn't use by default you should
+set confINCDIRS and confLIBDIRS as explained in the first section:
+BUILDING SENDMAIL.
You have to select and install authentication mechanisms and tell
sendmail where to find the sasl library and the include files (see
@@ -1599,6 +1621,7 @@ Regular Expressions (MAP_REGEX)
The manual pages have been written against the -man macros, and
should format correctly with any reasonable *roff.
+
+-----------------+
| DEBUGGING HOOKS |
+-----------------+
@@ -1706,4 +1729,4 @@ util.c Some general purpose routines used by sendmail.
version.c The version number and information about this
version of sendmail.
-(Version $Revision: 1.6 $, last update $Date: 2001/05/29 01:31:13 $ )
+(Version $Revision: 1.7 $, last update $Date: 2001/08/01 01:01:41 $ )
diff --git a/gnu/usr.sbin/sendmail/sendmail/clock.c b/gnu/usr.sbin/sendmail/sendmail/clock.c
index 2d0df71c3d1..55ea90675f6 100644
--- a/gnu/usr.sbin/sendmail/sendmail/clock.c
+++ b/gnu/usr.sbin/sendmail/sendmail/clock.c
@@ -12,7 +12,7 @@
*/
#ifndef lint
-static char id[] = "@(#)$Sendmail: clock.c,v 8.52.18.14 2001/05/17 18:12:28 gshapiro Exp $";
+static char id[] = "@(#)$Sendmail: clock.c,v 8.52.18.17 2001/07/31 23:04:59 ca Exp $";
#endif /* ! lint */
#include <sendmail.h>
@@ -21,8 +21,8 @@ static char id[] = "@(#)$Sendmail: clock.c,v 8.52.18.14 2001/05/17 18:12:28 gsha
# define sigmask(s) (1 << ((s) - 1))
#endif /* ! sigmask */
-static SIGFUNC_DECL tick __P((int));
-static void endsleep __P((void));
+static SIGFUNC_DECL sm_tick __P((int));
+static void endsleep __P((void));
/*
@@ -119,7 +119,7 @@ sigsafe_setevent(intvl, func, arg)
** This shouldn't happen. If called from setevent(),
** we have just malloced a FreeEventList entry. If
** called from a signal handler, it should have been
- ** from an existing event which tick() just added to the
+ ** from an existing event which sm_tick() just added to the
** FreeEventList.
*/
@@ -143,7 +143,7 @@ sigsafe_setevent(intvl, func, arg)
*evp = ev;
LEAVE_CRITICAL();
- (void) setsignal(SIGALRM, tick);
+ (void) setsignal(SIGALRM, sm_tick);
intvl = EventQueue->ev_time - now;
(void) alarm((unsigned) intvl < 1 ? 1 : intvl);
if (wasblocked == 0)
@@ -247,7 +247,7 @@ clear_events()
(void) releasesignal(SIGALRM);
}
/*
-** TICK -- take a clock tick
+** SM_TICK -- take a clock sm_tick
**
** Called by the alarm clock. This routine runs events as needed.
** Always called as a signal handler, so we assume that SIGALRM
@@ -268,8 +268,8 @@ clear_events()
*/
/* ARGSUSED */
-SIGFUNC_DECL
-tick(sig)
+static SIGFUNC_DECL
+sm_tick(sig)
int sig;
{
register time_t now;
@@ -279,7 +279,7 @@ tick(sig)
(void) alarm(0);
- FIX_SYSV_SIGNAL(sig, tick);
+ FIX_SYSV_SIGNAL(sig, sm_tick);
errno = save_errno;
CHECK_CRITICAL(sig);
@@ -287,8 +287,8 @@ tick(sig)
mypid = getpid();
while (PendingSignal != 0)
{
- int sigbit;
- int sig;
+ int sigbit = 0;
+ int sig = 0;
if (bitset(PEND_SIGHUP, PendingSignal))
{
@@ -321,7 +321,7 @@ tick(sig)
now = curtime();
if (tTd(5, 4))
- dprintf("tick: now=%ld\n", (long) now);
+ dprintf("sm_tick: now=%ld\n", (long) now);
while ((ev = EventQueue) != NULL &&
(ev->ev_time <= now || ev->ev_pid != mypid))
@@ -336,7 +336,7 @@ tick(sig)
EventQueue = EventQueue->ev_link;
LEAVE_CRITICAL();
if (tTd(5, 6))
- dprintf("tick: ev=%lx, func=%lx, arg=%d, pid=%d\n",
+ dprintf("sm_tick: ev=%lx, func=%lx, arg=%d, pid=%d\n",
(u_long) ev, (u_long) ev->ev_func,
ev->ev_arg, ev->ev_pid);
@@ -431,11 +431,32 @@ pend_signal(sig)
if (sigbit != 0)
PendingSignal |= sigbit;
- (void) setsignal(SIGALRM, tick);
+ (void) setsignal(SIGALRM, sm_tick);
(void) alarm(1);
errno = save_errno;
}
/*
+** SM_SIGNAL_NOOP -- A signal no-op function
+**
+** Parameters:
+** sig -- signal received
+**
+** Returns:
+** SIGFUNC_RETURN
+*/
+
+/* ARGSUSED */
+SIGFUNC_DECL
+sm_signal_noop(sig)
+ int sig;
+{
+ int save_errno = errno;
+
+ FIX_SYSV_SIGNAL(sig, sm_signal_noop);
+ errno = save_errno;
+ return SIGFUNC_RETURN;
+}
+ /*
** SLEEP -- a version of sleep that works with this stuff
**
** Because sleep uses the alarm facility, I must reimplement
diff --git a/gnu/usr.sbin/sendmail/sendmail/collect.c b/gnu/usr.sbin/sendmail/sendmail/collect.c
index 2bb5f6fdacd..27c8c4636a8 100644
--- a/gnu/usr.sbin/sendmail/sendmail/collect.c
+++ b/gnu/usr.sbin/sendmail/sendmail/collect.c
@@ -12,7 +12,7 @@
*/
#ifndef lint
-static char id[] = "@(#)$Sendmail: collect.c,v 8.136.4.21 2001/05/17 18:10:14 gshapiro Exp $";
+static char id[] = "@(#)$Sendmail: collect.c,v 8.136.4.22 2001/06/07 21:01:02 ca Exp $";
#endif /* ! lint */
#include <sendmail.h>
@@ -352,7 +352,8 @@ bufferchar:
{
*bp++ = c;
hdrslen++;
- if (MaxHeadersLength > 0 &&
+ if (!headeronly &&
+ MaxHeadersLength > 0 &&
hdrslen > MaxHeadersLength)
{
sm_syslog(LOG_NOTICE, e->e_id,
diff --git a/gnu/usr.sbin/sendmail/sendmail/conf.c b/gnu/usr.sbin/sendmail/sendmail/conf.c
index 6c612af1b11..9369500d4f3 100644
--- a/gnu/usr.sbin/sendmail/sendmail/conf.c
+++ b/gnu/usr.sbin/sendmail/sendmail/conf.c
@@ -12,7 +12,7 @@
*/
#ifndef lint
-static char id[] = "@(#)$Sendmail: conf.c,v 8.646.2.2.2.86 2001/05/17 18:18:40 ca Exp $";
+static char id[] = "@(#)$Sendmail: conf.c,v 8.646.2.2.2.87 2001/07/20 23:56:52 gshapiro Exp $";
#endif /* ! lint */
#include <sendmail.h>
@@ -4542,9 +4542,7 @@ sm_gethostbyname(name, family)
hbuf, family);
# if NETINET6
- h = getipnodebyname(hbuf, family,
- AI_V4MAPPED|AI_ALL,
- &err);
+ h = getipnodebyname(hbuf, family, flags, &err);
SM_SET_H_ERRNO(err);
save_errno = errno;
# else /* NETINET6 */
diff --git a/gnu/usr.sbin/sendmail/sendmail/conf.h b/gnu/usr.sbin/sendmail/sendmail/conf.h
index 05271852421..f3432060bd8 100644
--- a/gnu/usr.sbin/sendmail/sendmail/conf.h
+++ b/gnu/usr.sbin/sendmail/sendmail/conf.h
@@ -10,7 +10,7 @@
* the sendmail distribution.
*
*
- * $Sendmail: conf.h,v 8.496.4.43 2001/05/20 22:29:59 gshapiro Exp $
+ * $Sendmail: conf.h,v 8.496.4.54 2001/07/31 22:30:24 gshapiro Exp $
*/
/*
@@ -488,6 +488,7 @@ typedef int pid_t;
# endif /* ! __svr4__ */
# define GIDSET_T gid_t
# define USE_SA_SIGACTION 1 /* use sa_sigaction field */
+# define HASSTRERROR 1 /* has strerror(3) */
# if _FFR_MILTER
# define BROKEN_PTHREAD_SLEEP 1 /* sleep after pthread_create() fails */
# endif /* _FFR_MILTER */
@@ -867,9 +868,11 @@ typedef int pid_t;
#ifdef __bsdi__
# include <paths.h>
# define HASUNSETENV 1 /* has the unsetenv(3) call */
+# define HASSETREUID 0 /* BSD-OS has broken setreuid(2) emulation */
# define HASSETSID 1 /* has the setsid(2) POSIX syscall */
# define USESETEUID 1 /* has usable seteuid(2) call */
# define HASFCHMOD 1 /* has fchmod(2) syscall */
+# define HASFCHOWN 1 /* has fchown(2) syscall */
# define HASSETLOGIN 1 /* has setlogin(2) */
# define HASSNPRINTF 1 /* has snprintf(3) and vsnprintf(3) */
# define HASUNAME 1 /* has uname(2) syscall */
@@ -896,6 +899,9 @@ typedef int pid_t;
# if defined(_BSDI_VERSION) && _BSDI_VERSION >= 199701 /* on 3.x */
# define HASSETUSERCONTEXT 1 /* has setusercontext */
# endif /* defined(_BSDI_VERSION) && _BSDI_VERSION >= 199701 */
+# if defined(_BSDI_VERSION) && _BSDI_VERSION >= 199910 /* on 4.x */
+# define HASURANDOMDEV 1 /* has /dev/urandom(4) */
+# endif /* defined(_BSDI_VERSION) && _BSDI_VERSION >= 199910 */
#endif /* __bsdi__ */
@@ -1718,6 +1724,7 @@ typedef int pid_t;
# include <sys/mkdev.h>
# define __svr4__
# define SYS5SIGNALS 1
+# define HASFCHOWN 1 /* has fchown(2) call */
# define HASSETSID 1
# define HASSNPRINTF 1
# define HASSETREUID 1
@@ -2517,6 +2524,10 @@ typedef struct msgb mblk_t;
# define S_IWOTH 0002
#endif /* ! S_IWOTH */
+#ifndef O_ACCMODE
+# define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR)
+#endif /* ! O_ACCMODE */
+
/* close-on-exec flag */
#ifndef FD_CLOEXEC
# define FD_CLOEXEC 1
diff --git a/gnu/usr.sbin/sendmail/sendmail/daemon.c b/gnu/usr.sbin/sendmail/sendmail/daemon.c
index 223033168d2..db27326e0c2 100644
--- a/gnu/usr.sbin/sendmail/sendmail/daemon.c
+++ b/gnu/usr.sbin/sendmail/sendmail/daemon.c
@@ -16,9 +16,9 @@
#ifndef lint
# ifdef DAEMON
-static char id[] = "@(#)$Sendmail: daemon.c,v 8.401.4.61 2001/05/27 22:14:40 gshapiro Exp $ (with daemon mode)";
+static char id[] = "@(#)$Sendmail: daemon.c,v 8.401.4.68 2001/07/20 18:45:58 gshapiro Exp $ (with daemon mode)";
# else /* DAEMON */
-static char id[] = "@(#)$Sendmail: daemon.c,v 8.401.4.61 2001/05/27 22:14:40 gshapiro Exp $ (without daemon mode)";
+static char id[] = "@(#)$Sendmail: daemon.c,v 8.401.4.68 2001/07/20 18:45:58 gshapiro Exp $ (without daemon mode)";
# endif /* DAEMON */
#endif /* ! lint */
@@ -704,7 +704,6 @@ getrequests(e)
(void) setsignal(SIGHUP, SIG_DFL);
(void) setsignal(SIGTERM, intsig);
-
if (!control)
{
define(macid("{daemon_addr}", NULL),
@@ -720,6 +719,7 @@ getrequests(e)
{
if (Daemons[idx].d_socket >= 0)
(void) close(Daemons[idx].d_socket);
+ Daemons[idx].d_socket = -1;
}
clrcontrol();
@@ -2491,15 +2491,26 @@ sighup(sig)
** restarts the daemon or exits if restart fails.
*/
+/* Make a non-DFL/IGN signal a noop */
+#define SM_NOOP_SIGNAL(sig, old) \
+do \
+{ \
+ (old) = setsignal((sig), sm_signal_noop); \
+ if ((old) == SIG_IGN || (old) == SIG_DFL) \
+ (void) setsignal((sig), (old)); \
+} while (0)
+
static void
restart_daemon()
{
int i;
int save_errno;
char *reason;
- sigfunc_t oalrm, ochld, ohup, oint, opipe, oterm, ousr1;
+ sigfunc_t ignore, oalrm, ousr1;
extern int DtableSize;
+ /* clear the events to turn off SIGALRMs */
+ clear_events();
allsignals(TRUE);
reason = RestartRequest;
@@ -2537,28 +2548,37 @@ restart_daemon()
(void) fcntl(i, F_SETFD, j | FD_CLOEXEC);
}
- /* need to allow signals before execve() so make them harmless */
- oalrm = setsignal(SIGALRM, SIG_DFL);
- ochld = setsignal(SIGCHLD, SIG_DFL);
- ohup = setsignal(SIGHUP, SIG_DFL);
- oint = setsignal(SIGINT, SIG_DFL);
- opipe = setsignal(SIGPIPE, SIG_DFL);
- oterm = setsignal(SIGTERM, SIG_DFL);
- ousr1 = setsignal(SIGUSR1, SIG_DFL);
+ /*
+ ** Need to allow signals before execve() to make them "harmless".
+ ** However, the default action can be "terminate", so it isn't
+ ** really harmless. Setting signals to IGN will cause them to be
+ ** ignored in the new process to, so that isn't a good alternative.
+ */
+
+ SM_NOOP_SIGNAL(SIGALRM, oalrm);
+ SM_NOOP_SIGNAL(SIGCHLD, ignore);
+ SM_NOOP_SIGNAL(SIGHUP, ignore);
+ SM_NOOP_SIGNAL(SIGINT, ignore);
+ SM_NOOP_SIGNAL(SIGPIPE, ignore);
+ SM_NOOP_SIGNAL(SIGTERM, ignore);
+#ifdef SIGUSR1
+ SM_NOOP_SIGNAL(SIGUSR1, ousr1);
+#endif /* SIGUSR1 */
allsignals(FALSE);
(void) execve(SaveArgv[0], (ARGV_T) SaveArgv, (ARGV_T) ExternalEnviron);
save_errno = errno;
- /* restore signals */
+ /* block signals again and restore needed signals */
allsignals(TRUE);
+
+ /* For finis() events */
(void) setsignal(SIGALRM, oalrm);
- (void) setsignal(SIGCHLD, ochld);
- (void) setsignal(SIGHUP, ohup);
- (void) setsignal(SIGINT, oint);
- (void) setsignal(SIGPIPE, opipe);
- (void) setsignal(SIGTERM, oterm);
+
+#ifdef SIGUSR1
+ /* For debugging finis() */
(void) setsignal(SIGUSR1, ousr1);
+#endif /* SIGUSR1 */
errno = save_errno;
if (LogLevel > 0)
@@ -2590,6 +2610,19 @@ myhostname(hostbuf, size)
if (gethostname(hostbuf, size) < 0 || hostbuf[0] == '\0')
(void) strlcpy(hostbuf, "localhost", size);
hp = sm_gethostbyname(hostbuf, InetMode);
+# if NETINET && NETINET6
+ if (hp == NULL && InetMode == AF_INET6)
+ {
+ /*
+ ** It's possible that this IPv6 enabled machine doesn't
+ ** actually have any IPv6 interfaces and, therefore, no
+ ** IPv6 addresses. Fall back to AF_INET.
+ */
+
+ hp = sm_gethostbyname(hostbuf, AF_INET);
+ }
+# endif /* NETINET && NETINET6 */
+
if (hp == NULL)
return NULL;
if (strchr(hp->h_name, '.') != NULL || strchr(hostbuf, '.') == NULL)
@@ -2803,10 +2836,30 @@ getauthinfo(fd, may_be_forged)
}
else
{
- /* try to match the reverse against the forward lookup */
- hp = sm_gethostbyname(RealHostName,
- RealHostAddr.sa.sa_family);
+ int family;
+
+ family = RealHostAddr.sa.sa_family;
+# if NETINET6 && NEEDSGETIPNODE
+ /*
+ ** If RealHostAddr is an IPv6 connection with an
+ ** IPv4-mapped address, we need RealHostName's IPv4
+ ** address(es) for addrcmp() to compare against
+ ** RealHostAddr.
+ **
+ ** Actually, we only need to do this for systems
+ ** which NEEDSGETIPNODE since the real getipnodebyname()
+ ** already does V4MAPPED address via the AI_V4MAPPEDCFG
+ ** flag. A better fix to this problem is to add this
+ ** functionality to our stub getipnodebyname().
+ */
+ if (family == AF_INET6 &&
+ IN6_IS_ADDR_V4MAPPED(&RealHostAddr.sin6.sin6_addr))
+ family = AF_INET;
+# endif /* NETINET6 && NEEDSGETIPNODE */
+
+ /* try to match the reverse against the forward lookup */
+ hp = sm_gethostbyname(RealHostName, family);
if (hp == NULL)
*may_be_forged = TRUE;
else
diff --git a/gnu/usr.sbin/sendmail/sendmail/deliver.c b/gnu/usr.sbin/sendmail/sendmail/deliver.c
index 8bed8663cc4..02f6ad747d5 100644
--- a/gnu/usr.sbin/sendmail/sendmail/deliver.c
+++ b/gnu/usr.sbin/sendmail/sendmail/deliver.c
@@ -12,7 +12,7 @@
*/
#ifndef lint
-static char id[] = "@(#)$Sendmail: deliver.c,v 8.600.2.1.2.81 2001/05/23 02:15:42 ca Exp $";
+static char id[] = "@(#)$Sendmail: deliver.c,v 8.600.2.1.2.86 2001/07/20 21:52:55 gshapiro Exp $";
#endif /* ! lint */
#include <sendmail.h>
@@ -1927,6 +1927,9 @@ tryhost:
struct stat stb;
extern int DtableSize;
+ /* clear the events to turn off SIGALRMs */
+ clear_events();
+
/* Reset global flags */
RestartRequest = NULL;
ShutdownRequest = NULL;
@@ -1936,9 +1939,14 @@ tryhost:
(void) close(fileno(e->e_lockfp));
/* child -- set up input & exec mailer */
- (void) setsignal(SIGINT, SIG_IGN);
+ (void) setsignal(SIGALRM, sm_signal_noop);
+ (void) setsignal(SIGCHLD, SIG_DFL);
(void) setsignal(SIGHUP, SIG_IGN);
+ (void) setsignal(SIGINT, SIG_IGN);
(void) setsignal(SIGTERM, SIG_DFL);
+# ifdef SIGUSR1
+ (void) setsignal(SIGUSR1, sm_signal_noop);
+# endif /* SIGUSR1 */
if (m != FileMailer || stat(tochain->q_user, &stb) < 0)
stb.st_mode = 0;
@@ -2071,7 +2079,19 @@ tryhost:
/* reset user id */
endpwent();
if (bitnset(M_SPECIFIC_UID, m->m_flags))
+ {
new_euid = m->m_uid;
+
+ /*
+ ** Undo the effects of the uid change in main
+ ** for signal handling. The real uid may
+ ** be used by mailer in adding a "From "
+ ** line.
+ */
+
+ if (RealUid != 0 && RealUid != getuid())
+ new_ruid = RealUid;
+ }
else if (bitset(S_ISUID, stb.st_mode))
new_ruid = stb.st_uid;
else if (ctladdr != NULL && ctladdr->q_uid != 0)
@@ -2091,6 +2111,22 @@ tryhost:
vendor_set_uid(new_euid);
# if MAILER_SETUID_METHOD == USE_SETEUID
+# if HASSETREUID
+ /*
+ ** Undo the effects of the uid change in main
+ ** for signal handling. The real uid may
+ ** be used by mailer in adding a "From "
+ ** line.
+ */
+
+ if (new_ruid != NO_UID &&
+ setreuid(RealUid, geteuid()) < 0)
+ {
+ syserr("openmailer: setreuid(%d, %d) failed",
+ (int) new_ruid, (int) geteuid());
+ exit(EX_OSERR);
+ }
+# endif /* HASSETREUID */
if (seteuid(new_euid) < 0 && suidwarn)
{
syserr("openmailer: seteuid(%ld) failed",
@@ -3045,7 +3081,7 @@ markfailure(e, q, mci, rcode, ovr)
** and if it represents an error, we print it.
**
** Parameters:
-** pid -- pid of mailer.
+** mci -- the mailer connection info.
** e -- the current envelope.
** pv -- the parameter vector that invoked the mailer
** (for error messages).
@@ -4925,11 +4961,13 @@ hostsignature(m, host)
nmx = getmxrr(hp, mxhosts, mxprefs, TRUE, &rcode);
if (nmx <= 0)
{
+ int save_errno;
register MCI *mci;
/* update the connection info for this host */
+ save_errno = errno;
mci = mci_get(hp, m);
- mci->mci_errno = errno;
+ mci->mci_errno = save_errno;
mci->mci_herrno = h_errno;
mci->mci_lastuse = now;
if (rcode == EX_NOHOST)
diff --git a/gnu/usr.sbin/sendmail/sendmail/err.c b/gnu/usr.sbin/sendmail/sendmail/err.c
index 250cf27cd18..05d17b79616 100644
--- a/gnu/usr.sbin/sendmail/sendmail/err.c
+++ b/gnu/usr.sbin/sendmail/sendmail/err.c
@@ -12,7 +12,7 @@
*/
#ifndef lint
-static char id[] = "@(#)$Sendmail: err.c,v 8.120.4.2 2001/05/03 17:24:06 gshapiro Exp $";
+static char id[] = "@(#)$Sendmail: err.c,v 8.120.4.3 2001/05/30 00:22:26 gshapiro Exp $";
#endif /* ! lint */
#include <sendmail.h>
@@ -157,8 +157,6 @@ syserr(fmt, va_alist)
#ifdef ESTALE
case ESTALE:
#endif /* ESTALE */
-
-
printopenfds(TRUE);
mci_dump_all(TRUE);
break;
diff --git a/gnu/usr.sbin/sendmail/sendmail/main.c b/gnu/usr.sbin/sendmail/sendmail/main.c
index db67e2066e4..49d2ae7420f 100644
--- a/gnu/usr.sbin/sendmail/sendmail/main.c
+++ b/gnu/usr.sbin/sendmail/sendmail/main.c
@@ -21,7 +21,7 @@ static char copyright[] =
#endif /* ! lint */
#ifndef lint
-static char id[] = "@(#)$Sendmail: main.c,v 8.485.4.60 2001/05/27 22:00:26 gshapiro Exp $";
+static char id[] = "@(#)$Sendmail: main.c,v 8.485.4.65 2001/07/20 00:53:00 gshapiro Exp $";
#endif /* ! lint */
#define _DEFINE
@@ -35,7 +35,9 @@ static char id[] = "@(#)$Sendmail: main.c,v 8.485.4.60 2001/05/27 22:00:26 gshap
static SIGFUNC_DECL intindebug __P((int));
static SIGFUNC_DECL quiesce __P((int));
+#ifdef SIGUSR1
static SIGFUNC_DECL sigusr1 __P((int));
+# endif /* SIGUSR1 */
static SIGFUNC_DECL term_daemon __P((int));
static void dump_class __P((STAB *, int));
static void obsolete __P((char **));
@@ -2156,7 +2158,7 @@ finis(drop, exitstat)
{
/* Still want to process new timeouts added below */
clear_events();
- releasesignal(SIGALRM);
+ (void) releasesignal(SIGALRM);
if (tTd(2, 1))
{
@@ -2272,7 +2274,8 @@ shutdown_daemon()
PendingSignal = 0;
if (LogLevel > 79)
- sm_syslog(LOG_DEBUG, CurEnv->e_id, "interrupt");
+ sm_syslog(LOG_DEBUG, CurEnv->e_id, "interrupt (%s)",
+ reason == NULL ? "implicit call" : reason);
FileName = NULL;
closecontrolsocket(TRUE);
@@ -2347,7 +2350,7 @@ intsig(sig)
drop = TRUE;
}
- else
+ else if (OpMode != MD_TEST)
unlockqueue(CurEnv);
finis(drop, EX_OK);
@@ -2758,6 +2761,7 @@ dumpstate(when)
}
sm_syslog(LOG_DEBUG, CurEnv->e_id, "--- end of state dump ---");
}
+#ifdef SIGUSR1
/*
** SIGUSR1 -- Signal a request to dump state.
**
@@ -2788,6 +2792,7 @@ sigusr1(sig)
errno = save_errno;
return SIGFUNC_RETURN;
}
+# endif /* SIGUSR1 */
/*
** DROP_PRIVILEGES -- reduce privileges to those of the RunAsUser option
**
diff --git a/gnu/usr.sbin/sendmail/sendmail/map.c b/gnu/usr.sbin/sendmail/sendmail/map.c
index 2e1e924d6f0..bef91900a7d 100644
--- a/gnu/usr.sbin/sendmail/sendmail/map.c
+++ b/gnu/usr.sbin/sendmail/sendmail/map.c
@@ -12,7 +12,7 @@
*/
#ifndef lint
-static char id[] = "@(#)$Sendmail: map.c,v 8.414.4.53 2001/05/04 01:29:00 gshapiro Exp $";
+static char id[] = "@(#)$Sendmail: map.c,v 8.414.4.54 2001/06/01 08:23:24 gshapiro Exp $";
#endif /* ! lint */
#include <sendmail.h>
@@ -126,9 +126,6 @@ static bool text_getcanonname __P((char *, int, int *));
# define LOCK_ON_OPEN 0 /* no such luck -- bend over backwards */
#endif /* O_EXLOCK && HASFLOCK && !BOGUS_O_EXCL */
-#ifndef O_ACCMODE
-# define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR)
-#endif /* ! O_ACCMODE */
/*
** MAP_PARSEARGS -- parse config line arguments for database lookup
**
diff --git a/gnu/usr.sbin/sendmail/sendmail/milter.c b/gnu/usr.sbin/sendmail/sendmail/milter.c
index 8e185691dfc..85ab27fc52a 100644
--- a/gnu/usr.sbin/sendmail/sendmail/milter.c
+++ b/gnu/usr.sbin/sendmail/sendmail/milter.c
@@ -9,7 +9,7 @@
*/
#ifndef lint
-static char id[] = "@(#)$Sendmail: milter.c,v 8.50.4.46 2001/05/11 18:11:36 gshapiro Exp $";
+static char id[] = "@(#)$Sendmail: milter.c,v 8.50.4.51 2001/07/20 00:53:01 gshapiro Exp $";
#endif /* ! lint */
#if _FFR_MILTER
@@ -26,6 +26,7 @@ static char id[] = "@(#)$Sendmail: milter.c,v 8.50.4.46 2001/05/11 18:11:36 gsha
# define SM_FD_ISSET FD_ISSET
# define SM_FD_SETSIZE FD_SETSIZE
+static void milter_connect_timeout __P((void));
static void milter_error __P((struct milter *));
static int milter_open __P((struct milter *, bool, ENVELOPE *));
static void milter_parse_timeouts __P((char *, struct milter *));
@@ -511,6 +512,8 @@ milter_write(m, cmd, buf, len, to, e)
** -1 otherwise.
*/
+static jmp_buf MilterConnectTimeout;
+
static int
milter_open(m, parseonly, e)
struct milter *m;
@@ -950,8 +953,23 @@ milter_open(m, parseonly, e)
return -1;
}
- if (connect(sock, (struct sockaddr *) &addr, addrlen) >= 0)
- break;
+ if (setjmp(MilterConnectTimeout) == 0)
+ {
+ EVENT *ev = NULL;
+ int i;
+
+ if (m->mf_timeout[SMFTO_CONNECT] > 0)
+ ev = setevent(m->mf_timeout[SMFTO_CONNECT],
+ milter_connect_timeout, 0);
+
+ i = connect(sock, (struct sockaddr *) &addr, addrlen);
+ save_errno = errno;
+ if (ev != NULL)
+ clrevent(ev);
+ errno = save_errno;
+ if (i >= 0)
+ break;
+ }
/* couldn't connect.... try next address */
save_errno = errno;
@@ -1006,6 +1024,8 @@ milter_open(m, parseonly, e)
}
continue;
}
+ p = CurHostName;
+ CurHostName = at;
if (tTd(64, 5))
dprintf("X%s: error connecting to filter: %s\n",
m->mf_name, errstring(save_errno));
@@ -1013,6 +1033,7 @@ milter_open(m, parseonly, e)
sm_syslog(LOG_ERR, e->e_id,
"X%s: error connecting to filter: %s",
m->mf_name, errstring(save_errno));
+ CurHostName = p;
milter_error(m);
# if _FFR_FREEHOSTENT && NETINET6
if (hp != NULL)
@@ -1030,6 +1051,19 @@ milter_open(m, parseonly, e)
# endif /* _FFR_FREEHOSTENT && NETINET6 */
return sock;
}
+
+static void
+milter_connect_timeout()
+{
+ /*
+ ** NOTE: THIS CAN BE CALLED FROM A SIGNAL HANDLER. DO NOT ADD
+ ** ANYTHING TO THIS ROUTINE UNLESS YOU KNOW WHAT YOU ARE
+ ** DOING.
+ */
+
+ errno = ETIMEDOUT;
+ longjmp(MilterConnectTimeout, 1);
+}
/*
** MILTER_SETUP -- setup structure for a mail filter
**
@@ -1066,6 +1100,7 @@ milter_setup(line)
m->mf_name = newstr(line);
m->mf_state = SMFS_READY;
m->mf_sock = -1;
+ m->mf_timeout[SMFTO_CONNECT] = (time_t) 0;
m->mf_timeout[SMFTO_WRITE] = (time_t) 10;
m->mf_timeout[SMFTO_READ] = (time_t) 10;
m->mf_timeout[SMFTO_EOM] = (time_t) 300;
@@ -1097,6 +1132,10 @@ milter_setup(line)
/* install the field into the filter struct */
switch (fcode)
{
+ case 'C':
+ m->mf_timeout[SMFTO_CONNECT] = convtime(p, 's');
+ break;
+
case 'S': /* socket */
if (p == NULL)
m->mf_conn = NULL;
@@ -2851,7 +2890,10 @@ milter_connect(hostname, addr, e, state)
# if NETINET6
case AF_INET6:
- family = SMFIA_INET6;
+ if (IN6_IS_ADDR_V4MAPPED(&addr.sin6.sin6_addr))
+ family = SMFIA_INET;
+ else
+ family = SMFIA_INET6;
port = htons(addr.sin6.sin6_port);
sockinfo = anynet_ntop(&addr.sin6.sin6_addr, buf6,
sizeof buf6);
diff --git a/gnu/usr.sbin/sendmail/sendmail/queue.c b/gnu/usr.sbin/sendmail/sendmail/queue.c
index 538429bd455..23ec59c3bac 100644
--- a/gnu/usr.sbin/sendmail/sendmail/queue.c
+++ b/gnu/usr.sbin/sendmail/sendmail/queue.c
@@ -16,9 +16,9 @@
#ifndef lint
# if QUEUE
-static char id[] = "@(#)$Sendmail: queue.c,v 8.343.4.55 2001/05/03 23:37:11 gshapiro Exp $ (with queueing)";
+static char id[] = "@(#)$Sendmail: queue.c,v 8.343.4.62 2001/07/20 00:53:01 gshapiro Exp $ (with queueing)";
# else /* QUEUE */
-static char id[] = "@(#)$Sendmail: queue.c,v 8.343.4.55 2001/05/03 23:37:11 gshapiro Exp $ (without queueing)";
+static char id[] = "@(#)$Sendmail: queue.c,v 8.343.4.62 2001/07/20 00:53:01 gshapiro Exp $ (without queueing)";
# endif /* QUEUE */
#endif /* ! lint */
@@ -68,6 +68,35 @@ static int workcmpf2();
static int workcmpf3();
static int workcmpf4();
+/*
+** Current qf file field assignments:
+**
+** A AUTH= parameter
+** B body type
+** C controlling user
+** D data file name
+** E error recipient
+** F flag bits
+** G queue delay algorithm
+** H header
+** I data file's inode number
+** K time of last delivery attempt
+** L Solaris Content-Length: header (obsolete)
+** M message (obsolete)
+** N number of delivery attempts
+** P message priority
+** Q original recipient (ORCPT=)
+** R recipient
+** S sender
+** T init time
+** V queue file version
+** X character set (_FFR_SAVE_CHARSET)
+** Y current delay
+** Z original envelope id from ESMTP
+** $ define macro
+** . terminate file
+*/
+
/*
** QUEUEUP -- queue a message up for future transmission.
**
@@ -374,6 +403,7 @@ queueup(e, announce)
if (q->q_orcpt != NULL)
fprintf(tfp, "Q%s\n",
denlstring(q->q_orcpt, TRUE, FALSE));
+
(void) putc('R', tfp);
if (bitset(QPRIMARY, q->q_flags))
(void) putc('P', tfp);
@@ -2151,15 +2181,15 @@ readqf(e)
/* regenerated below */
break;
- case 'K': /* time of last delivery attempt */
+ case 'K': /* time of last delivery attempt */
e->e_dtime = atol(&buf[1]);
break;
# if _FFR_QUEUEDELAY
- case 'G': /* queue delay algorithm */
+ case 'G': /* queue delay algorithm */
e->e_queuealg = atoi(&buf[1]);
break;
- case 'Y': /* current delay */
+ case 'Y': /* current delay */
e->e_queuedelay = (time_t) atol(&buf[1]);
break;
# endif /* _FFR_QUEUEDELAY */
@@ -2933,7 +2963,15 @@ setctluser(user, qfver)
if ((p = strtok(NULL, ":")) != NULL)
a->q_gid = atoi(p);
if ((p = strtok(NULL, ":")) != NULL)
+ {
+ char *o;
+
a->q_flags |= QGOODUID;
+
+ /* if there is another ':': restore it */
+ if ((o = strtok(NULL, ":")) != NULL && o > p)
+ o[-1] = ':';
+ }
}
else if ((pw = sm_getpwnam(user)) != NULL)
{
@@ -3086,7 +3124,7 @@ setnewqueue(e)
return;
}
- if (NumQueues == 1)
+ if (NumQueues <= 1)
idx = 0;
else
{
diff --git a/gnu/usr.sbin/sendmail/sendmail/readcf.c b/gnu/usr.sbin/sendmail/sendmail/readcf.c
index 531887715e2..c6b7327e6f0 100644
--- a/gnu/usr.sbin/sendmail/sendmail/readcf.c
+++ b/gnu/usr.sbin/sendmail/sendmail/readcf.c
@@ -12,7 +12,7 @@
*/
#ifndef lint
-static char id[] = "@(#)$Sendmail: readcf.c,v 8.382.4.40 2001/05/03 17:24:13 gshapiro Exp $";
+static char id[] = "@(#)$Sendmail: readcf.c,v 8.382.4.42 2001/07/31 22:30:24 gshapiro Exp $";
#endif /* ! lint */
#include <sendmail.h>
@@ -3380,6 +3380,7 @@ settimeout(name, val, sticky)
{
register struct timeoutinfo *to;
int i;
+ int addopts;
time_t toval;
if (tTd(37, 2))
@@ -3413,6 +3414,7 @@ settimeout(name, val, sticky)
dprintf("\n");
toval = convtime(val, 'm');
+ addopts = 0;
switch (to->to_code)
{
@@ -3481,6 +3483,7 @@ settimeout(name, val, sticky)
TimeOuts.to_q_warning[TOC_NORMAL] = toval;
TimeOuts.to_q_warning[TOC_URGENT] = toval;
TimeOuts.to_q_warning[TOC_NONURGENT] = toval;
+ addopts = 2;
break;
case TO_QUEUEWARN_NORMAL:
@@ -3503,6 +3506,7 @@ settimeout(name, val, sticky)
TimeOuts.to_q_return[TOC_NORMAL] = toval;
TimeOuts.to_q_return[TOC_URGENT] = toval;
TimeOuts.to_q_return[TOC_NONURGENT] = toval;
+ addopts = 2;
break;
case TO_QUEUERETURN_NORMAL:
@@ -3530,6 +3534,7 @@ settimeout(name, val, sticky)
TimeOuts.res_retrans[RES_TO_DEFAULT] = toval;
TimeOuts.res_retrans[RES_TO_FIRST] = toval;
TimeOuts.res_retrans[RES_TO_NORMAL] = toval;
+ addopts = 2;
break;
case TO_RESOLVER_RETRY:
@@ -3537,6 +3542,7 @@ settimeout(name, val, sticky)
TimeOuts.res_retry[RES_TO_DEFAULT] = i;
TimeOuts.res_retry[RES_TO_FIRST] = i;
TimeOuts.res_retry[RES_TO_NORMAL] = i;
+ addopts = 2;
break;
case TO_RESOLVER_RETRANS_NORMAL:
@@ -3565,7 +3571,10 @@ settimeout(name, val, sticky)
}
if (sticky)
- setbitn(to->to_code, StickyTimeoutOpt);
+ {
+ for (i = 0; i <= addopts; i++)
+ setbitn(to->to_code + i, StickyTimeoutOpt);
+ }
}
/*
** INITTIMEOUTS -- parse and set timeout values
diff --git a/gnu/usr.sbin/sendmail/sendmail/sendmail.h b/gnu/usr.sbin/sendmail/sendmail/sendmail.h
index 4d056313a83..92e2c361322 100644
--- a/gnu/usr.sbin/sendmail/sendmail/sendmail.h
+++ b/gnu/usr.sbin/sendmail/sendmail/sendmail.h
@@ -20,7 +20,7 @@
#ifdef _DEFINE
# define EXTERN
# ifndef lint
-static char SmailId[] = "@(#)$Sendmail: sendmail.h,v 8.517.4.64 2001/05/23 17:49:13 ca Exp $";
+static char SmailId[] = "@(#)$Sendmail: sendmail.h,v 8.517.4.69 2001/07/20 18:46:01 gshapiro Exp $";
# endif /* ! lint */
#else /* _DEFINE */
# define EXTERN extern
@@ -1360,8 +1360,9 @@ extern char *validate_connection __P((SOCKADDR *, char *, ENVELOPE *));
#define SMFTO_WRITE 0 /* Timeout for sending information */
#define SMFTO_READ 1 /* Timeout waiting for a response */
#define SMFTO_EOM 2 /* Timeout for ACK/NAK to EOM */
+#define SMFTO_CONNECT 3 /* Timeout for connect() */
-#define SMFTO_NUM_TO 3 /* Total number of timeouts */
+#define SMFTO_NUM_TO 4 /* Total number of timeouts */
struct milter
{
@@ -1651,13 +1652,14 @@ do \
} while (0)
#define CHECK_CRITICAL(sig) \
+do \
{ \
if (InCriticalSection > 0 && (sig) != 0) \
{ \
pend_signal((sig)); \
return SIGFUNC_RETURN; \
} \
-}
+} while (0)
/* reset signal in case System V semantics */
#ifdef SYS5SIGNALS
@@ -2116,6 +2118,7 @@ extern SIGFUNC_DECL reapchild __P((int));
extern int releasesignal __P((int));
extern void resetlimits __P((void));
extern bool rfc822_string __P((char *));
+extern FILE *safefopen __P((char *, int, int, long));
extern void savemail __P((ENVELOPE *, bool));
extern void seed_random __P((void));
extern void sendtoargv __P((char **, ENVELOPE *));
@@ -2141,6 +2144,7 @@ extern int sm_getla __P((ENVELOPE *));
extern struct passwd *sm_getpwnam __P((char *));
extern struct passwd *sm_getpwuid __P((UID_T));
extern void sm_setproctitle __P((bool, ENVELOPE *, const char *, ...));
+extern SIGFUNC_DECL sm_signal_noop __P((int));
extern int sm_strcasecmp __P((const char *, const char *));
extern void stop_sendmail __P((void));
extern bool strcontainedin __P((char *, char *));
diff --git a/gnu/usr.sbin/sendmail/sendmail/sfsasl.c b/gnu/usr.sbin/sendmail/sendmail/sfsasl.c
index 214d5536cee..de922e34b06 100644
--- a/gnu/usr.sbin/sendmail/sendmail/sfsasl.c
+++ b/gnu/usr.sbin/sendmail/sendmail/sfsasl.c
@@ -9,7 +9,7 @@
*/
#ifndef lint
-static char id[] = "@(#)$Sendmail: sfsasl.c,v 8.17.4.14 2001/05/03 17:24:16 gshapiro Exp $";
+static char id[] = "@(#)$Sendmail: sfsasl.c,v 8.17.4.15 2001/07/11 17:37:07 gshapiro Exp $";
#endif /* ! lint */
#if SFIO
diff --git a/gnu/usr.sbin/sendmail/sendmail/srvrsmtp.c b/gnu/usr.sbin/sendmail/sendmail/srvrsmtp.c
index c4466767516..6f475909ea3 100644
--- a/gnu/usr.sbin/sendmail/sendmail/srvrsmtp.c
+++ b/gnu/usr.sbin/sendmail/sendmail/srvrsmtp.c
@@ -16,9 +16,9 @@
#ifndef lint
# if SMTP
-static char id[] = "@(#)$Sendmail: srvrsmtp.c,v 8.471.2.2.2.77 2001/05/27 22:20:30 gshapiro Exp $ (with SMTP)";
+static char id[] = "@(#)$Sendmail: srvrsmtp.c,v 8.471.2.2.2.78 2001/06/26 18:52:21 gshapiro Exp $ (with SMTP)";
# else /* SMTP */
-static char id[] = "@(#)$Sendmail: srvrsmtp.c,v 8.471.2.2.2.77 2001/05/27 22:20:30 gshapiro Exp $ (without SMTP)";
+static char id[] = "@(#)$Sendmail: srvrsmtp.c,v 8.471.2.2.2.78 2001/06/26 18:52:21 gshapiro Exp $ (without SMTP)";
# endif /* SMTP */
#endif /* ! lint */
@@ -768,7 +768,7 @@ smtp(nullserver, d_flags, e)
if (bitnset(D_ETRNONLY, d_flags) &&
nullserver == NULL)
break;
- continue;
+ /* FALLTHROUGH */
default:
if (++badcommands > MAXBADCOMMANDS)
diff --git a/gnu/usr.sbin/sendmail/sendmail/usersmtp.c b/gnu/usr.sbin/sendmail/sendmail/usersmtp.c
index 1dd6ea9bee3..f79e324724d 100644
--- a/gnu/usr.sbin/sendmail/sendmail/usersmtp.c
+++ b/gnu/usr.sbin/sendmail/sendmail/usersmtp.c
@@ -15,9 +15,9 @@
#ifndef lint
# if SMTP
-static char id[] = "@(#)$Sendmail: usersmtp.c,v 8.245.4.33 2001/05/23 18:53:09 ca Exp $ (with SMTP)";
+static char id[] = "@(#)$Sendmail: usersmtp.c,v 8.245.4.34 2001/06/26 21:55:23 gshapiro Exp $ (with SMTP)";
# else /* SMTP */
-static char id[] = "@(#)$Sendmail: usersmtp.c,v 8.245.4.33 2001/05/23 18:53:09 ca Exp $ (without SMTP)";
+static char id[] = "@(#)$Sendmail: usersmtp.c,v 8.245.4.34 2001/06/26 21:55:23 gshapiro Exp $ (without SMTP)";
# endif /* SMTP */
#endif /* ! lint */
@@ -1873,6 +1873,9 @@ smtpdata(m, mci, e)
if (Verbose)
nmessage(">>> .");
+ sm_syslog(LOG_CRIT, e->e_id,
+ "%.100s: SMTP DATA-1 protocol error: remote server returned response before final dot",
+ CurHostName);
mci->mci_errno = EIO;
mci->mci_state = MCIS_ERROR;
mci_setstat(mci, EX_PROTOCOL, "5.5.0", NULL);
diff --git a/gnu/usr.sbin/sendmail/sendmail/util.c b/gnu/usr.sbin/sendmail/sendmail/util.c
index 895d3f87d96..fa4814961a2 100644
--- a/gnu/usr.sbin/sendmail/sendmail/util.c
+++ b/gnu/usr.sbin/sendmail/sendmail/util.c
@@ -12,7 +12,7 @@
*/
#ifndef lint
-static char id[] = "@(#)$Sendmail: util.c,v 8.225.2.1.2.23 2001/05/17 18:10:18 gshapiro Exp $";
+static char id[] = "@(#)$Sendmail: util.c,v 8.225.2.1.2.26 2001/06/01 08:23:25 gshapiro Exp $";
#endif /* ! lint */
#include <sendmail.h>
@@ -2529,6 +2529,81 @@ proc_list_display(out)
}
}
/*
+** SAFEFOPEN -- do a file open with extra checking
+**
+** Parameters:
+** fn -- the file name to open.
+** omode -- the open-style mode flags.
+** cmode -- the create-style mode flags.
+** sff -- safefile flags.
+**
+** Returns:
+** Same as fopen.
+*/
+
+FILE *
+safefopen(fn, omode, cmode, sff)
+ char *fn;
+ int omode;
+ int cmode;
+ long sff;
+{
+ int fd;
+ int save_errno;
+ FILE *fp;
+ char *fmode;
+
+ switch (omode & O_ACCMODE)
+ {
+ case O_RDONLY:
+ fmode = "r";
+ break;
+
+ case O_WRONLY:
+ if (bitset(O_APPEND, omode))
+ fmode = "a";
+ else
+ fmode = "w";
+ break;
+
+ case O_RDWR:
+ if (bitset(O_TRUNC, omode))
+ fmode = "w+";
+ else if (bitset(O_APPEND, omode))
+ fmode = "a+";
+ else
+ fmode = "r+";
+ break;
+
+ default:
+ syserr("554 5.3.5 safefopen: unknown omode %o", omode);
+ fmode = "x";
+ }
+ fd = safeopen(fn, omode, cmode, sff);
+ if (fd < 0)
+ {
+ save_errno = errno;
+ if (tTd(44, 10))
+ dprintf("safefopen: safeopen failed: %s\n",
+ errstring(errno));
+ errno = save_errno;
+ return NULL;
+ }
+ fp = fdopen(fd, fmode);
+ if (fp != NULL)
+ return fp;
+
+ save_errno = errno;
+ if (tTd(44, 10))
+ {
+ dprintf("safefopen: fdopen(%s, %s) failed: omode=%x, sff=%lx, err=%s\n",
+ fn, fmode, omode, sff, errstring(errno));
+ }
+ (void) close(fd);
+ errno = save_errno;
+ return NULL;
+}
+ /*
** SM_STRCASECMP -- 8-bit clean version of strcasecmp
**
** Thank you, vendors, for making this all necessary.
diff --git a/gnu/usr.sbin/sendmail/sendmail/version.c b/gnu/usr.sbin/sendmail/sendmail/version.c
index a61e0205d91..bda076b275e 100644
--- a/gnu/usr.sbin/sendmail/sendmail/version.c
+++ b/gnu/usr.sbin/sendmail/sendmail/version.c
@@ -12,7 +12,7 @@
*/
#ifndef lint
-static char id[] = "@(#)$Sendmail: version.c,v 8.43.4.33 2001/05/27 21:39:21 gshapiro Exp $";
+static char id[] = "@(#)$Sendmail: version.c,v 8.43.4.37 2001/07/31 22:34:20 gshapiro Exp $";
#endif /* ! lint */
-char Version[] = "8.11.4";
+char Version[] = "8.11.5";
diff --git a/gnu/usr.sbin/sendmail/vacation/vacation.1 b/gnu/usr.sbin/sendmail/vacation/vacation.1
index 15566af8338..17b5c9d4855 100644
--- a/gnu/usr.sbin/sendmail/vacation/vacation.1
+++ b/gnu/usr.sbin/sendmail/vacation/vacation.1
@@ -1,4 +1,4 @@
-.\" Copyright (c) 1999-2000 Sendmail, Inc. and its suppliers.
+.\" Copyright (c) 1999-2001 Sendmail, Inc. and its suppliers.
.\" All rights reserved.
.\" Copyright (c) 1985, 1987, 1990, 1991, 1993
.\" The Regents of the University of California. All rights reserved.
@@ -9,9 +9,9 @@
.\" the sendmail distribution.
.\"
.\"
-.\" $Sendmail: vacation.1,v 8.11.4.6 2000/12/29 18:12:23 gshapiro Exp $
+.\" $Sendmail: vacation.1,v 8.11.4.8 2001/07/20 04:19:38 gshapiro Exp $
.\"
-.TH VACATION 1 "$Date: 2001/01/15 21:09:12 $"
+.TH VACATION 1 "$Date: 2001/08/01 01:01:41 $"
.SH NAME
vacation
\- return ``I am not here'' indication
@@ -55,7 +55,7 @@ Available options:
.TP
.BI \-a " alias"
Handle messages for
-.Ar alias
+.I alias
in the same manner as those received for the user's
login name.
.TP