Import sendmail 8.14.2
This commit is contained in:
parent
dda9925afc
commit
ffb836234b
contrib/sendmail
CACertsINSTALLRELEASE_NOTES
cf
contrib
doc/op
editmap
include/sm
libmilter
libsm
makemap
praliases
src
Makefile.m4conf.cdeliver.cenvelope.cheaders.cmacro.cmain.cmap.cmilter.cmime.cparseaddr.cqueue.creadcf.crecipient.csendmail.8sendmail.hsm_resolve.csrvrsmtp.cusersmtp.cutil.cversion.c
vacation
@ -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.
|
||||
@ -73,73 +73,6 @@ iTMZxC4pWjmnDueb0kzHuX1qPrQAg4bTFij9rVVlYE4UAkbT
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
|
||||
Certificate:
|
||||
Data:
|
||||
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)
|
||||
@ -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-----
|
||||
|
@ -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 $
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
||||
###############
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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')
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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
|
||||
|
@ -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>
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
@ -20,7 +20,7 @@ SM_IDSTR(copyright,
|
||||
Copyright (c) 1992, 1993\n\
|
||||
The Regents of the University of California. All rights reserved.\n")
|
||||
|
||||
SM_IDSTR(id, "@(#)$Id: makemap.c,v 8.177 2004/08/03 23:57:24 ca Exp $")
|
||||
SM_IDSTR(id, "@(#)$Id: makemap.c,v 8.178 2007/05/11 18:45:39 ca Exp $")
|
||||
|
||||
|
||||
#include <sys/types.h>
|
||||
@ -42,7 +42,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;
|
||||
|
@ -20,7 +20,7 @@ SM_IDSTR(copyright,
|
||||
Copyright (c) 1988, 1993\n\
|
||||
The Regents of the University of California. All rights reserved.\n")
|
||||
|
||||
SM_IDSTR(id, "@(#)$Id: praliases.c,v 8.93 2001/09/11 04:05:07 gshapiro Exp $")
|
||||
SM_IDSTR(id, "@(#)$Id: praliases.c,v 8.94 2007/05/11 18:50:36 ca Exp $")
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <ctype.h>
|
||||
@ -45,7 +45,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;
|
||||
|
@ -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')
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
#include <sendmail.h>
|
||||
|
||||
SM_RCSID("@(#)$Id: conf.c,v 8.1128 2007/04/03 21:32:29 ca Exp $")
|
||||
SM_RCSID("@(#)$Id: conf.c,v 8.1136 2007/10/10 00:06:45 ca Exp $")
|
||||
|
||||
#include <sm/sendmail.h>
|
||||
#include <sendmail/pathnames.h>
|
||||
@ -5316,17 +5316,8 @@ sm_syslog(level, id, fmt, va_alist)
|
||||
|
||||
save_errno = errno;
|
||||
if (id == NULL)
|
||||
{
|
||||
id = "NOQUEUE";
|
||||
idlen = strlen(id) + SyslogPrefixLen;
|
||||
}
|
||||
else if (strcmp(id, NOQID) == 0)
|
||||
{
|
||||
id = "";
|
||||
idlen = SyslogPrefixLen;
|
||||
}
|
||||
else
|
||||
idlen = strlen(id) + SyslogPrefixLen;
|
||||
idlen = strlen(id) + SyslogPrefixLen;
|
||||
|
||||
buf = buf0;
|
||||
bufsize = sizeof(buf0);
|
||||
@ -6024,6 +6015,10 @@ char *OsCompileOptions[] =
|
||||
|
||||
char *FFRCompileOptions[] =
|
||||
{
|
||||
#if _FFR_ADDR_TYPE_MODES
|
||||
/* more info in {addr_type}, requires m4 changes! */
|
||||
"_FFR_ADDR_TYPE_MODES",
|
||||
#endif /* _FFR_ADDR_TYPE_MODES */
|
||||
#if _FFR_ALLOW_SASLINFO
|
||||
/* DefaultAuthInfo can be specified by user. */
|
||||
/* DefaultAuthInfo doesn't really work in 8.13 anymore. */
|
||||
@ -6094,6 +6089,10 @@ char *FFRCompileOptions[] =
|
||||
|
||||
"_FFR_DPO_CS",
|
||||
#endif /* _FFR_DPO_CS */
|
||||
#if _FFR_DPRINTF_MAP
|
||||
/* dprintf map for logging */
|
||||
"_FFR_DPRINTF_MAP",
|
||||
#endif /* _FFR_DPRINTF_MAP */
|
||||
#if _FFR_DROP_TRUSTUSER_WARNING
|
||||
/*
|
||||
** Don't issue this warning:
|
||||
@ -6222,6 +6221,10 @@ char *FFRCompileOptions[] =
|
||||
/* Old mime7to8 code, the new is broken for at least one example. */
|
||||
"_FFR_MIME7TO8_OLD",
|
||||
#endif /* _FFR_MAX_SLEEP_TIME */
|
||||
#if _FFR_MORE_MACROS
|
||||
/* allow more long macro names ("unprintable" characters). */
|
||||
"_FFR_MORE_MACROS",
|
||||
#endif /* _FFR_MORE_MACROS */
|
||||
#if _FFR_MSG_ACCEPT
|
||||
/* allow to override "Message accepted for delivery" */
|
||||
"_FFR_MSG_ACCEPT",
|
||||
@ -6235,6 +6238,10 @@ char *FFRCompileOptions[] =
|
||||
/* Disable PIPELINING, delay client if used. */
|
||||
"_FFR_NO_PIPE",
|
||||
#endif /* _FFR_NO_PIPE */
|
||||
#if _FFR_LDAP_NETWORK_TIMEOUT
|
||||
/* set LDAP_OPT_NETWORK_TIMEOUT if available (-c) */
|
||||
"_FFR_LDAP_NETWORK_TIMEOUT",
|
||||
#endif /* _FFR_LDAP_NETWORK_TIMEOUT */
|
||||
#if _FFR_LOG_NTRIES
|
||||
/* log ntries=, from Nik Clayton of FreeBSD */
|
||||
"_FFR_LOG_NTRIES",
|
||||
@ -6280,6 +6287,18 @@ char *FFRCompileOptions[] =
|
||||
/* Random shuffle for queue sorting. */
|
||||
"_FFR_RHS",
|
||||
#endif /* _FFR_RHS */
|
||||
#if _FFR_RUNPQG
|
||||
/*
|
||||
** allow -qGqueue_group -qp to work, i.e.,
|
||||
** restrict a persistent queue runner to a queue group.
|
||||
*/
|
||||
|
||||
"_FFR_RUNPQG",
|
||||
#endif /* _FFR_RUNPQG */
|
||||
#if _FFR_SESSID
|
||||
/* session id (for logging) */
|
||||
"_FFR_SESSID",
|
||||
#endif /* _FFR_SESSID */
|
||||
#if _FFR_SHM_STATUS
|
||||
/* Donated code (unused). */
|
||||
"_FFR_SHM_STATUS",
|
||||
|
@ -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 @@ deliver(e, firstto)
|
||||
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 @@ deliver(e, firstto)
|
||||
/* 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 */
|
||||
)
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -14,7 +14,7 @@
|
||||
#include <sendmail.h>
|
||||
#include <sm/sendmail.h>
|
||||
|
||||
SM_RCSID("@(#)$Id: headers.c,v 8.310 2007/02/07 22:44:35 ca Exp $")
|
||||
SM_RCSID("@(#)$Id: headers.c,v 8.312 2007/06/19 18:52:11 ca Exp $")
|
||||
|
||||
static HDR *allocheader __P((char *, char *, int, SM_RPOOL_T *, bool));
|
||||
static size_t fix_mime_header __P((HDR *, ENVELOPE *));
|
||||
@ -1865,7 +1865,8 @@ putheader(mci, hdr, e, flags)
|
||||
|
||||
if (bitset(H_FROM, h->h_flags))
|
||||
oldstyle = false;
|
||||
commaize(h, p, oldstyle, mci, e);
|
||||
commaize(h, p, oldstyle, mci, e,
|
||||
PXLF_HEADER | PXLF_STRIPMQUOTE);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1977,6 +1978,7 @@ put_vanilla_header(h, v, mci)
|
||||
** oldstyle -- true if this is an old style header.
|
||||
** mci -- the connection information.
|
||||
** e -- the envelope containing the message.
|
||||
** putflags -- flags for putxline()
|
||||
**
|
||||
** Returns:
|
||||
** true iff header field was written successfully
|
||||
@ -1986,17 +1988,17 @@ put_vanilla_header(h, v, mci)
|
||||
*/
|
||||
|
||||
bool
|
||||
commaize(h, p, oldstyle, mci, e)
|
||||
commaize(h, p, oldstyle, mci, e, putflags)
|
||||
register HDR *h;
|
||||
register char *p;
|
||||
bool oldstyle;
|
||||
register MCI *mci;
|
||||
register ENVELOPE *e;
|
||||
int putflags;
|
||||
{
|
||||
register char *obp;
|
||||
int opos, omax, spaces;
|
||||
bool firstone = true;
|
||||
int putflags = PXLF_HEADER | PXLF_STRIPMQUOTE;
|
||||
char **res;
|
||||
char obuf[MAXLINE + 3];
|
||||
|
||||
|
@ -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++;
|
||||
|
@ -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
|
||||
|
@ -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,6 +3975,26 @@ ldapmap_parseargs(map, args)
|
||||
break;
|
||||
switch (*++p)
|
||||
{
|
||||
case 'A':
|
||||
map->map_mflags |= MF_APPEND;
|
||||
break;
|
||||
|
||||
case 'a':
|
||||
map->map_app = ++p;
|
||||
break;
|
||||
|
||||
case 'D':
|
||||
map->map_mflags |= MF_DEFER;
|
||||
break;
|
||||
|
||||
case 'f':
|
||||
map->map_mflags |= MF_NOFOLDCASE;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
map->map_mflags |= MF_MATCHONLY;
|
||||
break;
|
||||
|
||||
case 'N':
|
||||
map->map_mflags |= MF_INCLNULL;
|
||||
map->map_mflags &= ~MF_TRY0NULL;
|
||||
@ -3978,24 +4008,12 @@ ldapmap_parseargs(map, args)
|
||||
map->map_mflags |= MF_OPTIONAL;
|
||||
break;
|
||||
|
||||
case 'f':
|
||||
map->map_mflags |= MF_NOFOLDCASE;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
map->map_mflags |= MF_MATCHONLY;
|
||||
break;
|
||||
|
||||
case 'A':
|
||||
map->map_mflags |= MF_APPEND;
|
||||
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,40 +4046,6 @@ 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 't':
|
||||
lmap->ldap_attrsep = '\t';
|
||||
break;
|
||||
|
||||
default:
|
||||
lmap->ldap_attrsep = '\\';
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'k': /* search field */
|
||||
while (isascii(*++p) && isspace(*p))
|
||||
continue;
|
||||
lmap->ldap_filter = p;
|
||||
break;
|
||||
|
||||
case 'v': /* attr to return */
|
||||
while (isascii(*++p) && isspace(*p))
|
||||
continue;
|
||||
lmap->ldap_attr[0] = p;
|
||||
lmap->ldap_attr[1] = NULL;
|
||||
break;
|
||||
|
||||
case '1':
|
||||
map->map_mflags |= MF_SINGLEMATCH;
|
||||
break;
|
||||
@ -4080,6 +4056,130 @@ ldapmap_parseargs(map, args)
|
||||
break;
|
||||
# endif /* _FFR_LDAP_SINGLEDN */
|
||||
|
||||
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 */
|
||||
while (isascii(*++p) && isspace(*p))
|
||||
continue;
|
||||
lmap->ldap_filter = 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 '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;
|
||||
|
||||
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;
|
||||
|
||||
/* args stolen from ldapsearch.c */
|
||||
case 'R': /* don't auto chase referrals */
|
||||
# ifdef LDAP_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:
|
||||
|
@ -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,
|
||||
@ -1790,41 +1791,6 @@ milter_reset_df(e)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
** 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
|
||||
**
|
||||
@ -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))
|
||||
|
@ -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))
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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))
|
||||
{
|
||||
|
@ -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'; )
|
||||
{
|
||||
|
@ -9,9 +9,9 @@
|
||||
.\" the sendmail distribution.
|
||||
.\"
|
||||
.\"
|
||||
.\" $Id: sendmail.8,v 8.57 2003/12/01 17:02:41 ca Exp $
|
||||
.\" $Id: sendmail.8,v 8.58 2007/08/02 05:42:33 ca Exp $
|
||||
.\"
|
||||
.TH SENDMAIL 8 "$Date: 2003/12/01 17:02:41 $"
|
||||
.TH SENDMAIL 8 "$Date: 2007/08/02 05:42:33 $"
|
||||
.SH NAME
|
||||
sendmail
|
||||
\- an electronic mail transport agent
|
||||
@ -314,7 +314,7 @@ empty in the previous queue run.
|
||||
Process saved messages in the queue once and do not fork(),
|
||||
but run in the foreground.
|
||||
.TP
|
||||
\fB\-q\fRG name
|
||||
\fB\-q\fRG\fIname\fR
|
||||
Process jobs in queue group called
|
||||
.I name
|
||||
only.
|
||||
|
@ -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 *));
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
@ -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)
|
||||
|
@ -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";
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user