aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGregory Neil Shapiro <gshapiro@FreeBSD.org>2001-08-01 01:33:27 +0000
committerGregory Neil Shapiro <gshapiro@FreeBSD.org>2001-08-01 01:33:27 +0000
commit13058a916175518dfbac6ce66b9b8e22ecf43155 (patch)
tree1b106cba9bbe44e5768f7bfba991f9fc8a74429b
parent8774250cea278e6e89c2edc49f341828de307fb4 (diff)
downloadsrc-13058a916175518dfbac6ce66b9b8e22ecf43155.tar.gz
src-13058a916175518dfbac6ce66b9b8e22ecf43155.zip
Import sendmail 8.11.5
Notes
Notes: svn path=/vendor/sendmail/dist/; revision=80785
-rw-r--r--contrib/sendmail/KNOWNBUGS13
-rw-r--r--contrib/sendmail/PGPKEYS704
-rw-r--r--contrib/sendmail/README15
-rw-r--r--contrib/sendmail/RELEASE_NOTES88
-rw-r--r--contrib/sendmail/cf/README49
-rw-r--r--contrib/sendmail/cf/cf/generic-hpux10.mc6
-rw-r--r--contrib/sendmail/cf/m4/proto.m428
-rw-r--r--contrib/sendmail/cf/m4/version.m44
-rw-r--r--contrib/sendmail/doc/op/Makefile6
-rw-r--r--contrib/sendmail/doc/op/op.me68
-rw-r--r--contrib/sendmail/include/libmilter/milter.h4
-rw-r--r--contrib/sendmail/include/sendmail/sendmail.h3
-rw-r--r--contrib/sendmail/libmilter/README22
-rw-r--r--contrib/sendmail/libmilter/libmilter.h2
-rw-r--r--contrib/sendmail/libmilter/sm_gethost.c17
-rw-r--r--contrib/sendmail/libsmutil/safefile.c83
-rw-r--r--contrib/sendmail/libsmutil/snprintf.c8
-rw-r--r--contrib/sendmail/mail.local/mail.local.c2
-rw-r--r--contrib/sendmail/src/README43
-rw-r--r--contrib/sendmail/src/clock.c49
-rw-r--r--contrib/sendmail/src/collect.c5
-rw-r--r--contrib/sendmail/src/conf.c6
-rw-r--r--contrib/sendmail/src/conf.h13
-rw-r--r--contrib/sendmail/src/daemon.c95
-rw-r--r--contrib/sendmail/src/deliver.c46
-rw-r--r--contrib/sendmail/src/err.c4
-rw-r--r--contrib/sendmail/src/main.c13
-rw-r--r--contrib/sendmail/src/map.c5
-rw-r--r--contrib/sendmail/src/milter.c50
-rw-r--r--contrib/sendmail/src/queue.c50
-rw-r--r--contrib/sendmail/src/readcf.c13
-rw-r--r--contrib/sendmail/src/sendmail.h10
-rw-r--r--contrib/sendmail/src/sfsasl.c16
-rw-r--r--contrib/sendmail/src/srvrsmtp.c6
-rw-r--r--contrib/sendmail/src/usersmtp.c7
-rw-r--r--contrib/sendmail/src/util.c77
-rw-r--r--contrib/sendmail/src/version.c4
-rw-r--r--contrib/sendmail/test/t_snprintf.c3
-rw-r--r--contrib/sendmail/vacation/vacation.18
39 files changed, 1169 insertions, 476 deletions
diff --git a/contrib/sendmail/KNOWNBUGS b/contrib/sendmail/KNOWNBUGS
index 29c6a9e0239d..f3a42e7e9df7 100644
--- a/contrib/sendmail/KNOWNBUGS
+++ b/contrib/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: 8.43.16.1 $, Last updated $Date: 2000/09/28 00:45:37 $
+$Revision: 8.43.16.2 $, Last updated $Date: 2001/07/31 22:42:46 $
diff --git a/contrib/sendmail/PGPKEYS b/contrib/sendmail/PGPKEYS
index dc83764d479e..f77e4a72f406 100644
--- a/contrib/sendmail/PGPKEYS
+++ b/contrib/sendmail/PGPKEYS
@@ -13,7 +13,7 @@ f16 Fingerprint16 = 18 A4 51 78 CA 72 D4 A7 ED 80 BA 8A C4 98 71 1D
uid Sendmail Security <sendmail-security@sendmail.org>
-----BEGIN PGP PUBLIC KEY BLOCK-----
-Version: PGPfreeware 5.0 for non-commercial use
+Version: PGPfreeware 5.0i for non-commercial use
mQCNAzdxaGsAAAEEALq7JPrdyXCm3DdJEKR9miP8/B9vrferOBoNimPFceDEqCpm
0RiJtnGhUJwt/HZZhiGDWPYTIa7VajfxiEzJ7LZH+/uXgQFVN27fPwoNKCI+7sr3
@@ -22,43 +22,69 @@ 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
-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
+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
-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
-FrAdFBf1y33xWo58zRsg2u2h
-=g1qL
+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
+=shxn
-----END PGP PUBLIC KEY BLOCK-----
Type Bits KeyID Created Expires Algorithm Use
@@ -76,56 +102,64 @@ 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
-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
-jJ6uIUj4EdMVJ1WwHbfG
-=XS0J
+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
+IGYsL+zTOZY=
+=Zfy5
-----END PGP PUBLIC KEY BLOCK-----
Type Bits KeyID Created Expires Algorithm Use
@@ -135,6 +169,7 @@ uid Sendmail Signing Key/2000 <sendmail@Sendmail.ORG>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGPfreeware 5.0i for non-commercial use
+Comment: Processed by Mailcrypt 3.5.6, an Emacs/PGP interface
mQCNAzhVRnYAAAEEALjBKz/mDHemTNA+hNjGcruAJm6Blc9ZIGHPthQWkFt0ca70
w0U8TBbK/m03WdMvq+PaZAb8EG5uqXctZKwmWIIGB7nRBLLnj42er8XwUfAT8KNJ
@@ -200,8 +235,16 @@ q/V9TA/LY7qmVspylvu0w64NdtiUqnTa5jS/9BZtFf3eyOezqSIEwRkQC6My/JQx
BKvXspdbJDnrJxD0D0B2eTWa3MQD7BK+WC1RRkTjvyqJAJUDBRA4Vt0jBn5e2L+1
ZWkBAekjA/47X/leujEhaUEjj9hMyDY6/8HbgxwNyUd+Sx6i9FK+vhAGq8s07dTt
y9brozqixmHCGYPyvvVkcsVpeQlEWoXc750hbj5a/Et1m3C1J6vGn979f0do144Z
-iiVpzTCh1LZHH5rALd5tuaNcD5MbOYQeP0vDVcJm2GQzm+IdjGtzPw==
-=RnIu
+iiVpzTCh1LZHH5rALd5tuaNcD5MbOYQeP0vDVcJm2GQzm+IdjGtzP4kBFQMFEDlU
+6+1RidpgCr+sGQEBeVYIAJ1YGxnhVIibC1ucCCAhZH3NlvGmQpmjEXvI9e0EVKfd
+drli+DpArasN0a0xZTZl7Utm7Atql7/LG1JvlT+DpnfTrCqDlvjlqiYd+9050e0s
+crUiDWZDYt1jaWTvH1Hd44WE8RUksWQH9iWW6SPiIFOVzA0cdRRHM5BJ2qU1/rRW
+Wyi++CVTY0pZ3DylbuItNoKFqzaWQQY+oXkI3XS5csG+ea89/n8zNsW257oBNV96
+PEztAwQh8fAklSe3n8XZdEKVaMvnM9zLGytbdRKgJd6NnXGvOIFaPCKiNklH5Yrt
+0JeYPp4AlibRmXP0gOaBgf7Naf7GhCZ7i/15pIS0hXqJAEYEEBECAAYFAjjPmocA
+CgkQ39aWMbRxfNV36gCdEiGBY4NgCp6wYZwYSlNLIQsP5EQAoJc/ZhH2oxVT4vaG
+8pT7nBukEciC
+=idc8
-----END PGP PUBLIC KEY BLOCK-----
Type Bits KeyID Created Expires Algorithm Use
@@ -210,7 +253,8 @@ f16 Fingerprint16 = 25 73 4C 8E 94 B1 E8 EA EA 9B A4 D6 00 51 C3 71
uid Sendmail Signing Key/1999 <sendmail@Sendmail.ORG>
-----BEGIN PGP PUBLIC KEY BLOCK-----
-Version: 2.6.3a
+Version: PGPfreeware 5.0i for non-commercial use
+Comment: Processed by Mailcrypt 3.5.6, an Emacs/PGP interface
mQCNAzaRMIoAAAEEAMWVJpGkwKWD6GFDUHtV6AUDzwSAXiWc6UinY7EpCLwFdYu9
Le06VwQt8H9Xtb/2jrXDV61Wu0IDJub6g7PZxWxU8WHVnMX4aBT5WOCBpwFRme3u
@@ -244,8 +288,16 @@ giXndPbvmwPpOn4ONmCo/zZFWryNQKuqPn2EN4rPhngjRokAPwMFEDaRbhPU3njY
eCkb2BECLnMAn3t8IsH2yr+vd+1IWstXMCUwzBZnAKCtq5l+00/EYeH8PXhrhIIS
9EquTokAdQMFEDaRvApyyULY6lojeQEBQa8DALEmw8SIvCjwo55yu9p26czt/ohn
D1IdJPepf1H5X+QY99kUpsxb+Csnz5VSfNz7dSJxvhwsB0gJityk/YX8uOcEfvsK
-NsABSN/fcLCnzlwO0SNGDPJc4KHTFXHfVy4SgA==
-=f3oA
+NsABSN/fcLCnzlwO0SNGDPJc4KHTFXHfVy4SgIkAlQMFEDao80LPc8jyYlQBCQEB
+aHUD/jM/RGzNHL+xm+ON6yxnqNFgfQml0jlubR34F1ibmpXT6BWAcCCKjkFAS4Ks
+k6oECzdEfAZN0DxkBE4x2IAaoSH2iZGX8G8mOsMGWU8s10J+kE8ws5HOJ0wPG0W0
+LKgzK0KgY1GRAYoVK8XmNmDNS8v2lK+vlAY3SD21PYUXI/0FiQA/AwUQN31dlIMC
+oaE+3wLqEQI7RQCgzWvVVtWCmnihUfS8Yq7YglCfJRIAoP5iibHCe5S7fEMJ0voB
+RGWidN9niQBGBBARAgAGBQI3L4BOAAoJEHlwE/5CaaTy2V0An3tCNkR6qFVPULvo
+2hxqeGhtY1L5AJ0W5u/dd+7S8upDzbfzh7hOQ5NoEYkARgQQEQIABgUCOBJuIQAK
+CRA60G4NkWcuTo8QAJ4h1GhDmjgPjtaGG40sVH+5yTK5egCgppFkq4g5OItCgGr3
+jrUhNvQ0uaY=
+=2DHr
-----END PGP PUBLIC KEY BLOCK-----
Type Bits KeyID Created Expires Algorithm Use
@@ -254,7 +306,8 @@ f16 Fingerprint16 = F9 32 40 A1 3B 3A B6 DE B2 98 6A 70 AF 54 9D 26
uid Sendmail Signing Key/1998 <sendmail@Sendmail.ORG>
-----BEGIN PGP PUBLIC KEY BLOCK-----
-Version: PGP for Personal Privacy 5.0
+Version: PGPfreeware 5.0i for non-commercial use
+Comment: Processed by Mailcrypt 3.5.6, an Emacs/PGP interface
mQCNAzUKkdIAAAEEAKvdxY+iy7eLqxP5StbpZuxYNPWLye98bXA8oKwrEm1vy7Xq
LBg3uNXjlMtwcNW/r+oFu5A++2R+1qC7w/0867C+52D2zkfGRH3hn9Lh6YaA5uIP
@@ -315,8 +368,10 @@ q+MkyiHyjbgh1eN6gsCHUSHiROQdXMRRSxZm4FVsjznisjybCqzd93lBQQyKJ6XX
KWu9SjJq/b6yg83byTgHZRW6kwjmDal97kVyHtV1WZBGDJ+v9nCY2tSvqujtNQbJ
LWrHp447BSIXBBpMkF/J+cbl7yZLiUN8I1SnLYYttmKOtfD33eL41oKT2LK+j8sI
kCd4XbcGoMJ+DExDVhFeiwwXWzomvTP42Wv0b8DYI+xeuE+AyARxJ5AVbGUBl4sZ
-qVuNMDZWhc0GLpT10RUeJ5HJVAGIWB2fLIsE
-=ljft
+qVuNMDZWhc0GLpT10RUeJ5HJVAGIWB2fLIsEiQBGBBARAgAGBQI2DrCPAAoJEJCq
+pX+wMhajifoAn1CMdyWFZx4m+3TnyvV21l4/T+gqAJ9A3dSRTH18x89BzgwYZDJi
+d+8ynw==
+=Xern
-----END PGP PUBLIC KEY BLOCK-----
Type Bits KeyID Created Expires Algorithm Use
@@ -325,7 +380,8 @@ f16 Fingerprint16 = CA AE F2 94 3B 1D 41 3C 94 7B 72 5F AE 0B 6A 11
uid Sendmail Signing Key/1997 <sendmail@Sendmail.ORG>
-----BEGIN PGP PUBLIC KEY BLOCK-----
-Version: PGP for Personal Privacy 5.0
+Version: PGPfreeware 5.0i for non-commercial use
+Comment: Processed by Mailcrypt 3.5.6, an Emacs/PGP interface
mQCNAzNwqnIAAAEEAL1KqbRgVm9kp9OHLkKGb1tbT8rwEIeeh8KKSKJyDFiV6lZG
wbEa8OC5vokXvjsJtJvvhMfrG5OYc1Q1sLzPXXBYzenzXFrPaXDO8F9DE8B5VTuy
@@ -387,8 +443,13 @@ LEG2m+r6YZlLratpkK9rI/SeSpwz2AfmrC89PI+C9Pcysj+EH4hV8WyETjcNA0le
n2tSLsf98uStHSQOzboE0KgghjybiQCVAwUQM8wrnM7nzgldNyzFAQFfGAP8DWSO
R5ELTdPUugVgB26FStcadMS44is1JWwRT8NkRiewBP1cvVwS3c6zS75qdXNoAz3g
UklXw90/CeviKHNA1wHOupsMCxwPqy91Uo5SOT49vTOuHZ5HQxY17WfTgFXUUFx7
-RQTB+ga9BpGedHq0Fm5kfvH4L4Fdn1vOpEmsakg=
-=9d88
+RQTB+ga9BpGedHq0Fm5kfvH4L4Fdn1vOpEmsakiJAD8DBRA08oifuBk5xWQLXTgR
+AttnAKDIXIaePyzwWjwW8s7fMUY62USKoACgrLQCwxBdUW63UQFpK7RAiB/4GKSJ
+AJUDBRAz+8+LZWCprDT5+dUBAY83A/wMdkJCRGhcPZnpO4N6prpXLS0jpgnzrrRN
+zbDayIF38X5C4IcdntKzPJZBn4Ce7LzFoX1X3gmhPED5UW5QHJ7APW9gqDFrnzoY
+tSPZ1GJtRB+gfkVxj3A9ADp6rk4hRhdi1TgkHLxYZHHCMrOKzThY1BLuhGBV89U4
+u/GzJ59ptg==
+=PE0m
-----END PGP PUBLIC KEY BLOCK-----
Type Bits KeyID Created Expires Algorithm Use
@@ -397,7 +458,8 @@ f16 Fingerprint16 = C0 28 E6 7B 13 5B 29 02 6F 7E 43 3A 48 4F 45 29
uid Eric P. Allman <eric@Sendmail.ORG>
-----BEGIN PGP PUBLIC KEY BLOCK-----
-Version: PGP for Personal Privacy 5.0
+Version: PGPfreeware 5.0i for non-commercial use
+Comment: Processed by Mailcrypt 3.5.6, an Emacs/PGP interface
mQCNAy9MzZsAAAEEAK3o3N9W8Ynb47vNtIqUvdjYYl/nEt/hddhumsDNqt/icanP
7x9VTS1bCfKmAEQ86DSkWRWZmhIpExbcqmuRtixn/RfDHzJ4hU/wAd6kAzUTVIfY
@@ -409,30 +471,78 @@ s+a2N87pPVKxh/brycLvr08to2TvRTbxbebPkF6UWOlurdPI1Ga4kgLZF0Ppwd6J
AJUDBRAyWFEdXuWsrmbLc90BAaE6BACqO5uGZQ1rLrFxOi9ljDghYmDRLFI0x1ls
NWh//FAGduRs3N+NemP715N/8vH4n+nY0u0xfPDMi5UklmD1l4EHJlHxNvrXNnQl
I7gLkkKxvCly/hjbKiMciDtpnUYGa8dgSy/nru6J8QSpOhXbs+UeMsY8xtPYTZqp
-e5fNjWhVJrQjRXJpYyBQLiBBbGxtYW4gPGVyaWNAUmVmZXJlbmNlLkNPTT6JAJUD
-BRAyHkUOgEp1EPeh9ysBAZxGBACWWXNNwG/3fWmGFhDi0eFVSQXbIPK9nOk6/kSM
-5hKqESarPrLsVNapNu5s2BSac4qi6xrrV+4SCEcEkkfESbG/3nXx6ieuxswLim03
-BTHvsceFjjPUN9X+Hny0LEbHbcwACHPq+yGgQ9kEYLmzMM6/9kaIy+56Iy/PbAyT
-ARKGOrQgRXJpYyBQLiBBbGxtYW4gPGVyaWNAVXNlbml4Lk9SRz60IkVyaWMgUC4g
-QWxsbWFuIDxlcmljQFNlbmRtYWlsLk9SRz6JAD8DBRA0qiAaXtpa2zmNWFARAkMb
-AJ9sSKb6Aj1fwF8QyDH5rArzoWOXYgCgj0OcgAVTjMHV1BaAKDvq+dfASKG0JUVy
-aWMgUC4gQWxsbWFuIDxlcmljQENTLkJlcmtlbGV5LkVEVT6JANUDBRAxPmCOSSSp
-RrHt/oUBAVdpBf9fXDKX23m0mI35fy8GkH2n6p+2j+r5fTCsJr0ShtXA1E8BS3XR
-Z9wPPbi925UoT0uBc8bAZhSwMMX19hVKyvo8tjmy3nRhhjfOZKTprjAGHDOQnfce
-UY2URhmM2ELkKioY3jVYnoTSiL5tLXDUfii/frwEG7ZY31LW1YErCKMl4lqlZucK
-XF7n7gijTPebGAYckU2XP1y0n5YZrNq4WQBv+6wgDD4wqtDiyCG1/O2jh7eJ1UDF
-3FvDOEfdcgKoID2JAJUDBRAvbcy3g3t4fqRAn2UBAW2nBACXg7tSyMU+Jj9NBrjg
-DLnYEoKWV0F++dWHqM0WisDOCwU+v51BUP/VJdqEwWc6CdUrbNbTHCVCG/3D0set
-DuvmkxBKpBsljN7gxDTfUEMciCrdtlEh/jJ5YZ1ofSujxIHjYZ6OJg/4x9AgdJ5O
-EsDUvK2fEI3+dFGRYrw2XUOqeokAVQMFEC9SbfUeUtMXXNLGGQEBz58B/AuGcYU/
-mNixrR5QYndJVmarw/0ewfRJMXzYXCn+9TFYy8gul9K6Mu3/zv3Z2BzB92sdsbVC
-rXlcazNrR/gedMGJAJUDBRAvUm2lI+Ri1L97pCEBAdDhA/9YP8KoUDp/YmSekMBU
-4myhSpFsCW5Fs6I07Cwn84Q/hkZ9myG+rGxUltBry2Z7CMcwQABa9D254FjV/BR6
-eVIgADSBIR2U3DSrEgSP0qGdT5yFCrbP5HOge59/b/0CknBlDvBLLD3HW+OrwOaQ
-cF/4gBUnbMJ01gZEY36IFgXsvokAdQMFEC/gXgxqmwnIWCbPjQEBQwIDAJRi8+tW
-be7gQpW5ZSriDbss6J3/dd/WDspD4WnwnoiNMFKzVDVRbZGAMjsSqsLCJSywdIus
-P7eLs0kayCx0ov7UcF/O6N0MYw/jy6NkFtiSND6TqtJ7Pc2SZcjetbpIkA==
-=StEG
+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
+v7YI5Xji
+=GYWC
-----END PGP PUBLIC KEY BLOCK-----
Type Bits KeyID Created Expires Algorithm Use
@@ -442,7 +552,8 @@ uid Gregory Neil Shapiro <gshapiro@sendmail.org>
uid Gregory Neil Shapiro <gshapiro@sendmail.com>
-----BEGIN PGP PUBLIC KEY BLOCK-----
-Version: PGP for Personal Privacy 5.0
+Version: PGPfreeware 5.0i for non-commercial use
+Comment: Processed by Mailcrypt 3.5.6, an Emacs/PGP interface
mQCNAzUB04kAAAEEANHOOWZH9BdsPi8071kHB49qWAWL7OjoUk2NpItw5D9o/sRa
jZbBwtvPSjx+/cC1Nka+apIuXGccjBzpu71DJFLxIYEk+MW33bSgymI19utPS1b7
@@ -451,85 +562,272 @@ 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
-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
-=idnw
+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
+=ftIJ
+-----END PGP PUBLIC KEY BLOCK-----
+
+Type Bits KeyID Created Expires Algorithm Use
+pub 1024 0x22327A01 1999-05-30 ---------- RSA Sign & Encrypt
+f16 Fingerprint16 = 03 3D 49 6D E4 D9 D6 01 F8 9D B0 3A 3D 68 6A 86
+uid Claus Assmann (PGP2) <ca+pgp2@Sendmail.ORG>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.0.6 (OpenBSD)
+Comment: For info see http://www.gnupg.org
+
+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
+=dbDm
-----END PGP PUBLIC KEY BLOCK-----
-$Revision: 8.5.16.3 $, Last updated $Date: 2000/12/19 22:33:12 $
+$Revision: 8.5.16.4 $, Last updated $Date: 2001/07/31 22:36:18 $
diff --git a/contrib/sendmail/README b/contrib/sendmail/README
index a05adc0fcd91..4188f9db94d4 100644
--- a/contrib/sendmail/README
+++ b/contrib/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: 8.71.4.6 $, Last updated $Date: 2000/06/29 04:18:43 $
+$Revision: 8.71.4.8 $, Last updated $Date: 2001/07/31 22:42:46 $
diff --git a/contrib/sendmail/RELEASE_NOTES b/contrib/sendmail/RELEASE_NOTES
index c720a2f94dc0..83e5df6ebf91 100644
--- a/contrib/sendmail/RELEASE_NOTES
+++ b/contrib/sendmail/RELEASE_NOTES
@@ -1,11 +1,53 @@
SENDMAIL RELEASE NOTES
- $Id: RELEASE_NOTES,v 8.561.2.5.2.235 2001/05/27 21:39:16 gshapiro Exp $
+ $Id: 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/contrib/sendmail/cf/README b/contrib/sendmail/cf/README
index 4e6813492f86..d50bfd452bf0 100644
--- a/contrib/sendmail/cf/README
+++ b/contrib/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: 8.383.2.1.2.43 $, Last updated $Date: 2001/05/24 16:41:53 $
+$Revision: 8.383.2.1.2.47 $, Last updated $Date: 2001/07/13 22:31:49 $
diff --git a/contrib/sendmail/cf/cf/generic-hpux10.mc b/contrib/sendmail/cf/cf/generic-hpux10.mc
index 4db6687821dc..d20586954860 100644
--- a/contrib/sendmail/cf/cf/generic-hpux10.mc
+++ b/contrib/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(`$Id: generic-hpux10.mc,v 8.11 1999/02/07 07:26:02 gshapiro Exp $')
+VERSIONID(`$Id: 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/contrib/sendmail/cf/m4/proto.m4 b/contrib/sendmail/cf/m4/proto.m4
index 4f10e4c3eb9f..d8a164185dac 100644
--- a/contrib/sendmail/cf/m4/proto.m4
+++ b/contrib/sendmail/cf/m4/proto.m4
@@ -13,7 +13,7 @@ divert(-1)
#
divert(0)
-VERSIONID(`$Id: proto.m4,v 8.446.2.5.2.41 2001/05/23 21:32:16 ca Exp $')
+VERSIONID(`$Id: 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/contrib/sendmail/cf/m4/version.m4 b/contrib/sendmail/cf/m4/version.m4
index 98afcb6b7710..e04d15e99eec 100644
--- a/contrib/sendmail/cf/m4/version.m4
+++ b/contrib/sendmail/cf/m4/version.m4
@@ -11,8 +11,8 @@ divert(-1)
# the sendmail distribution.
#
#
-VERSIONID(`$Id: version.m4,v 8.39.4.29 2001/05/27 21:39:20 gshapiro Exp $')
+VERSIONID(`$Id: 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/contrib/sendmail/doc/op/Makefile b/contrib/sendmail/doc/op/Makefile
index 4b3644d2b8e1..e33911329b69 100644
--- a/contrib/sendmail/doc/op/Makefile
+++ b/contrib/sendmail/doc/op/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 8.7.8.1 2001/01/04 18:55:46 gshapiro Exp $
+# $Id: Makefile,v 8.7.8.4 2001/07/01 18:34:56 gshapiro Exp $
DIR= smm/08.sendmailop
SRCS= op.me
@@ -7,11 +7,13 @@ MACROS= -me
ROFF_CMD= groff
PIC_CMD= pic
EQN_CMD= eqn
+UL_CMD= ul
PIC= ${PIC_CMD} -C
EQNASCII= ${EQN_CMD} -C -Tascii
EQNPS= ${EQN_CMD} -C -Tps
ROFFASCII= ${ROFF_CMD} -Tascii ${MACROS}
ROFFPS= ${ROFF_CMD} -Tps -mps ${MACROS}
+ULASCII= ${UL_CMD} -t dumb
all: ${OBJS}
@@ -21,7 +23,7 @@ op.ps: ${SRCS}
op.txt: ${SRCS}
rm -f $@
- ${PIC} ${SRCS} | ${EQNASCII} | ${ROFFASCII} > $@
+ ${PIC} ${SRCS} | ${EQNASCII} | ${ROFFASCII} | ${ULASCII} > $@
clean:
rm -f op.ps op.txt
diff --git a/contrib/sendmail/doc/op/op.me b/contrib/sendmail/doc/op/op.me
index 591ac0129939..0c0edeb0f0dd 100644
--- a/contrib/sendmail/doc/op/op.me
+++ b/contrib/sendmail/doc/op/op.me
@@ -9,9 +9,43 @@
.\" the sendmail distribution.
.\"
.\"
-.\" $Id: op.me,v 8.317.4.64 2001/05/24 16:45:49 ca Exp $
+.\" $Id: 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: 8.317.4.64 $
+.Ve $Revision: 8.317.4.70 $
.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: 8.317.4.64 $
+.\"Version $Revision: 8.317.4.70 $
.\".ce 0
.bp 3
.ce
diff --git a/contrib/sendmail/include/libmilter/milter.h b/contrib/sendmail/include/libmilter/milter.h
index f4c9f2734924..ef548525fa66 100644
--- a/contrib/sendmail/include/libmilter/milter.h
+++ b/contrib/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.
*
*
- * $Id: milter.h,v 8.24.16.9 2001/03/02 21:22:48 geir Exp $
+ * $Id: milter.h,v 8.24.16.10 2001/07/20 04:19:35 gshapiro Exp $
*/
/*
diff --git a/contrib/sendmail/include/sendmail/sendmail.h b/contrib/sendmail/include/sendmail/sendmail.h
index a0757091b132..395b89520e38 100644
--- a/contrib/sendmail/include/sendmail/sendmail.h
+++ b/contrib/sendmail/include/sendmail/sendmail.h
@@ -10,7 +10,7 @@
* the sendmail distribution.
*
*
- * $Id: sendmail.h,v 8.34.4.7 2000/10/09 16:15:26 gshapiro Exp $
+ * $Id: 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/contrib/sendmail/libmilter/README b/contrib/sendmail/libmilter/README
index 461d64f4db22..3eae861cda74 100644
--- a/contrib/sendmail/libmilter/README
+++ b/contrib/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: 8.9.2.1.2.17 $, Last updated $Date: 2001/04/11 18:32:58 $
+$Revision: 8.9.2.1.2.19 $, Last updated $Date: 2001/06/28 22:25:14 $
diff --git a/contrib/sendmail/libmilter/libmilter.h b/contrib/sendmail/libmilter/libmilter.h
index 886cc4d05876..49ac70fbe3f4 100644
--- a/contrib/sendmail/libmilter/libmilter.h
+++ b/contrib/sendmail/libmilter/libmilter.h
@@ -17,7 +17,7 @@
# define EXTERN
# define INIT(x) = x
# ifndef lint
-static char MilterlId[] = "@(#)$Id: libmilter.h,v 8.3.6.14 2001/05/27 14:31:12 ca Exp $";
+static char MilterlId[] = "@(#)$Id: 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/contrib/sendmail/libmilter/sm_gethost.c b/contrib/sendmail/libmilter/sm_gethost.c
index a4fc6655828a..c1e80b1691d0 100644
--- a/contrib/sendmail/libmilter/sm_gethost.c
+++ b/contrib/sendmail/libmilter/sm_gethost.c
@@ -9,7 +9,7 @@
*/
#ifndef lint
-static char id[] = "@(#)$Id: sm_gethost.c,v 8.7.8.10 2001/05/09 20:57:12 gshapiro Exp $";
+static char id[] = "@(#)$Id: 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[] = "@(#)$Id: sm_gethost.c,v 8.7.8.10 2001/05/09 20:57:12 gshapir
#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/contrib/sendmail/libsmutil/safefile.c b/contrib/sendmail/libsmutil/safefile.c
index ceee53af2d58..3a757f39c040 100644
--- a/contrib/sendmail/libsmutil/safefile.c
+++ b/contrib/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[] = "@(#)$Id: safefile.c,v 8.81.4.7 2000/09/01 21:09:23 ca Exp $";
+static char id[] = "@(#)$Id: 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/contrib/sendmail/libsmutil/snprintf.c b/contrib/sendmail/libsmutil/snprintf.c
index 9621a164804d..7a2aabca6fa3 100644
--- a/contrib/sendmail/libsmutil/snprintf.c
+++ b/contrib/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[] = "@(#)$Id: snprintf.c,v 8.27.16.2 2000/09/17 17:04:24 gshapiro Exp $";
+static char id[] = "@(#)$Id: 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/contrib/sendmail/mail.local/mail.local.c b/contrib/sendmail/mail.local/mail.local.c
index a8eb82bab04e..cd96c5e351e4 100644
--- a/contrib/sendmail/mail.local/mail.local.c
+++ b/contrib/sendmail/mail.local/mail.local.c
@@ -19,7 +19,7 @@ static char copyright[] =
#endif /* ! lint */
#ifndef lint
-static char id[] = "@(#)$Id: mail.local.c,v 8.143.4.57 2001/02/11 20:08:20 gshapiro Exp $";
+static char id[] = "@(#)$Id: mail.local.c,v 8.143.4.58 2001/06/01 05:33:31 gshapiro Exp $";
#endif /* ! lint */
/*
diff --git a/contrib/sendmail/src/README b/contrib/sendmail/src/README
index 53380d530d5c..3b9f0f93c196 100644
--- a/contrib/sendmail/src/README
+++ b/contrib/sendmail/src/README
@@ -9,7 +9,7 @@
# the sendmail distribution.
#
#
-# $Id: README,v 8.263.2.1.2.35 2001/05/09 20:58:32 gshapiro Exp $
+# $Id: 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: 8.263.2.1.2.35 $, last update $Date: 2001/05/09 20:58:32 $ )
+(Version $Revision: 8.263.2.1.2.37 $, last update $Date: 2001/06/03 03:41:12 $ )
diff --git a/contrib/sendmail/src/clock.c b/contrib/sendmail/src/clock.c
index bf5ef1ca39d7..1a364788d406 100644
--- a/contrib/sendmail/src/clock.c
+++ b/contrib/sendmail/src/clock.c
@@ -12,7 +12,7 @@
*/
#ifndef lint
-static char id[] = "@(#)$Id: clock.c,v 8.52.18.14 2001/05/17 18:12:28 gshapiro Exp $";
+static char id[] = "@(#)$Id: 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[] = "@(#)$Id: clock.c,v 8.52.18.14 2001/05/17 18:12:28 gshapiro E
# 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/contrib/sendmail/src/collect.c b/contrib/sendmail/src/collect.c
index e9a200669b48..fcf3117d8b9f 100644
--- a/contrib/sendmail/src/collect.c
+++ b/contrib/sendmail/src/collect.c
@@ -12,7 +12,7 @@
*/
#ifndef lint
-static char id[] = "@(#)$Id: collect.c,v 8.136.4.21 2001/05/17 18:10:14 gshapiro Exp $";
+static char id[] = "@(#)$Id: 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/contrib/sendmail/src/conf.c b/contrib/sendmail/src/conf.c
index 4fa8c7457814..8c90cf9f5b35 100644
--- a/contrib/sendmail/src/conf.c
+++ b/contrib/sendmail/src/conf.c
@@ -12,7 +12,7 @@
*/
#ifndef lint
-static char id[] = "@(#)$Id: conf.c,v 8.646.2.2.2.86 2001/05/17 18:18:40 ca Exp $";
+static char id[] = "@(#)$Id: 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/contrib/sendmail/src/conf.h b/contrib/sendmail/src/conf.h
index e56da3025297..795747334fe6 100644
--- a/contrib/sendmail/src/conf.h
+++ b/contrib/sendmail/src/conf.h
@@ -10,7 +10,7 @@
* the sendmail distribution.
*
*
- * $Id: conf.h,v 8.496.4.43 2001/05/20 22:29:59 gshapiro Exp $
+ * $Id: 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/contrib/sendmail/src/daemon.c b/contrib/sendmail/src/daemon.c
index 1fdd3d7d8421..954d2530a6ed 100644
--- a/contrib/sendmail/src/daemon.c
+++ b/contrib/sendmail/src/daemon.c
@@ -16,9 +16,9 @@
#ifndef lint
# ifdef DAEMON
-static char id[] = "@(#)$Id: daemon.c,v 8.401.4.61 2001/05/27 22:14:40 gshapiro Exp $ (with daemon mode)";
+static char id[] = "@(#)$Id: daemon.c,v 8.401.4.68 2001/07/20 18:45:58 gshapiro Exp $ (with daemon mode)";
# else /* DAEMON */
-static char id[] = "@(#)$Id: daemon.c,v 8.401.4.61 2001/05/27 22:14:40 gshapiro Exp $ (without daemon mode)";
+static char id[] = "@(#)$Id: daemon.c,v 8.401.4.68 2001/07/20 18:45:58 gshapiro Exp $ (without daemon mode)";
# endif /* DAEMON */
#endif /* ! lint */
@@ -702,7 +702,6 @@ getrequests(e)
(void) setsignal(SIGHUP, SIG_DFL);
(void) setsignal(SIGTERM, intsig);
-
if (!control)
{
define(macid("{daemon_addr}", NULL),
@@ -718,6 +717,7 @@ getrequests(e)
{
if (Daemons[idx].d_socket >= 0)
(void) close(Daemons[idx].d_socket);
+ Daemons[idx].d_socket = -1;
}
clrcontrol();
@@ -2481,15 +2481,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;
@@ -2527,28 +2538,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)
@@ -2580,6 +2600,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)
@@ -2793,10 +2826,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/contrib/sendmail/src/deliver.c b/contrib/sendmail/src/deliver.c
index 347b7a502eea..70b774dba7a8 100644
--- a/contrib/sendmail/src/deliver.c
+++ b/contrib/sendmail/src/deliver.c
@@ -12,7 +12,7 @@
*/
#ifndef lint
-static char id[] = "@(#)$Id: deliver.c,v 8.600.2.1.2.81 2001/05/23 02:15:42 ca Exp $";
+static char id[] = "@(#)$Id: 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/contrib/sendmail/src/err.c b/contrib/sendmail/src/err.c
index 9e3e57217cbf..3f85c6035984 100644
--- a/contrib/sendmail/src/err.c
+++ b/contrib/sendmail/src/err.c
@@ -12,7 +12,7 @@
*/
#ifndef lint
-static char id[] = "@(#)$Id: err.c,v 8.120.4.2 2001/05/03 17:24:06 gshapiro Exp $";
+static char id[] = "@(#)$Id: 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/contrib/sendmail/src/main.c b/contrib/sendmail/src/main.c
index 34d50413460d..c09daa57b9fe 100644
--- a/contrib/sendmail/src/main.c
+++ b/contrib/sendmail/src/main.c
@@ -21,7 +21,7 @@ static char copyright[] =
#endif /* ! lint */
#ifndef lint
-static char id[] = "@(#)$Id: main.c,v 8.485.4.60 2001/05/27 22:00:26 gshapiro Exp $";
+static char id[] = "@(#)$Id: 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[] = "@(#)$Id: main.c,v 8.485.4.60 2001/05/27 22:00:26 gshapiro Ex
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/contrib/sendmail/src/map.c b/contrib/sendmail/src/map.c
index fc0d07face0c..04b040ffa72b 100644
--- a/contrib/sendmail/src/map.c
+++ b/contrib/sendmail/src/map.c
@@ -12,7 +12,7 @@
*/
#ifndef lint
-static char id[] = "@(#)$Id: map.c,v 8.414.4.53 2001/05/04 01:29:00 gshapiro Exp $";
+static char id[] = "@(#)$Id: 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/contrib/sendmail/src/milter.c b/contrib/sendmail/src/milter.c
index f4ce5b818798..5d5d2609e01d 100644
--- a/contrib/sendmail/src/milter.c
+++ b/contrib/sendmail/src/milter.c
@@ -9,7 +9,7 @@
*/
#ifndef lint
-static char id[] = "@(#)$Id: milter.c,v 8.50.4.46 2001/05/11 18:11:36 gshapiro Exp $";
+static char id[] = "@(#)$Id: 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[] = "@(#)$Id: milter.c,v 8.50.4.46 2001/05/11 18:11:36 gshapiro E
# 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/contrib/sendmail/src/queue.c b/contrib/sendmail/src/queue.c
index 6a66cf69129f..aeed7f985c1a 100644
--- a/contrib/sendmail/src/queue.c
+++ b/contrib/sendmail/src/queue.c
@@ -16,9 +16,9 @@
#ifndef lint
# if QUEUE
-static char id[] = "@(#)$Id: queue.c,v 8.343.4.55 2001/05/03 23:37:11 gshapiro Exp $ (with queueing)";
+static char id[] = "@(#)$Id: queue.c,v 8.343.4.62 2001/07/20 00:53:01 gshapiro Exp $ (with queueing)";
# else /* QUEUE */
-static char id[] = "@(#)$Id: queue.c,v 8.343.4.55 2001/05/03 23:37:11 gshapiro Exp $ (without queueing)";
+static char id[] = "@(#)$Id: 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/contrib/sendmail/src/readcf.c b/contrib/sendmail/src/readcf.c
index f8aefd10f196..cb1923b66031 100644
--- a/contrib/sendmail/src/readcf.c
+++ b/contrib/sendmail/src/readcf.c
@@ -12,7 +12,7 @@
*/
#ifndef lint
-static char id[] = "@(#)$Id: readcf.c,v 8.382.4.40 2001/05/03 17:24:13 gshapiro Exp $";
+static char id[] = "@(#)$Id: 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/contrib/sendmail/src/sendmail.h b/contrib/sendmail/src/sendmail.h
index 17f379f10500..1ead2de7dc46 100644
--- a/contrib/sendmail/src/sendmail.h
+++ b/contrib/sendmail/src/sendmail.h
@@ -20,7 +20,7 @@
#ifdef _DEFINE
# define EXTERN
# ifndef lint
-static char SmailId[] = "@(#)$Id: sendmail.h,v 8.517.4.64 2001/05/23 17:49:13 ca Exp $";
+static char SmailId[] = "@(#)$Id: 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
{
@@ -1649,13 +1650,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
@@ -2114,6 +2116,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 *));
@@ -2139,6 +2142,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/contrib/sendmail/src/sfsasl.c b/contrib/sendmail/src/sfsasl.c
index 17e90be88354..8ac34285b568 100644
--- a/contrib/sendmail/src/sfsasl.c
+++ b/contrib/sendmail/src/sfsasl.c
@@ -9,7 +9,7 @@
*/
#ifndef lint
-static char id[] = "@(#)$Id: sfsasl.c,v 8.17.4.14 2001/05/03 17:24:16 gshapiro Exp $";
+static char id[] = "@(#)$Id: sfsasl.c,v 8.17.4.15 2001/07/11 17:37:07 gshapiro Exp $";
#endif /* ! lint */
#if SFIO
@@ -168,18 +168,19 @@ sfdcsasl(fin, fout, conn)
# include "sfsasl.h"
# include <openssl/err.h>
-static ssize_t
# if SFIO
+static ssize_t
tls_read(f, buf, size, disc)
Sfio_t *f;
Void_t *buf;
size_t size;
Sfdisc_t *disc;
# else /* SFIO */
+static int
tls_read(disc, buf, size)
void *disc;
- void *buf;
- size_t size;
+ char *buf;
+ int size;
# endif /* SFIO */
{
int r;
@@ -226,18 +227,19 @@ tls_read(disc, buf, size)
return r;
}
-static ssize_t
# if SFIO
+static ssize_t
tls_write(f, buf, size, disc)
Sfio_t *f;
const Void_t *buf;
size_t size;
Sfdisc_t *disc;
# else /* SFIO */
+static int
tls_write(disc, buf, size)
void *disc;
- const void *buf;
- size_t size;
+ const char *buf;
+ int size;
# endif /* SFIO */
{
int r;
diff --git a/contrib/sendmail/src/srvrsmtp.c b/contrib/sendmail/src/srvrsmtp.c
index f6555659f756..89bcb0cd1d77 100644
--- a/contrib/sendmail/src/srvrsmtp.c
+++ b/contrib/sendmail/src/srvrsmtp.c
@@ -16,9 +16,9 @@
#ifndef lint
# if SMTP
-static char id[] = "@(#)$Id: srvrsmtp.c,v 8.471.2.2.2.77 2001/05/27 22:20:30 gshapiro Exp $ (with SMTP)";
+static char id[] = "@(#)$Id: srvrsmtp.c,v 8.471.2.2.2.78 2001/06/26 18:52:21 gshapiro Exp $ (with SMTP)";
# else /* SMTP */
-static char id[] = "@(#)$Id: srvrsmtp.c,v 8.471.2.2.2.77 2001/05/27 22:20:30 gshapiro Exp $ (without SMTP)";
+static char id[] = "@(#)$Id: 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/contrib/sendmail/src/usersmtp.c b/contrib/sendmail/src/usersmtp.c
index a1aeac5dc22c..a9476fe51a58 100644
--- a/contrib/sendmail/src/usersmtp.c
+++ b/contrib/sendmail/src/usersmtp.c
@@ -15,9 +15,9 @@
#ifndef lint
# if SMTP
-static char id[] = "@(#)$Id: usersmtp.c,v 8.245.4.33 2001/05/23 18:53:09 ca Exp $ (with SMTP)";
+static char id[] = "@(#)$Id: usersmtp.c,v 8.245.4.34 2001/06/26 21:55:23 gshapiro Exp $ (with SMTP)";
# else /* SMTP */
-static char id[] = "@(#)$Id: usersmtp.c,v 8.245.4.33 2001/05/23 18:53:09 ca Exp $ (without SMTP)";
+static char id[] = "@(#)$Id: 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/contrib/sendmail/src/util.c b/contrib/sendmail/src/util.c
index f023865f153d..201721142457 100644
--- a/contrib/sendmail/src/util.c
+++ b/contrib/sendmail/src/util.c
@@ -12,7 +12,7 @@
*/
#ifndef lint
-static char id[] = "@(#)$Id: util.c,v 8.225.2.1.2.23 2001/05/17 18:10:18 gshapiro Exp $";
+static char id[] = "@(#)$Id: 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/contrib/sendmail/src/version.c b/contrib/sendmail/src/version.c
index 3b4c4e86ef65..ac05788ce598 100644
--- a/contrib/sendmail/src/version.c
+++ b/contrib/sendmail/src/version.c
@@ -12,7 +12,7 @@
*/
#ifndef lint
-static char id[] = "@(#)$Id: version.c,v 8.43.4.33 2001/05/27 21:39:21 gshapiro Exp $";
+static char id[] = "@(#)$Id: 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/contrib/sendmail/test/t_snprintf.c b/contrib/sendmail/test/t_snprintf.c
index 4789f4974f0b..3117af570ab8 100644
--- a/contrib/sendmail/test/t_snprintf.c
+++ b/contrib/sendmail/test/t_snprintf.c
@@ -13,7 +13,8 @@ main(argc, argv)
r = snprintf(buf, sizeof buf, "%s", TEST_STRING);
- if (buf[sizeof buf - 1] != '\0')
+ if (buf[sizeof buf - 1] != '\0' ||
+ r != strlen(TEST_STRING))
{
fprintf(stderr, "Add the following to devtools/Site/site.config.m4:\n\n");
fprintf(stderr, "APPENDDEF(`confENVDEF', `-DSNPRINTF_IS_BROKEN=1')\n\n");
diff --git a/contrib/sendmail/vacation/vacation.1 b/contrib/sendmail/vacation/vacation.1
index 3b3c7123e331..e8ead6b848d2 100644
--- a/contrib/sendmail/vacation/vacation.1
+++ b/contrib/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.
.\"
.\"
-.\" $Id: vacation.1,v 8.11.4.6 2000/12/29 18:12:23 gshapiro Exp $
+.\" $Id: vacation.1,v 8.11.4.8 2001/07/20 04:19:38 gshapiro Exp $
.\"
-.TH VACATION 1 "$Date: 2000/12/29 18:12:23 $"
+.TH VACATION 1 "$Date: 2001/07/20 04:19:38 $"
.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