summaryrefslogtreecommitdiffstats
path: root/contrib/sendmail
diff options
context:
space:
mode:
authorgshapiro <gshapiro@FreeBSD.org>2007-11-05 00:04:21 +0000
committergshapiro <gshapiro@FreeBSD.org>2007-11-05 00:04:21 +0000
commitea10b54a1ae8522fb04881e6f844b437d3efc0c0 (patch)
tree43aa8985ddb5222898355e58f8fb1951e951f613 /contrib/sendmail
parent39bac9265d5482fdcec195ac9f5fee0e07fcfdbe (diff)
parenta2b986fa722f9860a6c56bb5cc724b7e2937d1b7 (diff)
downloadFreeBSD-src-ea10b54a1ae8522fb04881e6f844b437d3efc0c0.zip
FreeBSD-src-ea10b54a1ae8522fb04881e6f844b437d3efc0c0.tar.gz
This commit was generated by cvs2svn to compensate for changes in r173340,
which included commits to RCS files with non-trunk default branches.
Diffstat (limited to 'contrib/sendmail')
-rw-r--r--contrib/sendmail/CACerts212
-rw-r--r--contrib/sendmail/INSTALL14
-rw-r--r--contrib/sendmail/RELEASE_NOTES67
-rw-r--r--contrib/sendmail/cf/cf/submit.cf8
-rw-r--r--contrib/sendmail/cf/feature/ldap_routing.m44
-rw-r--r--contrib/sendmail/cf/m4/proto.m410
-rw-r--r--contrib/sendmail/cf/m4/version.m44
-rwxr-xr-xcontrib/sendmail/contrib/buildvirtuser54
-rw-r--r--contrib/sendmail/doc/op/op.me23
-rw-r--r--contrib/sendmail/editmap/editmap.c4
-rw-r--r--contrib/sendmail/include/sm/conf.h5
-rw-r--r--contrib/sendmail/include/sm/ldap.h8
-rw-r--r--contrib/sendmail/include/sm/tailq.h4
-rw-r--r--contrib/sendmail/libmilter/docs/xxfi_unknown.html6
-rw-r--r--contrib/sendmail/libmilter/engine.c2
-rw-r--r--contrib/sendmail/libmilter/listener.c2
-rw-r--r--contrib/sendmail/libmilter/main.c2
-rw-r--r--contrib/sendmail/libmilter/monitor.c2
-rw-r--r--contrib/sendmail/libmilter/smfi.c6
-rw-r--r--contrib/sendmail/libsm/ldap.c35
-rw-r--r--contrib/sendmail/libsm/mpeix.c4
-rw-r--r--contrib/sendmail/src/Makefile.m42
-rw-r--r--contrib/sendmail/src/deliver.c7
-rw-r--r--contrib/sendmail/src/envelope.c23
-rw-r--r--contrib/sendmail/src/macro.c70
-rw-r--r--contrib/sendmail/src/main.c30
-rw-r--r--contrib/sendmail/src/map.c317
-rw-r--r--contrib/sendmail/src/milter.c57
-rw-r--r--contrib/sendmail/src/mime.c14
-rw-r--r--contrib/sendmail/src/parseaddr.c4
-rw-r--r--contrib/sendmail/src/queue.c16
-rw-r--r--contrib/sendmail/src/readcf.c12
-rw-r--r--contrib/sendmail/src/recipient.c8
-rw-r--r--contrib/sendmail/src/sendmail.h35
-rw-r--r--contrib/sendmail/src/sm_resolve.c10
-rw-r--r--contrib/sendmail/src/srvrsmtp.c74
-rw-r--r--contrib/sendmail/src/usersmtp.c7
-rw-r--r--contrib/sendmail/src/util.c35
-rw-r--r--contrib/sendmail/src/version.c4
-rw-r--r--contrib/sendmail/vacation/vacation.c4
40 files changed, 723 insertions, 482 deletions
diff --git a/contrib/sendmail/CACerts b/contrib/sendmail/CACerts
index c708677..b74fb7f 100644
--- a/contrib/sendmail/CACerts
+++ b/contrib/sendmail/CACerts
@@ -1,4 +1,4 @@
-# $Id: CACerts,v 8.1 2004/03/01 22:05:47 ca Exp $
+# $Id: CACerts,v 8.3 2007/06/11 22:04:46 ca Exp $
# This file contains some CA certificates that are used to sign the
# certificates of mail servers of members of the sendmail consortium
# who may reply to questions etc sent to sendmail.org.
@@ -78,73 +78,6 @@ Certificate:
Version: 3 (0x2)
Serial Number: 0 (0x0)
Signature Algorithm: md5WithRSAEncryption
- Issuer: C=US, ST=California, L=Emeryville, O=gshapiro.net, CN=Certificate Authority/emailAddress=certificates@gshapiro.net
- Validity
- Not Before: Jan 1 04:39:54 2002 GMT
- Not After : Dec 31 04:39:54 2006 GMT
- Subject: C=US, ST=California, L=Emeryville, O=gshapiro.net, CN=Certificate Authority/emailAddress=certificates@gshapiro.net
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public Key: (1024 bit)
- Modulus (1024 bit):
- 00:aa:dd:a2:fe:3b:fa:2f:5c:3d:f1:e1:d4:1d:55:
- 04:27:6b:01:62:00:d7:02:cb:74:47:69:84:d7:c6:
- c5:71:55:79:35:3a:a8:ce:de:48:23:53:80:3c:cd:
- 54:2e:e9:fe:b1:76:5a:be:cb:fd:2d:dc:a3:36:c5:
- c7:1e:4e:ef:76:f0:55:8f:a0:a5:f8:07:c5:52:1d:
- a2:42:81:4d:8a:c8:42:3f:f3:01:80:f9:46:35:a6:
- bc:c0:9b:9f:33:8b:49:9b:1d:87:8f:19:48:15:21:
- 23:57:df:6e:4d:03:ed:ae:9f:0b:91:b7:a9:47:66:
- f1:0d:1b:1c:5d:b4:57:60:c7
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Subject Key Identifier:
- A0:6D:E0:06:AF:61:94:B4:C6:84:15:B4:8B:74:22:67:4A:43:60:CA
- X509v3 Authority Key Identifier:
- keyid:A0:6D:E0:06:AF:61:94:B4:C6:84:15:B4:8B:74:22:67:4A:43:60:CA
- DirName:/C=US/ST=California/L=Emeryville/O=gshapiro.net/CN=Certificate Authority/emailAddress=certificates@gshapiro.net
- serial:00
-
- X509v3 Basic Constraints:
- CA:TRUE
- Signature Algorithm: md5WithRSAEncryption
- 87:27:d2:2a:3a:dc:04:cd:ef:e8:7b:1c:34:47:2e:13:34:a5:
- 08:f9:4d:df:d8:e1:6d:e6:9a:db:38:ee:20:6d:4a:ae:6f:1e:
- bc:71:61:a4:b4:d6:40:24:ee:65:ca:e9:81:5a:ef:ee:62:57:
- 70:05:46:91:6b:d0:c6:a6:e9:38:65:ae:ea:50:b3:5c:27:c4:
- 7a:bd:95:8c:cb:45:ef:fc:fc:99:e5:6a:61:c3:44:77:d8:1f:
- d6:b4:17:44:15:9a:bc:26:5b:ec:4e:29:5d:fd:cf:61:f3:be:
- 91:a4:3b:51:e6:73:5b:17:82:9d:5a:56:2c:63:c2:f1:d6:a2:
- 4c:5a
------BEGIN CERTIFICATE-----
-MIIDoTCCAwqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBmDELMAkGA1UEBhMCVVMx
-EzARBgNVBAgTCkNhbGlmb3JuaWExEzARBgNVBAcTCkVtZXJ5dmlsbGUxFTATBgNV
-BAoTDGdzaGFwaXJvLm5ldDEeMBwGA1UEAxMVQ2VydGlmaWNhdGUgQXV0aG9yaXR5
-MSgwJgYJKoZIhvcNAQkBFhljZXJ0aWZpY2F0ZXNAZ3NoYXBpcm8ubmV0MB4XDTAy
-MDEwMTA0Mzk1NFoXDTA2MTIzMTA0Mzk1NFowgZgxCzAJBgNVBAYTAlVTMRMwEQYD
-VQQIEwpDYWxpZm9ybmlhMRMwEQYDVQQHEwpFbWVyeXZpbGxlMRUwEwYDVQQKEwxn
-c2hhcGlyby5uZXQxHjAcBgNVBAMTFUNlcnRpZmljYXRlIEF1dGhvcml0eTEoMCYG
-CSqGSIb3DQEJARYZY2VydGlmaWNhdGVzQGdzaGFwaXJvLm5ldDCBnzANBgkqhkiG
-9w0BAQEFAAOBjQAwgYkCgYEAqt2i/jv6L1w98eHUHVUEJ2sBYgDXAst0R2mE18bF
-cVV5NTqozt5II1OAPM1ULun+sXZavsv9LdyjNsXHHk7vdvBVj6Cl+AfFUh2iQoFN
-ishCP/MBgPlGNaa8wJufM4tJmx2HjxlIFSEjV99uTQPtrp8LkbepR2bxDRscXbRX
-YMcCAwEAAaOB+DCB9TAdBgNVHQ4EFgQUoG3gBq9hlLTGhBW0i3QiZ0pDYMowgcUG
-A1UdIwSBvTCBuoAUoG3gBq9hlLTGhBW0i3QiZ0pDYMqhgZ6kgZswgZgxCzAJBgNV
-BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRMwEQYDVQQHEwpFbWVyeXZpbGxl
-MRUwEwYDVQQKEwxnc2hhcGlyby5uZXQxHjAcBgNVBAMTFUNlcnRpZmljYXRlIEF1
-dGhvcml0eTEoMCYGCSqGSIb3DQEJARYZY2VydGlmaWNhdGVzQGdzaGFwaXJvLm5l
-dIIBADAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4GBAIcn0io63ATN7+h7
-HDRHLhM0pQj5Td/Y4W3mmts47iBtSq5vHrxxYaS01kAk7mXK6YFa7+5iV3AFRpFr
-0Mam6ThlrupQs1wnxHq9lYzLRe/8/JnlamHDRHfYH9a0F0QVmrwmW+xOKV39z2Hz
-vpGkO1Hmc1sXgp1aVixjwvHWokxa
------END CERTIFICATE-----
-
-
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 0 (0x0)
- Signature Algorithm: md5WithRSAEncryption
Issuer: C=US, ST=Illinois, L=De Kalb, O=Northern Illinois University, OU=Computer Science, CN=Neil Rickert/emailAddress=rickert@cs.niu.edu
Validity
Not Before: May 12 00:40:50 2000 GMT
@@ -210,93 +143,94 @@ xBJlUbs98fcltM0L9lt6YSWtBgoBVdxxBSkNc+kwUb7T4bKJ/A8o9wZ1lhs0deAH
Certificate:
Data:
Version: 3 (0x2)
- Serial Number: 0 (0x0)
+ Serial Number:
+ fa:7c:2c:80:29:3f:c2:64
Signature Algorithm: md5WithRSAEncryption
- Issuer: C=US, ST=California, L=Berkeley, O=Endmail Org, OU=MTA, CN=Claus Assmann CA RSA 2003/emailAddress=ca+ca-rsa2003@esmtp.org
+ Issuer: C=US, ST=California, L=Berkeley, O=Endmail Org, OU=MTA, CN=Claus Assmann CA RSA 2007/emailAddress=ca+ca-rsa2007@esmtp.org
Validity
- Not Before: Aug 7 15:56:45 2003 GMT
- Not After : Aug 6 15:56:45 2006 GMT
- Subject: C=US, ST=California, L=Berkeley, O=Endmail Org, OU=MTA, CN=Claus Assmann CA RSA 2003/emailAddress=ca+ca-rsa2003@esmtp.org
+ Not Before: May 4 02:07:56 2007 GMT
+ Not After : May 3 02:07:56 2010 GMT
+ Subject: C=US, ST=California, L=Berkeley, O=Endmail Org, OU=MTA, CN=Claus Assmann CA RSA 2007/emailAddress=ca+ca-rsa2007@esmtp.org
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (2048 bit)
Modulus (2048 bit):
- 00:aa:37:0f:09:a9:1c:e3:1a:0c:fe:bd:6c:37:a4:
- cf:87:db:af:6b:b4:19:d4:11:db:c6:56:ca:39:80:
- c6:a4:38:b0:bc:ac:7e:be:71:30:86:2c:dc:fa:b5:
- fd:58:23:a0:c1:ad:11:53:85:ca:fb:e6:d8:7e:28:
- eb:84:3b:cd:a3:fa:28:a5:cb:c7:b2:54:99:3e:40:
- 2a:27:43:4b:0c:26:4b:af:97:3d:92:82:d9:eb:2c:
- 7f:77:fd:b8:cd:7e:1e:04:81:17:3c:e2:44:68:ce:
- 88:66:02:90:24:35:24:c4:4c:ad:77:04:1a:3a:d5:
- 59:28:28:03:da:03:9d:f4:2e:52:6e:b5:36:96:4b:
- 14:f8:fc:8e:c6:d3:9b:e2:80:90:8b:71:d7:d0:5c:
- 43:b2:49:f1:5a:26:f3:5d:9e:3b:01:98:db:e3:ed:
- 5e:8d:dd:cf:aa:68:9d:0b:c9:e2:4e:fc:16:44:72:
- 93:07:62:18:05:c1:47:81:3c:3d:e4:e4:22:da:2c:
- d6:4a:44:52:06:7a:83:b5:e9:52:38:97:2f:75:a6:
- 5c:6f:87:8a:8d:83:f4:d0:04:a5:34:18:5e:a1:06:
- 16:b3:54:ce:64:47:ca:70:56:a3:6f:b9:7f:af:91:
- 76:78:70:b4:ab:ae:8e:d5:22:26:57:b1:ba:e7:4b:
- 18:21
+ 00:b0:28:91:31:af:82:ce:72:ef:36:ab:7d:e9:b1:
+ f5:77:66:38:4b:38:1f:5f:3d:12:d3:c8:fd:9a:f4:
+ d4:f6:b8:90:f9:26:5f:29:f7:43:f9:34:ec:65:62:
+ 01:bb:64:f1:5d:ea:75:04:3d:92:65:60:a2:06:62:
+ fa:88:ca:d8:20:50:c8:1e:38:53:b5:18:dd:b7:bd:
+ c7:08:35:4c:d9:dc:c6:97:56:37:b6:65:33:74:5a:
+ b2:c3:85:08:2b:b7:26:70:ff:38:02:1a:67:6a:d0:
+ 49:18:10:4b:f8:db:af:06:9c:b1:a8:82:a1:b1:75:
+ d2:52:9b:53:0c:ca:a7:e3:15:38:79:6d:a1:f5:ef:
+ 7c:8b:fd:bd:04:78:f9:e8:1e:b9:92:ea:74:d7:45:
+ 1e:4c:c8:bd:f4:5c:fc:1a:7f:e7:31:c6:ab:cb:78:
+ c7:4d:2f:b5:72:10:35:27:4a:1a:fa:53:19:f8:a7:
+ 59:63:eb:e9:15:ab:dc:71:69:8c:42:1c:96:4e:89:
+ 80:66:c9:9e:21:d5:3d:08:19:74:a5:f5:07:a0:ae:
+ de:79:af:fd:42:c2:79:7e:8c:f8:39:22:3b:c3:c4:
+ 58:3b:d0:0d:e6:a9:11:b6:a2:cd:2e:e5:16:66:fd:
+ 7e:65:33:94:b0:36:80:27:f5:80:76:a9:e5:df:f2:
+ cf:ef
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
- 3A:12:03:DB:0F:9E:28:45:A6:34:8D:38:AB:BA:47:8C:2A:A0:E4:2E
+ B2:49:6B:52:45:EE:90:36:D2:79:47:03:33:D9:A0:BA:80:50:DA:1C
X509v3 Authority Key Identifier:
- keyid:3A:12:03:DB:0F:9E:28:45:A6:34:8D:38:AB:BA:47:8C:2A:A0:E4:2E
- DirName:/C=US/ST=California/L=Berkeley/O=Endmail Org/OU=MTA/CN=Claus Assmann CA RSA 2003/emailAddress=ca+ca-rsa2003@esmtp.org
- serial:00
+ keyid:B2:49:6B:52:45:EE:90:36:D2:79:47:03:33:D9:A0:BA:80:50:DA:1C
+ DirName:/C=US/ST=California/L=Berkeley/O=Endmail Org/OU=MTA/CN=Claus Assmann CA RSA 2007/emailAddress=ca+ca-rsa2007@esmtp.org
+ serial:FA:7C:2C:80:29:3F:C2:64
X509v3 Basic Constraints:
- CA:TRUE
+ CA:TRUE
X509v3 Subject Alternative Name:
- email:ca+ca-rsa2003@esmtp.org
+ email:ca+ca-rsa2007@esmtp.org
X509v3 Issuer Alternative Name:
- email:ca+ca-rsa2003@esmtp.org
+ email:ca+ca-rsa2007@esmtp.org
Signature Algorithm: md5WithRSAEncryption
- 96:83:b6:54:93:df:38:d0:48:a7:a1:c8:08:c9:0f:e9:80:05:
- e3:7e:c3:61:51:88:7b:7a:bb:24:b0:69:a3:22:e4:98:38:da:
- c8:c3:eb:52:70:63:e2:66:f2:59:ef:56:be:aa:7c:87:6e:94:
- 85:d4:71:ba:35:f7:ee:d0:6e:52:1d:1f:e4:fd:2f:e2:70:31:
- 5d:b7:8b:13:cc:70:10:21:fa:34:29:8f:8d:d8:4a:c7:0f:b2:
- 36:e7:1e:1e:46:d1:11:84:80:7c:bb:24:c4:63:be:2a:24:53:
- 74:0c:89:e0:6a:f4:08:63:bf:54:d3:0a:d9:fc:fe:6c:de:4f:
- 97:61:08:a0:10:92:eb:af:06:ec:50:86:c4:cc:6b:31:32:60:
- 25:7a:09:47:f8:42:7a:a2:d5:90:fa:48:be:bf:0a:e1:03:b8:
- 56:24:b9:12:e9:ba:09:30:47:be:a5:8e:a2:92:a4:dc:a6:a7:
- c6:29:39:65:6e:64:4a:1b:b2:c3:07:29:f5:c0:7e:78:e0:22:
- 9b:98:d4:87:91:ca:e1:66:9d:2f:70:f1:4c:a5:8e:2e:68:52:
- b3:bd:95:76:56:40:0e:46:47:e4:b3:ec:aa:3c:e8:86:96:5a:
- ed:fa:c9:10:95:53:04:13:71:01:91:ce:cd:3a:51:c6:30:e9:
- 48:49:64:a3
+ 98:98:7c:d3:d0:5b:72:47:15:e6:22:68:bb:78:0e:78:66:e9:
+ 56:16:d8:bc:9d:5a:dc:27:29:fb:91:2d:6a:21:35:18:56:b4:
+ 4f:2a:09:c0:08:6f:9a:59:2b:2e:72:9a:fb:50:ba:c7:a9:91:
+ a0:f9:6c:be:cf:78:42:43:02:70:53:97:ba:6a:e3:da:17:e8:
+ 1f:c7:3a:5b:e7:bc:eb:e5:24:4c:f5:cf:61:34:1e:20:ed:17:
+ 63:ef:81:d3:9e:25:fe:cc:05:19:cc:8a:82:c9:4c:3a:b5:6b:
+ 49:51:76:46:02:aa:60:bb:c4:b9:61:48:33:da:79:8d:46:a3:
+ 06:20:98:f3:b2:db:3b:ad:c9:1d:0e:97:3d:b7:14:19:d3:7d:
+ 04:8b:6a:81:e0:11:5b:e1:35:a3:ff:2f:11:86:1c:31:85:7a:
+ fd:3f:36:ef:99:25:46:2e:b0:cb:43:45:4a:ec:be:d3:3f:a4:
+ 77:9b:79:cc:ce:92:63:a5:d9:ed:db:a0:9d:5d:7c:d7:80:f6:
+ c9:41:fb:02:96:8e:fd:f3:da:05:9d:81:a7:25:da:26:35:3b:
+ a9:0c:8c:f5:a7:5d:48:ec:87:c7:7a:60:51:76:f2:de:9b:14:
+ 2b:55:8a:43:df:99:19:f3:eb:e7:03:e6:a7:a2:a2:28:dd:d5:
+ 07:6a:3f:f7
-----BEGIN CERTIFICATE-----
-MIIFFzCCA/+gAwIBAgIBADANBgkqhkiG9w0BAQQFADCBpTELMAkGA1UEBhMCVVMx
-EzARBgNVBAgTCkNhbGlmb3JuaWExETAPBgNVBAcTCEJlcmtlbGV5MRQwEgYDVQQK
-EwtFbmRtYWlsIE9yZzEMMAoGA1UECxMDTVRBMSIwIAYDVQQDExlDbGF1cyBBc3Nt
-YW5uIENBIFJTQSAyMDAzMSYwJAYJKoZIhvcNAQkBFhdjYStjYS1yc2EyMDAzQGVz
-bXRwLm9yZzAeFw0wMzA4MDcxNTU2NDVaFw0wNjA4MDYxNTU2NDVaMIGlMQswCQYD
+MIIFJzCCBA+gAwIBAgIJAPp8LIApP8JkMA0GCSqGSIb3DQEBBAUAMIGlMQswCQYD
VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTERMA8GA1UEBxMIQmVya2VsZXkx
FDASBgNVBAoTC0VuZG1haWwgT3JnMQwwCgYDVQQLEwNNVEExIjAgBgNVBAMTGUNs
-YXVzIEFzc21hbm4gQ0EgUlNBIDIwMDMxJjAkBgkqhkiG9w0BCQEWF2NhK2NhLXJz
-YTIwMDNAZXNtdHAub3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
-qjcPCakc4xoM/r1sN6TPh9uva7QZ1BHbxlbKOYDGpDiwvKx+vnEwhizc+rX9WCOg
-wa0RU4XK++bYfijrhDvNo/oopcvHslSZPkAqJ0NLDCZLr5c9koLZ6yx/d/24zX4e
-BIEXPOJEaM6IZgKQJDUkxEytdwQaOtVZKCgD2gOd9C5SbrU2lksU+PyOxtOb4oCQ
-i3HX0FxDsknxWibzXZ47AZjb4+1ejd3PqmidC8niTvwWRHKTB2IYBcFHgTw95OQi
-2izWSkRSBnqDtelSOJcvdaZcb4eKjYP00ASlNBheoQYWs1TOZEfKcFajb7l/r5F2
-eHC0q66O1SImV7G650sYIQIDAQABo4IBTjCCAUowHQYDVR0OBBYEFDoSA9sPnihF
-pjSNOKu6R4wqoOQuMIHSBgNVHSMEgcowgceAFDoSA9sPnihFpjSNOKu6R4wqoOQu
-oYGrpIGoMIGlMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTERMA8G
-A1UEBxMIQmVya2VsZXkxFDASBgNVBAoTC0VuZG1haWwgT3JnMQwwCgYDVQQLEwNN
-VEExIjAgBgNVBAMTGUNsYXVzIEFzc21hbm4gQ0EgUlNBIDIwMDMxJjAkBgkqhkiG
-9w0BCQEWF2NhK2NhLXJzYTIwMDNAZXNtdHAub3JnggEAMAwGA1UdEwQFMAMBAf8w
-IgYDVR0RBBswGYEXY2ErY2EtcnNhMjAwM0Blc210cC5vcmcwIgYDVR0SBBswGYEX
-Y2ErY2EtcnNhMjAwM0Blc210cC5vcmcwDQYJKoZIhvcNAQEEBQADggEBAJaDtlST
-3zjQSKehyAjJD+mABeN+w2FRiHt6uySwaaMi5Jg42sjD61JwY+Jm8lnvVr6qfIdu
-lIXUcbo19+7QblIdH+T9L+JwMV23ixPMcBAh+jQpj43YSscPsjbnHh5G0RGEgHy7
-JMRjviokU3QMieBq9Ahjv1TTCtn8/mzeT5dhCKAQkuuvBuxQhsTMazEyYCV6CUf4
-Qnqi1ZD6SL6/CuEDuFYkuRLpugkwR76ljqKSpNymp8YpOWVuZEobssMHKfXAfnjg
-IpuY1IeRyuFmnS9w8Uylji5oUrO9lXZWQA5GR+Sz7Ko86IaWWu36yRCVUwQTcQGR
-zs06UcYw6UhJZKM=
+YXVzIEFzc21hbm4gQ0EgUlNBIDIwMDcxJjAkBgkqhkiG9w0BCQEWF2NhK2NhLXJz
+YTIwMDdAZXNtdHAub3JnMB4XDTA3MDUwNDAyMDc1NloXDTEwMDUwMzAyMDc1Nlow
+gaUxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMREwDwYDVQQHEwhC
+ZXJrZWxleTEUMBIGA1UEChMLRW5kbWFpbCBPcmcxDDAKBgNVBAsTA01UQTEiMCAG
+A1UEAxMZQ2xhdXMgQXNzbWFubiBDQSBSU0EgMjAwNzEmMCQGCSqGSIb3DQEJARYX
+Y2ErY2EtcnNhMjAwN0Blc210cC5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
+ggEKAoIBAQCwKJExr4LOcu82q33psfV3ZjhLOB9fPRLTyP2a9NT2uJD5Jl8p90P5
+NOxlYgG7ZPFd6nUEPZJlYKIGYvqIytggUMgeOFO1GN23vccINUzZ3MaXVje2ZTN0
+WrLDhQgrtyZw/zgCGmdq0EkYEEv4268GnLGogqGxddJSm1MMyqfjFTh5baH173yL
+/b0EePnoHrmS6nTXRR5MyL30XPwaf+cxxqvLeMdNL7VyEDUnShr6Uxn4p1lj6+kV
+q9xxaYxCHJZOiYBmyZ4h1T0IGXSl9Qegrt55r/1Cwnl+jPg5IjvDxFg70A3mqRG2
+os0u5RZm/X5lM5SwNoAn9YB2qeXf8s/vAgMBAAGjggFWMIIBUjAdBgNVHQ4EFgQU
+sklrUkXukDbSeUcDM9mguoBQ2hwwgdoGA1UdIwSB0jCBz4AUsklrUkXukDbSeUcD
+M9mguoBQ2hyhgaukgagwgaUxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9y
+bmlhMREwDwYDVQQHEwhCZXJrZWxleTEUMBIGA1UEChMLRW5kbWFpbCBPcmcxDDAK
+BgNVBAsTA01UQTEiMCAGA1UEAxMZQ2xhdXMgQXNzbWFubiBDQSBSU0EgMjAwNzEm
+MCQGCSqGSIb3DQEJARYXY2ErY2EtcnNhMjAwN0Blc210cC5vcmeCCQD6fCyAKT/C
+ZDAMBgNVHRMEBTADAQH/MCIGA1UdEQQbMBmBF2NhK2NhLXJzYTIwMDdAZXNtdHAu
+b3JnMCIGA1UdEgQbMBmBF2NhK2NhLXJzYTIwMDdAZXNtdHAub3JnMA0GCSqGSIb3
+DQEBBAUAA4IBAQCYmHzT0FtyRxXmImi7eA54ZulWFti8nVrcJyn7kS1qITUYVrRP
+KgnACG+aWSsucpr7ULrHqZGg+Wy+z3hCQwJwU5e6auPaF+gfxzpb57zr5SRM9c9h
+NB4g7Rdj74HTniX+zAUZzIqCyUw6tWtJUXZGAqpgu8S5YUgz2nmNRqMGIJjzsts7
+rckdDpc9txQZ030Ei2qB4BFb4TWj/y8RhhwxhXr9PzbvmSVGLrDLQ0VK7L7TP6R3
+m3nMzpJjpdnt26CdXXzXgPbJQfsClo7989oFnYGnJdomNTupDIz1p11I7IfHemBR
+dvLemxQrVYpD35kZ8+vnA+anoqIo3dUHaj/3
-----END CERTIFICATE-----
diff --git a/contrib/sendmail/INSTALL b/contrib/sendmail/INSTALL
index 19a60c6..4337389 100644
--- a/contrib/sendmail/INSTALL
+++ b/contrib/sendmail/INSTALL
@@ -12,13 +12,13 @@ sendmail/SECURITY for more installation information.
2. Create any necessary site configuration build files, as noted in
devtools/Site/README.
-3. In the sendmail/ directory, run "sh Build" (see sendmail/README for
+3. In the sendmail/ directory, run "sh ./Build" (see sendmail/README for
details).
4. Change to the cf/cf/ directory (that's not a typo): Copy whichever .mc
file best matches your environment to sendmail.mc. Next, tailor it
as explained in cf/README. Then run
- "sh Build sendmail.cf".
+ "sh ./Build sendmail.cf".
5. Back up your current /etc/mail/sendmail.cf and the sendmail binary (whose
location varies from operating system to operating system, but is usually
@@ -26,21 +26,21 @@ sendmail/SECURITY for more installation information.
6. Install sendmail.cf as /etc/mail/sendmail.cf and submit.cf as
/etc/mail/submit.cf. This can be done in the cf/cf by using
- "sh Build install-cf".
+ "sh ./Build install-cf".
Please read sendmail/SECURITY before continuing; you have to create a
new user smmsp and a new group smmsp for the default installation.
Then install the sendmail binary built in step 3 by cd-ing back to
- sendmail/ and running "sh Build install".
+ sendmail/ and running "sh ./Build install".
7. For each of the associated sendmail utilities (makemap, mailstats,
etc.), read the README in the utility's directory if it exists. When
- you are ready to install it, back up your installed version and type "sh
- Build install".
+ you are ready to install it, back up your installed version and type
+ "sh ./Build install".
8. If you are upgrading from an older version of sendmail and are using any
database maps, be sure to rebuild them with the new version of makemap,
in case you are now using a different (and thereby incompatible) version
of Berkeley DB.
-$Revision: 8.15 $, Last updated $Date: 2002/05/28 18:09:25 $
+$Revision: 8.16 $, Last updated $Date: 2007/10/03 21:00:28 $
diff --git a/contrib/sendmail/RELEASE_NOTES b/contrib/sendmail/RELEASE_NOTES
index 64ddbcc..8a0b51c 100644
--- a/contrib/sendmail/RELEASE_NOTES
+++ b/contrib/sendmail/RELEASE_NOTES
@@ -1,11 +1,76 @@
SENDMAIL RELEASE NOTES
- $Id: RELEASE_NOTES,v 8.1888 2007/04/03 23:28:40 ca Exp $
+ $Id: RELEASE_NOTES,v 8.1909 2007/10/31 16:04:13 ca 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.14.2/8.14.2 2007/11/01
+ If a message was queued and it contained 8 bit characters in
+ a From: or To: header, then those characters could be
+ "mistaken" for internal control characters during a queue
+ run and trigger various consistency checks. Problem
+ noted by Neil Rickert of Northern Illinois University.
+ If MaxMimeHeaderLength is set to a value greater than 0 (which
+ it is by default) then even if the Linelimit parameter
+ is 0, sendmail corrupted in the non-transfer-encoding
+ case every MAXLINE-1 characters. Patch from John Gardiner
+ Myers of Proofpoint.
+ Setting the suboption DeliveryMode for DaemonPortOptions did not
+ work in earlier 8.14 versions.
+ Note: DeliveryMode=interactive is silently converted to
+ background if a milter can reject or delete a recipient.
+ Prior to 8.14 this happened only if milter could delete
+ recipients.
+ ClientRate should trigger when the limit was exceeded (as
+ documented), not when it was reached. Patch from
+ John Beck of Sun Microsystems.
+ Force a queue run for -qGqueuegroup even if no runners are
+ specified (R=0) and forking (F=f) is requested.
+ When multiple results are requested for a DNS map lookup
+ (-z and -Z), return only those that are relevant for
+ the query (not also those in the "additional section".)
+ If the message transfer time to sendmail (when acting as server)
+ exceeds Timeout.queuewarn or Timeout.queuereturn and
+ the message is refused (by a milter), sendmail previously
+ created a delivery status notification (DSN). Patch
+ from Doug Heath of The Hertz Corporation.
+ A code change in Cyrus-SASL 2.1.22 for sasl_decode64() requires
+ the MTA to deal with some input (i.e., "=") itself.
+ Problem noted by Eliot Lear.
+ sendmail counted a delivery as successful if PIPELINING is
+ compiled in but not offered by the server and the
+ delivery failed temporarily. Patch from Werner Wiethege.
+ If getting the result of an LDAP query times out then close the
+ map so it will be reopened on the next lookup. This
+ should help "failover" configurations that specify more
+ than one LDAP server.
+ If check_compat returns $#discard then a "savemail panic" could
+ be triggered under some circumstances (e.g., requiring
+ a system which does not have the compile time flag
+ HASFLOCK set). Based on patch by Motonori Nakamura
+ of National Institute of Informatics, Japan.
+ If a milter rejected a recipient, the count for nrcpts= in the
+ logfile entry might have been wrong. Problem found by
+ Petra Humann of TU Dresden.
+ If a milter invoked smfi_chgfrom() where ESMTP arguments are not
+ NULL, the message body was lost. Patch from Motonori
+ Nakamura of National Institute of Informatics, Japan.
+ sendmail(8) had a bogus space in -qGname. Patch from Peng Haitao.
+ CONTRIB: buildvirtuser: Preserve ownership and permissions when
+ replacing files.
+ CONTRIB: buildvirtuser: Skip dot-files (e.g., .cvsignore) when
+ reading the /etc/mail/virtusers/ directory.
+ CONTRIB: buildvirtuser: Emit warnings instead of exiting where
+ appropriate.
+ LIBMILTER: Fix ABI backwards compatibility so milters compiled
+ against an older libmilter.so shared library can use an
+ 8.14 libmilter.so shared library.
+ LIBMILTER: smfi_version() did not properly extract the patchlevel
+ from the version number, however, the returned value was
+ correct for the current libmilter version.
+
8.14.1/8.14.1 2007/04/03
Even though a milter rejects a recipient the MTA will still keep
it in its list of recipients and deliver to it if the
diff --git a/contrib/sendmail/cf/cf/submit.cf b/contrib/sendmail/cf/cf/submit.cf
index b70e79d..22a574c 100644
--- a/contrib/sendmail/cf/cf/submit.cf
+++ b/contrib/sendmail/cf/cf/submit.cf
@@ -16,8 +16,8 @@
#####
##### SENDMAIL CONFIGURATION FILE
#####
-##### built by ca@nother.smi.sendmail.com on Tue Apr 3 16:32:55 PDT 2007
-##### in /extra/home/ca/sm-8.14.1/OpenSource/sendmail-8.14.1/cf/cf
+##### built by ca@nother.smi.sendmail.com on Wed Oct 31 09:24:27 PDT 2007
+##### in /extra/home/ca/sm-8.14.2/OpenSource/sendmail-8.14.2/cf/cf
##### using ../ as configuration include directory
#####
######################################################################
@@ -35,7 +35,7 @@
##### $Id: no_default_msa.m4,v 8.2 2001/02/14 05:03:22 gshapiro Exp $ #####
-##### $Id: proto.m4,v 8.730 2007/02/01 18:50:03 ca Exp $ #####
+##### $Id: proto.m4,v 8.732 2007/04/20 00:53:30 ca Exp $ #####
# level 10 config file format
V10/Berkeley
@@ -114,7 +114,7 @@ D{MTAHost}[127.0.0.1]
# Configuration version number
-DZ8.14.1/Submit
+DZ8.14.2/Submit
###############
diff --git a/contrib/sendmail/cf/feature/ldap_routing.m4 b/contrib/sendmail/cf/feature/ldap_routing.m4
index ad7f142..a474f17 100644
--- a/contrib/sendmail/cf/feature/ldap_routing.m4
+++ b/contrib/sendmail/cf/feature/ldap_routing.m4
@@ -1,6 +1,6 @@
divert(-1)
#
-# Copyright (c) 1999-2002, 2004 Sendmail, Inc. and its suppliers.
+# Copyright (c) 1999-2002, 2004, 2007 Sendmail, Inc. and its suppliers.
# All rights reserved.
#
# By using this file, you agree to the terms and conditions set
@@ -10,7 +10,7 @@ divert(-1)
#
divert(0)
-VERSIONID(`$Id: ldap_routing.m4,v 8.14 2004/02/18 02:45:11 gshapiro Exp $')
+VERSIONID(`$Id: ldap_routing.m4,v 8.15 2007/05/01 17:38:25 ca Exp $')
divert(-1)
# Check first two arguments. If they aren't set, may need to warn in proto.m4
diff --git a/contrib/sendmail/cf/m4/proto.m4 b/contrib/sendmail/cf/m4/proto.m4
index d7f7f08..6ef2f1c 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.730 2007/02/01 18:50:03 ca Exp $')
+VERSIONID(`$Id: proto.m4,v 8.732 2007/04/20 00:53:30 ca Exp $')
# level CF_LEVEL config file format
V`'CF_LEVEL/ifdef(`VENDOR_NAME', `VENDOR_NAME', `Berkeley')
@@ -2962,9 +2962,9 @@ ifdef(`_ATMPF_', `dnl tempfail?
R<$* _ATMPF_> $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl')
dnl use the generic routine (for now)
R<0> $@ OK no limit
-R<$+> $: <$1> $| $(arith l $@ $&{client_rate} $@ $1 $)
+R<$+> $: <$1> $| $(arith l $@ $1 $@ $&{client_rate} $)
dnl log this? Connection rate $&{client_rate} exceeds limit $1.
-R<$+> $| FALSE $#error $@ 4.3.2 $: _RATE_CONTROL_REPLY Connection rate limit exceeded.
+R<$+> $| TRUE $#error $@ 4.3.2 $: _RATE_CONTROL_REPLY Connection rate limit exceeded.
')')
ifdef(`_CONN_CONTROL_',`dnl
@@ -2984,9 +2984,9 @@ ifdef(`_ATMPF_', `dnl tempfail?
R<$* _ATMPF_> $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl')
dnl use the generic routine (for now)
R<0> $@ OK no limit
-R<$+> $: <$1> $| $(arith l $@ $&{client_connections} $@ $1 $)
+R<$+> $: <$1> $| $(arith l $@ $1 $@ $&{client_connections} $)
dnl log this: Open connections $&{client_connections} exceeds limit $1.
-R<$+> $| FALSE $#error $@ 4.3.2 $: _CONN_CONTROL_REPLY Too many open connections.
+R<$+> $| TRUE $#error $@ 4.3.2 $: _CONN_CONTROL_REPLY Too many open connections.
')')
undivert(9)dnl LOCAL_RULESETS
diff --git a/contrib/sendmail/cf/m4/version.m4 b/contrib/sendmail/cf/m4/version.m4
index b81bdcc..9b34f1a 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.178 2007/04/03 21:21:18 ca Exp $')
+VERSIONID(`$Id: version.m4,v 8.186 2007/10/31 16:04:13 ca Exp $')
#
divert(0)
# Configuration version number
-DZ8.14.1`'ifdef(`confCF_VERSION', `/confCF_VERSION')
+DZ8.14.2`'ifdef(`confCF_VERSION', `/confCF_VERSION')
diff --git a/contrib/sendmail/contrib/buildvirtuser b/contrib/sendmail/contrib/buildvirtuser
index abed167..a35a6e7 100755
--- a/contrib/sendmail/contrib/buildvirtuser
+++ b/contrib/sendmail/contrib/buildvirtuser
@@ -1,6 +1,6 @@
#!/usr/bin/perl -w
-# Copyright (c) 1999-2003 Gregory Neil Shapiro. All Rights Reserved.
+# Copyright (c) 1999-2004, 2007 Gregory Neil Shapiro. All Rights Reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
@@ -27,7 +27,7 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
-# $Id: buildvirtuser,v 1.6 2003/03/15 23:30:09 gshapiro Exp $
+# $Id: buildvirtuser,v 1.8 2007/10/08 18:44:15 gshapiro Exp $
=head1 NAME
@@ -70,30 +70,21 @@ to take affect.
=head1 EXAMPLES
-Here are some example files from the /etc/mail/virtusers/ directory:
+Here is an example file from the /etc/mail/virtusers/ directory:
-=head2 /etc/mail/virtusers/bsdunix.org:
+=head2 /etc/mail/virtusers/example.org:
# Services
- MAILER-DAEMON gshapiro+bounce.$DOMAIN@gshapiro.net
- postmaster gshapiro+$LHS.$DOMAIN@gshapiro.net
- webmaster gshapiro+$LHS.$DOMAIN@gshapiro.net
+ MAILER-DAEMON gshapiro+bounce.$DOMAIN@example.net
+ postmaster gshapiro+$LHS.$DOMAIN@example.net
+ webmaster gshapiro+$LHS.$DOMAIN@example.net
# Defaults
error:nouser No such user
# Users
- gshapiro gshapiro+$DOMAIN@gshapiro.net
- bob robert@smtp.org
-
-=head2 /etc/mail/virtusers/smtp.org:
-
- # Defaults
- gshapiro+$DOMAIN@gshapiro.net
-
- # Users
- john john@wookie.org
- nancy n@milter.com
+ gshapiro gshapiro+$DOMAIN@example.net
+ zoe zoe@example.com
=head1 AUTHOR
@@ -102,6 +93,7 @@ Gregory Neil Shapiro E<lt>F<gshapiro@gshapiro.net>E<gt>
=cut
use strict;
+use File::stat;
use Getopt::Std;
my $makemap = "/usr/sbin/makemap";
@@ -117,6 +109,18 @@ my $newest = 0;
my ($lhs, $domain, $key, $value);
my $opts = {};
+sub preserve_perms ($$)
+{
+ my $old = shift;
+ my $new = shift;
+ my $st;
+
+ $st = stat($old);
+ return if (!defined($st));
+ chmod($st->mode, $new) || warn "Could not chmod($st->mode, $new): $!\n";
+ chown($st->uid, $st->gid, $new) || warn "Could not chmod($st->uid, $st->gid, $new): $!\n";
+}
+
getopts('ft', $opts) || die "Usage: $0 [-f] [-t]\n";
if ($opts->{t})
@@ -131,9 +135,12 @@ closedir(VIRTS) || die "Could not close directory $virts: $!\n";
foreach $domain (@virts)
{
+ next if ($domain =~ m/^\./);
open(DOMAIN, "$virts/$domain") || die "Could not open file $virts/$domain: $!\n";
my $line = 0;
- my $mtime = (stat(DOMAIN))[9] || 0;
+ my $mtime = 0;
+ my $st = stat("$virts/$domain");
+ $mtime = $st->mtime if (defined($st));
if ($mtime > $newest)
{
$newest = $mtime;
@@ -160,7 +167,7 @@ LINE: while (<DOMAIN>)
}
else
{
- die "Bogus line $line in $virts/$domain\n";
+ warn "Bogus line $line in $virts/$domain\n";
}
# Variable subsitution
@@ -172,7 +179,9 @@ LINE: while (<DOMAIN>)
close(DOMAIN) || die "Could not close $virts/$domain: $!\n";
}
-my $virtmtime = (stat($virt))[9] || 0;
+my $virtmtime = 0;
+my $st = stat($virt);
+$virtmtime = $st->mtime if (defined($st));
if ($opts->{f} || $virtmtime < $newest)
{
print STDOUT "Rebuilding $virt\n";
@@ -191,14 +200,17 @@ if ($opts->{f} || $virtmtime < $newest)
print MAKEMAP "$key\t\t$virt{$key}\n";
}
close(MAKEMAP) || die "Could not close makemap ($?): $!\n";
+ preserve_perms($virt, $newvirt);
rename($newvirt, $virt) || die "Could not rename $newvirt to $virt: $!\n";
open(VIRTHOST, ">$newvirthosts") || die "Could not open file $newvirthosts: $!\n";
foreach $domain (sort @virts)
{
+ next if ($domain =~ m/^\./);
print VIRTHOST "$domain\n";
}
close(VIRTHOST) || die "Could not close $newvirthosts: $!\n";
+ preserve_perms($virthosts, $newvirthosts);
rename($newvirthosts, $virthosts) || die "Could not rename $newvirthosts to $virthosts: $!\n";
}
exit 0;
diff --git a/contrib/sendmail/doc/op/op.me b/contrib/sendmail/doc/op/op.me
index c3a6d56..74c2d66 100644
--- a/contrib/sendmail/doc/op/op.me
+++ b/contrib/sendmail/doc/op/op.me
@@ -9,7 +9,7 @@
.\" the sendmail distribution.
.\"
.\"
-.\" $Id: op.me,v 8.739 2007/03/22 17:56:01 ca Exp $
+.\" $Id: op.me,v 8.741 2007/06/22 23:08:59 ca Exp $
.\"
.\" eqn op.me | pic | troff -me
.\"
@@ -90,7 +90,7 @@ Sendmail, Inc.
.de Ve
Version \\$2
..
-.Ve $Revision: 8.739 $
+.Ve $Revision: 8.741 $
.rm Ve
.sp
For Sendmail Version 8.14
@@ -6939,6 +6939,10 @@ The
.b \-v
command line flag sets this to
.b i .
+Note: for internal reasons,
+``i'' does not work
+if a milter is enabled which can reject or delete recipients.
+In that case the mode will be changed to ``b''.
.ip DialDelay=\fIsleeptime\fP
[no short name]
Dial-on-demand network connections can see timeouts
@@ -8932,7 +8936,8 @@ The server responds with a status indicator and the result (if any):
<status> ' ' <result>
.)b
-The status indicator is one of the following upper case words:
+The status indicator specifies the result of the lookup operation itself
+and is one of the following upper case words:
.(b
.ta 9n
OK the key was found, result contains the looked up value
@@ -8944,13 +8949,19 @@ PERM a permanent failure occured
In case of errors (status TEMP, TIMEOUT or PERM) the result field may
contain an explanatory message.
+However, the explanatory message is not used any further by
+.i sendmail .
Example replies:
.(b
31:OK resolved.address@example.com,
.)b
-in case of a successful lookup, or:
+.(b
+56:OK error:550 5.7.1 User does not accept mail from sender,
+.)b
+
+in case of successful lookups, or:
.(b
8:NOTFOUND,
.)b
@@ -8960,7 +8971,7 @@ in case the key was not found, or:
55:TEMP this text explains that we had a temporary failure,
.)b
-in case of a failure.
+in case of a temporary map lookup failure.
The socket map uses the same syntax as milters
(see Section "X \*- Mail Filter (Milter) Definitions")
@@ -11424,7 +11435,7 @@ replace it with a blank sheet for double-sided output.
.\".sz 10
.\"Eric Allman
.\".sp
-.\"Version $Revision: 8.739 $
+.\"Version $Revision: 8.741 $
.\".ce 0
.bp 3
.ce
diff --git a/contrib/sendmail/editmap/editmap.c b/contrib/sendmail/editmap/editmap.c
index 138ee30..18c352c 100644
--- a/contrib/sendmail/editmap/editmap.c
+++ b/contrib/sendmail/editmap/editmap.c
@@ -22,7 +22,7 @@ SM_UNUSED(static char copyright[]) =
#endif /* ! lint */
#ifndef lint
-SM_UNUSED(static char id[]) = "@(#)$Id: editmap.c,v 1.24 2004/08/03 18:40:10 ca Exp $";
+SM_UNUSED(static char id[]) = "@(#)$Id: editmap.c,v 1.25 2007/05/11 18:50:35 ca Exp $";
#endif /* ! lint */
@@ -46,7 +46,7 @@ uid_t RealUid;
gid_t RealGid;
char *RealUserName;
uid_t RunAsUid;
-uid_t RunAsGid;
+gid_t RunAsGid;
char *RunAsUserName;
int Verbose = 2;
bool DontInitGroups = false;
diff --git a/contrib/sendmail/include/sm/conf.h b/contrib/sendmail/include/sm/conf.h
index 4f05f33..13b3b50 100644
--- a/contrib/sendmail/include/sm/conf.h
+++ b/contrib/sendmail/include/sm/conf.h
@@ -10,7 +10,7 @@
* the sendmail distribution.
*
*
- * $Id: conf.h,v 1.132 2007/03/21 23:56:18 ca Exp $
+ * $Id: conf.h,v 1.134 2007/09/24 23:05:37 ca Exp $
*/
/*
@@ -458,6 +458,9 @@ typedef int pid_t;
# if SOLARIS >= 21000 || (SOLARIS < 10000 && SOLARIS >= 210)
# define HASUNSETENV 1 /* unsetenv() added in S10 */
# endif /* SOLARIS >= 21000 || (SOLARIS < 10000 && SOLARIS >= 210) */
+# if SOLARIS >= 21100 || (SOLARIS < 10000 && SOLARIS >= 211)
+# define GETLDAPALIASBYNAME_VERSION 2 /* changed in S11 */
+# endif /* SOLARIS >= 21100 || (SOLARIS < 10000 && SOLARIS >= 211) */
# ifndef HASGETUSERSHELL
# define HASGETUSERSHELL 0 /* getusershell(3) causes core dumps pre-2.7 */
# endif /* ! HASGETUSERSHELL */
diff --git a/contrib/sendmail/include/sm/ldap.h b/contrib/sendmail/include/sm/ldap.h
index 63292f1..fc9a325 100644
--- a/contrib/sendmail/include/sm/ldap.h
+++ b/contrib/sendmail/include/sm/ldap.h
@@ -1,12 +1,12 @@
/*
- * Copyright (c) 2001-2003, 2005, 2006 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 2001-2003, 2005-2007 Sendmail, Inc. and its suppliers.
* All rights reserved.
*
* By using this file, you agree to the terms and conditions set
* forth in the LICENSE file which can be found at the top level of
* the sendmail distribution.
*
- * $Id: ldap.h,v 1.32 2006/08/30 22:56:58 ca Exp $
+ * $Id: ldap.h,v 1.33 2007/10/10 00:06:44 ca Exp $
*/
#ifndef SM_LDAP_H
@@ -91,6 +91,10 @@ struct sm_ldap_struct
/* ldapmap_lookup options */
char ldap_attrsep;
+# if _FFR_LDAP_NETWORK_TIMEOUT
+ struct timeval ldap_networktmo;
+# endif /* _FFR_LDAP_NETWORK_TIMEOUT */
+
/* Linked list of maps sharing the same LDAP binding */
void *ldap_next;
};
diff --git a/contrib/sendmail/include/sm/tailq.h b/contrib/sendmail/include/sm/tailq.h
index cfb09be..c8eeec4 100644
--- a/contrib/sendmail/include/sm/tailq.h
+++ b/contrib/sendmail/include/sm/tailq.h
@@ -36,8 +36,12 @@
#define SM_TAILQ_H_
/*
+ * $Id: tailq.h,v 1.2 2007/06/29 23:09:57 ca Exp $
+ *
* This file is a modified copy of queue.h from a BSD system:
* we only need tail queues here.
+ * We do not use queue.h directly because there is a conflict with
+ * some versions of that file on some OSs.
*
* A tail queue is headed by a pair of pointers, one to the head of the
* list and the other to the tail of the list. The elements are doubly
diff --git a/contrib/sendmail/libmilter/docs/xxfi_unknown.html b/contrib/sendmail/libmilter/docs/xxfi_unknown.html
index b1cd38a..0455dfd 100644
--- a/contrib/sendmail/libmilter/docs/xxfi_unknown.html
+++ b/contrib/sendmail/libmilter/docs/xxfi_unknown.html
@@ -2,7 +2,7 @@
<HEAD><TITLE>xxfi_unknown</TITLE></HEAD>
<BODY>
<!--
-$Id: xxfi_unknown.html,v 1.3 2006/12/21 18:30:36 ca Exp $
+$Id: xxfi_unknown.html,v 1.4 2007/04/23 16:30:42 ca Exp $
-->
<H1>xxfi_unknown</H1>
@@ -53,12 +53,12 @@ that is either unknown or not implemented by the MTA.
<TR bgcolor="#dddddd"><TH>Return value</TH><TH>Description</TH></TR>
<TR valign="top">
<TD>SMFIS_TEMPFAIL</TD>
- <TD>Reject this message with a temporary error.
+ <TD>Reject this command with a temporary error.
</TD>
</TR>
<TR valign="top">
<TD>SMFIS_REJECT</TD>
- <TD>Reject this message.
+ <TD>Reject this command.
</TD>
</TR>
</TABLE>
diff --git a/contrib/sendmail/libmilter/engine.c b/contrib/sendmail/libmilter/engine.c
index d7a5a41..a024312 100644
--- a/contrib/sendmail/libmilter/engine.c
+++ b/contrib/sendmail/libmilter/engine.c
@@ -9,7 +9,7 @@
*/
#include <sm/gen.h>
-SM_RCSID("@(#)$Id: engine.c,v 8.157 2007/03/26 18:10:04 ca Exp $")
+SM_RCSID("@(#)$Id: engine.c,v 8.159 2007/04/23 22:22:50 ca Exp $")
#include "libmilter.h"
diff --git a/contrib/sendmail/libmilter/listener.c b/contrib/sendmail/libmilter/listener.c
index 62d5eed..6e68ae5 100644
--- a/contrib/sendmail/libmilter/listener.c
+++ b/contrib/sendmail/libmilter/listener.c
@@ -9,7 +9,7 @@
*/
#include <sm/gen.h>
-SM_RCSID("@(#)$Id: listener.c,v 8.122 2006/11/02 17:54:44 ca Exp $")
+SM_RCSID("@(#)$Id: listener.c,v 8.124 2007/04/23 22:22:50 ca Exp $")
/*
** listener.c -- threaded network listener
diff --git a/contrib/sendmail/libmilter/main.c b/contrib/sendmail/libmilter/main.c
index c8d98c4..faff4f8 100644
--- a/contrib/sendmail/libmilter/main.c
+++ b/contrib/sendmail/libmilter/main.c
@@ -9,7 +9,7 @@
*/
#include <sm/gen.h>
-SM_RCSID("@(#)$Id: main.c,v 8.81 2006/11/02 18:31:43 ca Exp $")
+SM_RCSID("@(#)$Id: main.c,v 8.83 2007/04/23 22:22:50 ca Exp $")
#define _DEFINE 1
#include "libmilter.h"
diff --git a/contrib/sendmail/libmilter/monitor.c b/contrib/sendmail/libmilter/monitor.c
index 3d23f0c..366cf75 100644
--- a/contrib/sendmail/libmilter/monitor.c
+++ b/contrib/sendmail/libmilter/monitor.c
@@ -8,6 +8,8 @@
*
*/
+#include <sm/gen.h>
+SM_RCSID("@(#)$Id: monitor.c,v 8.7 2007/04/23 16:26:28 ca Exp $")
#include "libmilter.h"
#if _FFR_THREAD_MONITOR
diff --git a/contrib/sendmail/libmilter/smfi.c b/contrib/sendmail/libmilter/smfi.c
index 856c4a9..138623e 100644
--- a/contrib/sendmail/libmilter/smfi.c
+++ b/contrib/sendmail/libmilter/smfi.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999-2006 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1999-2007 Sendmail, Inc. and its suppliers.
* All rights reserved.
*
* By using this file, you agree to the terms and conditions set
@@ -9,7 +9,7 @@
*/
#include <sm/gen.h>
-SM_RCSID("@(#)$Id: smfi.c,v 8.82 2007/01/20 06:37:19 ca Exp $")
+SM_RCSID("@(#)$Id: smfi.c,v 8.83 2007/04/23 16:44:39 ca Exp $")
#include <sm/varargs.h>
#include "libmilter.h"
@@ -884,6 +884,6 @@ smfi_version(major, minor, patchlevel)
if (minor != NULL)
*minor = SM_LM_VRS_MINOR(SMFI_VERSION);
if (patchlevel != NULL)
- *patchlevel = SM_LM_VRS_MINOR(SMFI_VERSION);
+ *patchlevel = SM_LM_VRS_PLVL(SMFI_VERSION);
return MI_SUCCESS;
}
diff --git a/contrib/sendmail/libsm/ldap.c b/contrib/sendmail/libsm/ldap.c
index 83b7644..252e547 100644
--- a/contrib/sendmail/libsm/ldap.c
+++ b/contrib/sendmail/libsm/ldap.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001-2006 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 2001-2007 Sendmail, Inc. and its suppliers.
* All rights reserved.
*
* By using this file, you agree to the terms and conditions set
@@ -11,7 +11,7 @@
#define LDAP_DEPRECATED 1
#include <sm/gen.h>
-SM_RCSID("@(#)$Id: ldap.c,v 1.78 2006/08/30 22:56:59 ca Exp $")
+SM_RCSID("@(#)$Id: ldap.c,v 1.80 2007/10/12 00:19:44 ca Exp $")
#if LDAPMAP
# include <sys/types.h>
@@ -1103,26 +1103,25 @@ sm_ldap_results(lmap, msgid, flags, delim, rpool, result,
if (save_errno != LDAP_SUCCESS)
{
statp = EX_TEMPFAIL;
- if (ret != 0)
+ switch (save_errno)
{
- switch (save_errno)
- {
#ifdef LDAP_SERVER_DOWN
- case LDAP_SERVER_DOWN:
+ case LDAP_SERVER_DOWN:
#endif /* LDAP_SERVER_DOWN */
- case LDAP_TIMEOUT:
- case LDAP_UNAVAILABLE:
+ case LDAP_TIMEOUT:
+ case ETIMEDOUT:
+ case LDAP_UNAVAILABLE:
- /*
- ** server disappeared,
- ** try reopen on next search
- */
+ /*
+ ** server disappeared,
+ ** try reopen on next search
+ */
- statp = EX_RESTART;
- break;
- }
- save_errno += E_LDAPBASE;
+ statp = EX_RESTART;
+ break;
}
+ if (ret != 0)
+ save_errno += E_LDAPBASE;
SM_LDAP_ERROR_CLEANUP();
errno = save_errno;
return statp;
@@ -1272,6 +1271,7 @@ sm_ldap_results(lmap, msgid, flags, delim, rpool, result,
case LDAP_SERVER_DOWN:
#endif /* LDAP_SERVER_DOWN */
case LDAP_TIMEOUT:
+ case ETIMEDOUT:
case LDAP_UNAVAILABLE:
/*
@@ -1370,6 +1370,9 @@ sm_ldap_setopts(ld, lmap)
ldap_set_option(ld, LDAP_OPT_REFERRALS, LDAP_OPT_OFF);
ldap_set_option(ld, LDAP_OPT_SIZELIMIT, &lmap->ldap_sizelimit);
ldap_set_option(ld, LDAP_OPT_TIMELIMIT, &lmap->ldap_timelimit);
+# if _FFR_LDAP_NETWORK_TIMEOUT && defined(LDAP_OPT_NETWORK_TIMEOUT)
+ ldap_set_option(ld, LDAP_OPT_NETWORK_TIMEOUT, &lmap->ldap_networktmo);
+# endif /* _FFR_LDAP_NETWORK_TIMEOUT && defined(LDAP_OPT_NETWORK_TIMEOUT) */
# ifdef LDAP_OPT_RESTART
ldap_set_option(ld, LDAP_OPT_RESTART, LDAP_OPT_ON);
# endif /* LDAP_OPT_RESTART */
diff --git a/contrib/sendmail/libsm/mpeix.c b/contrib/sendmail/libsm/mpeix.c
index 6d9fedc..163dfba 100644
--- a/contrib/sendmail/libsm/mpeix.c
+++ b/contrib/sendmail/libsm/mpeix.c
@@ -9,7 +9,7 @@
*/
#include <sm/gen.h>
-SM_RCSID("@(#)$Id: mpeix.c,v 1.6 2002/05/24 20:50:14 gshapiro Exp $")
+SM_RCSID("@(#)$Id: mpeix.c,v 1.7 2007/05/11 18:51:22 gshapiro Exp $")
#ifdef MPE
/*
@@ -506,7 +506,7 @@ sendmail_mpe_emuluid()
** emulated egid if present, else true egid.
*/
-static uid_t sendmail_mpe_egid = -1;
+static gid_t sendmail_mpe_egid = -1;
#undef getegid
gid_t
diff --git a/contrib/sendmail/src/Makefile.m4 b/contrib/sendmail/src/Makefile.m4
index 10c1122..b2bfa1a 100644
--- a/contrib/sendmail/src/Makefile.m4
+++ b/contrib/sendmail/src/Makefile.m4
@@ -1,4 +1,4 @@
-dnl $Id: Makefile.m4,v 8.107 2007/01/09 00:04:09 ca Exp $
+dnl $Id: Makefile.m4,v 8.112 2007/10/17 21:29:43 ca Exp $
include(confBUILDTOOLSDIR`/M4/switch.m4')
define(`confREQUIRE_LIBSM', `true')
diff --git a/contrib/sendmail/src/deliver.c b/contrib/sendmail/src/deliver.c
index 01d5258..ed60e47 100644
--- a/contrib/sendmail/src/deliver.c
+++ b/contrib/sendmail/src/deliver.c
@@ -14,7 +14,7 @@
#include <sendmail.h>
#include <sm/time.h>
-SM_RCSID("@(#)$Id: deliver.c,v 8.1012 2007/03/29 21:20:15 ca Exp $")
+SM_RCSID("@(#)$Id: deliver.c,v 8.1015 2007/10/17 21:35:30 ca Exp $")
#if HASSETUSERCONTEXT
# include <login_cap.h>
@@ -495,7 +495,7 @@ sendall(e, mode)
time_t now;
if (tTd(13, 29))
- sm_dprintf("No deliveries: auto-queuing\n");
+ sm_dprintf("No deliveries: auto-queueing\n");
mode = SM_QUEUE;
now = curtime();
@@ -3293,6 +3293,8 @@ do_transfer:
ok = (*e->e_puthdr)(mci, e->e_header, e, M87F_OUTER);
if (ok)
ok = (*e->e_putbody)(mci, e, NULL);
+ if (ok && bitset(MCIF_INLONGLINE, mci->mci_flags))
+ ok = putline("", mci);
/*
** Ignore an I/O error that was caused by EPIPE.
@@ -3404,6 +3406,7 @@ do_transfer:
/* No recipients in list and no missing responses? */
if (tobuf[0] == '\0'
# if PIPELINING
+ && bitset(MCIF_PIPELINED, mci->mci_flags)
&& mci->mci_nextaddr == NULL
# endif /* PIPELINING */
)
diff --git a/contrib/sendmail/src/envelope.c b/contrib/sendmail/src/envelope.c
index a607a15..20b0ba2 100644
--- a/contrib/sendmail/src/envelope.c
+++ b/contrib/sendmail/src/envelope.c
@@ -13,7 +13,7 @@
#include <sendmail.h>
-SM_RCSID("@(#)$Id: envelope.c,v 8.302 2006/11/10 23:12:52 ca Exp $")
+SM_RCSID("@(#)$Id: envelope.c,v 8.304 2007/04/18 17:15:49 ca Exp $")
/*
** CLRSESSENVELOPE -- clear session oriented data in an envelope
@@ -75,7 +75,7 @@ newenvelope(e, parent, rpool)
register ENVELOPE *parent;
SM_RPOOL_T *rpool;
{
- int sendmode;
+ int sendmode, dm;
/*
** This code used to read:
@@ -86,8 +86,16 @@ newenvelope(e, parent, rpool)
** This meant macvalue() could go into an infinite loop.
*/
+ dm = DM_NOTSET;
if (parent != NULL)
+ {
+ char *str;
+
sendmode = parent->e_sendmode;
+ str = macvalue(macid("{deliveryMode}"), parent);
+ if (str != NULL)
+ dm = (int) str[0];
+ }
else
sendmode = DM_NOTSET;
@@ -105,9 +113,18 @@ newenvelope(e, parent, rpool)
e->e_parent = parent;
assign_queueid(e);
e->e_ctime = curtime();
+#if _FFR_SESSID
+ e->e_sessid = e->e_id;
+#endif /* _FFR_SESSID */
if (parent != NULL)
{
e->e_msgpriority = parent->e_msgsize;
+#if _FFR_SESSID
+ if (parent->e_sessid != NULL)
+ e->e_sessid = sm_rpool_strdup_x(rpool,
+ parent->e_sessid);
+#endif /* _FFR_SESSID */
+
if (parent->e_quarmsg == NULL)
{
e->e_quarmsg = NULL;
@@ -128,6 +145,8 @@ newenvelope(e, parent, rpool)
(void) sm_io_flush(CurEnv->e_xfp, SM_TIME_DEFAULT);
if (sendmode != DM_NOTSET)
e->e_sendmode = sendmode;
+ if (dm != DM_NOTSET)
+ set_delivery_mode(dm, e);
return e;
}
diff --git a/contrib/sendmail/src/macro.c b/contrib/sendmail/src/macro.c
index 8f0642f..cdde4d2 100644
--- a/contrib/sendmail/src/macro.c
+++ b/contrib/sendmail/src/macro.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998-2001, 2003, 2006 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1998-2001, 2003, 2006, 2007 Sendmail, Inc. and its suppliers.
* All rights reserved.
* Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
@@ -13,7 +13,7 @@
#include <sendmail.h>
-SM_RCSID("@(#)$Id: macro.c,v 8.102 2006/12/21 23:06:10 ca Exp $")
+SM_RCSID("@(#)$Id: macro.c,v 8.107 2007/08/06 22:29:02 ca Exp $")
#include <sm/sendmail.h>
#if MAXMACROID != (BITMAPBITS - 1)
@@ -21,8 +21,67 @@ SM_RCSID("@(#)$Id: macro.c,v 8.102 2006/12/21 23:06:10 ca Exp $")
#endif /* MAXMACROID != (BITMAPBITS - 1) */
static char *MacroName[MAXMACROID + 1]; /* macro id to name table */
-int NextMacroId = 0240; /* codes for long named macros */
+
+/*
+** Codes for long named macros.
+** See also macname():
+ * if not ASCII printable, look up the name *
+ if (n <= 0x20 || n > 0x7f)
+** First use 1 to NEXTMACROID_L, then use NEXTMACROID_H to MAXMACROID.
+*/
+
+#define NEXTMACROID_L 037
+#define NEXTMACROID_H 0240
+
+#if _FFR_MORE_MACROS
+/* table for next id in non-printable ASCII range: disallow some value */
+static int NextMIdTable[] =
+{
+ /* 0 nul */ 1,
+ /* 1 soh */ 2,
+ /* 2 stx */ 3,
+ /* 3 etx */ 4,
+ /* 4 eot */ 5,
+ /* 5 enq */ 6,
+ /* 6 ack */ 7,
+ /* 7 bel */ 8,
+ /* 8 bs */ 14,
+ /* 9 ht */ -1,
+ /* 10 nl */ -1,
+ /* 11 vt */ -1,
+ /* 12 np */ -1,
+ /* 13 cr */ -1,
+ /* 14 so */ 15,
+ /* 15 si */ 16,
+ /* 16 dle */ 17,
+ /* 17 dc1 */ 18,
+ /* 18 dc2 */ 19,
+ /* 19 dc3 */ 20,
+ /* 20 dc4 */ 21,
+ /* 21 nak */ 22,
+ /* 22 syn */ 23,
+ /* 23 etb */ 24,
+ /* 24 can */ 25,
+ /* 25 em */ 26,
+ /* 26 sub */ 27,
+ /* 27 esc */ 28,
+ /* 28 fs */ 29,
+ /* 29 gs */ 30,
+ /* 30 rs */ 31,
+ /* 31 us */ 32,
+ /* 32 sp */ -1,
+};
+
+#define NEXTMACROID(mid) ( \
+ (mid < NEXTMACROID_L) ? (NextMIdTable[mid]) : \
+ ((mid < NEXTMACROID_H) ? NEXTMACROID_H : (mid + 1)))
+
+int NextMacroId = 1; /* codes for long named macros */
/* see sendmail.h: Special characters in rewriting rules. */
+#else /* _FFR_MORE_MACROS */
+int NextMacroId = 0240; /* codes for long named macros */
+#define NEXTMACROID(mid) ((mid) + 1)
+#endif /* _FFR_MORE_MACROS */
/*
@@ -603,7 +662,7 @@ macid_parse(p, ep)
syserr("Macro/class name ({%s}) too long (%d chars max)",
mbuf, (int) (sizeof(mbuf) - 1));
}
- else if (mbuf[1] == '\0')
+ else if (mbuf[1] == '\0' && mbuf[0] >= 0x20)
{
/* ${x} == $x */
mid = bitidx(mbuf[0]);
@@ -627,7 +686,8 @@ macid_parse(p, ep)
else
{
MacroName[NextMacroId] = s->s_name;
- s->s_macro = mid = NextMacroId++;
+ s->s_macro = mid = NextMacroId;
+ NextMacroId = NEXTMACROID(NextMacroId);
}
}
p++;
diff --git a/contrib/sendmail/src/main.c b/contrib/sendmail/src/main.c
index c11de46..8680add 100644
--- a/contrib/sendmail/src/main.c
+++ b/contrib/sendmail/src/main.c
@@ -26,7 +26,7 @@ SM_UNUSED(static char copyright[]) =
The Regents of the University of California. All rights reserved.\n";
#endif /* ! lint */
-SM_RCSID("@(#)$Id: main.c,v 8.962 2006/12/19 19:47:37 ca Exp $")
+SM_RCSID("@(#)$Id: main.c,v 8.963 2007/06/29 20:07:37 ca Exp $")
#if NETINET || NETINET6
@@ -2362,7 +2362,33 @@ main(argc, argv, envp)
if (QueueIntvl > 0)
{
- (void) runqueue(true, false, queuepersistent, true);
+#if _FFR_RUNPQG
+ if (qgrp != NOQGRP)
+ {
+ int rwgflags = RWG_NONE;
+
+ /*
+ ** To run a specific queue group mark it to
+ ** be run, select the work group it's in and
+ ** increment the work counter.
+ */
+
+ for (i = 0; i < NumQueue && Queue[i] != NULL;
+ i++)
+ Queue[i]->qg_nextrun = (time_t) -1;
+ Queue[qgrp]->qg_nextrun = 0;
+ if (Verbose)
+ rwgflags |= RWG_VERBOSE;
+ if (queuepersistent)
+ rwgflags |= RWG_PERSISTENT;
+ rwgflags |= RWG_FORCE;
+ (void) run_work_group(Queue[qgrp]->qg_wgrp,
+ rwgflags);
+ }
+ else
+#endif /* _FFR_RUNPQG */
+ (void) runqueue(true, false, queuepersistent,
+ true);
/*
** If queuepersistent but not in daemon mode then
diff --git a/contrib/sendmail/src/map.c b/contrib/sendmail/src/map.c
index 510b7c9..4248fd9 100644
--- a/contrib/sendmail/src/map.c
+++ b/contrib/sendmail/src/map.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998-2006 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1998-2007 Sendmail, Inc. and its suppliers.
* All rights reserved.
* Copyright (c) 1992, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1992, 1993
@@ -13,7 +13,7 @@
#include <sendmail.h>
-SM_RCSID("@(#)$Id: map.c,v 8.696 2007/04/03 21:33:14 ca Exp $")
+SM_RCSID("@(#)$Id: map.c,v 8.699 2007/10/10 00:06:45 ca Exp $")
#if LDAPMAP
# include <sm/ldap.h>
@@ -3567,10 +3567,17 @@ ldapmap_lookup(map, name, av, statp)
if (VendorCode == VENDOR_SUN &&
strcmp(map->map_mname, "aliases.ldap") == 0)
{
- char answer[MAXNAME + 1];
int rc;
+#if defined(GETLDAPALIASBYNAME_VERSION) && (GETLDAPALIASBYNAME_VERSION >= 2)
+ extern char *__getldapaliasbyname();
+ char *answer;
+
+ answer = __getldapaliasbyname(name, &rc);
+#else
+ char answer[MAXNAME + 1];
rc = __getldapaliasbyname(name, answer, sizeof(answer));
+#endif
if (rc != 0)
{
if (tTd(38, 20))
@@ -3587,6 +3594,9 @@ ldapmap_lookup(map, name, av, statp)
result = map_rewrite(map, name, strlen(name), NULL);
else
result = map_rewrite(map, answer, strlen(answer), av);
+#if defined(GETLDAPALIASBYNAME_VERSION) && (GETLDAPALIASBYNAME_VERSION >= 2)
+ free(answer);
+#endif
return result;
}
#endif /* defined(SUN_EXTENSIONS) && defined(SUN_SIMPLIFIED_LDAP) && ... */
@@ -3965,17 +3975,16 @@ ldapmap_parseargs(map, args)
break;
switch (*++p)
{
- case 'N':
- map->map_mflags |= MF_INCLNULL;
- map->map_mflags &= ~MF_TRY0NULL;
+ case 'A':
+ map->map_mflags |= MF_APPEND;
break;
- case 'O':
- map->map_mflags &= ~MF_TRY1NULL;
+ case 'a':
+ map->map_app = ++p;
break;
- case 'o':
- map->map_mflags |= MF_OPTIONAL;
+ case 'D':
+ map->map_mflags |= MF_DEFER;
break;
case 'f':
@@ -3986,16 +3995,25 @@ ldapmap_parseargs(map, args)
map->map_mflags |= MF_MATCHONLY;
break;
- case 'A':
- map->map_mflags |= MF_APPEND;
+ case 'N':
+ map->map_mflags |= MF_INCLNULL;
+ map->map_mflags &= ~MF_TRY0NULL;
+ break;
+
+ case 'O':
+ map->map_mflags &= ~MF_TRY1NULL;
+ break;
+
+ case 'o':
+ map->map_mflags |= MF_OPTIONAL;
break;
case 'q':
map->map_mflags |= MF_KEEPQUOTES;
break;
- case 'a':
- map->map_app = ++p;
+ case 'S':
+ map->map_spacesub = *++p;
break;
case 'T':
@@ -4006,14 +4024,6 @@ ldapmap_parseargs(map, args)
map->map_mflags |= MF_NODEFER;
break;
- case 'S':
- map->map_spacesub = *++p;
- break;
-
- case 'D':
- map->map_mflags |= MF_DEFER;
- break;
-
case 'z':
if (*++p != '\\')
map->map_coldelim = *p;
@@ -4036,25 +4046,68 @@ ldapmap_parseargs(map, args)
break;
/* Start of ldapmap specific args */
- case 'V':
- if (*++p != '\\')
- lmap->ldap_attrsep = *p;
- else
- {
- switch (*++p)
- {
- case 'n':
- lmap->ldap_attrsep = '\n';
- break;
+ case '1':
+ map->map_mflags |= MF_SINGLEMATCH;
+ break;
- case 't':
- lmap->ldap_attrsep = '\t';
- break;
+# if _FFR_LDAP_SINGLEDN
+ case '2':
+ map->map_mflags |= MF_SINGLEDN;
+ break;
+# endif /* _FFR_LDAP_SINGLEDN */
- default:
- lmap->ldap_attrsep = '\\';
- }
+ case 'b': /* search base */
+ while (isascii(*++p) && isspace(*p))
+ continue;
+ lmap->ldap_base = p;
+ break;
+
+# if _FFR_LDAP_NETWORK_TIMEOUT
+ case 'c': /* network (connect) timeout */
+ while (isascii(*++p) && isspace(*p))
+ continue;
+ lmap->ldap_networktmo.tv_sec = atoi(p);
+ break;
+# endif /* _FFR_LDAP_NETWORK_TIMEOUT */
+
+ case 'd': /* Dn to bind to server as */
+ while (isascii(*++p) && isspace(*p))
+ continue;
+ lmap->ldap_binddn = p;
+ break;
+
+ case 'H': /* Use LDAP URI */
+# if !USE_LDAP_INIT
+ syserr("Must compile with -DUSE_LDAP_INIT to use LDAP URIs (-H) in map %s",
+ map->map_mname);
+ return false;
+# else /* !USE_LDAP_INIT */
+ if (lmap->ldap_host != NULL)
+ {
+ syserr("Can not specify both an LDAP host and an LDAP URI in map %s",
+ map->map_mname);
+ return false;
}
+ while (isascii(*++p) && isspace(*p))
+ continue;
+ lmap->ldap_uri = p;
+ break;
+# endif /* !USE_LDAP_INIT */
+
+ case 'h': /* ldap host */
+ while (isascii(*++p) && isspace(*p))
+ continue;
+ if (lmap->ldap_uri != NULL)
+ {
+ syserr("Can not specify both an LDAP host and an LDAP URI in map %s",
+ map->map_mname);
+ return false;
+ }
+ lmap->ldap_host = p;
+ break;
+
+ case 'K':
+ lmap->ldap_multi_args = true;
break;
case 'k': /* search field */
@@ -4063,22 +4116,69 @@ ldapmap_parseargs(map, args)
lmap->ldap_filter = p;
break;
- case 'v': /* attr to return */
+ case 'l': /* time limit */
while (isascii(*++p) && isspace(*p))
continue;
- lmap->ldap_attr[0] = p;
- lmap->ldap_attr[1] = NULL;
+ lmap->ldap_timelimit = atoi(p);
+ lmap->ldap_timeout.tv_sec = lmap->ldap_timelimit;
break;
- case '1':
- map->map_mflags |= MF_SINGLEMATCH;
+ case 'M': /* Method for binding */
+ while (isascii(*++p) && isspace(*p))
+ continue;
+
+ if (sm_strncasecmp(p, "LDAP_AUTH_", 10) == 0)
+ p += 10;
+
+ for (lam = LDAPAuthMethods;
+ lam != NULL && lam->lam_name != NULL; lam++)
+ {
+ if (sm_strncasecmp(p, lam->lam_name,
+ strlen(lam->lam_name)) == 0)
+ break;
+ }
+ if (lam->lam_name != NULL)
+ lmap->ldap_method = lam->lam_code;
+ else
+ {
+ /* bad config line */
+ if (!bitset(MCF_OPTFILE,
+ map->map_class->map_cflags))
+ {
+ char *ptr;
+
+ if ((ptr = strchr(p, ' ')) != NULL)
+ *ptr = '\0';
+ syserr("Method for binding must be [none|simple|krbv4] (not %s) in map %s",
+ p, map->map_mname);
+ if (ptr != NULL)
+ *ptr = ' ';
+ return false;
+ }
+ }
break;
-# if _FFR_LDAP_SINGLEDN
- case '2':
- map->map_mflags |= MF_SINGLEDN;
+ case 'n': /* retrieve attribute names only */
+ lmap->ldap_attrsonly = LDAPMAP_TRUE;
+ break;
+
+ /*
+ ** This is a string that is dependent on the
+ ** method used defined by 'M'.
+ */
+
+ case 'P': /* Secret password for binding */
+ while (isascii(*++p) && isspace(*p))
+ continue;
+ lmap->ldap_secret = p;
+ secretread = false;
+ break;
+
+ case 'p': /* ldap port */
+ while (isascii(*++p) && isspace(*p))
+ continue;
+ lmap->ldap_port = atoi(p);
break;
-# endif /* _FFR_LDAP_SINGLEDN */
/* args stolen from ldapsearch.c */
case 'R': /* don't auto chase referrals */
@@ -4089,10 +4189,6 @@ ldapmap_parseargs(map, args)
# endif /* LDAP_REFERRALS */
break;
- case 'n': /* retrieve attribute names only */
- lmap->ldap_attrsonly = LDAPMAP_TRUE;
- break;
-
case 'r': /* alias dereferencing */
while (isascii(*++p) && isspace(*p))
continue;
@@ -4163,114 +4259,33 @@ ldapmap_parseargs(map, args)
}
break;
- case 'h': /* ldap host */
- while (isascii(*++p) && isspace(*p))
- continue;
- if (lmap->ldap_uri != NULL)
- {
- syserr("Can not specify both an LDAP host and an LDAP URI in map %s",
- map->map_mname);
- return false;
- }
- lmap->ldap_host = p;
- break;
-
- case 'b': /* search base */
- while (isascii(*++p) && isspace(*p))
- continue;
- lmap->ldap_base = p;
- break;
-
- case 'p': /* ldap port */
- while (isascii(*++p) && isspace(*p))
- continue;
- lmap->ldap_port = atoi(p);
- break;
-
- case 'l': /* time limit */
- while (isascii(*++p) && isspace(*p))
- continue;
- lmap->ldap_timelimit = atoi(p);
- lmap->ldap_timeout.tv_sec = lmap->ldap_timelimit;
- break;
-
- case 'Z':
- while (isascii(*++p) && isspace(*p))
- continue;
- lmap->ldap_sizelimit = atoi(p);
- break;
-
- case 'd': /* Dn to bind to server as */
- while (isascii(*++p) && isspace(*p))
- continue;
- lmap->ldap_binddn = p;
- break;
-
- case 'M': /* Method for binding */
- while (isascii(*++p) && isspace(*p))
- continue;
-
- if (sm_strncasecmp(p, "LDAP_AUTH_", 10) == 0)
- p += 10;
-
- for (lam = LDAPAuthMethods;
- lam != NULL && lam->lam_name != NULL; lam++)
- {
- if (sm_strncasecmp(p, lam->lam_name,
- strlen(lam->lam_name)) == 0)
- break;
- }
- if (lam->lam_name != NULL)
- lmap->ldap_method = lam->lam_code;
+ case 'V':
+ if (*++p != '\\')
+ lmap->ldap_attrsep = *p;
else
{
- /* bad config line */
- if (!bitset(MCF_OPTFILE,
- map->map_class->map_cflags))
+ switch (*++p)
{
- char *ptr;
+ case 'n':
+ lmap->ldap_attrsep = '\n';
+ break;
- if ((ptr = strchr(p, ' ')) != NULL)
- *ptr = '\0';
- syserr("Method for binding must be [none|simple|krbv4] (not %s) in map %s",
- p, map->map_mname);
- if (ptr != NULL)
- *ptr = ' ';
- return false;
+ case 't':
+ lmap->ldap_attrsep = '\t';
+ break;
+
+ default:
+ lmap->ldap_attrsep = '\\';
}
}
-
break;
- /*
- ** This is a string that is dependent on the
- ** method used defined above.
- */
-
- case 'P': /* Secret password for binding */
- while (isascii(*++p) && isspace(*p))
- continue;
- lmap->ldap_secret = p;
- secretread = false;
- break;
-
- case 'H': /* Use LDAP URI */
-# if !USE_LDAP_INIT
- syserr("Must compile with -DUSE_LDAP_INIT to use LDAP URIs (-H) in map %s",
- map->map_mname);
- return false;
-# else /* !USE_LDAP_INIT */
- if (lmap->ldap_host != NULL)
- {
- syserr("Can not specify both an LDAP host and an LDAP URI in map %s",
- map->map_mname);
- return false;
- }
+ case 'v': /* attr to return */
while (isascii(*++p) && isspace(*p))
continue;
- lmap->ldap_uri = p;
+ lmap->ldap_attr[0] = p;
+ lmap->ldap_attr[1] = NULL;
break;
-# endif /* !USE_LDAP_INIT */
case 'w':
/* -w should be for passwd, -P should be for version */
@@ -4297,8 +4312,10 @@ ldapmap_parseargs(map, args)
# endif /* LDAP_VERSION_MIN */
break;
- case 'K':
- lmap->ldap_multi_args = true;
+ case 'Z':
+ while (isascii(*++p) && isspace(*p))
+ continue;
+ lmap->ldap_sizelimit = atoi(p);
break;
default:
diff --git a/contrib/sendmail/src/milter.c b/contrib/sendmail/src/milter.c
index 67d5eae..816c7bf 100644
--- a/contrib/sendmail/src/milter.c
+++ b/contrib/sendmail/src/milter.c
@@ -10,7 +10,7 @@
#include <sendmail.h>
-SM_RCSID("@(#)$Id: milter.c,v 8.267 2007/02/27 22:21:12 ca Exp $")
+SM_RCSID("@(#)$Id: milter.c,v 8.269 2007/06/06 17:26:12 ca Exp $")
#if MILTER
# include <sm/sendmail.h>
@@ -51,7 +51,8 @@ static void milter_quit_filter __P((struct milter *, ENVELOPE *));
static void milter_abort_filter __P((struct milter *, ENVELOPE *));
static void milter_send_macros __P((struct milter *, char **, int,
ENVELOPE *));
-static int milter_negotiate __P((struct milter *, ENVELOPE *));
+static int milter_negotiate __P((struct milter *, ENVELOPE *,
+ milters_T *));
static void milter_per_connection_check __P((ENVELOPE *));
static char *milter_headers __P((struct milter *, ENVELOPE *, char *));
static void milter_addheader __P((struct milter *, char *, ssize_t,
@@ -1791,41 +1792,6 @@ milter_reset_df(e)
}
/*
-** MILTER_CAN_DELRCPTS -- can any milter filters delete recipients?
-**
-** Parameters:
-** none
-**
-** Returns:
-** true if any filter deletes recipients, false otherwise
-*/
-
-bool
-milter_can_delrcpts()
-{
- bool can = false;
- int i;
-
- if (tTd(64, 10))
- sm_dprintf("milter_can_delrcpts:");
-
- for (i = 0; InputFilters[i] != NULL; i++)
- {
- struct milter *m = InputFilters[i];
-
- if (bitset(SMFIF_DELRCPT, m->mf_fflags))
- {
- can = true;
- break;
- }
- }
- if (tTd(64, 10))
- sm_dprintf("%s\n", can ? "true" : "false");
-
- return can;
-}
-
-/*
** MILTER_QUIT_FILTER -- close down a single filter
**
** Parameters:
@@ -2406,15 +2372,17 @@ milter_getsymlist(m, buf, rlen, offset)
** Parameters:
** m -- milter filter structure.
** e -- current envelope.
+** milters -- milters structure.
**
** Returns:
** 0 on success, -1 otherwise
*/
static int
-milter_negotiate(m, e)
+milter_negotiate(m, e, milters)
struct milter *m;
ENVELOPE *e;
+ milters_T *milters;
{
char rcmd;
mi_int32 fvers, fflags, pflags;
@@ -2583,6 +2551,12 @@ milter_negotiate(m, e)
milter_getsymlist(m, response, rlen, MILTER_OPTLEN);
}
+ if (bitset(SMFIF_DELRCPT, m->mf_fflags))
+ milters->mis_flags |= MIS_FL_DEL_RCPT;
+ if (!bitset(SMFIP_NORCPT, m->mf_pflags) &&
+ !bitset(SMFIP_NR_RCPT, m->mf_pflags))
+ milters->mis_flags |= MIS_FL_REJ_RCPT;
+
if (tTd(64, 5))
sm_dprintf("milter_negotiate(%s): received: version %u, fflags 0x%x, pflags 0x%x\n",
m->mf_name, m->mf_fvers, m->mf_fflags, m->mf_pflags);
@@ -3784,6 +3758,7 @@ milter_replbody(response, rlen, newfilter, e)
** Parameters:
** e -- current envelope.
** state -- return state from response.
+** milters -- milters structure.
**
** Returns:
** true iff at least one filter is active
@@ -3791,15 +3766,17 @@ milter_replbody(response, rlen, newfilter, e)
/* ARGSUSED */
bool
-milter_init(e, state)
+milter_init(e, state, milters)
ENVELOPE *e;
char *state;
+ milters_T *milters;
{
int i;
if (tTd(64, 10))
sm_dprintf("milter_init\n");
+ memset(milters, '\0', sizeof(*milters));
*state = SMFIR_CONTINUE;
if (InputFilters[0] == NULL)
{
@@ -3821,7 +3798,7 @@ milter_init(e, state)
}
if (m->mf_sock < 0 ||
- milter_negotiate(m, e) < 0 ||
+ milter_negotiate(m, e, milters) < 0 ||
m->mf_state == SMFS_ERROR)
{
if (tTd(64, 5))
diff --git a/contrib/sendmail/src/mime.c b/contrib/sendmail/src/mime.c
index 48540a0..af71d79 100644
--- a/contrib/sendmail/src/mime.c
+++ b/contrib/sendmail/src/mime.c
@@ -14,7 +14,7 @@
#include <sendmail.h>
#include <string.h>
-SM_RCSID("@(#)$Id: mime.c,v 8.146 2006/08/16 16:52:11 ca Exp $")
+SM_RCSID("@(#)$Id: mime.c,v 8.147 2007/09/26 23:29:11 ca Exp $")
/*
** MIME support.
@@ -525,10 +525,14 @@ mime8to7(mci, header, e, boundaries, flags, level)
while (sm_io_fgets(e->e_dfp, SM_TIME_DEFAULT, buf, sizeof(buf))
!= NULL)
{
- bt = mimeboundary(buf, boundaries);
- if (bt != MBT_NOTSEP)
- break;
- if (!putline(buf, mci))
+ if (!bitset(MCIF_INLONGLINE, mci->mci_flags))
+ {
+ bt = mimeboundary(buf, boundaries);
+ if (bt != MBT_NOTSEP)
+ break;
+ }
+ if (!putxline(buf, strlen(buf), mci,
+ PXLF_MAPFROM|PXLF_NOADDEOL))
goto writeerr;
}
if (sm_io_eof(e->e_dfp))
diff --git a/contrib/sendmail/src/parseaddr.c b/contrib/sendmail/src/parseaddr.c
index 9a14ec9..eca60f9 100644
--- a/contrib/sendmail/src/parseaddr.c
+++ b/contrib/sendmail/src/parseaddr.c
@@ -13,7 +13,7 @@
#include <sendmail.h>
-SM_RCSID("@(#)$Id: parseaddr.c,v 8.400 2006/12/21 00:24:06 ca Exp $")
+SM_RCSID("@(#)$Id: parseaddr.c,v 8.401 2007/09/27 23:33:59 ca Exp $")
#include <sm/sendmail.h>
#include "map.h"
@@ -217,7 +217,7 @@ parseaddr(addr, a, flags, delim, delimptr, e, isrcpt)
if (e->e_sendmode == SM_DEFER)
msg = "Deferring message until queue run";
if (tTd(20, 1))
- sm_dprintf("parseaddr: queuing message\n");
+ sm_dprintf("parseaddr: queueing message\n");
message(msg);
if (e->e_message == NULL && e->e_sendmode != SM_DEFER)
e->e_message = sm_rpool_strdup_x(e->e_rpool, msg);
diff --git a/contrib/sendmail/src/queue.c b/contrib/sendmail/src/queue.c
index e0919d5..e80a035 100644
--- a/contrib/sendmail/src/queue.c
+++ b/contrib/sendmail/src/queue.c
@@ -14,7 +14,7 @@
#include <sendmail.h>
#include <sm/sem.h>
-SM_RCSID("@(#)$Id: queue.c,v 8.972 2007/03/29 22:55:17 ca Exp $")
+SM_RCSID("@(#)$Id: queue.c,v 8.975 2007/06/18 20:08:40 ca Exp $")
#include <dirent.h>
@@ -427,7 +427,7 @@ queueup(e, announce, msync)
break;
if (LogLevel > 0 && (i % 32) == 0)
sm_syslog(LOG_ALERT, e->e_id,
- "queueup: cannot create %s, uid=%d: %s",
+ "queueup: cannot create %s, euid=%d: %s",
tf, (int) geteuid(),
sm_errstring(errno));
}
@@ -845,8 +845,8 @@ queueup(e, announce, msync)
if (bitset(H_FROM, h->h_flags))
oldstyle = false;
-
- commaize(h, h->h_value, oldstyle, &mcibuf, e);
+ commaize(h, h->h_value, oldstyle, &mcibuf, e,
+ PXLF_HEADER);
TrafficLogFile = savetrace;
}
@@ -2147,6 +2147,14 @@ run_work_group(wgrp, flags)
maxrunners = Queue[qgrp]->qg_maxqrun;
+ /*
+ ** If no runners are configured for this group but
+ ** the queue is "forced" then lets use 1 runner.
+ */
+
+ if (maxrunners == 0 && bitset(RWG_FORCE, flags))
+ maxrunners = 1;
+
/* No need to have more runners then there are jobs */
if (maxrunners > njobs)
maxrunners = njobs;
diff --git a/contrib/sendmail/src/readcf.c b/contrib/sendmail/src/readcf.c
index bd57d80..0d0849b 100644
--- a/contrib/sendmail/src/readcf.c
+++ b/contrib/sendmail/src/readcf.c
@@ -14,7 +14,7 @@
#include <sendmail.h>
#include <sm/sendmail.h>
-SM_RCSID("@(#)$Id: readcf.c,v 8.663 2006/10/05 20:58:59 ca Exp $")
+SM_RCSID("@(#)$Id: readcf.c,v 8.664 2007/07/10 17:01:22 ca Exp $")
#if NETINET || NETINET6
# include <arpa/inet.h>
@@ -2245,6 +2245,10 @@ static struct optioninfo
# define O_EIGHT_BIT_ADDR_OK 0xdf
{ "EightBitAddrOK", O_EIGHT_BIT_ADDR_OK, OI_NONE },
#endif /* _FFR_EIGHT_BIT_ADDR_OK */
+#if _FFR_ADDR_TYPE_MODES
+# define O_ADDR_TYPE_MODES 0xe0
+ { "AddrTypeModes", O_ADDR_TYPE_MODES, OI_NONE },
+#endif /* _FFR_ADDR_TYPE_MODES */
{ NULL, '\0', OI_NONE }
};
@@ -3807,6 +3811,12 @@ setoption(opt, val, safe, sticky, e)
break;
#endif /* _FFR_EIGHT_BIT_ADDR_OK */
+#if _FFR_ADDR_TYPE_MODES
+ case O_ADDR_TYPE_MODES:
+ AddrTypeModes = atobool(val);
+ break;
+#endif /* _FFR_ADDR_TYPE_MODES */
+
default:
if (tTd(37, 1))
{
diff --git a/contrib/sendmail/src/recipient.c b/contrib/sendmail/src/recipient.c
index ea30adc..4064632 100644
--- a/contrib/sendmail/src/recipient.c
+++ b/contrib/sendmail/src/recipient.c
@@ -13,7 +13,7 @@
#include <sendmail.h>
-SM_RCSID("@(#)$Id: recipient.c,v 8.348 2007/03/19 21:33:09 ca Exp $")
+SM_RCSID("@(#)$Id: recipient.c,v 8.349 2007/07/10 17:01:22 ca Exp $")
static void includetimeout __P((int));
static ADDRESS *self_reference __P((ADDRESS *));
@@ -377,6 +377,12 @@ removefromlist(list, sendq, e)
{
(void) sm_strlcpy(bufp, denlstring(list, false, true), i);
+#if _FFR_ADDR_TYPE_MODES
+ if (AddrTypeModes)
+ macdefine(&e->e_macro, A_PERM, macid("{addr_type}"),
+ "e r d");
+ else
+#endif /* _FFR_ADDR_TYPE_MODES */
macdefine(&e->e_macro, A_PERM, macid("{addr_type}"), "e r");
for (p = bufp; *p != '\0'; )
{
diff --git a/contrib/sendmail/src/sendmail.h b/contrib/sendmail/src/sendmail.h
index 51f2426..82ab6a9 100644
--- a/contrib/sendmail/src/sendmail.h
+++ b/contrib/sendmail/src/sendmail.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998-2006 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1998-2007 Sendmail, Inc. and its suppliers.
* All rights reserved.
* Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
@@ -52,7 +52,7 @@
#ifdef _DEFINE
# ifndef lint
-SM_UNUSED(static char SmailId[]) = "@(#)$Id: sendmail.h,v 8.1042 2007/02/27 22:21:13 ca Exp $";
+SM_UNUSED(static char SmailId[]) = "@(#)$Id: sendmail.h,v 8.1052 2007/10/05 23:06:30 ca Exp $";
# endif /* ! lint */
#endif /* _DEFINE */
@@ -324,7 +324,8 @@ typedef struct address ADDRESS;
(s) == QS_RETRY)
#define QS_IS_ATTEMPTED(s) ((s) == QS_QUEUEUP || \
(s) == QS_RETRY || \
- (s) == QS_SENT)
+ (s) == QS_SENT || \
+ (s) == QS_DISCARDED)
#define QS_IS_DEAD(s) ((s) >= QS_DONTSEND)
@@ -728,6 +729,7 @@ MCI
#if _FFR_IGNORE_EXT_ON_HELO
# define MCIF_HELO 0x00800000 /* we used HELO: ignore extensions */
#endif /* _FFR_IGNORE_EXT_ON_HELO */
+#define MCIF_INLONGLINE 0x01000000 /* in the middle of a long line */
#define MCIF_ONLY_EHLO 0x10000000 /* use only EHLO in smtpinit */
/* states */
@@ -824,7 +826,7 @@ extern struct hdrinfo HdrInfo[];
/* functions */
extern void addheader __P((char *, char *, int, ENVELOPE *, bool));
extern unsigned long chompheader __P((char *, int, HDR **, ENVELOPE *));
-extern bool commaize __P((HDR *, char *, bool, MCI *, ENVELOPE *));
+extern bool commaize __P((HDR *, char *, bool, MCI *, ENVELOPE *, int));
extern HDR *copyheader __P((HDR *, SM_RPOOL_T *));
extern void eatheader __P((ENVELOPE *, bool, bool));
extern char *hvalue __P((char *, HDR *));
@@ -894,6 +896,9 @@ struct envelope
char *e_bodytype; /* type of message body */
SM_FILE_T *e_dfp; /* data file */
char *e_id; /* code for this entry in queue */
+#if _FFR_SESSID
+ char *e_sessid; /* session ID for this envelope */
+#endif /* _FFR_SESSID */
int e_qgrp; /* queue group (index into queues) */
int e_qdir; /* index into queue directories */
int e_dfqgrp; /* data file queue group index */
@@ -1725,6 +1730,17 @@ struct milter
#endif /* _FFR_MILTER_CHECK */
};
+struct milters
+{
+ mi_int32 mis_flags; /* filter flags */
+};
+typedef struct milters milters_T;
+
+#define MIS_FL_NONE 0x00000000 /* no requirements... */
+#define MIS_FL_DEL_RCPT 0x00000001 /* can delete rcpt */
+#define MIS_FL_REJ_RCPT 0x00000002 /* can reject rcpt */
+
+
/* MTA flags */
# define SMF_REJECT 'R' /* Reject connection on filter fail */
# define SMF_TEMPFAIL 'T' /* tempfail connection on failure */
@@ -2082,10 +2098,7 @@ extern unsigned char tTdvect[100]; /* trace vector */
** The "no queue id" queue id for sm_syslog
*/
-#define NOQID "*~*"
-
-/* use id or NOQID (to avoid NOQUEUE in logfile) */
-#define E_ID(id) ((id) == NULL ? NOQID : (id))
+#define NOQID ""
#define CURHOSTNAME (CurHostName == NULL ? "local" : CurHostName)
@@ -2161,6 +2174,9 @@ extern unsigned char tTdvect[100]; /* trace vector */
** Global variables.
*/
+#if _FFR_ADDR_TYPE_MODES
+EXTERN bool AddrTypeModes; /* addr_type: extra "mode" information */
+#endif /* _FFR_ADDR_TYPE_MODES */
EXTERN bool AllowBogusHELO; /* allow syntax errors on HELO command */
EXTERN bool CheckAliases; /* parse addresses during newaliases */
#if _FFR_QUEUE_RUN_PARANOIA
@@ -2435,8 +2451,7 @@ extern int opencontrolsocket __P((void));
extern void milter_config __P((char *, struct milter **, int));
extern void milter_setup __P((char *));
extern void milter_set_option __P((char *, char *, bool));
-extern bool milter_can_delrcpts __P((void));
-extern bool milter_init __P((ENVELOPE *, char *));
+extern bool milter_init __P((ENVELOPE *, char *, milters_T *));
extern void milter_quit __P((ENVELOPE *));
extern void milter_abort __P((ENVELOPE *));
extern char *milter_connect __P((char *, SOCKADDR, ENVELOPE *, char *));
diff --git a/contrib/sendmail/src/sm_resolve.c b/contrib/sendmail/src/sm_resolve.c
index d2cf96d..035a9e5 100644
--- a/contrib/sendmail/src/sm_resolve.c
+++ b/contrib/sendmail/src/sm_resolve.c
@@ -46,7 +46,7 @@
# if NAMED_BIND
# include "sm_resolve.h"
-SM_RCSID("$Id: sm_resolve.c,v 8.34 2006/08/15 23:24:58 ca Exp $")
+SM_RCSID("$Id: sm_resolve.c,v 8.35 2007/06/25 16:20:14 ca Exp $")
static struct stot
{
@@ -168,6 +168,7 @@ parse_dns_reply(data, len)
int len;
{
unsigned char *p;
+ ushort ans_cnt, ui;
int status;
size_t l;
char host[MAXHOSTNAMELEN];
@@ -196,11 +197,15 @@ parse_dns_reply(data, len)
dns_free_data(r);
return NULL;
}
+
+ ans_cnt = ntohs((ushort) r->dns_r_h.ancount);
+
p += status;
GETSHORT(r->dns_r_q.dns_q_type, p);
GETSHORT(r->dns_r_q.dns_q_class, p);
rr = &r->dns_r_head;
- while (p < data + len)
+ ui = 0;
+ while (p < data + len && ui < ans_cnt)
{
int type, class, ttl, size, txtlen;
@@ -210,6 +215,7 @@ parse_dns_reply(data, len)
dns_free_data(r);
return NULL;
}
+ ++ui;
p += status;
GETSHORT(type, p);
GETSHORT(class, p);
diff --git a/contrib/sendmail/src/srvrsmtp.c b/contrib/sendmail/src/srvrsmtp.c
index 1f067b1..514a5e6 100644
--- a/contrib/sendmail/src/srvrsmtp.c
+++ b/contrib/sendmail/src/srvrsmtp.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998-2006 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1998-2007 Sendmail, Inc. and its suppliers.
* All rights reserved.
* Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
@@ -17,7 +17,7 @@
# include <libmilter/mfdef.h>
#endif /* MILTER */
-SM_RCSID("@(#)$Id: srvrsmtp.c,v 8.960 2007/02/07 20:18:47 ca Exp $")
+SM_RCSID("@(#)$Id: srvrsmtp.c,v 8.967 2007/10/01 16:22:14 ca Exp $")
#include <sm/time.h>
#include <sm/fdset.h>
@@ -349,14 +349,18 @@ static SM_DEBUG_T DebugLeakSmtp = SM_DEBUG_INITIALIZER("leak_smtp",
typedef struct
{
- bool sm_gotmail; /* mail command received */
- unsigned int sm_nrcpts; /* number of successful RCPT commands */
- bool sm_discard;
+ bool sm_gotmail; /* mail command received */
+ unsigned int sm_nrcpts; /* number of successful RCPT commands */
+ bool sm_discard;
#if MILTER
- bool sm_milterize;
- bool sm_milterlist; /* any filters in the list? */
+ bool sm_milterize;
+ bool sm_milterlist; /* any filters in the list? */
+ milters_T sm_milters;
+
+ /* e_nrcpts from envelope before recipient() call */
+ unsigned int sm_e_nrcpts_orig;
#endif /* MILTER */
- char *sm_quarmsg; /* carry quarantining across messages */
+ char *sm_quarmsg; /* carry quarantining across messages */
} SMTP_T;
static bool smtp_data __P((SMTP_T *, ENVELOPE *));
@@ -907,7 +911,7 @@ smtp(nullserver, d_flags, e)
char state;
/* initialize mail filter connection */
- smtp.sm_milterlist = milter_init(e, &state);
+ smtp.sm_milterlist = milter_init(e, &state, &smtp.sm_milters);
switch (state)
{
case SMFIR_REJECT:
@@ -1285,7 +1289,7 @@ smtp(nullserver, d_flags, e)
{
authenticating = SASL_NOT_AUTH;
- /* rfc 2254 4. */
+ /* RFC 2554 4. */
message("501 5.0.0 AUTH aborted");
RESET_SASLCONN;
continue;
@@ -1304,7 +1308,7 @@ smtp(nullserver, d_flags, e)
{
authenticating = SASL_NOT_AUTH;
- /* rfc 2254 4. */
+ /* RFC 2554 4. */
message("501 5.5.4 cannot decode AUTH parameter %s",
inp);
# if SASL >= 20000
@@ -1658,7 +1662,21 @@ smtp(nullserver, d_flags, e)
break;
}
- if (ismore)
+ /*
+ ** RFC 2554 4.
+ ** Unlike a zero-length client answer to a
+ ** 334 reply, a zero- length initial response
+ ** is sent as a single equals sign ("=").
+ */
+
+ if (ismore && *q == '=' && *(q + 1) == '\0')
+ {
+ /* will be free()d, don't use in=""; */
+ in = xalloc(1);
+ *in = '\0';
+ inlen = 0;
+ }
+ else if (ismore)
{
/* could this be shorter? XXX */
# if SASL >= 20000
@@ -2503,6 +2521,7 @@ smtp(nullserver, d_flags, e)
(void) memset(&addr_st, '\0', sizeof(addr_st));
a = NULL;
milter_rcpt_added = false;
+ smtp.sm_e_nrcpts_orig = e->e_nrcpts;
#endif
if (BadRcptThrottle > 0 &&
n_badrcpts >= BadRcptThrottle)
@@ -2558,13 +2577,18 @@ smtp(nullserver, d_flags, e)
#if MILTER
/*
** Do not expand recipients at RCPT time (in the call
- ** to recipient()). If they are expanded, it
- ** is impossible for removefromlist() to figure
- ** out the expanded members of the original
- ** recipient and mark them as QS_DONTSEND.
+ ** to recipient()) if a milter can delete or reject
+ ** a RCPT. If they are expanded, it is impossible
+ ** for removefromlist() to figure out the expanded
+ ** members of the original recipient and mark them
+ ** as QS_DONTSEND.
*/
- e->e_flags |= EF_VRFYONLY;
+ if (!(smtp.sm_milterlist && smtp.sm_milterize &&
+ !bitset(EF_DISCARD, e->e_flags)) &&
+ (smtp.sm_milters.mis_flags &
+ (MIS_FL_DEL_RCPT|MIS_FL_REJ_RCPT)) != 0)
+ e->e_flags |= EF_VRFYONLY;
milter_cmd_done = false;
milter_cmd_safe = false;
#endif /* MILTER */
@@ -2799,6 +2823,8 @@ smtp(nullserver, d_flags, e)
{
(void) removefromlist(addr, &e->e_sendqueue, e);
milter_cmd_fail = false;
+ if (smtp.sm_e_nrcpts_orig < e->e_nrcpts)
+ e->e_nrcpts = smtp.sm_e_nrcpts_orig;
}
#endif /* MILTER */
}
@@ -3557,8 +3583,19 @@ smtp_data(smtp, e)
if (aborting)
{
+ ADDRESS *q;
+
/* Log who the mail would have gone to */
logundelrcpts(e, e->e_message, 8, false);
+
+ /*
+ ** If something above refused the message, we still haven't
+ ** accepted responsibility for it. Don't send DSNs.
+ */
+
+ for (q = e->e_sendqueue; q != NULL; q = q->q_next)
+ q->q_flags &= ~Q_PINGFLAGS;
+
flush_errors(true);
buffer_errors();
goto abortmessage;
@@ -4026,8 +4063,7 @@ reset_mail_esmtp_args(e)
macdefine(&e->e_macro, A_PERM, macid("{dsn_envid}"), NULL);
/* "ret" */
- e->e_flags &= EF_RET_PARAM;
- e->e_flags &= EF_NO_BODY_RETN;
+ e->e_flags &= ~(EF_RET_PARAM|EF_NO_BODY_RETN);
macdefine(&e->e_macro, A_TEMP, macid("{dsn_ret}"), NULL);
#if SASL
diff --git a/contrib/sendmail/src/usersmtp.c b/contrib/sendmail/src/usersmtp.c
index 622bbb8..724f10c 100644
--- a/contrib/sendmail/src/usersmtp.c
+++ b/contrib/sendmail/src/usersmtp.c
@@ -13,7 +13,7 @@
#include <sendmail.h>
-SM_RCSID("@(#)$Id: usersmtp.c,v 8.469 2006/12/13 20:11:15 ca Exp $")
+SM_RCSID("@(#)$Id: usersmtp.c,v 8.470 2007/10/17 21:35:30 ca Exp $")
#include <sysexits.h>
@@ -2703,8 +2703,9 @@ smtpdata(m, mci, e, ctladdr, xstart)
}
/* terminate the message */
- if (sm_io_fprintf(mci->mci_out, SM_TIME_DEFAULT, ".%s", m->m_eol) ==
- SM_IO_EOF)
+ if (sm_io_fprintf(mci->mci_out, SM_TIME_DEFAULT, "%s.%s",
+ bitset(MCIF_INLONGLINE, mci->mci_flags) ? m->m_eol : "",
+ m->m_eol) == SM_IO_EOF)
goto writeerr;
if (TrafficLogFile != NULL)
(void) sm_io_fprintf(TrafficLogFile, SM_TIME_DEFAULT,
diff --git a/contrib/sendmail/src/util.c b/contrib/sendmail/src/util.c
index af781ef..95d2f9a 100644
--- a/contrib/sendmail/src/util.c
+++ b/contrib/sendmail/src/util.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998-2006 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1998-2007 Sendmail, Inc. and its suppliers.
* All rights reserved.
* Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
@@ -13,7 +13,7 @@
#include <sendmail.h>
-SM_RCSID("@(#)$Id: util.c,v 8.410 2006/12/18 18:36:44 ca Exp $")
+SM_RCSID("@(#)$Id: util.c,v 8.413 2007/09/26 23:29:11 ca Exp $")
#include <sm/sendmail.h>
#include <sysexits.h>
@@ -1154,7 +1154,8 @@ putxline(l, len, mci, pxflags)
/* output last part */
if (l[0] == '.' && slop == 0 &&
- bitnset(M_XDOT, mci->mci_mailer->m_flags))
+ bitnset(M_XDOT, mci->mci_mailer->m_flags) &&
+ !bitset(MCIF_INLONGLINE, mci->mci_flags))
{
if (sm_io_putc(mci->mci_out, SM_TIME_DEFAULT, '.') ==
SM_IO_EOF)
@@ -1169,7 +1170,8 @@ putxline(l, len, mci, pxflags)
else if (l[0] == 'F' && slop == 0 &&
bitset(PXLF_MAPFROM, pxflags) &&
strncmp(l, "From ", 5) == 0 &&
- bitnset(M_ESCFROM, mci->mci_mailer->m_flags))
+ bitnset(M_ESCFROM, mci->mci_mailer->m_flags) &&
+ !bitset(MCIF_INLONGLINE, mci->mci_flags))
{
if (sm_io_putc(mci->mci_out, SM_TIME_DEFAULT, '>') ==
SM_IO_EOF)
@@ -1188,13 +1190,19 @@ putxline(l, len, mci, pxflags)
if (TrafficLogFile != NULL)
(void) sm_io_putc(TrafficLogFile, SM_TIME_DEFAULT,
'\n');
- if ((!bitset(PXLF_NOADDEOL, pxflags) || !noeol) &&
- sm_io_fputs(mci->mci_out, SM_TIME_DEFAULT,
- mci->mci_mailer->m_eol) == SM_IO_EOF)
+ if ((!bitset(PXLF_NOADDEOL, pxflags) || !noeol))
{
- dead = true;
- break;
+ mci->mci_flags &= ~MCIF_INLONGLINE;
+ if (sm_io_fputs(mci->mci_out, SM_TIME_DEFAULT,
+ mci->mci_mailer->m_eol) == SM_IO_EOF)
+ {
+ dead = true;
+ break;
+ }
}
+ else
+ mci->mci_flags |= MCIF_INLONGLINE;
+
if (l < end && *l == '\n')
{
if (*++l != ' ' && *l != '\t' && *l != '\0' &&
@@ -2813,7 +2821,14 @@ count_open_connections(hostaddr)
if (hostaddr == NULL)
return 0;
- n = 0;
+
+ /*
+ ** Initialize to 1 instead of 0 because this code gets called
+ ** before proc_list_add() gets called, so we (the daemon child
+ ** for this connection) don't count ourselves.
+ */
+
+ n = 1;
for (i = 0; i < ProcListSize; i++)
{
if (ProcListVec[i].proc_pid == NO_PID)
diff --git a/contrib/sendmail/src/version.c b/contrib/sendmail/src/version.c
index 6bdfd11..ee09fc9 100644
--- a/contrib/sendmail/src/version.c
+++ b/contrib/sendmail/src/version.c
@@ -13,6 +13,6 @@
#include <sm/gen.h>
-SM_RCSID("@(#)$Id: version.c,v 8.191 2007/04/03 21:21:18 ca Exp $")
+SM_RCSID("@(#)$Id: version.c,v 8.199 2007/10/31 16:04:12 ca Exp $")
-char Version[] = "8.14.1";
+char Version[] = "8.14.2";
diff --git a/contrib/sendmail/vacation/vacation.c b/contrib/sendmail/vacation/vacation.c
index 4f31ddd..10712b8 100644
--- a/contrib/sendmail/vacation/vacation.c
+++ b/contrib/sendmail/vacation/vacation.c
@@ -20,7 +20,7 @@ SM_IDSTR(copyright,
The Regents of the University of California. All rights reserved.\n\
Copyright (c) 1983 Eric P. Allman. All rights reserved.\n")
-SM_IDSTR(id, "@(#)$Id: vacation.c,v 8.143 2006/12/19 19:00:43 ca Exp $")
+SM_IDSTR(id, "@(#)$Id: vacation.c,v 8.144 2007/05/11 18:50:36 ca Exp $")
#include <ctype.h>
@@ -46,7 +46,7 @@ uid_t RealUid;
gid_t RealGid;
char *RealUserName;
uid_t RunAsUid;
-uid_t RunAsGid;
+gid_t RunAsGid;
char *RunAsUserName;
int Verbose = 2;
bool DontInitGroups = false;
OpenPOWER on IntegriCloud