This commit was generated by cvs2svn to compensate for changes in r132943,
which included commits to RCS files with non-trunk default branches.
This commit is contained in:
commit
6b3455a766
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=132944
302
contrib/sendmail/CACerts
Normal file
302
contrib/sendmail/CACerts
Normal file
@ -0,0 +1,302 @@
|
||||
# $Id: CACerts,v 8.1 2004/03/01 22:05:47 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.
|
||||
# It is useful to allow connections from those MTAs that can present
|
||||
# a certificate signed by one of these CA certificates.
|
||||
#
|
||||
|
||||
Certificate:
|
||||
Data:
|
||||
Version: 3 (0x2)
|
||||
Serial Number: 0 (0x0)
|
||||
Signature Algorithm: md5WithRSAEncryption
|
||||
Issuer: C=US, ST=California, L=Berkeley, O=Sendmail Consortium, CN=Certificate Authority/emailAddress=certificates@sendmail.org
|
||||
Validity
|
||||
Not Before: Feb 1 21:51:47 2003 GMT
|
||||
Not After : Jan 31 21:51:47 2008 GMT
|
||||
Subject: C=US, ST=California, L=Berkeley, O=Sendmail Consortium, CN=Certificate Authority/emailAddress=certificates@sendmail.org
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: rsaEncryption
|
||||
RSA Public Key: (1024 bit)
|
||||
Modulus (1024 bit):
|
||||
00:9a:fb:dc:4c:a3:58:21:1b:84:78:0a:53:56:b3:
|
||||
8d:84:05:b7:db:dd:d7:81:ea:dd:c1:ab:d4:be:d9:
|
||||
2b:12:e0:6d:3a:31:d5:f0:7b:13:fc:d8:da:09:0b:
|
||||
71:11:8e:b9:48:c4:ab:ae:f5:9c:4c:e2:04:27:8e:
|
||||
c8:03:3a:aa:00:8b:46:f2:79:09:ae:65:b2:9a:66:
|
||||
e7:ac:a9:ea:32:f7:4a:4e:fd:da:41:48:34:5a:9d:
|
||||
b0:42:ea:55:40:17:27:5e:67:9e:e5:ce:dc:84:6d:
|
||||
1d:48:37:23:11:68:9d:a8:d4:58:02:05:ea:88:35:
|
||||
bd:0d:b6:28:d5:cd:d4:d8:95
|
||||
Exponent: 65537 (0x10001)
|
||||
X509v3 extensions:
|
||||
X509v3 Subject Key Identifier:
|
||||
DE:CD:6E:B8:89:34:06:3D:E9:CD:A7:FE:45:4F:4E:FB:E1:8D:E7:79
|
||||
X509v3 Authority Key Identifier:
|
||||
keyid:DE:CD:6E:B8:89:34:06:3D:E9:CD:A7:FE:45:4F:4E:FB:E1:8D:E7:79
|
||||
DirName:/C=US/ST=California/L=Berkeley/O=Sendmail Consortium/CN=Certificate Authority/emailAddress=certificates@sendmail.org
|
||||
serial:00
|
||||
|
||||
X509v3 Basic Constraints:
|
||||
CA:TRUE
|
||||
Signature Algorithm: md5WithRSAEncryption
|
||||
66:92:b9:57:17:3b:6a:0e:72:b1:85:29:53:9f:11:68:a0:0d:
|
||||
79:43:d0:7c:48:73:b9:71:09:50:08:02:03:0b:28:0c:33:9a:
|
||||
00:ac:94:69:4f:bc:0f:45:6b:f5:3a:ca:6a:87:a1:7f:28:f7:
|
||||
9a:c4:b6:b0:f3:dc:a3:eb:42:95:9f:99:19:f8:b8:84:6d:f1:
|
||||
1d:bc:9f:f0:a0:cc:60:2d:00:6b:17:55:33:16:85:d1:73:e1:
|
||||
00:59:89:33:19:c4:2e:29:5a:39:a7:0e:e7:9b:d2:4c:c7:b9:
|
||||
7d:6a:3e:b4:00:83:86:d3:16:28:fd:ad:55:65:60:4e:14:02:
|
||||
46:d3
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDsDCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBnTELMAkGA1UEBhMCVVMx
|
||||
EzARBgNVBAgTCkNhbGlmb3JuaWExETAPBgNVBAcTCEJlcmtlbGV5MRwwGgYDVQQK
|
||||
ExNTZW5kbWFpbCBDb25zb3J0aXVtMR4wHAYDVQQDExVDZXJ0aWZpY2F0ZSBBdXRo
|
||||
b3JpdHkxKDAmBgkqhkiG9w0BCQEWGWNlcnRpZmljYXRlc0BzZW5kbWFpbC5vcmcw
|
||||
HhcNMDMwMjAxMjE1MTQ3WhcNMDgwMTMxMjE1MTQ3WjCBnTELMAkGA1UEBhMCVVMx
|
||||
EzARBgNVBAgTCkNhbGlmb3JuaWExETAPBgNVBAcTCEJlcmtlbGV5MRwwGgYDVQQK
|
||||
ExNTZW5kbWFpbCBDb25zb3J0aXVtMR4wHAYDVQQDExVDZXJ0aWZpY2F0ZSBBdXRo
|
||||
b3JpdHkxKDAmBgkqhkiG9w0BCQEWGWNlcnRpZmljYXRlc0BzZW5kbWFpbC5vcmcw
|
||||
gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJr73EyjWCEbhHgKU1azjYQFt9vd
|
||||
14Hq3cGr1L7ZKxLgbTox1fB7E/zY2gkLcRGOuUjEq671nEziBCeOyAM6qgCLRvJ5
|
||||
Ca5lsppm56yp6jL3Sk792kFINFqdsELqVUAXJ15nnuXO3IRtHUg3IxFonajUWAIF
|
||||
6og1vQ22KNXN1NiVAgMBAAGjgf0wgfowHQYDVR0OBBYEFN7NbriJNAY96c2n/kVP
|
||||
Tvvhjed5MIHKBgNVHSMEgcIwgb+AFN7NbriJNAY96c2n/kVPTvvhjed5oYGjpIGg
|
||||
MIGdMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTERMA8GA1UEBxMI
|
||||
QmVya2VsZXkxHDAaBgNVBAoTE1NlbmRtYWlsIENvbnNvcnRpdW0xHjAcBgNVBAMT
|
||||
FUNlcnRpZmljYXRlIEF1dGhvcml0eTEoMCYGCSqGSIb3DQEJARYZY2VydGlmaWNh
|
||||
dGVzQHNlbmRtYWlsLm9yZ4IBADAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUA
|
||||
A4GBAGaSuVcXO2oOcrGFKVOfEWigDXlD0HxIc7lxCVAIAgMLKAwzmgCslGlPvA9F
|
||||
a/U6ymqHoX8o95rEtrDz3KPrQpWfmRn4uIRt8R28n/CgzGAtAGsXVTMWhdFz4QBZ
|
||||
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)
|
||||
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
|
||||
Not After : May 20 00:40:50 2010 GMT
|
||||
Subject: C=US, ST=Illinois, L=De Kalb, O=Northern Illinois University, OU=Computer Science, CN=Neil Rickert/emailAddress=rickert@cs.niu.edu
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: rsaEncryption
|
||||
RSA Public Key: (1024 bit)
|
||||
Modulus (1024 bit):
|
||||
00:b1:1b:49:06:ef:3f:44:e0:93:ad:8c:a7:f7:21:
|
||||
7c:87:cb:da:35:f6:4b:a2:fd:8a:a0:07:5b:cc:6a:
|
||||
9b:89:33:fc:24:f5:b1:24:59:5a:25:50:fd:16:d7:
|
||||
d4:bc:c7:04:1d:df:90:9b:5e:c3:a8:e9:8b:7d:a3:
|
||||
5d:9a:e9:7f:e5:2b:ea:15:a7:ad:ba:58:26:0a:11:
|
||||
49:4f:da:9a:67:7f:b0:a6:66:f4:27:b6:61:4e:3c:
|
||||
c8:3e:a0:2f:6a:b4:0e:15:d6:39:f8:92:60:85:df:
|
||||
a6:34:f3:fa:a4:a5:e4:47:49:e7:87:a4:a5:5c:8e:
|
||||
6a:2f:13:76:5f:29:f3:64:73
|
||||
Exponent: 65537 (0x10001)
|
||||
X509v3 extensions:
|
||||
X509v3 Subject Key Identifier:
|
||||
B6:31:78:BB:7E:AA:4D:A1:5D:FD:A2:24:18:C6:90:5A:2D:2F:19:48
|
||||
X509v3 Authority Key Identifier:
|
||||
keyid:B6:31:78:BB:7E:AA:4D:A1:5D:FD:A2:24:18:C6:90:5A:2D:2F:19:48
|
||||
DirName:/C=US/ST=Illinois/L=De Kalb/O=Northern Illinois University/OU=Computer Science/CN=Neil Rickert/emailAddress=rickert@cs.niu.edu
|
||||
serial:00
|
||||
|
||||
X509v3 Basic Constraints:
|
||||
CA:TRUE
|
||||
Signature Algorithm: md5WithRSAEncryption
|
||||
60:69:23:65:97:51:5c:06:a4:42:cb:00:e7:9a:dc:39:70:c3:
|
||||
d3:5d:bf:0f:e0:04:54:4d:d9:dc:12:57:12:6c:67:fd:5b:b0:
|
||||
39:63:ea:c4:12:65:51:bb:3d:f1:f7:25:b4:cd:0b:f6:5b:7a:
|
||||
61:25:ad:06:0a:01:55:dc:71:05:29:0d:73:e9:30:51:be:d3:
|
||||
e1:b2:89:fc:0f:28:f7:06:75:96:1b:34:75:e0:07:e5:3b:b3:
|
||||
0b:28:24:e5:79:ea:55:39:e7:d2:ee:ec:63:b4:e4:c6:ee:cb:
|
||||
15:d0:c8:eb:3b:4f:36:10:a4:6a:c0:6b:03:e8:29:72:c7:a7:
|
||||
10:00
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIID5TCCA06gAwIBAgIBADANBgkqhkiG9w0BAQQFADCBrjELMAkGA1UEBhMCVVMx
|
||||
ETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdEZSBLYWxiMSUwIwYDVQQKExxO
|
||||
b3J0aGVybiBJbGxpbm9pcyBVbml2ZXJzaXR5MRkwFwYDVQQLExBDb21wdXRlciBT
|
||||
Y2llbmNlMRUwEwYDVQQDEwxOZWlsIFJpY2tlcnQxITAfBgkqhkiG9w0BCQEWEnJp
|
||||
Y2tlcnRAY3Mubml1LmVkdTAeFw0wMDA1MTIwMDQwNTBaFw0xMDA1MjAwMDQwNTBa
|
||||
MIGuMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0Rl
|
||||
IEthbGIxJTAjBgNVBAoTHE5vcnRoZXJuIElsbGlub2lzIFVuaXZlcnNpdHkxGTAX
|
||||
BgNVBAsTEENvbXB1dGVyIFNjaWVuY2UxFTATBgNVBAMTDE5laWwgUmlja2VydDEh
|
||||
MB8GCSqGSIb3DQEJARYScmlja2VydEBjcy5uaXUuZWR1MIGfMA0GCSqGSIb3DQEB
|
||||
AQUAA4GNADCBiQKBgQCxG0kG7z9E4JOtjKf3IXyHy9o19kui/YqgB1vMapuJM/wk
|
||||
9bEkWVolUP0W19S8xwQd35CbXsOo6Yt9o12a6X/lK+oVp626WCYKEUlP2ppnf7Cm
|
||||
ZvQntmFOPMg+oC9qtA4V1jn4kmCF36Y08/qkpeRHSeeHpKVcjmovE3ZfKfNkcwID
|
||||
AQABo4IBDzCCAQswHQYDVR0OBBYEFLYxeLt+qk2hXf2iJBjGkFotLxlIMIHbBgNV
|
||||
HSMEgdMwgdCAFLYxeLt+qk2hXf2iJBjGkFotLxlIoYG0pIGxMIGuMQswCQYDVQQG
|
||||
EwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0RlIEthbGIxJTAjBgNV
|
||||
BAoTHE5vcnRoZXJuIElsbGlub2lzIFVuaXZlcnNpdHkxGTAXBgNVBAsTEENvbXB1
|
||||
dGVyIFNjaWVuY2UxFTATBgNVBAMTDE5laWwgUmlja2VydDEhMB8GCSqGSIb3DQEJ
|
||||
ARYScmlja2VydEBjcy5uaXUuZWR1ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcN
|
||||
AQEEBQADgYEAYGkjZZdRXAakQssA55rcOXDD012/D+AEVE3Z3BJXEmxn/VuwOWPq
|
||||
xBJlUbs98fcltM0L9lt6YSWtBgoBVdxxBSkNc+kwUb7T4bKJ/A8o9wZ1lhs0deAH
|
||||
5TuzCygk5XnqVTnn0u7sY7Tkxu7LFdDI6ztPNhCkasBrA+gpcsenEAA=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Certificate:
|
||||
Data:
|
||||
Version: 3 (0x2)
|
||||
Serial Number: 0 (0x0)
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
|
||||
X509v3 Basic Constraints:
|
||||
CA:TRUE
|
||||
X509v3 Subject Alternative Name:
|
||||
email:ca+ca-rsa2003@esmtp.org
|
||||
X509v3 Issuer Alternative Name:
|
||||
email:ca+ca-rsa2003@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
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFFzCCA/+gAwIBAgIBADANBgkqhkiG9w0BAQQFADCBpTELMAkGA1UEBhMCVVMx
|
||||
EzARBgNVBAgTCkNhbGlmb3JuaWExETAPBgNVBAcTCEJlcmtlbGV5MRQwEgYDVQQK
|
||||
EwtFbmRtYWlsIE9yZzEMMAoGA1UECxMDTVRBMSIwIAYDVQQDExlDbGF1cyBBc3Nt
|
||||
YW5uIENBIFJTQSAyMDAzMSYwJAYJKoZIhvcNAQkBFhdjYStjYS1yc2EyMDAzQGVz
|
||||
bXRwLm9yZzAeFw0wMzA4MDcxNTU2NDVaFw0wNjA4MDYxNTU2NDVaMIGlMQswCQYD
|
||||
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=
|
||||
-----END CERTIFICATE-----
|
@ -241,4 +241,4 @@ Kresolve sequence dnsmx canon
|
||||
be used if set instead of LOCAL_RELAY ($R). This will be fixed in a
|
||||
future version.
|
||||
|
||||
$Revision: 8.55.2.1 $, Last updated $Date: 2002/12/18 22:38:48 $
|
||||
$Revision: 8.56 $, Last updated $Date: 2002/12/18 22:39:06 $
|
||||
|
@ -33,7 +33,7 @@ each of the following conditions is met:
|
||||
forth as paragraph 6 below, in the documentation and/or other materials
|
||||
provided with the distribution. For the purposes of binary distribution
|
||||
the "Copyright Notice" refers to the following language:
|
||||
"Copyright (c) 1998-2003 Sendmail, Inc. All rights reserved."
|
||||
"Copyright (c) 1998-2004 Sendmail, Inc. All rights reserved."
|
||||
|
||||
4. Neither the name of Sendmail, Inc. nor the University of California nor
|
||||
the names of their contributors may be used to endorse or promote
|
||||
@ -76,4 +76,4 @@ each of the following conditions is met:
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
$Revision: 8.11.2.1 $, Last updated $Date: 2003/04/19 14:30:36 $
|
||||
$Revision: 8.13 $, Last updated $Date: 2004/05/11 23:57:57 $
|
||||
|
@ -1022,4 +1022,4 @@ SIXqPke2iCW6+zdG1T/gS5T9T9/Lf2c9FQf0FjURAi3ynDA2RBLA5FDsI8v3
|
||||
=dbDm
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
$Revision: 8.13.2.4 $, Last updated $Date: 2004/01/13 21:18:06 $
|
||||
$Revision: 8.17 $, Last updated $Date: 2004/01/13 21:17:49 $
|
||||
|
@ -463,4 +463,4 @@ sendmail Source for the sendmail program itself.
|
||||
test Some test scripts (currently only for compilation aids).
|
||||
vacation Source for the vacation program. NOT PART OF SENDMAIL!
|
||||
|
||||
$Revision: 8.90.2.1 $, Last updated $Date: 2002/11/09 23:32:28 $
|
||||
$Revision: 8.91 $, Last updated $Date: 2002/11/09 23:33:07 $
|
||||
|
@ -1,11 +1,474 @@
|
||||
SENDMAIL RELEASE NOTES
|
||||
$Id: RELEASE_NOTES,v 8.1340.2.189 2004/01/18 17:50:57 ca Exp $
|
||||
$Id: RELEASE_NOTES,v 8.1679 2004/07/30 18:03:07 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.13.1/8.13.1 2004/07/30
|
||||
Using the default AliasFile ldap: specification would cause the
|
||||
objectClasses of the LDAP response to be included in the
|
||||
alias expansion. Problem noted by Brenden Conte of
|
||||
Rensselaer Polytechnic Institute.
|
||||
Fix support for a fallback smart host for system where DNS is
|
||||
(partially) available. From John Beck of Sun Microsystems.
|
||||
Fix SuperSafe=PostMilter behavior when a milter replaces a body
|
||||
but the data file is not yet stored on disk because it is
|
||||
smaller than the size of the memory buffer. Problem noted
|
||||
by David Russell.
|
||||
Fix certificate revocation list support; if a CRL was specified
|
||||
but the other side presented a cert that was signed by
|
||||
a different (trusted) CA than the one which issued the CRL,
|
||||
verification would always fail. Problem noted by Al Smith.
|
||||
Run mailer programs as the RunAsUser when RunAsUser is set and
|
||||
the F=S mailer flag is set without a U= mailer equate.
|
||||
Problem noted by John Gardiner Myers of Proofpoint.
|
||||
${nbadrcpts} was off by one if BadRcptThrottle is zero.
|
||||
Patch from Sung-hoon Choi of DreamWiz Inc.
|
||||
CONFIG: Emit a warning if FEATURE(`access_db') is used after
|
||||
FEATURE(`greet_pause') because then the latter will not
|
||||
use the access map. Note: if no default value is given
|
||||
for FEATURE(`greet_pause') then it issues an error if
|
||||
FEATURE(`access_db') is not specified before it.
|
||||
Problem noted by Alexander Dalloz of University of
|
||||
Bielefeld.
|
||||
CONFIG: Invoke ruleset Local_greet_pause if FEATURE(`greet_pause')
|
||||
is used to give more flexibility for local changes.
|
||||
Portability:
|
||||
Fix a 64 bit problem in the socket map code. Problem
|
||||
noted by Geoff Adams.
|
||||
NetBSD 2.0F has closefrom(3). Patch from Andrew Brown.
|
||||
NetBSD can use sysctl(3) to get the number of CPUs in
|
||||
a system. Patch from Andrew Brown.
|
||||
Add a README file in doc/op/ to explain potential
|
||||
incompatibilities with various *roff related
|
||||
tools. Problem tracked down by Per Hedeland.
|
||||
New Files:
|
||||
doc/op/README
|
||||
|
||||
8.13.0/8.13.0 2004/06/20
|
||||
Do not include AUTH data in a bounce to avoid leaking confidential
|
||||
information. See also cf/README about MSP and the section
|
||||
"Providing SMTP AUTH Data when sendmail acts as Client".
|
||||
Problem noted by Neil Rickert of Northern Illinois
|
||||
University.
|
||||
Fix compilation error in libsm/clock.c for -D_FFR_SLEEP_USE_SELECT=n
|
||||
and -DSM_CONF_SETITIMER=0. Problem noted by Juergen Georgi
|
||||
of RUS University of Stuttgart.
|
||||
Fix bug in conversion from 8bit to quoted-printable. Problem found
|
||||
by Christof Haerens, patch from Per Hedeland.
|
||||
Add support for LDAP recursion based on types given to attribute
|
||||
specifications in an LDAP map definition. This allows
|
||||
LDAP queries to return a new query, a DN, or an LDAP
|
||||
URL which will in turn be queried. See the ``LDAP
|
||||
Recursion'' section of doc/op/op.me for more information.
|
||||
Based on patch from Andrew Baucom.
|
||||
Extend the default LDAP specifications for AliasFile
|
||||
(O AliasFile=ldap:) and file classes (F{X}@LDAP) to
|
||||
include support for LDAP recursion via new attributes.
|
||||
See ``USING LDAP FOR ALIASES, MAPS, and CLASSES'' section
|
||||
of cf/README for more information.
|
||||
New option for LDAP maps: the -w option allows you to specify the
|
||||
LDAP API/protocol version to use. The default depends on
|
||||
the LDAP library.
|
||||
New option for LDAP maps: the -H option allows you to specify an
|
||||
LDAP URI instead of specifying the LDAP server via -h host
|
||||
and -p port. This also allows for the use of LDAP over
|
||||
SSL and connections via named sockets if your LDAP
|
||||
library supports it.
|
||||
New compile time flag SM_CONF_LDAP_INITIALIZE: set this if
|
||||
ldap_initialize(3) is available (and LDAPMAP is set).
|
||||
If MaxDaemonChildren is set and a command is repeated too often
|
||||
during a SMTP session then terminate it just like it is
|
||||
done for too many bad SMTP commands.
|
||||
Basic connection rate control support has been added: the daemon
|
||||
maintains the number of incoming connections per client
|
||||
IP address and total in the macros {client_rate} and
|
||||
{total_rate}, respectively. These macros can be used
|
||||
in the cf file to impose connection rate limits.
|
||||
A new option ConnectionRateWindowSize (default: 60s)
|
||||
determines the length of the interval for which the
|
||||
number of connections is stored. Based on patch from
|
||||
Jose Marcio Martins da Cruz, Ecole des Mines de Paris.
|
||||
Add optional protection from open proxies and SMTP slammers which
|
||||
send SMTP traffic without waiting for the SMTP greeting.
|
||||
If enabled by the new ruleset greet_pause (see
|
||||
FEATURE(`greet_pause')), sendmail will wait the specified
|
||||
amount of time before sending the initial 220 SMTP
|
||||
greeting. If any traffic is received before then, a 554
|
||||
SMTP response is sent and all SMTP commands are rejected
|
||||
during that connection.
|
||||
If 32 NOOP (or unknown/bad) commands are issued by a client the SMTP
|
||||
server could sleep for a very long time. Fix based on
|
||||
patch from Tadashi Kobayashi of IIJ.
|
||||
Fix a potential memory leak in persistent queue runners if the
|
||||
number of entries in the queue exceeds the limit of jobs.
|
||||
Problem noted by Steve Hubert of University of Washington.
|
||||
Do not use 4.7.1 as enhanced status code because some broken systems
|
||||
misinterpret it as a permanent error.
|
||||
New value for SuperSafe: PostMilter which will delay fsync() until
|
||||
all milters accepted the mail. This can increase
|
||||
performance if many mails are rejected by milters due to
|
||||
body scans. Based on patch from David F. Skoll.
|
||||
New macro {msg_id} which contains the value of the Message-Id:
|
||||
header, whether provided by the client or generated by
|
||||
sendmail.
|
||||
New macro {client_connections} which contains the number of open
|
||||
connections in the SMTP server for the client IP address.
|
||||
Based on patch from Jose Marcio Martins da Cruz, Ecole des
|
||||
Mines de Paris.
|
||||
sendmail will now remove its pidfile when it exits. This was done
|
||||
to prevent confusion caused by running sendmail stop
|
||||
scripts two or more times, where the second and subsequent
|
||||
runs would report misleading error messages about sendmail's
|
||||
pid no longer existing. See section 1.3.15 of doc/op/op.me
|
||||
for a discussion of the implications of this, including
|
||||
how to correct broken scripts which may have depended on
|
||||
the old behavior. From John Beck of Sun Microsystems.
|
||||
Support per-daemon input filter lists which override the default
|
||||
filter list specified in InputMailFilters. The filters
|
||||
can be listed in the I= equate of DaemonPortOptions.
|
||||
Do not add all domain prefixes of the hostname to class 'w'. If
|
||||
your configuration relies on this behavior, you have to
|
||||
add those names to class 'w' yourself. Problem noted
|
||||
by Sander Eerkes.
|
||||
Support message quarantining in the mail queue. Quarantined
|
||||
messages are not run on normal queue displays or runs
|
||||
unless specifically requested with -qQ. Quarantined queue
|
||||
files are named with an hf prefix instead of a qf prefix.
|
||||
The -q command line option now can specify which queue to display
|
||||
or run. -qQ operates on quarantined queue items. -qL
|
||||
operates on lost queue items.
|
||||
Restricted mail queue runs and displays can be done based on the
|
||||
quarantined reason using -qQtext to run or display
|
||||
quarantined items if the quarantine reason contains the
|
||||
given text. Similarly, -q!Qtext will run or display
|
||||
quarantined items which do not have the given text in the
|
||||
quarantine reason.
|
||||
Items in the queue can be quarantined or unquarantined using the
|
||||
new -Q option. See doc/op/op.me for more information.
|
||||
When displaying the quarantine mailq with 'mailq -qQ', the
|
||||
quarantine reason is shown in a new line prefixed by
|
||||
"QUARANTINE:".
|
||||
A new error code for the $#error mailer, $@ quarantine, can be used
|
||||
to quarantine messages in check_* (except check_compat) and
|
||||
header check rulesets. The $: of the mailer triplet will
|
||||
be used for the quarantine reason.
|
||||
Add a new quarantine count to the mailstats collected.
|
||||
Add a new macro ${quarantine} which is the quarantine reason for a
|
||||
message if it is quarantined.
|
||||
New map type "socket" for a trivial query protocol over UNIX domain
|
||||
or TCP sockets (requires compile time option SOCKETMAP).
|
||||
See sendmail/README and doc/op/op.me for details as well as
|
||||
socketmapServer.pl and socketmapClient.pl in contrib.
|
||||
Code donated by Bastiaan Bakker of LifeLine Networks.
|
||||
Define new macro ${client_ptr} which holds the result of the PTR
|
||||
lookup for the client IP address. Note: this is the same
|
||||
as ${client_name} if and only if ${client_resolve} is OK.
|
||||
Add a new macro ${nbadrcpts} which contains the number of bad
|
||||
recipients received so far in a transaction.
|
||||
Call check_relay with the value of ${client_name} to deal with bogus
|
||||
DNS entries. See also FEATURE(`use_client_ptr'). Problem
|
||||
noted by Kai Schlichting.
|
||||
Treat Delivery-Receipt-To: headers the same as Return-Receipt-To:
|
||||
headers (turn them into DSNs). Delivery-Receipt-To: is
|
||||
apparently used by SIMS (Sun Internet Mail System).
|
||||
Enable connection caching for LPC mailers. Patch from Christophe
|
||||
Wolfhugel of France Telecom Oleane.
|
||||
Do not silently truncate long strings in address rewriting.
|
||||
Add support for Cyrus SASL version 2. From Kenneth Murchison of
|
||||
Oceana Matrix Ltd.
|
||||
Add a new AuthOption=m flag to require the use of mechanisms which
|
||||
support mutual authentication. From Kenneth Murchison of
|
||||
Oceana Matrix Ltd.
|
||||
Fix logging of TLS related problems (introduced in 8.12.11).
|
||||
The macros {auth_author} and {auth_authen} are stored in xtext
|
||||
format just like the STARTTLS related macros to avoid
|
||||
problems with parsing them. Problem noted by Pierangelo
|
||||
Masarati of SysNet s.n.c.
|
||||
New option AuthRealm to set the authentication realm that is
|
||||
passed to the Cyrus SASL library. Patch from Gary Mills
|
||||
of the University of Manitoba.
|
||||
Enable AUTH mechanism EXTERNAL if STARTTLS verification was
|
||||
successful, otherwise relaying would be allowed if
|
||||
EXTERNAL is listed in TRUST_AUTH_MECH() and STARTTLS
|
||||
is active.
|
||||
Add basic support for certificate revocation lists. Note: if a
|
||||
CRLFile is specified but the file is unusable, STARTTLS
|
||||
is disabled. Based on patch by Ralf Hornik.
|
||||
Enable workaround for inconsistent Cyrus SASLv1 API for mechanisms
|
||||
DIGEST-MD5 and LOGIN.
|
||||
Write pid to file also if sendmail only acts as persistent queue
|
||||
runner. Proposed by Gary Mills of the University of Manitoba.
|
||||
Keep daemon pid file(s) locked so other daemons don't try to
|
||||
overwrite each other's pid files.
|
||||
Increase maximum length of logfile fields for {cert_subject} and
|
||||
{cert_issuer} from 128 to 256. Requested by Christophe
|
||||
Wolfhugel of France Telecom.
|
||||
Log the TLS verification message on the STARTTLS= log line at
|
||||
LogLevel 12 or higher.
|
||||
If the MSP is invoked with the verbose option (-v) then it will
|
||||
try to use the SMTP command VERB to propagate this option
|
||||
to the MTA which in turn will show the delivery just like
|
||||
it was done before the default 8.12 separation of MSP and
|
||||
MTA. Based on patch by Per Hedeland.
|
||||
If a daemon is refusing connections for longer than the time specified
|
||||
by the new option RejectLogInterval (default: 3 hours) due
|
||||
to high load, log this information. Patch from John Beck
|
||||
of Sun Microsystems.
|
||||
Remove the ability for non-trusted users to raise the value of
|
||||
CheckpointInterval on the command line.
|
||||
New mailer flag 'B' to strip leading backslashes, which is a
|
||||
subset of the functionality of the 's' flag.
|
||||
New mailer flag 'W' to ignore long term host status information.
|
||||
Patch from Juergen Georgi of RUS University of Stuttgart.
|
||||
Enable generic mail filter API (milter) by default. To turn
|
||||
it off, add -DMILTER=0 to the compile time options.
|
||||
An internal SMTP session discard flag was lost after an RSET/HELO/EHLO
|
||||
causing subsequent messages to be sent instead of being
|
||||
discarded. This also caused milter callbacks to be called
|
||||
out of order after the SMTP session was reset.
|
||||
New option RequiresDirfsync to turn off the compile time flag
|
||||
REQUIRES_DIR_FSYNC at runtime. See sendmail/README for
|
||||
further information.
|
||||
New command line option -D logfile to send debug output to
|
||||
the indicated log file instead of stdout.
|
||||
Add Timeout.queuereturn.dsn and Timeout.queuewarn.dsn to control
|
||||
queue return and warning times for delivery status
|
||||
notifications.
|
||||
New queue sort order option: 'n'one for not sorting the queue entries
|
||||
at all.
|
||||
Several more return values for ruleset srv_features have been added
|
||||
to enable/disable certain features in the server per
|
||||
connection. See doc/op/op.me for details.
|
||||
Support for SMTP over SSL (smtps), activated by Modifier=s
|
||||
for DaemonPortOptions.
|
||||
Continue with DNS lookups on ECONNREFUSED and TRY_AGAIN when
|
||||
trying to canonify hostnames. Suggested by Neil Rickert
|
||||
of Northern Illinois University.
|
||||
Add support for a fallback smart host (option FallbackSmartHost) to
|
||||
be tried as a last resort after all other fallbacks. This
|
||||
is designed for sites with partial DNS (e.g., an accurate
|
||||
view of inside the company, but an incomplete view of
|
||||
outside). From John Beck of Sun Microsystems.
|
||||
Enable timeout for STARTTLS even if client does not start the TLS
|
||||
handshake. Based on patch by Andrey J. Melnikoff.
|
||||
Remove deprecated -v option for PH map, use -k instead. Patch from
|
||||
Mark Roth of the University of Illinois at Urbana-Champaign.
|
||||
libphclient is version 1.2.x by default, if version 1.1.x is required
|
||||
then compile with -DNPH_VERSION=10100. Patch from Mark Roth
|
||||
of the University of Illinois at Urbana-Champaign.
|
||||
Add Milter.macros.eom, allowing macros to be sent to milter
|
||||
applications for use in the xxfi_eom() callback.
|
||||
New macro {time} which contains the output of the time(3) function,
|
||||
i.e., the number of seconds since 0 hours, 0 minutes,
|
||||
0 seconds, January 1, 1970, Coordinated Universal Time (UTC).
|
||||
If check_relay sets the reply code to "421" the SMTP server will
|
||||
terminate the SMTP session with a 421 error message.
|
||||
Get rid of dead code that tried to access the environment variable
|
||||
HOSTALIASES.
|
||||
Deprecate the use of ErrorMode=write. To enable this in 8.13
|
||||
compile with -DUSE_TTYPATH=1.
|
||||
Header check rulesets using $>+ (do not strip comments) will get
|
||||
the header value passed in without balancing quotes,
|
||||
parentheses, and angle brackets. Based on patch from
|
||||
Oleg Bulyzhin.
|
||||
Do not complain and fix up unbalanced quotes, parentheses, and
|
||||
angle brackets when reading in rulesets. This allows
|
||||
rules to be written for header checks to catch strings
|
||||
that contain quotes, parentheses, and/or angle brackets.
|
||||
Based on patch from Oleg Bulyzhin.
|
||||
Do not close socket when accept(2) in the daemon encounters
|
||||
some temporary errors like ECONNABORTED.
|
||||
Added list of CA certificates that are used by members of the
|
||||
sendmail consortium, see CACerts.
|
||||
Portability:
|
||||
Two new compile options have been added:
|
||||
HASCLOSEFROM System has closefrom(3).
|
||||
HASFDWALK System has fdwalk(3).
|
||||
Based on patch from John Beck of Sun Microsystems.
|
||||
The Linux kernel version 2.4 series has a broken flock() so
|
||||
change to using fcntl() locking until they can fix
|
||||
it. Be sure to update other sendmail related
|
||||
programs to match locking techniques.
|
||||
New compile time option NEEDINTERRNO which should be set
|
||||
if <errno.h> does not declare errno itself.
|
||||
Support for UNICOS/mk and UNICOS/mp added, some changes for
|
||||
UNICOS. Patches contributed by Aaron Davis and
|
||||
Brian Ginsbach, Cray Inc., and Manu Mahonen of
|
||||
Center for Scientific Computing.
|
||||
Add support for Darwin 7.0/Mac OS X 10.3 (a.k.a. Panther).
|
||||
Extend support to Darwin 7.x/Mac OS X 10.3 (a.k.a. Panther).
|
||||
Remove path from compiler definition for Interix because
|
||||
Interix 3.0 and 3.5 put gcc in different locations.
|
||||
Also use <sys/mkdev.h> to get the correct
|
||||
major()/minor() definitions. Based on feedback
|
||||
from Mark Funkenhauser.
|
||||
CONFIG: Add support for LDAP recursion to the default LDAP searches
|
||||
for maps via new attributes. See the ``USING LDAP FOR
|
||||
ALIASES, MAPS, and CLASSES'' section of cf/README and
|
||||
cf/sendmail.schema for more information.
|
||||
CONFIG: Make sure confTRUSTED_USER is valid even if confRUN_AS_USER
|
||||
is of the form "user:group" when used for submit.mc.
|
||||
Problem noted by Carsten P. Gehrke, patch from Neil Rickert
|
||||
of Northern Illinois University.
|
||||
CONFIG: Add a new access DB value of QUARANTINE:reason which
|
||||
instructs the check_* (except check_compat) to quarantine
|
||||
the message using the given reason.
|
||||
CONFIG: Use "dns -R A" as map type for dnsbl (just as for enhdnsbl)
|
||||
instead of "host" to avoid problem with looking up other
|
||||
DNS records than just A.
|
||||
CONFIG: New option confCONNECTION_RATE_WINDOW_SIZE to define the
|
||||
length of the interval for which the number of incoming
|
||||
connections is maintained.
|
||||
CONFIG: New FEATURE(`ratecontrol') to set the limits for connection
|
||||
rate control for individual hosts or nets.
|
||||
CONFIG: New FEATURE(`conncontrol') to set the limits for the
|
||||
number of open SMTP connections for individual hosts or nets.
|
||||
CONFIG: New FEATURE(`greet_pause') enables open proxy and SMTP
|
||||
slamming protection described above. The feature can
|
||||
take an argument specifying the milliseconds to wait and/or
|
||||
use the access database to look the pause time based on
|
||||
client hostname, domain, IP address, or subnet.
|
||||
CONFIG: New FEATURE(`use_client_ptr') to have check_relay use
|
||||
$&{client_ptr} as its first argument. This is useful for
|
||||
rejections based on the unverified hostname of client,
|
||||
which turns on the same behavior as in earlier sendmail
|
||||
versions when delay_checks was not in use. See also entry
|
||||
above about check_relay being invoked with ${client_name}.
|
||||
CONFIG: New option confREJECT_LOG_INTERVAL to specify the log
|
||||
interval when refusing connections for this long.
|
||||
CONFIG: Remove quotes around usage of confREJECT_MSG; in some cases
|
||||
this requires a change in a mc file. Requested by
|
||||
Ted Roberts of Electronic Data Systems.
|
||||
CONFIG: New option confAUTH_REALM to set the authentication realm
|
||||
that is passed to the Cyrus SASL library. Patch from
|
||||
Gary Mills of the University of Manitoba.
|
||||
CONFIG: Rename the (internal) classes {tls}/{src} to {Tls}/{Src}
|
||||
to follow the naming conventions.
|
||||
CONFIG: Add a third optional argument to local_lmtp to specify
|
||||
the A= argument.
|
||||
CONFIG: Remove the f flag from the default mailer flags of
|
||||
local_lmtp.
|
||||
CONFIG: New option confREQUIRES_DIR_FSYNC to turn off the compile
|
||||
time flag REQUIRES_DIR_FSYNC at runtime.
|
||||
CONFIG: New LOCAL_UUCP macro to insert rules into the generated
|
||||
cf file at the same place where MAILER(`uucp') inserts
|
||||
its rules.
|
||||
CONFIG: New options confTO_QUEUERETURN_DSN and confTO_QUEUEWARN_DSN
|
||||
to control queue return and warning times for delivery
|
||||
status notifications.
|
||||
CONFIG: New option confFALLBACK_SMARTHOST to define FallbackSmartHost.
|
||||
CONFIG: Add the mc file which has been used to create the cf
|
||||
file to the end of the cf file when using make in cf/cf/.
|
||||
Patch from Richard Rognlie.
|
||||
CONFIG: FEATURE(nodns) has been removed, it was a no-op since 8.9.
|
||||
Use ServiceSwitchFile to turn off DNS lookups, see
|
||||
doc/op/op.me.
|
||||
CONFIG: New option confMILTER_MACROS_EOM (sendmail Milter.macros.eom
|
||||
option) defines macros to be sent to milter applications for
|
||||
use in the xxfi_eom() callback.
|
||||
CONFIG: New option confCRL to specify file which contains
|
||||
certificate revocations lists.
|
||||
CONFIG: Add a new value (sendertoo) for the third argument to
|
||||
FEATURE(`ldap_routing') which will reject the SMTP
|
||||
MAIL From: command if the sender address doesn't exist
|
||||
in LDAP. See cf/README for more information.
|
||||
CONFIG: Add a fifth argument to FEATURE(`ldap_routing') which
|
||||
instructs the rulesets on whether or not to do a domain
|
||||
lookup if a full address lookup doesn't match. See cf/README
|
||||
for more information.
|
||||
CONFIG: Add a sixth argument to FEATURE(`ldap_routing') which
|
||||
instructs the rulesets on whether or not to queue the mail
|
||||
or give an SMTP temporary error if the LDAP server can't be
|
||||
reached. See cf/README for more information. Based on
|
||||
patch from Billy Ray Miller of Caterpillar.
|
||||
CONFIG: Experimental support for MTAMark, see cf/README for details.
|
||||
CONFIG: New option confMESSAGEID_HEADER to define a different
|
||||
Message-Id: header format. Patch from Bastiaan Bakker
|
||||
of LifeLine Networks.
|
||||
CONTRIB: New version of cidrexpand which uses Net::CIDR. From
|
||||
Derek J. Balling.
|
||||
CONTRIB: oldbind.compat.c has been removed due to security problems.
|
||||
Found by code inspection done by Reasoning, Inc.
|
||||
DEVTOOLS: Add an example file for devtools/Site/, contributed
|
||||
by Neil Rickert of Northern Illinois University.
|
||||
LIBMILTER: Add new function smfi_quarantine() which allows the
|
||||
filter's EOM routine to quarantine the current message.
|
||||
Filters which use this function must include the
|
||||
SMFIF_QUARANTINE flag in the registered smfiDesc structure.
|
||||
LIBMILTER: If a milter sets the reply code to "421", the SMTP server
|
||||
will terminate the SMTP session with that error.
|
||||
LIBMILTER: Upon filter shutdown, libmilter will not remove a
|
||||
named socket in the file system if it is running as root.
|
||||
LIBMILTER: Add new function smfi_progress() which allows the filter
|
||||
to notify the MTA that an EOM operation is still in progress,
|
||||
resetting the timeout.
|
||||
LIBMILTER: Add new function smfi_opensocket() which allows the filter
|
||||
to attempt to establish the interface socket, and detect
|
||||
failure to do so before calling smfi_main().
|
||||
LIBMILTER: Add new function smfi_setmlreply() which allows the
|
||||
filter to return a multi-line SMTP reply.
|
||||
LIBMILTER: Deal with more temporary errors in accept() by ignoring
|
||||
them instead of stopping after too many occurred.
|
||||
Suggested by James Carlson of Sun Microsystems.
|
||||
LIBMILTER: Fix a descriptor leak in the sample program found in
|
||||
docs/sample.html. Reported by Dmitry Adamushko.
|
||||
LIBMILTER: The sample program also needs to use SMFIF_ADDRCPT.
|
||||
Reported by Carl Byington of 510 Software Group.
|
||||
LIBMILTER: Document smfi_stop() and smfi_setdbg(). Patches
|
||||
from Bryan Costales.
|
||||
LIBMILTER: New compile time option SM_CONF_POLL; define this if
|
||||
poll(2) should be used instead of select(2).
|
||||
LIBMILTER: New function smfi_insheader() and related protocol
|
||||
amendments to support header insertion operations.
|
||||
MAIL.LOCAL: Add support for hashed mail directories, see
|
||||
mail.local/README. Contributed by Chris Adams of HiWAAY
|
||||
Informations Services.
|
||||
MAILSTATS: Display quarantine message counts.
|
||||
MAKEMAP: Add new flag -D to specify the comment character to use
|
||||
instead of '#'.
|
||||
VACATION: Add new flag -j to auto-respond to messages regardless of
|
||||
whether or not the recipient is listed in the To: or Cc:
|
||||
headers.
|
||||
VACATION: Add new flag -R to specify the envelope sender address
|
||||
for the auto-response message.
|
||||
New Files:
|
||||
CACerts
|
||||
cf/feature/conncontrol.m4
|
||||
cf/feature/greet_pause.m4
|
||||
cf/feature/mtamark.m4
|
||||
cf/feature/ratecontrol.m4
|
||||
cf/feature/use_client_ptr.m4
|
||||
cf/ostype/unicos.m4
|
||||
cf/ostype/unicosmk.m4
|
||||
cf/ostype/unicosmp.m4
|
||||
contrib/socketmapClient.pl
|
||||
contrib/socketmapServer.pl
|
||||
devtools/OS/Darwin.7.0
|
||||
devtools/OS/UNICOS-mk
|
||||
devtools/OS/UNICOS-mp
|
||||
devtools/Site/site.config.m4.sample
|
||||
include/sm/os/sm_os_unicos.h
|
||||
include/sm/os/sm_os_unicosmk.h
|
||||
include/sm/os/sm_os_unicosmp.h
|
||||
libmilter/docs/smfi_insheader.html
|
||||
libmilter/docs/smfi_progress.html
|
||||
libmilter/docs/smfi_quarantine.html
|
||||
libmilter/docs/smfi_setdbg.html
|
||||
libmilter/docs/smfi_setmlreply.html
|
||||
libmilter/docs/smfi_stop.html
|
||||
sendmail/ratectrl.c
|
||||
Deleted Files:
|
||||
cf/feature/nodns.m4
|
||||
contrib/oldbind.compat.c
|
||||
devtools/OS/CRAYT3E.2.0.x
|
||||
devtools/OS/CRAYTS.10.0.x
|
||||
libsm/vsprintf.c
|
||||
Renamed Files:
|
||||
devtools/OS/Darwin.7.0 => devtools/OS/Darwin.7.x
|
||||
|
||||
8.12.11/8.12.11 2004/01/18
|
||||
Use QueueFileMode when opening qf files. This error was a
|
||||
regression in 8.12.10. Problem detected and diagnosed
|
||||
|
@ -28,6 +28,7 @@ MASQUERADING AND RELAYING
|
||||
USING LDAP FOR ALIASES, MAPS, AND CLASSES
|
||||
LDAP ROUTING
|
||||
ANTI-SPAM CONFIGURATION CONTROL
|
||||
CONNECTION CONTROL
|
||||
STARTTLS
|
||||
SMTP AUTHENTICATION
|
||||
ADDING NEW MAILERS OR RULESETS
|
||||
@ -76,7 +77,7 @@ Let's examine a typical .mc file:
|
||||
|
||||
divert(-1)
|
||||
#
|
||||
# Copyright (c) 1998-2002 Sendmail, Inc. and its suppliers.
|
||||
# Copyright (c) 1998-2004 Sendmail, Inc. and its suppliers.
|
||||
# All rights reserved.
|
||||
# Copyright (c) 1983 Eric P. Allman. All rights reserved.
|
||||
# Copyright (c) 1988, 1993
|
||||
@ -130,8 +131,8 @@ definition appropriate for your environment.
|
||||
|
||||
These describe the mailers used at the default CS site. The local
|
||||
mailer is always included automatically. Beware: MAILER declarations
|
||||
should always be at the end of the configuration file. The general
|
||||
rules are that the order should be:
|
||||
should only be followed by LOCAL_* sections. The general rules are
|
||||
that the order should be:
|
||||
|
||||
VERSIONID
|
||||
OSTYPE
|
||||
@ -1051,6 +1052,12 @@ local_lmtp Use an LMTP capable local mailer. The argument to this
|
||||
LMTP capable. The path to mail.local is set by the
|
||||
confEBINDIR m4 variable -- making the default
|
||||
LOCAL_MAILER_PATH /usr/libexec/mail.local.
|
||||
If a different LMTP capable mailer is used, its pathname
|
||||
can be specified as second parameter and the arguments
|
||||
passed to it (A=) as third parameter, e.g.,
|
||||
|
||||
FEATURE(`local_lmtp', `/usr/local/bin/lmtp', `lmtp')
|
||||
|
||||
WARNING: This feature sets LOCAL_MAILER_FLAGS unconditionally,
|
||||
i.e., without respecting any definitions in an OSTYPE setting.
|
||||
|
||||
@ -1226,6 +1233,13 @@ delay_checks The rulesets check_mail and check_relay will not be called
|
||||
section. Note: this feature is incompatible to the versions
|
||||
in 8.10 and 8.11.
|
||||
|
||||
use_client_ptr If this feature is enabled then check_relay will override
|
||||
its first argument with $&{client_ptr}. This is useful for
|
||||
rejections based on the unverified hostname of client,
|
||||
which turns on the same behavior as in earlier sendmail
|
||||
versions when delay_checks was not in use. See doc/op/op.*
|
||||
about check_relay, {client_name}, and {client_ptr}.
|
||||
|
||||
dnsbl Turns on rejection of hosts found in an DNS based rejection
|
||||
list. If an argument is provided it is used as the domain
|
||||
in which blocked hosts are listed; otherwise it defaults to
|
||||
@ -1299,6 +1313,67 @@ enhdnsbl Enhanced version of dnsbl (see above). Further arguments
|
||||
|
||||
will be logged).
|
||||
|
||||
ratecontrol Enable simple ruleset to do connection rate control
|
||||
checking. This requires entries in access_db of the form
|
||||
|
||||
ClientRate:IP.ADD.RE.SS LIMIT
|
||||
|
||||
The RHS specifies the maximum number of connections
|
||||
(an integer number) over the time interval defined
|
||||
by ConnectionRateWindowSize, where 0 means unlimited.
|
||||
|
||||
Take the following example:
|
||||
|
||||
ClientRate:10.1.2.3 4
|
||||
ClientRate:127.0.0.1 0
|
||||
ClientRate: 10
|
||||
|
||||
10.1.2.3 can only make up to 4 connections, the
|
||||
general limit it 10, and 127.0.0.1 can make an unlimited
|
||||
number of connections per ConnectionRateWindowSize.
|
||||
|
||||
See also CONNECTION CONTROL.
|
||||
|
||||
conncontrol Enable a simple check of the number of incoming SMTP
|
||||
connections. This requires entries in access_db of the
|
||||
form
|
||||
|
||||
ClientConn:IP.ADD.RE.SS LIMIT
|
||||
|
||||
The RHS specifies the maximum number of open connections
|
||||
(an integer number).
|
||||
|
||||
Take the following example:
|
||||
|
||||
ClientConn:10.1.2.3 4
|
||||
ClientConn:127.0.0.1 0
|
||||
ClientConn: 10
|
||||
|
||||
10.1.2.3 can only have up to 4 open connections, the
|
||||
general limit it 10, and 127.0.0.1 does not have any
|
||||
explicit limit.
|
||||
|
||||
See also CONNECTION CONTROL.
|
||||
|
||||
mtamark Experimental support for "Marking Mail Transfer Agents in
|
||||
Reverse DNS with TXT RRs" (MTAMark), see
|
||||
draft-stumpf-dns-mtamark-01. Optional arguments are:
|
||||
|
||||
1. Error message, default:
|
||||
|
||||
550 Rejected: $&{client_addr} not listed as MTA
|
||||
|
||||
2. Temporary lookup failures are ignored unless a second
|
||||
argument is given, which must be either `t' or a full
|
||||
error message.
|
||||
|
||||
3. Lookup prefix, default: _perm._smtp._srv. This should
|
||||
not be changed unless the draft changes it.
|
||||
|
||||
Example:
|
||||
|
||||
FEATURE(`mtamark', `', `t')
|
||||
|
||||
lookupdotdomain Look up also .domain in the access map. This allows to
|
||||
match only subdomains. It does not work well with
|
||||
FEATURE(`relay_hosts_only'), because most lookups for
|
||||
@ -1393,6 +1468,32 @@ queuegroup A simple example how to select a queue group based
|
||||
Note: please read the warning in doc/op/op.me about
|
||||
queue groups and possible queue manipulations.
|
||||
|
||||
greet_pause Adds the greet_pause ruleset which enables open proxy
|
||||
and SMTP slamming protection. The feature can take an
|
||||
argument specifying the milliseconds to wait:
|
||||
|
||||
FEATURE(`greet_pause', `5000') dnl 5 seconds
|
||||
|
||||
If FEATURE(`access_db') is enabled, an access database
|
||||
lookup with the GreetPause tag is done using client
|
||||
hostname, domain, IP address, or subnet to determine the
|
||||
pause time:
|
||||
|
||||
GreetPause:my.domain 0
|
||||
GreetPause:example.com 5000
|
||||
GreetPause:10.1.2 2000
|
||||
GreetPause:127.0.0.1 0
|
||||
|
||||
When using FEATURE(`access_db'), the optional
|
||||
FEATURE(`greet_pause') argument becomes the default if
|
||||
nothing is found in the access database. A ruleset called
|
||||
Local_greet_pause can be used for local modifications, e.g.,
|
||||
|
||||
LOCAL_RULESETS
|
||||
SLocal_greet_pause
|
||||
R$* $: $&{daemon_flags}
|
||||
R$* a $* $# 0
|
||||
|
||||
+-------+
|
||||
| HACKS |
|
||||
+-------+
|
||||
@ -1461,6 +1562,9 @@ The second example demonstrates that you can use two names on the
|
||||
same line; these are usually aliases for the same host (or are at
|
||||
least in the same company).
|
||||
|
||||
The macro LOCAL_UUCP can be used to add rules into the generated
|
||||
cf file at the place where MAILER(`uucp') inserts its rules. This
|
||||
should only be used if really necessary.
|
||||
|
||||
+--------------------+
|
||||
| USING UUCP MAILERS |
|
||||
@ -1787,7 +1891,8 @@ declared as follows:
|
||||
(|(sendmailMTACluster=${sendmailMTACluster})
|
||||
(sendmailMTAHost=$j))
|
||||
(sendmailMTAKey=%0))
|
||||
-v sendmailMTAAliasValue
|
||||
-v sendmailMTAAliasValue,sendmailMTAAliasSearch:FILTER:sendmailMTAAliasObject,sendmailMTAAliasURL:URL:sendmailMTAAliasObject
|
||||
|
||||
|
||||
NOTE: The macros shown above ${sendmailMTACluster} and $j are not actually
|
||||
used when the binary expands the `ldap:' token as the AliasFile option is
|
||||
@ -1893,7 +1998,7 @@ For example, FEATURE(`mailertable', `LDAP') would use the map definition:
|
||||
(|(sendmailMTACluster=${sendmailMTACluster})
|
||||
(sendmailMTAHost=$j))
|
||||
(sendmailMTAKey=%0))
|
||||
-1 -v sendmailMTAMapValue
|
||||
-1 -v sendmailMTAMapValue,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject
|
||||
|
||||
An example LDAP LDIF entry using this map might be:
|
||||
|
||||
@ -1960,7 +2065,7 @@ specification:
|
||||
(sendmailMTAClassName=R)
|
||||
(|(sendmailMTACluster=${sendmailMTACluster})
|
||||
(sendmailMTAHost=$j)))
|
||||
-v sendmailMTAClassValue
|
||||
-v sendmailMTAClassValue,sendmailMTAClassSearch:FILTER:sendmailMTAClass,sendmailMTAClassURL:URL:sendmailMTAClass
|
||||
|
||||
NOTE: The macros shown above ${sendmailMTACluster} and $j are not actually
|
||||
used when the binary expands the `@LDAP' token as class declarations are
|
||||
@ -2053,18 +2158,25 @@ and will not reject addresses not found by the LDAP lookup. However,
|
||||
this behavior can be changed by giving additional arguments to the FEATURE()
|
||||
command:
|
||||
|
||||
FEATURE(`ldap_routing', <mailHost>, <mailRoutingAddress>, <bounce>, <detail>)
|
||||
FEATURE(`ldap_routing', <mailHost>, <mailRoutingAddress>, <bounce>,
|
||||
<detail>, <nodomain>, <tempfail>)
|
||||
|
||||
where <mailHost> is a map definition describing how to lookup an alternative
|
||||
mail host for a particular address; <mailRoutingAddress> is a map definition
|
||||
describing how to lookup an alternative address for a particular address;
|
||||
the <bounce> argument, if present and not the word "passthru", dictates
|
||||
that mail should be bounced if neither a mailHost nor mailRoutingAddress
|
||||
is found; and <detail> indicates what actions to take if the address
|
||||
is found, if set to "sendertoo", the sender will be rejected if not
|
||||
found in LDAP; and <detail> indicates what actions to take if the address
|
||||
contains +detail information -- `strip' tries the lookup with the +detail
|
||||
and if no matches are found, strips the +detail and tries the lookup again;
|
||||
`preserve', does the same as `strip' but if a mailRoutingAddress match is
|
||||
found, the +detail information is copied to the new address.
|
||||
found, the +detail information is copied to the new address; the <nodomain>
|
||||
argument, if present, will prevent the @domain lookup if the full
|
||||
address is not found in LDAP; the <tempfail> argument, if set to
|
||||
"tempfail", instructs the rules to give an SMTP 4XX temporary
|
||||
error if the LDAP server gives the MTA a temporary failure, or if set to
|
||||
"queue" (the default), the MTA will locally queue the mail.
|
||||
|
||||
The default <mailHost> map definition is:
|
||||
|
||||
@ -2237,12 +2349,11 @@ access map. If an optional argument `domain' (this is the literal
|
||||
word `domain', not a placeholder) is given, the domain portion of
|
||||
the mail sender is also checked to allowing relaying. This option
|
||||
only works together with the tag From: for the LHS of the access
|
||||
map entries (see below: Finer control...). This feature allows
|
||||
spammers to abuse your mail server by specifying a return address
|
||||
that you enabled in your access file. This may be harder to figure
|
||||
out for spammers, but it should not be used unless necessary.
|
||||
Instead use SMTP AUTH or STARTTLS to allow relaying for roaming
|
||||
users.
|
||||
map entries. This feature allows spammers to abuse your mail server
|
||||
by specifying a return address that you enabled in your access file.
|
||||
This may be harder to figure out for spammers, but it should not
|
||||
be used unless necessary. Instead use SMTP AUTH or STARTTLS to
|
||||
allow relaying for roaming users.
|
||||
|
||||
|
||||
If source routing is used in the recipient address (e.g.,
|
||||
@ -2338,12 +2449,13 @@ The table itself uses e-mail addresses, domain names, and network
|
||||
numbers as keys. Note that IPv6 addresses must be prefaced with "IPv6:".
|
||||
For example,
|
||||
|
||||
spammer@aol.com REJECT
|
||||
cyberspammer.com REJECT
|
||||
TLD REJECT
|
||||
192.168.212 REJECT
|
||||
IPv6:2002:c0a8:02c7 RELAY
|
||||
IPv6:2002:c0a8:51d2::23f4 REJECT
|
||||
From:spammer@aol.com REJECT
|
||||
From:cyberspammer.com REJECT
|
||||
Connect:cyberspammer.com REJECT
|
||||
Connect:TLD REJECT
|
||||
Connect:192.168.212 REJECT
|
||||
Connect:IPv6:2002:c0a8:02c7 RELAY
|
||||
Connect:IPv6:2002:c0a8:51d2::23f4 REJECT
|
||||
|
||||
would refuse mail from spammer@aol.com, any user from cyberspammer.com
|
||||
(or any host within the cyberspammer.com domain), any host in the entire
|
||||
@ -2351,6 +2463,41 @@ top level domain TLD, 192.168.212.* network, and the IPv6 address
|
||||
2002:c0a8:51d2::23f4. It would allow relay for the IPv6 network
|
||||
2002:c0a8:02c7::/48.
|
||||
|
||||
Entries in the access map should be tagged according to their type.
|
||||
Three tags are available:
|
||||
|
||||
Connect: connection information (${client_addr}, ${client_name})
|
||||
From: envelope sender
|
||||
To: envelope recipient
|
||||
|
||||
Notice: untagged entries are deprecated.
|
||||
|
||||
If the required item is looked up in a map, it will be tried first
|
||||
with the corresponding tag in front, then (as fallback to enable
|
||||
backward compatibility) without any tag, unless the specific feature
|
||||
requires a tag. For example,
|
||||
|
||||
From:spammer@some.dom REJECT
|
||||
To:friend.domain RELAY
|
||||
Connect:friend.domain OK
|
||||
Connect:from.domain RELAY
|
||||
From:good@another.dom OK
|
||||
From:another.dom REJECT
|
||||
|
||||
This would deny mails from spammer@some.dom but you could still
|
||||
send mail to that address even if FEATURE(`blacklist_recipients')
|
||||
is enabled. Your system will allow relaying to friend.domain, but
|
||||
not from it (unless enabled by other means). Connections from that
|
||||
domain will be allowed even if it ends up in one of the DNS based
|
||||
rejection lists. Relaying is enabled from from.domain but not to
|
||||
it (since relaying is based on the connection information for
|
||||
outgoing relaying, the tag Connect: must be used; for incoming
|
||||
relaying, which is based on the recipient address, To: must be
|
||||
used). The last two entries allow mails from good@another.dom but
|
||||
reject mail from all other addresses with another.dom as domain
|
||||
part.
|
||||
|
||||
|
||||
The value part of the map can contain:
|
||||
|
||||
OK Accept mail even if other rules in the running
|
||||
@ -2377,38 +2524,46 @@ The value part of the map can contain:
|
||||
"any text" is a message to return for the command.
|
||||
The string should be quoted to avoid surprises,
|
||||
e.g., sendmail may remove spaces otherwise.
|
||||
This type is deprecated, use one the two
|
||||
This type is deprecated, use one of the two
|
||||
ERROR: entries below instead.
|
||||
ERROR:### any text
|
||||
as above, but useful to mark error messages as such.
|
||||
ERROR:D.S.N:### any text
|
||||
where D.S.N is an RFC 1893 compliant error code
|
||||
and the rest as above.
|
||||
QUARANTINE:any text
|
||||
Quarantine the message using the given text as the
|
||||
quarantining reason.
|
||||
|
||||
For example:
|
||||
|
||||
cyberspammer.com ERROR:"550 We don't accept mail from spammers"
|
||||
okay.cyberspammer.com OK
|
||||
sendmail.org RELAY
|
||||
128.32 RELAY
|
||||
IPv6:1:2:3:4:5:6:7 RELAY
|
||||
[127.0.0.3] OK
|
||||
[IPv6:1:2:3:4:5:6:7:8] OK
|
||||
From:cyberspammer.com ERROR:"550 We don't accept mail from spammers"
|
||||
From:okay.cyberspammer.com OK
|
||||
Connect:sendmail.org RELAY
|
||||
To:sendmail.org RELAY
|
||||
Connect:128.32 RELAY
|
||||
Connect:128.32.2 SKIP
|
||||
Connect:IPv6:1:2:3:4:5:6:7 RELAY
|
||||
Connect:suspicious.example.com QUARANTINE:Mail from suspicious host
|
||||
Connect:[127.0.0.3] OK
|
||||
Connect:[IPv6:1:2:3:4:5:6:7:8] OK
|
||||
|
||||
would accept mail from okay.cyberspammer.com, but would reject mail from
|
||||
all other hosts at cyberspammer.com with the indicated message. It would
|
||||
allow relaying mail from and to any hosts in the sendmail.org domain, and
|
||||
allow relaying from the 128.32.*.* network and the IPv6 1:2:3:4:5:6:7:*
|
||||
network. The latter two entries are for checks against ${client_name} if
|
||||
the IP address doesn't resolve to a hostname (or is considered as "may be
|
||||
forged"). That is, using square brackets means these are host names,
|
||||
not network numbers.
|
||||
would accept mail from okay.cyberspammer.com, but would reject mail
|
||||
from all other hosts at cyberspammer.com with the indicated message.
|
||||
It would allow relaying mail from and to any hosts in the sendmail.org
|
||||
domain, and allow relaying from the IPv6 1:2:3:4:5:6:7:* network
|
||||
and from the 128.32.*.* network except for the 128.32.2.* network,
|
||||
which shows how SKIP is useful to exempt subnets/subdomains. The
|
||||
last two entries are for checks against ${client_name} if the IP
|
||||
address doesn't resolve to a hostname (or is considered as "may be
|
||||
forged"). That is, using square brackets means these are host
|
||||
names, not network numbers.
|
||||
|
||||
Warning: if you change the RFC 821 compliant error code from the default
|
||||
value of 550, then you should probably also change the RFC 1893 compliant
|
||||
error code to match it. For example, if you use
|
||||
|
||||
user@example.com ERROR:450 mailbox full
|
||||
To:user@example.com ERROR:450 mailbox full
|
||||
|
||||
the error returned would be "450 5.0.0 mailbox full" which is wrong.
|
||||
Use "ERROR:4.2.2:450 mailbox full" instead.
|
||||
@ -2427,7 +2582,7 @@ hosts listed in class {R} to be fully qualified host names.
|
||||
You can also use the access database to block sender addresses based on
|
||||
the username portion of the address. For example:
|
||||
|
||||
FREE.STEALTH.MAILER@ ERROR:550 Spam not accepted
|
||||
From:FREE.STEALTH.MAILER@ ERROR:550 Spam not accepted
|
||||
|
||||
Note that you must include the @ after the username to signify that
|
||||
this database entry is for checking only the username portion of the
|
||||
@ -2440,24 +2595,24 @@ If you use:
|
||||
then you can add entries to the map for local users, hosts in your
|
||||
domains, or addresses in your domain which should not receive mail:
|
||||
|
||||
badlocaluser@ ERROR:550 Mailbox disabled for this username
|
||||
host.mydomain.com ERROR:550 That host does not accept mail
|
||||
user@otherhost.mydomain.com ERROR:550 Mailbox disabled for this recipient
|
||||
To:badlocaluser@ ERROR:550 Mailbox disabled for badlocaluser
|
||||
To:host.my.TLD ERROR:550 That host does not accept mail
|
||||
To:user@other.my.TLD ERROR:550 Mailbox disabled for this recipient
|
||||
|
||||
This would prevent a recipient of badlocaluser@mydomain.com, any
|
||||
user at host.mydomain.com, and the single address
|
||||
user@otherhost.mydomain.com from receiving mail. Please note: a
|
||||
local username must be now tagged with an @ (this is consistent
|
||||
with the check of the sender address, and hence it is possible to
|
||||
distinguish between hostnames and usernames). Enabling this feature
|
||||
will keep you from sending mails to all addresses that have an
|
||||
error message or REJECT as value part in the access map. Taking
|
||||
the example from above:
|
||||
This would prevent a recipient of badlocaluser in any of the local
|
||||
domains (class {w}), any user at host.my.TLD, and the single address
|
||||
user@other.my.TLD from receiving mail. Please note: a local username
|
||||
must be now tagged with an @ (this is consistent with the check of
|
||||
the sender address, and hence it is possible to distinguish between
|
||||
hostnames and usernames). Enabling this feature will keep you from
|
||||
sending mails to all addresses that have an error message or REJECT
|
||||
as value part in the access map. Taking the example from above:
|
||||
|
||||
spammer@aol.com REJECT
|
||||
cyberspammer.com REJECT
|
||||
|
||||
Mail can't be sent to spammer@aol.com or anyone at cyberspammer.com.
|
||||
That's why tagged entries should be used.
|
||||
|
||||
There are several DNS based blacklists, the first of which was
|
||||
the RBL (``Realtime Blackhole List'') run by the MAPS project,
|
||||
@ -2533,46 +2688,12 @@ regex map:
|
||||
|
||||
These rules are called with the original arguments of the corresponding
|
||||
check_* ruleset. If the local ruleset returns $#OK, no further checking
|
||||
is done by the features described above and the mail is accepted. If the
|
||||
local ruleset resolves to a mailer (such as $#error or $#discard), the
|
||||
appropriate action is taken. Otherwise, the results of the local
|
||||
rewriting are ignored.
|
||||
|
||||
Finer control by using tags for the LHS of the access map
|
||||
---------------------------------------------------------
|
||||
|
||||
Read this section only if the options listed so far are not sufficient
|
||||
for your purposes. There is now the option to tag entries in the
|
||||
access map according to their type. Three tags are available:
|
||||
|
||||
Connect: connection information (${client_addr}, ${client_name})
|
||||
From: envelope sender
|
||||
To: envelope recipient
|
||||
|
||||
If the required item is looked up in a map, it will be tried first
|
||||
with the corresponding tag in front, then (as fallback to enable
|
||||
backward compatibility) without any tag, unless the specific feature
|
||||
requires a tag. For example,
|
||||
|
||||
From:spammer@some.dom REJECT
|
||||
To:friend.domain RELAY
|
||||
Connect:friend.domain OK
|
||||
Connect:from.domain RELAY
|
||||
From:good@another.dom OK
|
||||
From:another.dom REJECT
|
||||
|
||||
This would deny mails from spammer@some.dom but you could still
|
||||
send mail to that address even if FEATURE(`blacklist_recipients')
|
||||
is enabled. Your system will allow relaying to friend.domain, but
|
||||
not from it (unless enabled by other means). Connections from that
|
||||
domain will be allowed even if it ends up in one of the DNS based
|
||||
rejection lists. Relaying is enabled from from.domain but not to
|
||||
it (since relaying is based on the connection information for
|
||||
outgoing relaying, the tag Connect: must be used; for incoming
|
||||
relaying, which is based on the recipient address, To: must be
|
||||
used). The last two entries allow mails from good@another.dom but
|
||||
reject mail from all other addresses with another.dom as domain
|
||||
part.
|
||||
is done by the features described above and the mail is accepted. If
|
||||
the local ruleset resolves to a mailer (such as $#error or $#discard),
|
||||
the appropriate action is taken. Other results starting with $# are
|
||||
interpreted by sendmail and may lead to unspecified behavior. Note: do
|
||||
NOT create a mailer with the name OK. Return values that do not start
|
||||
with $# are ignored, i.e., normal processing continues.
|
||||
|
||||
Delay all checks
|
||||
----------------
|
||||
@ -2677,6 +2798,8 @@ to $&{currHeader}.
|
||||
2. There are no default rulesets coming with this distribution of
|
||||
sendmail. You can either write your own or you can search the
|
||||
WWW for examples, e.g., http://www.digitalanswers.org/check_local/
|
||||
3. When using a default ruleset for headers, the name of the header
|
||||
currently being checked can be found in the $&{hdr_name} macro.
|
||||
|
||||
After all of the headers are read, the check_eoh ruleset will be called for
|
||||
any final header-related checks. The ruleset is called with the number of
|
||||
@ -2711,6 +2834,38 @@ probably not be used in production.
|
||||
# Otherwise, reject the mail
|
||||
R$* $#error $: 553 Header Error
|
||||
|
||||
|
||||
+--------------------+
|
||||
| CONNECTION CONTROL |
|
||||
+--------------------+
|
||||
|
||||
The features ratecontrol and conncontrol allow to establish connection
|
||||
limits per client IP address or net. These features can limit the
|
||||
rate of connections (connections per time unit) or the number of
|
||||
incoming SMTP connections, respectively. If enabled, appropriate
|
||||
rulesets are called at the end of check_relay, i.e., after DNS
|
||||
blacklists and generic access_db operations. The features require
|
||||
FEATURE(`access_db') to be listed earlier in the mc file.
|
||||
|
||||
Note: FEATURE(`delay_checks') delays those connection control checks
|
||||
after a recipient address has been received, hence making these
|
||||
connection control features less useful. To run the checks as early
|
||||
as possible, specify the parameter `nodelay', e.g.,
|
||||
|
||||
FEATURE(`ratecontrol', `nodelay')
|
||||
|
||||
In that case, FEATURE(`delay_checks') has no effect on connection
|
||||
control (and it must be specified earlier in the mc file).
|
||||
|
||||
An optional second argument `terminate' specifies whether the
|
||||
rulesets should return the error code 421 which will cause
|
||||
sendmail to terminate the session with that error if it is
|
||||
returned from check_relay, i.e., not delayed as explained in
|
||||
the previous paragraph. Example:
|
||||
|
||||
FEATURE(`ratecontrol', `nodelay', `terminate')
|
||||
|
||||
|
||||
+----------+
|
||||
| STARTTLS |
|
||||
+----------+
|
||||
@ -2774,6 +2929,7 @@ If it is SUBJECT, the DN of the cert subject is looked up next in the
|
||||
access map using the tag CERTSUBJECT. If the value is RELAY, relaying
|
||||
is allowed.
|
||||
|
||||
To make things a bit more flexible (or complicated), the values for
|
||||
${cert_issuer} and ${cert_subject} can be optionally modified by regular
|
||||
expressions defined in the m4 variables _CERT_REGEX_ISSUER_ and
|
||||
_CERT_REGEX_SUBJECT_, respectively. To avoid problems with those macros in
|
||||
@ -2818,8 +2974,11 @@ Darth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org SUBJECT
|
||||
CertSubject:/C=US/ST=California/O=endmail.org/OU=private/CN=
|
||||
DeathStar/Email=deathstar@endmail.org RELAY
|
||||
|
||||
Note: line breaks have been inserted after "CN=" for readability,
|
||||
each tagged entry must be one (long) line in the access map.
|
||||
Notes:
|
||||
- line breaks have been inserted after "CN=" for readability,
|
||||
each tagged entry must be one (long) line in the access map.
|
||||
- if OpenSSL 0.9.7 or newer is used then the "Email=" part of a DN
|
||||
is replaced by "emailAddress=".
|
||||
|
||||
Of course it is also possible to write a simple ruleset that allows
|
||||
relaying for everyone who can present a cert that can be verified, e.g.,
|
||||
@ -2952,7 +3111,7 @@ R$* $: $&{auth_type}
|
||||
R$+ $# OK
|
||||
|
||||
which checks whether a user has successfully authenticated using
|
||||
any available mechanism. Depending on the setup of the CYRUS SASL
|
||||
any available mechanism. Depending on the setup of the Cyrus SASL
|
||||
library, more sophisticated rulesets might be required, e.g.,
|
||||
|
||||
SLocal_check_rcpt
|
||||
@ -2980,6 +3139,9 @@ If the selected mechanism provides a security layer the number of
|
||||
bits used for the key of the symmetric cipher is stored in the
|
||||
macro ${auth_ssf}.
|
||||
|
||||
Providing SMTP AUTH Data when sendmail acts as Client
|
||||
-----------------------------------------------------
|
||||
|
||||
If sendmail acts as client, it needs some information how to
|
||||
authenticate against another MTA. This information can be provided
|
||||
by the ruleset authinfo or by the option DefaultAuthInfo. The
|
||||
@ -2991,6 +3153,12 @@ only performed if the access map is used; if the authinfo feature
|
||||
is used then only up to three lookups are performed (two exact
|
||||
matches, one default).
|
||||
|
||||
Note: If your daemon does client authentication when sending, and
|
||||
if it uses either PLAIN or LOGIN authentication, then you *must*
|
||||
prevent ordinary users from seeing verbose output. Do NOT install
|
||||
sendmail set-user-ID. Use PrivacyOptions to turn off verbose output
|
||||
("goaway" works for this).
|
||||
|
||||
Notice: the default configuration file causes the option DefaultAuthInfo
|
||||
to fail since the ruleset authinfo is in the .cf file. If you really
|
||||
want to use DefaultAuthInfo (it is deprecated) then you have to
|
||||
@ -3341,12 +3509,17 @@ off, do so.
|
||||
+--------------------------------+
|
||||
|
||||
There are a large number of configuration options that don't normally
|
||||
need to be changed. However, if you feel you need to tweak them, you
|
||||
can define the following M4 variables. This list is shown in four
|
||||
columns: the name you define, the default value for that definition,
|
||||
the option or macro that is affected (either Ox for an option or Dx
|
||||
for a macro), and a brief description. Greater detail of the semantics
|
||||
can be found in the Installation and Operations Guide.
|
||||
need to be changed. However, if you feel you need to tweak them,
|
||||
you can define the following M4 variables. Note that some of these
|
||||
variables require formats that are defined in RFC 2821 or RFC 2822.
|
||||
Before changing them you need to make sure you do not violate those
|
||||
(and other relevant) RFCs.
|
||||
|
||||
This list is shown in four columns: the name you define, the default
|
||||
value for that definition, the option or macro that is affected
|
||||
(either Ox for an option or Dx for a macro), and a brief description.
|
||||
Greater detail of the semantics can be found in the Installation
|
||||
and Operations Guide.
|
||||
|
||||
Some options are likely to be deprecated in future versions -- that is,
|
||||
the option is only included to provide back-compatibility. These are
|
||||
@ -3358,7 +3531,7 @@ be ``double quoted, like this phrase'' to avoid having the comma
|
||||
confuse things. This is common for alias file definitions and for
|
||||
the read timeout.
|
||||
|
||||
M4 Variable Name Configuration Description & [Default]
|
||||
M4 Variable Name Configuration [Default] & Description
|
||||
================ ============= =======================
|
||||
confMAILER_NAME $n macro [MAILER-DAEMON] The sender name used
|
||||
for internally generated outgoing
|
||||
@ -3387,6 +3560,9 @@ confRECEIVED_HEADER Received:
|
||||
The format of the Received: header
|
||||
in messages passed through this host.
|
||||
It is unwise to try to change this.
|
||||
confMESSAGEID_HEADER Message-Id: [<$t.$i@$j>] The format of an
|
||||
internally generated Message-Id:
|
||||
header.
|
||||
confCW_FILE Fw class [/etc/mail/local-host-names] Name
|
||||
of file used to get the local
|
||||
additions to class {w} (local host
|
||||
@ -3590,6 +3766,10 @@ confTO_QUEUERETURN_NONURGENT
|
||||
Timeout.queuereturn.non-urgent
|
||||
[undefined] As above, for non-urgent
|
||||
(low) priority messages.
|
||||
confTO_QUEUERETURN_DSN
|
||||
Timeout.queuereturn.dsn
|
||||
[undefined] As above, for delivery
|
||||
status notification messages.
|
||||
confTO_QUEUEWARN Timeout.queuewarn
|
||||
[4h] The timeout before a warning
|
||||
message is sent to the sender telling
|
||||
@ -3605,6 +3785,10 @@ confTO_QUEUEWARN_NONURGENT
|
||||
Timeout.queuewarn.non-urgent
|
||||
[undefined] As above, for non-urgent
|
||||
(low) priority messages.
|
||||
confTO_QUEUEWARN_DSN
|
||||
Timeout.queuewarn.dsn
|
||||
[undefined] As above, for delivery
|
||||
status notification messages.
|
||||
confTO_HOSTSTATUS Timeout.hoststatus
|
||||
[30m] How long information about host
|
||||
statuses will be maintained before it
|
||||
@ -3653,6 +3837,8 @@ confUSERDB_SPEC UserDatabaseSpec
|
||||
[undefined] User database
|
||||
specification.
|
||||
confFALLBACK_MX FallbackMXhost [undefined] Fallback MX host.
|
||||
confFALLBACK_SMARTHOST FallbackSmartHost
|
||||
[undefined] Fallback smart host.
|
||||
confTRY_NULL_MX_LIST TryNullMXList [False] If this host is the best MX
|
||||
for a host and other arrangements
|
||||
haven't been made, try connecting
|
||||
@ -3670,6 +3856,8 @@ confREFUSE_LA RefuseLA [varies] Load average at which
|
||||
numproc) where numproc is the
|
||||
number of processors online (if
|
||||
that can be determined).
|
||||
confREJECT_LOG_INTERVAL RejectLogInterval [3h] Log interval when
|
||||
refusing connections for this long.
|
||||
confDELAY_LA DelayLA [0] Load average at which sendmail
|
||||
will sleep for one second on most
|
||||
SMTP commands and before accepting
|
||||
@ -3688,7 +3876,6 @@ confMAX_HEADERS_LENGTH MaxHeadersLength
|
||||
confMAX_MIME_HEADER_LENGTH MaxMimeHeaderLength
|
||||
[undefined] Maximum length of
|
||||
certain MIME header field values.
|
||||
If not set, sendmail uses 2048/1024.
|
||||
confCONNECTION_RATE_THROTTLE ConnectionRateThrottle
|
||||
[undefined] The maximum number of
|
||||
connections permitted per second per
|
||||
@ -3696,6 +3883,10 @@ confCONNECTION_RATE_THROTTLE ConnectionRateThrottle
|
||||
are accepted, further connections
|
||||
will be delayed. If not set or <= 0,
|
||||
there is no limit.
|
||||
confCONNECTION_RATE_WINDOW_SIZE ConnectionRateWindowSize
|
||||
[60s] Define the length of the
|
||||
interval for which the number of
|
||||
incoming connections is maintained.
|
||||
confWORK_RECIPIENT_FACTOR
|
||||
RecipientFactor [30000] Cost of each recipient.
|
||||
confSEPARATE_PROC ForkEachJob [False] Run all deliveries in a
|
||||
@ -3768,7 +3959,7 @@ confMAX_QUEUE_CHILDREN MaxQueueChildren
|
||||
of concurrent queue runners active.
|
||||
This is to keep system resources used
|
||||
within a reasonable limit. Relates to
|
||||
Queue Groups and ForkAllJobs.
|
||||
Queue Groups and ForkEachJob.
|
||||
confMAX_RUNNERS_PER_QUEUE MaxRunnersPerQueue
|
||||
[1] Only active when MaxQueueChildren
|
||||
defined. Controls the maximum number
|
||||
@ -3909,7 +4100,11 @@ confAUTH_MECHANISMS AuthMechanisms [GSSAPI KERBEROS_V4 DIGEST-MD5
|
||||
authentication mechanisms will be the
|
||||
intersection of this list and the list
|
||||
of available mechanisms as determined
|
||||
by the CYRUS SASL library.
|
||||
by the Cyrus SASL library.
|
||||
confAUTH_REALM AuthRealm [undefined] The authentication realm
|
||||
that is passed to the Cyrus SASL
|
||||
library. If no realm is specified,
|
||||
$j is used.
|
||||
confDEF_AUTH_INFO DefaultAuthInfo [undefined] Name of file that contains
|
||||
authentication information for
|
||||
outgoing connections. This file must
|
||||
@ -3973,6 +4168,10 @@ confCLIENT_CERT ClientCertFile [undefined] File containing the
|
||||
confCLIENT_KEY ClientKeyFile [undefined] File containing the
|
||||
private key belonging to the client
|
||||
cert.
|
||||
confCRL CRLFile [undefined] File containing certificate
|
||||
revocation status, useful for X.509v3
|
||||
authentication. Note that CRL requires
|
||||
at least OpenSSL version 0.9.7.
|
||||
confDH_PARAMETERS DHParameters [undefined] File containing the
|
||||
DH parameters.
|
||||
confRAND_FILE RandFile [undefined] File containing random
|
||||
@ -3992,6 +4191,10 @@ confUSE_MSP UseMSP [false] Use as mail submission
|
||||
program, see sendmail/SECURITY.
|
||||
confDELIVER_BY_MIN DeliverByMin [0] Minimum time for Deliver By
|
||||
SMTP Service Extension (RFC 2852).
|
||||
confREQUIRES_DIR_FSYNC RequiresDirfsync [true] RequiresDirfsync can
|
||||
be used to turn off the compile time
|
||||
flag REQUIRES_DIR_FSYNC at runtime.
|
||||
See sendmail/README for details.
|
||||
confSHARED_MEMORY_KEY SharedMemoryKey [0] Key for shared memory.
|
||||
confFAST_SPLIT FastSplit [1] If set to a value greater than
|
||||
zero, the initial MX lookups on
|
||||
@ -4035,6 +4238,9 @@ confMILTER_MACROS_ENVRCPT Milter.macros.envrcpt
|
||||
[{rcpt_mailer}, {rcpt_host},
|
||||
{rcpt_addr}] Macros to transmit to
|
||||
milters after RCPT TO command.
|
||||
confMILTER_MACROS_EOM Milter.macros.eom
|
||||
[{msg_id}] Macros to transmit to
|
||||
milters after DATA command.
|
||||
|
||||
|
||||
See also the description of OSTYPE for some parameters that can be
|
||||
@ -4177,6 +4383,12 @@ adding the following to your sendmail.mc file:
|
||||
R$* $: $&{auth_authen}
|
||||
Rsmmsp $# OK
|
||||
|
||||
Note: the authentication data can leak to local users who invoke
|
||||
the MSP with debug options or even with -v. For that reason either
|
||||
an authentication mechanism that does not show the password in the
|
||||
AUTH dialogue (e.g., DIGEST-MD5) or a different authentication
|
||||
method like STARTTLS should be used.
|
||||
|
||||
feature/msp.m4 defines almost all settings for the MSP. Most of
|
||||
those should not be changed at all. Some of the features and options
|
||||
can be overridden if really necessary. It is a bit tricky to do
|
||||
@ -4375,4 +4587,4 @@ M4 DIVERSIONS
|
||||
8 DNS based blacklists
|
||||
9 special local rulesets (1 and 2)
|
||||
|
||||
$Revision: 8.623.2.27 $, Last updated $Date: 2004/01/11 17:58:25 $
|
||||
$Revision: 8.691 $, Last updated $Date: 2004/07/19 17:47:34 $
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Makefile for configuration files.
|
||||
#
|
||||
# $Id: Makefile,v 8.56 2001/12/13 23:56:37 gshapiro Exp $
|
||||
# $Id: Makefile,v 8.58 2003/10/20 22:01:00 ca Exp $
|
||||
#
|
||||
|
||||
#
|
||||
@ -19,6 +19,8 @@ SUBMIT= submit
|
||||
MAILDIR=/etc/mail
|
||||
M4= m4
|
||||
CFDIR= ..
|
||||
SED= sed
|
||||
ECHO= echo
|
||||
CHMOD= chmod
|
||||
ROMODE= 444
|
||||
RM= rm -f
|
||||
@ -35,6 +37,8 @@ CFMODE=0444
|
||||
.mc.cf:
|
||||
$(RM) $@
|
||||
$(M4) ${CFDIR}/m4/cf.m4 $*.mc > $@ || ( $(RM) $@ && exit 1 )
|
||||
$(ECHO) "### $*.mc ###" >>$@
|
||||
$(SED) -e 's/^/# /' $*.mc >>$@
|
||||
$(CHMOD) $(ROMODE) $@
|
||||
|
||||
GENERIC=generic-bsd4.4.cf generic-hpux9.cf generic-hpux10.cf \
|
||||
@ -99,6 +103,7 @@ M4FILES=\
|
||||
${CFDIR}/feature/bestmx_is_local.m4 \
|
||||
${CFDIR}/feature/bitdomain.m4 \
|
||||
${CFDIR}/feature/blacklist_recipients.m4 \
|
||||
${CFDIR}/feature/conncontrol.m4 \
|
||||
${CFDIR}/feature/dnsbl.m4 \
|
||||
${CFDIR}/feature/domaintable.m4 \
|
||||
${CFDIR}/feature/generics_entire_domain.m4 \
|
||||
@ -113,12 +118,12 @@ M4FILES=\
|
||||
${CFDIR}/feature/masquerade_envelope.m4 \
|
||||
${CFDIR}/feature/no_default_msa.m4 \
|
||||
${CFDIR}/feature/nocanonify.m4 \
|
||||
${CFDIR}/feature/nodns.m4 \
|
||||
${CFDIR}/feature/notsticky.m4 \
|
||||
${CFDIR}/feature/nouucp.m4 \
|
||||
${CFDIR}/feature/nullclient.m4 \
|
||||
${CFDIR}/feature/promiscuous_relay.m4 \
|
||||
${CFDIR}/feature/redirect.m4 \
|
||||
${CFDIR}/feature/ratecontrol.m4 \
|
||||
${CFDIR}/feature/relay_based_on_MX.m4 \
|
||||
${CFDIR}/feature/relay_entire_domain.m4 \
|
||||
${CFDIR}/feature/relay_hosts_only.m4 \
|
||||
|
@ -19,16 +19,15 @@ divert(-1)
|
||||
#
|
||||
|
||||
divert(0)
|
||||
VERSIONID(`$Id: knecht.mc,v 8.55 2001/08/01 22:20:40 eric Exp $')
|
||||
VERSIONID(`$Id: knecht.mc,v 8.58 2004/01/28 00:54:41 eric Exp $')
|
||||
OSTYPE(bsd4.4)
|
||||
DOMAIN(generic)
|
||||
|
||||
define(`ALIAS_FILE', ``/etc/mail/aliases, /var/listmanager/aliases'')
|
||||
define(`ALIAS_FILE', ``/etc/mail/aliases, /etc/mail/lists/sendmail.org/aliases, /var/listmanager/aliases'')
|
||||
define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward+$h:$z/.forward')
|
||||
define(`confDEF_USER_ID', `mailnull')
|
||||
define(`confHOST_STATUS_DIRECTORY', `.hoststat')
|
||||
define(`confTO_ICONNECT', `10s')
|
||||
define(`confCOPY_ERRORS_TO', `Postmaster')
|
||||
define(`confTO_QUEUEWARN', `8h')
|
||||
define(`confMIN_QUEUE_AGE', `27m')
|
||||
define(`confTRUSTED_USERS', ``www listmgr'')
|
||||
@ -42,9 +41,12 @@ define(`confSERVER_KEY', `CERT_DIR/MYkey.pem')
|
||||
define(`confCLIENT_CERT', `CERT_DIR/MYcert.pem')
|
||||
define(`confCLIENT_KEY', `CERT_DIR/MYkey.pem')
|
||||
|
||||
define(`CYRUS_MAILER_PATH', `/usr/local/cyrus/bin/deliver')
|
||||
|
||||
FEATURE(access_db)
|
||||
FEATURE(local_lmtp)
|
||||
FEATURE(virtusertable)
|
||||
FEATURE(mailertable)
|
||||
|
||||
FEATURE(`nocanonify', `canonify_hosts')
|
||||
CANONIFY_DOMAIN(`sendmail.org')
|
||||
@ -61,8 +63,17 @@ define(`confFAST_SPLIT', `10')
|
||||
dnl # 10 runners, split into at most 15 recipients per envelope
|
||||
QUEUE_GROUP(`mqueue', `P=/var/spool/mqueue, R=5, r=15, F=f')
|
||||
|
||||
|
||||
dnl # enable spam assassin
|
||||
INPUT_MAIL_FILTER(`spamassassin', `S=local:/var/run/spamass-milter.sock, F=, T=C:15m;S:4m;R:4m;E:10m')
|
||||
|
||||
MAILER(local)
|
||||
MAILER(smtp)
|
||||
MAILER(cyrus)
|
||||
|
||||
LOCAL_RULE_0
|
||||
Rcyrus.$+ + $+ < @ $=w . > $#cyrus $@ $2 $: $1
|
||||
Rcyrus.$+ < @ $=w . > $#cyrus $: $1
|
||||
|
||||
LOCAL_CONFIG
|
||||
#
|
||||
@ -73,6 +84,7 @@ LOCAL_CONFIG
|
||||
Kcheckaddress regex -a@MATCH
|
||||
^([0-9]+<@(aol|msn)\.com|[0-9][^<]*<@juno\.com)\.?>
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# Names that won't be allowed in a To: line (local-part and domains)
|
||||
#
|
||||
@ -86,18 +98,42 @@ SCheckTo
|
||||
R$={RejectToLocalparts}@$* $#error $: "553 Header error"
|
||||
R$*@$={RejectToDomains} $#error $: "553 Header error"
|
||||
|
||||
######################################################################
|
||||
HMessage-Id: $>CheckMessageId
|
||||
|
||||
SCheckMessageId
|
||||
# Record the presence of the header
|
||||
R$* $: $(storage {MessageIdCheck} $@ OK $) $1
|
||||
|
||||
# validate syntax
|
||||
R< $+ @ $+ > $@ OK
|
||||
R$* $#error $: "554 Header error"
|
||||
|
||||
|
||||
######################################################################
|
||||
HReceived: $>CheckReceived
|
||||
|
||||
SCheckReceived
|
||||
# Record the presence of any Received header
|
||||
R$* $: $(storage {ReceivedCheck} $@ OK $) $1
|
||||
|
||||
# check syntax
|
||||
R$* ......................................................... $*
|
||||
$#error $: "554 Header error"
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# Reject advertising subjects
|
||||
#
|
||||
|
||||
Kadvsubj regex -b -a@MATCH ±?°í
|
||||
HSubject: $>+CheckSubject
|
||||
SCheckSubject
|
||||
R$* $: $(advsubj $&{currHeader} $: OK $)
|
||||
ROK $@ OK
|
||||
R$* $#error $@ 5.7.0 $: 550 5.7.0 spam rejected.
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# Reject certain senders
|
||||
# Regex match to catch things in quotes
|
||||
@ -159,13 +195,65 @@ LOCAL_RULESETS
|
||||
KSirCamWormMarker regex -f -aSUSPECT multipart/mixed;boundary=----.+_Outlook_Express_message_boundary
|
||||
HContent-Type: $>CheckContentType
|
||||
|
||||
######################################################################
|
||||
SCheckContentType
|
||||
R$+ $: $(SirCamWormMarker $1 $)
|
||||
RSUSPECT $#error $: "553 Possible virus, see http://www.symantec.com/avcenter/venc/data/w32.sircam.worm@mm.html"
|
||||
|
||||
HContent-Disposition: $>CheckContentDisposition
|
||||
|
||||
######################################################################
|
||||
SCheckContentDisposition
|
||||
R$- $@ OK
|
||||
R$- ; $+ $@ OK
|
||||
R$* $#error $: "553 Illegal Content-Disposition"
|
||||
|
||||
|
||||
#
|
||||
# Sobig.F
|
||||
#
|
||||
|
||||
LOCAL_CONFIG
|
||||
Kstorage macro
|
||||
|
||||
LOCAL_RULESETS
|
||||
######################################################################
|
||||
### check for the existance of the X-MailScanner Header
|
||||
HX-MailScanner: $>+CheckXMSc
|
||||
D{SobigFPat}Found to be clean
|
||||
D{SobigFMsg}This message may contain the Sobig.F virus.
|
||||
|
||||
SCheckXMSc
|
||||
### if it exists, and the defined value is set, record the presence
|
||||
R${SobigFPat} $* $: $(storage {SobigFCheck} $@ SobigF $) $1
|
||||
R$* $@ OK
|
||||
|
||||
######################################################################
|
||||
Scheck_eoh
|
||||
# Check if a Message-Id was found
|
||||
R$* $: < $&{MessageIdCheck} >
|
||||
|
||||
# If Message-Id was found clear the X-MailScanner store and return with OK
|
||||
R< $+ > $@ OK $>ClearStorage
|
||||
|
||||
# Are we the first Hop?
|
||||
R$* $: < $&{ReceivedCheck} >
|
||||
R< $+ > $@ OK $>ClearStorage
|
||||
|
||||
# no Message-Id->check X-Mailscanner presence, too
|
||||
R$* $: < $&{SobigFCheck} >
|
||||
|
||||
# clear store
|
||||
R$* $: $>ClearStorage $1
|
||||
# no msgid, first hop and Header found? -> reject the message
|
||||
R < SobigF > $#error $: 553 ${SobigFMsg}
|
||||
|
||||
# No Header! Fine, take the message
|
||||
R$* $@ OK
|
||||
|
||||
######################################################################
|
||||
SClearStorage
|
||||
R$* $: $(storage {SobigFCheck} $) $1
|
||||
R$* $: $(storage {ReceivedCheck} $) $1
|
||||
R$* $: $(storage {MessageIdCheck} $) $1
|
||||
R$* $@ $1
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 1998-2003 Sendmail, Inc. and its suppliers.
|
||||
# Copyright (c) 1998-2004 Sendmail, Inc. and its suppliers.
|
||||
# All rights reserved.
|
||||
# Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved.
|
||||
# Copyright (c) 1988, 1993
|
||||
@ -16,6 +16,9 @@
|
||||
#####
|
||||
##### SENDMAIL CONFIGURATION FILE
|
||||
#####
|
||||
##### built by ca@wiz.smi.sendmail.com on Fri Jul 30 11:06:26 PDT 2004
|
||||
##### in /extra/home/ca/sm-8.13.1/OpenSource/sendmail-8.13.1/cf/cf
|
||||
##### using ../ as configuration include directory
|
||||
#####
|
||||
######################################################################
|
||||
#####
|
||||
@ -24,15 +27,15 @@
|
||||
######################################################################
|
||||
######################################################################
|
||||
|
||||
##### $Id: cfhead.m4,v 8.108.2.6 2003/12/05 02:26:47 ca Exp $ #####
|
||||
##### $Id: cfhead.m4,v 8.116 2004/01/28 22:02:22 ca Exp $ #####
|
||||
##### $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $ #####
|
||||
##### $Id: submit.mc,v 8.6.2.7 2003/09/10 22:11:56 ca Exp $ #####
|
||||
##### $Id: msp.m4,v 1.32 2002/03/26 22:02:03 ca Exp $ #####
|
||||
##### $Id: submit.mc,v 8.13 2003/09/10 22:12:48 ca Exp $ #####
|
||||
##### $Id: msp.m4,v 1.33 2004/02/09 22:32:38 ca Exp $ #####
|
||||
|
||||
##### $Id: no_default_msa.m4,v 8.2 2001/02/14 05:03:22 gshapiro Exp $ #####
|
||||
|
||||
|
||||
##### $Id: proto.m4,v 8.649.2.30 2004/01/11 17:54:06 ca Exp $ #####
|
||||
##### $Id: proto.m4,v 8.710 2004/07/27 17:32:48 ca Exp $ #####
|
||||
|
||||
# level 10 config file format
|
||||
V10/Berkeley
|
||||
@ -111,7 +114,7 @@ D{MTAHost}[127.0.0.1]
|
||||
|
||||
|
||||
# Configuration version number
|
||||
DZ8.12.11/Submit
|
||||
DZ8.13.1/Submit
|
||||
|
||||
|
||||
###############
|
||||
@ -134,7 +137,7 @@ O AliasWait=10
|
||||
O MinFreeBlocks=100
|
||||
|
||||
# maximum message size
|
||||
#O MaxMessageSize=1000000
|
||||
#O MaxMessageSize=0
|
||||
|
||||
# substitution for space (blank) characters
|
||||
O BlankSub=.
|
||||
@ -277,19 +280,19 @@ O QueueDirectory=/var/spool/clientmqueue
|
||||
#O Timeout.quit=2m
|
||||
#O Timeout.misc=2m
|
||||
#O Timeout.command=1h
|
||||
O Timeout.ident=0
|
||||
#O Timeout.ident=5s
|
||||
#O Timeout.fileopen=60s
|
||||
#O Timeout.control=2m
|
||||
O Timeout.queuereturn=5d
|
||||
#O Timeout.queuereturn.normal=5d
|
||||
#O Timeout.queuereturn.urgent=2d
|
||||
#O Timeout.queuereturn.non-urgent=7d
|
||||
|
||||
#O Timeout.queuereturn.dsn=5d
|
||||
O Timeout.queuewarn=4h
|
||||
#O Timeout.queuewarn.normal=4h
|
||||
#O Timeout.queuewarn.urgent=1h
|
||||
#O Timeout.queuewarn.non-urgent=12h
|
||||
|
||||
#O Timeout.queuewarn.dsn=4h
|
||||
#O Timeout.hoststatus=30m
|
||||
#O Timeout.resolver.retrans=5s
|
||||
#O Timeout.resolver.retrans.first=5s
|
||||
@ -328,6 +331,9 @@ O TimeZoneSpec=
|
||||
# fallback MX host
|
||||
#O FallbackMXhost=fall.back.host.net
|
||||
|
||||
# fallback smart host
|
||||
#O FallbackSmartHost=fall.back.host.net
|
||||
|
||||
# if we are the best MX host for a site, try it directly instead of config err
|
||||
#O TryNullMXList=False
|
||||
|
||||
@ -337,6 +343,9 @@ O TimeZoneSpec=
|
||||
# load average at which we refuse connections
|
||||
#O RefuseLA=12
|
||||
|
||||
# log interval when refusing connections for this long
|
||||
#O RejectLogInterval=3h
|
||||
|
||||
# load average at which we delay connections; 0 means no limit
|
||||
#O DelayLA=0
|
||||
|
||||
@ -346,6 +355,9 @@ O TimeZoneSpec=
|
||||
# maximum number of new connections per second
|
||||
#O ConnectionRateThrottle=0
|
||||
|
||||
# Width of the window
|
||||
#O ConnectionRateWindowSize=60s
|
||||
|
||||
# work recipient factor
|
||||
#O RecipientFactor=30000
|
||||
|
||||
@ -418,11 +430,11 @@ O DontInitGroups=True
|
||||
O RunAsUser=smmsp
|
||||
|
||||
# maximum number of recipients per SMTP envelope
|
||||
#O MaxRecipientsPerMessage=100
|
||||
#O MaxRecipientsPerMessage=0
|
||||
|
||||
# limit the rate recipients per SMTP envelope are accepted
|
||||
# once the threshold number of recipients have been rejected
|
||||
#O BadRcptThrottle=20
|
||||
#O BadRcptThrottle=0
|
||||
|
||||
# shall we get local names from our installed interfaces?
|
||||
O DontProbeInterfaces=True
|
||||
@ -440,7 +452,7 @@ O TrustedUser=smmsp
|
||||
#O ControlSocketName=/var/spool/mqueue/.control
|
||||
|
||||
# Maximum MIME header length to protect MUAs
|
||||
#O MaxMimeHeaderLength=2048/1024
|
||||
#O MaxMimeHeaderLength=0/0
|
||||
|
||||
# Maximum length of the sum of all headers
|
||||
#O MaxHeadersLength=32768
|
||||
@ -463,9 +475,15 @@ O PidFile=/var/spool/clientmqueue/sm-client.pid
|
||||
# lookup type to find information about local mailboxes
|
||||
#O MailboxDatabase=pw
|
||||
|
||||
# override compile time flag REQUIRES_DIR_FSYNC
|
||||
#O RequiresDirfsync=true
|
||||
|
||||
# list of authentication mechanisms
|
||||
#O AuthMechanisms=EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5
|
||||
|
||||
# Authentication realm
|
||||
#O AuthRealm
|
||||
|
||||
# default authentication information for outgoing connections
|
||||
#O DefaultAuthInfo=/etc/mail/default-auth-info
|
||||
|
||||
@ -494,6 +512,8 @@ O PidFile=/var/spool/clientmqueue/sm-client.pid
|
||||
#O ClientCertFile
|
||||
# Client private key
|
||||
#O ClientKeyFile
|
||||
# File containing certificate revocation lists
|
||||
#O CRLFile
|
||||
# DHParameters (only required if DSA/DH is used)
|
||||
#O DHParameters
|
||||
# Random data source (required for systems without /dev/urandom under OpenSSL)
|
||||
@ -944,6 +964,8 @@ R<$+> $* $@ $2
|
||||
### check_relay -- check hostname/address on SMTP startup
|
||||
######################################################################
|
||||
|
||||
|
||||
|
||||
SLocal_check_relay
|
||||
Scheck_relay
|
||||
R$* $: $1 $| $>"Local_check_relay" $1
|
||||
@ -1086,6 +1108,7 @@ R$+ < @ $* $=R > $@ RELAY
|
||||
|
||||
|
||||
|
||||
|
||||
# check for local user (i.e. unqualified address)
|
||||
R$* $: <?> $1
|
||||
R<?> $* < @ $+ > $: <REMOTE> $1 < @ $2 >
|
||||
@ -1111,7 +1134,7 @@ R$=w $@ RELAY ... and see if it is local
|
||||
|
||||
# check client name: first: did it resolve?
|
||||
R$* $: < $&{client_resolve} >
|
||||
R<TEMP> $#TEMP $@ 4.7.1 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr}
|
||||
R<TEMP> $#TEMP $@ 4.4.0 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr}
|
||||
R<FORGED> $#error $@ 5.7.1 $: "550 Relaying denied. IP name possibly forged " $&{client_name}
|
||||
R<FAIL> $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed " $&{client_name}
|
||||
R$* $: <@> $&{client_name}
|
||||
@ -1151,6 +1174,28 @@ R$* $#error $@ 5.7.1 $: "550 " $&{auth_authen} " not allowed to act as " $&{au
|
||||
######################################################################
|
||||
SLocal_Relay_Auth
|
||||
|
||||
######################################################################
|
||||
### srv_features: which features to offer to a client?
|
||||
### (done in server)
|
||||
######################################################################
|
||||
Ssrv_features
|
||||
|
||||
|
||||
######################################################################
|
||||
### try_tls: try to use STARTTLS?
|
||||
### (done in client)
|
||||
######################################################################
|
||||
Stry_tls
|
||||
|
||||
|
||||
######################################################################
|
||||
### tls_rcpt: is connection with server "good" enough?
|
||||
### (done in client, per recipient)
|
||||
###
|
||||
### Parameters:
|
||||
### $1: recipient
|
||||
######################################################################
|
||||
Stls_rcpt
|
||||
|
||||
|
||||
######################################################################
|
||||
@ -1205,6 +1250,10 @@ Sauthinfo
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
SLocal_localaddr
|
||||
R$+ $: $>ParseRecipient $1
|
||||
R$* < @ $+ > $* $#relay $@ ${MTAHost} $: $1 < @ $2 > $3
|
||||
@ -1374,3 +1423,30 @@ Mrelay, P=[IPC], F=mDFMuXa8k, S=EnvFromSMTP/HdrFromSMTP, R=MasqSMTP, E=\r\n, L=
|
||||
T=DNS/RFC822/SMTP,
|
||||
A=TCP $h
|
||||
|
||||
### submit.mc ###
|
||||
# divert(-1)
|
||||
# #
|
||||
# # Copyright (c) 2001-2003 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.
|
||||
# #
|
||||
# #
|
||||
#
|
||||
# #
|
||||
# # This is the prototype file for a set-group-ID sm-msp sendmail that
|
||||
# # acts as a initial mail submission program.
|
||||
# #
|
||||
#
|
||||
# divert(0)dnl
|
||||
# VERSIONID(`$Id: submit.mc,v 8.13 2003/09/10 22:12:48 ca Exp $')
|
||||
# define(`confCF_VERSION', `Submit')dnl
|
||||
# define(`__OSTYPE__',`')dnl dirty hack to keep proto.m4 from complaining
|
||||
# define(`_USE_DECNET_SYNTAX_', `1')dnl support DECnet
|
||||
# define(`confTIME_ZONE', `USE_TZ')dnl
|
||||
# define(`confDONT_INIT_GROUPS', `True')dnl
|
||||
# dnl
|
||||
# dnl If you use IPv6 only, change [127.0.0.1] to [IPv6:::1]
|
||||
# FEATURE(`msp', `[127.0.0.1]')dnl
|
||||
|
@ -15,7 +15,7 @@ divert(-1)
|
||||
#
|
||||
|
||||
divert(0)dnl
|
||||
VERSIONID(`$Id: submit.mc,v 8.6.2.7 2003/09/10 22:11:56 ca Exp $')
|
||||
VERSIONID(`$Id: submit.mc,v 8.13 2003/09/10 22:12:48 ca Exp $')
|
||||
define(`confCF_VERSION', `Submit')dnl
|
||||
define(`__OSTYPE__',`')dnl dirty hack to keep proto.m4 from complaining
|
||||
define(`_USE_DECNET_SYNTAX_', `1')dnl support DECnet
|
||||
|
@ -1,6 +1,6 @@
|
||||
divert(-1)
|
||||
#
|
||||
# Copyright (c) 1998-2002 Sendmail, Inc. and its suppliers.
|
||||
# Copyright (c) 1998-2002, 2004 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: access_db.m4,v 8.24 2002/03/06 21:50:25 ca Exp $')
|
||||
VERSIONID(`$Id: access_db.m4,v 8.26 2004/06/24 18:10:02 ca Exp $')
|
||||
divert(-1)
|
||||
|
||||
define(`_ACCESS_TABLE_', `')
|
||||
@ -33,9 +33,12 @@ ifelse(defn(`_ARG_'), `', `',
|
||||
')
|
||||
')
|
||||
')
|
||||
ifdef(`_GREET_PAUSE_',
|
||||
`errprint(`*** WARNING: FEATURE(`greet_pause') before FEATURE(`access_db')
|
||||
greet_pause will not use access_db!')')
|
||||
|
||||
LOCAL_CONFIG
|
||||
# Access list database (for spam stomping)
|
||||
Kaccess ifelse(defn(`_ARG_'), `', DATABASE_MAP_TYPE -T`'_ATMPF_ MAIL_SETTINGS_DIR`access',
|
||||
defn(`_ARG_'), `LDAP', `ldap -T`'_ATMPF_ -1 -v sendmailMTAMapValue -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=access)(sendmailMTAKey=%0))',
|
||||
defn(`_ARG_'), `LDAP', `ldap -T`'_ATMPF_ -1 -v sendmailMTAMapValue,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=access)(sendmailMTAKey=%0))',
|
||||
defn(`_NARG_'), `', `_ARG_', `_NARG_')
|
||||
|
@ -1,6 +1,6 @@
|
||||
divert(-1)
|
||||
#
|
||||
# Copyright (c) 2000-2001 Sendmail, Inc. and its suppliers.
|
||||
# Copyright (c) 2000-2002 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: authinfo.m4,v 1.7 2001/03/16 00:51:25 gshapiro Exp $')
|
||||
VERSIONID(`$Id: authinfo.m4,v 1.9 2002/06/27 23:23:57 gshapiro Exp $')
|
||||
divert(-1)
|
||||
|
||||
define(`_AUTHINFO_TABLE_', `')
|
||||
@ -18,5 +18,5 @@ define(`_AUTHINFO_TABLE_', `')
|
||||
LOCAL_CONFIG
|
||||
# authinfo list database: contains info for authentication as client
|
||||
Kauthinfo ifelse(defn(`_ARG_'), `', DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`authinfo',
|
||||
defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=authinfo)(sendmailMTAKey=%0))',
|
||||
defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=authinfo)(sendmailMTAKey=%0))',
|
||||
`_ARG_')
|
||||
|
@ -1,6 +1,6 @@
|
||||
divert(-1)
|
||||
#
|
||||
# Copyright (c) 1998, 1999, 2001 Sendmail, Inc. and its suppliers.
|
||||
# Copyright (c) 1998, 1999, 2001-2002 Sendmail, Inc. and its suppliers.
|
||||
# All rights reserved.
|
||||
# Copyright (c) 1983 Eric P. Allman. All rights reserved.
|
||||
# Copyright (c) 1988, 1993
|
||||
@ -13,7 +13,7 @@ divert(-1)
|
||||
#
|
||||
|
||||
divert(0)
|
||||
VERSIONID(`$Id: bitdomain.m4,v 8.28 2001/03/16 00:51:25 gshapiro Exp $')
|
||||
VERSIONID(`$Id: bitdomain.m4,v 8.30 2002/06/27 23:23:57 gshapiro Exp $')
|
||||
divert(-1)
|
||||
|
||||
define(`_BITDOMAIN_TABLE_', `')
|
||||
@ -21,5 +21,5 @@ define(`_BITDOMAIN_TABLE_', `')
|
||||
LOCAL_CONFIG
|
||||
# BITNET mapping table
|
||||
Kbitdomain ifelse(defn(`_ARG_'), `', DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`bitdomain',
|
||||
defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=bitdomain)(sendmailMTAKey=%0))',
|
||||
defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=bitdomain)(sendmailMTAKey=%0))',
|
||||
`_ARG_')
|
||||
|
36
contrib/sendmail/cf/feature/conncontrol.m4
Normal file
36
contrib/sendmail/cf/feature/conncontrol.m4
Normal file
@ -0,0 +1,36 @@
|
||||
divert(-1)
|
||||
#
|
||||
# Copyright (c) 2003, 2004 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.
|
||||
#
|
||||
#
|
||||
|
||||
divert(0)
|
||||
VERSIONID(`$Id: conncontrol.m4,v 1.4 2004/02/19 21:31:47 ca Exp $')
|
||||
|
||||
divert(-1)
|
||||
ifdef(`_ACCESS_TABLE_', `
|
||||
define(`_CONN_CONTROL_', `1')
|
||||
ifelse(defn(`_ARG_'), `', `',
|
||||
strcasecmp(defn(`_ARG_'), `nodelay'), `1',
|
||||
`ifdef(`_DELAY_CHECKS_',
|
||||
`
|
||||
define(`_CONN_CONTROL_IMMEDIATE_', `1')
|
||||
define(`_CONTROL_IMMEDIATE_', `1')
|
||||
',
|
||||
`errprint(`*** ERROR: FEATURE(`conncontrol', `nodelay') requires FEATURE(`delay_checks')')'
|
||||
)',
|
||||
`errprint(`*** ERROR: unknown parameter '"defn(`_ARG_')"` for FEATURE(`conncontrol')')')
|
||||
define(`_FFR_SRCHLIST_A', `1')
|
||||
ifelse(len(X`'_ARG2_), `1', `',
|
||||
_ARG2_, `terminate', `define(`_CONN_CONTROL_REPLY', `421')',
|
||||
`errprint(`*** ERROR: FEATURE(`conncontrol'): unknown argument '"_ARG2_"
|
||||
)'
|
||||
)
|
||||
', `errprint(`*** ERROR: FEATURE(`conncontrol') requires FEATURE(`access_db')
|
||||
')')
|
||||
ifdef(`_CONN_CONTROL_REPLY',,`define(`_CONN_CONTROL_REPLY', `452')')
|
@ -9,11 +9,10 @@ divert(-1)
|
||||
#
|
||||
#
|
||||
|
||||
dnl 8.13: ifdef(`DNSBL_MAP', `', `define(`DNSBL_MAP', `dns -R A')')
|
||||
ifdef(`DNSBL_MAP', `', `define(`DNSBL_MAP', `host')')
|
||||
ifdef(`DNSBL_MAP', `', `define(`DNSBL_MAP', `dns -R A')')
|
||||
divert(0)
|
||||
ifdef(`_DNSBL_R_',`dnl',`dnl
|
||||
VERSIONID(`$Id: dnsbl.m4,v 8.28 2002/05/19 21:22:40 gshapiro Exp $')
|
||||
VERSIONID(`$Id: dnsbl.m4,v 8.29 2002/08/09 21:02:08 ca Exp $')
|
||||
define(`_DNSBL_R_',`')
|
||||
LOCAL_CONFIG
|
||||
# map for DNS based blacklist lookups
|
||||
|
@ -1,6 +1,6 @@
|
||||
divert(-1)
|
||||
#
|
||||
# Copyright (c) 1998, 1999, 2001 Sendmail, Inc. and its suppliers.
|
||||
# Copyright (c) 1998, 1999, 2001-2002 Sendmail, Inc. and its suppliers.
|
||||
# All rights reserved.
|
||||
# Copyright (c) 1983 Eric P. Allman. All rights reserved.
|
||||
# Copyright (c) 1988, 1993
|
||||
@ -13,7 +13,7 @@ divert(-1)
|
||||
#
|
||||
|
||||
divert(0)
|
||||
VERSIONID(`$Id: domaintable.m4,v 8.22 2001/03/16 00:51:25 gshapiro Exp $')
|
||||
VERSIONID(`$Id: domaintable.m4,v 8.24 2002/06/27 23:23:57 gshapiro Exp $')
|
||||
divert(-1)
|
||||
|
||||
define(`_DOMAIN_TABLE_', `')
|
||||
@ -21,5 +21,5 @@ define(`_DOMAIN_TABLE_', `')
|
||||
LOCAL_CONFIG
|
||||
# Domain table (adding domains)
|
||||
Kdomaintable ifelse(defn(`_ARG_'), `', DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`domaintable',
|
||||
defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=domain)(sendmailMTAKey=%0))',
|
||||
defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=domain)(sendmailMTAKey=%0))',
|
||||
`_ARG_')
|
||||
|
@ -1,6 +1,6 @@
|
||||
divert(-1)
|
||||
#
|
||||
# Copyright (c) 1998, 1999, 2001 Sendmail, Inc. and its suppliers.
|
||||
# Copyright (c) 1998, 1999, 2001-2002 Sendmail, Inc. and its suppliers.
|
||||
# All rights reserved.
|
||||
# Copyright (c) 1983 Eric P. Allman. All rights reserved.
|
||||
# Copyright (c) 1988, 1993
|
||||
@ -13,7 +13,7 @@ divert(-1)
|
||||
#
|
||||
|
||||
divert(0)
|
||||
VERSIONID(`$Id: genericstable.m4,v 8.21 2001/03/16 00:51:26 gshapiro Exp $')
|
||||
VERSIONID(`$Id: genericstable.m4,v 8.23 2002/06/27 23:23:57 gshapiro Exp $')
|
||||
divert(-1)
|
||||
|
||||
define(`_GENERICS_TABLE_', `')
|
||||
@ -21,5 +21,5 @@ define(`_GENERICS_TABLE_', `')
|
||||
LOCAL_CONFIG
|
||||
# Generics table (mapping outgoing addresses)
|
||||
Kgenerics ifelse(defn(`_ARG_'), `', DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`genericstable',
|
||||
defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=generics)(sendmailMTAKey=%0))',
|
||||
defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=generics)(sendmailMTAKey=%0))',
|
||||
`_ARG_')
|
||||
|
44
contrib/sendmail/cf/feature/greet_pause.m4
Normal file
44
contrib/sendmail/cf/feature/greet_pause.m4
Normal file
@ -0,0 +1,44 @@
|
||||
divert(-1)
|
||||
#
|
||||
# Copyright (c) 2004 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.
|
||||
#
|
||||
#
|
||||
|
||||
divert(0)
|
||||
VERSIONID(`$Id: greet_pause.m4,v 1.4 2004/07/06 20:49:51 ca Exp $')
|
||||
divert(-1)
|
||||
|
||||
ifelse(len(X`'_ARG_),`1',`ifdef(`_ACCESS_TABLE_', `',
|
||||
`errprint(`*** ERROR: FEATURE(`greet_pause') requires FEATURE(`access_db')
|
||||
')')')
|
||||
|
||||
define(`_GREET_PAUSE_', `')
|
||||
|
||||
LOCAL_RULESETS
|
||||
######################################################################
|
||||
### greet_pause: lookup pause time before 220 greeting
|
||||
###
|
||||
### Parameters:
|
||||
### $1: {client_name}
|
||||
### $2: {client_addr}
|
||||
######################################################################
|
||||
SLocal_greet_pause
|
||||
Sgreet_pause
|
||||
R$* $: <$1><?> $| $>"Local_greet_pause" $1
|
||||
R<$*><?> $| $#$* $#$2
|
||||
R<$*><?> $| $* $: $1
|
||||
ifdef(`_ACCESS_TABLE_', `dnl
|
||||
R$+ $| $+ $: $>D < $1 > <?> <! GreetPause> < $2 >
|
||||
R $| $+ $: $>A < $1 > <?> <! GreetPause> <> empty client_name
|
||||
R<?> <$+> $: $>A < $1 > <?> <! GreetPause> <> no: another lookup
|
||||
ifelse(len(X`'_ARG_),`1',
|
||||
`R<?> <$*> $@',
|
||||
`R<?> <$*> $# _ARG_')
|
||||
R<$* <TMPF>> <$*> $@
|
||||
R<$+> <$*> $# $1',`dnl
|
||||
R$* $# _ARG_')
|
@ -1,6 +1,6 @@
|
||||
divert(-1)
|
||||
#
|
||||
# Copyright (c) 1999-2002 Sendmail, Inc. and its suppliers.
|
||||
# Copyright (c) 1999-2002, 2004 Sendmail, Inc. and its suppliers.
|
||||
# All rights reserved.
|
||||
#
|
||||
# By using this file, you agree to the terms and conditions set
|
||||
@ -10,24 +10,31 @@ divert(-1)
|
||||
#
|
||||
|
||||
divert(0)
|
||||
VERSIONID(`$Id: ldap_routing.m4,v 8.10 2002/03/27 22:17:43 ca Exp $')
|
||||
VERSIONID(`$Id: ldap_routing.m4,v 8.14 2004/02/18 02:45:11 gshapiro Exp $')
|
||||
divert(-1)
|
||||
|
||||
# Check first two arguments. If they aren't set, may need to warn in proto.m4
|
||||
ifelse(len(X`'_ARG1_), `1', `define(`_LDAP_ROUTING_WARN_', `yes')')
|
||||
ifelse(len(X`'_ARG2_), `1', `define(`_LDAP_ROUTING_WARN_', `yes')')
|
||||
ifelse(len(X`'_ARG5_), `1', `', `define(`_LDAP_ROUTE_NODOMAIN_', `yes')')
|
||||
|
||||
# Check for third argument to indicate how to deal with non-existant
|
||||
# LDAP records
|
||||
ifelse(len(X`'_ARG3_), `1', `define(`_LDAP_ROUTING_', `_PASS_THROUGH_')',
|
||||
_ARG3_, `passthru', `define(`_LDAP_ROUTING_', `_PASS_THROUGH_')',
|
||||
_ARG3_, `sendertoo', `define(`_LDAP_ROUTING_', `_MUST_EXIST_')define(`_LDAP_SENDER_MUST_EXIST_')',
|
||||
`define(`_LDAP_ROUTING_', `_MUST_EXIST_')')
|
||||
|
||||
# Check for fouth argument to indicate how to deal with +detail info
|
||||
# Check for fourth argument to indicate how to deal with +detail info
|
||||
ifelse(len(X`'_ARG4_), `1', `',
|
||||
_ARG4_, `strip', `define(`_LDAP_ROUTE_DETAIL_', `_STRIP_')',
|
||||
_ARG4_, `preserve', `define(`_LDAP_ROUTE_DETAIL_', `_PRESERVE_')')
|
||||
|
||||
# Check for sixth argument to indicate how to deal with tempfails
|
||||
ifelse(len(X`'_ARG6_), `1', `define(`_LDAP_ROUTE_MAPTEMP_', `_QUEUE_')',
|
||||
_ARG6_, `tempfail', `define(`_LDAP_ROUTE_MAPTEMP_', `_TEMPFAIL_')',
|
||||
_ARG6_, `queue', `define(`_LDAP_ROUTE_MAPTEMP_', `_QUEUE_')')
|
||||
|
||||
LOCAL_CONFIG
|
||||
# LDAP routing maps
|
||||
Kldapmh ifelse(len(X`'_ARG1_), `1',
|
||||
|
@ -1,6 +1,6 @@
|
||||
divert(-1)
|
||||
#
|
||||
# Copyright (c) 1998-2000 Sendmail, Inc. and its suppliers.
|
||||
# Copyright (c) 1998-2000, 2002 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: local_lmtp.m4,v 8.16 2000/08/18 18:58:45 ca Exp $')
|
||||
VERSIONID(`$Id: local_lmtp.m4,v 8.17 2002/11/17 04:41:04 ca Exp $')
|
||||
divert(-1)
|
||||
|
||||
ifdef(`_MAILER_local_',
|
||||
@ -21,7 +21,8 @@ define(`LOCAL_MAILER_PATH',
|
||||
ifelse(defn(`_ARG_'), `',
|
||||
ifdef(`confEBINDIR', confEBINDIR, `/usr/libexec')`/mail.local',
|
||||
_ARG_))
|
||||
define(`LOCAL_MAILER_FLAGS', `PSXfmnz9')
|
||||
define(`LOCAL_MAILER_ARGS', `mail.local -l')
|
||||
define(`LOCAL_MAILER_FLAGS', `PSXmnz9')
|
||||
define(`LOCAL_MAILER_ARGS',
|
||||
ifelse(len(X`'_ARG2_), `1', `mail.local -l', _ARG2_))
|
||||
define(`LOCAL_MAILER_DSN_DIAGNOSTIC_CODE', `SMTP')
|
||||
define(`_LOCAL_LMTP_', `1')
|
||||
|
@ -13,7 +13,7 @@ divert(-1)
|
||||
#
|
||||
|
||||
divert(0)
|
||||
VERSIONID(`$Id: local_procmail.m4,v 8.21.42.1 2002/11/17 04:25:07 ca Exp $')
|
||||
VERSIONID(`$Id: local_procmail.m4,v 8.22 2002/11/17 04:24:19 ca Exp $')
|
||||
divert(-1)
|
||||
|
||||
ifdef(`_MAILER_local_',
|
||||
|
@ -1,6 +1,6 @@
|
||||
divert(-1)
|
||||
#
|
||||
# Copyright (c) 1998, 1999, 2001 Sendmail, Inc. and its suppliers.
|
||||
# Copyright (c) 1998, 1999, 2001-2002 Sendmail, Inc. and its suppliers.
|
||||
# All rights reserved.
|
||||
# Copyright (c) 1983 Eric P. Allman. All rights reserved.
|
||||
# Copyright (c) 1988, 1993
|
||||
@ -13,7 +13,7 @@ divert(-1)
|
||||
#
|
||||
|
||||
divert(0)
|
||||
VERSIONID(`$Id: mailertable.m4,v 8.23 2001/03/16 00:51:26 gshapiro Exp $')
|
||||
VERSIONID(`$Id: mailertable.m4,v 8.25 2002/06/27 23:23:57 gshapiro Exp $')
|
||||
divert(-1)
|
||||
|
||||
define(`_MAILER_TABLE_', `')
|
||||
@ -21,5 +21,5 @@ define(`_MAILER_TABLE_', `')
|
||||
LOCAL_CONFIG
|
||||
# Mailer table (overriding domains)
|
||||
Kmailertable ifelse(defn(`_ARG_'), `', DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`mailertable',
|
||||
defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=mailer)(sendmailMTAKey=%0))',
|
||||
defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=mailer)(sendmailMTAKey=%0))',
|
||||
`_ARG_')
|
||||
|
@ -1,6 +1,6 @@
|
||||
divert(-1)
|
||||
#
|
||||
# Copyright (c) 2000-2002 Sendmail, Inc. and its suppliers.
|
||||
# Copyright (c) 2000-2002, 2004 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)dnl
|
||||
VERSIONID(`$Id: msp.m4,v 1.32 2002/03/26 22:02:03 ca Exp $')
|
||||
VERSIONID(`$Id: msp.m4,v 1.33 2004/02/09 22:32:38 ca Exp $')
|
||||
divert(-1)
|
||||
undefine(`ALIAS_FILE')
|
||||
define(`confDELIVERY_MODE', `i')
|
||||
@ -21,7 +21,9 @@ define(`confDONT_PROBE_INTERFACES', `True')
|
||||
dnl ---------------------------------------------
|
||||
dnl run as this user (even if called by root)
|
||||
ifdef(`confRUN_AS_USER',,`define(`confRUN_AS_USER', `smmsp')')
|
||||
ifdef(`confTRUSTED_USER',,`define(`confTRUSTED_USER', confRUN_AS_USER)')
|
||||
ifdef(`confTRUSTED_USER',,`define(`confTRUSTED_USER',
|
||||
`ifelse(index(confRUN_AS_USER,`:'), -1, `confRUN_AS_USER',
|
||||
`substr(confRUN_AS_USER,0,index(confRUN_AS_USER,`:'))')')')
|
||||
dnl ---------------------------------------------
|
||||
dnl This queue directory must have the same group
|
||||
dnl as sendmail and it must be group-writable.
|
||||
|
33
contrib/sendmail/cf/feature/mtamark.m4
Normal file
33
contrib/sendmail/cf/feature/mtamark.m4
Normal file
@ -0,0 +1,33 @@
|
||||
divert(-1)
|
||||
#
|
||||
# Copyright (c) 2004 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.
|
||||
#
|
||||
#
|
||||
|
||||
divert(0)
|
||||
ifdef(`_MTAMARK_R',`dnl',`dnl
|
||||
VERSIONID(`$Id: mtamark.m4,v 1.1 2004/03/22 19:22:40 ca Exp $')
|
||||
LOCAL_CONFIG
|
||||
define(`_MTAMARK_R',`')dnl
|
||||
# map for MTA mark
|
||||
Kmtamark dns -R TXT -a. -T<TMP> -r`'ifdef(`MTAMARK_TO',`MTAMARK_TO',`5')
|
||||
')
|
||||
divert(-1)
|
||||
define(`_MTAMARK_RR_', `ifelse(len(X`'_ARG3_),`1',`_perm._smtp._srv',`_ARG3_')')dnl
|
||||
define(`_MTAMARK_MSG_', `ifelse(len(X`'_ARG_),`1',`"550 Rejected: " $`'&{client_addr} " not listed as MTA"',`_ARG_')')dnl
|
||||
define(`_MTAMARK_MSG_TMP_', `ifelse(_ARG2_,`t',`"451 Temporary lookup failure of " _MTAMARK_RR_.$`'&{client_addr}',`_ARG2_')')dnl
|
||||
divert(8)
|
||||
# DNS based IP MTA list
|
||||
R$* $: $&{client_addr}
|
||||
R$-.$-.$-.$- $: <?> $(mtamark _MTAMARK_RR_.$4.$3.$2.$1.in-addr.arpa. $: OK $)
|
||||
R<?>1. $: OKSOFAR
|
||||
R<?>0. $#error $@ 5.7.1 $: _MTAMARK_MSG_
|
||||
ifelse(len(X`'_ARG2_),`1',
|
||||
`R<?>$+<TMP> $: TMPOK',
|
||||
`R<?>$+<TMP> $#error $@ 4.7.1 $: _MTAMARK_MSG_TMP_')
|
||||
divert(-1)
|
36
contrib/sendmail/cf/feature/ratecontrol.m4
Normal file
36
contrib/sendmail/cf/feature/ratecontrol.m4
Normal file
@ -0,0 +1,36 @@
|
||||
divert(-1)
|
||||
#
|
||||
# Copyright (c) 2003, 2004 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.
|
||||
#
|
||||
#
|
||||
|
||||
divert(0)
|
||||
VERSIONID(`$Id: ratecontrol.m4,v 1.5 2004/02/19 21:31:47 ca Exp $')
|
||||
|
||||
divert(-1)
|
||||
ifdef(`_ACCESS_TABLE_', `
|
||||
define(`_RATE_CONTROL_', `1')
|
||||
ifelse(defn(`_ARG_'), `', `',
|
||||
strcasecmp(defn(`_ARG_'), `nodelay'), `1',
|
||||
`ifdef(`_DELAY_CHECKS_',
|
||||
`
|
||||
define(`_RATE_CONTROL_IMMEDIATE_', `1')
|
||||
define(`_CONTROL_IMMEDIATE_', `1')
|
||||
',
|
||||
`errprint(`*** ERROR: FEATURE(`ratecontrol', `nodelay') requires FEATURE(`delay_checks')')'
|
||||
)',
|
||||
`errprint(`*** ERROR: unknown parameter '"defn(`_ARG_')"` for FEATURE(`ratecontrol')')')
|
||||
define(`_FFR_SRCHLIST_A', `1')
|
||||
ifelse(len(X`'_ARG2_), `1', `',
|
||||
_ARG2_, `terminate', `define(`_RATE_CONTROL_REPLY', `421')',
|
||||
`errprint(`*** ERROR: FEATURE(`ratecontrol'): unknown argument '"_ARG2_"
|
||||
)'
|
||||
)
|
||||
', `errprint(`*** ERROR: FEATURE(`ratecontrol') requires FEATURE(`access_db')
|
||||
')')
|
||||
ifdef(`_RATE_CONTROL_REPLY',,`define(`_RATE_CONTROL_REPLY', `452')')
|
21
contrib/sendmail/cf/feature/use_client_ptr.m4
Normal file
21
contrib/sendmail/cf/feature/use_client_ptr.m4
Normal file
@ -0,0 +1,21 @@
|
||||
divert(-1)
|
||||
#
|
||||
# Copyright (c) 2004 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.
|
||||
#
|
||||
#
|
||||
|
||||
divert(0)
|
||||
VERSIONID(`$Id: use_client_ptr.m4,v 1.1 2004/04/20 22:27:14 ca Exp $')
|
||||
divert(-1)
|
||||
|
||||
# if defined, check_relay will use {client_ptr} instead of whatever
|
||||
# is passed in as its first argument.
|
||||
|
||||
define(`_USE_CLIENT_PTR_', `1')
|
||||
|
||||
divert(0)
|
@ -1,6 +1,6 @@
|
||||
divert(-1)
|
||||
#
|
||||
# Copyright (c) 1998, 1999, 2001 Sendmail, Inc. and its suppliers.
|
||||
# Copyright (c) 1998, 1999, 2001-2002 Sendmail, Inc. and its suppliers.
|
||||
# All rights reserved.
|
||||
# Copyright (c) 1983 Eric P. Allman. All rights reserved.
|
||||
# Copyright (c) 1988, 1993
|
||||
@ -13,7 +13,7 @@ divert(-1)
|
||||
#
|
||||
|
||||
divert(0)
|
||||
VERSIONID(`$Id: uucpdomain.m4,v 8.27 2001/03/16 00:51:26 gshapiro Exp $')
|
||||
VERSIONID(`$Id: uucpdomain.m4,v 8.29 2002/06/27 23:23:57 gshapiro Exp $')
|
||||
divert(-1)
|
||||
|
||||
define(`_UUDOMAIN_TABLE_', `')
|
||||
@ -21,5 +21,5 @@ define(`_UUDOMAIN_TABLE_', `')
|
||||
LOCAL_CONFIG
|
||||
# UUCP domain table
|
||||
Kuudomain ifelse(defn(`_ARG_'), `', DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`uudomain',
|
||||
defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=uucpdomain)(sendmailMTAKey=%0))',
|
||||
defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=uucpdomain)(sendmailMTAKey=%0))',
|
||||
`_ARG_')
|
||||
|
@ -1,6 +1,6 @@
|
||||
divert(-1)
|
||||
#
|
||||
# Copyright (c) 1998, 1999, 2001 Sendmail, Inc. and its suppliers.
|
||||
# Copyright (c) 1998, 1999, 2001-2002 Sendmail, Inc. and its suppliers.
|
||||
# All rights reserved.
|
||||
# Copyright (c) 1983 Eric P. Allman. All rights reserved.
|
||||
# Copyright (c) 1988, 1993
|
||||
@ -13,7 +13,7 @@ divert(-1)
|
||||
#
|
||||
|
||||
divert(0)
|
||||
VERSIONID(`$Id: virtusertable.m4,v 8.21 2001/03/16 00:51:26 gshapiro Exp $')
|
||||
VERSIONID(`$Id: virtusertable.m4,v 8.23 2002/06/27 23:23:57 gshapiro Exp $')
|
||||
divert(-1)
|
||||
|
||||
define(`_VIRTUSER_TABLE_', `')
|
||||
@ -21,5 +21,5 @@ define(`_VIRTUSER_TABLE_', `')
|
||||
LOCAL_CONFIG
|
||||
# Virtual user table (maps incoming users)
|
||||
Kvirtuser ifelse(defn(`_ARG_'), `', DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`virtusertable',
|
||||
defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=virtuser)(sendmailMTAKey=%0))',
|
||||
defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=virtuser)(sendmailMTAKey=%0))',
|
||||
`_ARG_')
|
||||
|
@ -13,7 +13,7 @@ divert(-1)
|
||||
#
|
||||
divert(0)
|
||||
|
||||
VERSIONID(`$Id: proto.m4,v 8.649.2.30 2004/01/11 17:54:06 ca Exp $')
|
||||
VERSIONID(`$Id: proto.m4,v 8.710 2004/07/27 17:32:48 ca Exp $')
|
||||
|
||||
# level CF_LEVEL config file format
|
||||
V`'CF_LEVEL/ifdef(`VENDOR_NAME', `VENDOR_NAME', `Berkeley')
|
||||
@ -197,7 +197,7 @@ ifdef(`_MACRO_MAP_', `', `# macro storage map
|
||||
define(`_MACRO_MAP_', `1')dnl
|
||||
Kmacro macro')
|
||||
# possible values for TLS_connection in access map
|
||||
C{tls}VERIFY ENCR', `dnl')
|
||||
C{Tls}VERIFY ENCR', `dnl')
|
||||
ifdef(`_CERT_REGEX_ISSUER_', `dnl
|
||||
# extract relevant part from cert issuer
|
||||
KCERTIssuer regex _CERT_REGEX_ISSUER_', `dnl')
|
||||
@ -261,7 +261,7 @@ _OPTION(AliasFile, `ALIAS_FILE', `MAIL_SETTINGS_DIR`'aliases')
|
||||
_OPTION(MinFreeBlocks, `confMIN_FREE_BLOCKS', `100')
|
||||
|
||||
# maximum message size
|
||||
_OPTION(MaxMessageSize, `confMAX_MESSAGE_SIZE', `1000000')
|
||||
_OPTION(MaxMessageSize, `confMAX_MESSAGE_SIZE', `0')
|
||||
|
||||
# substitution for space (blank) characters
|
||||
_OPTION(BlankSub, `confBLANK_SUB', `_')
|
||||
@ -425,14 +425,12 @@ _OPTION(Timeout.queuereturn, `confTO_QUEUERETURN', `5d')
|
||||
_OPTION(Timeout.queuereturn.normal, `confTO_QUEUERETURN_NORMAL', `5d')
|
||||
_OPTION(Timeout.queuereturn.urgent, `confTO_QUEUERETURN_URGENT', `2d')
|
||||
_OPTION(Timeout.queuereturn.non-urgent, `confTO_QUEUERETURN_NONURGENT', `7d')
|
||||
ifdef(`confTO_QUEUERETURN_DSN', `dnl
|
||||
O Timeout.queuereturn.dsn=confTO_QUEUERETURN_DSN')
|
||||
_OPTION(Timeout.queuereturn.dsn, `confTO_QUEUERETURN_DSN', `5d')
|
||||
_OPTION(Timeout.queuewarn, `confTO_QUEUEWARN', `4h')
|
||||
_OPTION(Timeout.queuewarn.normal, `confTO_QUEUEWARN_NORMAL', `4h')
|
||||
_OPTION(Timeout.queuewarn.urgent, `confTO_QUEUEWARN_URGENT', `1h')
|
||||
_OPTION(Timeout.queuewarn.non-urgent, `confTO_QUEUEWARN_NONURGENT', `12h')
|
||||
ifdef(`confTO_QUEUEWARN_DSN', `dnl
|
||||
O Timeout.queuewarn.dsn=confTO_QUEUEWARN_DSN')
|
||||
_OPTION(Timeout.queuewarn.dsn, `confTO_QUEUEWARN_DSN', `4h')
|
||||
_OPTION(Timeout.hoststatus, `confTO_HOSTSTATUS', `30m')
|
||||
_OPTION(Timeout.resolver.retrans, `confTO_RESOLVER_RETRANS', `5s')
|
||||
_OPTION(Timeout.resolver.retrans.first, `confTO_RESOLVER_RETRANS_FIRST', `5s')
|
||||
@ -473,6 +471,9 @@ _OPTION(UserDatabaseSpec, `confUSERDB_SPEC', `MAIL_SETTINGS_DIR`'userdb')
|
||||
# fallback MX host
|
||||
_OPTION(FallbackMXhost, `confFALLBACK_MX', `fall.back.host.net')
|
||||
|
||||
# fallback smart host
|
||||
_OPTION(FallbackSmartHost, `confFALLBACK_SMARTHOST', `fall.back.host.net')
|
||||
|
||||
# if we are the best MX host for a site, try it directly instead of config err
|
||||
_OPTION(TryNullMXList, `confTRY_NULL_MX_LIST', `False')
|
||||
|
||||
@ -482,6 +483,9 @@ _OPTION(QueueLA, `confQUEUE_LA', `8')
|
||||
# load average at which we refuse connections
|
||||
_OPTION(RefuseLA, `confREFUSE_LA', `12')
|
||||
|
||||
# log interval when refusing connections for this long
|
||||
_OPTION(RejectLogInterval, `confREJECT_LOG_INTERVAL', `3h')
|
||||
|
||||
# load average at which we delay connections; 0 means no limit
|
||||
_OPTION(DelayLA, `confDELAY_LA', `0')
|
||||
|
||||
@ -491,6 +495,9 @@ _OPTION(MaxDaemonChildren, `confMAX_DAEMON_CHILDREN', `0')
|
||||
# maximum number of new connections per second
|
||||
_OPTION(ConnectionRateThrottle, `confCONNECTION_RATE_THROTTLE', `0')
|
||||
|
||||
# Width of the window
|
||||
_OPTION(ConnectionRateWindowSize, `confCONNECTION_RATE_WINDOW_SIZE', `60s')
|
||||
|
||||
# work recipient factor
|
||||
_OPTION(RecipientFactor, `confWORK_RECIPIENT_FACTOR', `30000')
|
||||
|
||||
@ -565,11 +572,11 @@ _OPTION(DeadLetterDrop, `confDEAD_LETTER_DROP', `/var/tmp/dead.letter')
|
||||
_OPTION(RunAsUser, `confRUN_AS_USER', `sendmail')
|
||||
|
||||
# maximum number of recipients per SMTP envelope
|
||||
_OPTION(MaxRecipientsPerMessage, `confMAX_RCPTS_PER_MESSAGE', `100')
|
||||
_OPTION(MaxRecipientsPerMessage, `confMAX_RCPTS_PER_MESSAGE', `0')
|
||||
|
||||
# limit the rate recipients per SMTP envelope are accepted
|
||||
# once the threshold number of recipients have been rejected
|
||||
_OPTION(BadRcptThrottle, `confBAD_RCPT_THROTTLE', `20')
|
||||
_OPTION(BadRcptThrottle, `confBAD_RCPT_THROTTLE', `0')
|
||||
|
||||
# shall we get local names from our installed interfaces?
|
||||
_OPTION(DontProbeInterfaces, `confDONT_PROBE_INTERFACES', `False')
|
||||
@ -587,7 +594,7 @@ _OPTION(TrustedUser, `confTRUSTED_USER', `root')
|
||||
_OPTION(ControlSocketName, `confCONTROL_SOCKET_NAME', `/var/spool/mqueue/.control')
|
||||
|
||||
# Maximum MIME header length to protect MUAs
|
||||
_OPTION(MaxMimeHeaderLength, `confMAX_MIME_HEADER_LENGTH', `2048/1024')
|
||||
_OPTION(MaxMimeHeaderLength, `confMAX_MIME_HEADER_LENGTH', `0/0')
|
||||
|
||||
# Maximum length of the sum of all headers
|
||||
_OPTION(MaxHeadersLength, `confMAX_HEADERS_LENGTH', `32768')
|
||||
@ -610,9 +617,15 @@ _OPTION(XscriptFileBufferSize, `confXF_BUFFER_SIZE', `4096')
|
||||
# lookup type to find information about local mailboxes
|
||||
_OPTION(MailboxDatabase, `confMAILBOX_DATABASE', `pw')
|
||||
|
||||
# override compile time flag REQUIRES_DIR_FSYNC
|
||||
_OPTION(RequiresDirfsync, `confREQUIRES_DIR_FSYNC', `true')
|
||||
|
||||
# list of authentication mechanisms
|
||||
_OPTION(AuthMechanisms, `confAUTH_MECHANISMS', `EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5')
|
||||
|
||||
# Authentication realm
|
||||
_OPTION(AuthRealm, `confAUTH_REALM', `')
|
||||
|
||||
# default authentication information for outgoing connections
|
||||
_OPTION(DefaultAuthInfo, `confDEF_AUTH_INFO', `MAIL_SETTINGS_DIR`'default-auth-info')
|
||||
|
||||
@ -635,7 +648,7 @@ _OPTION(Milter.macros.connect, `confMILTER_MACROS_CONNECT', `')
|
||||
_OPTION(Milter.macros.helo, `confMILTER_MACROS_HELO', `')
|
||||
_OPTION(Milter.macros.envfrom, `confMILTER_MACROS_ENVFROM', `')
|
||||
_OPTION(Milter.macros.envrcpt, `confMILTER_MACROS_ENVRCPT', `')
|
||||
')
|
||||
_OPTION(Milter.macros.eom, `confMILTER_MACROS_EOM', `')')
|
||||
|
||||
# CA directory
|
||||
_OPTION(CACertPath, `confCACERT_PATH', `')
|
||||
@ -649,6 +662,8 @@ _OPTION(ServerKeyFile, `confSERVER_KEY', `')
|
||||
_OPTION(ClientCertFile, `confCLIENT_CERT', `')
|
||||
# Client private key
|
||||
_OPTION(ClientKeyFile, `confCLIENT_KEY', `')
|
||||
# File containing certificate revocation lists
|
||||
_OPTION(CRLFile, `confCRL', `')
|
||||
# DHParameters (only required if DSA/DH is used)
|
||||
_OPTION(DHParameters, `confDH_PARAMETERS', `')
|
||||
# Random data source (required for systems without /dev/urandom under OpenSSL)
|
||||
@ -685,6 +700,7 @@ ifdef(`confTRUSTED_USERS', `T`'confTRUSTED_USERS', `dnl')
|
||||
#########################
|
||||
|
||||
ifdef(`confFROM_HEADER',, `define(`confFROM_HEADER', `$?x$x <$g>$|$g$.')')dnl
|
||||
ifdef(`confMESSAGEID_HEADER',, `define(`confMESSAGEID_HEADER', `<$t.$i@$j>')')dnl
|
||||
H?P?Return-Path: <$g>
|
||||
HReceived: confRECEIVED_HEADER
|
||||
H?D?Resent-Date: $a
|
||||
@ -694,8 +710,8 @@ H?F?From: confFROM_HEADER
|
||||
H?x?Full-Name: $x
|
||||
# HPosted-Date: $a
|
||||
# H?l?Received-Date: $b
|
||||
H?M?Resent-Message-Id: <$t.$i@$j>
|
||||
H?M?Message-Id: <$t.$i@$j>
|
||||
H?M?Resent-Message-Id: confMESSAGEID_HEADER
|
||||
H?M?Message-Id: confMESSAGEID_HEADER
|
||||
|
||||
#
|
||||
######################################################################
|
||||
@ -1429,13 +1445,21 @@ ifdef(`_LDAP_ROUTING_', `dnl
|
||||
### Parsed address (user < @ domain . >)
|
||||
######################################################################
|
||||
|
||||
# SMTP operation modes
|
||||
C{SMTPOpModes} s d D
|
||||
|
||||
SLDAPExpand
|
||||
# do the LDAP lookups
|
||||
R<$+><$+><$*> $: <$(ldapmra $2 $: $)> <$(ldapmh $2 $: $)> <$1> <$2> <$3>
|
||||
|
||||
# look for temporary failures (return original address, MTA will queue up)
|
||||
R<$* <TMPF>> <$*> <$+> <$+> <$*> $@ $3
|
||||
R<$*> <$* <TMPF>> <$+> <$+> <$*> $@ $3
|
||||
# look for temporary failures and...
|
||||
R<$* <TMPF>> <$*> <$+> <$+> <$*> $: $&{opMode} $| TMPF <$&{addr_type}> $| $3
|
||||
R<$*> <$* <TMPF>> <$+> <$+> <$*> $: $&{opMode} $| TMPF <$&{addr_type}> $| $3
|
||||
ifelse(_LDAP_ROUTE_MAPTEMP_, `_TEMPFAIL_', `dnl
|
||||
# ... temp fail RCPT SMTP commands
|
||||
R$={SMTPOpModes} $| TMPF <e r> $| $+ $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."')
|
||||
# ... return original address for MTA to queue up
|
||||
R$* $| TMPF <$*> $| $+ $@ $3
|
||||
|
||||
# if mailRoutingAddress and local or non-existant mailHost,
|
||||
# return the new mailRoutingAddress
|
||||
@ -1475,11 +1499,12 @@ ifdef(`_LDAP_ROUTE_DETAIL_',
|
||||
# try without +detail
|
||||
R<> <> <$+> <$+ + $* @ $+> <> $@ $>LDAPExpand <$1> <$2 @ $4> <+$3>')dnl
|
||||
|
||||
ifdef(`_LDAP_ROUTE_NODOMAIN_', `dnl', `
|
||||
# if still no mailRoutingAddress and no mailHost,
|
||||
# try @domain
|
||||
ifelse(_LDAP_ROUTE_DETAIL_, `_PRESERVE_', `dnl
|
||||
R<> <> <$+> <$+ + $* @ $+> <> $@ $>LDAPExpand <$1> <@ $4> <+$3>')
|
||||
R<> <> <$+> <$+ @ $+> <$*> $@ $>LDAPExpand <$1> <@ $3> <$4>
|
||||
R<> <> <$+> <$+ @ $+> <$*> $@ $>LDAPExpand <$1> <@ $3> <$4>')
|
||||
|
||||
# if no mailRoutingAddress and no mailHost and this was a domain attempt,
|
||||
ifelse(_LDAP_ROUTING_, `_MUST_EXIST_', `dnl
|
||||
@ -1487,6 +1512,9 @@ ifelse(_LDAP_ROUTING_, `_MUST_EXIST_', `dnl
|
||||
R<> <> <$+> <@ $+> <$*> $: <?> < $&{addr_type} > < $1 >
|
||||
# only give error for envelope recipient
|
||||
R<?> <e r> <$+> $#error $@ nouser $: "550 User unknown"
|
||||
ifdef(`_LDAP_SENDER_MUST_EXIST_', `dnl
|
||||
# and the sender too
|
||||
R<?> <e s> <$+> $#error $@ nouser $: "550 User unknown"')
|
||||
R<?> <$*> <$+> $@ $2',
|
||||
`dnl
|
||||
# return the original address
|
||||
@ -1675,7 +1703,7 @@ R<$+> <$+> $: <$1> $2',`dnl')')
|
||||
ifdef(`_RELAY_MX_SERVED_', `dnl
|
||||
dnl do "we" ($=w) act as backup MX server for the destination domain?
|
||||
R<NO> $* < @ $+ > $: <MX> < : $(mxserved $2 $) : > < $1 < @$2 > >
|
||||
R<MX> < : $* <TEMP> : > $* $#TEMP $@ 4.7.1 $: "450 Can not check MX records for recipient host " $1
|
||||
R<MX> < : $* <TEMP> : > $* $#TEMP $@ 4.4.0 $: "450 Can not check MX records for recipient host " $1
|
||||
dnl yes: mark it as <RELAY>
|
||||
R<MX> < $* : $=w. : $* > < $+ > $: <RELAY> $4
|
||||
dnl no: put old <NO> mark back
|
||||
@ -1691,8 +1719,20 @@ R<$+> $* $@ $2
|
||||
### check_relay -- check hostname/address on SMTP startup
|
||||
######################################################################
|
||||
|
||||
ifdef(`_CONTROL_IMMEDIATE_',`dnl
|
||||
Scheck_relay
|
||||
ifdef(`_RATE_CONTROL_IMMEDIATE_',`dnl
|
||||
dnl workspace: ignored...
|
||||
R$* $: $>"RateControl" dummy', `dnl')
|
||||
ifdef(`_CONN_CONTROL_IMMEDIATE_',`dnl
|
||||
dnl workspace: ignored...
|
||||
R$* $: $>"ConnControl" dummy', `dnl')
|
||||
dnl')
|
||||
|
||||
SLocal_check_relay
|
||||
Scheck`'_U_`'relay
|
||||
ifdef(`_USE_CLIENT_PTR_',`dnl
|
||||
R$* $| $* $: $&{client_ptr} $| $2', `dnl')
|
||||
R$* $: $1 $| $>"Local_check_relay" $1
|
||||
R$* $| $* $| $#$* $#$3
|
||||
R$* $| $* $| $* $@ $>"Basic_check_relay" $1 $| $2
|
||||
@ -1715,10 +1755,9 @@ dnl workspace: <result-of-lookup> (<>|<{client_addr}>)
|
||||
R<?> <$*> $: OK found nothing
|
||||
dnl workspace: <result-of-lookup> (<>|<{client_addr}>) | OK
|
||||
R<$={Accept}> <$*> $@ $1 return value of lookup
|
||||
R<REJECT> <$*> $#error ifdef(`confREJECT_MSG', `$: "confREJECT_MSG"', `$@ 5.7.1 $: "550 Access denied"')
|
||||
R<REJECT> <$*> $#error ifdef(`confREJECT_MSG', `$: confREJECT_MSG', `$@ 5.7.1 $: "550 Access denied"')
|
||||
R<DISCARD> <$*> $#discard $: discard
|
||||
ifdef(`_FFR_QUARANTINE',
|
||||
`R<QUARANTINE:$+> <$*> $#error $@ quarantine $: $1', `dnl')
|
||||
R<QUARANTINE:$+> <$*> $#error $@ quarantine $: $1
|
||||
dnl error tag
|
||||
R<ERROR:$-.$-.$-:$+> <$*> $#error $@ $1.$2.$3 $: $4
|
||||
R<ERROR:$+> <$*> $#error $: $1
|
||||
@ -1734,6 +1773,14 @@ R$-.$-.$-.$- $: <?> $(host $4.$3.$2.$1._RBL_. $: OK $)
|
||||
R<?>OK $: OKSOFAR
|
||||
R<?>$+ $#error $@ 5.7.1 $: "550 Rejected: " $&{client_addr} " listed at _RBL_"',
|
||||
`dnl')
|
||||
ifdef(`_RATE_CONTROL_',`dnl
|
||||
ifdef(`_RATE_CONTROL_IMMEDIATE_',`', `dnl
|
||||
dnl workspace: ignored...
|
||||
R$* $: $>"RateControl" dummy')', `dnl')
|
||||
ifdef(`_CONN_CONTROL_',`dnl
|
||||
ifdef(`_CONN_CONTROL_IMMEDIATE_',`',`dnl
|
||||
dnl workspace: ignored...
|
||||
R$* $: $>"ConnControl" dummy')', `dnl')
|
||||
undivert(8)
|
||||
|
||||
######################################################################
|
||||
@ -1866,9 +1913,8 @@ R<PERM> $* $#error $@ 5.1.8 $: "_CODE553 Domain of sender address " $&f " does
|
||||
ifdef(`_ACCESS_TABLE_', `dnl
|
||||
R<$={Accept}> $* $# $1 accept from access map
|
||||
R<DISCARD> $* $#discard $: discard
|
||||
ifdef(`_FFR_QUARANTINE',
|
||||
`R<QUARANTINE:$+> $* $#error $@ quarantine $: $1', `dnl')
|
||||
R<REJECT> $* $#error ifdef(`confREJECT_MSG', `$: "confREJECT_MSG"', `$@ 5.7.1 $: "550 Access denied"')
|
||||
R<QUARANTINE:$+> $* $#error $@ quarantine $: $1
|
||||
R<REJECT> $* $#error ifdef(`confREJECT_MSG', `$: confREJECT_MSG', `$@ 5.7.1 $: "550 Access denied"')
|
||||
dnl error tag
|
||||
R<ERROR:$-.$-.$-:$+> $* $#error $@ $1.$2.$3 $: $4
|
||||
R<ERROR:$+> $* $#error $: $1
|
||||
@ -2007,8 +2053,7 @@ dnl maybe we should stop checks already here (if SPAM_xyx)?
|
||||
R<$={SpamTag}> <$*> $: @ $2 mark address as no match')
|
||||
R<REJECT> $* $#error $@ 5.2.1 $: confRCPTREJ_MSG
|
||||
R<DISCARD> $* $#discard $: discard
|
||||
ifdef(`_FFR_QUARANTINE',
|
||||
`R<QUARANTINE:$+> $* $#error $@ quarantine $: $1', `dnl')
|
||||
R<QUARANTINE:$+> $* $#error $@ quarantine $: $1
|
||||
dnl error tag
|
||||
R<ERROR:$-.$-.$-:$+> $* $#error $@ $1.$2.$3 $: $4
|
||||
R<ERROR:$+> $* $#error $: $1
|
||||
@ -2053,7 +2098,11 @@ dnl workspace: <Result-of-lookup | ?> <localpart<@domain>>
|
||||
R<?> <$+ < @ $+ >> $: <$(access $2 $: ? $)> <$1 < @ $2 >>',`dnl')',
|
||||
`R$+ < @ $* $=R > $@ RELAY
|
||||
ifdef(`_ACCESS_TABLE_', `dnl
|
||||
R$+ < @ $+ > $: $>D <$2> <?> <+ To> <$1 < @ $2 >>',`dnl')')
|
||||
ifdef(`_RELAY_FULL_ADDR_', `dnl
|
||||
R$+ < @ $+ > $: $1 < @ $2 > $| $>SearchList <+ To> $| <F:$1@$2> <D:$2> <F:$1@> <>
|
||||
R$+ < @ $+ > $| <$*> $: <$3> <$1 <@ $2>>
|
||||
R$+ < @ $+ > $| $* $: <$3> <$1 <@ $2>>',
|
||||
`R$+ < @ $+ > $: $>D <$2> <?> <+ To> <$1 < @ $2 >>')')')
|
||||
ifdef(`_ACCESS_TABLE_', `dnl
|
||||
dnl workspace: <Result-of-lookup | ?> <localpart<@domain>>
|
||||
R<RELAY> $* $@ RELAY
|
||||
@ -2065,7 +2114,7 @@ ifdef(`_RELAY_MX_SERVED_', `dnl
|
||||
# allow relaying for hosts which we MX serve
|
||||
R$+ < @ $+ > $: < : $(mxserved $2 $) : > $1 < @ $2 >
|
||||
dnl this must not necessarily happen if the client is checked first...
|
||||
R< : $* <TEMP> : > $* $#TEMP $@ 4.7.1 $: "450 Can not check MX records for recipient host " $1
|
||||
R< : $* <TEMP> : > $* $#TEMP $@ 4.4.0 $: "450 Can not check MX records for recipient host " $1
|
||||
R<$* : $=w . : $*> $* $@ RELAY
|
||||
R< : $* : > $* $: $2',
|
||||
`dnl')
|
||||
@ -2158,7 +2207,7 @@ dnl the input. otherwise these rules must "clean up" the workspace.
|
||||
# check client name: first: did it resolve?
|
||||
dnl input: ignored
|
||||
R$* $: < $&{client_resolve} >
|
||||
R<TEMP> $#TEMP $@ 4.7.1 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr}
|
||||
R<TEMP> $#TEMP $@ 4.4.0 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr}
|
||||
R<FORGED> $#error $@ 5.7.1 $: "550 Relaying denied. IP name possibly forged " $&{client_name}
|
||||
R<FAIL> $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed " $&{client_name}
|
||||
dnl ${client_resolve} should be OK, so go ahead
|
||||
@ -2441,11 +2490,11 @@ dnl A: recursive address lookup (LookUpAddress) [not yet required]
|
||||
|
||||
# class with valid marks for SearchList
|
||||
dnl if A is activated: add it
|
||||
C{src}E F D U ifdef(`_FFR_SRCHLIST_A', `A')
|
||||
C{Src}E F D U ifdef(`_FFR_SRCHLIST_A', `A')
|
||||
SSearchList
|
||||
# just call the ruleset with the name of the tag... nice trick...
|
||||
dnl 2 3 4
|
||||
R<$+> $| <$={src}:$*> <$*> $: <$1> $| <$4> $| $>$2 <$3> <?> <$1> <>
|
||||
R<$+> $| <$={Src}:$*> <$*> $: <$1> $| <$4> $| $>$2 <$3> <?> <$1> <>
|
||||
dnl workspace: <o tag> $| <rest> $| <result of lookup> <>
|
||||
dnl no match and nothing left: return
|
||||
R<$+> $| <> $| <?> <> $@ <?>
|
||||
@ -2488,7 +2537,6 @@ R$* $#error $@ 5.7.1 $: "550 " $&{auth_authen} " not allowed to act as " $&{au
|
||||
######################################################################
|
||||
SLocal_Relay_Auth
|
||||
|
||||
ifdef(`_ACCESS_TABLE_', `dnl
|
||||
######################################################################
|
||||
### srv_features: which features to offer to a client?
|
||||
### (done in server)
|
||||
@ -2498,13 +2546,14 @@ ifdef(`_LOCAL_SRV_FEATURES_', `dnl
|
||||
R$* $: $1 $| $>"Local_srv_features" $1
|
||||
R$* $| $#$* $#$2
|
||||
R$* $| $* $: $1', `dnl')
|
||||
ifdef(`_ACCESS_TABLE_', `dnl
|
||||
R$* $: $>D <$&{client_name}> <?> <! SRV_FEAT_TAG> <>
|
||||
R<?>$* $: $>A <$&{client_addr}> <?> <! SRV_FEAT_TAG> <>
|
||||
R<?>$* $: <$(access SRV_FEAT_TAG`'_TAG_DELIM_ $: ? $)>
|
||||
R<?>$* $@ OK
|
||||
ifdef(`_ATMPF_', `dnl tempfail?
|
||||
R<$* _ATMPF_>$* $#temp', `dnl')
|
||||
R<$+>$* $# $1
|
||||
R<$+>$* $# $1')
|
||||
|
||||
######################################################################
|
||||
### try_tls: try to use STARTTLS?
|
||||
@ -2515,14 +2564,15 @@ ifdef(`_LOCAL_TRY_TLS_', `dnl
|
||||
R$* $: $1 $| $>"Local_try_tls" $1
|
||||
R$* $| $#$* $#$2
|
||||
R$* $| $* $: $1', `dnl')
|
||||
ifdef(`_ACCESS_TABLE_', `dnl
|
||||
R$* $: $>D <$&{server_name}> <?> <! TLS_TRY_TAG> <>
|
||||
R<?>$* $: $>A <$&{server_addr}> <?> <! TLS_TRY_TAG> <>
|
||||
R<?>$* $: <$(access TLS_TRY_TAG`'_TAG_DELIM_ $: ? $)>
|
||||
R<?>$* $@ OK
|
||||
ifdef(`_ATMPF_', `dnl tempfail?
|
||||
R<$* _ATMPF_>$* $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl')
|
||||
R<NO>$* $#error $@ 5.7.1 $: "550 do not try TLS with " $&{server_name} " ["$&{server_addr}"]"
|
||||
|
||||
R<NO>$* $#error $@ 5.7.1 $: "550 do not try TLS with " $&{server_name} " ["$&{server_addr}"]"')
|
||||
|
||||
######################################################################
|
||||
### tls_rcpt: is connection with server "good" enough?
|
||||
### (done in client, per recipient)
|
||||
@ -2536,6 +2586,7 @@ ifdef(`_LOCAL_TLS_RCPT_', `dnl
|
||||
R$* $: $1 $| $>"Local_tls_rcpt" $1
|
||||
R$* $| $#$* $#$2
|
||||
R$* $| $* $: $1', `dnl')
|
||||
ifdef(`_ACCESS_TABLE_', `dnl
|
||||
dnl store name of other side
|
||||
R$* $: $(macro {TLS_Name} $@ $&{server_name} $) $1
|
||||
dnl canonify recipient address
|
||||
@ -2637,10 +2688,10 @@ R$* $| <$*>$* $: $1 $| <$2>
|
||||
dnl workspace: ${verify} $| <ResultOfLookup>
|
||||
# create the appropriate error codes
|
||||
dnl permanent or temporary error?
|
||||
R$* $| <PERM + $={tls} $*> $: $1 $| <503:5.7.0> <$2 $3>
|
||||
R$* $| <TEMP + $={tls} $*> $: $1 $| <403:4.7.0> <$2 $3>
|
||||
R$* $| <PERM + $={Tls} $*> $: $1 $| <503:5.7.0> <$2 $3>
|
||||
R$* $| <TEMP + $={Tls} $*> $: $1 $| <403:4.7.0> <$2 $3>
|
||||
dnl default case depends on TLS_PERM_ERR
|
||||
R$* $| <$={tls} $*> $: $1 $| <ifdef(`TLS_PERM_ERR', `503:5.7.0', `403:4.7.0')> <$2 $3>
|
||||
R$* $| <$={Tls} $*> $: $1 $| <ifdef(`TLS_PERM_ERR', `503:5.7.0', `403:4.7.0')> <$2 $3>
|
||||
dnl workspace: ${verify} $| [<SMTP:ESC>] <ResultOfLookup>
|
||||
# deal with TLS handshake failures: abort
|
||||
RSOFTWARE $| <$-:$+> $* $#error $@ $2 $: $1 " TLS handshake failed."
|
||||
@ -2650,9 +2701,9 @@ RSOFTWARE $| $* $#error $@ ifdef(`TLS_PERM_ERR', `5.7.0', `4.7.0') $: "ifdef(`
|
||||
R$* $| <$*> <VERIFY> $: <$2> <VERIFY> <> $1
|
||||
dnl separate optional requirements
|
||||
R$* $| <$*> <VERIFY + $+> $: <$2> <VERIFY> <$3> $1
|
||||
R$* $| <$*> <$={tls}:$->$* $: <$2> <$3:$4> <> $1
|
||||
R$* $| <$*> <$={Tls}:$->$* $: <$2> <$3:$4> <> $1
|
||||
dnl separate optional requirements
|
||||
R$* $| <$*> <$={tls}:$- + $+>$* $: <$2> <$3:$4> <$5> $1
|
||||
R$* $| <$*> <$={Tls}:$- + $+>$* $: <$2> <$3:$4> <$5> $1
|
||||
dnl some other value in access map: accept
|
||||
dnl this also allows to override the default case (if used)
|
||||
R$* $| $* $@ OK
|
||||
@ -2821,6 +2872,50 @@ R$* $| <?>$* $@ no no authinfo available
|
||||
R$* $| <$*> <> $# $2
|
||||
dnl', `dnl')')
|
||||
|
||||
ifdef(`_RATE_CONTROL_',`dnl
|
||||
######################################################################
|
||||
### RateControl:
|
||||
### Parameters: ignored
|
||||
### return: $#error or OK
|
||||
######################################################################
|
||||
SRateControl
|
||||
ifdef(`_ACCESS_TABLE_', `dnl
|
||||
R$* $: <A:$&{client_addr}> <E:>
|
||||
dnl also look up a default value via E:
|
||||
R$+ $: $>SearchList <! ClientRate> $| $1 <>
|
||||
dnl found nothing: stop here
|
||||
R<?> $@ OK
|
||||
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 $)
|
||||
dnl log this? Connection rate $&{client_rate} exceeds limit $1.
|
||||
R<$+> $| FALSE $#error $@ 4.3.2 $: _RATE_CONTROL_REPLY Connection rate limit exceeded.
|
||||
')')
|
||||
|
||||
ifdef(`_CONN_CONTROL_',`dnl
|
||||
######################################################################
|
||||
### ConnControl:
|
||||
### Parameters: ignored
|
||||
### return: $#error or OK
|
||||
######################################################################
|
||||
SConnControl
|
||||
ifdef(`_ACCESS_TABLE_', `dnl
|
||||
R$* $: <A:$&{client_addr}> <E:>
|
||||
dnl also look up a default value via E:
|
||||
R$+ $: $>SearchList <! ClientConn> $| $1 <>
|
||||
dnl found nothing: stop here
|
||||
R<?> $@ OK
|
||||
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 $)
|
||||
dnl log this: Open connections $&{client_connections} exceeds limit $1.
|
||||
R<$+> $| FALSE $#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.92.2.26 2004/01/13 00:29:26 ca Exp $')
|
||||
VERSIONID(`$Id: version.m4,v 8.117 2004/07/30 18:03:07 ca Exp $')
|
||||
#
|
||||
divert(0)
|
||||
# Configuration version number
|
||||
DZ8.12.11`'ifdef(`confCF_VERSION', `/confCF_VERSION')
|
||||
DZ8.13.1`'ifdef(`confCF_VERSION', `/confCF_VERSION')
|
||||
|
@ -21,7 +21,7 @@ POPDIVERT
|
||||
### USENET Mailer specification ###
|
||||
####################################
|
||||
|
||||
VERSIONID(`$Id: usenet.m4,v 8.21.4.1 2003/03/03 22:53:03 ca Exp $')
|
||||
VERSIONID(`$Id: usenet.m4,v 8.22 2003/02/20 21:16:13 ca Exp $')
|
||||
|
||||
Musenet, P=USENET_MAILER_PATH, F=_MODMF_(USENET_MAILER_FLAGS, `USENET'), S=EnvFromL, R=EnvToL,
|
||||
_OPTINS(`USENET_MAILER_MAX', `M=', `, ')T=X-Usenet/X-Usenet/X-Unix,_USENET_QGRP
|
||||
|
22
contrib/sendmail/cf/ostype/unicos.m4
Normal file
22
contrib/sendmail/cf/ostype/unicos.m4
Normal file
@ -0,0 +1,22 @@
|
||||
divert(-1)
|
||||
#
|
||||
# Copyright (c) 2003 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.
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
divert(0)
|
||||
VERSIONID(`$Id: unicos.m4,v 1.1 2003/04/21 17:03:51 ca Exp $')
|
||||
define(`ALIAS_FILE', `/usr/lib/aliases')
|
||||
define(`HELP_FILE', `/usr/lib/sendmail.hf')
|
||||
define(`QUEUE_DIR', `/usr/spool/mqueue')
|
||||
define(`STATUS_FILE', `/usr/lib/sendmail.st')
|
||||
MODIFY_MAILER_FLAGS(`LOCAL', `+aSPpmnxXu')
|
||||
MODIFY_MAILER_FLAGS(`SMTP', `+anpeLC')
|
||||
define(`LOCAL_SHELL_FLAGS', `pxehu')
|
||||
define(`confPID_FILE', `/etc/sendmail.pid')dnl
|
22
contrib/sendmail/cf/ostype/unicosmk.m4
Normal file
22
contrib/sendmail/cf/ostype/unicosmk.m4
Normal file
@ -0,0 +1,22 @@
|
||||
divert(-1)
|
||||
#
|
||||
# Copyright (c) 2003 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.
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
divert(0)
|
||||
VERSIONID(`$Id: unicosmk.m4,v 1.1 2003/04/21 17:03:51 ca Exp $')
|
||||
define(`ALIAS_FILE', `/usr/lib/aliases')
|
||||
define(`HELP_FILE', `/usr/lib/sendmail.hf')
|
||||
define(`QUEUE_DIR', `/usr/spool/mqueue')
|
||||
define(`STATUS_FILE', `/usr/lib/sendmail.st')
|
||||
MODIFY_MAILER_FLAGS(`LOCAL' , `+aSPpmnxXu')
|
||||
MODIFY_MAILER_FLAGS(`SMTP', `+anpeLC')
|
||||
define(`LOCAL_SHELL_FLAGS', `lsDFMpxehuo')
|
||||
define(`confPID_FILE', `/etc/sendmail.pid')dnl
|
27
contrib/sendmail/cf/ostype/unicosmp.m4
Normal file
27
contrib/sendmail/cf/ostype/unicosmp.m4
Normal file
@ -0,0 +1,27 @@
|
||||
divert(-1)
|
||||
#
|
||||
# Copyright (c) 2003 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.
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
#
|
||||
# Notes:
|
||||
# - In UNICOSMP seems that TZ variable is needed that correct time is marked
|
||||
# to syslog
|
||||
#
|
||||
|
||||
divert(0)
|
||||
VERSIONID(`$Id: unicosmp.m4,v 1.1 2003/04/21 17:03:51 ca Exp $')
|
||||
_DEFIFNOT(`LOCAL_MAILER_FLAGS', `Ehm9')dnl
|
||||
ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -s -d $u')')dnl
|
||||
ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl
|
||||
ifdef(`STATUS_FILE',, `define(`STATUS_FILE', `/var/log/sendmail.st')')dnl
|
||||
define(`LOCAL_MAILER_PATH', `/usr/bin/mail')dnl
|
||||
define(`confTIME_ZONE', USE_TZ)dnl
|
||||
define(`confEBINDIR', `/usr/lib')dnl
|
@ -5,13 +5,12 @@
|
||||
# forth in the LICENSE file which can be found at the top level of
|
||||
# the sendmail distribution.
|
||||
#
|
||||
# $Id: sendmail.schema,v 8.19.2.1 2002/11/20 23:13:27 gshapiro Exp $
|
||||
# $Id: sendmail.schema,v 8.21 2002/11/20 23:13:50 gshapiro Exp $
|
||||
|
||||
# Note that this schema is experimental at this point as it has had little
|
||||
# public review. Therefore, it may change in future versions. Feedback
|
||||
# via sendmail@sendmail.org is encouraged.
|
||||
|
||||
|
||||
# OID arcs for Sendmail
|
||||
# enterprise: 1.3.6.1.4.1
|
||||
# sendmail: enterprise.6152
|
||||
@ -88,6 +87,19 @@ attributetype ( 1.3.6.1.4.1.6152.10.3.1.16
|
||||
EQUALITY caseIgnoreMatch
|
||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
|
||||
|
||||
# attribute sendmailMTAMapSearch cis
|
||||
attributetype ( 1.3.6.1.4.1.6152.10.3.1.24
|
||||
NAME 'sendmailMTAMapSearch'
|
||||
DESC 'recursive search for values of a map entry'
|
||||
EQUALITY caseExactMatch
|
||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
|
||||
|
||||
# attribute sendmailMTAMapURL cis
|
||||
attributetype ( 1.3.6.1.4.1.6152.10.3.1.25
|
||||
NAME 'sendmailMTAMapURL'
|
||||
DESC 'recursive search URL for values of a map entry'
|
||||
EQUALITY caseExactMatch
|
||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
|
||||
|
||||
#objectClass sendmailMTAMap
|
||||
# requires
|
||||
@ -110,18 +122,22 @@ objectclass ( 1.3.6.1.4.1.6152.10.3.2.11
|
||||
# objectClass,
|
||||
# sendmailMTAMapName,
|
||||
# sendmailMTAKey,
|
||||
# sendmailMTAMapValue,
|
||||
# allows
|
||||
# sendmailMTACluster,
|
||||
# sendmailMTAHost,
|
||||
# sendmailMTAMapValue,
|
||||
# sendmailMTAMapSearch,
|
||||
# sendmailMTAMapURL,
|
||||
# Description
|
||||
|
||||
objectclass ( 1.3.6.1.4.1.6152.10.3.2.12
|
||||
NAME 'sendmailMTAMapObject'
|
||||
SUP sendmailMTAMap STRUCTURAL
|
||||
DESC 'Sendmail MTA map object'
|
||||
MUST ( sendmailMTAMapName $ sendmailMTAKey $ sendmailMTAMapValue )
|
||||
MAY ( sendmailMTACluster $ sendmailMTAHost $ Description ) )
|
||||
MUST ( sendmailMTAMapName $ sendmailMTAKey )
|
||||
MAY ( sendmailMTACluster $ sendmailMTAHost $
|
||||
sendmailMTAMapValue $ sendmailMTAMapSearch $
|
||||
sendmailMTAMapURL $ Description ) )
|
||||
|
||||
|
||||
###########################################################################
|
||||
@ -145,6 +161,19 @@ attributetype ( 1.3.6.1.4.1.6152.10.3.1.20
|
||||
EQUALITY caseIgnoreMatch
|
||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
|
||||
|
||||
# attribute sendmailMTAAliasSearch cis
|
||||
attributetype ( 1.3.6.1.4.1.6152.10.3.1.26
|
||||
NAME 'sendmailMTAAliasSearch'
|
||||
DESC 'recursive search for values of an alias'
|
||||
EQUALITY caseExactMatch
|
||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
|
||||
|
||||
# attribute sendmailMTAAliasURL cis
|
||||
attributetype ( 1.3.6.1.4.1.6152.10.3.1.27
|
||||
NAME 'sendmailMTAAliasURL'
|
||||
DESC 'recursive search URL for values of an alias'
|
||||
EQUALITY caseExactMatch
|
||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
|
||||
|
||||
#objectClass sendmailMTAAlias
|
||||
# requires
|
||||
@ -166,20 +195,23 @@ objectclass ( 1.3.6.1.4.1.6152.10.3.2.13
|
||||
# requires
|
||||
# objectClass,
|
||||
# sendmailMTAKey,
|
||||
# sendmailMTAAliasValue,
|
||||
# allows
|
||||
# sendmailMTAAliasGrouping,
|
||||
# sendmailMTACluster,
|
||||
# sendmailMTAHost,
|
||||
# sendmailMTAAliasValue,
|
||||
# sendmailMTAAliasSearch,
|
||||
# sendmailMTAAliasURL,
|
||||
# Description
|
||||
|
||||
objectclass ( 1.3.6.1.4.1.6152.10.3.2.14
|
||||
NAME 'sendmailMTAAliasObject'
|
||||
SUP sendmailMTAAlias STRUCTURAL
|
||||
DESC 'Sendmail MTA alias object'
|
||||
MUST ( sendmailMTAKey $ sendmailMTAAliasValue )
|
||||
MAY ( sendmailMTAAliasGrouping $
|
||||
sendmailMTACluster $ sendmailMTAHost $ Description ) )
|
||||
MUST sendmailMTAKey
|
||||
MAY ( sendmailMTAAliasGrouping $ sendmailMTACluster $
|
||||
sendmailMTAHost $ sendmailMTAAliasValue $
|
||||
sendmailMTAAliasSearch $ sendmailMTAAliasURL $ Description ) )
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
@ -201,20 +233,37 @@ attributetype ( 1.3.6.1.4.1.6152.10.3.1.23
|
||||
EQUALITY caseIgnoreMatch
|
||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
|
||||
|
||||
# attribute sendmailMTAClassSearch cis
|
||||
attributetype ( 1.3.6.1.4.1.6152.10.3.1.28
|
||||
NAME 'sendmailMTAClassSearch'
|
||||
DESC 'recursive search for members of a class'
|
||||
EQUALITY caseExactMatch
|
||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
|
||||
|
||||
# attribute sendmailMTAClassURL cis
|
||||
attributetype ( 1.3.6.1.4.1.6152.10.3.1.29
|
||||
NAME 'sendmailMTAClassURL'
|
||||
DESC 'recursive search URL for members of a class'
|
||||
EQUALITY caseExactMatch
|
||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
|
||||
|
||||
#objectClass sendmailMTAClass
|
||||
# requires
|
||||
# objectClass,
|
||||
# sendmailMTAClassName,
|
||||
# sendmailMTAClassValue,
|
||||
# allows
|
||||
# sendmailMTACluster,
|
||||
# sendmailMTAHost,
|
||||
# sendmailMTAClassValue,
|
||||
# sendmailMTAClassSearch,
|
||||
# sendmailMTAClassURL,
|
||||
# Description
|
||||
|
||||
objectclass ( 1.3.6.1.4.1.6152.10.3.2.15
|
||||
NAME 'sendmailMTAClass'
|
||||
SUP sendmailMTA STRUCTURAL
|
||||
DESC 'Sendmail MTA class definition'
|
||||
MUST ( sendmailMTAClassName $ sendmailMTAClassValue )
|
||||
MAY ( sendmailMTACluster $ sendmailMTAHost $ Description ) )
|
||||
MUST sendmailMTAClassName
|
||||
MAY ( sendmailMTACluster $ sendmailMTAHost $
|
||||
sendmailMTAClassValue $ sendmailMTAClassSearch $
|
||||
sendmailMTAClassURL $ Description ) )
|
||||
|
@ -27,7 +27,7 @@
|
||||
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
# SUCH DAMAGE.
|
||||
|
||||
# $Id: buildvirtuser,v 1.5.2.1 2003/03/15 23:30:26 gshapiro Exp $
|
||||
# $Id: buildvirtuser,v 1.6 2003/03/15 23:30:09 gshapiro Exp $
|
||||
|
||||
=head1 NAME
|
||||
|
||||
|
@ -1,17 +1,13 @@
|
||||
#!/usr/local/bin/perl -w
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
# v 0.2-very-beta
|
||||
# $Id: cidrexpand,v 8.4 2002/11/22 21:13:14 ca Exp $
|
||||
#
|
||||
# v 0.4
|
||||
#
|
||||
# 17 July 2000 Derek J. Balling (dredd@megacity.org)
|
||||
#
|
||||
# The $SENDMAIL flag tells the code to lump networks in sendmail format
|
||||
# if applicable. If this flag is disabled, cidrexpand will literally create
|
||||
# a single line for each entry, which may or may not be what you want. :)
|
||||
# makes for a rather large hash table...
|
||||
#
|
||||
#
|
||||
# Acts as a preparser on /etc/mail/access_db to allow you to use address/bit
|
||||
# notation. Caveat: the address portion MUST be the start address or your
|
||||
# results will NOT be what what you want.
|
||||
# notation.
|
||||
#
|
||||
# If you have two overlapping CIDR blocks with conflicting actions
|
||||
# e.g. 10.2.3.128/25 REJECT and 10.2.3.143 ACCEPT
|
||||
@ -22,27 +18,35 @@
|
||||
#
|
||||
# Modifications
|
||||
# -------------
|
||||
# 5 Nov 2002 Richard Rognlie (richard@sendmail.com)
|
||||
# 26 Jul 2001 Derek Balling (dredd@megacity.org)
|
||||
# Now uses Net::CIDR because it makes life a lot easier.
|
||||
#
|
||||
# 5 Nov 2002 Richard Rognlie (richard@sendmail.com)
|
||||
# Added code to deal with the prefix tags that may now be included in
|
||||
# the access_db
|
||||
#
|
||||
# Added clarification in the notes for what to do if you have
|
||||
# exceptions to a larger CIDR block.
|
||||
#
|
||||
# usage:
|
||||
# usage:
|
||||
# cidrexpand < /etc/mail/access | makemap -r hash /etc/mail/access
|
||||
#
|
||||
# Report bugs to: dredd@megacity.org
|
||||
#
|
||||
# Report bugs to: <dredd@megacity.org>
|
||||
#
|
||||
|
||||
|
||||
use strict;
|
||||
use Net::CIDR;
|
||||
|
||||
my $spaceregex = '\s+';
|
||||
|
||||
while (my $arg = shift @ARGV)
|
||||
{
|
||||
if ($arg eq '-t')
|
||||
{
|
||||
if ($arg eq '-t')
|
||||
{
|
||||
$spaceregex = shift;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
use strict;
|
||||
@ -51,109 +55,40 @@ my $SENDMAIL = 1;
|
||||
|
||||
while (<>)
|
||||
{
|
||||
my ($prefix,$left,$right,$space);
|
||||
my ($prefix,$left,$right,$space);
|
||||
|
||||
if (! /^(|\S\S*:)(\d+\.){3}\d+\/\d\d?$spaceregex.*/ )
|
||||
{
|
||||
if (! /^(|\S\S*:)(\d+\.){3}\d+\/\d\d?$spaceregex.*/ )
|
||||
{
|
||||
print;
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
($prefix,$left,$space,$right) = /^(|\S\S*:)((?:\d+\.){3}\d+\/\d\d?)($spaceregex)(.*)$/;
|
||||
|
||||
|
||||
my @new_lefts = expand_network($left);
|
||||
foreach my $nl (@new_lefts)
|
||||
{
|
||||
print "$prefix$nl$space$right\n";
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub expand_network
|
||||
{
|
||||
my ($network,$mask) = split /\//, shift;
|
||||
my @diffs = calc_changes($network,$mask);
|
||||
my ($first,$second,$third,$fourth) = split /\./, $network;
|
||||
|
||||
my @rc = ();
|
||||
|
||||
for my $f ($first..($first+$diffs[0]))
|
||||
{
|
||||
if ( ( $SENDMAIL ) and ($diffs[1] == 255))
|
||||
my $left_input = shift;
|
||||
my @rc = ($left_input);
|
||||
my ($network,$mask) = split /\//, $left_input;
|
||||
if (defined $mask)
|
||||
{
|
||||
my @parts = split /\./, $network;
|
||||
while ($#parts < 3)
|
||||
{
|
||||
push @rc, "$f";
|
||||
push @parts, "0";
|
||||
}
|
||||
else
|
||||
{
|
||||
for my $s ($second..($second+$diffs[1]))
|
||||
{
|
||||
if ( ($SENDMAIL) and ($diffs[2] == 255) )
|
||||
{
|
||||
push @rc,"$f\.$s";
|
||||
}
|
||||
else
|
||||
{
|
||||
for my $t ($third..($third+$diffs[2]))
|
||||
{
|
||||
if ( ($SENDMAIL) and ($diffs[3] == 255))
|
||||
{
|
||||
push @rc, "$f\.$s\.$t";
|
||||
}
|
||||
else
|
||||
{
|
||||
for my $fr ($fourth..($fourth+$diffs[3]))
|
||||
{
|
||||
push @rc, "$f\.$s\.$t\.$fr";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return @rc;
|
||||
}
|
||||
|
||||
sub calc_changes
|
||||
{
|
||||
my ($network,$mask) = @_;
|
||||
|
||||
my @octs = split /\./, $network;
|
||||
|
||||
my ($first,$second,$third,$fourth) = (0,0,0,0);
|
||||
|
||||
my $power = 32 - $mask;
|
||||
|
||||
if ($mask > 24)
|
||||
{
|
||||
$fourth = 2**$power - 1;
|
||||
}
|
||||
elsif ($mask > 16)
|
||||
{
|
||||
$fourth = 255;
|
||||
$third = 2**($power-8) - 1;
|
||||
}
|
||||
elsif ($mask > 8)
|
||||
{
|
||||
$fourth = 255;
|
||||
$third = 255;
|
||||
$second = 2**($power-16) - 1;
|
||||
}
|
||||
elsif ($mask > 0)
|
||||
{
|
||||
$fourth = 255;
|
||||
$third = 255;
|
||||
$second = 255;
|
||||
$first = 2**($power-24) - 1;
|
||||
}
|
||||
elsif ($mask == 0)
|
||||
{
|
||||
$fourth = 255;
|
||||
$third = 255;
|
||||
$second = 255;
|
||||
$first = 255;
|
||||
}
|
||||
|
||||
return ($first,$second,$third,$fourth);
|
||||
my $clean_input = join '.', @parts;
|
||||
$clean_input .= "/$mask";
|
||||
my @octets = Net::CIDR::cidr2octets($clean_input);
|
||||
@rc = @octets;
|
||||
}
|
||||
return @rc;
|
||||
}
|
||||
|
@ -6,9 +6,9 @@
|
||||
.\" the sendmail distribution.
|
||||
.\"
|
||||
.\"
|
||||
.\" $Id: qtool.8,v 8.17 2002/01/29 21:55:49 ca Exp $
|
||||
.\" $Id: qtool.8,v 8.20 2004/06/28 17:49:41 ca Exp $
|
||||
.\"
|
||||
.TH QTOOL 8 "$Date: 2002/01/29 21:55:49 $"
|
||||
.TH QTOOL 8 "$Date: 2004/06/28 17:49:41 $"
|
||||
.SH NAME
|
||||
qtool
|
||||
\- manipulate sendmail queues
|
||||
@ -56,7 +56,7 @@ Defaults to /etc/mail/sendmail.cf.
|
||||
Delete all of the messages specified by source.
|
||||
.TP
|
||||
\fB\-e\fP \fIperl_expression\fP
|
||||
Evalute \fIperl_expression\fP for each queue file as specified
|
||||
Evaluate \fIperl_expression\fP for each queue file as specified
|
||||
by \fIsource\fP. If \fIperl_expression\fP evaluates to true, then that
|
||||
queue file is moved. See below for more detail on \fIperl_expression\fP.
|
||||
.TP
|
||||
@ -102,9 +102,6 @@ The size of the control file in bytes.
|
||||
\fBcreation_time\fP
|
||||
The time when the control file was created.
|
||||
.TP
|
||||
\fBcurrent_delay\fP
|
||||
Current delay for queue delay algorithm if _FFR_QUEUEDELAY is enabled.
|
||||
.TP
|
||||
\fBdata_file_name\fP
|
||||
The data file name (deprecated).
|
||||
.TP
|
||||
@ -173,11 +170,7 @@ Original recipient (ORCPT= parameter).
|
||||
Adjusted priority of message.
|
||||
.TP
|
||||
\fBquarantine_reason\fP
|
||||
Quarantine reason for quarantined (held) envelopes if _FFR_QUARANTINE is
|
||||
enabled.
|
||||
.TP
|
||||
\fBqueue_delay\fP
|
||||
Queue delay algorithm if _FFR_QUEUEDELAY is enabled.
|
||||
Quarantine reason for quarantined (held) envelopes.
|
||||
.TP
|
||||
\fBrecipient\fP
|
||||
Array of character flags followed by colon and recipient name. Flags:
|
||||
|
@ -3,7 +3,7 @@
|
||||
## Copyright (c) 1998-2002 Sendmail, Inc. and its suppliers.
|
||||
## All rights reserved.
|
||||
##
|
||||
## $Id: qtool.pl,v 8.27 2002/01/29 21:55:49 ca Exp $
|
||||
## $Id: qtool.pl,v 8.28 2002/06/27 23:06:16 gshapiro Exp $
|
||||
##
|
||||
use strict;
|
||||
use File::Basename;
|
||||
@ -485,7 +485,6 @@ sub parse
|
||||
'E' => 'error_recipient',
|
||||
'F' => 'flags',
|
||||
'H' => 'parse_header',
|
||||
'G' => 'queue_delay',
|
||||
'I' => 'inode_number',
|
||||
'K' => 'next_delivery_time',
|
||||
'L' => 'content-length',
|
||||
|
67
contrib/sendmail/contrib/socketmapClient.pl
Executable file
67
contrib/sendmail/contrib/socketmapClient.pl
Executable file
@ -0,0 +1,67 @@
|
||||
#!/usr/bin/perl -w
|
||||
#
|
||||
# Contributed by Bastiaan Bakker for SOCKETMAP
|
||||
# $Id: socketmapClient.pl,v 1.1 2003/05/21 15:36:33 ca Exp $
|
||||
|
||||
use strict;
|
||||
use IO::Socket;
|
||||
|
||||
die "usage: $0 <connection> <mapname> <key> [<key2> ...]" if (@ARGV < 3);
|
||||
|
||||
my $connection = shift @ARGV;
|
||||
my $mapname = shift @ARGV;
|
||||
|
||||
my $sock;
|
||||
|
||||
if ($connection =~ /tcp:(.+):([0-9]*)/) {
|
||||
$sock = new IO::Socket::INET (
|
||||
PeerAddr => $1,
|
||||
PeerPort => $2,
|
||||
Proto => 'tcp',
|
||||
);
|
||||
} elsif ($connection =~ /((unix)|(local)):(.+)/) {
|
||||
$sock = new IO::Socket::UNIX (
|
||||
Type => SOCK_STREAM,
|
||||
Peer => $4
|
||||
);
|
||||
} else {
|
||||
die "unrecognized connection specification $connection";
|
||||
}
|
||||
|
||||
die "Could not create socket: $!\n" unless $sock;
|
||||
|
||||
while(my $key = shift @ARGV) {
|
||||
my $request = "$mapname $key";
|
||||
netstringWrite($sock, $request);
|
||||
$sock->flush();
|
||||
my $response = netstringRead($sock);
|
||||
|
||||
print "$key => $response\n";
|
||||
}
|
||||
|
||||
$sock->close();
|
||||
|
||||
sub netstringWrite {
|
||||
my $sock = shift;
|
||||
my $data = shift;
|
||||
|
||||
print $sock length($data).':'.$data.',';
|
||||
}
|
||||
|
||||
sub netstringRead {
|
||||
my $sock = shift;
|
||||
my $saveSeparator = $/;
|
||||
$/ = ':';
|
||||
my $dataLength = <$sock>;
|
||||
die "cannot read netstring length" unless defined($dataLength);
|
||||
chomp $dataLength;
|
||||
my $data;
|
||||
if ($sock->read($data, $dataLength) == $dataLength) {
|
||||
($sock->getc() eq ',') or die "data misses closing ,";
|
||||
} else {
|
||||
die "received only ".length($data)." of $dataLength bytes";
|
||||
}
|
||||
|
||||
$/ = $saveSeparator;
|
||||
return $data;
|
||||
}
|
98
contrib/sendmail/contrib/socketmapServer.pl
Executable file
98
contrib/sendmail/contrib/socketmapServer.pl
Executable file
@ -0,0 +1,98 @@
|
||||
#!/usr/bin/perl -w
|
||||
#
|
||||
# Contributed by Bastiaan Bakker for SOCKETMAP
|
||||
# $Id: socketmapServer.pl,v 1.1 2003/05/21 15:36:33 ca Exp $
|
||||
|
||||
use strict;
|
||||
use IO::Socket;
|
||||
|
||||
die "usage: $0 <connection>" if (@ARGV < 1);
|
||||
my $connection = shift @ARGV;
|
||||
my $sock;
|
||||
|
||||
if ($connection =~ /tcp:(.+):([0-9]*)/) {
|
||||
$sock = new IO::Socket::INET (
|
||||
LocalAddr => $1,
|
||||
LocalPort => $2,
|
||||
Proto => 'tcp',
|
||||
Listen => 32,
|
||||
ReuseAddr => 1
|
||||
);
|
||||
} elsif ($connection =~ /((unix)|(local)):(.+)/) {
|
||||
unlink($4);
|
||||
$sock = new IO::Socket::UNIX (
|
||||
Type => SOCK_STREAM,
|
||||
Local => $4,
|
||||
Listen => 32
|
||||
);
|
||||
} else {
|
||||
die "unrecognized connection specification $connection";
|
||||
}
|
||||
|
||||
while(my $client = $sock->accept()) {
|
||||
my $childpid = fork();
|
||||
if ($childpid) {
|
||||
$client->close();
|
||||
} else {
|
||||
die "can't fork $!" unless defined($childpid);
|
||||
$sock->close();
|
||||
handleConnection($client);
|
||||
$client->close();
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
$sock->close();
|
||||
|
||||
sub handleConnection {
|
||||
my $client = shift;
|
||||
$client->autoflush(1);
|
||||
|
||||
while(!eof($client)) {
|
||||
eval {
|
||||
my $request = netstringRead($client);
|
||||
my ($mapName, $key) = split(' ', $request);
|
||||
my $value = mapLookup($mapName, $key);
|
||||
my $result = (defined($value)) ? "OK $value" : "NOTFOUND";
|
||||
netstringWrite($client, $result);
|
||||
};
|
||||
if ($@) {
|
||||
print STDERR "$@\n";
|
||||
last;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub mapLookup {
|
||||
my %mapping = ('bastiaan.bakker@example.com' => 'bastiaan',
|
||||
'wolter.eldering@example.com' => 'wolter@other.example.com');
|
||||
my $mapName = shift;
|
||||
my $key = shift;
|
||||
my $value = ($mapName eq "virtuser") ? $mapping{$key} : undef;
|
||||
return $value;
|
||||
}
|
||||
|
||||
sub netstringWrite {
|
||||
my $sock = shift;
|
||||
my $data = shift;
|
||||
|
||||
print $sock length($data).':'.$data.',';
|
||||
}
|
||||
|
||||
sub netstringRead {
|
||||
my $sock = shift;
|
||||
my $saveSeparator = $/;
|
||||
$/ = ':';
|
||||
my $dataLength = <$sock>;
|
||||
die "cannot read netstring length" unless defined($dataLength);
|
||||
chomp $dataLength;
|
||||
my $data;
|
||||
if ($sock->read($data, $dataLength) == $dataLength) {
|
||||
($sock->getc() eq ',') or die "data misses closing ,";
|
||||
} else {
|
||||
die "received only ".length($data)." of $dataLength bytes";
|
||||
}
|
||||
|
||||
$/ = $saveSeparator;
|
||||
return $data;
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
# $Id: Makefile,v 8.14 2002/01/07 22:24:36 gshapiro Exp $
|
||||
# $Id: Makefile,v 8.15 2004/07/20 20:25:10 ca Exp $
|
||||
|
||||
DIR= smm/08.sendmailop
|
||||
SRCS= op.me
|
||||
@ -25,6 +25,7 @@ op.ps: ${SRCS}
|
||||
|
||||
op.txt: ${SRCS}
|
||||
rm -f $@
|
||||
@echo "Note: see README file in case of errors."
|
||||
${PIC} ${SRCS} | ${EQNASCII} | ${ROFFASCII} | ${ULASCII} > $@
|
||||
|
||||
op.pdf: op.ps
|
||||
|
13
contrib/sendmail/doc/op/README
Normal file
13
contrib/sendmail/doc/op/README
Normal file
@ -0,0 +1,13 @@
|
||||
Known Problems with some *roff versions
|
||||
|
||||
If you encounter the error:
|
||||
|
||||
Unknown escape sequence in input: 33, 133
|
||||
|
||||
when trying to create op.txt then set the GROFF_NO_SGR environment
|
||||
variable (see grotty(1) man page), e.g.,
|
||||
|
||||
csh% setenv GROFF_NO_SGR 1
|
||||
sh$ GROFF_NO_SGR=1; export GROFF_NO_SGR
|
||||
|
||||
$Id: README,v 8.1 2004/07/20 20:25:10 ca Exp $
|
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
||||
dnl $Id: Makefile.m4,v 1.4.6.1 2002/06/21 21:58:27 ca Exp $
|
||||
dnl $Id: Makefile.m4,v 1.5 2002/06/21 22:01:30 ca Exp $
|
||||
include(confBUILDTOOLSDIR`/M4/switch.m4')
|
||||
|
||||
define(`confREQUIRE_LIBSM', `true')
|
||||
|
@ -1,4 +1,4 @@
|
||||
.\" Copyright (c) 2000-2001 Sendmail, Inc. and its suppliers.
|
||||
.\" Copyright (c) 2000-2001, 2003 Sendmail, Inc. and its suppliers.
|
||||
.\" All rights reserved.
|
||||
.\"
|
||||
.\" By using this file, you agree to the terms and conditions set
|
||||
@ -6,9 +6,9 @@
|
||||
.\" the sendmail distribution.
|
||||
.\"
|
||||
.\"
|
||||
.\" $Id: editmap.8,v 1.8.4.1 2003/03/15 23:38:57 gshapiro Exp $
|
||||
.\" $Id: editmap.8,v 1.9 2003/02/01 17:07:42 ca Exp $
|
||||
.\"
|
||||
.TH EDITMAP 8 "$Date: 2003/03/15 23:38:57 $"
|
||||
.TH EDITMAP 8 "$Date: 2003/02/01 17:07:42 $"
|
||||
.SH NAME
|
||||
.B editmap
|
||||
\- query and edit single records in database maps for sendmail
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1999-2002 Sendmail, Inc. and its suppliers.
|
||||
* Copyright (c) 1999-2004 Sendmail, Inc. and its suppliers.
|
||||
* All rights reserved.
|
||||
*
|
||||
* By using this file, you agree to the terms and conditions set
|
||||
@ -7,7 +7,7 @@
|
||||
* the sendmail distribution.
|
||||
*
|
||||
*
|
||||
* $Id: mfapi.h,v 8.44.2.4 2003/10/20 21:51:49 msk Exp $
|
||||
* $Id: mfapi.h,v 8.59 2004/07/07 21:41:31 ca Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -17,14 +17,23 @@
|
||||
#ifndef _LIBMILTER_MFAPI_H
|
||||
# define _LIBMILTER_MFAPI_H 1
|
||||
|
||||
# include <sys/types.h>
|
||||
#ifndef SMFI_VERSION
|
||||
# define SMFI_VERSION 2 /* version number */
|
||||
#endif /* ! SMFI_VERSION */
|
||||
|
||||
# include <sys/types.h>
|
||||
# include <sys/socket.h>
|
||||
# include "libmilter/mfdef.h"
|
||||
|
||||
#include "libmilter/mfdef.h"
|
||||
|
||||
# define LIBMILTER_API extern
|
||||
|
||||
|
||||
/* Only need to export C interface if used by C++ source code */
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#ifndef _SOCK_ADDR
|
||||
# define _SOCK_ADDR struct sockaddr
|
||||
#endif /* ! _SOCK_ADDR */
|
||||
@ -66,6 +75,19 @@ typedef int sfsistat;
|
||||
# endif /* __STDC__ */
|
||||
#endif /* __P */
|
||||
|
||||
#if SM_CONF_STDBOOL_H
|
||||
# include <stdbool.h>
|
||||
#else /* SM_CONF_STDBOOL_H */
|
||||
# ifndef __cplusplus
|
||||
# ifndef bool
|
||||
# ifndef __bool_true_false_are_defined
|
||||
typedef int bool;
|
||||
# define __bool_true_false_are_defined 1
|
||||
# endif /* ! __bool_true_false_are_defined */
|
||||
# endif /* bool */
|
||||
# endif /* ! __cplusplus */
|
||||
#endif /* SM_CONF_STDBOOL_H */
|
||||
|
||||
/*
|
||||
** structure describing one milter
|
||||
*/
|
||||
@ -105,11 +127,19 @@ struct smfiDesc
|
||||
|
||||
/* connection cleanup */
|
||||
sfsistat (*xxfi_close) SM__P((SMFICTX *));
|
||||
|
||||
#if SMFI_VERSION > 2
|
||||
/* any unrecognized or unimplemented command filter */
|
||||
sfsistat (*xxfi_unknown) SM__P((SMFICTX *, char *));
|
||||
#endif /* SMFI_VERSION > 2 */
|
||||
|
||||
#if SMFI_VERSION > 3
|
||||
/* any unrecognized or unimplemented command filter */
|
||||
sfsistat (*xxfi_data) SM__P((SMFICTX *));
|
||||
#endif /* SMFI_VERSION > 3 */
|
||||
};
|
||||
|
||||
#if _FFR_SMFI_OPENSOCKET
|
||||
LIBMILTER_API int smfi_opensocket __P((bool));
|
||||
#endif /* _FFR_SMFI_OPENSOCKET */
|
||||
LIBMILTER_API int smfi_register __P((struct smfiDesc));
|
||||
LIBMILTER_API int smfi_main __P((void));
|
||||
LIBMILTER_API int smfi_setbacklog __P((int));
|
||||
@ -117,8 +147,9 @@ LIBMILTER_API int smfi_setdbg __P((int));
|
||||
LIBMILTER_API int smfi_settimeout __P((int));
|
||||
LIBMILTER_API int smfi_setconn __P((char *));
|
||||
LIBMILTER_API int smfi_stop __P((void));
|
||||
|
||||
#define SMFI_VERSION 2 /* version number */
|
||||
#if _FFR_MAXDATASIZE
|
||||
LIBMILTER_API size_t smfi_setmaxdatasize __P((size_t));
|
||||
#endif /* _FFR_MAXDATASIZE */
|
||||
|
||||
/*
|
||||
** What the filter might do -- values to be ORed together for
|
||||
@ -132,9 +163,7 @@ LIBMILTER_API int smfi_stop __P((void));
|
||||
#define SMFIF_ADDRCPT 0x00000004L /* filter may add recipients */
|
||||
#define SMFIF_DELRCPT 0x00000008L /* filter may delete recipients */
|
||||
#define SMFIF_CHGHDRS 0x00000010L /* filter may change/delete headers */
|
||||
#if _FFR_QUARANTINE
|
||||
# define SMFIF_QUARANTINE 0x00000020L /* filter may quarantine envelope */
|
||||
#endif /* _FFR_QUARANTINE */
|
||||
#define SMFIF_QUARANTINE 0x00000020L /* filter may quarantine envelope */
|
||||
|
||||
/*
|
||||
** Continue processing message/connection.
|
||||
@ -230,6 +259,16 @@ extern sfsistat xxfi_envrcpt __P((SMFICTX *, char **));
|
||||
** Later arguments are the ESMTP arguments.
|
||||
*/
|
||||
|
||||
/* unknown command filter */
|
||||
|
||||
extern sfsistat *xxfi_unknown __P((SMFICTX *, char *));
|
||||
|
||||
/*
|
||||
** xxfi_unknown(ctx, arg) Invoked when SMTP command is not recognized or not
|
||||
** implemented.
|
||||
** char *arg; Null-terminated SMTP command
|
||||
*/
|
||||
|
||||
/* header filter */
|
||||
extern sfsistat xxfi_header __P((SMFICTX *, char *, char *));
|
||||
|
||||
@ -311,14 +350,12 @@ LIBMILTER_API char * smfi_getsymval __P((SMFICTX *, char *));
|
||||
|
||||
LIBMILTER_API int smfi_setreply __P((SMFICTX *, char *, char *, char *));
|
||||
|
||||
#if _FFR_MULTILINE
|
||||
/*
|
||||
** Alternatively, smfi_setmlreply can be called if a multi-line SMTP reply
|
||||
** is needed.
|
||||
*/
|
||||
|
||||
LIBMILTER_API int smfi_setmlreply __P((SMFICTX *, const char *, const char *, ...));
|
||||
#endif /* _FFR_MULTILINE */
|
||||
|
||||
/*
|
||||
** Set the specific reply code to be used in response to the active
|
||||
@ -342,10 +379,9 @@ LIBMILTER_API int smfi_setmlreply __P((SMFICTX *, const char *, const char *, ..
|
||||
LIBMILTER_API int smfi_addheader __P((SMFICTX *, char *, char *));
|
||||
|
||||
/*
|
||||
** Add a header to the message. This header is not passed to other
|
||||
** filters. It is not checked for standards compliance; the mail filter
|
||||
** must ensure that no protocols are violated as a result of adding this
|
||||
** header.
|
||||
** Add a header to the message. It is not checked for standards
|
||||
** compliance; the mail filter must ensure that no protocols are violated
|
||||
** as a result of adding this header.
|
||||
**
|
||||
** SMFICTX *ctx; Opaque context structure
|
||||
** char *headerf; Header field name
|
||||
@ -365,6 +401,19 @@ LIBMILTER_API int smfi_chgheader __P((SMFICTX *, char *, int, char *));
|
||||
** char *headerv; New header field value (empty for delete header)
|
||||
*/
|
||||
|
||||
LIBMILTER_API int smfi_insheader __P((SMFICTX *, int, char *, char *));
|
||||
|
||||
/*
|
||||
** Insert a header into the message. It is not checked for standards
|
||||
** compliance; the mail filter must ensure that no protocols are violated
|
||||
** as a result of adding this header.
|
||||
**
|
||||
** SMFICTX *ctx; Opaque context structure
|
||||
** int idx; index into the header list where the insertion should happen
|
||||
** char *headerh; Header field name
|
||||
** char *headerv; Header field value
|
||||
*/
|
||||
|
||||
LIBMILTER_API int smfi_addrcpt __P((SMFICTX *, char *));
|
||||
|
||||
/*
|
||||
@ -413,7 +462,6 @@ LIBMILTER_API int smfi_replacebody __P((SMFICTX *, unsigned char *, int));
|
||||
** xxfi_abort is called. This can be used to reset state.
|
||||
*/
|
||||
|
||||
#if _FFR_QUARANTINE
|
||||
/*
|
||||
** Quarantine an envelope
|
||||
**
|
||||
@ -422,7 +470,6 @@ LIBMILTER_API int smfi_replacebody __P((SMFICTX *, unsigned char *, int));
|
||||
*/
|
||||
|
||||
LIBMILTER_API int smfi_quarantine __P((SMFICTX *ctx, char *reason));
|
||||
#endif /* _FFR_QUARANTINE */
|
||||
|
||||
/*
|
||||
** Connection-private data (specific to an SMTP connection) can be
|
||||
@ -441,5 +488,8 @@ LIBMILTER_API int smfi_setpriv __P((SMFICTX *, void *));
|
||||
|
||||
LIBMILTER_API void *smfi_getpriv __P((SMFICTX *));
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* ! _LIBMILTER_MFAPI_H */
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1999-2001 Sendmail, Inc. and its suppliers.
|
||||
* Copyright (c) 1999-2004 Sendmail, Inc. and its suppliers.
|
||||
* All rights reserved.
|
||||
*
|
||||
* By using this file, you agree to the terms and conditions set
|
||||
@ -7,7 +7,7 @@
|
||||
* the sendmail distribution.
|
||||
*
|
||||
*
|
||||
* $Id: mfdef.h,v 8.11.2.1 2002/11/11 23:22:28 ca Exp $
|
||||
* $Id: mfdef.h,v 8.21 2004/07/07 21:41:31 ca Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -21,14 +21,11 @@
|
||||
# define MILTER_LEN_BYTES 4 /* length of 32 bit integer in bytes */
|
||||
# define MILTER_OPTLEN (MILTER_LEN_BYTES * 3) /* length of options */
|
||||
# define MILTER_CHUNK_SIZE 65535 /* body chunk size */
|
||||
# define MILTER_MAX_DATA_SIZE 65535 /* default milter command data limit */
|
||||
|
||||
/* These apply to SMFIF_* flags */
|
||||
#define SMFI_V1_ACTS 0x0000000FL /* The actions of V1 filter */
|
||||
#if _FFR_QUARANTINE
|
||||
# define SMFI_V2_ACTS 0x0000003FL /* The actions of V2 filter */
|
||||
#else /* _FFR_QUARANTINE */
|
||||
# define SMFI_V2_ACTS 0x0000001FL /* The actions of V2 filter */
|
||||
#endif /* _FFR_QUARANTINE */
|
||||
#define SMFI_V2_ACTS 0x0000003FL /* The actions of V2 filter */
|
||||
#define SMFI_CURR_ACTS SMFI_V2_ACTS /* The current version */
|
||||
|
||||
/* address families */
|
||||
@ -50,6 +47,12 @@
|
||||
# define SMFIC_OPTNEG 'O' /* Option negotiation */
|
||||
# define SMFIC_QUIT 'Q' /* QUIT */
|
||||
# define SMFIC_RCPT 'R' /* RCPT to */
|
||||
# if SMFI_VERSION > 3
|
||||
# define SMFIC_DATA 'T' /* DATA */
|
||||
# endif /* SMFI_VERSION > 3 */
|
||||
# if SMFI_VERSION > 2
|
||||
# define SMFIC_UNKNOWN 'U' /* Any unknown command */
|
||||
# endif /* SMFI_VERSION > 2 */
|
||||
|
||||
/* actions (replies) */
|
||||
# define SMFIR_ADDRCPT '+' /* add recipient */
|
||||
@ -62,14 +65,11 @@
|
||||
# define SMFIR_PROGRESS 'p' /* progress */
|
||||
# define SMFIR_REJECT 'r' /* reject */
|
||||
# define SMFIR_TEMPFAIL 't' /* tempfail */
|
||||
# if _FFR_MILTER_421
|
||||
# define SMFIR_SHUTDOWN '4' /* 421: shutdown (internal to MTA) */
|
||||
# endif /* _FFR_MILTER_421 */
|
||||
# define SMFIR_SHUTDOWN '4' /* 421: shutdown (internal to MTA) */
|
||||
# define SMFIR_ADDHEADER 'h' /* add header */
|
||||
# define SMFIR_INSHEADER 'i' /* insert header */
|
||||
# define SMFIR_REPLYCODE 'y' /* reply code etc */
|
||||
# if _FFR_QUARANTINE
|
||||
# define SMFIR_QUARANTINE 'q' /* quarantine */
|
||||
# endif /* _FFR_QUARANTINE */
|
||||
# define SMFIR_QUARANTINE 'q' /* quarantine */
|
||||
|
||||
/* What the MTA can send/filter wants in protocol */
|
||||
# define SMFIP_NOCONNECT 0x00000001L /* MTA should not send connect info */
|
||||
@ -79,9 +79,16 @@
|
||||
# define SMFIP_NOBODY 0x00000010L /* MTA should not send body */
|
||||
# define SMFIP_NOHDRS 0x00000020L /* MTA should not send headers */
|
||||
# define SMFIP_NOEOH 0x00000040L /* MTA should not send EOH */
|
||||
# if _FFR_MILTER_NOHDR_RESP
|
||||
# define SMFIP_NOHREPL 0x00000080L /* No reply for headers */
|
||||
# endif /* _FFR_MILTER_NOHDR_RESP */
|
||||
|
||||
# define SMFI_V1_PROT 0x0000003FL /* The protocol of V1 filter */
|
||||
# define SMFI_V2_PROT 0x0000007FL /* The protocol of V2 filter */
|
||||
# define SMFI_CURR_PROT SMFI_V2_PROT /* The current version */
|
||||
# if _FFR_MILTER_NOHDR_RESP
|
||||
# define SMFI_CURR_PROT 0x000000FFL /* The current version */
|
||||
# else /* _FFR_MILTER_NOHDR_RESP */
|
||||
# define SMFI_CURR_PROT SMFI_V2_PROT /* The current version */
|
||||
# endif /* _FFR_MILTER_NOHDR_RESP */
|
||||
|
||||
#endif /* !_LIBMILTER_MFDEF_H */
|
||||
|
@ -7,7 +7,7 @@
|
||||
* the sendmail distribution.
|
||||
*
|
||||
*
|
||||
* $Id: milter.h,v 8.37.2.3 2003/12/02 00:19:51 msk Exp $
|
||||
* $Id: milter.h,v 8.39 2003/12/02 00:21:42 msk Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -25,11 +25,7 @@
|
||||
typedef pthread_t sthread_t;
|
||||
typedef int socket_t;
|
||||
|
||||
#if _FFR_MILTER_MACROS_EOM
|
||||
# define MAX_MACROS_ENTRIES 5 /* max size of macro pointer array */
|
||||
#else /* _FFR_MILTER_MACROS_EOM */
|
||||
# define MAX_MACROS_ENTRIES 4 /* max size of macro pointer array */
|
||||
#endif /* _FFR_MILTER_MACROS_EOM */
|
||||
|
||||
/*
|
||||
** context for milter
|
||||
|
@ -6,7 +6,7 @@
|
||||
* forth in the LICENSE file which can be found at the top level of
|
||||
* the sendmail distribution.
|
||||
*
|
||||
* $Id: smdb.h,v 8.40.2.1 2002/10/05 17:04:51 ca Exp $
|
||||
* $Id: smdb.h,v 8.41 2002/09/24 19:53:28 ca Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
|
@ -10,14 +10,10 @@
|
||||
* the sendmail distribution.
|
||||
*
|
||||
*
|
||||
* $Id: mailstats.h,v 8.18 2001/11/21 13:39:10 gshapiro Exp $
|
||||
* $Id: mailstats.h,v 8.19 2002/06/27 22:47:22 gshapiro Exp $
|
||||
*/
|
||||
|
||||
#if _FFR_QUARANTINE
|
||||
# define STAT_VERSION 4
|
||||
#else /* _FFR_QUARANTINE */
|
||||
# define STAT_VERSION 3
|
||||
#endif /* _FFR_QUARANTINE */
|
||||
#define STAT_VERSION 4
|
||||
#define STAT_MAGIC 0x1B1DE
|
||||
|
||||
/*
|
||||
@ -39,7 +35,5 @@ struct statistics
|
||||
long stat_bt[MAXMAILERS]; /* kbytes to each mailer */
|
||||
long stat_nr[MAXMAILERS]; /* # rejects by each mailer */
|
||||
long stat_nd[MAXMAILERS]; /* # discards by each mailer */
|
||||
#if _FFR_QUARANTINE
|
||||
long stat_nq[MAXMAILERS]; /* # quarantines by each mailer */
|
||||
#endif /* _FFR_QUARANTINE */
|
||||
};
|
||||
|
@ -10,7 +10,7 @@
|
||||
* the sendmail distribution.
|
||||
*
|
||||
*
|
||||
* $Id: sendmail.h,v 8.67 2001/09/08 01:20:57 gshapiro Exp $
|
||||
* $Id: sendmail.h,v 8.68 2002/07/01 22:18:53 gshapiro Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -55,6 +55,7 @@
|
||||
#define SFF_NOWRFILES 0x00010000L /* disallow o readable files */
|
||||
#define SFF_NOTEXCL 0x00020000L /* creates don't need to be exclusive */
|
||||
#define SFF_EXECOK 0x00040000L /* executable files are ok (E_SM_ISEXEC) */
|
||||
#define SFF_NBLOCK 0x00080000L /* use a non-blocking lock */
|
||||
#define SFF_NORFILES (SFF_NOGRFILES|SFF_NOWRFILES)
|
||||
|
||||
/* pseudo-flags */
|
||||
|
@ -7,7 +7,7 @@
|
||||
* the sendmail distribution.
|
||||
*
|
||||
*
|
||||
* $Id: bdb.h,v 1.1.2.4 2003/03/06 16:27:38 ca Exp $
|
||||
* $Id: bdb.h,v 1.4 2003/03/06 16:30:05 ca Exp $
|
||||
*/
|
||||
|
||||
#ifndef SM_BDB_H
|
||||
|
@ -6,7 +6,7 @@
|
||||
* forth in the LICENSE file which can be found at the top level of
|
||||
* the sendmail distribution.
|
||||
*
|
||||
* $Id: cdefs.h,v 1.15.2.1 2003/12/05 22:44:17 ca Exp $
|
||||
* $Id: cdefs.h,v 1.16 2003/12/05 22:45:25 ca Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -10,7 +10,7 @@
|
||||
* the sendmail distribution.
|
||||
*
|
||||
*
|
||||
* $Id: conf.h,v 1.90.2.20 2004/01/07 00:52:16 ca Exp $
|
||||
* $Id: conf.h,v 1.116 2004/07/26 18:08:35 ca Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -436,6 +436,8 @@ typedef int pid_t;
|
||||
# endif /* SOLARIS >= 20800 || (SOLARIS < 10000 && SOLARIS >= 208) */
|
||||
# if SOLARIS >= 20900 || (SOLARIS < 10000 && SOLARIS >= 209)
|
||||
# define HASURANDOMDEV 1 /* /dev/[u]random added in S9 */
|
||||
# define HASCLOSEFROM 1 /* closefrom(3c) added in S9 */
|
||||
# define HASFDWALK 1 /* fdwalk(3c) added in S9 */
|
||||
# endif /* SOLARIS >= 20900 || (SOLARIS < 10000 && SOLARIS >= 209) */
|
||||
# if SOLARIS >= 21000 || (SOLARIS < 10000 && SOLARIS >= 210)
|
||||
# define HASUNSETENV 1 /* unsetenv() added in S10 */
|
||||
@ -481,7 +483,7 @@ extern char *getenv();
|
||||
|
||||
# else /* SUNOS403 */
|
||||
/* 4.1.x specifics */
|
||||
# define HASSETSID 1 /* has Posix setsid(2) call */
|
||||
# define HASSETSID 1 /* has POSIX setsid(2) call */
|
||||
# define HASSETVBUF 1 /* we have setvbuf(3) in libc */
|
||||
|
||||
# endif /* SUNOS403 */
|
||||
@ -510,7 +512,7 @@ extern char *getenv();
|
||||
# define LA_TYPE LA_DGUX
|
||||
# define HASSETREUID 1 /* has setreuid(2) call */
|
||||
# define HASUNAME 1 /* use System V uname(2) system call */
|
||||
# define HASSETSID 1 /* has Posix setsid(2) call */
|
||||
# define HASSETSID 1 /* has POSIX setsid(2) call */
|
||||
# define HASINITGROUPS 1 /* has initgroups(3) call */
|
||||
# define IP_SRCROUTE 0 /* does not have <netinet/ip_var.h> */
|
||||
# define HASGETUSERSHELL 0 /* does not have getusershell(3) */
|
||||
@ -714,8 +716,7 @@ typedef int pid_t;
|
||||
# endif /* NeXT */
|
||||
|
||||
/*
|
||||
** Apple Darwin (aka Rhapsody)
|
||||
**
|
||||
** Apple Darwin
|
||||
** Contributed by Wilfredo Sanchez <wsanchez@mit.edu>
|
||||
*/
|
||||
|
||||
@ -725,7 +726,7 @@ typedef int pid_t;
|
||||
# define HASFLOCK 1 /* has flock(2) */
|
||||
# define HASUNAME 1 /* has uname(2) */
|
||||
# define HASUNSETENV 1 /* has unsetenv(3) */
|
||||
# define HASSETSID 1 /* has the setsid(2) */
|
||||
# define HASSETSID 1 /* has POSIX setsid(2) call */
|
||||
# define HASINITGROUPS 1 /* has initgroups(3) */
|
||||
# define HASSETVBUF 1 /* has setvbuf (3) */
|
||||
# define HASSETREUID 0 /* setreuid(2) unusable */
|
||||
@ -794,7 +795,7 @@ extern unsigned int sleepX __P((unsigned int seconds));
|
||||
# include <paths.h>
|
||||
# define HASUNSETENV 1 /* has the unsetenv(3) call */
|
||||
# define HASSETREUID 0 /* BSD-OS has broken setreuid(2) emulation */
|
||||
# define HASSETSID 1 /* has the setsid(2) POSIX syscall */
|
||||
# define HASSETSID 1 /* has POSIX setsid(2) call */
|
||||
# define USESETEUID 1 /* has usable seteuid(2) call */
|
||||
# define HASFCHMOD 1 /* has fchmod(2) syscall */
|
||||
# define HASSETLOGIN 1 /* has setlogin(2) */
|
||||
@ -842,7 +843,7 @@ extern unsigned int sleepX __P((unsigned int seconds));
|
||||
# include <unix.h>
|
||||
# include <sys/select.h>
|
||||
# undef NGROUPS_MAX
|
||||
# define HASSETSID 1 /* has the setsid(2) POSIX syscall */
|
||||
# define HASSETSID 1 /* has POSIX setsid(2) call */
|
||||
# define USESETEUID 1 /* has usable seteuid(2) call */
|
||||
# define HASFCHMOD 1 /* has fchmod(2) syscall */
|
||||
# define HASGETDTABLESIZE 1 /* has getdtablesize(2) call */
|
||||
@ -876,10 +877,10 @@ extern unsigned int sleepX __P((unsigned int seconds));
|
||||
# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
|
||||
# include <paths.h>
|
||||
# define HASUNSETENV 1 /* has unsetenv(3) call */
|
||||
# define HASSETSID 1 /* has the setsid(2) POSIX syscall */
|
||||
# define HASSETSID 1 /* has POSIX setsid(2) call */
|
||||
# define USESETEUID 1 /* has usable seteuid(2) call */
|
||||
# define HASFCHMOD 1 /* has fchmod(2) syscall */
|
||||
# define HASFCHOWN 1 /* fchown(2) */
|
||||
# define HASFCHOWN 1 /* has fchown(2) syscall */
|
||||
# define HASUNAME 1 /* has uname(2) syscall */
|
||||
# define HASSTRERROR 1 /* has strerror(3) */
|
||||
# define HAS_ST_GEN 1 /* has st_gen field in stat struct */
|
||||
@ -894,7 +895,12 @@ extern unsigned int sleepX __P((unsigned int seconds));
|
||||
# ifndef LA_TYPE
|
||||
# define LA_TYPE LA_SUBR
|
||||
# endif /* ! LA_TYPE */
|
||||
# define SFS_TYPE SFS_MOUNT /* use <sys/mount.h> statfs() impl */
|
||||
# if defined(__NetBSD__) && defined(__NetBSD_Version__) && __NetBSD_Version__ >= 200040000
|
||||
# undef SFS_TYPE
|
||||
# define SFS_TYPE SFS_STATVFS
|
||||
# else
|
||||
# define SFS_TYPE SFS_MOUNT /* use <sys/mount.h> statfs() impl */
|
||||
# endif
|
||||
# if defined(__NetBSD__) && (NetBSD > 199307 || NetBSD0_9 > 1)
|
||||
# undef SPT_TYPE
|
||||
# define SPT_TYPE SPT_BUILTIN /* setproctitle is in libc */
|
||||
@ -902,6 +908,17 @@ extern unsigned int sleepX __P((unsigned int seconds));
|
||||
# if defined(__NetBSD__) && ((__NetBSD_Version__ > 102070000) || (NetBSD1_2 > 8) || defined(NetBSD1_4) || defined(NetBSD1_3))
|
||||
# define HASURANDOMDEV 1 /* has /dev/urandom(4) */
|
||||
# endif /* defined(__NetBSD__) && ((__NetBSD_Version__ > 102070000) || (NetBSD1_2 > 8) || defined(NetBSD1_4) || defined(NetBSD1_3)) */
|
||||
# if defined(__NetBSD__) && defined(__NetBSD_Version__) && __NetBSD_Version__ >= 104170000
|
||||
# define HASSETUSERCONTEXT 1 /* BSDI-style login classes */
|
||||
# endif
|
||||
# if defined(__NetBSD__) && defined(__NetBSD_Version__) && __NetBSD_Version__ >= 200060000
|
||||
# define HASCLOSEFROM 1 /* closefrom(3) added in 2.0F */
|
||||
# endif
|
||||
# if defined(__NetBSD__)
|
||||
# define USESYSCTL 1 /* use sysctl(3) for getting ncpus */
|
||||
# include <sys/param.h>
|
||||
# include <sys/sysctl.h>
|
||||
# endif
|
||||
# if defined(__FreeBSD__)
|
||||
# define HASSETLOGIN 1 /* has setlogin(2) */
|
||||
# if __FreeBSD_version >= 227001
|
||||
@ -949,6 +966,9 @@ extern unsigned int sleepX __P((unsigned int seconds));
|
||||
# if OpenBSD >= 200012
|
||||
# define HASSETUSERCONTEXT 1 /* BSDI-style login classes */
|
||||
# endif /* OpenBSD >= 200012 */
|
||||
# if OpenBSD >= 200405
|
||||
# define HASCLOSEFROM 1 /* closefrom(3) added in 3.5 */
|
||||
# endif /* OpenBSD >= 200405 */
|
||||
# endif /* defined(__OpenBSD__) */
|
||||
# endif /* defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) */
|
||||
|
||||
@ -1365,7 +1385,11 @@ extern void *malloc();
|
||||
# if LINUX_VERSION_CODE < 66399
|
||||
# define HASFLOCK 0 /* flock(2) is broken after 0.99.13 */
|
||||
# else /* LINUX_VERSION_CODE < 66399 */
|
||||
# define HASFLOCK 1 /* flock(2) fixed after 1.3.95 */
|
||||
# if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0))
|
||||
# define HASFLOCK 1 /* flock(2) fixed after 1.3.95 */
|
||||
# else /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0)) */
|
||||
# define HASFLOCK 0 /* flock(2) is broken (again) after 2.4.0 */
|
||||
# endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0)) */
|
||||
# endif /* LINUX_VERSION_CODE < 66399 */
|
||||
# endif /* ! HASFLOCK */
|
||||
# ifndef LA_TYPE
|
||||
@ -1379,9 +1403,7 @@ extern void *malloc();
|
||||
# endif /* ! HASURANDOMDEV */
|
||||
# endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,0,0)) */
|
||||
# if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
|
||||
# ifndef HASSTRERROR
|
||||
# define HASSTRERROR 1 /* has strerror(3) */
|
||||
# endif /* HASSTRERROR */
|
||||
# define HASSTRERROR 1 /* has strerror(3) */
|
||||
# endif /* defined(__GLIBC__) && defined(__GLIBC_MINOR__) */
|
||||
# ifndef TZ_TYPE
|
||||
# define TZ_TYPE TZ_NONE /* no standard for Linux */
|
||||
@ -1600,22 +1622,66 @@ typedef int pid_t;
|
||||
# endif /* ! _PATH_SENDMAILPID */
|
||||
# endif /* _SEQUENT_ */
|
||||
|
||||
|
||||
/*
|
||||
** Cray Unicos
|
||||
** Cray UNICOS, UNICOS/mk, and UNICOS/mp
|
||||
**
|
||||
** UNICOS:
|
||||
** Ported by David L. Kensiski, Sterling Sofware <kensiski@nas.nasa.gov>
|
||||
** Update Brian Ginsbach <ginsbach@cray.com>
|
||||
** UNICOS/mk (Cray T3E):
|
||||
** Contributed by Manu Mahonen <mailadm@csc.fi>
|
||||
** of Center for Scientific Computing.
|
||||
** Update Brian Ginsbach <ginsbach@cray.com>
|
||||
** UNICOS/mp:
|
||||
** From Aaron Davis <awd@cray.com> & Brian Ginsbach <ginsbach@cray.com>
|
||||
*/
|
||||
|
||||
# ifdef UNICOS
|
||||
# if defined(_CRAY) || defined(UNICOS) || defined(_UNICOSMP)
|
||||
# define SYSTEM5 1 /* include all the System V defines */
|
||||
# define SYS5SIGNALS 1 /* SysV signal semantics -- reset on each sig */
|
||||
# define MAXPATHLEN PATHSIZE
|
||||
# define LA_TYPE LA_ZERO
|
||||
# define HASFCHMOD 1 /* has fchmod(2) syscall */
|
||||
# define HASFCHOWN 1 /* has fchown(2) */
|
||||
# define HASUNSETENV 1 /* has unsetenv(3) call */
|
||||
# define HASINITGROUPS 1 /* has initgroups(3) call */
|
||||
# define HASSETREUID 1 /* has setreuid(2) call */
|
||||
# define USESETEUID 1 /* has usable seteuid(2) call */
|
||||
# define HASGETDTABLESIZE 1 /* has getdtablesize(2) syscall */
|
||||
# define HASSTRERROR 1 /* has strerror(3) */
|
||||
# define GIDSET_T gid_t
|
||||
# define SFS_TYPE SFS_4ARGS /* four argument statfs() call */
|
||||
# define SFS_BAVAIL f_bfree /* alternate field name */
|
||||
# endif /* UNICOS */
|
||||
|
||||
# define SFS_BAVAIL f_bfree /* alternate field name */
|
||||
# define SAFENFSPATHCONF 1 /* pathconf(2) pessimizes on NFS filesystems */
|
||||
# ifdef UNICOS
|
||||
# define SYS5SIGNALS 1 /* SysV signal semantics -- reset on each sig */
|
||||
# define LA_TYPE LA_ZERO
|
||||
# define _PATH_MAILDIR "/usr/spool/mail"
|
||||
# define GET_IPOPT_DST(dst) *(struct in_addr *)&(dst)
|
||||
# ifndef MAXPATHLEN
|
||||
# define MAXPATHLEN PATHSIZE
|
||||
# endif /* ! MAXPATHLEN */
|
||||
# ifndef _PATH_UNIX
|
||||
# ifdef UNICOSMK
|
||||
# define _PATH_UNIX "/unicosmk.ar"
|
||||
# else
|
||||
# define _PATH_UNIX "/unicos"
|
||||
# endif /* UNICOSMK */
|
||||
# endif /* ! _PATH_UNIX */
|
||||
# ifndef _PATH_VENDOR_CF
|
||||
# define _PATH_VENDOR_CF "/usr/lib/sendmail.cf"
|
||||
# endif /* ! _PATH_VENDOR_CF */
|
||||
# endif /* UNICOS */
|
||||
# ifdef _UNICOSMP
|
||||
# if defined(_SC_NPROC_ONLN) && !defined(_SC_NPROCESSORS_ONLN)
|
||||
/* _SC_NPROC_ONLN is 'mpadmin -u', total # of unrestricted processors */
|
||||
# define _SC_NPROCESSORS_ONLN _SC_NPROC_ONLN
|
||||
# endif /* if defined(_SC_NPROC_ONLN) && !defined(_SC_NPROCESSORS_ONLN) */
|
||||
# define HASGETUSERSHELL 0 /* does not have getusershell(3) call */
|
||||
# define HASSETRLIMIT 1 /* has setrlimit(2) syscall */
|
||||
# define LA_TYPE LA_IRIX6 /* figure out at run time */
|
||||
# include <sys/cdefs.h>
|
||||
# include <paths.h>
|
||||
# define ARGV_T char *const *
|
||||
# endif /* _UNICOSMP */
|
||||
# endif /* _CRAY */
|
||||
|
||||
/*
|
||||
** Apollo DomainOS
|
||||
@ -1731,7 +1797,7 @@ extern struct passwd * sendmail_mpe_getpwuid __P((uid_t));
|
||||
# define __svr4__
|
||||
# define SYS5SIGNALS 1
|
||||
# define HASFCHOWN 1 /* has fchown(2) call */
|
||||
# define HASSETSID 1
|
||||
# define HASSETSID 1 /* has POSIX setsid(2) call */
|
||||
# define HASSETREUID 1
|
||||
# define HASWAITPID 1
|
||||
# define HASGETDTABLESIZE 1
|
||||
@ -1781,7 +1847,7 @@ extern struct passwd * sendmail_mpe_getpwuid __P((uid_t));
|
||||
# define SYSTEM5 1
|
||||
# define HASGETUSERSHELL 0 /* does not have getusershell(3) call */
|
||||
# define HASSETREUID 1
|
||||
# define HASSETSID 1
|
||||
# define HASSETSID 1 /* has POSIX setsid(2) call */
|
||||
# define HASINITGROUPS 1
|
||||
# define GIDSET_T gid_t
|
||||
# define SLEEP_T unsigned
|
||||
@ -2003,7 +2069,7 @@ typedef int (*sigfunc_t)();
|
||||
# ifndef __svr4__
|
||||
# define __svr4__ /* use all System V Release 4 defines below */
|
||||
# endif /* ! __svr4__ */
|
||||
# define HASSETSID 1 /* has Posix setsid(2) call */
|
||||
# define HASSETSID 1 /* has POSIX setsid(2) call */
|
||||
# define HASGETUSERSHELL 1 /* DOES have getusershell(3) call in libc */
|
||||
# define LA_TYPE LA_READKSYM /* use MIOC_READKSYM ioctl */
|
||||
# ifndef SPT_TYPE
|
||||
@ -2082,7 +2148,7 @@ extern char *getenv();
|
||||
# define __svr4__ /* use all System V Release 4 defines below */
|
||||
# endif /* ! __svr4__ */
|
||||
# define SYS5SIGNALS 1 /* SysV signal semantics -- reset on each sig */
|
||||
# define HASSETSID 1 /* has Posix setsid(2) call */
|
||||
# define HASSETSID 1 /* has POSIX setsid(2) call */
|
||||
# define LA_TYPE LA_READKSYM /* use MIOC_READSYM ioctl */
|
||||
# define SFS_TYPE SFS_USTAT /* use System V ustat(2) syscall */
|
||||
# define GIDSET_T gid_t
|
||||
@ -2204,19 +2270,6 @@ typedef struct msgb mblk_t;
|
||||
# define SM_INT32 int /* 32bit integer */
|
||||
# endif /* sinix */
|
||||
|
||||
/*
|
||||
** CRAY T3E
|
||||
**
|
||||
** Contributed by Manu Mahonen <mailadm@csc.fi>
|
||||
** of Center for Scientific Computing.
|
||||
*/
|
||||
# ifdef _CRAY
|
||||
# define GET_IPOPT_DST(dst) *(struct in_addr *)&(dst)
|
||||
# define _PATH_MAILDIR "/usr/spool/mail"
|
||||
# if !defined(MAXPATHLEN)
|
||||
# define MAXPATHLEN PATHSIZE
|
||||
# endif /* !defined(MAXPATHLEN) */
|
||||
# endif /* _CRAY */
|
||||
|
||||
/*
|
||||
** Motorola 922, MC88110, UNIX SYSTEM V/88 Release 4.0 Version 4.3
|
||||
@ -2227,7 +2280,7 @@ typedef struct msgb mblk_t;
|
||||
# ifdef MOTO
|
||||
# define HASFCHMOD 1
|
||||
# define HASSETRLIMIT 0
|
||||
# define HASSETSID 1
|
||||
# define HASSETSID 1 /* has POSIX setsid(2) call */
|
||||
# define HASSETREUID 1
|
||||
# define HASULIMIT 1
|
||||
# define HASWAITPID 1
|
||||
@ -2257,8 +2310,13 @@ typedef struct msgb mblk_t;
|
||||
# undef HAVE_SYS_ERRLIST
|
||||
# define sys_errlist __sys_errlist
|
||||
# define sys_nerr __sys_nerr
|
||||
# define major(dev) ((int)(((dev) >> 8) & 0xff))
|
||||
# define minor(dev) ((int)((dev) & 0xff))
|
||||
# include <sys/mkdev.h>
|
||||
# ifndef major
|
||||
# define major(dev) ((int)(((dev) >> 8) & 0xff))
|
||||
# endif /* ! major */
|
||||
# ifndef minor
|
||||
# define minor(dev) ((int)((dev) & 0xff))
|
||||
# endif /* ! minor */
|
||||
# endif /* defined(__INTERIX) */
|
||||
|
||||
|
||||
@ -2359,8 +2417,8 @@ typedef struct msgb mblk_t;
|
||||
|
||||
/* general POSIX defines */
|
||||
# ifdef _POSIX_VERSION
|
||||
# define HASSETSID 1 /* has Posix setsid(2) call */
|
||||
# define HASWAITPID 1 /* has Posix waitpid(2) call */
|
||||
# define HASSETSID 1 /* has POSIX setsid(2) call */
|
||||
# define HASWAITPID 1 /* has POSIX waitpid(2) call */
|
||||
# if _POSIX_VERSION >= 199500 && !defined(USESETEUID)
|
||||
# define USESETEUID 1 /* has usable seteuid(2) call */
|
||||
# endif /* _POSIX_VERSION >= 199500 && !defined(USESETEUID) */
|
||||
@ -2578,7 +2636,7 @@ typedef struct msgb mblk_t;
|
||||
#endif /* ! EX_NOTFOUND */
|
||||
|
||||
/* pseudo-code used for mci_setstat */
|
||||
# define EX_NOTSTICKY -5 /* don't save persistent status */
|
||||
# define EX_NOTSTICKY (-5) /* don't save persistent status */
|
||||
|
||||
|
||||
/*
|
||||
|
@ -1,12 +1,12 @@
|
||||
/*
|
||||
* Copyright (c) 2000-2001 Sendmail, Inc. and its suppliers.
|
||||
* Copyright (c) 2000-2003 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: config.h,v 1.44 2002/01/23 17:47:15 gshapiro Exp $
|
||||
* $Id: config.h,v 1.46 2003/12/10 03:19:06 gshapiro Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -143,8 +143,12 @@
|
||||
# define SM_CONF_TEST_LLONG 1
|
||||
# endif /* !SM_CONF_TEST_LLONG */
|
||||
|
||||
/* Does LDAP library have ldap_memfree()? */
|
||||
# ifndef SM_CONF_LDAP_MEMFREE
|
||||
/* LDAP Checks */
|
||||
# if LDAPMAP
|
||||
# include <ldap.h>
|
||||
|
||||
/* Does the LDAP library have ldap_memfree()? */
|
||||
# ifndef SM_CONF_LDAP_MEMFREE
|
||||
|
||||
/*
|
||||
** The new LDAP C API (draft-ietf-ldapext-ldap-c-api-04.txt) includes
|
||||
@ -152,11 +156,31 @@
|
||||
** of 2004 to identify the API.
|
||||
*/
|
||||
|
||||
# if USING_NETSCAPE_LDAP || LDAP_API_VERSION >= 2004
|
||||
# define SM_CONF_LDAP_MEMFREE 1
|
||||
# else /* USING_NETSCAPE_LDAP || LDAP_API_VERSION >= 2004 */
|
||||
# define SM_CONF_LDAP_MEMFREE 0
|
||||
# endif /* USING_NETSCAPE_LDAP || LDAP_API_VERSION >= 2004 */
|
||||
# endif /* ! SM_CONF_LDAP_MEMFREE */
|
||||
# if USING_NETSCAPE_LDAP || LDAP_API_VERSION >= 2004
|
||||
# define SM_CONF_LDAP_MEMFREE 1
|
||||
# else /* USING_NETSCAPE_LDAP || LDAP_API_VERSION >= 2004 */
|
||||
# define SM_CONF_LDAP_MEMFREE 0
|
||||
# endif /* USING_NETSCAPE_LDAP || LDAP_API_VERSION >= 2004 */
|
||||
# endif /* ! SM_CONF_LDAP_MEMFREE */
|
||||
|
||||
/* Does the LDAP library have ldap_initialize()? */
|
||||
# ifndef SM_CONF_LDAP_INITIALIZE
|
||||
|
||||
/*
|
||||
** Check for ldap_initialize() support for support for LDAP URI's with
|
||||
** non-ldap:// schemes.
|
||||
*/
|
||||
|
||||
/* OpenLDAP does it with LDAP_OPT_URI */
|
||||
# ifdef LDAP_OPT_URI
|
||||
# define SM_CONF_LDAP_INITIALIZE 1
|
||||
# endif /* LDAP_OPT_URI */
|
||||
# endif /* !SM_CONF_LDAP_INITIALIZE */
|
||||
# endif /* LDAPMAP */
|
||||
|
||||
/* don't use strcpy() */
|
||||
# ifndef DO_NOT_USE_STRCPY
|
||||
# define DO_NOT_USE_STRCPY 1
|
||||
# endif /* ! DO_NOT_USE_STRCPY */
|
||||
|
||||
#endif /* ! SM_CONFIG_H */
|
||||
|
@ -1,12 +1,12 @@
|
||||
/*
|
||||
* Copyright (c) 2000-2001 Sendmail, Inc. and its suppliers.
|
||||
* Copyright (c) 2000, 2001, 2003 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: debug.h,v 1.15 2001/03/08 03:23:07 ca Exp $
|
||||
* $Id: debug.h,v 1.16 2003/01/10 00:26:06 ca Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -28,29 +28,26 @@ extern SM_FILE_T *
|
||||
sm_debug_file __P((void));
|
||||
|
||||
extern void
|
||||
sm_debug_setfile __P((
|
||||
SM_FILE_T *));
|
||||
sm_debug_setfile __P(( SM_FILE_T *));
|
||||
|
||||
extern void PRINTFLIKE(1, 2)
|
||||
sm_dprintf __P((
|
||||
char *_fmt,
|
||||
...));
|
||||
sm_dprintf __P((char *_fmt, ...));
|
||||
|
||||
extern void
|
||||
sm_dflush __P((void));
|
||||
|
||||
extern void
|
||||
sm_debug_close __P((void));
|
||||
|
||||
/*
|
||||
** abstractions for setting and testing debug activation levels
|
||||
*/
|
||||
|
||||
extern void
|
||||
sm_debug_addsettings_x __P((
|
||||
const char *));
|
||||
sm_debug_addsettings_x __P((const char *));
|
||||
|
||||
extern void
|
||||
sm_debug_addsetting_x __P((
|
||||
const char *,
|
||||
int));
|
||||
sm_debug_addsetting_x __P((const char *, int));
|
||||
|
||||
# define SM_DEBUG_UNKNOWN ((SM_ATOMIC_UINT_T)(-1))
|
||||
|
||||
@ -123,13 +120,10 @@ struct sm_debug
|
||||
# endif /* SM_DEBUG_CHECK */
|
||||
|
||||
extern bool
|
||||
sm_debug_loadactive __P((
|
||||
SM_DEBUG_T *,
|
||||
int));
|
||||
sm_debug_loadactive __P((SM_DEBUG_T *, int));
|
||||
|
||||
extern int
|
||||
sm_debug_loadlevel __P((
|
||||
SM_DEBUG_T *));
|
||||
sm_debug_loadlevel __P((SM_DEBUG_T *));
|
||||
|
||||
# define SM_DEBUG_INITIALIZER(name, desc) { \
|
||||
SmDebugMagic, \
|
||||
|
@ -6,7 +6,7 @@
|
||||
* forth in the LICENSE file which can be found at the top level of
|
||||
* the sendmail distribution.
|
||||
*
|
||||
* $Id: errstring.h,v 1.4.4.3 2003/06/24 17:16:10 ca Exp $
|
||||
* $Id: errstring.h,v 1.9 2003/12/10 03:19:06 gshapiro Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -17,7 +17,9 @@
|
||||
# define SM_ERRSTRING_H
|
||||
|
||||
#include <errno.h>
|
||||
#if NEEDINTERRNO
|
||||
extern int errno;
|
||||
#endif /* NEEDINTERRNO */
|
||||
|
||||
/*
|
||||
** These are used in a few cases where we need some special
|
||||
@ -44,6 +46,7 @@ extern int errno;
|
||||
#define E_DNSBASE (E_PSEUDOBASE + 20) /* base for DNS h_errno */
|
||||
#define E_SMDBBASE (E_PSEUDOBASE + 40) /* base for libsmdb errors */
|
||||
#define E_LDAPBASE (E_PSEUDOBASE + 70) /* base for LDAP errors */
|
||||
#define E_LDAPURLBASE (E_PSEUDOBASE + 200) /* base for LDAP URL errors */
|
||||
|
||||
|
||||
/* libsmdb */
|
||||
|
@ -6,7 +6,7 @@
|
||||
* forth in the LICENSE file which can be found at the top level of
|
||||
* the sendmail distribution.
|
||||
*
|
||||
* $Id: fdset.h,v 1.3.10.2 2002/12/10 04:02:25 ca Exp $
|
||||
* $Id: fdset.h,v 1.5 2002/12/10 19:48:19 ca Exp $
|
||||
*/
|
||||
|
||||
#ifndef SM_FDSET_H
|
||||
|
@ -6,7 +6,7 @@
|
||||
* forth in the LICENSE file which can be found at the top level of
|
||||
* the sendmail distribution.
|
||||
*
|
||||
* $Id: gen.h,v 1.22 2002/04/03 00:40:42 ca Exp $
|
||||
* $Id: gen.h,v 1.23 2003/11/04 18:51:54 ca Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -43,7 +43,7 @@
|
||||
# else /* SM_CONF_STDDEF_H */
|
||||
# ifndef NULL
|
||||
# define NULL 0
|
||||
# endif
|
||||
# endif /* ! NULL */
|
||||
# define offsetof(type, member) ((size_t)(&((type *)0)->member))
|
||||
# endif /* SM_CONF_STDDEF_H */
|
||||
|
||||
@ -58,7 +58,8 @@
|
||||
typedef int bool;
|
||||
# define false 0
|
||||
# define true 1
|
||||
# endif
|
||||
# define __bool_true_false_are_defined 1
|
||||
# endif /* ! __cplusplus */
|
||||
# endif /* SM_CONF_STDBOOL_H */
|
||||
|
||||
/*
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000-2003 Sendmail, Inc. and its suppliers.
|
||||
* Copyright (c) 2000-2002, 2004 Sendmail, Inc. and its suppliers.
|
||||
* All rights reserved.
|
||||
* Copyright (c) 1990
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -11,7 +11,7 @@
|
||||
* forth in the LICENSE file which can be found at the top level of
|
||||
* the sendmail distribution.
|
||||
*
|
||||
* $Id: io.h,v 1.23.2.2 2003/09/05 20:35:28 ca Exp $
|
||||
* $Id: io.h,v 1.24 2004/03/03 19:14:49 ca Exp $
|
||||
*/
|
||||
|
||||
/*-
|
||||
@ -34,15 +34,15 @@
|
||||
#define SM_IO_RDWRTR 6 /* read-write with truncation indicated */
|
||||
|
||||
# define SM_IO_BINARY 0x0 /* binary mode: not used in Unix */
|
||||
#define SM_IS_BINARY(mode) ((mode) & SM_IO_BINARY != 0)
|
||||
#define SM_IS_BINARY(mode) (((mode) & SM_IO_BINARY) != 0)
|
||||
#define SM_IO_MODE(mode) ((mode) & 0x0f)
|
||||
|
||||
#define SM_IO_RDWR_B (SM_IO_RDWR|SM_IO_BINARY)
|
||||
#define SM_IO_RDONLY_B (SM_IO_RDONLY|SM_IO_BINARY)
|
||||
#define SM_IO_WRONLY_B (SM_IO_WRONLY|SM_IO_BINARY)
|
||||
#define SM_IO_APPEND_B (SM_IO_APPEND|SM_IO_BINARY)
|
||||
#define SM_IO_RDWR_B (SM_IO_RDWR|SM_IO_BINARY)
|
||||
#define SM_IO_RDONLY_B (SM_IO_RDONLY|SM_IO_BINARY)
|
||||
#define SM_IO_WRONLY_B (SM_IO_WRONLY|SM_IO_BINARY)
|
||||
#define SM_IO_APPEND_B (SM_IO_APPEND|SM_IO_BINARY)
|
||||
#define SM_IO_APPENDRW_B (SM_IO_APPENDRW|SM_IO_BINARY)
|
||||
#define SM_IO_RDWRTR_B (SM_IO_RDWRTR|SM_IO_BINARY)
|
||||
#define SM_IO_RDWRTR_B (SM_IO_RDWRTR|SM_IO_BINARY)
|
||||
|
||||
/* for sm_io_fseek, et al api's (exposed) */
|
||||
#define SM_IO_SEEK_SET 0
|
||||
|
@ -6,7 +6,7 @@
|
||||
* forth in the LICENSE file which can be found at the top level of
|
||||
* the sendmail distribution.
|
||||
*
|
||||
* $Id: ldap.h,v 1.22 2002/03/05 02:17:26 ca Exp $
|
||||
* $Id: ldap.h,v 1.27 2003/12/20 09:23:47 gshapiro Exp $
|
||||
*/
|
||||
|
||||
#ifndef SM_LDAP_H
|
||||
@ -32,34 +32,26 @@
|
||||
|
||||
# if LDAPMAP
|
||||
|
||||
# if _FFR_LDAP_RECURSION
|
||||
|
||||
/* Attribute types */
|
||||
# define SM_LDAP_ATTR_NONE (-1)
|
||||
# define SM_LDAP_ATTR_OBJCLASS 0
|
||||
# define SM_LDAP_ATTR_NORMAL 1
|
||||
# define SM_LDAP_ATTR_DN 2
|
||||
# define SM_LDAP_ATTR_FILTER 3
|
||||
# define SM_LDAP_ATTR_URL 4
|
||||
# define SM_LDAP_ATTR_NONE (-1)
|
||||
# define SM_LDAP_ATTR_OBJCLASS 0
|
||||
# define SM_LDAP_ATTR_NORMAL 1
|
||||
# define SM_LDAP_ATTR_DN 2
|
||||
# define SM_LDAP_ATTR_FILTER 3
|
||||
# define SM_LDAP_ATTR_URL 4
|
||||
|
||||
/* sm_ldap_results() flags */
|
||||
# define SM_LDAP_SINGLEMATCH 0x0001
|
||||
# define SM_LDAP_MATCHONLY 0x0002
|
||||
# define SM_LDAP_USE_ALLATTR 0x0004
|
||||
|
||||
# endif /* _FFR_LDAP_RECURSION */
|
||||
# define SM_LDAP_SINGLEMATCH 0x0001
|
||||
# define SM_LDAP_MATCHONLY 0x0002
|
||||
# define SM_LDAP_USE_ALLATTR 0x0004
|
||||
|
||||
struct sm_ldap_struct
|
||||
{
|
||||
/* needed for ldap_open or ldap_init */
|
||||
char *ldap_target;
|
||||
char *ldap_uri;
|
||||
char *ldap_host;
|
||||
int ldap_port;
|
||||
# if _FFR_LDAP_URI
|
||||
bool ldap_uri;
|
||||
# endif /* _FFR_LDAP_URI */
|
||||
# if _FFR_LDAP_SETVERSION
|
||||
int ldap_version;
|
||||
# endif /* _FFR_LDAP_SETVERSION */
|
||||
pid_t ldap_pid;
|
||||
|
||||
/* options set in ld struct before ldap_bind_s */
|
||||
@ -79,10 +71,8 @@ struct sm_ldap_struct
|
||||
int ldap_scope;
|
||||
char *ldap_filter;
|
||||
char *ldap_attr[LDAPMAP_MAX_ATTR + 1];
|
||||
# if _FFR_LDAP_RECURSION
|
||||
int ldap_attr_type[LDAPMAP_MAX_ATTR + 1];
|
||||
char *ldap_attr_needobjclass[LDAPMAP_MAX_ATTR + 1];
|
||||
# endif /* _FFR_LDAP_RECURSION */
|
||||
bool ldap_attrsonly;
|
||||
|
||||
/* args for ldap_result */
|
||||
@ -98,11 +88,12 @@ struct sm_ldap_struct
|
||||
|
||||
typedef struct sm_ldap_struct SM_LDAP_STRUCT;
|
||||
|
||||
# if _FFR_LDAP_RECURSION
|
||||
struct sm_ldap_recurse_entry
|
||||
{
|
||||
char *lr_search;
|
||||
int lr_type;
|
||||
LDAPURLDesc *lr_ludp;
|
||||
char **lr_attrs;
|
||||
bool lr_done;
|
||||
};
|
||||
|
||||
@ -115,17 +106,14 @@ struct sm_ldap_recurse_list
|
||||
|
||||
typedef struct sm_ldap_recurse_entry SM_LDAP_RECURSE_ENTRY;
|
||||
typedef struct sm_ldap_recurse_list SM_LDAP_RECURSE_LIST;
|
||||
# endif /* _FFR_LDAP_RECURSION */
|
||||
|
||||
/* functions */
|
||||
extern void sm_ldap_clear __P((SM_LDAP_STRUCT *));
|
||||
extern bool sm_ldap_start __P((char *, SM_LDAP_STRUCT *));
|
||||
extern int sm_ldap_search __P((SM_LDAP_STRUCT *, char *));
|
||||
# if _FFR_LDAP_RECURSION
|
||||
extern int sm_ldap_results __P((SM_LDAP_STRUCT *, int, int, int,
|
||||
SM_RPOOL_T *, char **, int *, int *,
|
||||
SM_LDAP_RECURSE_LIST *));
|
||||
# endif /* _FFR_LDAP_RECURSION */
|
||||
extern void sm_ldap_setopts __P((LDAP *, SM_LDAP_STRUCT *));
|
||||
extern int sm_ldap_geterrno __P((LDAP *));
|
||||
extern void sm_ldap_close __P((SM_LDAP_STRUCT *));
|
||||
|
@ -6,7 +6,7 @@
|
||||
* forth in the LICENSE file which can be found at the top level of
|
||||
* the sendmail distribution.
|
||||
*
|
||||
* $Id: sm_os_aix.h,v 1.9.2.1 2003/04/28 23:11:07 ca Exp $
|
||||
* $Id: sm_os_aix.h,v 1.11 2003/04/28 23:42:23 ca Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
|
19
contrib/sendmail/include/sm/os/sm_os_unicos.h
Normal file
19
contrib/sendmail/include/sm/os/sm_os_unicos.h
Normal file
@ -0,0 +1,19 @@
|
||||
/*
|
||||
* Copyright (c) 2003 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: sm_os_unicos.h,v 1.1 2003/04/21 17:03:51 ca Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
** Cray UNICOS
|
||||
*/
|
||||
|
||||
#define SM_OS_NAME "unicos"
|
||||
|
||||
#define SM_CONF_LONGLONG 1
|
||||
#define SM_CONF_SETITIMER 0
|
18
contrib/sendmail/include/sm/os/sm_os_unicosmk.h
Normal file
18
contrib/sendmail/include/sm/os/sm_os_unicosmk.h
Normal file
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* Copyright (c) 2003 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: sm_os_unicosmk.h,v 1.1 2003/04/21 17:03:51 ca Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
** Cray UNICOS/mk
|
||||
*/
|
||||
|
||||
#define SM_OS_NAME "unicosmk"
|
||||
|
||||
#define SM_CONF_LONGLONG 1
|
22
contrib/sendmail/include/sm/os/sm_os_unicosmp.h
Normal file
22
contrib/sendmail/include/sm/os/sm_os_unicosmp.h
Normal file
@ -0,0 +1,22 @@
|
||||
/*
|
||||
* Copyright (c) 2003 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: sm_os_unicosmp.h,v 1.1 2003/04/21 17:03:51 ca Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
** Cray UNICOS/mp
|
||||
*/
|
||||
|
||||
#define SM_OS_NAME "unicosmp"
|
||||
|
||||
#define SM_CONF_LONGLONG 1
|
||||
#define SM_CONF_SYS_CDEFS_H 1
|
||||
#define SM_CONF_MSG 1
|
||||
#define SM_CONF_SHM 1
|
||||
#define SM_CONF_SEM 1
|
@ -6,7 +6,7 @@
|
||||
* forth in the LICENSE file which can be found at the top level of
|
||||
* the sendmail distribution.
|
||||
*
|
||||
* $Id: sm_os_unixware.h,v 1.7.2.1 2002/10/24 18:02:14 ca Exp $
|
||||
* $Id: sm_os_unixware.h,v 1.8 2002/10/24 18:04:54 ca Exp $
|
||||
*/
|
||||
|
||||
#define SM_OS_NAME "unixware"
|
||||
|
@ -1,12 +1,12 @@
|
||||
/*
|
||||
* Copyright (c) 2000-2001 Sendmail, Inc. and its suppliers.
|
||||
* Copyright (c) 2000-2001, 2003 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: rpool.h,v 1.15 2001/09/04 22:41:55 ca Exp $
|
||||
* $Id: rpool.h,v 1.16 2003/09/05 23:07:49 ca Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -165,8 +165,12 @@ sm_rpool_malloc __P((
|
||||
size_t _size));
|
||||
# endif /* SM_HEAP_CHECK */
|
||||
|
||||
#if DO_NOT_USE_STRCPY
|
||||
extern char *sm_rpool_strdup_x __P((SM_RPOOL_T *rpool, const char *s));
|
||||
#else /* DO_NOT_USE_STRCPY */
|
||||
# define sm_rpool_strdup_x(rpool, str) \
|
||||
strcpy(sm_rpool_malloc_x(rpool, strlen(str) + 1), str)
|
||||
#endif /* DO_NOT_USE_STRCPY */
|
||||
|
||||
extern SM_RPOOL_ATTACH_T
|
||||
sm_rpool_attach_x __P((
|
||||
|
@ -6,7 +6,7 @@
|
||||
* forth in the LICENSE file which can be found at the top level of
|
||||
* the sendmail distribution.
|
||||
*
|
||||
* $Id: shm.h,v 1.8.2.2 2003/05/17 18:34:16 ca Exp $
|
||||
* $Id: shm.h,v 1.10 2003/05/17 18:34:54 ca Exp $
|
||||
*/
|
||||
|
||||
#ifndef SM_SHM_H
|
||||
|
@ -1,12 +1,12 @@
|
||||
/*
|
||||
* Copyright (c) 2000-2001 Sendmail, Inc. and its suppliers.
|
||||
* Copyright (c) 2000-2001, 2003 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: string.h,v 1.36 2001/06/17 21:31:11 ca Exp $
|
||||
* $Id: string.h,v 1.38 2003/10/10 17:56:57 ca Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -24,25 +24,30 @@
|
||||
#define SPACELEFT(buf, ptr) (sizeof buf - ((ptr) - buf))
|
||||
|
||||
extern int PRINTFLIKE(3, 4)
|
||||
sm_snprintf __P((
|
||||
char *,
|
||||
size_t,
|
||||
const char *,
|
||||
...));
|
||||
sm_snprintf __P((char *, size_t, const char *, ...));
|
||||
|
||||
extern bool
|
||||
sm_match __P((
|
||||
const char *_str,
|
||||
const char *_pattern));
|
||||
sm_match __P((const char *_str, const char *_pattern));
|
||||
|
||||
extern char *
|
||||
sm_strdup __P((
|
||||
char *));
|
||||
sm_strdup __P((char *));
|
||||
|
||||
extern char *
|
||||
sm_strndup_x __P((
|
||||
const char *_str,
|
||||
size_t _len));
|
||||
sm_strndup_x __P((const char *_str, size_t _len));
|
||||
|
||||
#if DO_NOT_USE_STRCPY
|
||||
/* for "normal" data (free'd before end of process) */
|
||||
extern char *
|
||||
sm_strdup_x __P((const char *_str));
|
||||
|
||||
/* for data that is supposed to be persistent. */
|
||||
extern char *
|
||||
sm_pstrdup_x __P((const char *_str));
|
||||
|
||||
extern char *
|
||||
sm_strdup_tagged_x __P((const char *str, char *file, int line, int group));
|
||||
|
||||
#else /* DO_NOT_USE_STRCPY */
|
||||
|
||||
/* for "normal" data (free'd before end of process) */
|
||||
# define sm_strdup_x(str) strcpy(sm_malloc_x(strlen(str) + 1), str)
|
||||
@ -52,35 +57,22 @@ sm_strndup_x __P((
|
||||
|
||||
# define sm_strdup_tagged_x(str, file, line, group) \
|
||||
strcpy(sm_malloc_tagged_x(strlen(str) + 1, file, line, group), str)
|
||||
#endif /* DO_NOT_USE_STRCPY */
|
||||
|
||||
extern char *
|
||||
sm_stringf_x __P((
|
||||
const char *_fmt,
|
||||
...));
|
||||
sm_stringf_x __P((const char *_fmt, ...));
|
||||
|
||||
extern char *
|
||||
sm_vstringf_x __P((
|
||||
const char *_fmt,
|
||||
va_list _ap));
|
||||
sm_vstringf_x __P((const char *_fmt, va_list _ap));
|
||||
|
||||
extern size_t
|
||||
sm_strlcpy __P((
|
||||
char *_dst,
|
||||
const char *_src,
|
||||
ssize_t _len));
|
||||
sm_strlcpy __P((char *_dst, const char *_src, ssize_t _len));
|
||||
|
||||
extern size_t
|
||||
sm_strlcat __P((
|
||||
char *_dst,
|
||||
const char *_src,
|
||||
ssize_t _len));
|
||||
sm_strlcat __P((char *_dst, const char *_src, ssize_t _len));
|
||||
|
||||
extern size_t
|
||||
sm_strlcat2 __P((
|
||||
char *,
|
||||
const char *,
|
||||
const char *,
|
||||
ssize_t));
|
||||
sm_strlcat2 __P((char *, const char *, const char *, ssize_t));
|
||||
|
||||
extern size_t
|
||||
#ifdef __STDC__
|
||||
@ -94,40 +86,26 @@ sm_strlcpyn __P((char *,
|
||||
|
||||
# if !HASSTRERROR
|
||||
extern char *
|
||||
strerror __P((
|
||||
int _errno));
|
||||
strerror __P((int _errno));
|
||||
# endif /* !HASSTRERROR */
|
||||
|
||||
extern int
|
||||
sm_strrevcmp __P((
|
||||
const char *,
|
||||
const char *));
|
||||
sm_strrevcmp __P((const char *, const char *));
|
||||
|
||||
extern int
|
||||
sm_strrevcasecmp __P((
|
||||
const char *,
|
||||
const char *));
|
||||
sm_strrevcasecmp __P((const char *, const char *));
|
||||
|
||||
extern int
|
||||
sm_strcasecmp __P((
|
||||
const char *,
|
||||
const char *));
|
||||
sm_strcasecmp __P((const char *, const char *));
|
||||
|
||||
extern int
|
||||
sm_strncasecmp __P((
|
||||
const char *,
|
||||
const char *,
|
||||
size_t));
|
||||
sm_strncasecmp __P((const char *, const char *, size_t));
|
||||
|
||||
extern LONGLONG_T
|
||||
sm_strtoll __P((
|
||||
const char *,
|
||||
char**, int));
|
||||
sm_strtoll __P((const char *, char**, int));
|
||||
|
||||
extern ULONGLONG_T
|
||||
sm_strtoull __P((
|
||||
const char *,
|
||||
char**, int));
|
||||
sm_strtoull __P((const char *, char**, int));
|
||||
|
||||
extern void
|
||||
stripquotes __P((char *));
|
||||
|
@ -6,7 +6,7 @@
|
||||
* forth in the LICENSE file which can be found at the top level of
|
||||
* the sendmail distribution.
|
||||
*
|
||||
* $Id: varargs.h,v 1.7.2.1 2002/07/29 21:43:20 gshapiro Exp $
|
||||
* $Id: varargs.h,v 1.8 2002/07/29 21:31:00 gshapiro Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -1,4 +1,4 @@
|
||||
dnl $Id: Makefile.m4,v 8.30.2.1 2002/06/21 21:58:28 ca Exp $
|
||||
dnl $Id: Makefile.m4,v 8.31 2002/06/21 22:01:31 ca Exp $
|
||||
include(confBUILDTOOLSDIR`/M4/switch.m4')
|
||||
|
||||
dnl only required for compilation of EXTRAS
|
||||
|
@ -9,11 +9,8 @@ through reference to a sample filter which is attached at the end of this
|
||||
file. It is necessary to first build libmilter.a, which can be done by
|
||||
issuing the './Build' command in SRCDIR/libmilter .
|
||||
|
||||
NOTE: If you intend to use filters in sendmail, you must compile sendmail
|
||||
with -DMILTER defined. You can do this by adding the following to
|
||||
your devtools/Site/site.config.m4 file:
|
||||
|
||||
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER')
|
||||
Starting with 8.13 sendmail is compiled by default with support for
|
||||
the milter API.
|
||||
|
||||
+----------------+
|
||||
| SECURITY HINTS |
|
||||
@ -23,13 +20,18 @@ Note: we strongly recommend not to run any milter as root. Libmilter
|
||||
does not need root access to communicate with sendmail. It is a
|
||||
good security practice to run a program only with root privileges
|
||||
if really necessary. A milter should probably check first whether
|
||||
it runs as root and refuse to start in that case. There is a
|
||||
compile time option _FFR_MILTER_ROOT_UNSAFE which keeps libmilter
|
||||
from unlinking a socket when running as root. It is recommended
|
||||
to turn on this option:
|
||||
it runs as root and refuse to start in that case. libmilter will
|
||||
not unlink a socket when running as root.
|
||||
|
||||
APPENDDEF(`conf_libmilter_ENVDEF', `-D_FFR_MILTER_ROOT_UNSAFE ')
|
||||
+----------------------+
|
||||
| CONFIGURATION MACROS |
|
||||
+----------------------+
|
||||
|
||||
Libmilter uses a set of C preprocessor macros to specify platform specific
|
||||
features of the C compiler and standard C libraries.
|
||||
|
||||
SM_CONF_POLL
|
||||
Set to 1 if poll(2) should be used instead of select(2).
|
||||
|
||||
+-------------------+
|
||||
| BUILDING A FILTER |
|
||||
@ -464,4 +466,4 @@ main(argc, argv)
|
||||
|
||||
/* eof */
|
||||
|
||||
$Revision: 8.35.2.2 $, Last updated $Date: 2003/05/26 04:10:06 $
|
||||
$Revision: 8.40 $, Last updated $Date: 2003/12/11 18:14:34 $
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1999-2003 Sendmail, Inc. and its suppliers.
|
||||
* Copyright (c) 1999-2004 Sendmail, Inc. and its suppliers.
|
||||
* All rights reserved.
|
||||
*
|
||||
* By using this file, you agree to the terms and conditions set
|
||||
@ -9,10 +9,36 @@
|
||||
*/
|
||||
|
||||
#include <sm/gen.h>
|
||||
SM_RCSID("@(#)$Id: comm.c,v 8.54.2.6 2003/01/03 22:14:40 ca Exp $")
|
||||
SM_RCSID("@(#)$Id: comm.c,v 8.65 2004/07/07 21:41:30 ca Exp $")
|
||||
|
||||
#include "libmilter.h"
|
||||
#include <sm/errstring.h>
|
||||
#include <sys/uio.h>
|
||||
|
||||
static size_t Maxdatasize = MILTER_MAX_DATA_SIZE;
|
||||
|
||||
#if _FFR_MAXDATASIZE
|
||||
/*
|
||||
** SMFI_SETMAXDATASIZE -- set limit for milter data read/write.
|
||||
**
|
||||
** Parameters:
|
||||
** sz -- new limit.
|
||||
**
|
||||
** Returns:
|
||||
** old limit
|
||||
*/
|
||||
|
||||
size_t
|
||||
smfi_setmaxdatasize(sz)
|
||||
size_t sz;
|
||||
{
|
||||
size_t old;
|
||||
|
||||
old = Maxdatasize;
|
||||
Maxdatasize = sz;
|
||||
return old;
|
||||
}
|
||||
#endif /* _FFR_MAXDATASIZE */
|
||||
|
||||
/*
|
||||
** MI_RD_CMD -- read a command
|
||||
@ -107,7 +133,7 @@ mi_rd_cmd(sd, timeout, cmd, rlen, name)
|
||||
expl = ntohl(expl) - 1;
|
||||
if (expl <= 0)
|
||||
return NULL;
|
||||
if (expl > MILTER_CHUNK_SIZE)
|
||||
if (expl > Maxdatasize)
|
||||
{
|
||||
*cmd = SMFIC_TOOBIG;
|
||||
return NULL;
|
||||
@ -195,12 +221,94 @@ mi_rd_cmd(sd, timeout, cmd, rlen, name)
|
||||
*cmd = SMFIC_UNKNERR;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
** RETRY_WRITEV -- Keep calling the writev() system call
|
||||
** until all the data is written out or an error occurs.
|
||||
**
|
||||
** Parameters:
|
||||
** fd -- socket descriptor
|
||||
** iov -- io vector
|
||||
** iovcnt -- number of elements in io vector
|
||||
** must NOT exceed UIO_MAXIOV.
|
||||
** timeout -- maximum time to wait
|
||||
**
|
||||
** Returns:
|
||||
** success: number of bytes written
|
||||
** otherwise: MI_FAILURE
|
||||
*/
|
||||
|
||||
static ssize_t
|
||||
retry_writev(fd, iov, iovcnt, timeout)
|
||||
socket_t fd;
|
||||
struct iovec *iov;
|
||||
int iovcnt;
|
||||
struct timeval *timeout;
|
||||
{
|
||||
int i;
|
||||
ssize_t n, written;
|
||||
FD_WR_VAR(wrs);
|
||||
|
||||
written = 0;
|
||||
for (;;)
|
||||
{
|
||||
while (iovcnt > 0 && iov[0].iov_len == 0)
|
||||
{
|
||||
iov++;
|
||||
iovcnt--;
|
||||
}
|
||||
if (iovcnt <= 0)
|
||||
return written;
|
||||
|
||||
/*
|
||||
** We don't care much about the timeout here,
|
||||
** it's very long anyway; correct solution would be
|
||||
** to take the time before the loop and reduce the
|
||||
** timeout after each invocation.
|
||||
** FD_SETSIZE is checked when socket is created.
|
||||
*/
|
||||
|
||||
FD_WR_INIT(fd, wrs);
|
||||
i = FD_WR_READY(fd, wrs, timeout);
|
||||
if (i == 0)
|
||||
return MI_FAILURE;
|
||||
if (i < 0)
|
||||
{
|
||||
if (errno == EINTR || errno == EAGAIN)
|
||||
continue;
|
||||
return MI_FAILURE;
|
||||
}
|
||||
n = writev(fd, iov, iovcnt);
|
||||
if (n == -1)
|
||||
{
|
||||
if (errno == EINTR || errno == EAGAIN)
|
||||
continue;
|
||||
return MI_FAILURE;
|
||||
}
|
||||
|
||||
written += n;
|
||||
for (i = 0; i < iovcnt; i++)
|
||||
{
|
||||
if (iov[i].iov_len > (unsigned int) n)
|
||||
{
|
||||
iov[i].iov_base = (char *)iov[i].iov_base + n;
|
||||
iov[i].iov_len -= (unsigned int) n;
|
||||
break;
|
||||
}
|
||||
n -= (int) iov[i].iov_len;
|
||||
iov[i].iov_len = 0;
|
||||
}
|
||||
if (i == iovcnt)
|
||||
return written;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
** MI_WR_CMD -- write a cmd to sd
|
||||
**
|
||||
** Parameters:
|
||||
** sd -- socket descriptor
|
||||
** timeout -- maximum time to wait (currently unused)
|
||||
** timeout -- maximum time to wait
|
||||
** cmd -- single character command to write
|
||||
** buf -- buffer with further data
|
||||
** len -- length of buffer (without cmd!)
|
||||
@ -209,38 +317,6 @@ mi_rd_cmd(sd, timeout, cmd, rlen, name)
|
||||
** MI_SUCCESS/MI_FAILURE
|
||||
*/
|
||||
|
||||
/*
|
||||
** we don't care much about the timeout here, it's very long anyway
|
||||
** FD_SETSIZE is checked when socket is created.
|
||||
** XXX l == 0 ?
|
||||
*/
|
||||
|
||||
#define MI_WR(data) \
|
||||
while (sl > 0) \
|
||||
{ \
|
||||
FD_WR_INIT(sd, wrs); \
|
||||
ret = FD_WR_READY(sd, wrs, timeout); \
|
||||
if (ret == 0) \
|
||||
return MI_FAILURE; \
|
||||
if (ret < 0) \
|
||||
{ \
|
||||
if (errno == EINTR) \
|
||||
continue; \
|
||||
else \
|
||||
return MI_FAILURE; \
|
||||
} \
|
||||
l = MI_SOCK_WRITE(sd, (void *) ((data) + i), sl); \
|
||||
if (l < 0) \
|
||||
{ \
|
||||
if (errno == EINTR) \
|
||||
continue; \
|
||||
else \
|
||||
return MI_FAILURE; \
|
||||
} \
|
||||
i += l; \
|
||||
sl -= l; \
|
||||
}
|
||||
|
||||
int
|
||||
mi_wr_cmd(sd, timeout, cmd, buf, len)
|
||||
socket_t sd;
|
||||
@ -252,27 +328,32 @@ mi_wr_cmd(sd, timeout, cmd, buf, len)
|
||||
size_t sl, i;
|
||||
ssize_t l;
|
||||
mi_int32 nl;
|
||||
int ret;
|
||||
FD_WR_VAR(wrs);
|
||||
int iovcnt;
|
||||
struct iovec iov[2];
|
||||
char data[MILTER_LEN_BYTES + 1];
|
||||
|
||||
if (len > MILTER_CHUNK_SIZE)
|
||||
if (len > Maxdatasize || (len > 0 && buf == NULL))
|
||||
return MI_FAILURE;
|
||||
|
||||
nl = htonl(len + 1); /* add 1 for the cmd char */
|
||||
(void) memcpy(data, (void *) &nl, MILTER_LEN_BYTES);
|
||||
data[MILTER_LEN_BYTES] = (char) cmd;
|
||||
i = 0;
|
||||
sl = MILTER_LEN_BYTES + 1;
|
||||
|
||||
/* use writev() instead to send the whole stuff at once? */
|
||||
|
||||
MI_WR(data);
|
||||
if (len > 0 && buf == NULL)
|
||||
/* set up the vector for the size / command */
|
||||
iov[0].iov_base = (void *) data;
|
||||
iov[0].iov_len = sl;
|
||||
iovcnt = 1;
|
||||
if (len >= 0 && buf != NULL)
|
||||
{
|
||||
iov[1].iov_base = (void *) buf;
|
||||
iov[1].iov_len = len;
|
||||
iovcnt = 2;
|
||||
}
|
||||
|
||||
l = retry_writev(sd, iov, iovcnt, timeout);
|
||||
if (l == MI_FAILURE)
|
||||
return MI_FAILURE;
|
||||
if (len == 0 || buf == NULL)
|
||||
return MI_SUCCESS;
|
||||
i = 0;
|
||||
sl = len;
|
||||
MI_WR(buf);
|
||||
return MI_SUCCESS;
|
||||
}
|
||||
|
@ -1,6 +1,9 @@
|
||||
<html>
|
||||
<head><title>Milter API</title></head>
|
||||
<body>
|
||||
<!--
|
||||
$Id: api.html,v 1.18 2004/04/28 23:26:51 msk Exp $
|
||||
-->
|
||||
<h1>Milter API</h1>
|
||||
|
||||
<h2>Contents</h2>
|
||||
@ -26,12 +29,20 @@ href="smfi_main.html">smfi_main</a>.
|
||||
<p>
|
||||
<table border="1" cellspacing=0 cellpadding=2><tr bgcolor="#dddddd"><th>Function</th><th>Description</th></tr>
|
||||
|
||||
<tr><td><a href="smfi_opensocket.html">smfi_opensocket</a></td><td>Try to create the interface socket.</td></tr>
|
||||
|
||||
<tr><td><a href="smfi_register.html">smfi_register</a></td><td>Register a filter.</td></tr>
|
||||
|
||||
<tr><td><a href="smfi_setconn.html">smfi_setconn</a></td><td>Specify socket to use.</td></tr>
|
||||
|
||||
<tr><td><a href="smfi_settimeout.html">smfi_settimeout</a></td><td>Set timeout.</td></tr>
|
||||
|
||||
<tr><td><a href="smfi_setbacklog.html">smfi_setbacklog</a></td><td>Define the incoming <i>listen</i>(2) queue size.</td></tr>
|
||||
|
||||
<tr><td><a href="smfi_setdbg.html">smfi_setdbg</a></td><td>Set the milter library debugging (tracing) level.</td></tr>
|
||||
|
||||
<tr><td><a href="smfi_stop.html">smfi_stop</a></td><td>Cause an orderly shutdown.</td></tr>
|
||||
|
||||
<tr><td><a href="smfi_main.html">smfi_main</a></td><td>Hand control to libmilter.</td></tr>
|
||||
|
||||
</table>
|
||||
@ -54,6 +65,9 @@ pointer.</td></tr>
|
||||
<tr><td><a href="smfi_setreply.html">smfi_setreply</a></td><td>Set the specific
|
||||
reply code to be used.</td></tr>
|
||||
|
||||
<tr><td><a href="smfi_setmlreply.html">smfi_setmlreply</a></td><td>Set the
|
||||
specific multi-line reply to be used.</td></tr>
|
||||
|
||||
</table>
|
||||
|
||||
<h2>Message Modification Functions</h2>
|
||||
@ -85,6 +99,9 @@ the message.</td><td>SMFIF_ADDHDRS</td></tr>
|
||||
|
||||
<tr><td><a href="smfi_chgheader.html">smfi_chgheader</a></td><td>Change or delete a header.</td><td>SMFIF_CHGHDRS</td></tr>
|
||||
|
||||
<tr><td><a href="smfi_insheader.html">smfi_insheader</a></td><td>Insert a
|
||||
header into the message.</td><td>SMFIF_ADDHDRS</td></tr>
|
||||
|
||||
<tr><td><a href="smfi_addrcpt.html">smfi_addrcpt</a></td><td>Add a recipient to
|
||||
the envelope.</td><td>SMFIF_ADDRCPT</td></tr>
|
||||
|
||||
@ -96,7 +113,29 @@ body of the message.</td><td>SMFIF_CHGBODY</td></tr>
|
||||
|
||||
</table>
|
||||
|
||||
<h2>Callbacks</h2>
|
||||
<h2>Other Message Handling Functions</h2>
|
||||
|
||||
The following functions provide special case handling instructions for
|
||||
milter or the MTA, without altering the content or status of the message.
|
||||
<b>They too may only be called in <a href="xxfi_eom.html">xxfi_eom</a></b>.
|
||||
All of these functions may invoke additional communication with the MTA.
|
||||
They will return either MI_SUCCESS or MI_FAILURE to indicate the status of
|
||||
the operation.
|
||||
|
||||
<p>
|
||||
Note that the status returned indicates only whether or not the
|
||||
filter's message was successfully sent to the MTA, not whether or not
|
||||
the MTA performed the requested operation.
|
||||
|
||||
<p>
|
||||
<table border="1" cellspacing=0 cellpadding=2><tr bgcolor="#dddddd"><th>Function</th><th>Description</th></tr>
|
||||
<tr><td><a href="smfi_progress.html">smfi_progress</a></td><td>Report operation in progress.</td></tr>
|
||||
|
||||
<tr><td><a href="smfi_quarantine.html">smfi_quarantine</a></td><td>Quarantine a message.</td></tr>
|
||||
|
||||
</table>
|
||||
|
||||
<h2><a name="callbacks">Callbacks</a></h2>
|
||||
|
||||
The filter should implement one or more of the following callbacks,
|
||||
which are registered via <a href="smfi_register.html">smfi_register</a>:
|
||||
@ -131,7 +170,7 @@ having the indicated meanings. Any return other than one of the below
|
||||
values constitutes an error, and will cause sendmail to terminate its
|
||||
connection to the offending filter.
|
||||
|
||||
<p><a name="conn-spec"></a>Milter distinguishes between recipient-,
|
||||
<p><a name="conn-spec">Milter</a> distinguishes between recipient-,
|
||||
message-, and connection-oriented routines. Recipient-oriented
|
||||
callbacks may affect the processing of a single message recipient;
|
||||
message-oriented callbacks, a single message; connection-oriented
|
||||
|
@ -3,6 +3,9 @@
|
||||
<title>Architecture</title>
|
||||
</head>
|
||||
<body>
|
||||
<!--
|
||||
$Id: design.html,v 1.11 2003/03/05 19:57:54 ca Exp $
|
||||
-->
|
||||
|
||||
<h1>Architecture</h1>
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
</head>
|
||||
<body>
|
||||
<!--
|
||||
$Id: index.html,v 1.10.4.1 2003/03/05 19:54:19 ca Exp $
|
||||
$Id: index.html,v 1.12 2003/03/05 19:57:54 ca Exp $
|
||||
-->
|
||||
|
||||
<h1>Filtering Mail with Sendmail</h1>
|
||||
|
@ -2,6 +2,9 @@
|
||||
<head><title>Installation and Configuration</title>
|
||||
</head>
|
||||
<body>
|
||||
<!--
|
||||
$Id: installation.html,v 1.20 2003/03/05 19:57:54 ca Exp $
|
||||
-->
|
||||
<h1>Installation</h1>
|
||||
<h2>Contents</h2>
|
||||
<ul>
|
||||
|
@ -2,6 +2,9 @@
|
||||
<head><title>Other Resources</title>
|
||||
</head>
|
||||
<body>
|
||||
<!--
|
||||
$Id: other.html,v 1.5 2003/03/05 19:57:54 ca Exp $
|
||||
-->
|
||||
FAQ? Mailing list? More sample filters?
|
||||
<hr size="1">
|
||||
<font size="-1">
|
||||
|
@ -4,7 +4,7 @@
|
||||
</head>
|
||||
<body>
|
||||
<!--
|
||||
$Id: overview.html,v 1.12.4.1 2003/03/05 19:54:20 ca Exp $
|
||||
$Id: overview.html,v 1.14 2003/03/05 19:57:54 ca Exp $
|
||||
-->
|
||||
|
||||
<h1>Technical Overview</h1>
|
||||
|
@ -1,6 +1,9 @@
|
||||
<html>
|
||||
<head><title>A Sample Filter</title></head>
|
||||
<body>
|
||||
<!--
|
||||
$Id: sample.html,v 1.18 2004/02/27 00:49:28 msk Exp $
|
||||
-->
|
||||
<h1>A Sample Filter</h1>
|
||||
|
||||
The following sample logs each message to a separate temporary file,
|
||||
@ -121,9 +124,10 @@ sfsistat
|
||||
SMFICTX *ctx;
|
||||
char **argv;
|
||||
{
|
||||
int fd = -1;
|
||||
int argc = 0;
|
||||
struct mlfiPriv *priv = MLFIPRIV;
|
||||
char *mailaddr = <a href="smfi_getsymval.html">smfi_getsymval</a>(ctx, "{mail_addr}");
|
||||
int argc = 0;
|
||||
|
||||
/* open a file to store this message */
|
||||
if ((priv->mlfi_fname = strdup("/tmp/msg.XXXXXX")) == NULL)
|
||||
@ -132,14 +136,15 @@ sfsistat
|
||||
return SMFIS_TEMPFAIL;
|
||||
}
|
||||
|
||||
if (mkstemp(priv->mlfi_fname) == -1)
|
||||
if ((fd = mkstemp(priv->mlfi_fname)) == -1)
|
||||
{
|
||||
(void) mlfi_cleanup(ctx, FALSE);
|
||||
return SMFIS_TEMPFAIL;
|
||||
}
|
||||
|
||||
if ((priv->mlfi_fp = fopen(priv->mlfi_fname, "w+")) == NULL)
|
||||
if ((priv->mlfi_fp = fdopen(fd, "w+")) == NULL)
|
||||
{
|
||||
(void) close(fd);
|
||||
(void) mlfi_cleanup(ctx, FALSE);
|
||||
return SMFIS_TEMPFAIL;
|
||||
}
|
||||
@ -361,7 +366,8 @@ struct smfiDesc smfilter =
|
||||
{
|
||||
"SampleFilter", /* filter name */
|
||||
SMFI_VERSION, /* version code -- do not change */
|
||||
SMFIF_ADDHDRS, /* flags */
|
||||
SMFIF_ADDHDRS|SMFIF_ADDRCPT,
|
||||
/* flags */
|
||||
<a href="xxfi_connect.html">mlfi_connect</a>, /* connection info filter */
|
||||
<a href="xxfi_helo.html">mlfi_helo</a>, /* SMTP HELO command filter */
|
||||
<a href="xxfi_envfrom.html">mlfi_envfrom</a>, /* envelope sender filter */
|
||||
@ -488,7 +494,7 @@ main(argc, argv)
|
||||
</pre>
|
||||
<hr size="1">
|
||||
<font size="-1">
|
||||
Copyright (c) 2000-2003 Sendmail, Inc. and its suppliers.
|
||||
Copyright (c) 2000-2004 Sendmail, Inc. and its suppliers.
|
||||
All rights reserved.
|
||||
<br>
|
||||
By using this file, you agree to the terms and conditions set
|
||||
|
@ -1,6 +1,9 @@
|
||||
<html>
|
||||
<head><title>smfi_addheader</title></head>
|
||||
<body>
|
||||
<!--
|
||||
$Id: smfi_addheader.html,v 1.15 2004/05/04 17:55:50 ca Exp $
|
||||
-->
|
||||
<h1>smfi_addheader</h1>
|
||||
|
||||
<table border="0" cellspacing=4 cellpadding=4>
|
||||
@ -69,7 +72,7 @@ Otherwise, it returns MI_SUCCESS.
|
||||
To change a header's current value, use <a
|
||||
href="smfi_chgheader.html">smfi_chgheader</a>.
|
||||
<li>A filter which calls smfi_addheader must have set the SMFIF_ADDHDRS flag in the smfiDesc_str passed to <a href="smfi_register.html">smfi_register</a>.
|
||||
<li>For smfi_chgheader, filter order is important. <b>Later filters will see the header changes made by earlier ones.</b>
|
||||
<li>For smfi_addheader, filter order is important. <b>Later filters will see the header changes made by earlier ones.</b>
|
||||
<li>Neither the name nor the value of the header is checked for
|
||||
standards compliance. However, each line of the header must be under
|
||||
2048 characters and should be under 998 characters. If longer headers
|
||||
|
@ -1,6 +1,9 @@
|
||||
<html>
|
||||
<head><title>smfi_addrcpt</title></head>
|
||||
<body>
|
||||
<!--
|
||||
$Id: smfi_addrcpt.html,v 1.9 2003/10/08 17:55:00 gshapiro Exp $
|
||||
-->
|
||||
<h1>smfi_addrcpt</h1>
|
||||
|
||||
<table border="0" cellspacing=4 cellpadding=4>
|
||||
|
@ -1,6 +1,9 @@
|
||||
<html>
|
||||
<head><title>smfi_chgheader</title></head>
|
||||
<body>
|
||||
<!--
|
||||
$Id: smfi_chgheader.html,v 1.15 2003/04/30 22:10:53 ca Exp $
|
||||
-->
|
||||
<h1>smfi_chgheader</h1>
|
||||
|
||||
<table border="0" cellspacing=4 cellpadding=4>
|
||||
|
@ -1,6 +1,9 @@
|
||||
<html>
|
||||
<head><title>smfi_delrcpt</title></head>
|
||||
<body>
|
||||
<!--
|
||||
$Id: smfi_delrcpt.html,v 1.9 2003/10/27 15:51:12 ca Exp $
|
||||
-->
|
||||
<h1>smfi_delrcpt</h1>
|
||||
|
||||
<table border="0" cellspacing=4 cellpadding=4>
|
||||
|
@ -1,6 +1,9 @@
|
||||
<html>
|
||||
<head><title>smfi_getpriv</title></head>
|
||||
<body>
|
||||
<!--
|
||||
$Id: smfi_getpriv.html,v 1.7 2003/03/05 19:57:54 ca Exp $
|
||||
-->
|
||||
<h1>smfi_getpriv</h1>
|
||||
|
||||
<table border="0" cellspacing=4 cellpadding=4>
|
||||
|
@ -1,6 +1,9 @@
|
||||
<html>
|
||||
<head><title>smfi_getsymval</title></head>
|
||||
<body>
|
||||
<!--
|
||||
$Id: smfi_getsymval.html,v 1.10 2003/03/05 19:57:54 ca Exp $
|
||||
-->
|
||||
<h1>smfi_getsymval</h1>
|
||||
|
||||
<table border="0" cellspacing=4 cellpadding=4>
|
||||
|
123
contrib/sendmail/libmilter/docs/smfi_insheader.html
Normal file
123
contrib/sendmail/libmilter/docs/smfi_insheader.html
Normal file
@ -0,0 +1,123 @@
|
||||
<html>
|
||||
<head><title>smfi_insheader</title></head>
|
||||
<body>
|
||||
<!--
|
||||
$Id: smfi_insheader.html,v 1.3 2004/05/04 16:20:34 gshapiro Exp $
|
||||
-->
|
||||
<h1>smfi_insheader</h1>
|
||||
|
||||
<table border="0" cellspacing=4 cellpadding=4>
|
||||
<!---------- Synopsis ----------->
|
||||
<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
|
||||
<pre>
|
||||
#include <libmilter/mfapi.h>
|
||||
int smfi_insheader(
|
||||
SMFICTX *ctx,
|
||||
int hdridx,
|
||||
char *headerf,
|
||||
char *headerv
|
||||
);
|
||||
</pre>
|
||||
Prepend a header to the current message.
|
||||
</td></tr>
|
||||
|
||||
<!----------- Description ---------->
|
||||
<tr><th valign="top" align=left>DESCRIPTION</th><td>
|
||||
<table border="1" cellspacing=1 cellpadding=4>
|
||||
<tr align="left" valign=top>
|
||||
<th width="80">Called When</th>
|
||||
<td>Called only from <a href="xxfi_eom.html">xxfi_eom</a>.</td>
|
||||
</tr>
|
||||
<tr align="left" valign=top>
|
||||
<th width="80">Effects</th>
|
||||
<td>Prepends a header to the current message.</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<!----------- Arguments ---------->
|
||||
<tr><th valign="top" align=left>ARGUMENTS</th><td>
|
||||
<table border="1" cellspacing=0>
|
||||
<tr bgcolor="#dddddd"><th>Argument</th><th>Description</th></tr>
|
||||
<tr valign="top"><td>ctx</td>
|
||||
<td>Opaque context structure.
|
||||
</td></tr>
|
||||
<tr valign="top"><td>hdridx</td>
|
||||
<td>The location in the internal header list where this header should
|
||||
be inserted; 0 makes it the topmost header, etc.
|
||||
</td></tr>
|
||||
<tr valign="top"><td>headerf</td>
|
||||
<td>The header name, a non-NULL, null-terminated string.
|
||||
</td></tr>
|
||||
<tr valign="top"><td>headerv</td>
|
||||
<td>The header value to be added, a non-NULL, null-terminated string. This may be the empty string.
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
|
||||
<!----------- Return values ---------->
|
||||
<tr>
|
||||
<th valign="top" align=left>RETURN VALUES</th>
|
||||
|
||||
<td>smfi_insheader returns MI_FAILURE if:
|
||||
<ul><li>headerf or headerv is NULL.
|
||||
<li>Adding headers in the current connection state is invalid.
|
||||
<li>Memory allocation fails.
|
||||
<li>A network error occurs.
|
||||
<li>SMFIF_ADDHDRS was not set when <a href="smfi_register.html">smfi_register</a> was called.
|
||||
</ul>
|
||||
Otherwise, it returns MI_SUCCESS.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<!----------- Notes ---------->
|
||||
<tr align="left" valign=top>
|
||||
<th>NOTES</th>
|
||||
<td>
|
||||
<ul><li>smfi_insheader does not change a message's existing headers.
|
||||
To change a header's current value, use <a
|
||||
href="smfi_chgheader.html">smfi_chgheader</a>.
|
||||
<li>A filter which calls smfi_insheader must have set the SMFIF_ADDHDRS flag in the smfiDesc_str passed to <a href="smfi_register.html">smfi_register</a>.
|
||||
<li>For smfi_insheader, filter order is important. <b>Later filters will see the header changes made by earlier ones.</b>
|
||||
<li>If hdridx is a number larger than the number of headers in the message, the header will simply be appended.
|
||||
<li>Neither the name nor the value of the header is checked for
|
||||
standards compliance. However, each line of the header must be under
|
||||
2048 characters and should be under 998 characters. If longer headers
|
||||
are needed, make them multi-line. To make a multi-line header, insert
|
||||
a line feed (ASCII 0x0a, or <tt>\n</tt> in C) followed by at least
|
||||
one whitespace character such as a space (ASCII 0x20) or tab (ASCII 0x09,
|
||||
or <tt>\t</tt> in C). The line feed should NOT be preceded by a
|
||||
carriage return (ASCII 0x0d); the MTA will add this automatically.
|
||||
<b>It is the filter writer's responsibility to ensure that no standards
|
||||
are violated.</b>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<!----------- Example code ---------->
|
||||
<tr>
|
||||
<th valign="top" align=left>EXAMPLE</th>
|
||||
|
||||
<td>
|
||||
<pre>
|
||||
int ret;
|
||||
SMFICTX *ctx;
|
||||
|
||||
...
|
||||
|
||||
ret = smfi_insheader(ctx, 0, "First", "See me?");
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<hr size="1">
|
||||
<font size="-1">
|
||||
Copyright (c) 2004 Sendmail, Inc. and its suppliers.
|
||||
All rights reserved.
|
||||
<br>
|
||||
By using this file, you agree to the terms and conditions set
|
||||
forth in the LICENSE.
|
||||
</font>
|
||||
</body>
|
||||
</html>
|
@ -1,6 +1,9 @@
|
||||
<html>
|
||||
<head><title>smfi_main</title></head>
|
||||
<body>
|
||||
<!--
|
||||
$Id: smfi_main.html,v 1.7 2003/03/05 19:57:54 ca Exp $
|
||||
-->
|
||||
<h1>smfi_main</h1>
|
||||
|
||||
<table border="0" cellspacing=4 cellpadding=4>
|
||||
|
78
contrib/sendmail/libmilter/docs/smfi_opensocket.html
Normal file
78
contrib/sendmail/libmilter/docs/smfi_opensocket.html
Normal file
@ -0,0 +1,78 @@
|
||||
<html>
|
||||
<head><title>smfi_opensocket</title></head>
|
||||
<body>
|
||||
<!--
|
||||
$Id: smfi_opensocket.html,v 1.4 2003/10/20 22:28:57 msk Exp $
|
||||
-->
|
||||
<h1>smfi_opensocket</h1>
|
||||
|
||||
<table border="0" cellspacing=4 cellpadding=4>
|
||||
<!---------- Synopsis ----------->
|
||||
<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
|
||||
<pre>
|
||||
#include <libmilter/mfapi.h>
|
||||
int smfi_opensocket(
|
||||
bool rmsocket
|
||||
);
|
||||
</pre>
|
||||
Attempt to create the interface socket MTAs will use to connect to the
|
||||
filter.
|
||||
</td></tr>
|
||||
|
||||
<!----------- Description ---------->
|
||||
<tr><th valign="top" align=left>DESCRIPTION</th><td>
|
||||
<table border="1" cellspacing=1 cellpadding=4>
|
||||
<tr align="left" valign=top>
|
||||
<th width="80">Called When</th>
|
||||
<td>Called only from program mainline, before calling
|
||||
<tt>smfi_main()</tt>.</td>
|
||||
</tr>
|
||||
<tr align="left" valign=top>
|
||||
<th width="80">Effects</th>
|
||||
<td>smfi_opensocket attempts to create the socket specified previously by
|
||||
a call to <tt>smfi_setconn()</tt> which will be the interface between MTAs
|
||||
and the filter. This allows the calling application to ensure that the
|
||||
socket can be created. If this is not called, <tt>smfi_main()</tt> will
|
||||
do so implicitly. </td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<!----------- Arguments ---------->
|
||||
<tr><th valign="top" align=left>ARGUMENTS</th><td>
|
||||
<table border="1" cellspacing=0>
|
||||
<tr bgcolor="#dddddd"><th>Argument</th><th>Description</th></tr>
|
||||
<tr valign="top"><td>rmsocket</td>
|
||||
<td>A flag indicating whether or not the library should try to
|
||||
remove any existing UNIX domain socket before trying to create
|
||||
a new one.
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
|
||||
<!----------- Return values ---------->
|
||||
<tr>
|
||||
<th valign="top" align=left>RETURN VALUES</th>
|
||||
|
||||
<td>smfi_opensocket will fail and return MI_FAILURE if:
|
||||
<ul>
|
||||
<li>The interface socket could not be created for any reason.
|
||||
<li><tt>rmsocket</tt> was <tt>true</tt>, and either the socket could
|
||||
not be examined, or exists and could not be removed.
|
||||
<li><tt>smfi_setconn()</tt> has not been called.
|
||||
</ul>
|
||||
Otherwise, it will return MI_SUCCESS
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<hr size="1">
|
||||
<font size="-1">
|
||||
Copyright (c) 2003 Sendmail, Inc. and its suppliers.
|
||||
All rights reserved.
|
||||
<br>
|
||||
By using this file, you agree to the terms and conditions set
|
||||
forth in the LICENSE.
|
||||
</font>
|
||||
</body>
|
||||
</html>
|
68
contrib/sendmail/libmilter/docs/smfi_progress.html
Normal file
68
contrib/sendmail/libmilter/docs/smfi_progress.html
Normal file
@ -0,0 +1,68 @@
|
||||
<html>
|
||||
<head><title>smfi_progress</title></head>
|
||||
<body>
|
||||
<!--
|
||||
$Id: smfi_progress.html,v 1.3 2003/03/05 19:57:54 ca Exp $
|
||||
-->
|
||||
<h1>smfi_progress</h1>
|
||||
|
||||
<table border="0" cellspacing=4 cellpadding=4>
|
||||
<!---------- Synopsis ----------->
|
||||
<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
|
||||
<pre>
|
||||
#include <libmilter/mfapi.h>
|
||||
int smfi_progress(
|
||||
SMFICTX *ctx;
|
||||
);
|
||||
</pre>
|
||||
Notify the MTA that an operation is still in progress.
|
||||
</td></tr>
|
||||
|
||||
<!----------- Description ---------->
|
||||
<tr><th valign="top" align=left>DESCRIPTION</th><td>
|
||||
<table border="1" cellspacing=1 cellpadding=4>
|
||||
<tr align="left" valign=top>
|
||||
<th width="80">Called When</th>
|
||||
<td>Called only from <a href="xxfi_eom.html">xxfi_eom</a>.</td>
|
||||
</tr>
|
||||
<tr align="left" valign=top>
|
||||
<th width="80">Effects</th>
|
||||
<td>smfi_progress notifies the MTA that the filter is still working
|
||||
on a message, causing the MTA to re-start its timeouts.</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<!----------- Arguments ---------->
|
||||
<tr><th valign="top" align=left>ARGUMENTS</th><td>
|
||||
<table border="1" cellspacing=0>
|
||||
<tr bgcolor="#dddddd"><th>Argument</th><th>Description</th></tr>
|
||||
<tr valign="top"><td>ctx</td>
|
||||
<td>Opaque context structure.
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
|
||||
<!----------- Return values ---------->
|
||||
<tr>
|
||||
<th valign="top" align=left>RETURN VALUES</th>
|
||||
|
||||
<td>smfi_progress will fail and return MI_FAILURE if:
|
||||
<ul>
|
||||
<li>A network error occurs.
|
||||
</ul>
|
||||
Otherwise, it will return MI_SUCCESS
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<hr size="1">
|
||||
<font size="-1">
|
||||
Copyright (c) 2003 Sendmail, Inc. and its suppliers.
|
||||
All rights reserved.
|
||||
<br>
|
||||
By using this file, you agree to the terms and conditions set
|
||||
forth in the LICENSE.
|
||||
</font>
|
||||
</body>
|
||||
</html>
|
73
contrib/sendmail/libmilter/docs/smfi_quarantine.html
Normal file
73
contrib/sendmail/libmilter/docs/smfi_quarantine.html
Normal file
@ -0,0 +1,73 @@
|
||||
<html>
|
||||
<head><title>smfi_quarantine</title></head>
|
||||
<body>
|
||||
<!--
|
||||
$Id: smfi_quarantine.html,v 1.3 2003/03/05 19:57:54 ca Exp $
|
||||
-->
|
||||
<h1>smfi_quarantine</h1>
|
||||
|
||||
<table border="0" cellspacing=4 cellpadding=4>
|
||||
<!---------- Synopsis ----------->
|
||||
<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
|
||||
<pre>
|
||||
#include <libmilter/mfapi.h>
|
||||
int smfi_quarantine(
|
||||
SMFICTX *ctx;
|
||||
char *reason;
|
||||
);
|
||||
</pre>
|
||||
Quarantine the message using the given reason.
|
||||
</td></tr>
|
||||
|
||||
<!----------- Description ---------->
|
||||
<tr><th valign="top" align=left>DESCRIPTION</th><td>
|
||||
<table border="1" cellspacing=1 cellpadding=4>
|
||||
<tr align="left" valign=top>
|
||||
<th width="80">Called When</th>
|
||||
<td>Called only from <a href="xxfi_eom.html">xxfi_eom</a>.</td>
|
||||
</tr>
|
||||
<tr align="left" valign=top>
|
||||
<th width="80">Effects</th>
|
||||
<td>smfi_quarantine quarantines the message using the given reason.</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<!----------- Arguments ---------->
|
||||
<tr><th valign="top" align=left>ARGUMENTS</th><td>
|
||||
<table border="1" cellspacing=0>
|
||||
<tr bgcolor="#dddddd"><th>Argument</th><th>Description</th></tr>
|
||||
<tr valign="top"><td>ctx</td>
|
||||
<td>Opaque context structure.
|
||||
</td></tr>
|
||||
<tr valign="top"><td>reason</td>
|
||||
<td>The quarantine reason, a non-NULL and non-empty null-terminated string.
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
|
||||
<!----------- Return values ---------->
|
||||
<tr>
|
||||
<th valign="top" align=left>RETURN VALUES</th>
|
||||
|
||||
<td>smfi_quarantine will fail and return MI_FAILURE if:
|
||||
<ul>
|
||||
<li>reason is NULL or empty.
|
||||
<li>A network error occurs.
|
||||
<li>SMFIF_QUARANTINE was not set when <a href="smfi_register.html">smfi_register</a> was called.
|
||||
</ul>
|
||||
Otherwise, it will return MI_SUCCESS
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<hr size="1">
|
||||
<font size="-1">
|
||||
Copyright (c) 2002-2003 Sendmail, Inc. and its suppliers.
|
||||
All rights reserved.
|
||||
<br>
|
||||
By using this file, you agree to the terms and conditions set
|
||||
forth in the LICENSE.
|
||||
</font>
|
||||
</body>
|
||||
</html>
|
@ -1,6 +1,9 @@
|
||||
<html>
|
||||
<head><title>smfi_register</title></head>
|
||||
<body>
|
||||
<!--
|
||||
$Id: smfi_register.html,v 1.11 2003/05/26 04:10:52 gshapiro Exp $
|
||||
-->
|
||||
<h1>smfi_register</h1>
|
||||
|
||||
<table border="0" cellspacing=4 cellpadding=4>
|
||||
|
@ -1,6 +1,9 @@
|
||||
<html>
|
||||
<head><title>smfi_replacebody</title></head>
|
||||
<body>
|
||||
<!--
|
||||
$Id: smfi_replacebody.html,v 1.13 2003/03/05 19:57:54 ca Exp $
|
||||
-->
|
||||
<h1>smfi_replacebody</h1>
|
||||
|
||||
<table border="0" cellspacing=4 cellpadding=4>
|
||||
|
@ -1,6 +1,9 @@
|
||||
<html>
|
||||
<head><title>smfi_setbacklog</title></head>
|
||||
<body>
|
||||
<!--
|
||||
$Id: smfi_setbacklog.html,v 1.3 2003/03/05 19:57:54 ca Exp $
|
||||
-->
|
||||
<h1>smfi_setbacklog</h1>
|
||||
|
||||
<table border="0" cellspacing=4 cellpadding=4>
|
||||
|
@ -1,6 +1,9 @@
|
||||
<html>
|
||||
<head><title>smfi_setconn</title></head>
|
||||
<body>
|
||||
<!--
|
||||
$Id: smfi_setconn.html,v 1.14 2003/05/26 05:09:16 gshapiro Exp $
|
||||
-->
|
||||
<h1>smfi_setconn</h1>
|
||||
|
||||
<table border="0" cellspacing=4 cellpadding=4>
|
||||
|
67
contrib/sendmail/libmilter/docs/smfi_setdbg.html
Normal file
67
contrib/sendmail/libmilter/docs/smfi_setdbg.html
Normal file
@ -0,0 +1,67 @@
|
||||
<html>
|
||||
<head><title>smfi_setdbg</title></head>
|
||||
<body>
|
||||
<!--
|
||||
$Id: smfi_setdbg.html,v 1.1 2003/12/03 17:28:49 ca Exp $
|
||||
-->
|
||||
<h1>smfi_setdbg</h1>
|
||||
|
||||
<table border="0" cellspacing=4 cellpadding=4>
|
||||
<!---------- Synopsis ----------->
|
||||
<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
|
||||
<pre>
|
||||
#include <libmilter/mfapi.h>
|
||||
int smfi_setdbg(
|
||||
int level;
|
||||
);
|
||||
</pre>
|
||||
Set the debugging (tracing) level for the milter library.
|
||||
</td></tr>
|
||||
|
||||
<!----------- Description ---------->
|
||||
<tr><th valign="top" align=left>DESCRIPTION</th><td>
|
||||
<table border="1" cellspacing=1 cellpadding=4>
|
||||
<tr align="left" valign=top>
|
||||
<th width="80">Called When</th>
|
||||
<td>Called from any any routine at any time.</td>
|
||||
</tr>
|
||||
<tr align="left" valign=top>
|
||||
<th width="80">Effects</th>
|
||||
<td>smfi_setdbg sets the milter library's internal debugging level
|
||||
to a new level so that code details may be traced.
|
||||
A level of zero turns off debugging. The greater
|
||||
(more positive) the level the more detailed the debugging. Six is
|
||||
the current, highest, useful value.</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<!----------- Arguments ---------->
|
||||
<tr><th valign="top" align=left>ARGUMENTS</th><td>
|
||||
<table border="1" cellspacing=0>
|
||||
<tr bgcolor="#dddddd"><th>Argument</th><th>Description</th></tr>
|
||||
<tr valign="top"><td>level</td>
|
||||
<td>The new debugging level
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
|
||||
<!----------- Return values ---------->
|
||||
<tr>
|
||||
<th valign="top" align=left>RETURN VALUES</th>
|
||||
|
||||
<td>smfi_setdbg returns MI_SUCCESS by default.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<hr size="1">
|
||||
<font size="-1">
|
||||
Copyright (c) 2003 Sendmail, Inc. and its suppliers.
|
||||
All rights reserved.
|
||||
<br>
|
||||
By using this file, you agree to the terms and conditions set
|
||||
forth in the LICENSE.
|
||||
</font>
|
||||
</body>
|
||||
</html>
|
147
contrib/sendmail/libmilter/docs/smfi_setmlreply.html
Normal file
147
contrib/sendmail/libmilter/docs/smfi_setmlreply.html
Normal file
@ -0,0 +1,147 @@
|
||||
<html>
|
||||
<head><title>smfi_setmlreply</title></head>
|
||||
<body>
|
||||
<!--
|
||||
$Id: smfi_setmlreply.html,v 1.1 2004/01/01 00:32:45 gshapiro Exp $
|
||||
-->
|
||||
<h1>smfi_setmlreply</h1>
|
||||
|
||||
<table border="0" cellspacing=4 cellpadding=4>
|
||||
<!---------- Synopsis ----------->
|
||||
<tr><th valign="top" align=left width=150>SYNOPSIS</th><td>
|
||||
<pre>
|
||||
#include <libmilter/mfapi.h>
|
||||
int smfi_setmlreply(
|
||||
SMFICTX *ctx,
|
||||
char *rcode,
|
||||
char *xcode,
|
||||
...
|
||||
);
|
||||
</pre>
|
||||
Set the default SMTP error reply code to a multi-line response. Only 4XX
|
||||
and 5XX replies are accepted.
|
||||
</td></tr>
|
||||
|
||||
<!----------- Description ---------->
|
||||
<tr><th valign="top" align=left>DESCRIPTION</th><td>
|
||||
<table border="1" cellspacing=1 cellpadding=4>
|
||||
<tr align="left" valign=top>
|
||||
<th width="80">Called When</th>
|
||||
<td>smfi_setmlreply may be called from any of the xxfi_ callbacks
|
||||
other than xxfi_connect.</td>
|
||||
</tr>
|
||||
<tr align="left" valign=top>
|
||||
<th width="80">Effects</th>
|
||||
<td>Directly set the SMTP error reply code for this connection to the given
|
||||
lines after the xcode. The list of arguments must be NULL terminated.
|
||||
This code will be used on subsequent error replies resulting from actions
|
||||
taken by this filter.</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<!----------- Arguments ---------->
|
||||
<tr><th valign="top" align=left>ARGUMENTS</th><td>
|
||||
<table border="1" cellspacing=0>
|
||||
<tr bgcolor="#dddddd"><th>Argument</th><th>Description</th></tr>
|
||||
<tr valign="top"><td>ctx</td>
|
||||
<td>Opaque context structure.
|
||||
</td></tr>
|
||||
<tr valign="top"><td>rcode</td>
|
||||
<td>The three-digit (RFC 821/2821) SMTP reply code, as a
|
||||
null-terminated string. rcode cannot be NULL, and must be a valid
|
||||
4XX or 5XX reply code.
|
||||
</td></tr>
|
||||
<tr valign="top"><td>xcode</td>
|
||||
<td>The extended (RFC 1893/2034) reply code. If xcode is NULL, no
|
||||
extended code is used. Otherwise, xcode must conform to RFC 1893/2034.
|
||||
</td></tr>
|
||||
<tr valign="top"><td>...</td>
|
||||
<td>The remainder of the arguments are single lines of text, up to
|
||||
32 arguments, which will be used as the text part of the SMTP
|
||||
reply. The list must be NULL terminated.
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
|
||||
<!----------- Example ---------->
|
||||
<tr>
|
||||
<th valign="top" align=left>RETURN VALUES</th>
|
||||
<td>
|
||||
For example, the code:<BR>
|
||||
<pre>
|
||||
ret = smfi_setmlreply(ctx, "550", "5.7.0",
|
||||
"Spammer access rejected",
|
||||
"Please see our policy at:",
|
||||
"http://www.example.com/spampolicy.html",
|
||||
NULL);
|
||||
</pre>
|
||||
<BR>would give the SMTP response:<BR>
|
||||
<pre>
|
||||
550-5.7.0 Spammer access rejected
|
||||
550-5.7.0 Please see our policy at:
|
||||
550 5.7.0 http://www.example.com/spampolicy.html
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<!----------- Return values ---------->
|
||||
<tr>
|
||||
<th valign="top" align=left>RETURN VALUES</th>
|
||||
|
||||
<td>smfi_setmlreply will fail and return MI_FAILURE if:
|
||||
<ul>
|
||||
<li>The rcode or xcode argument is invalid.
|
||||
<li>A memory-allocation failure occurs.
|
||||
<li>If any text line contains a carraige return or line feed.
|
||||
<li>The length of any text line is more than MAXREPLYLEN (980).
|
||||
<li>More than 32 lines of text replies are given.
|
||||
</ul>
|
||||
Otherwise, it return MI_SUCCESS.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<!----------- Notes ---------->
|
||||
<tr align="left" valign=top>
|
||||
<th>NOTES</th>
|
||||
<td>
|
||||
<ul>
|
||||
<li>Values passed to smfi_setmlreply are not checked for standards compliance.
|
||||
<li>The message parameter should contain only printable characters,
|
||||
other characters may lead to undefined behavior.
|
||||
For example, CR or LF will cause the call to fail,
|
||||
single '%' characters will cause the text to be ignored
|
||||
(if there really should be a '%' in the string,
|
||||
use '%%' just like for <tt>printf(3)</tt>).
|
||||
<li>For details about reply codes and their meanings, please see RFC's
|
||||
<a href="http://www.rfc-editor.org/rfc/rfc821.txt">821</a>/
|
||||
<a href="http://www.rfc-editor.org/rfc/rfc2821.txt">2821</a>
|
||||
and
|
||||
<a href="http://www.rfc-editor.org/rfc/rfc1893.txt">1893</a>/
|
||||
<a href="http://www.rfc-editor.org/rfc/rfc2034.txt">2034</a>.
|
||||
<li>If the reply code (rcode) given is a '4XX' code but SMFI_REJECT is used
|
||||
for the message, the custom reply is not used.
|
||||
<li>Similarly, if the reply code (rcode) given is a '5XX' code but
|
||||
SMFI_TEMPFAIL is used for the message, the custom reply is not used.
|
||||
<BR>
|
||||
Note: in neither of the last two cases an error is returned to the milter,
|
||||
libmilter silently ignores the reply code.
|
||||
<li>
|
||||
If the milter returns SMFI_TEMPFAIL
|
||||
and sets the reply code to '421',
|
||||
then the SMTP server will terminate the SMTP session with a 421
|
||||
error code.
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<hr size="1">
|
||||
<font size="-1">
|
||||
Copyright (c) 2000, 2002-2003 Sendmail, Inc. and its suppliers.
|
||||
All rights reserved.
|
||||
<br>
|
||||
By using this file, you agree to the terms and conditions set
|
||||
forth in the LICENSE.
|
||||
</font>
|
||||
</body>
|
||||
</html>
|
@ -1,6 +1,9 @@
|
||||
<html>
|
||||
<head><title>smfi_setpriv</title></head>
|
||||
<body>
|
||||
<!--
|
||||
$Id: smfi_setpriv.html,v 1.9 2003/03/05 19:57:54 ca Exp $
|
||||
-->
|
||||
<h1>smfi_setpriv</h1>
|
||||
|
||||
<table border="0" cellspacing=4 cellpadding=4>
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user