From cee0d44ab388e12fbd62fdb134d295c58901148a Mon Sep 17 00:00:00 2001 From: Gregory Neil Shapiro Date: Tue, 14 Jul 2020 21:40:53 +0000 Subject: [PATCH] Import sendmail 8.16.1 --- CACerts | 240 +- KNOWNBUGS | 1 - PGPKEYS | 1334 +- README | 4 +- RELEASE_NOTES | 144 +- cf/README | 89 +- cf/cf/Makefile | 2 +- cf/cf/generic-bsd4.4.cf | 18 +- cf/cf/generic-hpux10.cf | 18 +- cf/cf/generic-hpux9.cf | 18 +- cf/cf/generic-linux.cf | 18 +- cf/cf/generic-mpeix.cf | 18 +- cf/cf/generic-nextstep3.3.cf | 18 +- cf/cf/generic-osf1.cf | 18 +- cf/cf/generic-solaris.cf | 18 +- cf/cf/generic-sunos4.1.cf | 18 +- cf/cf/generic-ultrix4.cf | 18 +- cf/cf/knecht.mc | 4 +- cf/cf/submit.cf | 18 +- cf/feature/bcc.m4 | 2 +- cf/feature/blacklist_recipients.m4 | 7 +- cf/feature/blocklist_recipients.m4 | 19 + cf/feature/check_cert_altnames.m4 | 17 + cf/feature/dnsbl.m4 | 2 +- cf/feature/enhdnsbl.m4 | 2 +- cf/feature/tls_failures.m4 | 13 + cf/m4/cfhead.m4 | 9 + cf/m4/proto.m4 | 85 +- cf/m4/version.m4 | 4 +- cf/ostype/hpux10.m4 | 2 +- cf/ostype/hpux9.m4 | 2 +- contrib/cidrexpand | 157 +- contrib/dnsblaccess.m4 | 4 +- contrib/expn.pl | 2 +- contrib/mmuegel | 28 +- devtools/M4/header.m4 | 2 +- devtools/OS/Darwin.14.x | 25 + devtools/OS/Darwin.15.x | 23 + devtools/OS/Darwin.16.x | 23 + devtools/OS/Darwin.17.x | 23 + devtools/OS/Darwin.18.x | 23 + devtools/README | 5 +- devtools/bin/Build | 2 + devtools/bin/configure.sh | 6 +- doc/op/op.me | 342 +- doc/op/op.ps | 24136 ++++++++++--------------- editmap/Makefile | 2 + editmap/editmap.0 | 44 +- editmap/editmap.c | 8 +- include/libmilter/mfapi.h | 20 +- include/libmilter/mfdef.h | 4 +- include/libsmdb/smdb.h | 77 +- include/sendmail/pathnames.h | 16 +- include/sendmail/sendmail.h | 2 +- include/sm/assert.h | 8 +- include/sm/bdb.h | 2 +- include/sm/cdefs.h | 20 +- include/sm/clock.h | 6 +- include/sm/conf.h | 660 +- include/sm/config.h | 40 +- include/sm/debug.h | 2 +- include/sm/errstring.h | 9 +- include/sm/gen.h | 2 +- include/sm/heap.h | 2 +- include/sm/io.h | 6 +- include/sm/ldap.h | 15 +- include/sm/limits.h | 10 +- include/sm/notify.h | 19 + include/sm/os/sm_os_freebsd.h | 16 +- include/sm/rpool.h | 6 +- include/sm/sem.h | 4 +- include/sm/shm.h | 4 +- include/sm/string.h | 6 +- include/sm/test.h | 4 +- include/sm/types.h | 4 +- include/sm/varargs.h | 5 + include/sm/xtrap.h | 4 +- libmilter/Makefile | 4 +- libmilter/README | 19 +- libmilter/comm.c | 6 +- libmilter/docs/api.html | 71 +- libmilter/docs/design.html | 12 +- libmilter/docs/index.html | 2 +- libmilter/docs/installation.html | 4 +- libmilter/docs/overview.html | 16 +- libmilter/docs/sample.html | 4 +- libmilter/docs/smfi_addheader.html | 16 +- libmilter/docs/smfi_addrcpt.html | 12 +- libmilter/docs/smfi_addrcpt_par.html | 15 +- libmilter/docs/smfi_chgfrom.html | 12 +- libmilter/docs/smfi_chgheader.html | 12 +- libmilter/docs/smfi_delrcpt.html | 11 +- libmilter/docs/smfi_getpriv.html | 3 +- libmilter/docs/smfi_getsymval.html | 5 +- libmilter/docs/smfi_insheader.html | 17 +- libmilter/docs/smfi_main.html | 3 +- libmilter/docs/smfi_opensocket.html | 9 +- libmilter/docs/smfi_progress.html | 3 +- libmilter/docs/smfi_quarantine.html | 5 +- libmilter/docs/smfi_register.html | 25 +- libmilter/docs/smfi_replacebody.html | 15 +- libmilter/docs/smfi_setbacklog.html | 3 +- libmilter/docs/smfi_setconn.html | 9 +- libmilter/docs/smfi_setdbg.html | 3 +- libmilter/docs/smfi_setmlreply.html | 11 +- libmilter/docs/smfi_setpriv.html | 5 +- libmilter/docs/smfi_setreply.html | 13 +- libmilter/docs/smfi_setsymlist.html | 7 +- libmilter/docs/smfi_settimeout.html | 10 +- libmilter/docs/smfi_stop.html | 3 +- libmilter/docs/smfi_version.html | 1 + libmilter/docs/xxfi_abort.html | 3 +- libmilter/docs/xxfi_body.html | 5 +- libmilter/docs/xxfi_close.html | 5 +- libmilter/docs/xxfi_connect.html | 10 +- libmilter/docs/xxfi_data.html | 7 +- libmilter/docs/xxfi_envfrom.html | 5 +- libmilter/docs/xxfi_envrcpt.html | 7 +- libmilter/docs/xxfi_eoh.html | 1 + libmilter/docs/xxfi_eom.html | 3 +- libmilter/docs/xxfi_header.html | 5 +- libmilter/docs/xxfi_helo.html | 3 +- libmilter/docs/xxfi_negotiate.html | 18 +- libmilter/docs/xxfi_unknown.html | 9 +- libmilter/engine.c | 42 +- libmilter/example.c | 2 +- libmilter/handler.c | 2 +- libmilter/libmilter.h | 16 +- libmilter/listener.c | 66 +- libmilter/main.c | 2 +- libmilter/monitor.c | 2 +- libmilter/sm_gethost.c | 41 +- libmilter/smfi.c | 3 +- libmilter/worker.c | 8 +- libsm/Makefile | 4 +- libsm/Makefile.m4 | 3 +- libsm/assert.c | 2 +- libsm/clock.c | 46 +- libsm/config.c | 54 +- libsm/debug.c | 36 +- libsm/errstring.c | 26 +- libsm/exc.c | 4 +- libsm/findfp.c | 18 +- libsm/flags.c | 2 +- libsm/fopen.c | 8 +- libsm/fpos.c | 2 +- libsm/fscanf.c | 2 +- libsm/io.html | 17 +- libsm/ldap.c | 351 +- libsm/local.h | 2 +- libsm/makebuf.c | 4 +- libsm/mbdb.c | 16 +- libsm/memstat.c | 2 +- libsm/niprop.c | 10 +- libsm/notify.c | 205 + libsm/refill.c | 4 +- libsm/rewind.c | 2 +- libsm/rpool.c | 12 +- libsm/sem.c | 2 +- libsm/signal.c | 18 +- libsm/stdio.c | 6 +- libsm/strdup.c | 2 +- libsm/strerror.c | 2 +- libsm/string.c | 31 + libsm/strio.c | 8 +- libsm/strto.c | 4 +- libsm/syslogio.c | 2 +- libsm/t-event.c | 2 +- libsm/t-exc.c | 2 +- libsm/t-heap.c | 4 +- libsm/t-notify.c | 122 + libsm/t-scanf.c | 2 +- libsm/t-sem.c | 4 +- libsm/vfprintf.c | 9 +- libsm/vfscanf.c | 4 +- libsmdb/Makefile | 2 + libsmdb/Makefile.m4 | 2 +- libsmdb/smcdb.c | 575 + libsmdb/smdb.c | 183 +- libsmdb/smdb1.c | 16 +- libsmdb/smdb2.c | 107 +- libsmdb/smndbm.c | 1 - libsmutil/Makefile | 2 + libsmutil/cf.c | 4 +- libsmutil/safefile.c | 35 +- mail.local/Makefile | 2 + mail.local/mail.local.0 | 66 +- mail.local/mail.local.c | 132 +- mailstats/Makefile | 2 + mailstats/mailstats.0 | 52 +- mailstats/mailstats.c | 2 +- makemap/Makefile | 2 + makemap/Makefile.m4 | 1 + makemap/makemap.0 | 88 +- makemap/makemap.8 | 15 +- makemap/makemap.c | 316 +- praliases/Makefile | 2 + praliases/praliases.0 | 26 +- praliases/praliases.c | 8 +- rmail/Makefile | 2 + rmail/rmail.0 | 28 +- rmail/rmail.c | 2 +- smrsh/Makefile | 2 + smrsh/smrsh.0 | 36 +- smrsh/smrsh.c | 48 +- src/Makefile | 4 +- src/Makefile.m4 | 4 +- src/README | 30 +- src/TRACEFLAGS | 15 +- src/alias.c | 30 +- src/aliases.0 | 42 +- src/arpadate.c | 6 +- src/bf.c | 10 +- src/collect.c | 31 +- src/conf.c | 718 +- src/conf.h | 90 +- src/control.c | 7 +- src/daemon.c | 452 +- src/daemon.h | 4 +- src/deliver.c | 656 +- src/domain.c | 735 +- src/envelope.c | 47 +- src/err.c | 64 +- src/headers.c | 87 +- src/macro.c | 42 +- src/mailq.0 | 68 +- src/main.c | 224 +- src/map.c | 998 +- src/map.h | 33 +- src/mci.c | 87 +- src/milter.c | 256 +- src/mime.c | 16 +- src/newaliases.0 | 28 +- src/parseaddr.c | 62 +- src/queue.c | 362 +- src/ratectrl.c | 534 +- src/ratectrl.h | 128 + src/readcf.c | 383 +- src/recipient.c | 29 +- src/sasl.c | 8 +- src/savemail.c | 97 +- src/sendmail.0 | 292 +- src/sendmail.h | 629 +- src/sfsasl.c | 49 +- src/sfsasl.h | 4 +- src/sm_resolve.c | 1350 +- src/sm_resolve.h | 72 +- src/srvrsmtp.c | 636 +- src/stab.c | 27 +- src/timers.c | 2 +- src/tls.c | 1259 +- src/tls.h | 237 + src/tlsh.c | 263 + src/udb.c | 59 +- src/usersmtp.c | 178 +- src/util.c | 72 +- src/version.c | 4 +- test/Results | 2 +- vacation/Makefile | 2 + vacation/vacation.0 | 110 +- vacation/vacation.c | 20 +- 261 files changed, 23551 insertions(+), 19557 deletions(-) create mode 100644 cf/feature/blocklist_recipients.m4 create mode 100644 cf/feature/check_cert_altnames.m4 create mode 100644 cf/feature/tls_failures.m4 create mode 100644 devtools/OS/Darwin.14.x create mode 100644 devtools/OS/Darwin.15.x create mode 100644 devtools/OS/Darwin.16.x create mode 100644 devtools/OS/Darwin.17.x create mode 100644 devtools/OS/Darwin.18.x create mode 100644 include/sm/notify.h create mode 100644 libsm/notify.c create mode 100644 libsm/t-notify.c create mode 100644 libsmdb/smcdb.c create mode 100644 src/ratectrl.h create mode 100644 src/tls.h create mode 100644 src/tlsh.c diff --git a/CACerts b/CACerts index b5deb36b19b1..630707555657 100644 --- a/CACerts +++ b/CACerts @@ -1,4 +1,3 @@ -# $Id: CACerts,v 8.6 2013-01-18 15:14:17 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. @@ -10,189 +9,92 @@ Certificate: Data: Version: 3 (0x2) Serial Number: - 92:91:67:de:e0:ef:2c:e4 + 81:9d:41:0f:40:55:ac:4a Signature Algorithm: sha1WithRSAEncryption - Issuer: C=US, ST=California, L=Berkeley, O=Endmail Org, OU=MTA, CN=Claus Assmann CA RSA 2015/emailAddress=ca+ca-rsa2015@esmtp.org + Issuer: C=US, ST=California, L=Berkeley, O=Endmail Org, OU=MTA, CN=CA/emailAddress=ca+ca-rsa2018@esmtp.org Validity - Not Before: Mar 2 19:15:29 2015 GMT - Not After : Mar 1 19:15:29 2018 GMT - Subject: C=US, ST=California, L=Berkeley, O=Endmail Org, OU=MTA, CN=Claus Assmann CA RSA 2015/emailAddress=ca+ca-rsa2015@esmtp.org + Not Before: Feb 27 02:30:55 2018 GMT + Not After : Feb 26 02:30:55 2021 GMT + Subject: C=US, ST=California, L=Berkeley, O=Endmail Org, OU=MTA, CN=CA/emailAddress=ca+ca-rsa2018@esmtp.org Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: - 00:b9:1a:a1:56:ce:cb:16:af:4f:96:ba:2a:70:31: - 70:d3:86:6c:7a:46:26:47:42:3f:de:49:57:3e:08: - 1e:10:25:bf:06:8f:ca:fd:f4:5e:6a:01:7d:31:4d: - 50:88:18:43:71:66:65:42:9c:90:97:0d:95:f2:14: - ef:d7:5e:77:ef:7d:b5:49:3f:02:bb:83:20:f7:e6: - fc:9a:cd:13:df:60:41:28:8e:39:07:a6:a4:40:98: - 15:1e:46:b6:04:2e:f9:ab:32:d1:8b:fe:52:81:f1: - d2:e1:c3:cf:bf:ab:40:a7:f0:e4:e5:a2:82:37:30: - 8c:10:7d:aa:a8:7c:7e:76:cc:5f:1a:24:d0:8c:94: - f6:f2:7f:4a:be:2f:38:67:c0:06:e6:9e:51:ad:55: - d0:cb:26:71:cf:f4:af:7d:5a:41:81:16:fb:26:ec: - f0:35:01:6e:db:f9:e9:00:d7:d0:89:7b:cf:88:16: - 8b:1c:8f:77:1f:5d:ef:70:04:28:76:c5:1b:c6:23: - 8d:49:6b:f0:b8:21:56:d6:7d:68:6c:be:21:e3:e6: - e3:1d:6f:a5:ea:dc:83:e4:27:b3:6f:5f:1b:3d:33: - a1:d5:d3:f0:73:1a:12:eb:d9:95:00:71:59:16:b4: - e4:60:38:b2:2e:7f:b7:d4:c5:e9:3f:74:e4:48:38: - 29:89 + 00:b8:a3:8d:79:28:c1:1f:9c:11:74:43:26:e1:3b: + cc:14:87:5b:6b:64:4c:ed:79:1b:7f:2a:03:d0:7b: + ef:9e:88:b0:64:36:ee:58:ef:fd:d9:c7:20:b3:71: + e9:6d:1e:a7:bc:c1:7c:3b:fe:2a:e4:16:2f:bc:d6: + 2c:f5:98:f9:c4:21:1c:ca:c3:7e:57:89:c8:a9:2f: + da:6b:9b:52:d6:c9:9d:98:97:6d:08:7c:a6:37:4e: + d4:26:bb:db:73:b0:38:ef:7d:1e:dd:8e:dd:8e:17: + 2f:a0:3d:a9:0e:4d:f0:2b:b8:14:23:33:ad:c8:a0: + e5:9d:0f:27:ad:83:a2:78:90:05:ec:29:06:91:07: + 45:6c:5f:ba:8e:1d:f1:d7:1b:2d:f9:99:ba:2e:27: + e1:03:7d:e9:d2:54:35:cc:39:79:07:83:d8:93:9b: + d6:ef:72:ab:d4:63:8e:6b:f7:00:66:5f:77:e8:b6: + bc:de:5f:8c:d0:ce:1a:c4:db:03:9d:e4:ee:0a:ec: + 77:c5:f2:30:69:7e:70:12:e5:c2:4a:28:3f:e7:19: + eb:af:41:fb:e6:a6:1d:b5:fd:2b:99:03:f5:20:90: + 38:73:bd:43:70:da:cf:1f:34:5d:ab:17:4b:73:cf: + f9:3d:e1:a2:79:14:de:d8:40:85:82:c4:5a:84:82: + 32:f1 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Key Identifier: - B1:69:DB:5E:9B:CE:1A:B4:1D:B2:6A:FC:5A:22:97:B6:24:14:6F:32 + 42:37:75:E7:8F:12:CF:D9:EB:21:22:7D:8A:E8:49:21:FD:E2:3A:3A X509v3 Authority Key Identifier: - keyid:B1:69:DB:5E:9B:CE:1A:B4:1D:B2:6A:FC:5A:22:97:B6:24:14:6F:32 - DirName:/C=US/ST=California/L=Berkeley/O=Endmail Org/OU=MTA/CN=Claus Assmann CA RSA 2015/emailAddress=ca+ca-rsa2015@esmtp.org - serial:92:91:67:DE:E0:EF:2C:E4 - + keyid:42:37:75:E7:8F:12:CF:D9:EB:21:22:7D:8A:E8:49:21:FD:E2:3A:3A + DirName:/C=US/ST=California/L=Berkeley/O=Endmail Org/OU=MTA/CN=CA/emailAddress=ca+ca-rsa2018@esmtp.org + serial:81:9D:41:0F:40:55:AC:4A X509v3 Basic Constraints: CA:TRUE X509v3 Subject Alternative Name: - email:ca+ca-rsa2015@esmtp.org + email:ca+ca-rsa2018@esmtp.org X509v3 Issuer Alternative Name: - email:ca+ca-rsa2015@esmtp.org + email:ca+ca-rsa2018@esmtp.org Signature Algorithm: sha1WithRSAEncryption - 0a:ce:07:39:77:08:c5:3a:00:04:e8:a0:3b:f7:d2:4c:79:02: - 23:0b:da:c0:55:39:82:71:0a:0c:83:e2:de:f2:3b:fe:23:bc: - 9b:13:34:d1:29:0a:16:3f:01:7d:9f:fb:4b:aa:12:dc:3b:7e: - b9:27:7b:ec:0c:3f:c0:d9:f5:d8:a8:a1:9c:1c:3a:2f:40:df: - 27:1a:1a:a0:74:00:19:b7:82:0e:f9:45:86:bf:32:da:0e:72: - 0a:4c:2c:39:21:63:c3:1f:61:6e:e2:4d:ba:7a:26:1a:15:ce: - b1:f6:1a:59:04:70:ed:e8:72:05:4c:fc:84:c6:a5:f4:e2:4a: - 40:e4:42:70:87:9a:a7:02:26:3a:47:34:09:e0:7b:88:ca:fb: - 99:d9:9b:bb:0c:52:8a:93:d5:59:30:0b:55:42:b4:bb:d2:b1: - 49:55:81:a4:70:a0:49:19:f2:4f:61:94:af:e9:d7:62:68:65: - 97:67:00:26:b8:9b:b2:2c:d0:2c:83:7d:3e:b3:31:73:b9:55: - 49:53:fa:a3:ad:1b:02:67:08:9e:ce:9e:eb:9f:47:0d:6c:95: - e9:6c:30:92:c1:94:67:ad:d9:e3:b9:61:ea:a9:72:98:81:3a: - 62:80:70:20:9a:3e:c4:1f:6f:bd:b4:00:ec:b1:fe:71:da:91: - 15:89:f7:8f + 0b:4c:e5:c2:ed:0a:e5:7b:95:29:22:d4:8f:5f:cb:1b:b1:e3: + 4c:fc:90:e7:2e:97:87:87:a2:63:0d:6d:4d:f0:1f:0d:84:11: + dc:df:b7:fa:c3:c6:2e:07:e9:a0:e9:a6:9f:54:17:ad:1a:d0: + 36:be:31:cc:a5:85:a0:45:4a:87:45:80:7e:de:ea:97:68:e0: + 2b:09:5d:9a:31:6f:f5:78:22:c5:66:2a:99:70:9e:6d:c4:ab: + f6:90:01:70:53:07:66:6c:a6:b5:ce:4b:36:05:83:87:0c:a7: + e0:1e:34:d0:5e:76:a4:20:71:cd:9d:c1:ae:82:27:e0:6f:16: + 57:74:e7:63:9f:d0:3d:72:91:6d:97:a4:82:23:84:dd:6e:0d: + da:43:00:a7:ce:2f:f8:79:04:67:6a:e5:b0:ab:30:d8:f1:90: + 10:43:3b:09:77:27:34:a4:d4:c0:25:4e:21:32:a3:ab:60:1c: + 9d:6e:e2:65:39:51:7f:cd:9f:88:3a:7e:f4:38:af:7b:5b:a7: + bb:7b:70:97:21:59:fc:5c:55:a1:db:74:0a:37:1e:33:97:5f: + 70:32:98:b3:d9:99:4e:08:3c:de:01:82:17:9b:49:d7:fa:c9: + 45:8d:93:cc:42:d6:36:f2:39:3a:47:28:3f:6f:6a:e5:23:f3: + 5c:d4:a3:1b + -----BEGIN CERTIFICATE----- -MIIFJzCCBA+gAwIBAgIJAJKRZ97g7yzkMA0GCSqGSIb3DQEBBQUAMIGlMQswCQYD +MIIE4jCCA8qgAwIBAgIJAIGdQQ9AVaxKMA0GCSqGSIb3DQEBBQUAMIGOMQswCQYD VQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTERMA8GA1UEBwwIQmVya2VsZXkx -FDASBgNVBAoMC0VuZG1haWwgT3JnMQwwCgYDVQQLDANNVEExIjAgBgNVBAMMGUNs -YXVzIEFzc21hbm4gQ0EgUlNBIDIwMTUxJjAkBgkqhkiG9w0BCQEWF2NhK2NhLXJz -YTIwMTVAZXNtdHAub3JnMB4XDTE1MDMwMjE5MTUyOVoXDTE4MDMwMTE5MTUyOVow -gaUxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMREwDwYDVQQHDAhC -ZXJrZWxleTEUMBIGA1UECgwLRW5kbWFpbCBPcmcxDDAKBgNVBAsMA01UQTEiMCAG -A1UEAwwZQ2xhdXMgQXNzbWFubiBDQSBSU0EgMjAxNTEmMCQGCSqGSIb3DQEJARYX -Y2ErY2EtcnNhMjAxNUBlc210cC5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw -ggEKAoIBAQC5GqFWzssWr0+WuipwMXDThmx6RiZHQj/eSVc+CB4QJb8Gj8r99F5q -AX0xTVCIGENxZmVCnJCXDZXyFO/XXnfvfbVJPwK7gyD35vyazRPfYEEojjkHpqRA -mBUeRrYELvmrMtGL/lKB8dLhw8+/q0Cn8OTlooI3MIwQfaqofH52zF8aJNCMlPby -f0q+LzhnwAbmnlGtVdDLJnHP9K99WkGBFvsm7PA1AW7b+ekA19CJe8+IFoscj3cf -Xe9wBCh2xRvGI41Ja/C4IVbWfWhsviHj5uMdb6Xq3IPkJ7NvXxs9M6HV0/BzGhLr -2ZUAcVkWtORgOLIuf7fUxek/dORIOCmJAgMBAAGjggFWMIIBUjAdBgNVHQ4EFgQU -sWnbXpvOGrQdsmr8WiKXtiQUbzIwgdoGA1UdIwSB0jCBz4AUsWnbXpvOGrQdsmr8 -WiKXtiQUbzKhgaukgagwgaUxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9y -bmlhMREwDwYDVQQHDAhCZXJrZWxleTEUMBIGA1UECgwLRW5kbWFpbCBPcmcxDDAK -BgNVBAsMA01UQTEiMCAGA1UEAwwZQ2xhdXMgQXNzbWFubiBDQSBSU0EgMjAxNTEm -MCQGCSqGSIb3DQEJARYXY2ErY2EtcnNhMjAxNUBlc210cC5vcmeCCQCSkWfe4O8s -5DAMBgNVHRMEBTADAQH/MCIGA1UdEQQbMBmBF2NhK2NhLXJzYTIwMTVAZXNtdHAu -b3JnMCIGA1UdEgQbMBmBF2NhK2NhLXJzYTIwMTVAZXNtdHAub3JnMA0GCSqGSIb3 -DQEBBQUAA4IBAQAKzgc5dwjFOgAE6KA799JMeQIjC9rAVTmCcQoMg+Le8jv+I7yb -EzTRKQoWPwF9n/tLqhLcO365J3vsDD/A2fXYqKGcHDovQN8nGhqgdAAZt4IO+UWG -vzLaDnIKTCw5IWPDH2Fu4k26eiYaFc6x9hpZBHDt6HIFTPyExqX04kpA5EJwh5qn -AiY6RzQJ4HuIyvuZ2Zu7DFKKk9VZMAtVQrS70rFJVYGkcKBJGfJPYZSv6ddiaGWX -ZwAmuJuyLNAsg30+szFzuVVJU/qjrRsCZwiezp7rn0cNbJXpbDCSwZRnrdnjuWHq -qXKYgTpigHAgmj7EH2+9tADssf5x2pEVifeP ------END CERTIFICATE----- - - -Certificate: - Data: - Version: 3 (0x2) - Serial Number: - f1:41:b3:3d:ba:bd:33:49 - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=US, ST=California, L=Berkeley, O=Endmail Org, OU=MTA, CN=Claus Assmann CA RSA 2012/emailAddress=ca+ca-rsa2012@esmtp.org - Validity - Not Before: Mar 10 02:47:46 2012 GMT - Not After : Mar 10 02:47:46 2015 GMT - Subject: C=US, ST=California, L=Berkeley, O=Endmail Org, OU=MTA, CN=Claus Assmann CA RSA 2012/emailAddress=ca+ca-rsa2012@esmtp.org - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - Public-Key: (2048 bit) - Modulus: - 00:a2:80:fc:c6:ce:7f:60:38:65:f4:38:f9:7a:d9: - 87:fd:47:eb:3f:2c:4a:c9:38:77:6a:77:94:92:7f: - 83:3d:99:57:2c:5f:37:bb:ba:12:10:17:56:fa:eb: - 43:a6:4b:4c:1e:30:32:07:94:2f:5a:d8:65:49:29: - fa:24:d1:f0:0b:45:2d:e5:d5:cb:7d:60:dc:a6:ce: - a4:47:35:30:ee:5e:8d:c2:30:e7:a7:63:32:b0:59: - 80:cc:8c:99:64:77:8f:50:8e:88:51:47:36:ea:9a: - f3:b4:c0:8c:a6:ab:c6:42:57:88:b9:5f:9f:61:15: - bb:79:65:93:ca:a9:fd:17:eb:87:26:8b:eb:b7:2b: - 7e:33:05:2b:ba:c0:46:f7:08:fd:da:c1:50:9b:3d: - 26:83:5c:53:97:89:2c:cc:5f:f2:7b:a8:b7:3d:fb: - f2:b4:89:0d:43:ef:18:5c:21:75:71:cc:f0:c2:a3: - 84:69:c0:a7:f3:9b:de:c1:c7:5a:5c:7e:68:da:49: - 71:af:58:a8:51:9f:bd:f9:3d:bb:a5:92:fa:7b:1d: - 52:f5:fe:90:59:95:27:65:a4:af:97:9a:4f:01:39: - 59:7d:08:6f:a1:8f:42:47:49:bf:12:52:53:39:74: - 8d:62:3b:bd:4c:4f:05:0f:c4:b9:3e:da:a8:0e:96: - 05:2d - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Subject Key Identifier: - 08:38:E3:88:92:53:6E:F1:56:69:27:44:B5:4C:A0:18:CA:06:97:EB - X509v3 Authority Key Identifier: - keyid:08:38:E3:88:92:53:6E:F1:56:69:27:44:B5:4C:A0:18:CA:06:97:EB - DirName:/C=US/ST=California/L=Berkeley/O=Endmail Org/OU=MTA/CN=Claus Assmann CA RSA 2012/emailAddress=ca+ca-rsa2012@esmtp.org - serial:F1:41:B3:3D:BA:BD:33:49 - - X509v3 Basic Constraints: - CA:TRUE - X509v3 Subject Alternative Name: - email:ca+ca-rsa2012@esmtp.org - X509v3 Issuer Alternative Name: - email:ca+ca-rsa2012@esmtp.org - Signature Algorithm: sha1WithRSAEncryption - 9a:8f:4d:23:5b:30:80:e1:94:e4:66:9c:3a:17:8b:79:49:5b: - ec:5d:e5:a1:22:2d:71:37:a1:51:e7:1d:b1:0d:a9:9b:aa:a9: - 0d:c7:cd:d6:24:f9:e0:f0:57:be:4f:74:0c:4b:7a:42:4c:70: - 19:2e:8e:eb:cb:1b:00:26:27:eb:1c:42:33:d5:ec:32:b4:6c: - 7d:a3:04:a1:5c:00:49:c9:0d:4c:4d:28:37:06:22:77:ec:40: - 15:25:3a:23:84:ae:1f:da:90:dd:c9:dc:27:ee:7c:ec:e5:df: - b8:ba:1e:3f:ee:c2:91:a2:3f:22:92:1e:f3:06:7e:aa:e9:c3: - 11:2d:3d:2f:85:f7:fc:d7:e2:f8:6d:70:a6:40:62:69:e7:52: - ed:1b:19:38:72:86:08:a1:3d:47:c8:68:82:41:db:db:2a:52: - 25:d7:49:aa:9e:c5:83:22:7d:2f:0b:df:8c:90:2d:b5:aa:33: - c7:9b:e8:39:8f:bb:79:5b:13:2d:4e:a9:69:59:c7:09:26:e2: - b5:53:80:86:72:bb:7c:be:e9:46:5b:d8:b2:78:42:d6:5d:c3: - bb:3a:3b:5f:0f:e8:c3:60:fb:88:9f:3a:2b:9f:d3:7d:9f:c7: - 32:aa:4d:34:a7:66:a1:25:16:95:a6:69:e7:86:a3:5c:b9:b9: - df:58:05:e3 ------BEGIN CERTIFICATE----- -MIIFJzCCBA+gAwIBAgIJAPFBsz26vTNJMA0GCSqGSIb3DQEBBQUAMIGlMQswCQYD -VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTERMA8GA1UEBxMIQmVya2VsZXkx -FDASBgNVBAoTC0VuZG1haWwgT3JnMQwwCgYDVQQLEwNNVEExIjAgBgNVBAMTGUNs -YXVzIEFzc21hbm4gQ0EgUlNBIDIwMTIxJjAkBgkqhkiG9w0BCQEWF2NhK2NhLXJz -YTIwMTJAZXNtdHAub3JnMB4XDTEyMDMxMDAyNDc0NloXDTE1MDMxMDAyNDc0Nlow -gaUxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMREwDwYDVQQHEwhC -ZXJrZWxleTEUMBIGA1UEChMLRW5kbWFpbCBPcmcxDDAKBgNVBAsTA01UQTEiMCAG -A1UEAxMZQ2xhdXMgQXNzbWFubiBDQSBSU0EgMjAxMjEmMCQGCSqGSIb3DQEJARYX -Y2ErY2EtcnNhMjAxMkBlc210cC5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw -ggEKAoIBAQCigPzGzn9gOGX0OPl62Yf9R+s/LErJOHdqd5SSf4M9mVcsXze7uhIQ -F1b660OmS0weMDIHlC9a2GVJKfok0fALRS3l1ct9YNymzqRHNTDuXo3CMOenYzKw -WYDMjJlkd49QjohRRzbqmvO0wIymq8ZCV4i5X59hFbt5ZZPKqf0X64cmi+u3K34z -BSu6wEb3CP3awVCbPSaDXFOXiSzMX/J7qLc9+/K0iQ1D7xhcIXVxzPDCo4RpwKfz -m97Bx1pcfmjaSXGvWKhRn735Pbulkvp7HVL1/pBZlSdlpK+Xmk8BOVl9CG+hj0JH -Sb8SUlM5dI1iO71MTwUPxLk+2qgOlgUtAgMBAAGjggFWMIIBUjAdBgNVHQ4EFgQU -CDjjiJJTbvFWaSdEtUygGMoGl+swgdoGA1UdIwSB0jCBz4AUCDjjiJJTbvFWaSdE -tUygGMoGl+uhgaukgagwgaUxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9y -bmlhMREwDwYDVQQHEwhCZXJrZWxleTEUMBIGA1UEChMLRW5kbWFpbCBPcmcxDDAK -BgNVBAsTA01UQTEiMCAGA1UEAxMZQ2xhdXMgQXNzbWFubiBDQSBSU0EgMjAxMjEm -MCQGCSqGSIb3DQEJARYXY2ErY2EtcnNhMjAxMkBlc210cC5vcmeCCQDxQbM9ur0z -STAMBgNVHRMEBTADAQH/MCIGA1UdEQQbMBmBF2NhK2NhLXJzYTIwMTJAZXNtdHAu -b3JnMCIGA1UdEgQbMBmBF2NhK2NhLXJzYTIwMTJAZXNtdHAub3JnMA0GCSqGSIb3 -DQEBBQUAA4IBAQCaj00jWzCA4ZTkZpw6F4t5SVvsXeWhIi1xN6FR5x2xDambqqkN -x83WJPng8Fe+T3QMS3pCTHAZLo7ryxsAJifrHEIz1ewytGx9owShXABJyQ1MTSg3 -BiJ37EAVJTojhK4f2pDdydwn7nzs5d+4uh4/7sKRoj8ikh7zBn6q6cMRLT0vhff8 -1+L4bXCmQGJp51LtGxk4coYIoT1HyGiCQdvbKlIl10mqnsWDIn0vC9+MkC21qjPH -m+g5j7t5WxMtTqlpWccJJuK1U4CGcrt8vulGW9iyeELWXcO7OjtfD+jDYPuInzor -n9N9n8cyqk00p2ahJRaVpmnnhqNcubnfWAXj +FDASBgNVBAoMC0VuZG1haWwgT3JnMQwwCgYDVQQLDANNVEExCzAJBgNVBAMMAkNB +MSYwJAYJKoZIhvcNAQkBFhdjYStjYS1yc2EyMDE4QGVzbXRwLm9yZzAeFw0xODAy +MjcwMjMwNTVaFw0yMTAyMjYwMjMwNTVaMIGOMQswCQYDVQQGEwJVUzETMBEGA1UE +CAwKQ2FsaWZvcm5pYTERMA8GA1UEBwwIQmVya2VsZXkxFDASBgNVBAoMC0VuZG1h +aWwgT3JnMQwwCgYDVQQLDANNVEExCzAJBgNVBAMMAkNBMSYwJAYJKoZIhvcNAQkB +FhdjYStjYS1yc2EyMDE4QGVzbXRwLm9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBALijjXkowR+cEXRDJuE7zBSHW2tkTO15G38qA9B7756IsGQ27ljv +/dnHILNx6W0ep7zBfDv+KuQWL7zWLPWY+cQhHMrDfleJyKkv2mubUtbJnZiXbQh8 +pjdO1Ca723OwOO99Ht2O3Y4XL6A9qQ5N8Cu4FCMzrcig5Z0PJ62DoniQBewpBpEH +RWxfuo4d8dcbLfmZui4n4QN96dJUNcw5eQeD2JOb1u9yq9Rjjmv3AGZfd+i2vN5f +jNDOGsTbA53k7grsd8XyMGl+cBLlwkooP+cZ669B++amHbX9K5kD9SCQOHO9Q3Da +zx80XasXS3PP+T3honkU3thAhYLEWoSCMvECAwEAAaOCAT8wggE7MB0GA1UdDgQW +BBRCN3XnjxLP2eshIn2K6Ekh/eI6OjCBwwYDVR0jBIG7MIG4gBRCN3XnjxLP2esh +In2K6Ekh/eI6OqGBlKSBkTCBjjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlm +b3JuaWExETAPBgNVBAcMCEJlcmtlbGV5MRQwEgYDVQQKDAtFbmRtYWlsIE9yZzEM +MAoGA1UECwwDTVRBMQswCQYDVQQDDAJDQTEmMCQGCSqGSIb3DQEJARYXY2ErY2Et +cnNhMjAxOEBlc210cC5vcmeCCQCBnUEPQFWsSjAMBgNVHRMEBTADAQH/MCIGA1Ud +EQQbMBmBF2NhK2NhLXJzYTIwMThAZXNtdHAub3JnMCIGA1UdEgQbMBmBF2NhK2Nh +LXJzYTIwMThAZXNtdHAub3JnMA0GCSqGSIb3DQEBBQUAA4IBAQALTOXC7Qrle5Up +ItSPX8sbseNM/JDnLpeHh6JjDW1N8B8NhBHc37f6w8YuB+mg6aafVBetGtA2vjHM +pYWgRUqHRYB+3uqXaOArCV2aMW/1eCLFZiqZcJ5txKv2kAFwUwdmbKa1zks2BYOH +DKfgHjTQXnakIHHNncGugifgbxZXdOdjn9A9cpFtl6SCI4Tdbg3aQwCnzi/4eQRn +auWwqzDY8ZAQQzsJdyc0pNTAJU4hMqOrYBydbuJlOVF/zZ+IOn70OK97W6e7e3CX +IVn8XFWh23QKNx4zl19wMpiz2ZlOCDzeAYIXm0nX+slFjZPMQtY28jk6Ryg/b2rl +I/Nc1KMb -----END CERTIFICATE----- diff --git a/KNOWNBUGS b/KNOWNBUGS index de8bd0e15638..d3c0a2ff416d 100644 --- a/KNOWNBUGS +++ b/KNOWNBUGS @@ -271,4 +271,3 @@ Kresolve sequence dnsmx canon be used if set instead of LOCAL_RELAY ($R). This will be fixed in a future version. -$Revision: 8.61 $, Last updated $Date: 2011-04-07 17:48:23 $ diff --git a/PGPKEYS b/PGPKEYS index 361d3e7b8e15..03476f63a5ed 100644 --- a/PGPKEYS +++ b/PGPKEYS @@ -8,137 +8,1089 @@ GPG: gpg --import PGPKEYS Other versions of PGP may require you to separate each key into a separate file and add them one at a time. -Type Bits KeyID Created Expires Algorithm Use -pub 1024 0x16F4CCE9 1999-06-23 ---------- RSA Sign & Encrypt -f16 Fingerprint16 = 18 A4 51 78 CA 72 D4 A7 ED 80 BA 8A C4 98 71 1D -uid Sendmail Security +Note that PGP 2.X and 5.X are deprecated and may not properly +function with newer keys. + +pub 4096R/CA28E5A4 2016-03-04 +fingerprint: 8E6A 5575 0635 A7EA F56C FE80 3D67 CBA7 CA28 E5A4 +uid Sendmail Security -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1.2.4 (Darwin) +Version: GnuPG v1 -mQCNAzdxaGsAAAEEALq7JPrdyXCm3DdJEKR9miP8/B9vrferOBoNimPFceDEqCpm -0RiJtnGhUJwt/HZZhiGDWPYTIa7VajfxiEzJ7LZH+/uXgQFVN27fPwoNKCI+7sr3 -FnRs3Xapojn3d3LZSHagTh+VTuG5LxbP/m//sj2Rw1MMPw1b7sApykAW9MzpAAUR +mQINBFbZrJQBEADf5e1nG0uJs97KLNWbm4NjA5QapVuDk9AsRN4/T3tXVhgK3rBO +lDwQnKFXon/0W/zwXNG4/XLM9Izga0reb8INj1meDVNaqX2PaKqmjUFZWVqz1IAR +HqCjnR/BDuN+6nLpIEETCSnCnOqK6gBhkzc41vU9HiiujVFlyJwcNLrJe5hpgIEX +SW8RQsSja3+qbhZbGrI0izCk7OPJUwNhvs5yzXa3jpiIohfoFV017Ww+iuXu7c1n +Gb9nGnWotI7FYTeWQLUs2A9zCDSZxLn2s7wtbJJlCezY7yUwhxdZm7zjFVf8f4/X +VArmjJsyKZSfmX/l+0JRD0Uh45GFHFi1YuYlhZhGcx6aDYoY63cvREYLS7jHbXzr +c+NDCmrqqIJCqj63ky/m57PCC8HuClREGTxOyAcRYtoA/A+i7X+hPx+E4RvJZxEf +1wxAJJ2W13hq7+Bo1sF9NlKFpLKRCydpdfaP5++UpXSiIWNmQaPeNBmVm/nWDj0l +eDPUKE1mIw1eVSLTLlXJy/jlZNCbQ6tgAJkvEUiylj43SE71FmFImrJHumOxlBXS +5K028kIRJPHgqTrnZ9TDdeHoTBRGougZwe17S2nyyEZpi3rZgXxiwaTuNnLhxPv6 +p+lQuxPdfhdnXTD7EClCzOfTEyT9HvhMiCuepFhTB+qSmivQAHxEZxxmSwARAQAB tDJTZW5kbWFpbCBTZWN1cml0eSA8c2VuZG1haWwtc2VjdXJpdHlAc2VuZG1haWwu -b3JnPokAlQMFEDdxaGvAKcpAFvTM6QEB1bsD/jj+vTodXqoJphCrBLwFmwymopZp -/HHu8o8FURlL6jQ6ihCruCw6PxNMzSdgmnOgyXxyRZIVO1pUyWf/RnS/r09tPLlq -nZxdAPquhB2pkawvFp+Y///lb92SgfbS3/dtSDDAJ8FO+CDUKS5dKuZ6vSDU6ezH -BDYjhd6pPYVd5hz3iQCVAwUQN3Fv9XxLZ22gDhVjAQH4BQQAuCNG977A4v0xjQi8 -AJsJmlS5mKMqn/Lw+sl1h4yQwF2vzNDdxhNWjZVziK3lUIUPh86u8m5CSdN2BB1Y -1RawLvyfpl4b9KtyXxF4fh2BYmygJ4iG+WxhpaT5RS0eFvsSefO7/w13bx5U0Z7A -YfHMt7+CKHm7bAx3l17g3I9aCMCJAJUDBRA3cXDdzx61AyIyegEBAeZmA/4zCJxF -aathJ0soRJOcyRDzHKbAqlShF+Mx0tzcwbE3hAZrIqJ3TRK2MbrsBNnkFHPuPF0e -eKr7TQsXOa+ig57wlHsCOc/fd9jLITjSYKxrQuZz3CrNefPKvv6v6Ctc6TT4GwhC -zHglLC9Bfy9zgbv2wHswRvQBmRlCaERH3HLb1okAlQMFEDd41z8j5GLUv3ukIQEB -9WcD/iFFF2kfSTyD+IfcLl4WCaYSeD/q/fAplpOOZWnC9PB1x3YrMHn/H8zd3S5B -05D8+MR/QL8n8/5P+pyHa4VNRbeX8g8E34ocZf48y6FeqGi8qmcTBJDgqUTO5yMu -t+b57G2pAIzasGcoZDqC3aJnFKwPjGRxnUFJaxlogrbUYCNOiQCVAwUQN3jwKW9S -k9ijm6ZVAQEtugP/ewRrMCdhCbWsSUOrYn1a/pfN2KiJbhs0YyOyWbU6RvJiSFY1 -0BNAxYTbymHDOn2UhUhCrUpqatmgCuxmUsoH2Y4AAFC/94/oltwDUfnw6muqqn2K -7AelRBbJ5wUs65pHu8kfzVB5wJh8eDacKFkK0lqgtRQCE0suhqCSFUfvtzuJAJUD -BRA3fTCCXx7Ib4gMnlUBAWddA/oD0RKLIkLspmJC3ccmkncviMSv0rME4vY0NIfm -IC0zsYITlU/E6H/CqVmU4Hmr5hmr5GUNNtrVZ0oLH1PUjobmZcTITJZbQSS2nY02 -N6JZT5BSAwQBfUfSMwURISRQBUOfi1kLqYk3f6UTee37/+Ig2kb388T6ClcXCv82 -FrZuwIg/AwUQN30wxNTeeNh4KRvYEQLtAACfaxVaX5D1r7hrfi/zbszQ7oekyssA -n1suZQU7/6nIhFvdusr+/VG0RFrAiQCVAwUQN307ugDy2QnruxtBAQGKlwP/asS+ -h9ct4R66OSEjXepsMvl0So8djX15ugXb3EEJjWRH1epu7obhDymAgdQOD9NEr7BF -0FSNCUOylASGszdcS1n5AlqV+TYihXVn265Azy+hg8g2ek97tD+x6JseKsx2nh8n -/Es+zd3mACk21qvHB0U4FjdiQeSSirNrUHGYHZiIPwMFEDd9ihWDAqGhPt8C6hEC -tSMAn0fo1QmxEoscgdF0esw7Bn/J+Bj6AKDNzo63lHEhUpf+JIGlfA2zzS01Z4kA -lQMFEDd9lxoA/N7tSC51jQEBmvgD/ilLDoFPLbycEorpXFP6V0toEtTelueAeQty -SoqD3YB+pSjTtXDqFenNWaBu0hZb7B5tg40YXqyxMEYQVpJh5coy6SlupmF2fzBi -63++FHkxuGym9EeALPJixtM9r6pTzbX8rfvElKENiU9DBUXNhRkAocYs3pxmUge0 -9THHIyDPiQB1AwUQN32t3XLJQtjqWiN5AQEIYQL/QZEjtc1pMYlnO7i0IzvZX/mI -RfX/0l+/+jneoSqP2EbmyvH3KMyl5SeuAifohkjK0SGRlygSMl8kceUHndeIynxg -mM6hr9SKTByFiTy8SZeV8ovYyJ2vMk3OhUVpvGmAiD8DBRA3gbAczsKIjL9qTKER -AhdDAJwKqcVkm9TBCmutXxwVTcffjINlBgCgrMqc6UOHlUtZps33xWZLgZh4awiJ -AJUDBRA3g9C+TCpm+b/C9j0BAaJMBACskZxjnZbvDgm0qdvESy5+jcluxTh5fUeH -DpnkfOP0AUAe8Ykwt8syWOQZ+3Midez8JqTAu+uvNbUckuR5XL8nMYpN06ogjg1T -CgjLito6IptqYUZgWFvGDCdDgC+m8vw7pUbqh59mDTe0X5Q/x9Cu5JxfhxnXTNBQ -+pI8lLAmsYkAlQMFEDeD0Jt3HZKuiXLHwQEBMZoD/2FaLFJ03tEAfNQhLmSgunWV -akXz8udE+pY7IWi6LJGu5iwtIDJ/r0nCrJ6/aqzu9JLpGhfTnhPPCXlz4NfhriRz -12cv2Rlg+gI3Y0Fiju5eo5TWnu+qB36vQsv73xpfQ7oCmoVY2ZntQVBaf8dyFrAd -FBf1y33xWo58zRsg2u2hiQCVAwUQN695leHU/BTm0HRxAQGANwQAmIO4anB29bKY -vm6ulYAm1yAyzTD5TibUnk2Ecne5st4AKGJdSrmaN7i5djxkCfimT6MnAIBRG8y9 -nXW4mCMGjfDkwve800HkrSGy8uWhHs4T8TiY8mZsIgkW5tBWnHfSyOVlc7QUbCDD -7AzrIO3x9vYIdHMM3LAdnG9PKcLjNN6IRgQQEQIABgUCOCrZQgAKCRA/9E8kOH04 -7XJEAKC7Fzj0Mr7JxxwYEqwVgMhpbmhJkQCg7Sa+dR2qpuhYH80RPvtSEpBS6NWI -RgQQEQIABgUCOCsObAAKCRDAz2v13mRiHprlAJ9z24xI7kHeunGE41pQ3eb32dSO -iQCcDBmlk2RVM+ecYTwf5RyT0qyk9lqIRgQQEQIABgUCOCpmUQAKCRDUpU1Ixb5z -WIjFAJ9lIJTH5y24d7TiWlspj8R49Wz/VQCg+EdEulY4h5A5wk1D8eCs5ar5gbCJ -AJUDBRA4YClQmAfmW9hLWSEBAb+cA/4mRKQMyimXZDCr+0FPjazysN5/GXR9wK9F -Q0Gb++nT2Hli/oWQ6F3t1mTLI4vprpiIaFK83HZjRHHU0FEELYL7Lg3F2mirYFNt -Yx1Ag0jZKc+ernLLXEJK8weM7KMADWz1544eMpfb9PRNdmjRyrzBYVfR+vQ1/OBp -zwm6aLAtb4kAlQMFEDjKizecHL3i41xWNQEBjYUD/06hAwd2PGvWynmZP6BxUHW1 -iJ5YnJC/Jlr3d7AyM4I0I1twKTDHLiqUoLvqOWPO4qqO1iFNkX6/8kCjqa6ERaBq -j50vr84knCHc6tin/df+qTR5iOKeLTFkIZVWEHKusVgLN4jNdTUoavxAUgaZxcqv -W7JzYEMIXJ6WyA+JRLDXiQCVAwUQO1XXe3xLZ22gDhVjAQENbgP9FStaWIfIhNEo -JTkCgxd8QkJEc/yumlv7Cw46BmDqwZLwV6sE06YPL0jiPIu9Tv8I3HqlKcK6FBOq -aAvv6ccA7mY6PPIVtk+EZQckSX1ALOcETDNYTOSMVxbq7b0ovvm4sG6D/A28k9b+ -s2ghGKVquYdnn6rEbr8bqmUTwN7RgiqJAJUDBRA7Vdd/1uCh/k++Kt0BAXoYA/9j -jKJfxi4Km64nHG4PhM5bm+OPoymX3uPkyOYXzHerwGIRmVl29FxG0szDPsO0gK2h -f3B2WOGxqMpZrzR4DIdNrtC+R3KO+3FJU0F6+T4dqAOhSvIbVQ8Ic3Wf1M69rJq2 -FID4zk6B4ymesNZVK9hoY7RuuMefUZS8cODoxWlz4Yg/AwUQOCo8e/1viMYh0Kcb -EQJ+/ACfZCL7u2dfVhIfLYqoWqcuuBJeALQAn2pIu6Qg3R0uVJt+gSIH636QM5n/ -iEYEEBECAAYFAjtUu4QACgkQorv7JAz5VvfWuACgmY47eZClnIakMnE2bOaL161Y -iqYAoI7/PnKgJT+LU/WjXwOZHGsoMXOUiQCVAwUQO1jKrwZ+Xti/tWVpAQEYaAQA -pM5VPqRJqQ941YdezQ1jjE7nsLOQ6SJPVUeFguvVHWSTDEcPvp0TEKUTFRruwmKx -yLCR9Ux3Olh0rqXHydT+k6f6++FKzXj/vtHTtNOPIVQisV7K1rDS9Mvj1WdTMJxF -300EXlUpWtAADiEYqxxIeGJ1FWcxUjRCaqA0WUMFXe2JAJUDBRA8H4S+iWliuGeM -CgMBAUo4A/0f+n2BvpudIcJVyVBxUZK9EGdDiZSYZWEUaXnvTWbS9FtjLTIWjzmP -kbz9gnJ+KPcXr/5RpD5XCdCC1rjQ0EpNjWLHnsaTjTDsJ9NGkLPp0lASEdUMK9NW -tG+CCGCMDo/MHhiw09tH5gzCR1KJTFuDiHiINrk5dS+IHIXzCYYB1ohGBBARAgAG -BQI77DSdAAoJEL+2fm9BJ4pEGE8AoPniG1xspcy7o94D3yOKlXAq4wVoAKC6sDFu -ZS2Lja5FbtL4Tl3sl7k7hYhGBBARAgAGBQI79sVoAAoJEPFmQMK+QtymVjgAoIB7 -dEOcSKt2fYJAEtgAiIoVtKHtAJ9S6bqdAT9Xgomd79JN1KPlXRVOJohGBBARAgAG -BQI8+g9kAAoJEC+cdg2xRYLBiEwAn3S/QfwawMiDcpQm7K7q8BTxmcrQAKDaSfAd -Zea7tsIsjVpL627gpCf1uIhGBBARAgAGBQI9hM4xAAoJEHrsMNJ+GHnpSWoAoOsf -gbKx+mCMRbLOEYgAU9DB13qdAJ4zkAaZCijpqqvTi0XjnPMkq7RbpYhGBBIRAgAG -BQI+W7nOAAoJEDBS/CoUw26Bv5wAnjvZsj0SetF/Jth5uvw+jHDLp1QuAJwKy8ZY -e1E+7dOU8CQgYD1Zy5nuaohGBBIRAgAGBQI/aaJkAAoJEC27dr+t1MkzoLcAoLEq -jwJzYeTGbrIfhc4t4/SJnuD2AJ4gIPGnbL6fl9+9TRMlAMHo4xNcVYhGBBMRAgAG -BQI887P9AAoJEEq61lpJwpzCcmMAoKp4ZauTD+oEBfvXtL/eBSxTA0rKAJ9uADQB -IiVBWy54UnhJ7F6NSb2R14hGBBARAgAGBQI+9wRgAAoJELghiQKdsrW873oAn15C -080LnClmIjRoGKppUynk7LqTAJ0RXLkjiepVsgZCW/pXYy6wK5DkeYhGBBARAgAG -BQI/1fplAAoJEFIY2mCt64GL6UAAn1FrBfweuTEy3p+i+ekJdKf4Je4bAKC8SrPC -WVEl5Pr+XpuP92f3KxQJtohGBBARAgAGBQI/1ftLAAoJEKTWXDNQN2ZnOuYAn36o -95rvUoSFIiTVytWm5go8arkYAKC9rUwywbYx49u/rdUtj396kocq9YhGBBARAgAG -BQJAC08wAAoJEIHC9+viE7aStBkAn2DN85MEaydtxX1S0Sz22Qawre//AJ9NYpd/ -BKPMY3o80IuYy6k+E5e4cIhGBBARAgAGBQJAC09qAAoJEGtw7Nldw/RzMlYAoLeH -NbcbFnINRaU3vJLp7ieZCUrKAKC/+N6FEM2JNJzkeRsHhOvOn7EXmYhGBBARAgAG -BQJAkTWOAAoJEKn24r/sjo2pIp4AoISelNVVxuIBl2i3t7ajQaUpruJpAKCGDYPg -RaGIuII/2fwEGzIpZzYE5IhGBBIRAgAGBQJCNCwxAAoJEFMx5x175C/jTPMAoKFG -qbOkCtxD3edRmA3PzE+dg39xAKCCgjpb4Y0PXk8Xu9tvaDPZcul93ohGBBMRAgAG -BQJAC07iAAoJEBhZ0B9ne6HsIlIAn0adP67A4L45/4m8xExRv4Uc6twdAJ9PTE4G -X3XennlL+6cVXB961V1NL4kCHAQQAQIABgUCQX8prQAKCRCq4+bOZqFEaGUHEACf -4Om9MDBS9SilmZ22Ssa8WtrUzUL1yOuO3+n/XhvJ5lGjUwi0oW4EcMJFCKZI7DOX -aN7zlD5akd9N0ZNg8W23xz29nnp6/upeQRQ7ckqDL/+o8DgjwCyQVH+ZzDrBDsip -PqtVTcogBx07CioJSX1jy7CVnsaZVH111hgghSsLM3S9KrlmwQ8zzN56FbwmDyoG -Qi3oyH9Xh+1YeCxUM4hS6Gk1wCAFCYx7Y53dDALB0MvsFMSWDflJLhae652rSot3 -jjFzH4FOdKk2/1uSVOKS8YQtLBu/Vf83q/gacdxtkyj7zdUYtSg4OHuR9JVfF+Yx -g9v+U5PkqVSymLEv523nEoq1LMPtWhPNb5Om/T/5H2N/x+z1jSxTCZajRoMchG0R -9k9GtcGZQqfUrdC0lztB+03KzZRJvPRUV0m2Ia0fNPUvUlTcLCdk3/brYuxEC13h -A9qh8dIwWrX60aHanrqmeH2RSEqbnBMn1g9NRvFkV9QbGofCezKAvvRq7vZ1vFC4 -5/X3NqqHm45ISN6MitDJhJOnD+ZoARVAnFpC6pdpAg1+Ld7v1PtEj7rRAVzGOVZr -U55f3gBIx9Ezdeh6+7HfCFSv1sKkGcYlVvriCswpUrJn5sqaFYYZvjxin1D2kwvT -aG/4sOQOooHBU+JpdGecir2Jme+ET41NZ7/Q+OuPGIkAlQMFEEQbRB44IttHzDdP -LQEBlmYEANBwFJxl7HWGdKLSg3PD9rd/UuPsA2iS4EcMk9h1Mz8lm1WwmE9s4mvx -0DmNtfSHwV/GF3TwfrkvofoqXxU+b0CkNIaHPkCKP+FzFTT1dC5ZBrGBqLi6Izu2 -wDmenjGMCosR9Xv/ss8CQ4L2XF2uCGyVEmel58UHx/StYvjEeL4MiQCVAwUQRBtE -RSGD4bE5bweJAQEAywP6A0jdCALabHlRXk2mgfdqBKEWn1H8waZLgRjebwzn0lnK -3a2pSYZOqaDg9x4TNrHi+FZ0RZJC1u+q/nBfQw9Fqr4tavnHXuEagTJhTpzBREIc -fNEW0vhziJPpd1Cab8ErZKICCEiVu/CFG08M+benCSEAfJN9ZS1ER/mZMvqyY/OJ -AJUDBRBEG0RRyNXtKZX2F3EBAb47A/9WlKsdMPQuTcekXtiyImUxMIw4isRkEw/o -Hq7Xo/TiCfa+7CyvfZ26VXa+hdh+GTtUfQeb1QP8Q/S42qfuz5t+geT06phBy1lK -lIf7zdeptHkEfqzQ1p4/PVul9YChMAzH+qZH6RN6jh0w/aSj28fhw67rHch62fAb -Xnn0lXBdcokAlQMFEEQbRGdwoCRNHvmSUQEB9CUEALuAxKlHjjo0Cd0Wv+VnhDr5 -+fmR9vNgpvgt3t4qHNcgTVGZza6e+T7gk8daWDP/HhHNa5he7EpNeVK+yu3SCyiI -Y9p+e+JSx2FnOLqqddG86l3cexFahlNuxfyCnC/2c3yGsLFIKtb3vZClwvyUzfGQ -rTqPF6sqL4TU7uv0UplNiQCVAwUQRBtEdx57s8ivlZYlAQH0YQQAlsgJ6wcI37au -F5hG5wHYhxGSv4YNIRWAgYNFIDnk90AsG7XPcuhgyuKVfcAn6jEdVjRLhogpxo+I -PNOeIV3kiS9LFfLgWGrx7arnrmMPOP/0l32VCum5n06CM2G7D+o7uTAU8qul1nNN -gpExpdV7qPrw9k01j5rod5PjZlG8zV0= -=SR28 +b3JnPokCNwQTAQIAIQUCVtmslAIbAwYLCQgHAwIGFQgCCQoLAxYCAQIeAQIXgAAK +CRA9Z8unyijlpL1XD/4yKdr8unh/OJ5ks0BcjUpJBNkYbdYt+B4hb1lqgaM+kqSD +HRt0tgcsa+m6Kcwl8TVZY1NlJRl/L/V6xP9bN/hw3e6eijx4m1dC5DSZP0/GZ4L4 +u4pa349wj8jp33lMXQacrOgNcRPNfIrxww4bxOqlPwDbkfbn4HJVsdDvW8fZbsEM +T+S8UnIOScwMov1zY+q/VO0kcFfCjTu9w3zrnOyz9vKkMj2QBbAm+kawW7fyt9vt +kxwmLIx3XHczyFAiAqppvbqJV2AqTRdVy7rX79xkHUylnuAbZ+/6lBMc8kbQWdx/ +loQA2xFfbQxGRWKeOH/FpcpfcocD3PZbJ1/D5Bef5WegVXti6zHwHWZFhFRB1851 +ReM7RJiEJo76PpOc+aR6RKhYdfMtML/7dsnR51HWWuIfZbXbf836/SXHp3/MUOuC +1qyBeDweOXRbBCHGhvwad47NBj3QwK+1IFMFlDwLgCtJZhkqCSy3v/UhnK/cV6u5 +npsLDJaQixU0kH5x1PbxoAsupeEo8VEUxlONOIMgrBwiaHIbwkL8/i02fHkA/hbQ +AteZZ5vKi8Fapq60izQCvusybEA2Rx+Y7GMntXhjGthzTHL+E+A2KEq4lDrwmYzY +jKVn5kJY9Wct9YQ8g8ytj3tPX9d8strSejrg6wBvPMNQXD9Hg+DXRd2nyog36IkB +HAQQAQIABgUCVtmsuwAKCRAQkK8gpapb5saZCAC8ltCRFRCD/Bhva3y1WkYLFXeu +zfG+L43rVEFfW+fQFCeiulK3y3hKijMARi6OjDhdZBK7cavstZec2CnOKmJRuprr +Z9FwC9uUG9LfGEkpgwA6FMlje82C9B/wssVZiLNGuMGBg2BVaQKglw7loahMYdLO +7DBtOEz2bPcC5v/tO80s2mtzrTOWW5WbUmIB8m/888W+/T3jUeP3v1FtAhk28urO +fHUcbifEbvdLblWeYiTi/PMEjVWvcWfiQepy3mA+G6veH02BFTMozzlcisHdJNwn +Uqi8xcU0fIU2j5gDvPJ5IgppEEfwfWg0qqglPRPCpz++dn+LFoXV0N4pWdn8iQEc +BBABAgAGBQJW2a0lAAoJEG1M0ZQp+wPewsMH/1PXIE+F4DYq11ohmwPG+g8MFkL2 +y7rBGvsTdm7Y0JgWqo2BJ8sOpBhDduDJdlQRk/D5CWOxiPA7qGLmtBntpw3U1Wp1 +A9DtcpR0AVlUwuSer5k+uGIxJzmu8w29MMpFtqBLjx3kH12MOAqTrC6YgxXsQEYD +yluFMRcp7KfrWoEU9AAfpuT4wk8P3U+8m7QGqNpfTeNFgHmUd0dDzT6+zZYdFzmn +BxXgp+W5SgX68OA4QXk30fGt8/btHQF0/qM76xCLXvOvV2WvLgwh2k0gNVHdl9BR +4Gos8SwOHKQZY9JtEAPu7vo66RGQ+jeNRYIDW+wVMHXLo0R1TkOg/r2Na+GInAQQ +AQIABgUCVtmtYQAKCRDAKcpAFvTM6XVIA/4iLoL7GDztXgFzSzMC9dlrFGjxtnAo +6N1ZsPE9U/JN9KjS7T7/8w1u6cmewLoDPNN9WDqaQ62P010DKe/VfmhoMDumH4Tj +ngOH19+RBmD/f1Xb0NgbWbRbF4hYFXqGmyUoRUDl1MWyOa+KSMC4lKdr7HQXQF/0 +8EY9yfJLx6xymYicBBABAgAGBQJW2nCwAAoJEMGcHSUS00YdyXgD/jjlvEBq3wDP +KT97+xy2RoTU6lNyrlkD+9Zu6PE5QSt8tbXpQ13nCWS5quegk0fJg/X9W+hpt8DR +8WQ2F3LiBXZGR73hkRx0f+MQArx+O+J6cSjw6rUwELld8EF2Vi7bOuMgE33BVleT +pvaCzB9yQd3+nKbgDb+ZynHZce7bJow5iJwEEAECAAYFAlbacNsACgkQ71iWZNQy +4Z32JgQAqVRJVb3Y69KcQ+d9zEkTmTZutsntqP5lbCJgdW13FG4mXoyqT9ncmSck +XuJMhWoaZOfdIrZw7STLSzKmAfFeQdMiSWo/KZxV++YezamNGPeqjyfGqNn6wxSp +qutJ1b3L3OG9i0+yuv04YhKX8mdNF1GnD7lrPYHONnp8oZawFISInAQQAQIABgUC +Vtpw4AAKCRBvUpPYo5umVRI5A/4vboBeKv1+JZNOWp1uP/JRBoC+ccdVAJW3hmAX +aBHhI252KQRJ5j+WeZZGHOOVHJ4JEJS7m5GNsPBtXaSCy0N/y2Qxobwp9DZxTA50 +yVnsEVGOh2DaPRr6oJx4NC/65TGyExRNKCM+RMhGCf+x34nujoq3GI2bQf3Cy21t +GDS30IicBBABAgAGBQJW2nDkAAoJEJwcveLjXFY1KSgD/iitVYxY9kxbIyiiEoDJ +rjwtsRXYIHOHdUMXC1tiodzIuPfscyO/sSnYXgoxh8iz/9RJiyTIGSoePnd+rmw5 +fef7EKWRPJJ00qCnJrg8q3PVctQiYeH5/AZrVGSJrIbdyMoQelj0igNhPic7iQQe +Ihns14avXv8bCwHvMxYmgtw2iJwEEAECAAYFAlbacOkACgkQOCLbR8w3Ty3+PQP+ +Kjuma4zB4nvwm5VxD3XQsJQEHF62W3pByUzSsOAJ5WXMbhVD+zV3P6ps/SbjZGlG +74Rx21nTNbeSIZig9XlfBjl2RmGTXDItE6mNpOzPysJeDUERjKvYYBacskBwsiRb +sNZ6pKPkoPUt5ALn2CJ+wZryWd6IdLW1tYBuPHr6uJGInAQQAQIABgUCVtpw7QAK +CRCJaWK4Z4wKAz/OA/wNuEw1FLrCc5O57ohRuHIYMK5HI4Cw1XQO2zWz4M4Gn4Pv +5ghJ9j3a5j5QiPbLSmKt3aWprPkIoGdKfiSMDlrW1Qtgj9J9Y6cf13Ja7NqGdNMM +sHTPNEiKH2r9hkdg5aVyCai1J+Obi0ocF7wcxNHOXxBD2dvBn4wffCXeB6awGIic +BBABAgAGBQJW2nD3AAoJECGD4bE5bweJnrQD/0OV/d3ykAAADy4fC6zyVFcbaaB5 +CmFO/rQUjMP96+0QVq6DT9q3Tv0TE3+0JyqdDS1RGM/mEGpijuoQO6upNnVlOudq +kugJstOb5RNLq8GVJKMt/EXa09eRImdzQq4tagVSV8wIHsvQTItnmFjIK1dWqEJ7 +4Wr8Wpn+J7Y69So5iJwEEAECAAYFAlbacSYACgkQyNXtKZX2F3HzUQP+OBNaNNwW +Z9iYqZ2j1beVn6R3F98qDZ1G8QA94FXMW24P7jid+N47DMH4R89t8yyvmcb9QweS +jD4oaLRMOxjdzXEDnO8FcPQGtubtN9/54qPTNjSUYztLYVNCYcqlpqHP9WUUJN6G +GT0aHBTaXTs4BggeYbnoexXmGfaUWPt9W2GInAQQAQIABgUCVtpxMQAKCRBwoCRN +HvmSUe0PA/4m0COSkS89udfYSyhN7flXgtOB3fKraw219+dOUmBCxIRl8qInqWUM ++216u2q0NCh3MFBMRmk/FrCa59yBoP/ftibjAwKDm3TCUUre++kVwNPPCONPsaMZ +zgP4Hu0U7pjrCyI8zRffN5obQr6v7xDyGwy5bpGH4UD216u+/UiDe4icBBABAgAG +BQJW2nE1AAoJEB57s8ivlZYlpesD/i3Xoj2yR3UemnaYpYWEiKvHGzUKiVqyjz7x +BVhDMDFJxFlJeQjxnzWcsdS15W79hl96kVHCHsHqnC0oGT/OdaXpUnvQIm2Ot/+f +rU2AzXBm97VpdwAohxHIOzFFY9JUyZnzLV8ejoYngaQA764fpRgNSjVm1jIAxUse +4cc4Na1qiJwEEAECAAYFAlbacT0ACgkQl0MBGHCTuEEn+AQA6H5I99ajHAMTMxfb +JRZ5wxsCn1KvHo2S82UUDCC/Cwzpn6cT0b5ClTbz27EsLHouXsOqNUpJleLN/UZY +vyiNc2skejTH2RUNrBhhbnrlpjfKsjldEbpRbfAeMlen+8mwiZKptjF2Wh2S+IvC +8UUCNYBsLdcL99ft3GCxLBm0VsCInAQQAQIABgUCVtpxQQAKCRDYqvDK9rMHKZgo +A/0eTw15SzWVMX8G/XJ87q+2GBaGHu1mGkv/CYbhFu+oqDLuLfVIH/QonHkIW+ql +IPVnJt1f3sG2BBAo/bC/DhTTM5GsbLSDyZ0vf3Qn1JWYR9958+U7As5jRTZjLfxe +rY4FW8is0xHwEHXz9/9i69h7Iz+CLZKTXmqNebkrHfedW4icBBABAgAGBQJW2nFG +AAoJEBKJbpunfyQppAIEAJh9zjV/9qbsEAbJ/ecXY+rshTKe6Ed1LpQ24/b6N0Z3 +LuR3n5n4+qyXsojXLY/DpJaHQeIf0WHaUHhJn/lqtPhfg7NpGnjbJIqhTlvsEpy+ +pmIqo1OnB6Nkv6C+JRXfW6VLJzxAvCtoHwacPtetOWtY+VF1o0KIezvEMC2bZy7g +iQEcBBABAgAGBQJW2nFLAAoJEGBN+/KFQQq+4M8IAJwzU6zpwIK/lk6ZuOSyBewU +Y9dAEh6M8/vD1tFZ+o+vRagHjraHhw/rWLx+5f80hn84ymoD13YOONCjosO+w7JP +PH5N/ehokBy3hb6A2jCzsZR1sMIwqeYvoG8+UOzBjqZ5CnUSYRRg0uPddS5S8Lyh +vDBnKWGF8DfUUfKGF1YN/yoIB/E7QH+lRTWSnOaWdF1/h+/qV/e5V4nykzibcRGj +VBa/H1qkmqk7DX+di66Dz4MtsCYOqIzmuz9wOYK8oDaH6qt0G+CigTo9Hs0CLt87 +ezq15CvnVhdVNpE6gt1Ye7tERO2EK1zNGvJXUETyQ2BSrqoybttFmxFM51X/fBuJ +ARwEEAECAAYFAlbacU8ACgkQOaTHfal4hLBVHgf/djm9OmqzZC/LEmv5agNglqc1 +SCTjLvd/3hCxDeM5IGLdLQwDi3aIzZjW+aU0dCMgR3S9d7/MJcPsA47oYtqYRG4+ +V9xOCqCWvcJ8gC+Ra+h5PN+ESy4Qqo771fNThV4C5QMQ6t8I+JPiepI+H4U19zxb +SjdoLkoswDfxcEF+PpoQcW1R2PxWvES6kQixmfIV27QZKeKXK2KJWK6sbLLn4m8Y +SzKnCaIkISQhTgGlCkUivaSwSaUYo9epjRUPT8Xivcu1IuoV3f23qkx6NBCEdnpe +WpZHmYG9v8XKdxSU3CHUBSVmWbUtIoo9kh6ArKyhuVVopayRmrByfQUdO1TblokB +HAQQAQIABgUCVtpxUwAKCRCOWun7zu70O7zLB/96No2LT9tXlknLRth3Fg0MPLud +SX4dnJJA8tA/c1Giu7O/PQS8NT07KoBerqCt355WA6ABdlnOX3lgKo/qm0EyeHU/ +17sJdUKWWEdaF7JcOdCSQCm7bzfIi4I7u3IrMAqvkiphFflaukVS8euBKMq7ljxi +74wI/7tK85UtiuBK9p02Zrnkkln+VgQ5oLMiyHVyevpMY/YQSGT3ARwdJW7Povwt +JxVCPZHDHumUqiTeFisLl6/WHyGPyzK0Zi83JRfPkr756iRfskTiCP7wN1L/T8lQ +nJeugKG+XAwaxhh6T14j4TrA2E9A9reb+6636LLLdsS3jKG/wWyl6w9FgZcUiQEc +BBABAgAGBQJW2nFYAAoJED1osl1SB8rTBawIALifXmm7e9kjDsuy1RCCZVRbv/7j ++0vOsw96gqbM0fuQV1qnt6uLppJgbFgXFJOKchoXRBYBFuZ6tcsU4IZ3itW0WYgh +7Iv02LlWExFNlNFJpNOnRfK3k9md1jZIFwnLFIUMymmlHYAIuKX4zrD6XhWxX45i +AmuWyORw+cyEiHjbY3hGFa9XMeM8ckvvlW9h65hcizNfnldrHUWz6s6sYTTQO4U7 +wBz1tMTL/1LNBxkQV/FYj9OorNQGrdPYOD+FmOm0K6dPQsMmK2QVsPk8rhohUnWI +TAiPr+i49HZarHnX041wOeBB3rhSJ77A47jdgYnR/X1Fp94m5fq+N2wxWjmJARwE +EAECAAYFAlbacV0ACgkQYd4R7OJ2OnPJfwgAt+xz05qqQksAhVtl4vCcDM3smP2N +3iCoPJvI4hpYdfiPgA/UGe8cHTnQqCbfgZA9BPtGEMkK5Tk09p9ale9EK643VgD0 +ekI34YB7rje3QVhKudrhMeGO5WoSlrXOG6W6/8jucpHcYtjcSjgdB0pcBpA5IHRI +7k4ntkkvWlXOllCioxPwscHKrkPWSDI83xXdnShmYnzwcOBQhHXiICyLo+zYU+bh +FpwqcnItAKz2aI/hKSz8YWey5AGF9RH1Uwf7leGqVlD57f4BOkrhq27YgJzXri4W +jfBkEXluWU2RhiknxL3K86WLeUvTeUgB2gZPGHMyFILD4YsSY+ZUIPqN7IkBHAQQ +AQIABgUCVtpxYgAKCRCq9bXeBb3MU8QcCACquxGrkyuB9XRnlnMFhkZimaj9IU/o +RGADeRU4TMxtZooXA9VQvU1o7Kdz5s+v+TKyFAyLoLbOs/SEb1rb8X1k1R1DiVzX ++EkKONk5sMSMiBE+/5vsQPMuR7bUxPYd4cpIM8sYUyiWGif3KFd6bnNS/hnh9ziE +trgj9P9wjeztTQcPbCARZocMGOcnSsRZJPTWOuUiUdNykkDxBuyeXA7V45H1ozzF +Qe7WYb+zmvm0bbPme7R+IFABaJoQYEUAYnDWkfRg12La+tpRTK0LA0rQ3DHQuQZ9 +CdBvTowO5QyA7TpKanJPFauMVaO8qrPJspw7NLpvWo9JyI55eNFZSYLUiEYEEBEC +AAYFAlbacd4ACgkQGPUDgCTCeAJZNwCeLZStzZQKk4BB2L2MyxwhEy3ivdgAn2yt +89G259NL0HO4UDdEjQmeRdYPiJwEEAECAAYFAlbaceUACgkQvdqP1j/qff1+7QP7 +BPaV9C2Jjsmd1epuxRE8wDKOUbgCOP0Wnz/RQcGtmLpE+b6gDyAkO04yJc5sgTOG +vPwJIInvfmp9IeHSz3dpiTweUgwy40U8LJNm4rvI+LPaR6FTYtvgrtEn83jiXPvO +n3p3NUF2AUgdpfW9jpQwlcU8kqO7U5FhNn0SwDbB+wKInAQQAQIABgUCVtpx7QAK +CRB8S2dtoA4VY35sBACaR78j7jxTq/Y+wPNzmgGiY7Re97Ik2fJnUnldplVC1Kqe +IRD1g1JX7f83/WbBmsYswTUEkP24mmWTIyyBZzZdMgcV/zC6OPn2myCPY4jt9HHA +eYDgDCjy8JBlxDgb/zS6uT0IKPbO19hsO3nEsXX4ezTR5vGg6BsoUhOlFInnCIic +BBABAgAGBQJW2nH0AAoJENbgof5PvirdcY8D/AlG/9+DrudG7GwRFmMLnpFqPJ0O +vWFNVZtNvGVmsyi6yspY9nvKLyZiTkB80uOadljvcvAle7el9wTNtFgw0H7MKixO +j7whiyX6c+I0qse2R8r65i458kuikNfVL3IRz+3LWNg1N4nevwrbIIT0GEZ7uz5L +LLHKAK2UFD9XprgviEYEEBECAAYFAlbacf0ACgkQIfnFvPdqm/Xv9ACggz/E2KGa +Wjs1eFGMHsDeixJV/icAnR518j9qLfnTXG81oDSg+LVi3qjIiQEcBBABAgAGBQJW +2nIFAAoJEGKe+O4Mi4Mz6X8H/38qfHEQrWr1WaEoiZTsIq4qHqXHt5oK2fUt15mQ +jDIutggOgSlG2sPAEmiKxl2Z+adGvCr/1p9xpFlMWIXql/aJXTQpgRwru8J33eLC +B9Nofnkwvcr5FyUxKgvDE/mSeT/zlxDaBtTCx46SEizSNqR7y2oWb/HoYTu+1gcF +8wRmKxF+UQLiNY62r5VHggBLdHz6ZLJw5Fuq2X/XNsto0b6XYF3TcL14WyWaIB/9 +gNVMvkFgNeTyfSrICnzcZLQwkCfPct4r9ekD4Sr7RLbnOnsjMnfsWbACgEV8wVsQ +awMlDwWWxFMIWBiOo2Qw1Eqw+JFVq+UqVI0rRbXBBgqVshWJARwEEAECAAYFAlba +cgsACgkQvSdtLm/PqIUMaAf/X8KWAvlfo81h3dkGsVLEGgs/SdhlrcMrkChcfMpF +HhGaydcQG4VQy754GnclQGqbHkazFN2zB6/GtfJ0tqTG8UZNTYfsXjvOCOaCvHCr +D8K6W6uL+PyFazvg4BpwZeHuOTUepHKVW+/YCkV5YA90w8VkK7TJYTQUOoqjY5rN +ddE+UHA7669L2ApqvDFaKrRXIl0XARk7cVbmP+Rmd9lT3hAKAYLGqAoTBc9Ih27N +erJG6YSRovEaYMyH6waYGu/sQokRcSs7tmW8NLXd9MKe7zqE1sn9s8+/3sQ7XVmn +bk1IZKQRBvn+fah8x8lFNTFKtGbG771f7r6A1DiSwaZE7bkCDQRW2ayUARAAp3na +YPI1BOJ2yNCgDwtcaTFKo6i+JEexl3YexJKO/gbvfITZpDNknOGYv1bbmPscHY8B +dv+U0YOYwOYOpuGMnOFk4enHrayXYWEac6NxKHNwiw+1mktvpEyrXN6JsI9ys7zE +0TA5t+7NpChIJ3uWX753P/wXuEcwiH1G7fnC1OarWMo98pRlXVUWSpQE8RXIxmCt +IYisBBCfMIVcGBRd7wT/yMU9ADZBeXWX5wHxuN7R7BauDND08Vs2AxZ5bJpzKrr7 +PjpGUfB0LPcsZ0l02k/6nBnSymsybenYgRIpcP2WxLuY4P8ZfkPQy/ZH7XCcObXl +yIBTBwEm2JTpfsV9pOdM9J9R41VAzq8Ljm6lMMv0i/sXT4f4v01bT40iuNa64mOC +r0LJHghpF8q/CY0xwwoOSsRdDLOYUpQNdA4colxN5aSE37Wi4dSU46Sdp6WNJECn +2HOdeJJJCBLVAPCgKXCHf54HqiZI2sh3sYCCQUk3GKKAJQCCKqP0uxtw9wdq4VNO +DQaLQADR7uxZMnKT6M41XEvPwuvXFRyUj5VSCyUzNryMAkYyxScWncFzhxMzSWh4 +qlU1litNkho3xQFFpa4zNI1S4dSfzv7Sv5QcslUTuWGz+d5Ixl5/XajHceV4d7sy +DlvQIXfVUzPfz73Kib/jhzrUGPFNF+BZ4Qe6IMMAEQEAAYkCHwQYAQIACQUCVtms +lAIbDAAKCRA9Z8unyijlpH82EAC9jEAIX4MkulcI1EqZrh7K3TMHCCl9UE3YbbGl +i+X97gI2yNQjQSL3FRMZAcqLqNq3I1PCXuSg5T7gITMNh1DpO3JjZ3TBLvw3tdCy +/0sUtzcRkxmAN5afpRUUcxi6OA7s8Y9MPuWNnDtcG0CGEG7WX/bVXowue15SUXRv +TShSVoalOxyra2/1QKp3fqYPRwfPP5cjEkZT19riWS0gH+k8GxKaYt6fhs2JuxiZ +aOZTeSWr0wuFIemygi8jqBhOdsb8ialYeoWrbw2zOimeaIm/rLgT901nE6xF2zl9 +jVhMNPb7EmFOOIX65k0FerlDO6aiufxKfLNAfAp+AeM5jv1b6T1jFBOltkT/0dQ5 +NNSb4loz7zo3fRvZDyUowS/F5Zrdt6rsX0FcGJiPcpaPlC9W7kRw60jonMhhh8mR +46GMO7kt3u9mMHVeSUd5HRQjFakeVwQwgiwCX/np8iI3t33oA21WUO9TzY6rKgJf +znX+MOLRilfFaqSN/B1ZZqJX3S7wSkXdO77KSShZTFJVoY2XvyqLTaPVgTM7A/By +KOlzghRF65ViVJnDZUQfQBxe+qYCplAYzcmxknQFeNBeaHbuV9fZ39sKX5I99arg +mk6wxhyuojEHuR7it6IU5BP8vaAGrL1jb1c2EeAe+pdJwpAb1Aq6MU6uWqOGup8t +9T92qg== +=xY3m +-----END PGP PUBLIC KEY BLOCK----- + + +pub rsa4096/0xD583210EF51471A7 2020-04-08 [SC] + Key fingerprint = ADFD B709 FE1E A682 E585 5971 D583 210E F514 71A7 +uid [ full ] Sendmail Signing Key/2020 +sub rsa4096/0x5C092A1B257B1C27 2020-04-08 [E] + +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBF6OACMBEACZTPTPsjrVvigeypzCc2FkC1vuAgD0IcGckcjFL6w8r9O9eG8C +Y1ZGKF476MAY1EgXvCrUbDG7LPIi2y2SGStE8iZqhVBy188C5a7LPDjX6guHxL9m ++OX7TafOqS43BbXuG1fvWGdhnEY7ZdC/SFUR1mWwFz+pHYC2bTdUm+KGyqBdT163 +cSPycWOixVdxGg7CPJLSvaqJ9Ft5u/LalvLyf1m9vT8zLAn7YlkATvg/wuzzB0LW +zCV65FDuda4kkJwelhT9kBbEkoyqLU4Y4J36X51vXGHFL3Uc3ck6FiLt1qw/Hs8h +SfwSf9vgBSNhi45rYe6sfBTJN9PZ7l+tPZ20hU0N0+q3QodlbXPy23WdeT4cvp2E +vAl6jUMp1rypEmgr2i+CMMt6g4itxbmk08SXC61XEPZqeV3qd+hqRSN9bicErJpE +IZysXdO8SXw0NhomdwWncY6BWPY6GYbIhaCRyPEz2i6neUUZZb+qZNKH8KJwij1j +jre2+TTTIWSUCSVXh5YuKR4Hr+faKU5+LXiC3K5GrmAIxFA1RHXvq68Nt3P4jFKI +Bu+T19xC/R8Lqtc271BDlQxQW8uwhESZgp/56Sf5XTNyWSoEK1QoVChkn4vO7m+3 +Igyn8HUVHOXmNpYKXeXtbP6Y2ISAf5YHkdFtdstj0kg0GWCPlFupyD4diwARAQAB +tDFTZW5kbWFpbCBTaWduaW5nIEtleS8yMDIwIDxzZW5kbWFpbEBTZW5kbWFpbC5P +Ukc+iQJVBBMBCgA/FiEErf23Cf4epoLlhVlx1YMhDvUUcacFAl6OACMCGwMLCwkN +CAoMBwsEAwIGFQoJCAsDBRYCAwEAAh4BAheAAAoJENWDIQ71FHGnRssP/i0mBf7u +Kn6ap7KOmJ/nwmhfd4enqGPITxPxVnwmnpffVv/XA7OuAHkCPql8jD7z0FPZkTEp +Wgevj/mWX2imjEIS4sioQScA4Koqc8YczUoDTeg6D4KcZj9Px/t8OZ8ubCSU8n7+ +gZC3qY7bOnQca2Sdo7EIHn7xI4EgllSUzPkeZW9PTL8xLPGOjH6w4U4Xaabve/Ls +R7RQW5lbsTboWJBis8n+we5TMgxTAIUavXVT7nlRO7F6YQuqZ8vLB1bHj+OLEaVl +3iakFt00X84Ee/F7XD7a2YWYEBfvwp42sFC16ghdgPQN3E0keJZqKwnBiOa4sv0z +3eiSJa3S+mgQXQ8syVg+IQFRgPq5z8RLyHdyTmdRcPHSxNX+uJIMP4+QgnrcH2Z4 +OiOEHoZKITOudIWNXmEZWNU/TQMzlYvQWMf9BRMQM7He1JCAPf20wzvNt0JuYdll +wPbhFAdWps/ieHsQ+ApLMrEOoldfbZQKGSEgMCJkiSCb5hnc/z+X3zBjIi4H6lyU +eFLX3a1gVg9j+uHpORn7y5q7Uw3HXkS/a6PExJOu5sfffdbfNzkAIQN4LcCTPwf7 +bH25aKnmIeXY2w0cxmuS5t/uT7hYaIZgGyg0nGGQ5TCJ/Zicop+7W4lcvyiKqvmd +83SmETuY/S05ZqShQaeumdjn0CCBjGA8XYXoiQEzBBABCgAdFiEEsICXn00EPhnQ +WjacYp747gyLgzMFAl6OAZEACgkQYp747gyLgzP4SwgAm9fa+gc9glqkijfd1tT/ +g5rXFU0jIr5vtqFZg+4MUQ3Gl8VUzduUQjAkO2oF9A4qS5XW7zaOQW8EMC/ioFsM +aNHQMsWApGUwGdxnUL8psUROqJ6ry+vHkO5aiy0ovdvKMYr/G1N2jzf/5C/V3C/Q +Yr6NMdAAdiFbe1eg/I2cCBifVN4jcg/rqIMD3j5Tej46WZ6Yh7mUeMbRSiacoyAw +io7G+QOBF1MdnNpDX5d84g4LG3KX9fKErUaDlLvulnR13RvtIgePgyqBb3qAiwmz +0/N4wFn2SyF9i/y8SfKZmNe9PKz5icxKaVH7sZoREc7BKYrEE8NDO4a1jGwH32HD +gokBMwQQAQoAHRYhBK0g4aqLQTZwpkJS2L0nbS5vz6iFBQJejgGuAAoJEL0nbS5v +z6iF/5QH/3hzctN4ADtQL4pQOLB6Fjfwk7kJJMJyMS1KsOQaVjfviB+v02dJ/3jY +G8P/PGuGQhNTdOo5Sd1riMAs9qBrYTH1LAzbGJYKT7aU0ceqCq0BZA71YRY7GWv2 +8TuG6LLjcZZUXjj5a+4p66lHgvq+FK+moONqA445UxVqBgsUnbBxbmWQEiiIGZYw +upSB3yAmKrMsXk8Hgqz+1yg0TtVuhfETB5L2dMlA/ZfO1WIzTQaU3TGbb8Q5m1dx +kD19iD1oW5BkmKZHo5yzYHPP9h3kMynVgJjRMfW+u2tv8GnJMXxHkacbpgcsySiq +fpK4Kb4H+fIdOViwufEBbdum+LO2DlSJATMEEAEKAB0WIQSxdZZEUwNdzt176Rlg +TfvyhUEKvgUCXo4BtwAKCRBgTfvyhUEKvgO3B/0UqQwduX0jD00L3q6k5hYpjuir ++llK9XwBrfBehpYAwocLX9rjeBthVvB+epNBsacU8CmMbLgmvq7+ZG5Jh+wNhHx5 +iXK6rZvTjm0/CxdbqpqsvpKkNdNsj6m22c/zUu0eWxPUAomfSxfX0FgxNg8NjOZx +RH+gi5FgItQY+hgLVHaSEQOqmm6Lk7qnt1KdhI42uCFxaBjAhB/nvv7lCeqDJltL +Q8yHCtEKTt1Z99KvldJicAAcXtC4KmBQog6szmw8DdZcV+mzXNyvGMXxsssAaSOj +QDjdXmCiGXnnxMWdmc0zjUdQJWWIgO6erwu5OCX0F2NuRE5tgIMSejNUAuYBiQEz +BBABCgAdFiEEWHJiGKkTQA3mYDYBOaTHfal4hLAFAl6OAc4ACgkQOaTHfal4hLBj +Zwf+JJ9rZ6YbR30sRSb8whxcXWDd0OhaBD675/y6BinZxPv7i8sxb996Pdz4wx9U +f0WyBU/1NMsror11cdkoaIb66MHkicgTYpagdAnRxGYStoY7mGCqiVW6HZ4th8CD +38PX7w8x4ct+9FnTTfdK01N566YrHKLiPoBLpPmeqVItzLRrHf6Rj283dYagxMfO +hH7JAK544nNxRja99VrRYglozUNYPDE7OPiTyiG/7wXTDfPC2Y+oWyAxQGmA/vtR +EApIhrKxV2YQq4YWm2X370y6FjjH32AhjixFChDmPA1ilLTZOjP+K6yTSmQ5JVTU +lnbh41oyZeanMiZox063hyHa54kBMwQQAQoAHRYhBMp6jzmiQZ//sKmrJ45a6fvO +7vQ7BQJejgHTAAoJEI5a6fvO7vQ7a4MH/34wrS091ePEsnmHR0bcUfuWY0fq7zko +7wj2NIQLScha8mvgGCPDNR4GfGi97+Lqp/euuSIr30WVSrdMIH6ZNlFItnypdu+R +8DrY4CjgaIc19h5HQlf8V0aL52NNlJ0dwSwMSKgDDUvmZCBnfIdrF0umUc8uMRxr +bAHAq6TUaGOxbqF00God8q+TL0Rdb4xF+5UV2LERfNjJ796NSx2nIH9MzBRcrQrt +PPsRE59m24yeLfMXC0G+pRVA6IsxVd7jX5shPhvXbu9VNCpPWyuATXRdMgMH/I4k +qVVWV2UslgntrA/pPb8hlC9vm1Kila3yE8X6XdUv7KB7s6Rr7fiWqI+JATMEEAEK +AB0WIQS4fUVphvGUhAflzLQ9aLJdUgfK0wUCXo4B2AAKCRA9aLJdUgfK039wCACD +IgBkSGltFdWBgPmNeDUShaszPGeAplv8imjaJaHm0T3G671df28MTP+e2iZ63eqo +cIwTYIQNBEPNfWa5FL5JkHMdGsOuvEH1UxowPOWDe3AfJHlBPOCtmo6oLro4ddin +epLJMqOCLygDtM7vV2HAY8WqLC2206QhHeNE8bWryqTO2T/2IjrO28Pcbf5dFUPC +o0EmtzQLw5WKOwa0BINb63Af7zzJAbXKC9erGoCyFQu1YyRmsn69hC6x4eYccijf +Lzr7YfgJbWUJ76bJ7HhdKJccZUHhEln0u+onsQqKeHes143n34cBnq8nwLEWapIt +23X9grK9H5KCNBss9ua6iQEzBBABCgAdFiEESfaovoRzOUlRkW87Yd4R7OJ2OnMF +Al6OAd4ACgkQYd4R7OJ2OnNU/ggAuXwxh39YliN+AVi68JCkeYIuy+mrjBMK8lj5 +s5o9BY+KkiRMIlBcJq585iPJ3xYhPqqf+RbXWVJr4qiC7iFzD703x2GpRxJWssIQ +dilRWRixAOGASc6em+NkTDnKFuj27bsM5aUx80yo3FUhxqwHawj7vp+ysx7XynYP +lXZ1JdnD/uCM1YzMeZHGrQtO0L8aIDcqFx0+rz7KtIyUQ7kYdeZg9rjamfJdbBko +cf+C2jWX9gF0AlXSBvnQ3Y/r/2uYgCqT6mKU0Nt6liC/nN1+R+AfIY5KhBd86gPN +Qz8mCdLfOcO3EbKHWBl/1mLgNX/KcRrst4YnqdPvyaK56EPun4kBMwQQAQoAHRYh +BDC8p0cF+kFUVXMde6r1td4FvcxTBQJejgHjAAoJEKr1td4FvcxTPMQH/A90Bhrs +RdzhXXQ2cW3tqqWbwuphcFfIZr4kn2br9yNqt/vHjIHqvsrgiWMKQKJxX4/UoLyn +8EHeDScyrsVzLIKZDKAoGmLU376PzpDJdlzeFZOaRG3iTz6Des2THBHbKCp3g3z/ +ALx0yWkW8TJWzx8CV3nhym3HNC/567OR6dfWa0J0CtC71KqfE93HB31Ac/SjNUF7 +qQSn00RWZWfW+n6hDL7GDr34RewajTpZg7HwkflY29XFUs6FuOb0Kpd31WxNO0vX +yxsSzXH6rY/A4kvx+I4Y539rkfu9GdMXvefKUYBPKVMtn2a21LdsjM8RFm0kmusz +jDta0WzzJxlAIrWJATMEEAEKAB0WIQQPXJauyOaenI5ULlxtTNGUKfsD3gUCXo4B +6AAKCRBtTNGUKfsD3m7BB/9yn/GO7AvO+w8MCKmidVZZNLA5XPkwP5mQzkYwr9lM +7Z2vzdLthohr8jPkX2LatKFsmzzLZuaapm3oKXQa6bRm3xZbGBkTCR5HbZ5eh7lt +wrE5Ot6bzLTkQPdfMJVK0NERMVTSmpvZsrQPGSQlHg2CMH7D3xQh5Eoc+oQnMzPz +ZVQMBtlprjrWQRRzSsOUS+mql89xuLAByS2SV4tW9WeZlJJc8dVwdZhoJQ/4osvP +3p3ifA1pY5I9R4bV2gIgLKo9TtUWnGmPPnzqb1zeKVIdpbeqRkAwb6/boxroSNT4 +f49iqiPCNSOSuDB58PGcwJDdZKDSwimj5ATrWWYffMUuiQIzBBABCgAdFiEEPIoe +jn9Eyt4RT+1GS8m9pmv3Jq0FAl6OAe0ACgkQS8m9pmv3Jq2RqA//TkwYzF3J7RN8 +8tZMQu4staXlu5Xlo8FNVtqe2mRhmkXtVTFsrrpyohawAwg9Kc55FcNzdaOjzpCM +LNDo3huboh5VV2tUVJXhMj/Cs/KNWE3r5A87cGcDwMHhxYB5VAJANYmCNtManEvq +rwIVIJx7MXIt4hWRBcCWf3Z04nEZDlAUdzmr/yZkjYFwA7GFuvw8tJI7ehBz3Y6v +Rx0ms7OKlHKVQO9q9Qkw6kOrC79eY4dyEhXodi19Mg4Nq2D8ByhZMaxvujzvir2N +z9TjEPHC2X3yI9ts76jPRqQvPZ6IDDRX1xyc2FBuU4dOnEeDp/1BA63adlQXRISD +6Kv1PeobIY3eFzMWpyrZxwrCu4he9YdWWjZO/t0LkC2Y3CD1Pr/znCQwbsnQY/VZ +YJoVUYUPGxaa/VZYLJ26thJuL8fX80ZiTJTWlopIxY6r8DTok0sRsDP50+GVn7Q/ +GzEhpA9muAJLu9cPFTOFxHy6klOX0oZ7SCE2kN4ZXePBugS43agOdihInHhgfKwB +qXDZGDPNGWpqyzudgeYXC2qCooKf2Uln2CTiUa5eioPpl7KqKxwE5zl/byLa8fDy +I25Aye1AQClaUP/5Ei10mCXWalZZT+4kkWVaT0UEECiYrFFTAVBoxmpOvnuFXtey +Hzdc3jnb/M41WBUyNbLUUujbSqDknwmJAjMEEAEKAB0WIQSmhz0kpNbWKErkKnXw +YFn9XcfMPwUCXo4B8gAKCRDwYFn9XcfMPwQOEACrqEL1pv7oYV/UDvhqeuRlA94c +kMfrczDp3QXUjnVA74gLzsPDziWZmuFQ9Yl2+YV2CE1UlKMauJCvwFDM97AK8Qhd +AzGcYR+sfKZtKdvciU6aLQ9eMSTOmIdIc+RSGVOKTRGWYxeVI8ynh4D7HDfrijAf +MoLsEmvdgCm2/+jxoAKQw76TL4YsBWGLN/kGWTN1pQOPAUhin9np9edvq+qf5E5e +YV80pYlhAPfM45cTqtiNXQDK7QFBnKxocpqPBrFsfwHQBkSlpa7uwwaBk89qp3Hg +VBBj4g9bXAoDZcZ4YzLgutie8GPgJ9+S9j4ldQxh0KE2oV3VVuljPi5ucisfqWj2 +JEI2EwPpPNabRkRN02I/D5R4MW8Rg6JCyknAhPYS2sERS3w/DtOiFT6ynHN/K+PK +x1clvEz1ZeUSCS0SpXVxHZ/gq9ZUiCR/2Sq9O4P8W14V9BJgiFWZNFLP6CBDobwu +zsJoT2BYRbTu8hX2rhCnPTN7C9+1SXHYTbIRyPzCX164QWi86X7/FJIv9dqRb8t1 +pN5TUitQ26BcNMUNdB9Y6eCTRSYlq37LsWRTbUXPQ7IHZVb6BpsVX1BVF9vibmUp +5yg7dTW3QRgrqmUc/A5P2no/QUgtL+svzGs4eGjyirQQ9kXXVQ9iXTcaa7xtRNQE +NzE4pZOv8nWgDYRifokCMwQQAQoAHRYhBFCjAwmOot17y+4q2gngH6A8DFBOBQJe +jgH2AAoJEAngH6A8DFBOGGEP/jod+csxUQ4r8Va52Zd+G9iPm/L9i3ZcjgJwyDbp +6qCEPv2YqY1yQi/ING2HXjhcI0cMjz4bMG5gqYxEdbs6TNBqPqvhnkDiSIRedkjd +3iFHucN3IRezQsnn/NC8Tsh+Kc8xCFZIa9VXaBqcJiihRkCkJLTlvT036k8JAfXo +XDU9mjLlGsJpIs5Z6YNMlZQbO6mr1A0j6a6+p28aQd/64Znipf6nPKfLOcAnsVlp +JHP2nFj3PFsbigPmRAsV/6LM5aidV4wDv04SuPVrE6j+//8Zl6YWLtca9gHBMxEe +RJlfN1W8ULJNZ41MEaP7XGVAe4AEYZQD3ZWYYrC5w8TR0P6hpcOm6nJww2KwjYRV +DOB2oePwvThr9XIKvQZeruVvqi36ZzzUjN/ggl8r/4Fp6A4LB9m3IIczPwId36ya +tqC95jO+WAi59vcUozyF8+JHjDLBfHowvqQf8l7nFz2FVXTsVJisQh8A9vfWd41W +fGkBh9ZG0I0KqqigCqB5+YDii6Q8ort5n0jCg75+87slLNPqdigVDg+tsii1ZMXV +od3ezyi8nmQjyX8qV7jUz6tSY9ar5/3tt6G6qTtY22Xb/9i4aWcbfEZLEkixVAuf +kUdo2Q7jDtdTKaYvJ/7l0XtnyxVbhlCzqUZg393hC58kDyP0yOtQTz5YoeKlvEJa +6rTuiQIzBBABCgAdFiEEKWyU29AoAkW/05HXe1KWSO6FcmQFAl6OK5MACgkQe1KW +SO6FcmTM7w/+Iq2OrevekUO55SM5uGLKBNgHvopIV3NRP0syVWdJNJ0qcOINz9Qx +9ZD+G37QAt28a4Emwncg4jWQENx1xH+EUGX5ANlhnwt20AZwBICAcYsZMUZeBNkT +Qi//+c5BUNLR1CqErYnktgDdb9rqOXAD1tsVFAAoWyPVuJVK2ooZmcpxSDYwWEz+ +mRafgu4vFMbx03soyESLqK4svUuMdEVaoGlm6Jy/BUYt/kZW2FTpRNLdQ7M+fYJn +wp2gYKdrbA4pbIDn87Hr1bGkGkYMjS/9kPY1MzFG/lOVE4iIgrKJoKGaVgIpdZHc +vrkKgysj6ohJdUwWJJYyOJL6KB6lV1OZmhrdsWAa2jf3gkoY7bXUhagioWYxBsxN +zjQ3JsWXFeARut18Iqrwo05vqeofdz/yMAca3th76zfbPWBZQYhZEgPbHxOlzNp1 +VwnZcYMgQc2Dp+6ZaoFiEgQTItTw6pBrsyBecFHvqIGEhebw0MFubxueMs69jlSI +hHhWVRBT88ISdQP16A0JC9VF8Pi5p3Infh9+cD4yfks1eRJ9iRFV2WdI0QwogCve +Pcs+1Bk6un2ImLdV4JwhIBH/EXvKsj0jxREDxSP0GscykcbO2jP1F0hh7DPWb3+x +A6u11cAxIk0MvUwBasQSf0jugH5uf+72RGiQKI0nyqwgB6PbJa4/2YqJARwEEAEC +AAYFAl6O0EYACgkQEJCvIKWqW+Y0agf/UfGphCJvunLo54+Lgsx96jerdbamasCQ +D5//1WLccOgxHIakrtoBfr5l2IhyNoqsvydWH1ek4yIQ1K5i3zQAX5qWDRFgLFuN +FAwoLHR1sH7hwkeri7rya7GllnJ50MgflRMybgaCF7+t5xHvmu8UfLAFCZSNTDyn +gLKx+pR9oTCMpQJ63P+zxokmuRhgXi640XHKUuCdq6o2TMdXkb1JRY5fponWTFBK +jBMpbY0/5pAs8wMxgDYKBtIzh6t1GyUmqT6nk6m22QNFDJIPV9NKMS5LRpC7O7pD +VRnsnH1bhbkchfQSI2Hd6UIt5mnrFi5G/Mbu31z721uKX766wGBc5YkCMwQQAQgA +HRYhBP6PzR9csRnCENReoDEM9EqsvxFCBQJekmlzAAoJEDEM9EqsvxFCnssP+gPf +586RLbf/61+aUce31CD0JZW6hEc0s7MTcVGeXJJkPHEHLP4rP77ghLrIU2d2mkP1 +td+b2w6q7rDNzZiNZEHpL/cue87+iLIVOncZxxwska8oxLFiPcnK2ft95Sgo/p86 +lgFsuMCy9JtzPgk5Md2tOVZ+Mi3uSI0E9HfRdKdTRBfnVJfnF1PTNN0/lC2VA9mM +amaghgqyAnGI9dOcbJ6GNqyugEci8hMfjMoNZlciDcDA/88GEBUc1NQdbwYA0uli +CtKx07wvMoVzEBQP9PeBWC9/Uv+i2mY0sNPJFuxYjUrESDpsvopRhkgCEZRgztMg +XpOHgOMrzUg4GBCYAGsNR71B9DfltgX8mqSRCcRBuaGDKTN9sybr7QKCaHZde1Rh +3X/gbqqmB71IFOluKyKwtT+ezr598SuC4Xp8K8X7fH8Yx9vAsw9oFMwPTQqzWC9M +tKNjQRsZSIVoRNZ3JlcEzdM6IR5IOmuKhyV8Z+wp7Hcvd9DkSKyzgT4qiRU7aYHe +Z50RU/M6usrGpCgV9DFdFLJ9w+TDqtUbtrY6SjkSgpawbwvcOali3Gp8N5uB0HyL +dO5FUmJR/lo91nV/4rgx060la0QQF+rw3VzDH7tr5Hlasrede1ez5dtsnRflTWBo +vxkYzzvdU7tSbItIrtxl6ve1+6SzwWPEa0DtMDB5iQIzBBABCgAdFiEEEsC24lup +rSzxu0tC8Ar26sJF0gsFAl6TCkAACgkQ8Ar26sJF0gvs9g/+O1tvLLSOhiC/5ZuZ +qbUKC//J+y1uahBG3Y4nT8fiyx55/U2Y7SG8g3WWxxwWX6gxe1ALWFstmc2C7Tip +TIo9VenVV+nH3kYRYqsle0ImwrczFs6ZMRr+yEo5MxkZqAjm04Bl19i2mSyydUc+ +7yltn6I0XJ83NmUcx22ccyoSZrHpIzUTINMCYdQUxOjMsp9wAvaT7doROkt11dil +SzUoJ91nCpy3woz1tMXVmyXq8axKbtBnEEvncF0iZQ7zIDrRhMQYHl/WTMZ0ejpD +P3KA8fE57wLLvXEp5czc68Utj/nDIirgDN61Wm10qh9ucOMWp+ffruTan5oUNckV +1PbCLVVPLy7tzjic3fL8fVLTNcfg2p9AbXzU0IS4pPTyv5ThdwdZwZm+EkvMeFwY +AISsygWdt+bHOhGa8w9dKAGj5o9l8e1sFc7Vv1gBn9VY3waknkiTubv0FRHZtXsh +znz2AU+JI/6c0VZT6hR0oLXI4m2g7RFAkESsAcRmZjGyJe56rWRvKyClecCxWyTd +l7HDvD5COUsWvqnfROLlxJym4lNOpzDaBwtFFjBCo0ahBcDbvpV4zUSdloWGV4R0 ++/tra0DizqTJCsRy6uA9My77OhHV6NELjsRzumfFzkJBfU3enCidApFtyLg7Jiz4 +LfJOf+JTHPL2JkLLX/bzkfWipH65Ag0EXo4AIwEQAPG+GGrflLiUzkB5aJEK8lJ5 +LCyPW6wau6xnX0rbngAvfAM3Lqolyof0FLPrecrXhJAKiyKZUlhTF/XAxWYwtgNb +0a6Cfrp8v4aSI1Iv3JK1jsFVAULfdRznDnd5Z99+uT0M0kuHQhcoVYwoEUQg6fjV +kuoBP6GC2aVw0j3jUSVri0nXrhHjVL2cRp06R93tPsrLwfYl4GisYKZ0qDN2SJx4 +zkOdq1CRTKQOIVr9m5M316Wu1nCzlB7yK8Bd4UgkPq8177yyKRrqcfyH52pBOYbJ +/o/SVx03nNu52DYmdb9L2DShERt9vFw9CvyV0aAJBa4wVlVQWVUBOCQBqfLjClzl +HqdcSLaBL9clcKfNnXfDp4qD7XrQlCXiIH0w4GmLL0+mJBTbg3tUTaOvRui9r0oS +QSgbdcxxbb1bDNL5mhVNX9prARuSgVL5NDRLYQyKpru1xJT1P8E9bI4DAvXrq1wy +6O1n02MzRbao29AR189HebfRmGVaotRP7LLuWKJY5zaA+cv2VZs6VwmyA4NOZcG5 +FhlzFyguLaC9lJp30fg/l614XSnxp8Mxt+vH0zlAeQSA71D1+w0c+y441YuYKgVr +xqdwN2FwlsCjSdE1JkzQhOA7xeTd400dZU4LTm6zEV2cKbXRd/JZfqJ0BVAhYIII +08JlYBZW/SAzXWq7wWvBABEBAAGJAjYEGAEKACAWIQSt/bcJ/h6mguWFWXHVgyEO +9RRxpwUCXo4AIwIbDAAKCRDVgyEO9RRxpwr5D/0YyFqg+Y9+XqA8Qkc1uQelQN5i +8nMBsga+t+rh1CJsLWxF/yATo3ohD8/qpaDhmEXKha3pvw0xF88WZzdOGk+Wvp7d +GVCK3ZLVu/3XnVhvNJiL9jjJXuilkGA3lg8FPiD9VWN9jqs0R1Uqe4YqerQTajEJ +336EbKQsp6gtat26dKigb5bLq3ZHqD/1OcXIxtBGBd/ayStxhxnHJKAymW4hmIiR +CrjrQYCCCYv6l43N9uaHh+CWoJBYMcMsAHbGsolGLVakOm/IN1uuZgegAz3rb73r +2T8LLZuYmdFKkt8ptbEwTMniIN2JQYvsehkcbSvdnGIHhiiOQQiCVqeiOSSR9bx+ +f0LYkKFdVFBukK/L/oQT6iyYQR8hcMavGBU1pQDKNHgZtVuQ0bDGv4FupSeaQGg7 +dYFt2wfFHWPK410QOQD7PxzFjxLl9EzCs7FXbIzJ7IVOxvfBwT6g1hab1FAZT787 +zQvrx4QdGe/3BoXOoV08tqaENc17terEaArBleNb+Flqc4gr/HOInlpT/BQ9fL9x +0cOZmh4Gbu8nHSmhAOB422xn+XRum6LQT2E4u+ITFTOGLk31FXJ14xRS7CsKLd4F +gmOJ78JKVfONBpmdVsw/emTMU5I/C/8m9l0nO0P4Q6diao23krgWk73x7dBoBqDn +4XUsDQOZ8aKrTpMO+Q== +=jgHV +-----END PGP PUBLIC KEY BLOCK----- + + +pub rsa4096/0x09E01FA03C0C504E 2019-01-09 [SC] + Key fingerprint = 50A3 0309 8EA2 DD7B CBEE 2ADA 09E0 1FA0 3C0C 504E +uid Sendmail Signing Key/2019 +sub rsa4096/0xEF9F24EFDC48FA66 2019-01-09 [E] + +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBFw2ic8BEADI+1rR04aRoVA2llbsWv2KQpLnItCL2vxBo/+7OdqC9LDnGa6/ +BA2KgTrykOv1YiAK6WBGHiapZx5Wrob5UPPjDERWX0a/O1ejHD6T5onIUklrS2VO +ZxyUvNkqx0XMtdvt5zESVFJv81Ykp+6E0cF1211ew+5BC15RHnkiccrZWXcERb9r +YRqCkVJC1ENd6B6fFjipjTM9Cn6WUck5kozW18ASBiT4ILjR2UjXV+wWrAKNoFny +Yki3a4aYJ2qSo9509oFTqpb8nX3vTY9q9qvYa4xW65ZYi9ISdbDOJZFQMyo+rcGU +ksvMMnsAnsebYBCmGj4A+9CQZGRY0GbUc7iLlFATwd7COq+rrlmXB2lnbBY55nH1 +fcCsmnG8oPGHtSTOeAaBkJKT3y5raIqHp/5pIzNbBpdbDkQR9QnrWtTxH605R1xo +AO32/m69Q1gmeGbmmR96bjiNkdGHTTZsjOLg7+EpuWcE+lFbDJnSTUD5r5NCUHCY +pR7nQCGdzle6/8OztmNL1fLYbOCHDnHZ+PknixjAj76VRmZYYyBf/nwAQfyhpzQC +wLK9wyvuqyeIlYjBNYybqji/KgpC8DLI4T8d1rJAVlf0hy85DCGST9/Y8rdMGgVj +HDJHOTZG1i+YXkFQccJOVIIDZcCIsLmY6xCaOp+208zTUXdW4cpwKbK9gQARAQAB +tDFTZW5kbWFpbCBTaWduaW5nIEtleS8yMDE5IDxzZW5kbWFpbEBTZW5kbWFpbC5P +Ukc+iQJVBBMBCgA/FiEEUKMDCY6i3XvL7iraCeAfoDwMUE4FAlw2ic8CGwMLCwkN +CAoMBwsEAwIGFQoJCAsDBRYCAwEAAh4BAheAAAoJEAngH6A8DFBO99UP/20PWjVr +CiCGWWrxVkRcoRHTUnyqSCvpJGJwIoTNk+f/0K16xmDknai/fdWqGVsuVqTZwmQD +KL81U8hjHlaDyVes8d1nQ2RDcwVpRyH//8U2mhD4Zyb+hZg4eJrQ73K//OQgZfJL +fjxyjbsRD7UHITKwgdjlXCHFJjfu1tVBGUmUhv8ncjXBRgBB5Pe9vl8y3qga7IPg +tcbbPqmobPCu7akHioG1/RwzruKKIHVUwlng3DFg/rgZaRQGGe2Hn+8ldFTB8iTE +uivMZJT2M9p15/tO6qLG+SO1/pB6xuAeZROENtL4ZTnxKMgjm09v8ljntIkkfTmh +hfoFooN2Im1WUYlU6TtCfcb9chG0a3r8suLTe68uH8VLhSoPaXwotWlpudGwSzDK +jFwOPACN9QcCG9zLXD/wbpV+PO1vLTkZA6XkIuc9udW17LMo4kvxUOCmiJZAb5jk +9TyjIKHvX804P/ONbTj6GP+mdxV7vQmTxw4fMTH6GVUlqgBKYBM9GWWiLOs+2iw8 +EMA3jq+9byKYQ3M8n9avg4BlCmyTMXHdeEyKsk2hBApg/nl2vfNASnDrcvwo6S7O +sP11wL5OjGNI/BCp5LEO36HyUEZTENs6IkiyOp/xOjg97MUY+BrG7Y5hTnKWCYRh +LEgF54o+ICkDKJAND9x54/59RyFXONoMFhJXiQIzBBABCgAdFiEEpoc9JKTW1ihK +5Cp18GBZ/V3HzD8FAlw2jcsACgkQ8GBZ/V3HzD8aqg/7B8UooebTLXPgqPm6hYPQ +5LbRAZtDhVGTMQ8QOlioLQYyqgt6Gn0XeM5E4ehPLMlHS5OjdClk2U3GzNQNheRx +LpoGxHlscCsZQih3DH3bViQfEIGN0VSYlmn1l804263/Qgrv3iTkGKcW4KcwHJ7w +fzDVl+NFCexLVBOK6FMz+DTZaOC0UifzsWzv2YAVc/2FV+WJpgfScjZHttzTWvZU +o7QKVouQlJpJzzWjk3Z6Nm5TWKcqwT1XJxQRi/fcYPB1iAHp+4fN0xhiLhMeTguE +K6WQ9JJDTgULMgXUlONX3vML00nX/u8Sk0CPKLXCAJxPouH8wohIQzUIKOSQMqtY +59toRyRQgXMaKHQ4DL6NehkNxduFBAYt0wgnhi48ageFlAK2kKTQV5//obRfSks9 +UR/mLWYyrhZ8BwaFAjDds0oiZRZYr3LsGr4anJ4rHXzTW6G1Z1Css3M+8hnjjgru +7i0yjkpYaR1mgGkXhbLED8x/B7vf5UvVhQYXZi6wnm9ujY/VtninXRUS0/6VtjEk +k4Cwh7PZWvKzYpa7I6l5u8a9sjLCCgHCkuDkt+6F7vUaNx5NXrMHXFJMPy8hM6HD +yzAoES4T3A+YIwU4ZIjneoE6WdfW0dosf40cXK6ufFwh2+ONg59a5ezbEWYAfyy2 +VnVOfiptJxDSV3ITaTih9h+JAjMEEAEKAB0WIQQpbJTb0CgCRb/Tkdd7UpZI7oVy +ZAUCXDaN2AAKCRB7UpZI7oVyZO0+D/92wYw2cBuQun4hNwskVTrukH2QFN7NcFQY +QWfwu5U+RumkZ39bY3u/f2pUB9mDLmFUY0PZ9Uk0z1ymJymSCmjhSifqYikYY2Z7 +dSHT1piS2RH51cy19r1c5lys6zucvAtyQAR2jyLExqiR3/Zul1XIapnmvZEv3V94 ++PmMGC42gZa3BpUamXh8pMcnMDnrMJ8d4gxKUNbfagXkfXz/MGoldZtq1PU59k0e +8Ef1vkL5IdiYLzdMprH10BoGyDEuFkKmkFZsIAvqaTla3zwklnqUxxdV9SLI1gCu +Xnz1W/5B+qFZsiYrUd/VfJVHu1sZlo3pz70lMxbiJXCf8gzs2ezFft7BYDQ/vGjT +Rm41EUs4Qy4fjSQYcTIobzd8DN8ZfoNtS/lcNpJE29kmCQxVn6rWLDSqYKqTFqka +2Jgt+fjlrPWJwJrdt5M8y0HPXeBY2ydSdp5o9vFL8SJS7ItiTg4zUZoCnssIxQfz +sg63SikTP1uZm55X6+3bKSae1wmAXsTi0I2wYEHMVHsbYwsSZrKstPpj/wOt10uV +jt3mSYXqEZ4JUPlsVQ+OFK5QlhjinDJ7NIC0pu1sagkFCO1wzGs6hoicY6hB5wFS +WPDfpgr3lkLQ5GB4+A9F8V5CaGta1ZBhnWNy4fQImWPrsvnPXswkH5NxqRL0ha+s +10EQjVeGVYkBMwQQAQoAHRYhBK0g4aqLQTZwpkJS2L0nbS5vz6iFBQJcNo33AAoJ +EL0nbS5vz6iF8QsH/ja45MCWmD5+bEpzRu6JvBrALwkAkSd25v6D7FiB5JZFof4a +an8wGKmQwXvSbC6getI+djWGOg+/O0ios/ePqUW8DWEQqF7poAlzSmb/+dScl1LJ +UR5erguFpLy9MvY3BwTh9kfZTY6hm17pOhgQ6xoV9dV2awIWB6EDOX/8XLwYFE9W ++blxfAVlJMY2l869Uiafor3ejA9rrJ8dgKlqS9kL+X77FBuoTcGPzWIzemJDKvR1 +eFmFhyrh1627fBoiaPbX7jJkBtaBubwN4gUb436+9SHhSvCdVisZ9CGND/iql/Mj +gCwioUR36t3fqNca9vbP6gfSDqfRbU2ZACWn6MCJAjMEEAEKAB0WIQQ8ih6Of0TK +3hFP7UZLyb2ma/cmrQUCXDaN/wAKCRBLyb2ma/cmrQIQD/oC9xA1K5AlOjiRrwI7 +hNsLqfabFfJrNJNhZM+UAQ6Ta1kzuSP/OhEBhwEJ4Oi+wjKr/iBeW1DwueuEFdIx +tL8NtiGWSP2MK6J78azyUqwj0c3PfBtPsAcCvTpK7gGHfAbfwqgMSscQ12aJa/9z +k+exoz8dJMM/7WTx39blJR9wGa5TSmIB/qeRlB+t9XZ1+qVzkPm3P0ZkLMj1tMGI +yykC3C7eAiE1iwRchLfBC9MQkAZy1OPIJaLMaAOKjchUOWchaLoiVtb1fQRkbS4A +WZxx/zO3++waQR3X11ZX6j3IjdPU+Mt8OuPrE70QY2+5Kj/+h1648ma9EfGhFfJX +IMMoA/tIkVG1ujOoHHbk7526lkCzRpnX4rCiGWnaI+iDVWzQnud0yN/YwGsXse7a +bf2gTB1i65VkDFqejBLSdwZC7MOtwKqGoU1pw3vT3NMmYFlyf1SzjTHZ8R2H5bwJ +jCMlW2YUTGJBlFfeKYOG7FCnQ4FDbjt2ybM+1GuNbnvcx6VrtYBdRiUpje0rSLaM +dxooTR8LqPM6PFI8HCFtH9IcO1U9/f9UpTN6eH5BoVFHcd+Ip5GYIPmHisPFYVBV +yDJLdMNMZJCeGXJbyEo3LCpIxvUuxHsEhOKD/CHLNGWjlCdmGfkpo6GFZhnDilXH +N5h6X/JXxhHKaz4ak4rMqxM1VokBMwQQAQoAHRYhBA9clq7I5p6cjlQuXG1M0ZQp ++wPeBQJcNo4DAAoJEG1M0ZQp+wPeEikIANxxso7vpCamTX6IhEX6JIyisGrY6FEk +Ctea/tNX4GXdqW0tmQ51BOLApp6yMkJrTsbDjps9FEkg2rNiM1S8eDYyZVBl5CMU +J/nVxyrF8KeoF8fd8im+hhxcDmZixw80935YaFTJfjgOnDnsbXJ+VpKEBv3Ri2P9 +0HswQMwqON5YOAnYV9z6Gzt9AgD1n4LGlB585G+XBmVxHvYti0G9CE5riViZ5dWs +O0KLham9gjbzTp5d5ux51V8R+1pw/xeytisVkrbiGpURP+zw8Wzj2K8/eKGP69C8 +W4d8vMpTB7ivOG7sfsiVHnpbf/LsW/CFDF+iyvHt1O4B3DofYLceZsyJATMEEAEK +AB0WIQQwvKdHBfpBVFVzHXuq9bXeBb3MUwUCXDaOBgAKCRCq9bXeBb3MU4liCACc +Ib9dWDrQ/Hsoqzn0Y5b6Vcm4HZ9Kca9Ye1bZodfEEjCAT8FLLX2Y2h3EAafJL+d0 +K0A5o+0adgfXrtvlstFIgV2mPzqqJx3P/Gp+9wt/jtk5s5hY/S9Va+OqebHiJ2ga +6z3yFhLhtpIN7hL0B2MS+k8YVAeQHQ3R1eWdoabMa4g8Ik2a118smeeKZAZiI+CT +AnzkDPeIS4m6WAxvBJOyjzTEUK/wok3Zzyb0TV1EtE3fYq/V887vkm9g8dOza5Cg +3hhgoogIgqFjw32Nv0skCJuL+N5GdGWt6hh0cmNkdYxHV1Yw0HLB0DknPgYlnqNN +RQFHaqiS+fvetLGn2XpwiQEzBBABCgAdFiEESfaovoRzOUlRkW87Yd4R7OJ2OnMF +Alw2jgoACgkQYd4R7OJ2OnP9Hgf9H4Cr45X3FhCb48kJYm/mtU9ph6S5m0zOIb+l +IRTI1UP+S9MW4geNbw1Te0yy2z7Xsdot3Yydw8oWPv2OCasT7FEPFg2n2BeQqHZZ +SEuUxXtHiSXv4Mfn0HKLxsUbeO0zMNAum+rwWGAv0yosQBmvfV7BfrwhflKFucFQ +a+EowlQggC6xppLE/lajti6/GQY5j9qDjvsYEtYOcQy4dSJGRj37pCaiboXJbgo9 +/mRa7fvV1+MbJVS/WFTwvo/09R9r/OByrJiuzpWo/mLdcLQS+Tcf1pFOJFHPoCGt +5nOKkYu4E2vCi4MAQdMOsshHw7GDunzY3T2gzTTjzqfCirgMm4kBMwQQAQoAHRYh +BLh9RWmG8ZSEB+XMtD1osl1SB8rTBQJcNo4NAAoJED1osl1SB8rTLP4H/j6Ly/kP +/pOxfqUSJ8DUzg88TyMDQmRxhmoVuoyR21eL0mf2sVpOgdczNyfysgXThoeTgRMN +rFw+RCP0yyq5TdVWpL3x1ixtX/c5CUEt+oPSuUsEXh+oj41sRV9ZCzUTAi+ypUON ++LVHah3qko+vGEq0gMzlBIfmyAuboU3T7WK88JFHTD9bwL0Uv0D/xqDuEHtSM8Br +oflQJruEI8xg3RblhURKobDL+b+G0pzP+LT6OAsgFzy33jvKpWxBP8HbmYISj15g +dv/HY7yZiaumQIOyFejwT4ZqjxpWGX1IoWMzmDF59jBvxlQVa1LMHnopJ3Q+Q7tf +wL5IYbQj6ANmY2qJATMEEAEKAB0WIQTKeo85okGf/7CpqyeOWun7zu70OwUCXDaO +EAAKCRCOWun7zu70O3keB/9yVNUQrJP99jQqmKrTjMb44w+3uF+cRhDK/fXnbENC +qIbRHA7vVmkQ57tQuUXRHX2BtWCSfEGwPiJ9INn4qY4vLocZqHZc/8+2rQESzrlv +wwBVNdoshnBjaw2eVLBkDV8GhcYUEYlW0Z66+h19s4RW5LWQse0s5Ax8XPEFWzmO +0McTGgStSOBBzL/0bb0nHJA67DUNMOzaC3i4DcO3m7psRTxiA5j/mAwpl5p/jnYf +6CN+njzl272bFhU0TwxomoSG7c0X7QqTVh9hKqz6jbS3VhrkWT2CcZBWhi4QRlAL +Ji7aKkMHQzjnZoIFAAmje8voB/+f1vkUuxfNpH3TMCMIiQEzBBABCgAdFiEEWHJi +GKkTQA3mYDYBOaTHfal4hLAFAlw2jhQACgkQOaTHfal4hLBc7wgArGdtwiIPiyEL +04Mr9AicdyxWnzeMcwNQZqD6quMUek5BzX3u02JpkZnnrfftZ2NXMTHcr0sbcCpI +K+02+qz7uHf4pZqVIDMF97U2L2RRn1dKcpxO1rKzAZ1Yd3il0VeQ5dPVM+ocMb2U +Vj7bJi856fZNnOEUFAJdThTRSS7e4tBsZJagi9YIEAYLYmE0a7AC6v9b2KOsrmp3 +yFZ6gVm7wdbNz1pyhvsMoSDMEIt0bUnZpFGzr/EnTS8MTSYGSHslGfEMFPJrULPi +YohvxMYcBNZCSuJx+CM7VJ+Aroi05FOd5ax4mw2+eEZs+f4BYjLBQ1opNIfo6AjJ +4n1kXz6gcYkBMwQQAQoAHRYhBLF1lkRTA13O3XvpGWBN+/KFQQq+BQJcNo4XAAoJ +EGBN+/KFQQq+3b8H/0qTkD+TMuRGq+sApIhXIFZM6F656AooZZ3G+UFvSmk0R09b +ywB7OJ35mAPIXaZWl0snp4pAjxFuK6SRsCRUtRnGJ1KNPblCycq2zF/l4/QsLKPA +ROY9M2hTg+kOh0M8hzo384UHNrOwOFGnjwORaHmy5LkOHbAte2D2Dim2SDR8pUIv +fhqHXMAjm8dPgSjAyfNO7lizmeYZ8ojlAb192snZPZhl4icJSc5QMfmyXvuWfg26 +i51bEVLIVExyk6sFwNs4JZkaDnIonogWHKipHq6oN2ETqWA71a7KwxdLnTk9kKuo +x4GLDDnloXkm6bthFeZPwBZHgW8hCMB375PRIPGJATMEEAEKAB0WIQSwgJefTQQ+ +GdBaNpxinvjuDIuDMwUCXDaOUQAKCRBinvjuDIuDM4ZMCACssWBTzN5ZoyYvBljk +XDWnzU+E8PP0rtWCIn9ACzzDTV1WSMYN3b9VISk/mGCfPL93E7bg96H1aziy273o +U0cBAkqnneRHCzINp5dnKFDRmCraEQAwdogkNnnswACxUWkEwpInrvQTcOajtp1q +F6jBAsCcFksE4nnrEnCzPaS7uisyk/zXhok9huqehcmqHR85y5/+ClOBN/mboPUy +PgowlvA8F6NCo7PGegqSdDcMiYncbLdDMI+bsPVuB4Ieg0AweokGKD+mJcn9Wm7V +ho46NOl+8zgkTZt/UrEUjgXia3jfz2x35Zo21KSgpwi1cLHq9OgEvl94s0Q/Jdek +VGAziQEcBBABAgAGBQJcNplEAAoJEBCQryClqlvmI6wIAJLxiOGcajMQftn/rRpG +SwA/Ep5ZVYuIMFrpatU9o9kgofHFWIQ43/BovpI/3MNSRrmgrwEGmAQq+3XEHTrn +os/DIRN5mmMD4Mvh6uZ1IOLT+DTZjYMwiAz4jW8EtqO6/DU10d6LBABWeysTN1wt +23Yh2WNhMQz/1hEfJii+Z3ejVeW9hymqVN0tWsmPZT157zZ5LuBfGHalGrfloftc +VcTUN7yFx/pgdRJHNwr7HTimIinUqgOw8HfgSXOhrwmUsZXLUFBE81KU2olJyW7f +Xu+SOjKrInPsRfQ1xTZ8H2f3+aHDlGviZ8E63KS1kJdQx+hHKaUjROelLZJ6yB2c +2R+JAjMEEAEIAB0WIQSBHTq1tuMIw3uuUFMztQyapKHsYwUCXDin8AAKCRAztQya +pKHsY1fKEACUhzbRpxFEwxuU4nV89QtIqqm+3YQ1Zk8n6aSGCyy405/9VM5z7ing +v+UTrF97aQgByuwdm+EhjbHsV0IIsE4/5WfxSTjaSZK0/+Z4B/H+l2e+J+RtZl0t +jocMYZxoKOTtA3Yd77DBI7TR3u0QaQgBhjNHSDO+ZdxY2XQ5K3/PAH0oVYSEOdDL +zRCBnKWdti3EZbGSpnBtNdDjQc1/wBts8mDrzwHB3KQZYRinRQFx9iCqMb1ifRE2 +38KtZ49uXvk9Zt21TZyIS6GAPh4bIkE+pMaVck9kChQJuKJrK11IygV+HjRIBieo +IEQzfhFV7dwUuzwIFHUv0ShTKRwFqz8eZURX0kDFqWvocoLMEXtSyj97kEAV+Smk +R7sOr5vIdscWKY7D+nMAVTchGMFcX+er4DwTN1Ob2WLycy1ALOz4e/UHbMiIVT7u +86NFluGcXnKMzQH4vFZZmM12UWTpgVqlLrnIzUwtUDoLz90VR7oUzYIR/6FLMtAq +gc2Wk/S1FblvvcnqQ32yZVmPC5D5TJU/A3zE5w4K1xTkqnBAaUL08U/2UeTTrF+C +XnGQghADL2LQZIS5rlAyVzZrbb1NzkmwGcI+5+QdCtOTif13Y9SGyJkmdBk81jO7 +f7eLmQL5v2nxA6YcRJFvgJti+WnUKPo/vwDmK14Z5wNXuBXGTH8wLIkCMwQQAQoA +HRYhBBLAtuJbqa0s8btLQvAK9urCRdILBQJcOFJ7AAoJEPAK9urCRdILM1gP/1Td +ZnjErH7OGiiav4Z0aX6zMud4Uommlea/em2Bcb1gtJ9aJqYVUBW8LL2ioNVGSjDs +L///KA8jTNaopty5ux4wZhgx1e7KXSDXCeuM0VJGSjGbkUlnZW3DLbGUiDa89fU4 +Qf9g9hgE7ZADihvfpPcT4xQGA7fj5SEdGN+ApVXNsYenqPrmj89MpFQbQz0rq6bK +atdKj0bNxdqCvSVCTgb5nhkjJ6XI02Rc7QbU/GooOtHTJISBMencfW868Mrp9f1g +FAv0CixzbB6qtW6C17hIM4y+hzE6G3voPxIhVx6wP7q2Dd0WoE5ZiX1hISWHBxiR +1XVkrGHI4ym/XTLjL2doeellvkGveOmTXOjjywIu4DyF2VudCaF1/9uPoQsH28UQ +Jsi0XFYRol8ebFizLkenJECY3PT2Ndr9Zvs7/hKdpEFjIxBvk7MnSWdrkAqSbCvP +hzXSKqk+EH1ouBhWOk5zFeEwAzaQ2viOVGvehifW3oW24gGmlUBvDb1tnVrAAfkp +4JBunttjZnq/0NpdoK0DhrrVF4dW3rEEQI6NLfC+RlYAqDpxpemasLEoPQRvg0MP +BM4si3ic7D3srhJwZi1Vz9kdDyvE7vZbELvvEKj8gMC9qzKTSvznn63x3IW1ZHLz +bI/HDBHBOg5Qi8+6EMxB3PWhXQevZaqsTH8MvBbluQINBFw2ic8BEADNMdn1xiVK +lCEtvmKHzKq2lfgzgBJWjtsYEnXDc6FvDhy88vU02sjMvmbCwfsvQAlvCpZUnfZQ +gMbsa00Xh7VshOd9+DnAc5e4wcoSaafvWjwCy2ndiJo2ZkeGOH1JKrQLrXazQUlA +LC3W6AXqG3vDlYUhG6poamqIyuUn3st29CuOnIsxfmLOghWI34L936WWZnkvnpjQ +vE9WXJn8rndeEaQsGmUuBTT62nXvzIM2Y4ClVWdC6dNUm7jkIPVCF7sT4ozwyvDh +O0reV/60LQhRpfswz75Hyqm6Pd7ZvE4uV26QBz3F76m+qTynKD5lmmcwiwM5Kkng +hvJCTEUTC/ILAkHRK+dbJm9aYCi/tUPpCcv2jy7h1xykbUc2i6h1TboHhwYD0OEL +hij/3AqjkARnQ8oROtyT223omfFZbZMU6YYfygSbN3vnmpxVscXcm3/Yy+vzRNjT +pwhiZDvBd0zmi9BWXACoBUgKDlNYjXsOfVgZFcUQIpGmnpPdEFChnXSAd/Eidd1F +V6fXX58/YiTD6VCmUVbVHei+WpyC+nJimmCK/dpV27/42dybSMI287qs1Y0HdAHE +7pOsA6GBH0XndIX9x0FgREH97UjkHkmZo8b/bPzB7Hbpu+GWNIYI4GNWXwT1bQIw +fn7BDi2bsuupEMv0jTWejAwMrEJpBHZdXwARAQABiQI2BBgBCgAgFiEEUKMDCY6i +3XvL7iraCeAfoDwMUE4FAlw2ic8CGwwACgkQCeAfoDwMUE5E6Q/+KqteYu9PiYkJ +YaXuN4rE2R6OxU9nb4dLVcDyNvePyO3mJ4Guw8zJrJdNKBrhzkQokFepxR0rR0+d +Mh8iZBYrCEbpfLtpRgZOslHU3JvUiwdThKvNTtA+WI3C5rwM/h4WGXW9kVKmwwNN +BO5ET63PoiH6xnKXo6J85z/qJDDr3u7/ALFltq5s1LV6ioQ75Rsc+yofQLn24JNL +a1YwGeHRjG6jTjO33QVGXwRKnf+Mf+h9CM3sVUmoVW+rKklAZN2IQKrJtC4xF3GF +YYGtbpmyqmEr9Gthi/kFI86Ehl88xA4a8u8gNZjDjwrANWa2J6T+3ufC6Nna4Vkb +2WrwOwJ5JtJ6eM0rky2yjTfnlBERzY7eU2AvBqLJujXyediEY+8VDSicLhDaaD5b +HLzFZai99wZmk/qG0P7LfGjKi+wZlLN78aSz+XshC41BqXekuUaUfQimkJEjU6py +z3q8H+3OrZ62u0Q51PQAci/lkRpofeqhK5ElTsoMPEA/TLAYuQhfN/TCQhRcRynW +zPA+uEgEveFTdBOPiVQkLHyWQP/5VTq/4lUYNMWDKmasDHEeqibW0hg3nA2++BXz +8wKIgKyb4NguE0fD2aQgnFUgPQpKQhUftTfP/h7kAzcymESaXvACTyMUIjMJ7SP7 +HcRQfq7rqZkS3NE+iD9D/lUyXVYfH9A= +=jN/3 +-----END PGP PUBLIC KEY BLOCK----- + + +pub 4096R/0xF06059FD5DC7CC3F 2018-04-24 [SC] + Key fingerprint = A687 3D24 A4D6 D628 4AE4 2A75 F060 59FD 5DC7 CC3F +uid Sendmail Signing Key/2018 +sub rsa4096/0xC5A902D4AFC5E1F1 2018-04-24 [E] + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1 + +mQINBFrevSIBEACxm52GYwJESogE55TvgxDNybP/6EEtdC+7I6/OqCdalNEcGNzo +oAnF20biansEtCioTJA3QWrK2dyj0mbxSKK0EuwmJ+x/+m4TT1h6atPmer5/ndMN +YJ/QloSFposkoZg73QyZAS1pJXMFF0m7cnWpzFHcrWbZHxQoLzalKPcUsjOlAaFF +RlPXDFaKnFzDc0PLFuip2E51hKGr7GhKO5utPHsZ4TjvYKQEuo8Ibt80zmPdAn3+ +fIjovjWF4vgmIVqlqpWEiroXodNz3cf+CIJGwDqm/L+kL2xMZmeScxnodR8UzfvW +Z1p021gLPnVx/ssztFZNUufqUMKTov+Dt7//4e/5lEGDNq5+t/vUokfuibTJjEeU +m4Sh2kBnzFDLGNFIxwWUxE6NFv/oNFl9yEju0L8KtMcDCl/ZzOFSp91qO+e6FCU3 +mzkqRFtmTxdVwoeL/PZEdVJmcZLkJBkR+6kTB+RZwlbaPuLW66G/nNaEuWlXKUsr +NAyfNHbT1A1dOHoNxu9Wm3JjcDDyiHCJC4B6YAiikv5lLRbF0QPTgpYtA8wtA7ht +3wjdFn2xxnlXpW98VakM3asruRa76cy0HyZ+vbUSm0gKM+BsAOZOY/0uc7IwwLAD +N+TOKRc7lAsa6jpGkG9MYyDAb7udjliex3AyhXE3M8goOIc369XA2iqq1QARAQAB +tDFTZW5kbWFpbCBTaWduaW5nIEtleS8yMDE4IDxzZW5kbWFpbEBTZW5kbWFpbC5P +Ukc+iQJVBBMBCgA/FiEEpoc9JKTW1ihK5Cp18GBZ/V3HzD8FAlrevSICGwMLCwkN +CAoMBwsEAwIGFQoJCAsDBRYCAwEAAh4BAheAAAoJEPBgWf1dx8w/ZF4P/AhRGoIU +3SI6PTDwiQ6MDWKYK0Ffy/kKM3IYfiVT9KG0+Mh5fO+UFdkkDhFNBXfqRciorpbq +eayUSl3j/x+xHr9AZ1bTp9u6EkB16x31qCnsOXmj8CFiyNZdP6alyNTKVduaj3xS +kBl+I8reeXl7LJ0YWFKnIIuWWyLVnruiGOqLekmdz6vlO8kwHD88fBQpnp6p/uDD +Q2JlrGnWEsq1okaaw9tdwYEmR9gOIEl84tSerDfS1BwhSGjMRYXxhdyXkeNcivFl +YhNpef8Lhjc7T/tKOEQ+Wge1L7lLM0XmLrhNm8h2dixEqznPMjBYrcAsupBOxJHw +m7LJqbfBLhnBbq4OD0Em6Dqw9qE5taZnPsENurQdtAa+wgL0gIqYLWG03A4j6UdX +iTkhRKnxtplbBH/NvYgWIhsVf8wEzbTu0fX7vA7w4pMqSHLi9LJ3iY5Fz7grQYt7 +riV0LVbPbQF4sCavU+KiA/hU91al401Vl0HXbM6luUMQzjlcplSd7CTATZywA+j6 +ErtoO0052XwSsCRd40HFTdTIKQc/+roI1EILzi84S+K3lbBDjid3irQMOE8ZrUlj +IQnnpKh+xJN+C6ZV9QEd0NJrtDusW2lA69fglOS3jVzaL7kOdE2ERioqTRS/9nDk +gbBBGGtRT09XboNdR/wSkV4p5Rgwt16BdBw1iQIzBBABCgAdFiEEKWyU29AoAkW/ +05HXe1KWSO6FcmQFAlrfsXYACgkQe1KWSO6FcmSIvw//d3zeEY3SYIQLrYmnRm2x +mzq0oH/VEMRzdJysStEukkcpHTn3TJQU0Iqi4MGG/Y7gx96ymxE9vxfcsnV59DIg +yBvg8axawO3pGVgFY3on0GmyiG1meriAWh3trTT4GjM8ZsBde4tYtySpLueqU7fb +GfCA+k0o+u7q761DNyhpTAGtgZwM9ucbheFOznpq9YaQo6wFjI+0wqRbysLMb7E9 +365k0aJHD6NMZPfQ+1HNQffFhnL4Ge1xkFMUiEWB3pUQwUy01f/GhdLyb9VQsNKX +rELJo/U0WbtF3nJEdS85l0fOvfPeFEkhU7XnO6LDvzpV0+DtHTLA4brZi9kCD99C +CS70Y1OY9oSt8adR5MdQZlQ6sAH4ovc1b8EKHBQIQ0iATQTHCVLFwBrTA+Ve5xk0 +6Mr0tj4DwJOVC/qAUHihMYGQMSr9h/GZ6QHF5NZRX6rjFhFPul9AfzT6ON3AqqnK +oFGBE8I+A4+qo/HOOz0OrXul5KsTMyoymKsH7pF0UHrubRtphonXxyFz1kjnCarQ +QuB5dlx/gmvzbIpiwJsKpydfi/aF8yklU83k4ZeL5UDoD2AOt3EeWQjSvAAIG8d7 +lgKf92ugY0Rct6+Yd98eTocHifsx1o2fI50+rG+svDvKpEkBTMm6KWYwHxjn2GSi +K/s3obWgV7eRcrpsslNKrDWJATMEEAEKAB0WIQStIOGqi0E2cKZCUti9J20ub8+o +hQUCWt+xogAKCRC9J20ub8+ohXS3B/9nKiYebxscdD3PCWmOqGoW76mPCny6DSaD +De1pD6FD68V5X6T/LrBH+1xh+fYSOtkArXykOFtfkT7ddq/kP5B5Nu6JCTBp2Trm +bmaXhj6wdZZMjrqr7bGLWQLI4UyjnZ2zMDs6RniDfsJ0HGjJt74kwZcrjMDabN5x +y6XVfqyzI1ovxrfnp97utf9KFaXz629EWd/8iIgEAMLl6dWZfd+RLa2WkbKYpBW0 +GKN73rnUzO1z6gtAVyX7kCV9P3ib4TQy9MQ4Coq6bzASAJqp0woZq2oteP2zhmuv +Nz+NIfCkKoWzRRN7wL1BBIqE3f+AbeB+IwvZDAc/RoGnawekbUbeiQIzBBABCgAd +FiEEPIoejn9Eyt4RT+1GS8m9pmv3Jq0FAlrftzAACgkQS8m9pmv3Jq1MAhAA0kKL +MMzJXNIREHCdsFTZmh7XPux0JqOJG2KPfAt7sRzTcTZjROKKEuGNCtoQ7IIz73X6 +Dd7on8P7Xys4l+x45/uhDnS3xvDbprxha2ikkDqWHviKHvKrtLu8Q3ECwF9DCQce +uARbLTthbDajrw4SbqQWgQ4C8LZIHlyNc0h+0lcVZtCsbr8jxBDkKynhBEgbV55X +WW+w58d7yzaobfIG/EeQUyezVUl6xQADiS/A+7axSW9Ii1Poo9PBqhzvpMlkn4gR +KcjWOENTZ+Fwep1Xb4HuuvtuW3gdpopzTaBdx6A4v6u9g2JjgpINGwQh9zLg1+8k +iZ/JdmOGzoIIFxI/tZrOl4O8sFlBajnnQBuE1nZvCUcIOjzNKeh/wOqg5hFV3wgo +046FSMcgYARmuLZyx/ylvClgbw+rYYR0oAFu+8Y55nFpiOhbT3fCjVwpPdb8n9+E +2GDzPNFkvgP+kj/JI+tPPUppjCFAisIH0ei/gTcFMxzkgA4SvG68QtYXAGFKL4tD +BDDV39I92nQB6RFzecIP3IFGcTNbCSTLM1oLGzm1MHa5Xft6n8G2TdtoOxuSLbgA +j/0+UQUWU+8TspEk+dhAV0rNhfKsHWqjS3JDZcDPNrUj9zt3AmlYm7Aky+amaiGH +QrigKZalKJ8bJJIOmW0CYGr5PjXAMl/geUTK/66JATMEEAEKAB0WIQQPXJauyOae +nI5ULlxtTNGUKfsD3gUCWt+3VwAKCRBtTNGUKfsD3kbtCACRMp9bYistKbh5Sjrb +7fnJ2HXpQAcMyYMxzzAoCrR6i1o13X/lb3yuObB3EStCsjPOIIp15aIMQE1UPKSi +7X0nKwj6Wxt8fph/9/VkKUDeMkXkFivM/rxLapVvaDJpQhrOWdIPq3G1pyGZYVxs +MrA80jdqpcpjzFmdYwcTQ2Dz097iVSGsq2N2dNObzZsPzZ7gD07t32hJ0vrjqc19 +ia0JrqShLeF18ZSFl3DbdvTFX8VQLrC6kDt1atIMf4oQIwDzF+1EFx5ImosQTHSi +qC6Cr41yCkEpjzvJkryKvgRmV6zjdROpsglzoqk5VuxPgK1TWgy5FtZde1LLUswl +Kb27iQEzBBABCgAdFiEEMLynRwX6QVRVcx17qvW13gW9zFMFAlrf3zoACgkQqvW1 +3gW9zFO9lggAmNxo90dokXDyn+jDhddRA+pSAgcaEkBo1McfwQTDCGm8/lN3tC8j +jenFVaLzg+PgTwa6XV7hp3MRYmCcKHMVzkDMx5uxsYqKDWGK13m3uIkOBI6gbKxt +8Sy9a/zY/fDdFEa+znaGJZp01MQ/kqK4naoxvw1VwFrPT5hNtLB+8vwB25JCNa71 +mYE3cwjg2xr4YIy13b38iXGwL4XO/8EvCyHt5PeCIr9Reyy0ikVawfjLfzmC2QQ3 +q5a7ZiLwdNQpL5vA5Y4fyFTlj2s698ikcQHxeAmov4H1fEZdD2b+H7EBVqDNXO9n +OEJ/GAvCWIhX028l1k1YTbP0z4YOz4tAlYkBMwQQAQoAHRYhBEn2qL6EczlJUZFv +O2HeEezidjpzBQJa399QAAoJEGHeEezidjpz32sH/1CLIwp6Hu+m2y0Ae6IzYB+R +ZbgJJsAGT5PnmWZXQZIuGkmT4Ctaoo2IMPh1oolzjg6Vgf0ueA+JT4959n7lUf8o +v7xYMpms4uu1nk0uGLUF91E7Azu6nVZyYk4Pn9ClbTb0VbaxlI0eMKlr3JqEdNcF +Un1xqYwdkc+JKE8x0BP3glcYqA0s5ehKW7e/qnFPraN4Rhl+HedxcQfl1JaxRITY +7aOvSEZBN+2R+sEOHpEITf6sYAekQB09vjxMXNAoZbeVQcZso5Q6DwabvET5kDtS +XIB4/e0xWWWwFdekYghZaVyPIpFJw3KHe3Foefote91ep1Uhpp5IBvUGC2eL8vyJ +ATMEEAEKAB0WIQS4fUVphvGUhAflzLQ9aLJdUgfK0wUCWt/fVgAKCRA9aLJdUgfK +08d6CACvBe7VddSM+6gKbUaY8c/5iopR4f8lISBwO9lMcoy743eLC5R0uRh7I8WJ +aecmG5QzPGY96NcnlJLnFPlA7EApN/MVjEOLO6OPil8Te+N1f9IcqIrERMeqkVcg +ekZ0ZA1hlwpPO1CikF8HGsUMvojr+PsO6JQNPDvqwnNtH5j1HNinwD4JYetK3PBU +KsAMYM2gtU/TjRXTf6WX+O9bAJr/7F4e/bJF7GIbxbZ6M1opFibvZObcgKD7xbTD +mHoOOjD03Fh1WsMUZMsBQGqXvyllhsU8Fwjddstsj2JUODWDSn9Apq+IICWIWNCY +orwTxxjFOfROSjIH5ZzfnMkSSc01iQEzBBABCgAdFiEEynqPOaJBn/+wqasnjlrp ++87u9DsFAlrf31wACgkQjlrp+87u9Du9jgf/XM7SVrzLtALlkG36iZq9YhsInbrO +Hh6Jh7M0HT+yYK3X4lRpvWJ6MsYi1CZitjErA4fUc7pwZgpPNPlvzNFcdMTngnr5 +ZtZbFuUZFFgqDHX+LgnDePzvibtUZL3ZCHaJFcVHGQox/lj4AawOlj61+nmST0S/ +CPGmP0pFs05wesMVZJAmYnbLyU6wWOIbcotNX9VmEd8QRAiCuvukYRyYKBc8iIuP +uFBHJfhDkzUJGQuoMvFBIvYJPWVU75D84100P7oDv6dHhQVhWJ8URVfzJXBzacpn +6R6xpefkWFW5GcGWCyR47/YnMLC8AwjtJwzFzv4eiLWJgkh5odiTQoxVJYkBMwQQ +AQoAHRYhBFhyYhipE0AN5mA2ATmkx32peISwBQJa399hAAoJEDmkx32peISwsO0H +/RTspeE5jaY49uTBGwySMFpC8vRMQ16zpJlRYC97iFExdZY6JYRWvYiV6rvoOTf2 ++j5xJgeUjqNuFmqUDrqpTGxI4J4UNrXxDc52d4Vy8kV7aBsRAQWuTqn/2SXyMGMT +TEKLV3a81ZqdTrvSbKf6wmIPHiRp00w3QWKw9dBW4VGQ39a7ojrH/KzZ1tIeRAfo +80ZJbI2KAxVm1pzMS+gQrEOYcmYE12m0Slct12dRxjDvbJjwlrRl+ekGWxVsxeLE +i0aHFUA9gAGfqrn0RhrIth4w4h6xVNztDK3OI6gZeTrMSDFntfCIr1wxpZBVr8Zm +vOE3INqKFor7nQub8hXDCAaJATMEEAEKAB0WIQSxdZZEUwNdzt176RlgTfvyhUEK +vgUCWt/fZgAKCRBgTfvyhUEKvqD6CACTT21nbX7cRG1MToFa7e3ktBdsug1dcdtc +33Gd27FBU/BDYO/xKH2XvHDcZk+YpS8CR89GzFr6Y5/hfp4K0vp3pJaS24oxRMho +lwByWVinA4ZCD8Irgr7TsAjKXESn80P48bkIPZWkGq9nJhQ4E9l7TF5L6dd7xR0h +nml/JM7PAdLrtX9wYx4K+Ars7GHgoJ5bcJZuzl7zChEhRJ0jOq99AggsgYr2FXSp +eFArLv3Smy6nMr7NQMQ1WIRKIMw01uHXuxAOWsKIk0+bpQHVgd4I8qLtg6RZYABZ +dDyQAZ7R/zSR2xpDklsjK79Mk3TfhURbzLQ+Xp48VrzW79BenIhYiQEcBBABAgAG +BQJa3/MGAAoJEBCQryClqlvmZ4oIAIz+tnXrCyBceUse2ganLrxQKrxENRXya6IF +zJSi205YBoImvOoUnlSddnteWJcy7UFCdYclqvKzo/NQtcxuAn31aJCdOxE6rCjg +5Ta1ovDExvbHiit4z64J53MzWOA/jDLwlgn59rVZHvjldn4z7bL3KfqRl2H3j1G4 +VXrUy5NR3ldcbvmiNr/J4S9oky2yqX1AC5diRZj1mwkf4filRT9/mUPG7NXhknPe +860wV0aGpmip3N+Un4Uvaoc0es7eBl/NDnXmfVwDmDGpWSW13/KBHLQf/KGc96Db +BiCBaX0VTzA80ccpNn4kBqS+il01Q+VjruEd17q0xWfOL3br/Q+InAQQAQIABgUC +WuCLKwAKCRBfHshviAyeVZAfA/0btCG+re004G/YNNsc6FXg0/sOiOnDb6JoKFBA +RCt9SOUc2zxHiPKO4Ne7cMKJzzX3mkYd/9OvanoSgFLGoHu7igGz0yev1JR9AcKp +y/ayoVNPpc2zv5raXHNjT28krUdORJoBu+/4WxxkyEL831Ie8f/kRGTJMvijjgi8 +5mN0WLkCDQRa3r0iARAAtweA/YXT3KV6p5M8SYQOxdkLlaE/kqmfDaBXE+1Cxvh6 +Y9pvhgVi5z3ARbcL1ybxXviLUVC0FGDlBAbcp6IUOudBDbDzZk6PPz+GfvOgrvE4 +wNYCTSSoirvPX9zfZ/BoxNpLYgyiii5TBD8I/1H6QrLPcdJZ5ZaXi1y98Bbshjg5 +oUhsJrxUQ4Rgq6idhb9fDBQ9pYeGwYykwnbG8ZFXprjK8K42dMkDibHFQ6mIsW4B +dDHj4PJrFGeLcTR5IwG9KPKwjjOad5mR6mOiwgTm1JGHthMwpNmI+gg274OmEq3c +hqafgjHlDB1BwGE9lT+l/w1ufVNB9NC/TDX3LNl2+fquSN4knIwppArU2OiN8RIU +7cIvukfu5FsUYyjY0xHfObf664CftCkrK/vnNtb+BNjKat0s8M15h0Ed2aQxxwYo +NiqLP5of4RxD6UHT31m15PKCN277MYjKdZDn6l8nssGcyZMyzk7IMhvMDF6NVTpK +4Y5B0W3nZODW/SwkFpHQo0Kc4vJAKF/nKS473jtdmLm0R8A/Ldp1rFQCV9VpbMAb +tu5V0CKXdTjDRo6nNrH++oCjK44pAaB9qGHoEhJ1T8yXuy/lYdkIGqD+qAr7Vrn1 +B82y7oApt9tB+lKMr7qvZ13bdDFH2iWkx0wpjw4eRqV+lOrqu0ky+ZP+LZcZdoEA +EQEAAYkCNgQYAQoAIBYhBKaHPSSk1tYoSuQqdfBgWf1dx8w/BQJa3r0iAhsMAAoJ +EPBgWf1dx8w/vRUP/2LNRt3Oiun/QLtzYQSZX/bwhRkDFExV9kMhugHJwDq9fzKk +HX2oMYRluEXYfVDFjmWlz+7tJBeIoiz8mA6PTUT/iR8xPasixhAxsD2kfPhwmF8k +dpQMZSiHzmQiAHPo8w/ysHYZ6vljGZS5zImTgOb2kXlGAgfg8ozfNs+9V2PUThxL +p8y8NVsA02DZ/pp2VdzaCTzojYuFcfemClDiIsg4JOWmQXTBei02UP7IWewp3TMD +OnPoatbGYMZOKjSD4vXLfyCVHfo0Md0KmjG+sl+Lz1QLIe3VaQG9Idtc2pd8tf/E +NNW8DGyefewnI7MNMT0z+oEfC9RuePK/Ku0wTvArmPwXb+PXTscfM0Jaiga1O0fT +l7RYsrPuW3FssnvbaLiF2ruHRLRP6d7YpMCy3S3NtVKQfln1JVKd2XS5A0Ru9cnz +EIkiNVwoVK8gbI7qWmJfrKFFuSYxcGu3A7ari7y/MnpDgzUt0BWqHKBIqevrqpCp +4Dir49TlDkGuTXz6Sys/pn+rJsIyzwfgYGAtN4VU6Dz/dP88tM+nMJuNv2Ez8R7h +qV4Sdj1WmtUd4DPZx89PxW+YF+ZnOx/bag4MNq0CMY0LijswENRV9v3jZwyy4r4p +fvZ+LS/6hJ9C77uOaBqoDPmtpn0WDqc3oDeT81Ans73BZhwhFAjzpHp+XnJQ +=K0Kz +-----END PGP PUBLIC KEY BLOCK----- + + +pub 4096R/6BF726AD 2016-12-31 + Key fingerprint = 3C8A 1E8E 7F44 CADE 114F ED46 4BC9 BDA6 6BF7 26AD +uid Sendmail Signing Key/2017 +sub 4096R/18F184A2 2016-12-31 + +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBFhoDCwBEADYQ95sJfLifvKQQvGoYKQ7xIs/7xaAZd776TG4HwfAkQxDDgDJ +yl+14E0yijWPwVbNGohytOS3MLbBHD3HzlUmxJZRz2/yCuh63Ok49Yo/84g6r99D +TSpXTZGvigglS+hdQ5C7Vt1N0JwP8FVoRxJHGpRXxHBSGamzrZthdBUSvIfLVlRf +ULpcV/H2VyCAO5RxqFsEIoFnaXXfrHBordArWpb9D1GtCPsHKP4wqh5+vev4bBzH +bpHgz/385dDmaw8PZmodlPV2JhqzHAbevjaIst32vnQRU4ElKCuVkTSGNyb6IZk6 +Y4sBd5VhzUCOqEKxTN8Wn4AOAWn2HRskZPRVwlCqjG4jjJCjHY5x8w9yjaFuUF0e +J+OEN/ZPyXrv+qr0jzjAL5nNdi+P0tphDUUQp+cZNDAvBs8JNWQW5Ddtv2FJmmLb +OvJe7fmtwD7cHXvQtAZWffu0JBT4A+8kq4IZAt6bCp64snxfLuYY8Iow3G1RfNAK +X5uemQ9ME78irCuJpUgwPJeBkM3jrOQvrNyHrWXr//dnKjO4OXqFYKJMg87WF0Ae +c/XKuQ+MltMyRPQh4+K2KQNYEtaLn9ryDK3JDE4DxCIU/ZxQbaj1GZYOdMlr0RKs +gG+zVbTg4WMM1ru4aSHT3NzCLTTRmxXIkDsTt65/BVhDPuQqL7PL4Y+4wQARAQAB +tDFTZW5kbWFpbCBTaWduaW5nIEtleS8yMDE3IDxzZW5kbWFpbEBTZW5kbWFpbC5P +Ukc+iQI4BBMBAgAiBQJYaAwsAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK +CRBLyb2ma/cmregGEADNyKfYq6z1WsFo5OEB0dwAUiW4fFWzlFT17xbvNAmau2g3 +EWv54uNrDdE0sEX1tp2piELc4+y4vKytMU23MnaWpubeTP5A400tA34+u8T7U1yu +zQ3B35t6ZJCivoC/MTxn44QyqC42/oAvePGBsoh8EmaEnDYijO8R/2R1lb0z0BQG +DMmclYZYwZ4DxVD2r5eOX7vT0eOxRWfmgDA3H+O5uOP3616znhVc4bTlWVznzmAn +r1G5Fui6jZ/7GhlvB0pLwfZYJ5Y0G3sw8y8go0kkNgSh9J+xLmWOzUBKkKUlPeiw +eMjrPBY2KUf5u+li/nDDyhILizJ80XwcYBRRHCulct4dripluecYOLQQx56nNGaD +Nn+yYsWitFv20jnfh9Tjkp5yeesCykzoSubUqc2v4U1zSU2g+SRPVqU2bi6Ot6TC +RdyW3vVkNMwyZEERIBQ8C8bjm6ORcKWaiX5cQ8K0ClauMjKwsSp4VzSiuuNvLN1C +UrOpKv8Eq2RTbVCDHNwDN3Ynm5x9CuVzKlIrWz8T5vNYA8OF2d/u9v9XBwTI3S2t +zNJpCqLXeGWZj1IYmrEdNNZOiWikUbjVTj6tbEOXRNi07U9D6VYSHT5H3n7lyBkE +WLvEb/IsvMN/GXmJDdOrEa+jPoAv6s9QVl+dtPzcT5ar0Md9KSdsLipZlpQm3oic +BBABAgAGBQJYaA55AAoJEMApykAW9MzpnXID/2PhP4QCHxxnxAGpetXGs60KsLVn +HHpPb8RqBhfa8+FW+on2DqMOHCwSv+poVKf/JyA6vDUXdv7JU4dFPgK4FGittD0I +g1VlDsY4gZqlPl1zAqL/8hF/Yoh0TCB9mYKj/6sswTKcAoAd60Kl0FEqqY3bLCxR +8lOQks9HwvSiU6OYiQEcBBABAgAGBQJYaA6IAAoJEG1M0ZQp+wPeOmEIAIMy0TX0 +7/8Tgd/gSTmiM2YE0LT9iSaJuB/aHe9NVi+JooYpgBgp6Wj6k2jnl5LUpIuVcW+i +Zw4YhpfsxjZDh3b5WYGV6NHQBTncII1A4yqIcYpKk++wYm7GlmRM8BcsYMscdfF3 +IzDStvbTCV1rylDHykYoio2uCyLRFTZoxtCaRUUzQmGzGG+FIYtw21ZDUzXY46/X +91j9AQEHyXzjSGeKojTBVp/+eJZ7UyrvwXUR7CCxBX3QlLuHOIyXBwM55kOEIOzB +VHCKbet+Tu5fcJCXBcWxefJe4u+jtjGjj7RcDjsH1WVfCZkT1nVohrOsZ9muksT7 +mIGlf7KoIVaDTeyJARwEEAECAAYFAlhoDp4ACgkQqvW13gW9zFO/wwf+PZq/fGGZ +3HrjuiuThPtqmBLO1gOelNPRvDxrBIJ5ov0blSkdeeMfCzZYY6dfsp6BrO+XxDEh +hcg9chQAa/PislHkSImJwN4AFkqHNrqyGJmiCxYDkSy5vvOBRtbqaHTf6LxbO8eE +fqSBf4x2WotL+S/6sbOQj//O8srdI/hHIgU1LUGkbO7mMtYUOeKk/ivQc3TsJk8x +yU3oE+fSGd43WqPMExPBWFx5FjJiHh6JCBL8hbeg8PMJcN3KBg94iIASh+9u/JCz +jUV6QM+QsNFaK7xErv5FGNjZmbSiJgG+sf13xL1zBnclchDzPKSoSR07jXJSlwNj +0N71dLCs2ijnzYkBHAQQAQIABgUCWGgOowAKCRBh3hHs4nY6c+6xB/wKmtQShDYZ +iHQm35pD0osoQ07iY1n2mqKQFSPTiUcl7G3TfO6HWuQpAkQiUsMbGMXbl6Q7/YnX +cA6/vkLf0S0uV0h1lXs1P3kNao8U7zKdt6vyWw3tYA4S+MHGKmNZSKM3anDW46mB +cTxdvkeUogfw/qA1CqcpTJSq1RMuV8xNxU3bhEpdpbnUbXjpuMLuQ8XHYerg/D01 +npnee53/vvup8ZvGkONdPzxLj8aa714J7ugIz71VCenBvmv9oLDaiqhCfpVkxlan +J5fEtJALXbM29JmCXD8ns/LSjlGJUfSHm8dOssNh6zCqdSYKrNV9pI/SZHNXLz9h +T9Z1IgBR69MJiQEcBBABAgAGBQJYaA6mAAoJED1osl1SB8rT73cIAKjIZ3ZWATeo +BJtdl/RUnp2zWRRYVDgQuAoRTeHGrnNaY2QWM9XaarcX7frUJKiTPfSKpFZWt7Zl +u7OKMq5AzbnAkh+kYEYmYO0/fd7wdDaQ6IEXw1xSYrtGB7js/VzUGzsikZH3437/ +ix0FE12N8z5emLhO8progdJDq44jlJZGfdVs02TqvdweyfKBtqy7yQAcIthwlxMp +ts2aVAF3Yh8jV0Wnof2QNrIuTpXD3MoH8hFodP0Yfj49F1NVvvnDBJ6w4L8sWl/+ +MzvsB7iLaEUz481fc+cg8kiOj/IdFapVthJQ5HBPI5SzLdTGzynLARltXihIvTgJ +DOg1YYE9KVGJARwEEAECAAYFAlhoDqoACgkQjlrp+87u9Dt2cAf/ZUIDOtJfIMZg +V1JpfnPeFYy/8U/9SRVbjggbSuEqjdL7T3QDvJm+ECABQeX0xuqQMFdfAqMH4jNa +Kqm4aeujMGqcCrVg9+nrwM1lRo7gJfX6VXFL8DC9uss1sb+mhfG7ETRLdLN/w863 +tsslbmBVGNzrrEjBzMz+Kw8VFur/FLLsl89AMhkj0elu6uto2tGuuJTrCRtyPtXQ +zRhTAHwU/xZO2xeVAlqa9r6b/qYee5gQhpfDfxWxMM7N0DtdMkBavZP9mtSaVraG +g5/89oFlRxgYhNwb20pgBnKhlYiket5hn94feeWkzqXNJIuXWtfvxyfGRNzPUSxD +fy1iqN6bz4kBHAQQAQIABgUCWGgOsAAKCRA5pMd9qXiEsLehB/96quvQvQeMdBPw +rCAUv0TNgeF97HCCjLAuNB/2VrFJeyBipxBIwot4ba3uD5OHNMAzdwMcKizb4iwE +KxiHWcalZSY8EBxaq3T9X7oBpLmrDwncqpA7HLVhCd8Po42W4AHurPDFuzvHpaYv +bgusZl8rLDC3UmfhA/o3bKgq22EcwTb4uuMGUCfu89+wH4Dd+sXwU+hM1wSccqCK +BlfMYVkLZf+r8dkwiIEdjesZjcmZVsYkZwLve6NNGmX2cYopBBTfFplKe3M8mfnf +5+29cChN9zwDwUAnSLiIw37gzOoKnunXr3KF3GkaW365nciefiwDbnVrhSF9jmXJ +J3PQW+SwiQEcBBABAgAGBQJYaA60AAoJEGBN+/KFQQq+svoH/joWMORd7D4zPTcr +ytbCbmklEjk1eF+0ivtsUEizD+vYRjmEQAUgDQxIn4pC+oIgonzu0LLXrK7ksyN+ +MbYp3bp/4n6fU042XXglwsanpsuptD//fywa7ESNAwN9rMVKZfnDdYQH03rnX9El +KT2SNmdC1mGknRvT5OYLgbEYxe2tzK7OIDQUfJdkE7KE8Lj8YySqXP+vuUsWpX9W +6IKeNtNY1d1Yqxh6XQqPDh3au+9d6OpQe1THc6rosCh/2cW36WFJLEV6qFY+AW4x +U+6tInWWCymo859rwPWRKukROD4hMDvwSNqZnH2Bc2awWrMwifDuiCghzXkpXUde ++nUhZEKInAQQAQIABgUCWGgOuAAKCRASiW6bp38kKVR8A/9rUMeDsUo2w4mRevgr +KRuOib7fQsyBQ2tDfr1VmAC686fTTeVKziSuauCIiM5c4ZYlvnjo+wLm7HmpKmKq +IOkJ+dpC9MAvRGXQ2z/Gr9C7pJ0p9EVgGNV2tlfKESxP1ADS+fdS+Zpw1x/JZcHy +LRq36JeEWqd9SGnYQ8zkLtl0YIicBBABAgAGBQJYaA68AAoJENiq8Mr2swcpfIME +AJyQU3wO3lRw/RRrtmgrnpoAL6wHGFI+kdiUZWUc2Q1qC92RsE2i0/wOLGquXla0 +LQ9GZWTW6kU9yB0+SrFs4unHuKbRGbLQRkuR/Z6m0Uk+/oeXVLmXAE1ID/q3s3Fc +V6v/ojLLaPwX6Fg32Ns01aNyQbxnWzCZSGMZ3QeeJwcLiJwEEAECAAYFAlhoDr8A +CgkQl0MBGHCTuEFezgP/Sb7C7rMa+x3JSjpHDyYokOTVVc4d/RF5L0dQvM/voQg9 +aCec9CNHtUSPSzW68lEI59WzpSFv1HkpiPrRFiim/t1twaw97uU/0qFqdHjmS9st +qK54XsEX0UbhefLA/esVpKRk0F+XJvb8XdxKLUkpkfFQO2izdkzNN5bsDPqfdjOI +nAQQAQIABgUCWGgOwwAKCRAee7PIr5WWJRSKBACaWQj0KI6L+jBMhwfR4fRMtePO +PcqDyWvRolu4XcqgwxVIVPGE647ItuRjHt6byHeGz7psBWnJo4oilYD5B+uC7Voe +Bsf8nK0hzbEoKE/Gle6/O0i4Uf1f88efhYTvfvCD0E48HEy7qV92xs5sXKiU2K9a +dGvGmZ4YyMvUx3TUVoicBBABAgAGBQJYaA7HAAoJEHCgJE0e+ZJRt+sD/RYutdJY +TxM2n2WtW9qU2mxNhqpg2gPrKSCa1ecXkSG2nwOLhAtYYMJ2Mmw95MAVsJel0LQB +YO4yjIsM/kBwkcvRzFfgMab05Iine9lMEsIAe2NtPpLNGnJBZyo8e9nWoPWko0Qd +Y2W7WkoXH5XFP6Ab+BlgoyGAS3X6Ux7niPjriJwEEAECAAYFAlhoDssACgkQyNXt +KZX2F3F0RQP/QGqxK59oyA4WTKoaVDKm91ZE48oCN0QH3mRiC+eLcmrHaDrQcWVT +Y+Q2F3a8ZQpCQDWq46t/OR2G6R0zt3Uvqrgy9tqNuzs30NGWfDpQoDZJiWitJEIi +9emmJ1lWSa2OE47vO29/Tka0jr4t9o4w6mh6+LvAVy391NmInktb0JKInAQQAQIA +BgUCWGgOzwAKCRAhg+GxOW8HiUd1BAC+T4PhWhZCl1UKmBpqcFzR0FuMXbKxbfN5 +nFPQmaUoxm7EaTbTqSh0iNXgOOpPt+W5C31+eATVmv3t8oMOmk2qt93lbAoexPpk +yETfqLgeA7AkfcPVEu5zLAlSlqpWbWmocy0+RWLRr/vgdrOTu6Ncf8Y0ujoFNITM +LvDhFPVY/IicBBABAgAGBQJYaA7TAAoJEIlpYrhnjAoDEfID/0YCPh7GyoYO3MH9 +xR5oNLIm33FKpg48OIt2nq3vW6Kq0CHeWo6MjiKbpL86zbxvluvKWYRymC7uUPDZ +pimbvzXDuwOvmBsyX6Q+YpMaagBVQair//ywWoVLQz3+2ror0ng4BlDpLYzuvDrL +25c9FEqbYoagGHdlsmEe0APb8mBziJwEEAECAAYFAlhoDtYACgkQOCLbR8w3Ty1k +lQQAw2Zr1AVvTeq3h9tjI8uTVHTvqJVvObiXIaQBy6gvnRgBiFmvtjySSl/N8Pwf +17IIFTVIG3JvhAYTO4Sv2D9D/8l29C2sDXq9wJyL+uWMRywZ+3c1IyP7VVt3m5t6 +8tZqElt1mljKrriGlWC/9HHHqip/rR7xdBxiIqgBm1QL9E6InAQQAQIABgUCWGgO +2gAKCRCcHL3i41xWNVWKA/4pr4MfBe0bDk8ycaeiinbaUSFXsY5z1JfZAk5SrZ9T +CR5gHxcB9ejR8WAPFfVeKJYyeFCP6tWGwUjFih54zHtary3MAfiUVMv1RfrsPys/ +TnBolnupYgQZVQgiEVIshO652I64OIbMAMji0XUNBbI5gaG3JlcIjFx3z8mcM+ew +e4ibBBABAgAGBQJYaA7gAAoJEG9Sk9ijm6ZVtEwD+NlQFU+rQXoqiN8wRfGZInbz +H+rD79xZjOUVh+MOCsvJVEyv/RpZH6zVomufx+/QCaUZSBhllPxfNSEOW66dxxca +QE9tf30u4K+dsVXthZFqkmFxMiyAneTgSxYvCgz3XJJr0MoHdMBfGdANy0zbdeCG +mVNdBcoRb5VBJNyaj9OInAQQAQIABgUCWGgO5AAKCRDvWJZk1DLhnVFNA/4mmbKZ +8I9Id+gOPzflFHNpzxCS3Rj4mSmK9ZLgbhYeLoOb5Ts+sHPG20m1Yt1HP4PlWBP1 +CtfB2YjGUiXIEPvmfM/MwjEPQFmn/nK+YS4fRLcFhOnEGr9eoSdPc/9d/9QkHqrt +wDY6xX3XCJwnYz78bwfeayHpADY/yQyvhOp3SYicBBABAgAGBQJYaA7nAAoJEMGc +HSUS00YdAR8EAKWwdq9f4n+PDYvQZOd5N8OY5Rp/L0HB5iLTh173DKBmVBirlWtC +b2147CHekJFxZ662TGzocm9oxV6ixZXOcprXlEmAXDJyOidLGg7vaUigeBCy5lSm +gvJ2tXd9GQpO74sWAfk0j6+WpBbfXHsZIaK+SIYAx/ezo0qrcPxb6xiyiEYEEBEC +AAYFAlhoDusACgkQGPUDgCTCeAJ+RACg+FC+FF1fN6tMpJmwJ41+moGazbkAoNe2 +fHaFwQOXy9xb8SE+MD9iTSGiiJwEEAECAAYFAlhoDvIACgkQfEtnbaAOFWPtAwQA +sThm+i1k07SjzuwgVFLOxEupI222bMxOLo5Gq4lyd7LRGrSSdANM6Sia1gHfzfxy +ZFG39Gux08m3J6D30OrOXojTYJAHbfADqTxVclrv9XqsQD5CnjwpLC1cB+tkzTS8 +/BhZnZ0+DH963LRdsiipdOVAPkhHMKj+xFjNb1tYEKmInAQQAQIABgUCWGgPBAAK +CRDW4KH+T74q3fk7A/0fjkO+xcRDUZVt1mOQm53HBJEQ7hNAYbs2Ma2+j49MRPb3 +pVvcfSfAD36JRq6dAx4XvK/nXFxF2l96UQTaBBOvmK3KCGOqHFyB6YD+zoNioK2/ +MoezyU2cWhTSpLRQFmnaw+m948mx7lAIAx9X17OKxmF+bZ/jHnq2Ih0TwFdFSohF +BBARAgAGBQJYaA8KAAoJECH5xbz3apv1E6AAoLP9r1b7OPxluSz/VowXbiHP8diO +AJMHsRpr/Tx+SrE8Mo3czvVD5GIHiQEcBBABAgAGBQJYaA8PAAoJEL0nbS5vz6iF +9CAH/j6casIOBJTVSOezY+Yuf/ZFsVFqRVgxlzDflrUpfG5GDoFlohXmbrUNJKl2 +0z6vnV8rnsx9t6P7OOuD9QqvP6mu5Lb0GDJNb91qVgdNFAdoMWk8GRVbZBwzIRKQ +C+ptri1BjOCmUZz+/ZYAtrnDT+CYFj5XYkAWKUqfxUcJE6jXT8LcXEKn1ozL6bR1 +eYsUzxG+AYdC95CRL4LtpsqdaZWzOTig6ZfqYUELcy6bnb+Zjya4xmxVGm85TsL4 +S9FAzjhyOmxblkDEEqHn3KqUYmNPsCtJHvfbptXoZvemrE/fJBBaTHU9C8BoI6Fw +mkm17l3w6qnpe5qUcb9sOaRUu2KInAQQAQIABgUCWGgPFQAKCRC92o/WP+p9/XSo +A/9Fgw6ckFK7W60ObceuA27So9/va5egW9h0Ll2zQSiWJxY1I0RVZxkfLa0OpyIP +M9ynQGLnLKIPsxiTrTtj/t9vIQOerQ5tpZsO13HSRyvu4PWQ3/BNnMCCq5hIE33v +jpcUz0/iG58D3oiNKzwl5UdROIaZhjF6JljqLkZq3E5iYYkBHAQQAQIABgUCWGhS +4QAKCRAQkK8gpapb5nb+CAChSJWFiL88T8AZ/hPp0v0KO1MDtkki1P9GaT/SwS2v +AYHiwsUFdgvBeiNKpUVjEgbLR0pqGS3neCwJL+4g+rnOT3NMmExjr+dGIFkH50ws +snkJRZifGFzvDf9++38vp998YsQuWp75UiM/2pzJc8ucUa/qgXpntNhdyAR0GQZa +HhBhtrMI1AgQEMQ/c5UYYDyXgrrJiuo+VoF+PVRhwWtWVy1ughDvHI053NM2wG+s +Dc6apU1Ibl2VQCd6moYqBv0PNhJQiXUo5OUFJmNmbt+c0eFFpN+BWPDLj7sT+JH/ +G6N0SZGlBt819UiZUiGti4EtXpSu+SixxGg1JcrbxDcPiJwEEAECAAYFAlhtOJ4A +CgkQXx7Ib4gMnlXF5gQAoG11bTOfJnnZSuKG5TnZWgJOHTIt85T8DGALITZ11S3w +/jA7U1sgNlYybJIlttVdzUMxsqEz7oTLIEV1peSSQ/vqVoI6Kql7CVyRt776Vwcj +IXFvFP5Daxmz6WElzElysddhN4/50whJ2Y+arQsXV3XNswqMTmh0JHK80DF5GoSJ +AjMEEAEKAB0WIQQSwLbiW6mtLPG7S0LwCvbqwkXSCwUCWHCyggAKCRDwCvbqwkXS +C/vjEACDCx1RQXgw0VV464doou7d8dagHlEhvMQC6EKDqzPjwt6Y1ok8vN3sMlmt +xI5xdMUr+zk7iZ28TGw6mjvicljdTzXqrL1yrnJbsjvx/1odukoqjv+KnudMDbDB +nmgcvlHlLc4CeF7rfEMV6pSUuFuNtHMv1fK03pUmA+e+ogtSbdIDlrHmnQllKtdt +QnXxQBltV7bUG6MMc5+MDQaH+AD+dvHifg7j2Uq08edckEBlJpTiOffb8qzfeWVV +HPxPpgZsQkAI4kOhHVxpTziSZkYoKsAMGXQvGuiNnXpZT5AGhsZNq5jmFFqOKCD3 +Gzmz2rjnEe2RtF8NxGnyqwXuO0EyCa0pyWhfozuvlCXE81QAilN022dCRk8yoyct +9eEcpypfkVESKdmwL+nWGzeMbUKjJVYCOmdYeK6lU7pv4g4WTLIlNUK5Z0CsyR9z +vWOKLTBaif4NOpXbLQBew3J/5Uye54xTpo+xc4E1Ys2Z5tGcXonkwN/JM4Ah5o/Q +es1pBsqdZBsr6P59Dc8zljIHdBy4kT4M5F7cA34YmWZmXAPrHFitMeHSXIdI7jFu +zVNBptJwJhaloB8D7oVu6ZbKaSCxI0rBFkImk/vbgwvsa0laAmfvIpnCs9441SLv +fcdnpeRmOZwUMDO12Kgl9ysEWb0m0+j6wrEtfdR6rC1t15/dB7kCDQRYaAwsARAA +nLdbByiQ46eVtCXp47UCiMOHnltX3Np0KxBTEZccVR8an/G7ZJHA47jBbQb+ZKMJ +KW9FYYIChrcMO2oclnSZpIB0EUkGC9P+cgr2Oh75Pl8gkRwcS2WQkJ+ytEJ2HYhS +TJI+HaZV3JJ95L5NROsR/b7A97iT3QhPyXbzwlNhMK23SfeVWzbRrTol+mdWgZGJ +q2qXOYZURi8jyiTXDiBZcmiLna7x9boKrJ6kZVP+MNI1CMWAmXrINas4HpTLxxSu +btJgbYVom6bimv19U0X+NgkDLKv5oUIXYapjXn5xXW3LS/VxAdvHlSsj0IyfTFg3 +2rP8eAt0/YLaqRK5ekX+WNvpU3hnePKJgNLyXC21oL389tpgWHp9RBR/H+3cVOpx +9CKqJAQpdWSs57wVcYLVpklxONsWEcVc1OV7VIFdXdNfEyetIYP+241VeEokOOFp +U5CHD1eCYQQpzBpLLHeKAAexxVkwVzUyLcsZWZJcPvOnOGPin5wROcO/bh+HQMjN +q5LuKHZdCitrwu/A4dtC3aZ6FjfTYb9n8vdVFHZt7FZfUqW2p2zjrcKLEyz1mF87 +0PRhfP0/jxB2ca0victgkCJzyKdHopnbDnAetbtgTNyzMT/RbH4lx4sxGUVILQce +8oX1RjnyMJx6/5Cv/0mKtDnGDx7aN8cuSf1CHddRYiMAEQEAAYkCHwQYAQIACQUC +WGgMLAIbDAAKCRBLyb2ma/cmrYEzEACkwcL57TyHTTpS4c+tYurga+8rNYX6UUl7 +TvyhhXPrzQT9Z335zymHMFuWRwdBHYuOPcxTDgwtP/wR17csc2Azn8zU4GuX1WLz +Hy9sbD8HwBe5fAyEND4YxJAlMQjU/BYqRxYJ49erW51ezg4WzBDOGVySm+kYXh9V +eYNFI/S58GxleiaEkdv5g8LofLopX/tzb22nKT00vtA9ectsKMgGyuui1/SvcWJe +mqgdr7X1IAM5+SSU4faQtJM9QKJOCHYKgc260pb1qcQx91Y2KKpcF2cB9bcoOvbA +QVfE5uo4srgtKJf8iOFZ4tE9FyCiCq8Qt+YxQywJzNiwdjcM+FCqhRife5xXDNtL +ybq4HbrXN4L+aLSSFTorWrPEeAnx+6EMwQpsbdMsHlje7SySktj5CND2+T2qosUG +HvMsbSP0t7SGo0qjf2ofwle3279cCF3qVueFcnznRJ2WfffUaGhlTw3X4i3vGu+H +HDWMfe3KNr9cKBJamyzJr1WipBETmzyMrKl4Z6RU/eCmQEbJaEvc6FhnubXLEMrC +FtJxkIHVIx/VvvBqS3HEm8QCRvr+o10/Ue7NljolDV13B7fljxgvLFyJ8T91jWsz +6MGjay1ZpIYzCFSZkwVaJsS60P2PmdkUweXkeyYQCeYcgBFVEUmqDTk6cni/i4W0 +9M1ae1yHng== +=Lt+h +-----END PGP PUBLIC KEY BLOCK----- + + +pub 2048R/29FB03DE 2016-01-04 +fingerprint: 0F5C 96AE C8E6 9E9C 8E54 2E5C 6D4C D194 29FB 03DE +uid Sendmail Signing Key/2016 + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1 + +mQENBFaJ0W0BCADkmhq72NAOGm9U3TO2frUeYaHXm9+hROoboLnIfYp7W7CHGdRA +g8tTDBVYFD8JFAeCIzI+Ahvergbo6QG4xsOOtffXPClJbGgJuzed+ve45sCY1EFy +h2DIBrxvAIaqgOk5YZSYyLrX4eG7iDOxSNai5j0g+ykb5ZwZCrE1eYWmJlFqJV7X +17+I41fk90ZR3uch7jA7GqOgbBWHk21odSWCAzxf1Eaby8bv875YJU3WxIpfWP0v +XHLP6Cd+uXX9+khvAIYfpDeOuihAxxLXZ9ukOaOpKWwxua8jsJftfxTox+qdMONi +BJ0J7KQn3E+dC+napjez/BTK130Xe07qnZ8zABEBAAG0MVNlbmRtYWlsIFNpZ25p +bmcgS2V5LzIwMTYgPHNlbmRtYWlsQFNlbmRtYWlsLk9SRz6JATgEEwECACIFAlaJ +0W0CGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEG1M0ZQp+wPeU6kH/0/W +Hjo58Ag8A8TRVonAKKv1dPoffc4DYsDIqeGSLrnMWjrToUE6U96Q8krsexfvHBGb +1Pn5YPGb3ijIYcGgkPAFnGs2GYcO3IF2SSNE0hQKT8YHNDRVmVJkw8pbfqLLWvSQ +Sgxf8ZYTuinJKlAVjHlc89EPe0jE956oa7MaN5zE37EXYgsLZqRqkZpNZKkONA6w +BKFmXe1KpcBMqSltPV/z4G9CCJzvg/64BaxXzyzVr9YRFREYPhTGgmrLA5Sb6Z8h +xQ81YvarJbqJwfwMO6q2IF+boAgOIUiNOmNuvDoIMUoihNxK7aXFHcMdB2/pMR7i +lL9gV+MeZ8ASDuaaYH6JARwEEAECAAYFAlaJ0skACgkQqvW13gW9zFMWWAf/brPa +8Nx4lHZ7mGm4B1oF5jwJPEP/2jtV1OJwlki2AMDIxY/1UZMgiPUxzDzAylgxLWPf +bHmojcRypi18hH3iybAQA/DUQlK467ot0BsF2e1QYyQMOe+bIBfDVYD6wGUpfNO8 +JBRpibr3lnUGO1LDB1xK8dvBJ8jLSYfh3BJAKY66AgYAS3vKlBMnL4Tfok5X0fvF +U0/nGnZu3A4h2bO7teqjH8IJJAzpFTCNqeGHwONPaioQl4W1T6UevaW+fKrBg68H +pr9MSUbGZVLLIHvrD7CQWyIcoPkz1VIZxFX1fBTgt5vyJ4tun3X5NQ4yT3NW3273 +CtzeUDzXneU6GvKdJokBHAQQAQIABgUCVonXkgAKCRBh3hHs4nY6c6b4B/93lHVD +AO0C9jnarZ3EuqDCFNgsLukOWUTBcGuwqhSLJP9KG+lP6zkevPIRoOMUC18/brli +H+rJo5DtWBJ9OOUT6Xdv/0gllzO9gFkfQSEUE2NW4K/68krAUJBNYif++EfqsZH0 +gXZrNvG5cyfXgataNWTLgTg5jMto1O1ixjPHt7ATznYorE1/ChAvP5nkq+VXjdbF +hpL1ZXT7lJqgRY21a97njI7SiBMmeQMoJl/QQjQJz1445N0YHa99Zdw+tQZU7S29 +8wIEuCcQJqW0liNN4a/JCnxJYL68z9zmHGYpFlQYmcaeYc8RnkqwYMcUvYIQHeTr +oCtWIGljdXWfGpxdiQEcBBABAgAGBQJWideoAAoJED1osl1SB8rTVn8IAJcgDth6 +JMtz2mX3eT912GGM6mrUj3of5db3PM6jh3hl9cp3KS1TAhiCEx1c76x1Bviyfer+ +OonsjhLzc/E2/TJu628N5964kJAuPCodlzSZgoj9oZ/WThlInZQvtQwO8cXQ3UCB +Pyz/FQQ3qMOW3Bh/9YJHyBAbOqp9AcIw4V41o7egbyMEDtZpJZTrTSptV/QIYj4J +B/RJIUtdVruoDX2ELFWzeiI69rQoggqy3c9FuQKb52rRP3/bKWpr2DtrqiOuAOML +dJd6al0qGi1oqZXWcHA5snklo3BNTehtC+d9sFJJNpHjgLtJ2lUVCLD57wPhCmvy ++9vKtnkt6D/X25WJARwEEAECAAYFAlaJ16wACgkQjlrp+87u9DslEgf/WWZawl68 +/8cf+1auJnuutLgTep87UQ9UgT5Q1f9APfxO/M3LS1olkWujS4/IV1tJdn0tMrLU +CRIso0IkxWHxFg1ZEiw3zIZVWZT2kP9y0paqfKEer6Tbw7kooKAgPD1z69wiINQf +9DDo84CXWQ8zTCZbzNxIu8ggj+NnXzOS7Wcngevo0TEnFdY2IHbfDrFWKNisx/Uq +j7yb7jb57wJfRCf+r4hWDWcWtuCOSBpdcqNGDEEoUwHCLIf29d4XWPV4+xqq56IJ +CcdJOCFB74FvDvNWrw92xr3Wegq4qpRK0XX9PEXiHPFjSOUt7zaK1xaXU3wNN22n +peAPeIxROS+LOIkBHAQQAQIABgUCVonXrwAKCRA5pMd9qXiEsNo4B/wO/jChEmQL +66pIQ+k3egWmpOOa1ERPrCOofkmHcKGvbbUXSj+4Re1XpKylouV62i4yK5lRDeio +rl5dd68bnyNaxmpvDMw6HuTlHOLO1EDBIHXF7JZIkG8plUo+uHU7tOF2oYfdR9I0 +M4DiuSjCgJEDtkCWz2cqE7U8KnsQuR7FkS+7eJBVjuX0CAeoHcahDW6JIZGsnZ+4 +LWxk+RG/bVgzG+Zabtx8+4xatSVVa+QvyP1CzXSNEErO6spI4BtvfSA9xx63Lwms +YqQ3wJQPyuEsx8odtLCOW1bPNUQi5dAJESfjvgY5noiLe58tKeIgKOuMcA9AwuHA +58gkvg45wzmTiQEcBBABAgAGBQJWidezAAoJEGBN+/KFQQq+neMIAKCOcg7l88qh +X5QXCZZyVzDNnQjycYgx7ZZoKiEJREQEzQEMdrWk6jp2R4trzrvFSH7sLjsEfh/W +d0frPNsO5QXOZzxVDzH6BYSJJbeLA82ig9Fq6/LIswJLoxPv/O3ircoLfkw5NW5a +rOYOXih2ghPFIJPqivMOOV/q9DbX+LDBWZ/czrdXy/NZ+d31hDw06b402VPCPuQG +Fg3rc2ZcGJfYdt9tTweXmwFCoiwQ0dBVQg/1r1K0CwjG/8gn/PFq98/dBe1Bbsa0 +ggJ+/H3I2iAC3ftjR3eMzsbKCJpzLcwWn598dnEbg5fG0G6OPD5lNUAAMhMqlbyC +bmvnfisQpSGInAQQAQIABgUCVonXtwAKCRASiW6bp38kKSOPA/9aaiuJC+gncFV9 +9j/30zfDwlsqHHts1XQvjpVMuVZ/1A1aUUuimvTRI4L1L2zqNsVYv10OORnCdT5k +kOJt2IqV7EtPQahJUtO8KmfTD/Z26wDyNSTeu5YAFR23KbaDvvb+nSsCUUj6OrDT ++Q5oM8zRg2W16l63rZ1+41g+QHt5lYicBBABAgAGBQJWide+AAoJENiq8Mr2swcp ++e0D/2kyXod/pTfUpnC4mzFGUDkaAf8m0aHsuIxpWD2OeB2WHweHAd1qXcuai7e2 +KvOLqf98UUs1AXcSon1NllveDw9Z2+E+lp87DOeeTTocBH1Y52f3z+2mdF9KA151 +nvV6RI71BAMEK03u/AZmHIk/i4XLPxRh651Gs3QCT8eJLvFziJwEEAECAAYFAlaJ +18gACgkQl0MBGHCTuEFpZwQA6Mltr4rYb8OlwyRyf2ROknA6hVD7B0JurMPI/5DE +V1l8fXeRFRC6WRIMk3DAAFs8uv6VejaqSiznteLZgYzZmpPN8L68y+KFVZJBq1uN +YRNGW6J6WQJsNsHFMqC54HfdlEOJM+T6cflVKcMZsN5yxlWUe4+awdgKnhlNH6OO +ebyInAQQAQIABgUCVonXzQAKCRAee7PIr5WWJaw+A/9FEF5x1oB3dG64VH63hFEJ +no7sD84D3bTf3GBTuAkxOi/uGlKx4Xd3QuJSPXphJvA+I6FMRl5VfpNO6fc5OBIc +KXXBOuBoMBuWDS+aTR8nPd+llNWjBVICZT9qcNMDeCkueRZBobq8rs7RIsMEbLoR +GXyUn4V/ICYr1IdKLn79IYicBBABAgAGBQJWidfRAAoJEHCgJE0e+ZJRKE8D+wWN +dXh+/u1W3LEMVmlaQ+9Aq4/Nu7i2rH+e6nG8KYQrOSmI3hA1c4Ho3Q6gf9V3WKQw +DdUfY49ZOdN5CtDwskAiQhv439NUQqxxdz3EeOlC/SPIWhcw6NMRkg6hUUObt+jV +JyZ2GKKbSGjvUkfMwtzAUssA/9nLWCinemEKLsDpiJwEEAECAAYFAlaJ19YACgkQ +yNXtKZX2F3FsLgP+JLQbaSDwCMcnUGVcijbi2qAvKar0txWxqwI0ZIbZdIq4IO7t +f4Kmek0hoBQBQg5esMiU6ea5gUhAvuCgNb+lrF03EXpILuO9AIs4rU2qvE3wW4a8 +RXVylnO+tGvacsn6gOJi+CWZm/m3wEMFcgBmbG/VTBP5N7iNu0aY6YMW5d6InAQQ +AQIABgUCVonX2wAKCRAhg+GxOW8HiWhrA/41ZxURZ3Piq5N+7S0npeAdyC+nemw0 +J9VK7fErx9gAo6gbgSzCU8D2isBbr2Gxqe/YE+W3WTkM60YeghWS21bahjryvgf8 +kXlAV+obJvOUpDS7JX381AzCTzEorz1PQIhy1/ItJ8ijZ4giRKl1ToqeuxDlmw6E +7l78ujX3qXHfToicBBABAgAGBQJWidfeAAoJEIlpYrhnjAoDEvsD/3U81GrzKOtL +KeCQn9iQZ2c1WolscovaQZULFuigvUa0TK2053fgEhPpQSUrzuj3IQuN232Amwhg +Y6aJMIA4wwwRMCPYePNZRd2t9p+qq5OHR28p+MZFp8QIWq8tHtLozjL2uyCupcV8 +c9fl1tukdtuBsLSgE4JdnKuBGFb4NQtAiJwEEAECAAYFAlaJ1+IACgkQOCLbR8w3 +Ty0kAgQAq2isDrkRE83FPVbAfxIJ4w9ZcBGmXoZ+Vwlv4bgy7GN1a8zOpJtGcd+c +I7U0ys91WI3ArvLpHx+dXid13bKTJQA81WvZR62Tt9Tqm/zIxxl/5zFlAAjeW7DJ +o3h+cPEzKzbgVan6cpb9IOXD46vZKsBH/P6CnFZxTEJOu+zZZRyInAQQAQIABgUC +VonX6QAKCRCcHL3i41xWNZasA/4jKcnBLRs3d3EPcsvnrjspYHHltrgl/L1WJGTt +sEYNSgYbLKlyKSP8V5fw84aKWcWMo/ybFphoWlhxNzgD9WQbSmdIuG8yr9H584nB +xmLF27rVy5Y9RRRfT8SkrpLzaHwNMB/GLj32bBFeVybkBeLOPvLnZRinJ1xTRg9Y +p7XC9YicBBABAgAGBQJWidftAAoJEG9Sk9ijm6ZV6fQD/imLBVwFAL3Ia8N5X9BP +Bpj+lmWy+6nn4zgfFuckqlc1GdUtXrYdyMHyVBRk2EqF6nDMH0YX0N4kSiMTqu5P +gQbdkHbWh4XGcdULBnbkBCaoKrW6vYFbaDWO/P3GhlNcv7BMzbpOY2FyZsQ1cReE +QuFeKKTbYv1VPFjVXdvdrui9iJwEEAECAAYFAlaJ1/EACgkQ71iWZNQy4Z3SSAP/ +UajwhakNQR9+sd1nkk6tTy3yVI7tcp3Do/+r8+t5B8k3+z4JL5nO3hRQiSQ6MD7x +LqyJ6TZorBFX0zKoH/ztFLVB2iNYzAn5vhRPBTYrwJjFUC01vPbMPj4ti7/Ag60k +ZhTWpjviluuLoft8mYimE4aOwG+KzKtA2ClqZLr9k+6InAQQAQIABgUCVonX9QAK +CRDBnB0lEtNGHe0+BACLJTAjo8rQOJShKAO++vOtIUwkCxgbtWlQS+jT2BL5c6bM +OrT9jmMlN0w7KPks+tBvdKo65F4Ug2n0nTHGy3uPWHf5mRjFzqdYUbMDUPHvOVnX +ufZVSAMZsJB6wVWUfyabq+Wt3Mj2QgW8FzphabhxLTNgBMh8lNLIqapfyjQzWIhG +BBARAgAGBQJWidgIAAoJEBj1A4AkwngCG2IAoLOPIwc/55fNRdzEoUgpzMERrGuG +AJ0VSfxXMBYkP+ymIR5Jw2pSdMLH2YicBBABAgAGBQJWidgdAAoJEHxLZ22gDhVj +zTUD/iiVFIREJNK14WbEGlPdifD+tERp0y82sI9YSGmfUD5ClMWN1e42+5E1kP2d +9s315xMwK/QTf9JkkYiz02m4NjqLIskN8/eXhvA0ZK3MGlr5F0BjiJe6kJWv6Pcv +9ZYKXqR9uRr7J2Ep3/9X2tpYch04X5blN+fQkRakFmpHvArxiJwEEAECAAYFAlaJ +2CMACgkQ1uCh/k++Kt2AtQP/YuRNeeJQhMgWiFWqKsxjrNk3vBnOdLNzUsMPJhIa +BTestCw57mYZrbuJ6Yp2MTbTKx6OMOf/EV646bwdE6E5FjbzE5Idyltc7OeWJTl4 +mCTiyDK/8IAfKwDX06U7GMwCctGZiAB6pCIy0P/nGRD1xG74/0BsfG2bJdOxbBCk +bomIRgQQEQIABgUCVonYKAAKCRAh+cW892qb9fNPAKC9Qk4QoSREh+xNu6n3yDLL +GDA/9gCg5AD6MR4MAMwfCWlSxnk/ElROWXKJARwEEAECAAYFAlaJ2DsACgkQvSdt +Lm/PqIVFzwf+MFD70H5eMnFgELQKRExUJMwDYm8O17eMsPIAFAhM7UPIbvIy9yVh +E26a2BVYpQplwI6MkyNMkqwW9gd5JeWfV225bcrLwbhEJwz4P+GoMrigiWhMueqx +vpxQlNVJHdytGHp/4Twe5ckziVaHVpnbbMzBBL7sW8Ia3VdGF0PKxhPbh+N0H/mo +Jwrcf+SHXOalzEjVEpv/Q8C32qGntPKo/1tRom+GVa6p0iQc2sZfD2Xproi4Fb1Y +xLylv3m//FyiV8x8R5by1EVbgNtENPPsHRn1vN9xQFPqyAztwvpCGe9hicR13hfN +ioSRVIozr+NVE0NisZFTVD3OLioyYOhknYicBBABAgAGBQJWidhNAAoJEMApykAW +9MzpH+MD/iPC1C2kO/zM6oIo6YArUJON9kq8yRRh4JpT0yNldCD3VKFN68SA7VTK +3Ba7e/2I2m5DvJXRPxDELhj3hkN/ebrKFp4LEzGwVAl4/vLJKimdmSH0RUtjmvZt +QwDvv5ww9oHzorrllT+NTA2DK1neCS+nXg55vCwUKk7sp4o6MNNoiJwEEAECAAYF +AlaJ2QEACgkQvdqP1j/qff3bkAQAhKrpj9/l2adizocP4B4IAhnK87UjbZDBn3Zs +KqVIJzatPbkyHusaNx7V5x5/5QzjRYG1trpbgZovKPePATJs0osr4CKWe8PQHoVQ +Jyn3r1aoUdLyekSbSh/QLEMUn8/l6PbW7xML+gYmFmomRmFH1psEp2eaebKSJ/Ln ++ZVRY66JARwEEAECAAYFAlaNA4UACgkQEJCvIKWqW+bDWAf+JXXs8Zww0VJpQoq3 +ALO7e81JkJp1QPZ9D2pw0nRApV9hF0eArzH4rpWNImdkEiU1+S/LFbFaSW+SNZSo +sVWU3JTM7AO50AbkxHWO+FdpCydEOVl7CKkZO6oGWnbajImtOO5GbipHRM2j6kcF +1bX6uLvkke08d3Z3hO3mHsNRFHzOBn6x/DWW03yiY/33qVfPGfddoOtQ3RqovY8C +Grq/KBej9ffpBlePp11K18RNxBi+e+p2PelE4NsuGT/pybtnKf2r7cixzgga6kPX +KmKZ1b1qtdoWGTp9MXYv/l1xBuPqg/IoXSUJyagDEhLNWelU1mQaeucOIMD3789d +vmqi44kCIgQSAQoADAUCVo0UxQWDB4YfgAAKCRBmGzrW2Cq70AwLD/47HS4uD9/g +OItwMYIPhkhJlrtef/fHCrP29MztyBObmTRslDhF1e3A6BkEBd57w7ArB+bWE5Le +fIxkxOOwf1rT535xajRitgRptL4CmjTvuryQqD7Qm6lSRzes61xBRVZVRlKI4nF6 +pIb7CLddZDAb1u47aOiPyDEVZ5L1RVs9qwpkc5u/TWrpXzgEUvvjMDtLGTwLb3Dc +4X6+bqw89sEydWpim0YaYaQuPWfB1LsZ4+A1TzM6nGo/9+UJAenILuNF7H1BGhyk +nt7Qk/BRjqR9+Qn2z/xqik7OxIlEMy9bJ93DKa/AaMIWmI0qK2FrtEknPSbA1G4O +1vnzD+OdqLr7vjedeP6ySqip9EldpToFePG+MkHT1kY7Ziy86Bpa4lM9In1Z0sBx +BS2w4suT4jUsKnPWPz9OrJGoG9tMvf0rZxeI4KQ6S54gdBQqzwKspHoTVY6GF9gp +E5N+qWpi5G4Ej/R0WI3yT1qsSbWQ5tDAsNDEsS4U+dhDi4su2VMONLcEtKkZ5d2k +u5swZp0mvXuU0iPbJvqM9vTrQpSPZ9W5TDLini+OcyS1Lb5I4XKIZwEh78i5RgMJ +LZ0G8zJnbKtPsbSadTle0pXpEmi6Kcc5sJW09/Fo8iqMs6GiA9e0LOAFolOvU3VZ +Y/Mgd4K9mta8WZls47vfc7EVNok6ype0a4icBBABAgAGBQJWjReqAAoJEF8eyG+I +DJ5VFoQD+gMNSC7BW7IL8MgldIIeHDyxZSIFTSaTmcfuIbqhQKaYs6MHnOD5qXNm +I63vgg6hsXMWP1PsnFD1mJS5IUkWsw+M7x5RTOEbtMZx7p5ToORLfpnlk9RrSvUX +pxDFReYIsv5gKVtTGTFrPwIiZ66mtxlT3OYlT1c5i6/02WMUBKV/iQEiBBIBCgAM +BQJWjS1MBYMHhh+AAAoJENv35Jw7dvIsmy8H/j4slUmA2pYNu4jxd4vlcHsjkFA6 +KR1jeLs6FVbcsQUGZrP9wK6khpEq95aTK3t+cSk5XTsBJ3flviEauICT6g1aoflg +TEwsSY1FZL2ILnmMBVP/1MMGsvzAMd5AVVCkJet3LtixggYxUaeYj/9kBvy3zqzT +2szgKkM4q3k43PzErB5YejwCB0F4K/nj8bxCbyq3rzNdo8P2LgckGoi377i4z9S0 +b2dSLx3ztTl/Qb3/JUc7hSQkgDv5q1aMHa5PdO1EDqG5SCcHdYARYADpWuLPa08u +WC8lmUV2PECIGjWB4rRC/h3vaPs2zrKQEYOpI9pm+BYdLnEyj7t2gwI7IWiJAhwE +EAEKAAYFAlaMr98ACgkQ8Ar26sJF0gt/cw//XGfqrJsRsSupi8ARl8uJ/fRDBHWH +aXc+HAJXwEN6OdeOH3ihZxRkkS6JDEVHhxUX8R86GDTxv9u49CalMVPYZUbDc3qi ++PxC+noFiEuooqxDXnokDDryDluQUdBmRUMzgll5H0AbqtJGJNefDJvN1+Cx1K2N +jOPAtk3HN7DLRTBtwg4cy0Nok4c78uw7D9pBTOQKvwECrkmLJ3lmm0JBFPk8MQ+n +z2JkAYhd9mEZ2pEU7YA/9IBnMEkN5BSafA7UZxX0o/UUCg5nuGWkiVM/9KjwhnwY +jIGtncfHMCOxmG8RNXI3+rC95Y+RnQ63wD5AnubXs3el+f6fUoard9GvHhftKBwx +SzHWB514BGzuuJwglM03MRZWj0ZEguSLUr9uukehcu3rB/4xrG4Gx4wCo/zYFDjF +q/WQ9SJO6wXjQALLD2QJQWP7zX+88Bagi4HsX6zL71FcZWSjUnePGq2v+FZ1w5yO +H2OPYt2TXvWsUCuXnBwhIGSJk/gA+vAivFDU6Q8ANTWWk8j2sn4GuutIFef5YMGg +rjF4rxog1S/1MhWQwKFGU4mutKek6bvp4xzUtBmw4mrZ4e+a2UjcM+i/X16T5HY3 +y9yK1T241gTrEr8ItgbAXtUq1bF15hwZAiFXtXkTE/6YgglvZZgZ2NxRODc85lz2 +HMWFYuBHoFEYA1+JAhwEEAEKAAYFAlaMsBYACgkQmCG1FbHtKaTn2Q//QIstvcA/ +S9dpTOZpMX4Qfg94sKERW60oNKha+ibCujFRW2fXi/I5fJ/C+pi9xApj+a5Fch0A +OlZ9fkr0tm6ja9YoMCpYyQwwzMyADzDUPNO9LAie1r+tiMuZG748Y1WrJajufTZS +WSXQ2LWNt+A2SgcZk6pCsqsxJB7iwamhzb3BNhcAFRtJxss9lsyqUJu6eAewZN30 +EFEHYAgqFGE3kF7YoCNpUjAwiMpmsYpToRmue6cH6s6xRtTIkeQWdi5ZUYPkzW0y +O6Hg8A5ZCfoZAsmDQ+hnyoHtwbh2kXo6Zr8WFVCnZKjjtFVkdSp1wIVrQJra3fAi +lZbO/KiC3p4hwCisrg8ACbejaWSkzLZl2JqQuk/xYYCKcHVNY+TZfOQbwIRCrdtv +ClLu9K+4Xma9a83QRXhkzCsHQt1FW7GP0mLnRsIZf2WUqoEW3wtD2jfirKTUKz8G +qaKSXztljqgAvcSkw7a+sFwwyFgCwGfsoeqSqsHtBRvRmbX9E+XF7U0+K3XR5Vse +i30vtS4/NeEGuo+zIwMcHg3eFcXM+Ryk3iqr6LaQRwm7ymY96SkVvSx0rsdXlq/t +Xh313qvY2XOHkQ+1mu4A59G4BnHyRhBf0q1aYnx8tVSETlF7F9cVFmQX8PiuGTQh +bhK8/AZD+ea0R69RsnaaEaENxIeMaV9MznmIRgQSEQIABgUCVpD7bgAKCRDEsQeY +hXlqIwpBAKDPscvvmpsiF83qhzLvBwDXthPnRwCfZj0b5dNkYU6j9saK5zGmHMUC +q1CJAhwEEAEIAAYFAlaRcrAACgkQi+h5sChzHhxylBAAsfmP2c8PNbTJNYq7T0rQ +bFYdLw2eORL/Xo+Tp4/bBGCtvw1F4+fenm2811FDGAND/gwdGJqgK77twqD0Dhi/ +gM1+o5Cd4O5oCsIP6gZQBWR9mJze2OaENuwy3U/zfCSZ9VWPKXiBQ3VaCG8bnoF8 +rHOf8G3tkWEYDhGUfkQXzzoSW87umb8wWmxpcq6VBignr5zAIv+A/A2TZjpJDooB +a+7foZr+pj0FPIQdDtOJFJT3r1MjaNrU4edy6ngcAp+at8GAVPuJU8hS0DMntA8z +sUo3SjRc6YCpPenGCW51aBXPzRJxX5i3a3r1RlZM5R0TyJy2aIF9gnJs0GFien3k +0TsMElJYXohnhN7dX3MWIhsJJ5oQlCoYfgXJPeWZpUUYvI0HagU97vtl2RYV0n8w +bIZIt+B8cpKYaoc+GQmYvvieREH2d0LlW9UBbBdSl6XhmLE6GMLklMp/+ciLs+PS +H076mQN5iKDP5BjDLs68SN8FOrKgXegCzFG2SPeCb+NQll1GRqluDp64mwdauPRn +SpJTKhaGm/P41QOb3ecdq+NsG5IkD7KcHCdWj+IR9xVJ8BaRijTuTGyzbrcrKFt4 +Uc1SX93UxE194a2yRS+cncprF7Kr0tx0C9hO70BR/9Q0Ftk7RW8EXSia2mQol2uQ +jowLuqJw9fEtFiv2z1xiCiW5AQ0EVonRbQEIAK8VvUV7p6VMSKrUUngF9xxVjfZp +d8aSgZKtunfZN32caGcy/JLOzL3zwoqOX7aUswfpURoaFrWChKD6sg6MwKaOLyIz +1DuE+oF/JM0/d6GpoNS2HRl2ubiq6OOhaLOCSFyfh9IosyEk5trbJyFBHt84BMmu +9Imlcuj+OLHTvR9QlqiBWWucplxtuevKKEhbhDkuHTiWgp/I8bi0QXj08dQ83XYY +FKfiOEVqdteTt2u9oo+znLwTqEZmiYdS3AXLVY8XkxyQ2hIp+IEnKFUGxWj+IZun +39rH6HJpwHvWveLJSiecz7lpwyAIuUaWYUX/Ds44caJwx2P6Zf1fdC48y50AEQEA +AYkBHwQYAQIACQUCVonRbQIbDAAKCRBtTNGUKfsD3uWGB/9DjVbh5esM1127K2ab +rwn+y6D+kwzNakJ/e10EF9Z85xb/0Lhsl0TPLLuc+WrIFL/p0ljaWKWW2CeqD5zr +rK/CTeRFcvEr+1VH53622u+f8WtOnrfTPdp/5HhthmhZgt6Tsk6ZvHe2WbtIcgY5 +WFeQx9w3uflYHkD9nrcmYJ9IaHieu+RKLrfr9W5gnUMIEyHPvP5rcIzN+ch0Gcy2 +pHSi3VRAkS8tAD+XCIrtuhnn1rI9O727h3ZXTR+IX7cRspbaRjKfIrThKPxmlbEI +98u9R3acGnQYo++KfwokzE21O6Rrr99hpG+SzTLBoXcmGG1AqK/02SN6wzBPPYDG +j68I +=MdUt -----END PGP PUBLIC KEY BLOCK----- @@ -1581,7 +2533,7 @@ ZNSR6KHm3A2ICdH9y0fM14u2NAlZuC0QzqbUotpwSXgDMwm3P4He9CwO7IEp0e1l -----END PGP PUBLIC KEY BLOCK----- Type Bits KeyID Created Expires Algorithm Use -sec+ 1024 0x678C0A03 2001-12-18 ---------- RSA Sign & Encrypt +sec+ 1024 0x678C0A03 2001-12-18 ---------- RSA Sign & Encrypt f16 Fingerprint16 = 7B 02 F4 AA FC C0 22 DA 47 3E 2A 9A 9B 35 22 45 uid Sendmail Signing Key/2002 @@ -1676,7 +2628,7 @@ AgAGBQJCGjKcAAoJEA8Ne4Mg5YjtoAQAoIvQpUF9X4yoHZWEONKNd0xTHg9dAJ9P -----END PGP PUBLIC KEY BLOCK----- Type Bits KeyID Created Expires Algorithm Use -pub 1024 0xCC374F2D 2000-12-14 ---------- RSA Sign & Encrypt +pub 1024 0xCC374F2D 2000-12-14 ---------- RSA Sign & Encrypt f16 Fingerprint16 = 59 AF DC 3E A2 7D 29 56 89 FA 25 70 90 0D 7E C1 uid Sendmail Signing Key/2001 @@ -1778,7 +2730,7 @@ RFljVEUVKZ/GGg== -----END PGP PUBLIC KEY BLOCK----- Type Bits KeyID Created Expires Algorithm Use -pub 1024 0xE35C5635 1999-12-13 ---------- RSA Sign & Encrypt +pub 1024 0xE35C5635 1999-12-13 ---------- RSA Sign & Encrypt f16 Fingerprint16 = 81 8C 58 EA 7A 9D 7C 1B 09 78 AC 5E EB 99 08 5D uid Sendmail Signing Key/2000 @@ -2712,83 +3664,55 @@ ThUt9uNU6kU29eAHZEBI4WheX5e2wu1BxgjVAn1LqiPRyPK3jr9kzy4= =eOEB -----END PGP PUBLIC KEY BLOCK----- -Type Bits KeyID Created Expires Algorithm Use -pub 1024 0x22327A01 1999-05-30 ---------- RSA Sign & Encrypt -f16 Fingerprint16 = 03 3D 49 6D E4 D9 D6 01 F8 9D B0 3A 3D 68 6A 86 -uid Claus Assmann (PGP2) +pub 2048R/A5AA5BE6 2013-09-06 +fingerprint: D0EF B47E 909D 1550 525E 9DF5 1090 AF20 A5AA 5BE6 +uid Claus Assmann -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1.2.4 (Darwin) +Version: GnuPG v1 -mQCNAzdQxmkAAAEEAL9u1z33O6eZtDdHyhLP58+gXXxXnUR11rZ5jccPp5NkgXa7 -Mg1B4E8CNrs0WeRlXe9Yiyd3sgtS9oIYGhpw2YXs+CDoX5QYl9spiYeDN9lxox3g -XGdVYtxChCOOnD0iLxbsgO485zkAR/xcyC2z8RpOYzf2sTSgf88etQMiMnoBAAUR -tCtDbGF1cyBBc3NtYW5uIChQR1AyKSA8Y2ErcGdwMkBTZW5kbWFpbC5PUkc+iQCV -AwUQN1DHlabmDSw+b5glAQEgBgQAjHLOkeHu9yg/6iefhesoCz/w4kgETjcuxa4m -Chun2ELJqtn6oi3Xd3LBNCttSDj09u1rVLK2YlWKtV6gB3FAU5KD6JtkGenN/2mx -KAczz/zfj4eT6STHIBxTUe408T/0oQex6Y//U3nD69KMCtb4Zg8YxJPEAfwHQNep -ABwni/mJAJUDBRA3UMd8z3PI8mJUAQkBAWNTA/4s8blaNZ/U+zVHhEIVzM03QXr4 -3hoc8s4zZyQ1CNPJaPaZvFUn7QoiQOUyWMGk04BEecbi/ByKxhISS4Fu2ONOUcK2 -AlPcpMeBDU2GItE3JFY84UGl9EPQ7F5ZN53X2YgRvtTPxk4gEc9CU+cuz2KkAy3j -u7bnC4upiIl28Vlr44kAlQMFEDdQxmrPHrUDIjJ6AQEBg28EAJL58R2EIDh+UIzb -7WGfzmzeBxUFYvh+OSaIKZl/M25IZjF6lR+RugzAPlZjlhodzvk2Hrulp6jXHelp -Fnd5XcWZbLWfSl+C+T1zdE8bnIKxWPKbvHyjvxE6URWbf1gY9qNCeGQ4IqKyRYLS -xqwi/jGPN72lgC7+Ias8I9ACKBttiQCVAwUQN1WXf3xLZ22gDhVjAQELWwQAn1HI -NXHF9DZWi/WCzHvgtEYn8yrGBXfQWjZWIvJTBBaIZv/aAqNhtZrwdtXvoNVGg/+V -DFFL4PmHsKcLGFh8REIP7wOl+N99DsQDDJEwPBYS3aXNypz4wtC+iHF6qLeMapv2 -gZK7xrn9Bckg3CS+bQxEKC/tWWr8y2r0+C5djQ2JAJUDBRA3VKawechJ6GUP6GkB -AeYfA/4yqbrPQ23kk31Pl3b0RID2MkyB/Ib4fpe5URYDx37Y+fQIGbXI11NqqKDH -5TiO3WlvwscbCFEYS3Gu2/6WiJZ4Bn6oU34umAS0UwbNxNbeUUWYxce+u/Tkqt7v -7/NRY01uBvWdB15uIS7fenCFBokV9FpTfCHa093H3vjd70dOtIkAlQMFEDdgM49u -AhsP7LmozwEBH68D/iFfvhk1mzRg324gqWlqR9xxlFWvcKO5QF8hcNnuu27cUSET -8tRnt3dSQOil6HSV+yM+ZSG+q8476Q2yC+B/tntdtCyNdJCXlsaXAOmIp2WC8Nki -n8ia0dw7PYxhoPeYG79mVMOcy5HPfbkd6fr4TYTb4xbVehE4O+dIuCA/QQpviQCV -AwUQO1XXU9bgof5PvirdAQH2AAP/YxBriSGcc3VMPN33UdAEV+5s+sSqQRNy1RmR -qe51F1fiMMRutqpUgfsMUj2ckUgPiMeDxF69mUN1ls5egnptUVoM3APOlAMned5K -/5vyTrP3smgJJ0NvLj2pf3ScLoRp7bKe66eY1WQLSgykTIkjoyRtX9Wo3Ou3PovY -5shrpDKJAJUDBRA5J2t94dT8FObQdHEBARsfA/9/ilJBvkT52/+b5ylmw0OBExi1 -BYmoPwXVbA0slhrX5deIN5QobE5Zc7lydUfBa/CI/4KsqFcHH97pYEXxTw25/iuo -eoJ2PVvBDfWVLKbCAkZlX23zq4kiv2boJO6wtKNEUhvaPY0E2pMoDONi6R/NurQ0 -pApPjBLLOXA5YdFwDIhGBBARAgAGBQI7VK6OAAoJEKK7+yQM+Vb3zZYAoJCqpiXc -+k3SD7Qrgk5cCyYnf70rAKCk0SNyD7KauCUCjULUNc42TjIbGIkAlQMFEDtYywsG -fl7Yv7VlaQEBMfgEAIi1anL/NDvkNSU1memJ5rrnOdFVVs0KPMrqON5bvT4nZ54m -j4FvftCY2AmQasS6AVsUnFbx11HpEvFVGs8dVfrvAeNy6RiRhlLKQJOncmECalfh -SIXqPke2iCW6+zdG1T/gS5T9T9/Lf2c9FQf0FjURAi3ynDA2RBLA5FDsI8v3iEYE -EBECAAYFAjvsNnUACgkQv7Z+b0EnikT5AwCgz/MKoVVRzKZrQqBUfaR1fRZEk/UA -oMfykSYtxU2vtTn/apyZ+pOuLHRNiEYEEBECAAYFAj23ySsACgkQn6pzboQXLRHC -lwCfZamY7M1fQX/9f6wQGq5sKi9EHkYAmwaDRCa9o4rHVjogkl4XVBp48jq2iEYE -EBECAAYFAj73BGEACgkQuCGJAp2ytbwo8wCfZOFd6B+62j/dAIzQ1FIdhcAFJfoA -nA/Pp6NUFLzo5mfbdxwqcLYwfDSLiEYEEBECAAYFAj/V+mQACgkQUhjaYK3rgYu4 -wgCgteBhYhYRwtKbmpu8cH7mqpPoypMAoKPPA0id1LpOsvbFuzspwMYET/lhiEYE -EBECAAYFAj/V+0sACgkQpNZcM1A3ZmehNQCgv3iGcnVQrzG2y2AdooU3WzukoSMA -oMk4mNBNs50XMJaxUEL0A5DHTXGviEYEEBECAAYFAkALSVUACgkQGFnQH2d7oewC -6gCfcpu1YGWFRnCrwNWRQAJA/AKR/Y0An1ZOpTKjhGKTX7Pc4sBDWULr6/AEiEYE -EBECAAYFAkALSYUACgkQgcL36+ITtpLEOgCeKB+Ms1jRlAG0jOa6pszx7AqmB4cA -niO2Ewctj86NRPQ1ihvosesJD9+QiEYEEBECAAYFAkALScoACgkQa3Ds2V3D9HNq -SgCeIXXFJIevu3l/mVOQ1EHAJQpxJMsAn03ESc9ps6rITIjUT+8QtXSbMu2qiEYE -EhECAAYFAkI0Lo4ACgkQUzHnHXvkL+OtSwCcCnP+FkbPwoOaLnaRZmpGrboGIocA -n25jiOYVuqz9nQhdwBxycwBx4MDniEYEExECAAYFAj6IR3gACgkQ2MO5UukaubkY -6ACcDolFeHT3Gr9tnkmsOgTNk3RapusAniFhht4QVOYPmyXlMk2XzHzuzLEuiGIE -EAECAAwFAkGCMuMFAz5lPgAACgkQ+IUAZ7Eews4XxwH/eKhCQL0kShEQjr1aMtwX -RpEKed88kbC+KXLr4Jnly96l9qNMO7WL+bhPfa2JYQHUeNf2u3YeJF+JaHmvzKFL -sokAlQMFEDtpzf0j5GLUv3ukIQEB2C8D/0sFqS90GMEyPKVtrFgjq+ARQ2Ko/otc -/OIIndguYjv3G+bdRpVynEk/Dedt/RRn/M1jAC2IKQDawSB9c6lY8UKkAEhD0nwd -I+w2qnGpiHsGm2UhsYGwp+BRp1HKPtpriyvwyMRtyrgf2H3v5g2TsR+VXbEZ9fhf -gCszm+1aGukziQCVAwUQO2ojRpgH5lvYS1khAQHBHwQAvGlE1z+C6G385T5lSFF9 -MNW1qXmpzQ7xtGLYHJSo+xCRQbKYk6Ewm8hcH6Qi9GQnNH2zGU1E5zwJUPEQN7dO -xKNAn8+57gl4KyG2qDpeeAwu1VHSyi7bTo7WEw1tOm3oAK93F/AjsHrFc5oKhM8H -jJ4I911BawgT7wUSSMyyRPaJAhwEEAECAAYFAkF+tPsACgkQquPmzmahRGiOCA// -ZcA0aE7UTcR1kduVRMtqZejIXviujY8SEAyk2F+hymP1esphc1vnw1RksuNPXswA -XeZtSiUESwKcr4z3gaYUPaH8G5acQ5eT5zNzWTVXFR/1Ys6uetNxLTFITjzf+4kE -uaODW++NIrYBWVs54cA2ZqyDWijG+d3dbhtBbmtNIYnA/P8qgaC5x3f06fgtPaZP -gUTend1s0uUez7LrHXx4J1Hftz/UnfNaGidbQtlSB2eQdi1ejrhiAFtmcVykGibK -/N5QdsroJu551BBl6yl9Q/ymdf7fHgcFLuxDjqiB9Sd3SsY7i4M6EzN8tC4XnOgQ -EbLQU8YcY//ZgYYJG6BFZBW9GUp52SZMOsrLj6I5DQSPBuejoJrCsCAeJ5kaV+li -pKW4sUVGmVWYuo2PQ+FqsUBhI5vei2sTMAWO0v65revDoaL86i9UtwIZ5iToID0w -PE86SUpypUC/sqrDdRBjG+JO3GWR+/UNdm7OzyxryhCEq/KY7yN8bjB7T8DjCRCo -7PTucFo2QCfagwpdf1VPuvIaesLy25R/9K8+tAVrAOllCqP8pA20d2GJGGbC99GF -xsagVq0PL8eq1KeeWO8LRC6R4LU//Gee8fWO27Xi/1h/vlh0SJUYppCeM6I7hfsx -DnF3FZZEzV7oqPwC2jzv/1dD6GFhtgy0cnyoPGUJCyc= -=nES8 +mQENBFIpKtgBCAC+QSzX64hPzap1qLn0JB0nxCFJ68U8rkqv4OatMN3bGZ2V4Qv2 +va1zRxoE+MpxQayLe/VFjyAP+hPHtVOAgHzTUGYNIxt8nGXnfzL9C3KBgGLoh00X +PV2RiXvRXoo8b5kamHTpe6c5i6KOT+6YjSnpnSgDebN/PSco9JdnMRwsOGwHQaQz +Sm2HND7jYPj6lWUqea2U66efNYG9ir9Jxsgi58oyrMryX7lA2DGScUU/RPrqF0P7 +jRi5y6zgewMuuptmBxCb62NJRX208ZFQ75qOwtsZ+Yh3PnEj9hGjy6YNy5YJX2Qe +e+neWj/2UYKfqIiOX5AHkbK5Z3Q/AEeX1bDDABEBAAG0IENsYXVzIEFzc21hbm4g +PGNhK2dwZ0Blc210cC5vcmc+iQE3BBMBAgAhBQJSKSrYAhsDBgsJCAcDAgYVCAIJ +CgsDFgIBAh4BAheAAAoJEBCQryClqlvmEWQH/irkPN9Br2kJUN3Vt1/Vg7kxssZS +g8EIeNeUI99lMmW/4MsmwtisWa/+n45it/mVvS8wIIHy36N8mRTr8gRTDQ3UU4Tm +moD6s8RCauPHvogVFCue0+D894TLqMYf9MSFjjyDwOZHWGyLQ5VMWcPCrYJe9jGH +njZ7gojfqIBfJ39dc73cyBTppfGW5A1Tgf7vtmwBcbzSpq1PM5g/uJgIc6Q27eLa +WMMuY+orsdqEyHagH+ZObVq/ej498VNimSZe8kVsYzU7UXa+9dWsP9uEczIvxs5n +R95WgLIrMxucJ8oIvMro2VCs1+gCm5fIRye6QEn6p9R1VEpDZJB5RN6EGMyInAQQ +AQIABgUCUikq7QAKCRDPHrUDIjJ6AamUBACClQmgowKP9/MiCaiL7vtjeeMBXFzT +zdbQrzsGF7T7Db0IsKPc1aSX0mQrASDY+ogibkOiN8ueZQDASCQlzQukM2x+Cp52 +PVYYbuMf2RBCMQ5uCxVbBXg7viPs/x1+S+y+v+2Ynn96zotseMHH/BTBTSd3ly/e +j0koq7fuF35DcokBHAQQAQIABgUCUikvHAAKCRChbtHAE+6gQafaB/sFhAcHa2Pe +xI5x7Q/TmbNagwpuVzUK0rlLVrJJdD3Pm+qBBPWy9LdoOfw1lQsPNLZeGu1WpAOV +SozwlAA4ZWJGOgqZIqneN76EjR7SQgVIswyfs3R4LESX1bC+kDpxBFu8kKb3+NKj ++dXYDvPWduRz96Ei5BqWkD1CyY2MRTAPDKdNCtreNP3ot9O0K+Y7y720PaP0sNOI +jmD1dZVcUbyQXcI4OPSCOc1QObnTGU6G9GxJrp4sN2r9SzC1Xw8kPd4xLn3Y1wzP +d5We+9j0NeHBsk5hgx3LwLNs229x3tXL43m/dlS09l40U0bh1go5hvhLvJPN0UZI +dIWz4g1iYuFltCNDbGF1cyBBc3NtYW5uIDxjYStncGdAc2VuZG1haWwub3JnPokB +NwQTAQIAIQUCUkzkGQIbAwYLCQgHAwIGFQgCCQoLAxYCAQIeAQIXgAAKCRAQkK8g +papb5unjB/9pq8J3/qZGIIpL5JQJCWuyuQUVze/qsGitLmnYecej1njcXDpAfglG +prCx0xEDWnSPKLgbnPmWmIP4Dz4gwhBAxg03MK1es7kj0P0HcqYb/vMGdfyX/vkf +RK956b6LfuMtvEjmQqKP/My4vU+vF2y/bTsg58tbeBXzoS0+BZyMVjvHTOBQlR9B +dbYqCDW/Rj56xwULFnwjHXVteqZ+DgBy2Hs9zBDPRpogRYks27ugaO+YDG/SYPGb +jlZeTkfSfTGZBUAJnCdla4fR+ytIO5XSJZbYULO5cJbnsmFcn/hESdSfYTlkVdKQ +yyR9uMLs9QD+ZSiXq5lbHwxxHkiVMafNuQENBFIpKtgBCADRVVY4ct/tk4++hjUS +B7c6XR20jjFhePxSIVpokE8fqEzO22jrA9/pSQX8ZaDXTFEs/0hmstVcy7MQtgh+ +zEClNRLK20EseF8t9PjP15BDGg2SC/xCdk0j33ERzeXaReID7+3//Td+ASH8IX6K +p2dM+xLYVqOIpoYR3QmFuSd3Gja2hsdsY6oA1wkvow1ctp+QGguJgpuOpoJFyhOw +oJC0mDarawREtJs60iN8ZGfyn0zscGAZbPmY6FZ4hwlFEaA4fho8xRVmZRLrH+WL +xuzquFjeoZAvEN40GoYs3y1fR39/okM2A7HLJ0guezV2CHBLmqxxCSIN5G31/BKj +mQO5ABEBAAGJAR8EGAECAAkFAlIpKtgCGwwACgkQEJCvIKWqW+bQNggAslc2YoRv +WI1SBd13e9+ztEVyic7uBNdPHJO1MBE1XRg6Kv01IHA+Dj2LwM2EcAaq+9LTEjiY +RGI836in2IsHMynDAUybXgJ5zL/KRrXbbnPGBbGK9wxELMtNzcDEuonjVzlgJIdC +nlFEU1xI8u1T9IByigU/4k7Gyr7t0L57UAE5uJtTYGjJpLz6LUDhEsg2pPx1taTk +Nq5nZ04BGHdVToZvUf2ABdQnWx94uOCRJp2bLJiEepNtaL2OPqe2EQVF7ia2Y0PT +4xu4WMmAF33GA/SoxTGXsRIM3BPfW/1veyGGS35+/c3k05VPwuRnqYlOy4dXJIGL +q8WNeh9erYZriQ== +=VuMX -----END PGP PUBLIC KEY BLOCK----- diff --git a/README b/README index a87989846590..5b11d025b866 100644 --- a/README +++ b/README @@ -431,8 +431,7 @@ makemap A program that creates the keyed maps used by the $( ... $) expect to preprocess must human-convenient formats using sed scripts before this program will like them. But it should be functionally complete. -praliases A program to print the DBM or NEWDB version of the - aliases file. +praliases A program to print the map version of the aliases file. rmail Source for rmail(8). This is used as a delivery agent for for UUCP, and could presumably be used by other non-socket oriented mailers. Older versions of @@ -447,4 +446,3 @@ 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.96 $, Last updated $Date: 2013-11-22 20:51:01 $ diff --git a/RELEASE_NOTES b/RELEASE_NOTES index 18a7cae9faca..6a0f0c52f844 100644 --- a/RELEASE_NOTES +++ b/RELEASE_NOTES @@ -5,6 +5,124 @@ 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.16.1/8.16.1 2020/07/05 + SECURITY: If sendmail tried to reuse an SMTP session which had + already been closed by the server, then the connection + cache could have invalid information about the session. + One possible consequence was that STARTTLS was not + used even if offered. This problem has been fixed + by clearing out all relevant status information + when a closed session is encountered. + OpenSSL versions before 0.9.8 are no longer supported. + OpenSSL version 1.1.0 and 1.1.1 are supported. + Initial support for DANE (see RFC 7672 et.al.) is available if + the compile time option DANE is set. Only TLSA RR 3-1-x + is currently implemented. + New options SSLEngine and SSLEnginePath to support OpenSSL engines. + Note: this feature has so far only been tested with the + "chil" engine; please report problems with other engines + if you encounter any. + New option CRLPath to specify a directory which contains + hashes pointing to certificate revocations files. + Based on patch from Al Smith. + New rulesets tls_srv_features and tls_clt_features which + can return a (semicolon separated) list of TLS related + options, e.g., CipherList, CertFile, KeyFile, + see doc/op/op.me for details. + To automatically handle TLS interoperability problems for outgoing + mail, sendmail can now immediately try a connection again + without STARTTLS after a TLS handshake failure. + This can be configured globally via the option + TLSFallbacktoClear or per session via the 'C' flag + of tls_clt_features. + This also adds the new value "CLEAR" for the macro + {verify}: STARTTLS has been disabled internally for + a clear text delivery attempt. + Apply Timeout.starttls also to the server waiting for the TLS + handshake to begin. Based on patch from Simon Hradecky. + New compile time option TLS_EC to enable the use of elliptic + curve cryptography in STARTTLS (previously available as + _FFR_TLS_EC). + Handle MIME boundaries specified in headers which contain CRLF. + Fix detection of loopback net (it was broken when compiled + with NETINET6) and only set the macros {if_addr_out} + and {if_family_out} if the interface of the outgoing + connection does not belong to the loopback net. + Fix logic to enable a milter to delete a recipient in + DeliveryMode=interactive even if it might be subject + to alias expansion. + Log name of a milter making changes (this was missing for + some functions). + Log the actual reply of a server when an SMTP delivery problem + occurs in a "reply=" field if possible. + Log user= for failed AUTH attempts if possible. Based on + patch from Packet Hack, Jim Hranicky, Kevin A. McGrail, + and Joe Quinn. + Add CDB as map type. Note: CDB is a "Constant DataBase", i.e., + no changes can be made after it is created, hence it + does not work with vacation(1) nor editmap(8) (except + for query mode). + Fix some memory leaks (mostly in error cases) and properly handle + copied varargs in sm_io_vfprintf(). The issues were found + using Coverity Scan and reported (including patches) by + Ondřej Lysoněk of Red Hat. + Do not override ServerSSLOptions and ClientSSLOptions when they + are specified on the command line. Based on patch from + Hiroki Sato. + Add RFC7505 Null MX support for domains that declare they do not + accept mail. + New compile time option LDAP_NETWORK_TIMEOUT which is set + automatically when LDAPMAP is used and + LDAP_OPT_NETWORK_TIMEOUT is available to enable the + new -c option for LDAP maps to specify the network timeout. + CONFIG: New FEATURE(`tls_session_features') to enable standard + rules for tls_srv_features and tls_clt_features; for + details see cf/README. + CONFIG: New options confSSL_ENGINE and confSSL_ENGINE_PATH + for SSLEngine and SSLEnginePath, respectively. + CONFIG: New options confDANE to enable DANE support. + CONFIG: New option confTLS_FALLBACK_TO_CLEAR for TLSFallbacktoClear. + CONFIG: New extension CITag: for TLS restrictions, see cf/README + for details. + CONFIG: FEATURE(`blacklist_recipients') renamed to + FEATURE(`blocklist_recipients'). + CONTRIB: cidrexpand updated to support IPv6 CIDR ranges and to + canonicalize IPv6 addresses; if cidrexpand is used with IPv6 + addresses then UseCompressedIPv6Addresses must be disabled. + DOC: The dns map can return multiple values in a single result + if the -z option is used. + DOC: Note to set MustQuoteChars=. due to DKIM signatures. + LIBMILTER: Fix typo in a macro. Patch from Ignacio Goyret + of Alcatel-Lucent. + LIBMILTER: Fix reference in xxfi_negotiate documentation. + Patch from Sven Neuhaus. + LIBMILTER: Fix function name in smfi_addrcpt_par documentation. + Patch from G.W. Haywood. + LIBMILTER: Fix a potential memory leak in smfi_setsymlist(). + Patch from Martin Svec. + MAKEMAP: New map type "implicit" refers to the first available type, + i.e., it depends on the compile time options NEWDB, DBM, + and CDB. This can be used in conjunction with the + "implicit" map type in sendmail.cf. + Note: makemap, libsmdb, and sendmail must be compiled + with the same options (and library versions of course). + Portability: + Add support for Darwin 14-18 (Mac OS X 10.x). + New option HAS_GETHOSTBYNAME2: set if your system + supports gethostbyname2(2). + Set SM_CONF_SEM=2 for FreeBSD 12 and later due to + changes in sys/sem.h + On Linux set MAXHOSTNAMELEN (the maximum length + of a FQHN) to 256 if it is less than that value. + Added Files: + cf/feature/blocklist_recipients.m4 + cf/feature/tls_failures.m4 + devtools/OS/Darwin.14.x + devtools/OS/Darwin.15.x + devtools/OS/Darwin.16.x + libsmdb/smcdb.c + sendmail/ratectrl.h + 8.15.2/8.15.2 2015/07/03 If FEATURE(`nopercenthack') is used then some bogus input triggered a recursion which was caught and logged as @@ -104,7 +222,7 @@ summary of the changes in that release. The option CipherList sets the list of ciphers for STARTTLS. See ciphers(1) for possible values. Do not log "STARTTLS: internal error: tls_verify_cb: ssl == NULL" - if a CRLFfile is in use (and LogLevel is 14 or higher.) + if a CRLFile is in use (and LogLevel is 14 or higher.) Store a more specific TLS protocol version in ${tls_version} instead of a generic one, e.g., TLSv1 instead of TLSv1/SSLv3. @@ -127,7 +245,7 @@ summary of the changes in that release. A new map type "arpa" is available to reverse an IP (IPv4 or IPv6) address. It returns the string for the PTR lookup, but without trailing {ip6,in-addr}.arpa. - New operation mode 'C' just checks the configuration file, e.g., + New operation mode 'C' just checks the configuration file, e.g., sendmail -C new.cf -bC will perform a basic syntax/consistency check of new.cf. The mailer flag 'I' is deprecated and will be removed in a @@ -740,7 +858,7 @@ summary of the changes in that release. Patches from Nelson Fung. CONTRIB: cidrexpand uses a hash symbol as comment character and ignores everything after it unless it is in quotes or - preceeded by a backslash. + preceded by a backslash. DEVTOOLS: New macro confMKDIR: if set to a program that creates directories, then it used for "make install" to create the required installation directories. @@ -2465,7 +2583,7 @@ summary of the changes in that release. noted by Greg Robinson of the Defence Science and Technology Organisation of Australia. CONFIG: dnsbl: If an argument specifies an error message in case - of temporary lookup failures for DNS based blacklists + of temporary lookup failures for DNS based blocklists then use it. LIBMILTER: Install mfdef.h, required by mfapi.h. Problem noted by Richard A. Nelson of Debian. @@ -2539,7 +2657,7 @@ summary of the changes in that release. is "pw", which means to use getpwnam(). New mailbox database types can be added by adding custom code to libsm/mbdb.c. Queue file names are now 15 characters long, rather than 14 characters - long, to accomodate envelope splitting. File systems with + long, to accommodate envelope splitting. File systems with a 14 character file name length limit are no longer supported. Recipient list used for delivery now gets internally ordered by @@ -2580,7 +2698,7 @@ summary of the changes in that release. New ruleset srv_features to enable/disable certain features in the server per connection. See doc/op/op.me for details. New ruleset tls_rcpt to decide whether to send e-mail to a particular - recipient; useful to decide whether a conection is secure + recipient; useful to decide whether a connection is secure enough on a per recipient basis. New option TLSSrvOptions to modify some aspects of the server for STARTTLS. @@ -2591,7 +2709,7 @@ summary of the changes in that release. Macro expand filenames/directories for certs and keys in the .cf file. Proposed by Neil Rickert of Northern Illinois University. Generate an ephemeral RSA key for a STARTTLS connection only if - really required. This change results in a noticable + really required. This change results in a noticeable performance gains on most machines. Moreover, if shared memory is in use, reuse the key several times. Add queue groups which can be used to group queue directories with @@ -3500,7 +3618,7 @@ summary of the changes in that release. CONFIG: Reject addresses of the form a!b if FEATURE(`nouucp', `r') is used. Problem noted by Phil Homewood of Asia Online, patch from Neil Rickert of Northern Illinois University. - CONFIG: Change the default DNS based blacklist server for + CONFIG: Change the default DNS based blocklist server for FEATURE(`dnsbl') to blackholes.mail-abuse.org. CONFIG: Deal correctly with the 'C' flag in {daemon_flags}, i.e., implicitly assume canonical host names. @@ -4736,7 +4854,7 @@ summary of the changes in that release. from Per Hedeland of Ericsson. If a resolver ANY query is larger than the UDP packet size, the resolver will fall back to TCP. However, some - misconfigured firewalls black 53/TCP so the ANY lookup + misconfigured firewalls block 53/TCP so the ANY lookup fails whereas an MX or A record might succeed. Therefore, don't fail on ANY queries. If an SMTP recipient is rejected due to syntax errors in the @@ -5152,7 +5270,7 @@ summary of the changes in that release. line up into 2046-character output lines (excluding the newline). If an input line was 2047 characters long (excluding CR-LF) and the last character was a '.', - mail.local saw it as the end of input, transfered it to the + mail.local saw it as the end of input, transferred it to the user mailbox and tried to write an `ok' back to sendmail. If the message was much longer, both sendmail and mail.local would deadlock waiting for each other to read @@ -6039,7 +6157,7 @@ summary of the changes in that release. CONFIG: FEATURE(nodns) now warns the user that the feature is a no-op. Patch from Kari Hurtta of the Finnish Meteorological Institute. - CONFIG: OSTYPE(osf1) now sets DefaultUserID (confDEF_USER_ID) to + CONFIG: OSTYPE(osf1) now sets DefaultUser (confDEF_USER_ID) to daemon since DEC's /bin/mail will drop the envelope sender if run as mailnull. See the Digital UNIX section of src/README for more information. Problem noted by @@ -7632,7 +7750,7 @@ summary of the changes in that release. instead of 0644. Suggested by Ann-Kian Yeo of the National University of Singapore. Print errors if setgid/setuid/etc. fail during delivery. This helps - detect cases where DefaultUid is set to something that the + detect cases where DefaultUser is set to something that the system can't cope with. PORTABILITY FIXES: Support for AIX/RS 2.2.1 from Mark Whetzel of Western @@ -9840,7 +9958,7 @@ summary of the changes in that release. gethostname() (instead of myhostname(), which tries to fully qualify the name) to be consistent with SunOS. If your hostname is unqualified, this fixes - transfers to slave servers. Bug noted by Keith + transfers to secondary servers. Bug noted by Keith McMillan of Ameritech Services, Inc. Fix Ultrix problem: gethostbyname() can return a very large (> 500) h_length field, which causes the sockaddr diff --git a/cf/README b/cf/README index 91e69a918223..983aa2821a1a 100644 --- a/cf/README +++ b/cf/README @@ -396,7 +396,7 @@ SMTP_MAILER_MAXMSGS [undefined] If defined, the maximum number of messages to deliver in a single connection for the smtp, smtp8, esmtp, or dsmtp mailers. SMTP_MAILER_MAXRCPTS [undefined] If defined, the maximum number of - recipients to deliver in a single connection for the + recipients to deliver in a single envelope for the smtp, smtp8, esmtp, or dsmtp mailers. SMTP_MAILER_ARGS [TCP $h] The arguments passed to the smtp mailer. About the only reason you would want to change this @@ -1250,7 +1250,7 @@ access_db Turns on the access database feature. The access db gives important information about this feature. Notice: "-T" is meant literal, do not replace it by anything. -blacklist_recipients +blocklist_recipients Turns on the ability to block incoming mail for certain recipient usernames, hostnames, or addresses. For example, you can block incoming mail to user nobody, @@ -1579,7 +1579,7 @@ require_rdns Reject mail from connecting SMTP clients without proper Entries such as Connect:1.2.3.4 OK Connect:1.2 RELAY - will whitelist IP address 1.2.3.4, so that the rDNS + will allowlist IP address 1.2.3.4, so that the rDNS blocking does apply to that IP address Entries such as @@ -2602,7 +2602,7 @@ requires a tag. For example, 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') +send mail to that address even if FEATURE(`blocklist_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 @@ -2723,7 +2723,7 @@ sender address. If you use: - FEATURE(`blacklist_recipients') + FEATURE(`blocklist_recipients') 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: @@ -2747,14 +2747,14 @@ as value part in the access map. Taking the example from above: 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 which can be found by +There are several DNS based blocklists which can be found by querying a search engine. These are databases of spammers maintained in DNS. To use such a database, specify FEATURE(`dnsbl', `dnsbl.example.com') This will cause sendmail to reject mail from any site listed in the -DNS based blacklist. You must select a DNS based blacklist domain +DNS based blocklist. You must select a DNS based blocklist domain to check by specifying an argument to the FEATURE. The default error message is @@ -2789,14 +2789,14 @@ This FEATURE can be included several times to query different DNS based rejection lists. Notice: to avoid checking your own local domains against those -blacklists, use the access_db feature and add: +blocklists, use the access_db feature and add: Connect:10.1 OK Connect:127.0.0.1 RELAY to the access map, where 10.1 is your local network. You may want to use "RELAY" instead of "OK" to allow also relaying -instead of just disabling the DNS lookups in the blacklists. +instead of just disabling the DNS lookups in the blocklists. The features described above make use of the check_relay, check_mail, @@ -2849,7 +2849,7 @@ my.domain and you have in the access map, then any e-mail with a sender address of will not be rejected by check_relay even though it would match the hostname or IP address. This allows spammers -to get around DNS based blacklist by faking the sender address. To +to get around DNS based blocklist by faking the sender address. To avoid this problem you have to use tagged entries: To:my.domain RELAY @@ -2978,7 +2978,7 @@ 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 +blocklists 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 @@ -3071,13 +3071,13 @@ rulesets and map lookups, they are modified as follows: each non-printable character and the characters '<', '>', '(', ')', '"', '+', ' ' are replaced by their HEX value with a leading '+'. For example: -/C=US/ST=California/O=endmail.org/OU=private/CN=Darth Mail (Cert)/Email= +/C=US/ST=California/O=endmail.org/OU=private/CN=Darth Mail (Cert)/emailAddress= darth+cert@endmail.org is encoded as: /C=US/ST=California/O=endmail.org/OU=private/CN= -Darth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org +Darth+20Mail+20+28Cert+29/emailAddress=darth+2Bcert@endmail.org (line breaks have been inserted for readability). @@ -3089,30 +3089,27 @@ Examples: To allow relaying for everyone who can present a cert signed by /C=US/ST=California/O=endmail.org/OU=private/CN= -Darth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org +Darth+20Mail+20+28Cert+29/emailAddress=darth+2Bcert@endmail.org simply use: CertIssuer:/C=US/ST=California/O=endmail.org/OU=private/CN= -Darth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org RELAY +Darth+20Mail+20+28Cert+29/emailAddress=darth+2Bcert@endmail.org RELAY To allow relaying only for a subset of machines that have a cert signed by /C=US/ST=California/O=endmail.org/OU=private/CN= -Darth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org +Darth+20Mail+20+28Cert+29/emailAddress=darth+2Bcert@endmail.org use: CertIssuer:/C=US/ST=California/O=endmail.org/OU=private/CN= -Darth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org SUBJECT +Darth+20Mail+20+28Cert+29/emailAddress=darth+2Bcert@endmail.org SUBJECT CertSubject:/C=US/ST=California/O=endmail.org/OU=private/CN= -DeathStar/Email=deathstar@endmail.org RELAY +DeathStar/emailAddress=deathstar@endmail.org RELAY -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=". +Note: line breaks have been inserted after "CN=" for readability, +each tagged entry must be one (long) line in the access map. 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., @@ -3188,16 +3185,23 @@ CN:name name must match ${cn_subject} CN ${client_name}/${server_name} must match ${cn_subject} CS:name name must match ${cert_subject} CI:name name must match ${cert_issuer} +CITag:MYTag look up MYTag:${cert_issuer} in access map; the check + only succeeds if it is found with a RHS of OK. Example: e-mail sent to secure.example.com should only use an encrypted connection. E-mail received from hosts within the laptop.example.com domain should only be accepted if they have been authenticated. The host which receives e-mail for darth@endmail.org must present a cert that uses the -CN smtp.endmail.org. +CN smtp.endmail.org. E-mail sent to safe.example.com must be verified, +have a matching CN, and must present a cert signed by a CA with one of +the listed DNs. -TLS_Srv:secure.example.com ENCR:112 -TLS_Clt:laptop.example.com PERM+VERIFY:112 +TLS_Srv:secure.example.com ENCR:112 +TLS_Clt:laptop.example.com PERM+VERIFY:112 TLS_Rcpt:darth@endmail.org ENCR:112+CN:smtp.endmail.org +TLS_Srv:safe.example.net VERIFY+CN++CITag:MyCA +MyCA:/C=US/ST=CA/O=safe/CN=example.net/ OK +MyCA:/C=US/ST=CA/O=secure/CN=example.net/ OK TLS Options per Session @@ -3217,6 +3221,7 @@ options: - Options: compare {Server,Client}SSLOptions. - CipherList: same as the global option. - CertFile, KeyFile: {Server,Client}{Cert,Key}File +- Flags: see doc/op/op.me for details. If FEATURE(`tls_session_features') is used, then default rulesets are activated which look up entries in the access map with the tags @@ -3234,15 +3239,12 @@ If FEATURE(`tls_session_features') is not used the user can provide their own rulesets which must return the appropriate data. If the rulesets are not defined or do not return a value, the default TLS options are not modified. -(These rulesets require the sendmail binary to be built with -_FFR_TLS_SE_OPTS enabled.) -About 2): the ruleset try_tls (srv_features) can be used that work -together with the access map. Entries for the access map must be -tagged with Try_TLS (Srv_Features) and refer to the hostname or IP -address of the connecting system. A default case can be specified -by using just the tag. For example, the following entries in the -access map: +About 2): the ruleset try_tls (srv_features) can be used together +with the access map. Entries for the access map must be tagged +with Try_TLS (Srv_Features) and refer to the hostname or IP address +of the connecting system. A default case can be specified by using +just the tag. For example, the following entries in the access map: Try_TLS:broken.server NO Srv_Features:my.domain v @@ -3654,7 +3656,7 @@ for. In particular: if your system allows "file giveaways" (that is, if a non-root user can chown any file they own to any other user). -* If your system allows file giveaways, DO NOT create a publically +* If your system allows file giveaways, DO NOT create a publicly writable directory for forward files. This will allow anyone to steal anyone else's e-mail. Instead, create a script that copies the .forward file from users' home directories once a @@ -4011,6 +4013,10 @@ confUSERDB_SPEC UserDatabaseSpec confFALLBACK_MX FallbackMXhost [undefined] Fallback MX host. confFALLBACK_SMARTHOST FallbackSmartHost [undefined] Fallback smart host. +confTLS_FALLBACK_TO_CLEAR TLSFallbacktoClear + [undefined] If set, immediately try + a connection again without STARTTLS + after a TLS handshake failure. 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 @@ -4364,10 +4370,13 @@ confCLIENT_KEY ClientKeyFile [undefined] File containing the 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. + authentication. +confCRL_PATH CRLPath [undefined] Directory containing + hashes pointing to certificate + revocation status files. confDH_PARAMETERS DHParameters [undefined] File containing the DH parameters. +confDANE DANE [false] Enable DANE support. confRAND_FILE RandFile [undefined] File containing random data (use prefix file:) or the name of the UNIX socket if EGD is @@ -4379,6 +4388,9 @@ confCERT_FINGERPRINT_ALGORITHM CertFingerprintAlgorithm [undefined] The fingerprint algorithm (digest) to use for the presented cert. +confSSL_ENGINE SSLEngine [undefined] Name of SSLEngine. +confSSL_ENGINE_PATH SSLEnginePath [undefined] Path to dynamic library + for SSLEngine. confNICE_QUEUE_RUN NiceQueueRun [undefined] If set, the priority of queue runners is set the given value (nice(3)). @@ -4799,7 +4811,6 @@ M4 DIVERSIONS 5 locally interpreted names (overrides $R) 6 local configuration (at top of file) 7 mailer definitions - 8 DNS based blacklists + 8 DNS based blocklists 9 special local rulesets (1 and 2) -$Revision: 8.730 $, Last updated $Date: 2014-01-16 15:55:51 $ diff --git a/cf/cf/Makefile b/cf/cf/Makefile index efec478cb95a..bf6f031b2f11 100644 --- a/cf/cf/Makefile +++ b/cf/cf/Makefile @@ -103,7 +103,7 @@ M4FILES=\ ${CFDIR}/feature/bcc.m4 \ ${CFDIR}/feature/bestmx_is_local.m4 \ ${CFDIR}/feature/bitdomain.m4 \ - ${CFDIR}/feature/blacklist_recipients.m4 \ + ${CFDIR}/feature/blocklist_recipients.m4 \ ${CFDIR}/feature/conncontrol.m4 \ ${CFDIR}/feature/dnsbl.m4 \ ${CFDIR}/feature/domaintable.m4 \ diff --git a/cf/cf/generic-bsd4.4.cf b/cf/cf/generic-bsd4.4.cf index ef642a4aa7b8..c1c9ce64751d 100644 --- a/cf/cf/generic-bsd4.4.cf +++ b/cf/cf/generic-bsd4.4.cf @@ -16,8 +16,8 @@ ##### ##### SENDMAIL CONFIGURATION FILE ##### -##### built by ca@sandman.dev-lab.sendmail.com on Thu Jul 2 05:24:31 PDT 2015 -##### in /x/ca/smi.git/sendmail/OpenSource/sendmail-8.15.2/cf/cf +##### built by ca@lab.smi.sendmail.com on Thu Jul 2 22:41:56 PDT 2020 +##### in /var/tmp/ca/sm8.git/sendmail/OpenSource/sendmail-8.16.1/cf/cf ##### using ../ as configuration include directory ##### ###################################################################### @@ -122,7 +122,7 @@ DnMAILER-DAEMON CPREDIRECT # Configuration version number -DZ8.15.2 +DZ8.16.1 ############### @@ -521,6 +521,12 @@ O MaxHeadersLength=32768 #O ServerSSLOptions # client side SSL options #O ClientSSLOptions +# SSL Engine +#O SSLEngine +# Path to dynamic library for SSLEngine +#O SSLEnginePath +# TLS: fall back to clear text after handshake failure? +#O TLSFallbacktoClear # Input mail filters #O InputMailFilters @@ -540,12 +546,16 @@ O MaxHeadersLength=32768 #O ClientKeyFile # File containing certificate revocation lists #O CRLFile +# Directory containing hashes pointing to certificate revocation status files +#O CRLPath # DHParameters (only required if DSA/DH is used) #O DHParameters # Random data source (required for systems without /dev/urandom under OpenSSL) #O RandFile # fingerprint algorithm (digest) to use for the presented cert #O CertFingerprintAlgorithm +# enable DANE? +#O DANE=false # Maximum number of "useless" commands before slowing down #O MaxNOOPCommands=20 @@ -1265,6 +1275,7 @@ R$* $| $* $@ $>"TLS_connection" $1 ### ${verify} ###################################################################### Stls_server + R$* $@ $>"TLS_connection" $1 ###################################################################### @@ -1276,6 +1287,7 @@ R$* $@ $>"TLS_connection" $1 ###################################################################### STLS_connection RSOFTWARE $#error $@ 4.7.0 $: "403 TLS handshake." +RDANE_FAIL $#error $@ 4.7.0 $: "403 DANE check failed." diff --git a/cf/cf/generic-hpux10.cf b/cf/cf/generic-hpux10.cf index 827e77d0411d..7442b076a85a 100644 --- a/cf/cf/generic-hpux10.cf +++ b/cf/cf/generic-hpux10.cf @@ -16,8 +16,8 @@ ##### ##### SENDMAIL CONFIGURATION FILE ##### -##### built by ca@sandman.dev-lab.sendmail.com on Thu Jul 2 05:24:31 PDT 2015 -##### in /x/ca/smi.git/sendmail/OpenSource/sendmail-8.15.2/cf/cf +##### built by ca@lab.smi.sendmail.com on Thu Jul 2 22:41:56 PDT 2020 +##### in /var/tmp/ca/sm8.git/sendmail/OpenSource/sendmail-8.16.1/cf/cf ##### using ../ as configuration include directory ##### ###################################################################### @@ -123,7 +123,7 @@ DnMAILER-DAEMON CPREDIRECT # Configuration version number -DZ8.15.2 +DZ8.16.1 ############### @@ -522,6 +522,12 @@ O MaxHeadersLength=32768 #O ServerSSLOptions # client side SSL options #O ClientSSLOptions +# SSL Engine +#O SSLEngine +# Path to dynamic library for SSLEngine +#O SSLEnginePath +# TLS: fall back to clear text after handshake failure? +#O TLSFallbacktoClear # Input mail filters #O InputMailFilters @@ -541,12 +547,16 @@ O MaxHeadersLength=32768 #O ClientKeyFile # File containing certificate revocation lists #O CRLFile +# Directory containing hashes pointing to certificate revocation status files +#O CRLPath # DHParameters (only required if DSA/DH is used) #O DHParameters # Random data source (required for systems without /dev/urandom under OpenSSL) #O RandFile # fingerprint algorithm (digest) to use for the presented cert #O CertFingerprintAlgorithm +# enable DANE? +#O DANE=false # Maximum number of "useless" commands before slowing down #O MaxNOOPCommands=20 @@ -1266,6 +1276,7 @@ R$* $| $* $@ $>"TLS_connection" $1 ### ${verify} ###################################################################### Stls_server + R$* $@ $>"TLS_connection" $1 ###################################################################### @@ -1277,6 +1288,7 @@ R$* $@ $>"TLS_connection" $1 ###################################################################### STLS_connection RSOFTWARE $#error $@ 4.7.0 $: "403 TLS handshake." +RDANE_FAIL $#error $@ 4.7.0 $: "403 DANE check failed." diff --git a/cf/cf/generic-hpux9.cf b/cf/cf/generic-hpux9.cf index dbd7fe595eee..2f39b3d8f5c4 100644 --- a/cf/cf/generic-hpux9.cf +++ b/cf/cf/generic-hpux9.cf @@ -16,8 +16,8 @@ ##### ##### SENDMAIL CONFIGURATION FILE ##### -##### built by ca@sandman.dev-lab.sendmail.com on Thu Jul 2 05:24:31 PDT 2015 -##### in /x/ca/smi.git/sendmail/OpenSource/sendmail-8.15.2/cf/cf +##### built by ca@lab.smi.sendmail.com on Thu Jul 2 22:41:56 PDT 2020 +##### in /var/tmp/ca/sm8.git/sendmail/OpenSource/sendmail-8.16.1/cf/cf ##### using ../ as configuration include directory ##### ###################################################################### @@ -123,7 +123,7 @@ DnMAILER-DAEMON CPREDIRECT # Configuration version number -DZ8.15.2 +DZ8.16.1 ############### @@ -522,6 +522,12 @@ O MaxHeadersLength=32768 #O ServerSSLOptions # client side SSL options #O ClientSSLOptions +# SSL Engine +#O SSLEngine +# Path to dynamic library for SSLEngine +#O SSLEnginePath +# TLS: fall back to clear text after handshake failure? +#O TLSFallbacktoClear # Input mail filters #O InputMailFilters @@ -541,12 +547,16 @@ O MaxHeadersLength=32768 #O ClientKeyFile # File containing certificate revocation lists #O CRLFile +# Directory containing hashes pointing to certificate revocation status files +#O CRLPath # DHParameters (only required if DSA/DH is used) #O DHParameters # Random data source (required for systems without /dev/urandom under OpenSSL) #O RandFile # fingerprint algorithm (digest) to use for the presented cert #O CertFingerprintAlgorithm +# enable DANE? +#O DANE=false # Maximum number of "useless" commands before slowing down #O MaxNOOPCommands=20 @@ -1266,6 +1276,7 @@ R$* $| $* $@ $>"TLS_connection" $1 ### ${verify} ###################################################################### Stls_server + R$* $@ $>"TLS_connection" $1 ###################################################################### @@ -1277,6 +1288,7 @@ R$* $@ $>"TLS_connection" $1 ###################################################################### STLS_connection RSOFTWARE $#error $@ 4.7.0 $: "403 TLS handshake." +RDANE_FAIL $#error $@ 4.7.0 $: "403 DANE check failed." diff --git a/cf/cf/generic-linux.cf b/cf/cf/generic-linux.cf index 1eff0fa117f0..17bf46e49866 100644 --- a/cf/cf/generic-linux.cf +++ b/cf/cf/generic-linux.cf @@ -16,8 +16,8 @@ ##### ##### SENDMAIL CONFIGURATION FILE ##### -##### built by ca@sandman.dev-lab.sendmail.com on Thu Jul 2 05:24:31 PDT 2015 -##### in /x/ca/smi.git/sendmail/OpenSource/sendmail-8.15.2/cf/cf +##### built by ca@lab.smi.sendmail.com on Thu Jul 2 22:41:56 PDT 2020 +##### in /var/tmp/ca/sm8.git/sendmail/OpenSource/sendmail-8.16.1/cf/cf ##### using ../ as configuration include directory ##### ###################################################################### @@ -127,7 +127,7 @@ DnMAILER-DAEMON CPREDIRECT # Configuration version number -DZ8.15.2 +DZ8.16.1 ############### @@ -526,6 +526,12 @@ O MaxHeadersLength=32768 #O ServerSSLOptions # client side SSL options #O ClientSSLOptions +# SSL Engine +#O SSLEngine +# Path to dynamic library for SSLEngine +#O SSLEnginePath +# TLS: fall back to clear text after handshake failure? +#O TLSFallbacktoClear # Input mail filters #O InputMailFilters @@ -545,12 +551,16 @@ O MaxHeadersLength=32768 #O ClientKeyFile # File containing certificate revocation lists #O CRLFile +# Directory containing hashes pointing to certificate revocation status files +#O CRLPath # DHParameters (only required if DSA/DH is used) #O DHParameters # Random data source (required for systems without /dev/urandom under OpenSSL) #O RandFile # fingerprint algorithm (digest) to use for the presented cert #O CertFingerprintAlgorithm +# enable DANE? +#O DANE=false # Maximum number of "useless" commands before slowing down #O MaxNOOPCommands=20 @@ -1270,6 +1280,7 @@ R$* $| $* $@ $>"TLS_connection" $1 ### ${verify} ###################################################################### Stls_server + R$* $@ $>"TLS_connection" $1 ###################################################################### @@ -1281,6 +1292,7 @@ R$* $@ $>"TLS_connection" $1 ###################################################################### STLS_connection RSOFTWARE $#error $@ 4.7.0 $: "403 TLS handshake." +RDANE_FAIL $#error $@ 4.7.0 $: "403 DANE check failed." diff --git a/cf/cf/generic-mpeix.cf b/cf/cf/generic-mpeix.cf index 149826d56ef8..f0520de5d0ef 100644 --- a/cf/cf/generic-mpeix.cf +++ b/cf/cf/generic-mpeix.cf @@ -16,8 +16,8 @@ ##### ##### SENDMAIL CONFIGURATION FILE ##### -##### built by ca@sandman.dev-lab.sendmail.com on Thu Jul 2 05:24:31 PDT 2015 -##### in /x/ca/smi.git/sendmail/OpenSource/sendmail-8.15.2/cf/cf +##### built by ca@lab.smi.sendmail.com on Thu Jul 2 22:41:56 PDT 2020 +##### in /var/tmp/ca/sm8.git/sendmail/OpenSource/sendmail-8.16.1/cf/cf ##### using ../ as configuration include directory ##### ###################################################################### @@ -123,7 +123,7 @@ DnMAILER-DAEMON CPREDIRECT # Configuration version number -DZ8.15.2 +DZ8.16.1 ############### @@ -522,6 +522,12 @@ O MaxHeadersLength=32768 #O ServerSSLOptions # client side SSL options #O ClientSSLOptions +# SSL Engine +#O SSLEngine +# Path to dynamic library for SSLEngine +#O SSLEnginePath +# TLS: fall back to clear text after handshake failure? +#O TLSFallbacktoClear # Input mail filters #O InputMailFilters @@ -541,12 +547,16 @@ O MaxHeadersLength=32768 #O ClientKeyFile # File containing certificate revocation lists #O CRLFile +# Directory containing hashes pointing to certificate revocation status files +#O CRLPath # DHParameters (only required if DSA/DH is used) #O DHParameters # Random data source (required for systems without /dev/urandom under OpenSSL) #O RandFile # fingerprint algorithm (digest) to use for the presented cert #O CertFingerprintAlgorithm +# enable DANE? +#O DANE=false # Maximum number of "useless" commands before slowing down #O MaxNOOPCommands=20 @@ -1266,6 +1276,7 @@ R$* $| $* $@ $>"TLS_connection" $1 ### ${verify} ###################################################################### Stls_server + R$* $@ $>"TLS_connection" $1 ###################################################################### @@ -1277,6 +1288,7 @@ R$* $@ $>"TLS_connection" $1 ###################################################################### STLS_connection RSOFTWARE $#error $@ 4.7.0 $: "403 TLS handshake." +RDANE_FAIL $#error $@ 4.7.0 $: "403 DANE check failed." diff --git a/cf/cf/generic-nextstep3.3.cf b/cf/cf/generic-nextstep3.3.cf index c997dc8f3f4f..b51bbf80487a 100644 --- a/cf/cf/generic-nextstep3.3.cf +++ b/cf/cf/generic-nextstep3.3.cf @@ -16,8 +16,8 @@ ##### ##### SENDMAIL CONFIGURATION FILE ##### -##### built by ca@sandman.dev-lab.sendmail.com on Thu Jul 2 05:24:31 PDT 2015 -##### in /x/ca/smi.git/sendmail/OpenSource/sendmail-8.15.2/cf/cf +##### built by ca@lab.smi.sendmail.com on Thu Jul 2 22:41:56 PDT 2020 +##### in /var/tmp/ca/sm8.git/sendmail/OpenSource/sendmail-8.16.1/cf/cf ##### using ../ as configuration include directory ##### ###################################################################### @@ -122,7 +122,7 @@ DnMAILER-DAEMON CPREDIRECT # Configuration version number -DZ8.15.2 +DZ8.16.1 ############### @@ -521,6 +521,12 @@ O MaxHeadersLength=32768 #O ServerSSLOptions # client side SSL options #O ClientSSLOptions +# SSL Engine +#O SSLEngine +# Path to dynamic library for SSLEngine +#O SSLEnginePath +# TLS: fall back to clear text after handshake failure? +#O TLSFallbacktoClear # Input mail filters #O InputMailFilters @@ -540,12 +546,16 @@ O MaxHeadersLength=32768 #O ClientKeyFile # File containing certificate revocation lists #O CRLFile +# Directory containing hashes pointing to certificate revocation status files +#O CRLPath # DHParameters (only required if DSA/DH is used) #O DHParameters # Random data source (required for systems without /dev/urandom under OpenSSL) #O RandFile # fingerprint algorithm (digest) to use for the presented cert #O CertFingerprintAlgorithm +# enable DANE? +#O DANE=false # Maximum number of "useless" commands before slowing down #O MaxNOOPCommands=20 @@ -1265,6 +1275,7 @@ R$* $| $* $@ $>"TLS_connection" $1 ### ${verify} ###################################################################### Stls_server + R$* $@ $>"TLS_connection" $1 ###################################################################### @@ -1276,6 +1287,7 @@ R$* $@ $>"TLS_connection" $1 ###################################################################### STLS_connection RSOFTWARE $#error $@ 4.7.0 $: "403 TLS handshake." +RDANE_FAIL $#error $@ 4.7.0 $: "403 DANE check failed." diff --git a/cf/cf/generic-osf1.cf b/cf/cf/generic-osf1.cf index 103a3616bb2f..2c9c7a5911e3 100644 --- a/cf/cf/generic-osf1.cf +++ b/cf/cf/generic-osf1.cf @@ -16,8 +16,8 @@ ##### ##### SENDMAIL CONFIGURATION FILE ##### -##### built by ca@sandman.dev-lab.sendmail.com on Thu Jul 2 05:24:31 PDT 2015 -##### in /x/ca/smi.git/sendmail/OpenSource/sendmail-8.15.2/cf/cf +##### built by ca@lab.smi.sendmail.com on Thu Jul 2 22:41:57 PDT 2020 +##### in /var/tmp/ca/sm8.git/sendmail/OpenSource/sendmail-8.16.1/cf/cf ##### using ../ as configuration include directory ##### ###################################################################### @@ -123,7 +123,7 @@ DnMAILER-DAEMON CPREDIRECT # Configuration version number -DZ8.15.2 +DZ8.16.1 ############### @@ -522,6 +522,12 @@ O MaxHeadersLength=32768 #O ServerSSLOptions # client side SSL options #O ClientSSLOptions +# SSL Engine +#O SSLEngine +# Path to dynamic library for SSLEngine +#O SSLEnginePath +# TLS: fall back to clear text after handshake failure? +#O TLSFallbacktoClear # Input mail filters #O InputMailFilters @@ -541,12 +547,16 @@ O MaxHeadersLength=32768 #O ClientKeyFile # File containing certificate revocation lists #O CRLFile +# Directory containing hashes pointing to certificate revocation status files +#O CRLPath # DHParameters (only required if DSA/DH is used) #O DHParameters # Random data source (required for systems without /dev/urandom under OpenSSL) #O RandFile # fingerprint algorithm (digest) to use for the presented cert #O CertFingerprintAlgorithm +# enable DANE? +#O DANE=false # Maximum number of "useless" commands before slowing down #O MaxNOOPCommands=20 @@ -1266,6 +1276,7 @@ R$* $| $* $@ $>"TLS_connection" $1 ### ${verify} ###################################################################### Stls_server + R$* $@ $>"TLS_connection" $1 ###################################################################### @@ -1277,6 +1288,7 @@ R$* $@ $>"TLS_connection" $1 ###################################################################### STLS_connection RSOFTWARE $#error $@ 4.7.0 $: "403 TLS handshake." +RDANE_FAIL $#error $@ 4.7.0 $: "403 DANE check failed." diff --git a/cf/cf/generic-solaris.cf b/cf/cf/generic-solaris.cf index 538d84f63491..0c4c232ecbbe 100644 --- a/cf/cf/generic-solaris.cf +++ b/cf/cf/generic-solaris.cf @@ -16,8 +16,8 @@ ##### ##### SENDMAIL CONFIGURATION FILE ##### -##### built by ca@sandman.dev-lab.sendmail.com on Thu Jul 2 05:24:31 PDT 2015 -##### in /x/ca/smi.git/sendmail/OpenSource/sendmail-8.15.2/cf/cf +##### built by ca@lab.smi.sendmail.com on Thu Jul 2 22:41:57 PDT 2020 +##### in /var/tmp/ca/sm8.git/sendmail/OpenSource/sendmail-8.16.1/cf/cf ##### using ../ as configuration include directory ##### ###################################################################### @@ -122,7 +122,7 @@ DnMAILER-DAEMON CPREDIRECT # Configuration version number -DZ8.15.2 +DZ8.16.1 ############### @@ -521,6 +521,12 @@ O MaxHeadersLength=32768 #O ServerSSLOptions # client side SSL options #O ClientSSLOptions +# SSL Engine +#O SSLEngine +# Path to dynamic library for SSLEngine +#O SSLEnginePath +# TLS: fall back to clear text after handshake failure? +#O TLSFallbacktoClear # Input mail filters #O InputMailFilters @@ -540,12 +546,16 @@ O MaxHeadersLength=32768 #O ClientKeyFile # File containing certificate revocation lists #O CRLFile +# Directory containing hashes pointing to certificate revocation status files +#O CRLPath # DHParameters (only required if DSA/DH is used) #O DHParameters # Random data source (required for systems without /dev/urandom under OpenSSL) #O RandFile # fingerprint algorithm (digest) to use for the presented cert #O CertFingerprintAlgorithm +# enable DANE? +#O DANE=false # Maximum number of "useless" commands before slowing down #O MaxNOOPCommands=20 @@ -1265,6 +1275,7 @@ R$* $| $* $@ $>"TLS_connection" $1 ### ${verify} ###################################################################### Stls_server + R$* $@ $>"TLS_connection" $1 ###################################################################### @@ -1276,6 +1287,7 @@ R$* $@ $>"TLS_connection" $1 ###################################################################### STLS_connection RSOFTWARE $#error $@ 4.7.0 $: "403 TLS handshake." +RDANE_FAIL $#error $@ 4.7.0 $: "403 DANE check failed." diff --git a/cf/cf/generic-sunos4.1.cf b/cf/cf/generic-sunos4.1.cf index 3d1482cfe16e..98a6084d6a75 100644 --- a/cf/cf/generic-sunos4.1.cf +++ b/cf/cf/generic-sunos4.1.cf @@ -16,8 +16,8 @@ ##### ##### SENDMAIL CONFIGURATION FILE ##### -##### built by ca@sandman.dev-lab.sendmail.com on Thu Jul 2 05:24:31 PDT 2015 -##### in /x/ca/smi.git/sendmail/OpenSource/sendmail-8.15.2/cf/cf +##### built by ca@lab.smi.sendmail.com on Thu Jul 2 22:41:57 PDT 2020 +##### in /var/tmp/ca/sm8.git/sendmail/OpenSource/sendmail-8.16.1/cf/cf ##### using ../ as configuration include directory ##### ###################################################################### @@ -123,7 +123,7 @@ DnMAILER-DAEMON CPREDIRECT # Configuration version number -DZ8.15.2 +DZ8.16.1 ############### @@ -522,6 +522,12 @@ O MaxHeadersLength=32768 #O ServerSSLOptions # client side SSL options #O ClientSSLOptions +# SSL Engine +#O SSLEngine +# Path to dynamic library for SSLEngine +#O SSLEnginePath +# TLS: fall back to clear text after handshake failure? +#O TLSFallbacktoClear # Input mail filters #O InputMailFilters @@ -541,12 +547,16 @@ O MaxHeadersLength=32768 #O ClientKeyFile # File containing certificate revocation lists #O CRLFile +# Directory containing hashes pointing to certificate revocation status files +#O CRLPath # DHParameters (only required if DSA/DH is used) #O DHParameters # Random data source (required for systems without /dev/urandom under OpenSSL) #O RandFile # fingerprint algorithm (digest) to use for the presented cert #O CertFingerprintAlgorithm +# enable DANE? +#O DANE=false # Maximum number of "useless" commands before slowing down #O MaxNOOPCommands=20 @@ -1266,6 +1276,7 @@ R$* $| $* $@ $>"TLS_connection" $1 ### ${verify} ###################################################################### Stls_server + R$* $@ $>"TLS_connection" $1 ###################################################################### @@ -1277,6 +1288,7 @@ R$* $@ $>"TLS_connection" $1 ###################################################################### STLS_connection RSOFTWARE $#error $@ 4.7.0 $: "403 TLS handshake." +RDANE_FAIL $#error $@ 4.7.0 $: "403 DANE check failed." diff --git a/cf/cf/generic-ultrix4.cf b/cf/cf/generic-ultrix4.cf index 84c74b8e84ba..0e3a8e89c216 100644 --- a/cf/cf/generic-ultrix4.cf +++ b/cf/cf/generic-ultrix4.cf @@ -16,8 +16,8 @@ ##### ##### SENDMAIL CONFIGURATION FILE ##### -##### built by ca@sandman.dev-lab.sendmail.com on Thu Jul 2 05:24:31 PDT 2015 -##### in /x/ca/smi.git/sendmail/OpenSource/sendmail-8.15.2/cf/cf +##### built by ca@lab.smi.sendmail.com on Thu Jul 2 22:41:57 PDT 2020 +##### in /var/tmp/ca/sm8.git/sendmail/OpenSource/sendmail-8.16.1/cf/cf ##### using ../ as configuration include directory ##### ###################################################################### @@ -123,7 +123,7 @@ DnMAILER-DAEMON CPREDIRECT # Configuration version number -DZ8.15.2 +DZ8.16.1 ############### @@ -522,6 +522,12 @@ O MaxHeadersLength=32768 #O ServerSSLOptions # client side SSL options #O ClientSSLOptions +# SSL Engine +#O SSLEngine +# Path to dynamic library for SSLEngine +#O SSLEnginePath +# TLS: fall back to clear text after handshake failure? +#O TLSFallbacktoClear # Input mail filters #O InputMailFilters @@ -541,12 +547,16 @@ O MaxHeadersLength=32768 #O ClientKeyFile # File containing certificate revocation lists #O CRLFile +# Directory containing hashes pointing to certificate revocation status files +#O CRLPath # DHParameters (only required if DSA/DH is used) #O DHParameters # Random data source (required for systems without /dev/urandom under OpenSSL) #O RandFile # fingerprint algorithm (digest) to use for the presented cert #O CertFingerprintAlgorithm +# enable DANE? +#O DANE=false # Maximum number of "useless" commands before slowing down #O MaxNOOPCommands=20 @@ -1266,6 +1276,7 @@ R$* $| $* $@ $>"TLS_connection" $1 ### ${verify} ###################################################################### Stls_server + R$* $@ $>"TLS_connection" $1 ###################################################################### @@ -1277,6 +1288,7 @@ R$* $@ $>"TLS_connection" $1 ###################################################################### STLS_connection RSOFTWARE $#error $@ 4.7.0 $: "403 TLS handshake." +RDANE_FAIL $#error $@ 4.7.0 $: "403 DANE check failed." diff --git a/cf/cf/knecht.mc b/cf/cf/knecht.mc index 720389189eb4..2b79eb227927 100644 --- a/cf/cf/knecht.mc +++ b/cf/cf/knecht.mc @@ -46,7 +46,7 @@ define(`CYRUS_MAILER_PATH', `/usr/local/cyrus/bin/deliver') define(`CYRUS_MAILER_FLAGS', `fAh5@/:|') FEATURE(`access_db') -FEATURE(`blacklist_recipients') +FEATURE(`blocklist_recipients') FEATURE(`local_lmtp') FEATURE(`virtusertable') FEATURE(`mailertable') @@ -234,7 +234,7 @@ Kstorage macro LOCAL_RULESETS ###################################################################### -### check for the existance of the X-MailScanner Header +### check for the existence of the X-MailScanner Header HX-MailScanner: $>+CheckXMSc D{SobigFPat}Found to be clean D{SobigFMsg}This message may contain the Sobig.F virus. diff --git a/cf/cf/submit.cf b/cf/cf/submit.cf index 6295d32db006..63d7cb720eb7 100644 --- a/cf/cf/submit.cf +++ b/cf/cf/submit.cf @@ -16,8 +16,8 @@ ##### ##### SENDMAIL CONFIGURATION FILE ##### -##### built by ca@sandman.dev-lab.sendmail.com on Thu Jul 2 05:24:31 PDT 2015 -##### in /x/ca/smi.git/sendmail/OpenSource/sendmail-8.15.2/cf/cf +##### built by ca@lab.smi.sendmail.com on Thu Jul 2 22:41:57 PDT 2020 +##### in /var/tmp/ca/sm8.git/sendmail/OpenSource/sendmail-8.16.1/cf/cf ##### using ../ as configuration include directory ##### ###################################################################### @@ -114,7 +114,7 @@ D{MTAHost}[127.0.0.1] # Configuration version number -DZ8.15.2/Submit +DZ8.16.1/Submit ############### @@ -513,6 +513,12 @@ O PidFile=/var/spool/clientmqueue/sm-client.pid #O ServerSSLOptions # client side SSL options #O ClientSSLOptions +# SSL Engine +#O SSLEngine +# Path to dynamic library for SSLEngine +#O SSLEnginePath +# TLS: fall back to clear text after handshake failure? +#O TLSFallbacktoClear # Input mail filters #O InputMailFilters @@ -532,12 +538,16 @@ O PidFile=/var/spool/clientmqueue/sm-client.pid #O ClientKeyFile # File containing certificate revocation lists #O CRLFile +# Directory containing hashes pointing to certificate revocation status files +#O CRLPath # DHParameters (only required if DSA/DH is used) #O DHParameters # Random data source (required for systems without /dev/urandom under OpenSSL) #O RandFile # fingerprint algorithm (digest) to use for the presented cert #O CertFingerprintAlgorithm +# enable DANE? +#O DANE=false # Maximum number of "useless" commands before slowing down #O MaxNOOPCommands=20 @@ -1257,6 +1267,7 @@ R$* $| $* $@ $>"TLS_connection" $1 ### ${verify} ###################################################################### Stls_server + R$* $@ $>"TLS_connection" $1 ###################################################################### @@ -1268,6 +1279,7 @@ R$* $@ $>"TLS_connection" $1 ###################################################################### STLS_connection RSOFTWARE $#error $@ 4.7.0 $: "403 TLS handshake." +RDANE_FAIL $#error $@ 4.7.0 $: "403 DANE check failed." diff --git a/cf/feature/bcc.m4 b/cf/feature/bcc.m4 index 9454143f2060..5bb754bd04a3 100644 --- a/cf/feature/bcc.m4 +++ b/cf/feature/bcc.m4 @@ -76,7 +76,7 @@ R$* $| $* $: ifelse(len(X`'_ARG3_),`1', `$1', `_ARG3_') ifdef(`_CANONIFY_BCC_', `dnl R$+ @ $+ $: $1@$2 $| <$(canonicalRcpt $1 @ $2 $: $)> R$* $| <> $@ -R$* $| <$* > $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later." +R$* $| <$* > $#error $@ 4.3.0 $: _TMPFMSG_(`BCC') R$* $| <$+> $@ $2 map matched? ') diff --git a/cf/feature/blacklist_recipients.m4 b/cf/feature/blacklist_recipients.m4 index 706d11754393..5312a2e50687 100644 --- a/cf/feature/blacklist_recipients.m4 +++ b/cf/feature/blacklist_recipients.m4 @@ -13,7 +13,6 @@ divert(0) VERSIONID(`$Id: blacklist_recipients.m4,v 8.14 2013-11-22 20:51:11 ca Exp $') divert(-1) -ifdef(`_ACCESS_TABLE_', - `define(`_BLACKLIST_RCPT_', 1)', - `errprint(`*** ERROR: FEATURE(blacklist_recipients) requires FEATURE(access_db) -')') +errprint(`WARNING: FEATURE(blacklist_recipients) is deprecated; use FEATURE(blocklist_recipients.m4). +') +FEATURE(`blocklist_recipients') diff --git a/cf/feature/blocklist_recipients.m4 b/cf/feature/blocklist_recipients.m4 new file mode 100644 index 000000000000..7c5a1df02218 --- /dev/null +++ b/cf/feature/blocklist_recipients.m4 @@ -0,0 +1,19 @@ +divert(-1) +# +# Copyright (c) 1998, 1999 Proofpoint, 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: blocklist_recipients.m4,v 8.14 2013-11-22 20:51:11 ca Exp $') +divert(-1) + +ifdef(`_ACCESS_TABLE_', + `define(`_BLOCKLIST_RCPT_', 1)', + `errprint(`*** ERROR: FEATURE(blocklist_recipients) requires FEATURE(access_db) +')') diff --git a/cf/feature/check_cert_altnames.m4 b/cf/feature/check_cert_altnames.m4 new file mode 100644 index 000000000000..9fae74ef0a3c --- /dev/null +++ b/cf/feature/check_cert_altnames.m4 @@ -0,0 +1,17 @@ +divert(-1) +# +# Copyright (c) 2019 Proofpoint, 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)dnl +VERSIONID(`$Id: block_bad_helo.m4,v 1.2 2013-11-22 20:51:11 ca Exp $') +divert(-1) +define(`_FFR_TLS_ALTNAMES', `1') +divert(6)dnl +O SetCertAltnames=true diff --git a/cf/feature/dnsbl.m4 b/cf/feature/dnsbl.m4 index 63b86759c320..dd8fd52583f9 100644 --- a/cf/feature/dnsbl.m4 +++ b/cf/feature/dnsbl.m4 @@ -17,7 +17,7 @@ define(`_DNSBL_R_',`') ifelse(defn(`_ARG_'), `', `errprint(`*** ERROR: missing argument for FEATURE(`dnsbl')')') LOCAL_CONFIG -# map for DNS based blacklist lookups +# map for DNS based blocklist lookups Kdnsbl DNSBL_MAP -Tifdef(`DNSBL_MAP_OPT',` DNSBL_MAP_OPT')') divert(-1) define(`_DNSBL_SRV_', `_ARG_')dnl diff --git a/cf/feature/enhdnsbl.m4 b/cf/feature/enhdnsbl.m4 index b3a86b969c26..f0ba5c50d482 100644 --- a/cf/feature/enhdnsbl.m4 +++ b/cf/feature/enhdnsbl.m4 @@ -16,7 +16,7 @@ ifdef(`_EDNSBL_R_',`dnl',`dnl VERSIONID(`$Id: enhdnsbl.m4,v 1.13 2013-11-22 20:51:11 ca Exp $') LOCAL_CONFIG define(`_EDNSBL_R_',`')dnl -# map for enhanced DNS based blacklist lookups +# map for enhanced DNS based blocklist lookups Kednsbl dns -R A -a. -T -r`'ifdef(`EDNSBL_TO',`EDNSBL_TO',`5') ') divert(-1) diff --git a/cf/feature/tls_failures.m4 b/cf/feature/tls_failures.m4 new file mode 100644 index 000000000000..94982110f0b8 --- /dev/null +++ b/cf/feature/tls_failures.m4 @@ -0,0 +1,13 @@ +divert(-1) +# +# Copyright (c) 2020 Proofpoint, 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. +# + +errprint(`*** ERROR: FEATURE(tls_failures) has been replaced by confTLS_FALLBACK_TO_CLEAR +') +define(`confTLS_FALLBACK_TO_CLEAR', `true') diff --git a/cf/m4/cfhead.m4 b/cf/m4/cfhead.m4 index eacdfb72f0ae..6d12e8582627 100644 --- a/cf/m4/cfhead.m4 +++ b/cf/m4/cfhead.m4 @@ -72,6 +72,15 @@ define(`_ARG9_',`_ACC_ARG_9_(_ARGS_)') dnl define if not yet defined: if `$1' is not defined it will be `$2' define(`_DEFIFNOT',`ifdef(`$1',`',`define(`$1',`$2')')') dnl ---------------------------------------- +dnl Use a "token" for this error message to make them unique? +dnl Note: this is not a documented option. To enable it, use: +dnl define(`_USETMPFTOKEN_', `1')dnl +ifdef(`_USETMPFTOKEN_', ` +define(_TMPFMSG_, `"451 Temporary system failure $1. Please try again later."') +', `dnl +define(_TMPFMSG_, `"451 Temporary system failure. Please try again later."') +') +dnl ---------------------------------------- dnl add a char $2 to a string $1 if it is not there define(`_ADDCHAR_',`define(`_I_',`eval(index(`$1',`$2') >= 0)')`'ifelse(_I_,`1',`$1',`$1$2')') dnl ---- diff --git a/cf/m4/proto.m4 b/cf/m4/proto.m4 index 696bf36a5357..618dde00e24a 100644 --- a/cf/m4/proto.m4 +++ b/cf/m4/proto.m4 @@ -161,7 +161,7 @@ ifdef(`_ACCESS_TABLE_', `dnl # access_db acceptance class C{Accept}OK RELAY ifdef(`_DELAY_COMPAT_8_10_',`dnl -ifdef(`_BLACKLIST_RCPT_',`dnl +ifdef(`_BLOCKLIST_RCPT_',`dnl # possible access_db RHS for spam friends/haters C{SpamTag}SPAMFRIEND SPAMHATER')')', `dnl') @@ -197,7 +197,9 @@ 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 +C{TlsVerified}OK TRUSTED +dnl', `dnl') ifdef(`_CERT_REGEX_ISSUER_', `dnl # extract relevant part from cert issuer KCERTIssuer regex _CERT_REGEX_ISSUER_', `dnl') @@ -653,6 +655,12 @@ _OPTION(CipherList, `confCIPHER_LIST', `') _OPTION(ServerSSLOptions, `confSERVER_SSL_OPTIONS', `') # client side SSL options _OPTION(ClientSSLOptions, `confCLIENT_SSL_OPTIONS', `') +# SSL Engine +_OPTION(SSLEngine, `confSSL_ENGINE', `') +# Path to dynamic library for SSLEngine +_OPTION(SSLEnginePath, `confSSL_ENGINE_PATH', `') +# TLS: fall back to clear text after handshake failure? +_OPTION(TLSFallbacktoClear, `confTLS_FALLBACK_TO_CLEAR', `') # Input mail filters _OPTION(InputMailFilters, `confINPUT_MAIL_FILTERS', `') @@ -682,12 +690,16 @@ _OPTION(ClientCertFile, `confCLIENT_CERT', `') _OPTION(ClientKeyFile, `confCLIENT_KEY', `') # File containing certificate revocation lists _OPTION(CRLFile, `confCRL', `') +# Directory containing hashes pointing to certificate revocation status files +_OPTION(CRLPath, `confCRL_PATH', `') # DHParameters (only required if DSA/DH is used) _OPTION(DHParameters, `confDH_PARAMETERS', `') # Random data source (required for systems without /dev/urandom under OpenSSL) _OPTION(RandFile, `confRAND_FILE', `') # fingerprint algorithm (digest) to use for the presented cert _OPTION(CertFingerprintAlgorithm, `confCERT_FINGERPRINT_ALGORITHM', `') +# enable DANE? +_OPTION(DANE, `confDANE', `false') # Maximum number of "useless" commands before slowing down _OPTION(MaxNOOPCommands, `confMAX_NOOP_COMMANDS', `20') @@ -1500,7 +1512,7 @@ R<$* > <$*> <$+> <$+> <$*> $: $&{opMode} $| TMPF <$&{addr_type}> $| $3 R<$*> <$* > <$+> <$+> <$*> $: $&{opMode} $| TMPF <$&{addr_type}> $| $3 ifelse(_LDAP_ROUTE_MAPTEMP_, `_TEMPFAIL_', `dnl # ... temp fail RCPT SMTP commands -R$={SMTPOpModes} $| TMPF $| $+ $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."') +R$={SMTPOpModes} $| TMPF $| $+ $#error $@ 4.3.0 $: _TMPFMSG_(`OPM')') # ... return original address for MTA to queue up R$* $| TMPF <$*> $| $+ $@ $3 @@ -1733,7 +1745,7 @@ dnl if mark is then change it to if domain is "authorized" dnl what if access map returns something else than RELAY? dnl we are only interested in RELAY entries... -dnl other To: entries: blacklist recipient; generic entries? +dnl other To: entries: blocklist recipient; generic entries? dnl if it is an error we probably do not want to relay anyway ifdef(`_RELAY_HOSTS_ONLY_', `R $* < @ $=R > $: $1 < @ $2 > @@ -1807,7 +1819,7 @@ R <$*> $#error $@ quarantine $: $1 dnl error tag R <$*> $#error $@ $1.$2.$3 $: $4 R <$*> $#error $: $1 -ifdef(`_ATMPF_', `R<$* _ATMPF_> <$*> $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl') +ifdef(`_ATMPF_', `R<$* _ATMPF_> <$*> $#error $@ 4.3.0 $: _TMPFMSG_(`CR')', `dnl') dnl generic error from access map R<$+> <$*> $#error $: $1', `dnl') @@ -1976,7 +1988,7 @@ R $* $#error ifdef(`confREJECT_MSG', `$: confREJECT_MSG', `$@ 5.7.1 $: dnl error tag R $* $#error $@ $1.$2.$3 $: $4 R $* $#error $: $1 -ifdef(`_ATMPF_', `R<_ATMPF_> $* $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl') +ifdef(`_ATMPF_', `R<_ATMPF_> $* $#error $@ 4.3.0 $: _TMPFMSG_(`CM')', `dnl') dnl generic error from access map R<$+> $* $#error $: $1 error from access db', `dnl') @@ -2108,9 +2120,9 @@ R$* $=O $* < @ $* @@ $=w . > $* $@ $>"Rcpt_ok" $1 $2 $3 R$* < @ $* @@ $=w . > $* $: $1 < @ $3 > $4 R$* < @ $* @@ $* > $* $: $1 < @ $2 > $4') -ifdef(`_BLACKLIST_RCPT_',`dnl +ifdef(`_BLOCKLIST_RCPT_',`dnl ifdef(`_ACCESS_TABLE_', `dnl -# blacklist local users or any host from receiving mail +# blocklist local users or any host from receiving mail R$* $: $1 dnl user is now tagged with @ to be consistent with check_mail dnl and to distinguish users from hosts (com would be host, com@ would be user) @@ -2143,7 +2155,7 @@ R $* $#error $@ quarantine $: $1 dnl error tag R $* $#error $@ $1.$2.$3 $: $4 R $* $#error $: $1 -ifdef(`_ATMPF_', `R<_ATMPF_> $* $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl') +ifdef(`_ATMPF_', `R<_ATMPF_> $* $#error $@ 4.3.0 $: _TMPFMSG_(`ROK1')', `dnl') dnl generic error from access map R<$+> $* $#error $: $1 error from access db R@ $* $1 remove mark', `dnl')', `dnl') @@ -2198,7 +2210,7 @@ R$+ < @ $+ > $| $* $: <$3> <$1 <@ $2>>', ifdef(`_ACCESS_TABLE_', `dnl dnl workspace: > R $* $@ RELAY -ifdef(`_ATMPF_', `R<$* _ATMPF_> $* $#TEMP $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl') +ifdef(`_ATMPF_', `R<$* _ATMPF_> $* $#TEMP $@ 4.3.0 $: _TMPFMSG_(`ROK2')', `dnl') R<$*> <$*> $: $2',`dnl') @@ -2268,7 +2280,7 @@ dnl Connect:My.Host.Domain RELAY dnl Connect:My.Net REJECT dnl since in check_relay client_name is checked before client_addr R $* $@ REJECT rejected IP address') -ifdef(`_ATMPF_', `R<_ATMPF_> $* $#TEMP $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl') +ifdef(`_ATMPF_', `R<_ATMPF_> $* $#TEMP $@ 4.3.0 $: _TMPFMSG_(`YOK1')', `dnl') R<$*> <$*> $: $2', `dnl') R$* $: [ $1 ] put brackets around it... R$=w $@ RELAY ... and see if it is local @@ -2287,7 +2299,7 @@ R $+ < @ $=w > $@ RELAY FROM local', `dnl') ifdef(`_RELAY_DB_FROM_', `dnl R $+ < @ $+ > $: <@> $>SearchList $| ifdef(`_RELAY_DB_FROM_DOMAIN_', ifdef(`_RELAY_HOSTS_ONLY_', `', `')) <> R<@> $@ RELAY RELAY FROM sender ok -ifdef(`_ATMPF_', `R<@> <_ATMPF_> $#TEMP $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl') +ifdef(`_ATMPF_', `R<@> <_ATMPF_> $#TEMP $@ 4.3.0 $: _TMPFMSG_(`YOK2')', `dnl') ', `dnl ifdef(`_RELAY_DB_FROM_DOMAIN_', `errprint(`*** ERROR: _RELAY_DB_FROM_DOMAIN_ requires _RELAY_DB_FROM_ @@ -2331,7 +2343,7 @@ ifdef(`_ACCESS_TABLE_', `dnl R $* $: $>D <$1> <+ Connect> <$1>',`dnl')') ifdef(`_ACCESS_TABLE_', `dnl R $* $@ RELAY -ifdef(`_ATMPF_', `R<$* _ATMPF_> $* $#TEMP $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl') +ifdef(`_ATMPF_', `R<$* _ATMPF_> $* $#TEMP $@ 4.3.0 $: _TMPFMSG_(`YOK3')', `dnl') R<$*> <$*> $: $2',`dnl') dnl end of _PROMISCUOUS_RELAY_ divert(0) @@ -2384,7 +2396,7 @@ ifdef(`_ACCESS_TABLE_', `', `errprint(`*** ERROR: FEATURE(`delay_checks', `argument') requires FEATURE(`access_db') ')')dnl dnl one of the next two rules is supposed to match -dnl this code has been copied from BLACKLIST... etc +dnl this code has been copied from BLOCKLIST... etc dnl and simplified by omitting some < >. R $+ < @ $=w > $: <> $1 < @ $2 > $| R $+ < @ $* > $: <> $1 < @ $2 > $| @@ -2688,7 +2700,7 @@ R$* $: $>A <$&{server_addr}> <> 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<$* _ATMPF_>$* $#error $@ 4.3.0 $: _TMPFMSG_(`TT')', `dnl') R$* $#error $@ 5.7.1 $: "550 do not try TLS with " $&{server_name} " ["$&{server_addr}"]"') ###################################################################### @@ -2721,7 +2733,7 @@ R$* $| $+ $: $1 $| $>SearchList $| $2 <> 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') +R$* $| <$* _ATMPF_> $#error $@ 4.3.0 $: _TMPFMSG_(`TR')', `dnl') dnl use the generic routine (for now) R$* $| <$+> $@ $>"TLS_connection" $&{verify} $| <$2>') @@ -2751,7 +2763,7 @@ R$* $| $* $: $1 $| $>A <$&{client_addr}> <> dnl do a default lookup: just TLS_CLT_TAG R$* $| $* $: $1 $| <$(access TLS_CLT_TAG`'_TAG_DELIM_ $: ? $)> ifdef(`_ATMPF_', `dnl tempfail? -R$* $| <$* _ATMPF_> $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl') +R$* $| <$* _ATMPF_> $#error $@ 4.3.0 $: _TMPFMSG_(`TC')', `dnl') R$* $@ $>"TLS_connection" $1', `dnl R$* $| $* $@ $>"TLS_connection" $1') @@ -2769,6 +2781,8 @@ ifdef(`_LOCAL_TLS_SERVER_', `dnl R$* $: $1 $| $>"Local_tls_server" $1 R$* $| $#$* $#$2 R$* $| $* $: $1', `dnl') +ifdef(`_TLS_FAILURES_',`dnl +R$* $: $(macro {saved_verify} $@ $1 $) $1') ifdef(`_ACCESS_TABLE_', `dnl dnl store name of other side R$* $: $(macro {TLS_Name} $@ $&{server_name} $) $1 @@ -2777,7 +2791,7 @@ R$* $| $* $: $1 $| $>A <$&{server_addr}> <> dnl do a default lookup: just TLS_SRV_TAG R$* $| $* $: $1 $| <$(access TLS_SRV_TAG`'_TAG_DELIM_ $: ? $)> ifdef(`_ATMPF_', `dnl tempfail? -R$* $| <$* _ATMPF_> $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl') +R$* $| <$* _ATMPF_> $#error $@ 4.3.0 $: _TMPFMSG_(`TS')', `dnl') R$* $@ $>"TLS_connection" $1', `dnl R$* $@ $>"TLS_connection" $1') @@ -2798,6 +2812,7 @@ STLS_connection ifdef(`_ACCESS_TABLE_', `dnl', `dnl use default error dnl deal with TLS handshake failures: abort RSOFTWARE $#error $@ ifdef(`TLS_PERM_ERR', `5.7.0', `4.7.0') $: "ifdef(`TLS_PERM_ERR', `503', `403') TLS handshake." +RDANE_FAIL $#error $@ ifdef(`TLS_PERM_ERR', `5.7.0', `4.7.0') $: "ifdef(`TLS_PERM_ERR', `503', `403') DANE check failed." divert(-1)') dnl common ruleset for tls_{client|server} dnl input: ${verify} $| [<>] @@ -2813,14 +2828,19 @@ R$* $| <$={Tls} $*> $: $1 $| dnl workspace: ${verify} $| [] # deal with TLS handshake failures: abort RSOFTWARE $| <$-:$+> $* $#error $@ $2 $: $1 " TLS handshake failed." -dnl no i.e. not requirements in the access map +dnl no i.e. no requirements in the access map dnl use default error RSOFTWARE $| $* $#error $@ ifdef(`TLS_PERM_ERR', `5.7.0', `4.7.0') $: "ifdef(`TLS_PERM_ERR', `503', `403') TLS handshake failed." # deal with TLS protocol errors: abort RPROTOCOL $| <$-:$+> $* $#error $@ $2 $: $1 " STARTTLS failed." -dnl no i.e. not requirements in the access map +dnl no i.e. no requirements in the access map dnl use default error RPROTOCOL $| $* $#error $@ ifdef(`TLS_PERM_ERR', `5.7.0', `4.7.0') $: "ifdef(`TLS_PERM_ERR', `503', `403') STARTTLS failed." +# deal with DANE errors: abort +RDANE_FAIL $| <$-:$+> $* $#error $@ $2 $: $1 " DANE check failed." +dnl no i.e. no requirements in the access map +dnl use default error +RDANE_FAIL $| $* $#error $@ ifdef(`TLS_PERM_ERR', `5.7.0', `4.7.0') $: "ifdef(`TLS_PERM_ERR', `503', `403') DANE check failed." R$* $| <$*> $: <$2> <> $1 dnl separate optional requirements R$* $| <$*> $: <$2> <$3> $1 @@ -2834,16 +2854,16 @@ R$* $| $* $@ OK # other side did authenticate (via STARTTLS) dnl workspace: <{VERIFY,ENCR}[:BITS]> <[extensions]> ${verify} dnl only verification required and it succeeded -R<$*> <> OK $@ OK +R<$*> <> $={TlsVerified} $@ OK dnl verification required and it succeeded but extensions are given dnl change it to -R<$*> <$+> OK $: <$1> <$2> +R<$*> <$+> $={TlsVerified} $: <$1> <$2> dnl verification required + some level of encryption -R<$*> <$*> OK $: <$1> <$3> +R<$*> <$*> $={TlsVerified} $: <$1> <$3> dnl just some level of encryption required R<$*> <$*> $* $: <$1> <$3> dnl workspace: -dnl 1. <[extensions]> {verify} (!= OK) +dnl 1. <[extensions]> {verify} (!~ $={TlsVerified}) dnl 2. <[extensions]> dnl verification required but ${verify} is not set (case 1.) R<$-:$+> <$*> $#error $@ $2 $: $1 " authentication required" @@ -2851,6 +2871,7 @@ R<$-:$+> <$*> FAIL $#error $@ $2 $: $1 " authentication failed" R<$-:$+> <$*> NO $#error $@ $2 $: $1 " not authenticated" R<$-:$+> <$*> NOT $#error $@ $2 $: $1 " no authentication requested" R<$-:$+> <$*> NONE $#error $@ $2 $: $1 " other side does not support STARTTLS" +R<$-:$+> <$*> CLEAR $#error $@ $2 $: $1 " STARTTLS disabled locally" dnl some other value for ${verify} R<$-:$+> <$*> $+ $#error $@ $2 $: $1 " authentication failure " $4 dnl some level of encryption required: get the maximum level (case 2.) @@ -2884,7 +2905,6 @@ R<$-:$+> $+ $@ $>"TLS_req" $3 $| <$1:$2> dnl further requirements for this ruleset: dnl name of "other side" is stored is {TLS_name} (client/server_name) dnl -dnl currently only CN[:common_name] is implemented dnl right now this is only a logical AND dnl i.e. all requirements must be true dnl how about an OR? CN must be X or CN must be Y or .. @@ -2896,6 +2916,11 @@ dnl no additional requirements: ok R $| $+ $@ OK dnl require CN: but no CN specified: use name of other side R $* $| <$+> $: $1 $| <$2> +ifdef(`_FFR_TLS_ALTNAMES', `dnl +R $* $| <$+> $@ $>"TLS_req" $2 $| <$3> +R $* $| <$+> $: $3 $| <$4> +R $* $| <$+> $@ $>"TLS_req" $3 $| <$3> +R $* $| <$+> $: $2 $| <$3>', `dnl') dnl match, check rest R $* $| <$+> $@ $>"TLS_req" $1 $| <$2> dnl CN does not match @@ -2911,6 +2936,10 @@ R $* $| <$+> $@ $>"TLS_req" $1 $| <$2> dnl CI does not match dnl 1 2 3 4 R $* $| <$-:$+> $#error $@ $4 $: $3 " Cert Issuer " $&{cert_issuer} " does not match " $1 +dnl +R $* $| <$+> $: <$(access $1:$&{cert_issuer} $: ? $)> $2 $| <$3> +R $* $| <$-:$+> $#error $@ $3 $: $2 " Cert Issuer " $&{cert_issuer} " not acceptable" +R $* $| <$+> $@ $>"TLS_req" $1 $| <$2> dnl return from recursive call ROK $@ OK @@ -2970,7 +2999,7 @@ dnl if it returns SUBJECT we perform a similar check on the dnl cert subject. ifdef(`_ACCESS_TABLE_', `dnl R$* $: $&{verify} -R OK $: OK authenticated: continue +R $={TlsVerified} $: OK authenticated: continue R $* $@ NO not authenticated ifdef(`_CERT_REGEX_ISSUER_', `dnl R$* $: $(CERTIssuer $&{cert_issuer} $)', @@ -3029,7 +3058,7 @@ R$+ $: $>SearchList $| $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') +R<$* _ATMPF_> $#error $@ 4.3.0 $: _TMPFMSG_(`RC')', `dnl') dnl use the generic routine (for now) R<0> $@ OK no limit R<$+> $: <$1> $| $(arith l $@ $1 $@ $&{client_rate} $) @@ -3051,7 +3080,7 @@ R$+ $: $>SearchList $| $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') +R<$* _ATMPF_> $#error $@ 4.3.0 $: _TMPFMSG_(`CC')', `dnl') dnl use the generic routine (for now) R<0> $@ OK no limit R<$+> $: <$1> $| $(arith l $@ $1 $@ $&{client_connections} $) diff --git a/cf/m4/version.m4 b/cf/m4/version.m4 index 8d2680534a4a..dadff627bb2e 100644 --- a/cf/m4/version.m4 +++ b/cf/m4/version.m4 @@ -1,6 +1,6 @@ divert(-1) # -# Copyright (c) 1998-2015 Proofpoint, Inc. and its suppliers. +# Copyright (c) 1998-2016 Proofpoint, Inc. and its suppliers. # All rights reserved. # Copyright (c) 1983 Eric P. Allman. All rights reserved. # Copyright (c) 1988, 1993 @@ -15,4 +15,4 @@ VERSIONID(`$Id: version.m4,v 8.237 2014-01-27 12:55:17 ca Exp $') # divert(0) # Configuration version number -DZ8.15.2`'ifdef(`confCF_VERSION', `/confCF_VERSION') +DZ8.16.1`'ifdef(`confCF_VERSION', `/confCF_VERSION') diff --git a/cf/ostype/hpux10.m4 b/cf/ostype/hpux10.m4 index c59828cedaa1..423bd5bb16d1 100644 --- a/cf/ostype/hpux10.m4 +++ b/cf/ostype/hpux10.m4 @@ -23,5 +23,5 @@ ifdef(`LOCAL_SHELL_PATH',, `define(`LOCAL_SHELL_PATH', /usr/bin/sh)')dnl ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gC $h!rmail ($u)')')dnl define(`confTIME_ZONE', `USE_TZ')dnl dnl -dnl For maximum compability with HP-UX, use: +dnl For maximum compatibility with HP-UX, use: dnl define(`confME_TOO', True)dnl diff --git a/cf/ostype/hpux9.m4 b/cf/ostype/hpux9.m4 index d9fa69faf7d0..76c2258183cb 100644 --- a/cf/ostype/hpux9.m4 +++ b/cf/ostype/hpux9.m4 @@ -23,5 +23,5 @@ ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gC $h!rma define(`confTIME_ZONE', `USE_TZ')dnl define(`confEBINDIR', `/usr/lib')dnl dnl -dnl For maximum compability with HP-UX, use: +dnl For maximum compatibility with HP-UX, use: dnl define(`confME_TOO', True)dnl diff --git a/contrib/cidrexpand b/contrib/cidrexpand index efa5323a010c..ee24ee865275 100755 --- a/contrib/cidrexpand +++ b/contrib/cidrexpand @@ -1,13 +1,14 @@ #!/usr/bin/perl -w - -# $Id: cidrexpand,v 8.8 2006-08-07 17:18:37 ca Exp $ +# +# usage: +# cidrexpand < /etc/mail/access | makemap -r hash /etc/mail/access # # v 0.4 # # 17 July 2000 Derek J. Balling (dredd@megacity.org) -# +# # Acts as a preparser on /etc/mail/access_db to allow you to use address/bit -# notation. +# 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 @@ -25,114 +26,156 @@ # 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 +# Added clarification in the notes for what to do if you have # exceptions to a larger CIDR block. # -# 26 Jul 2006 Richard Rognlie (richard@sendmail.com> +# 26 Jul 2006 Richard Rognlie (richard@sendmail.com) # Added code to strip "comments" (anything after a non-escaped #) # # characters after a \ or within quotes (single and double) are -# left intact. +# left intact. # # e.g. # From:1.2.3.4 550 Die spammer # spammed us 2006.07.26 # becomes -# From:1.2.3.4 550 Die spammer +# From:1.2.3.4 550 Die spammer # # 3 August 2006 -# # Corrected a bug to have it handle the special case of "0.0.0.0/0" # since Net::CIDR doesn't handle it properly. # -# usage: -# cidrexpand < /etc/mail/access | makemap -r hash /etc/mail/access +# 27 April 2016 +# Corrected IPv6 handling. Note that UseCompressedIPv6Addresses must +# be turned off for this to work; there are three reasons for this: +# 1) if the MTA uses compressed IPv6 addresses then CIDR 'cuts' +# in the compressed range *cannot* be matched, as the MTA simply +# won't look for them. E.g., there's no way to accurately +# match "IPv6:fe80::/64" when for the address "IPv6:fe80::54ad" +# the MTA doesn't lookup up "IPv6:fe80:0:0:0" +# 2) cidrexpand only generates uncompressed addresses, so CIDR +# 'cuts' to the right of the compressed range won't be matched +# either. Why doesn't it generate compressed address output? +# Oh, because: +# 3) compressed addresses are ambiguous when colon-groups are +# chopped off! You want an access map entry for +# IPv6:fe80::0:5420 +# but not for +# IPv6:fe80::5420:1234 +# ? Sorry, the former is really +# IPv6:fe80::5420 +# which will also match the latter! # +# 25 July 2016 +# Since cidrexpand already requires UseCompressedIPv6Addresses to be +# turned off, it can also canonicalize non-CIDR IPv6 addresses to the +# format that sendmail looks up, expanding compressed addresses and +# trimming superfluous leading zeros. # # Report bugs to: # use strict; -use Net::CIDR; +use Net::CIDR qw(cidr2octets cidrvalidate); use Getopt::Std; -our ($opt_c,$opt_t); -getopts('ct:'); +sub print_expanded_v4network; +sub print_expanded_v6network; -my $spaceregex = '\s+'; -if ($opt_t) -{ - $spaceregex = $opt_t; -} +our %opts; +getopts('ct:', \%opts); + +# Delimiter between the key and value +my $space_re = exists $opts{t} ? $opts{t} : '\s+'; + +# Regexp that matches IPv4 address literals +my $ipv4_re = qr"(?:\d+\.){3}\d+"; + +# Regexp that matches IPv6 address literals, plus a lot more. +# Further checks are required for verifying that it's really one +my $ipv6_re = qr"[0-9A-Fa-f:]{2,39}(?:\.\d+\.\d+\.\d+)?"; while (<>) { chomp; - my ($prefix,$left,$right,$space); + my ($prefix, $network, $len, $right); - if ( (/\#/) && $opt_c ) + if ( (/\#/) && $opts{c} ) { # print "checking...\n"; my $i; my $qtype=''; - for ($i=0 ; $i -r`'ifdef(`EDNSBL_TO',`EDNSBL_TO',`5') ') divert(-1) diff --git a/contrib/expn.pl b/contrib/expn.pl index 85de08a7f419..317391238685 100755 --- a/contrib/expn.pl +++ b/contrib/expn.pl @@ -945,7 +945,7 @@ sub mxredirect return undef; } # follow mx records, return a hostname -# also follow temporary redirections comming from &domainify and +# also follow temporary redirections coming from &domainify and # &mxlookup sub mx { diff --git a/contrib/mmuegel b/contrib/mmuegel index 6db4a45189c1..e1610efa8606 100644 --- a/contrib/mmuegel +++ b/contrib/mmuegel @@ -268,7 +268,7 @@ sed 's/^X//' << 'SHAR_EOF' > 'libs/date.pl' && ;# Fixed a couple of problems with &ls as pointed out by ;# Thomas Richter (richter@ki1.chemie.fu-berlin.de), thanks Thomas! ;# Also added a couple of SunOS 4.1.1 strftime-ish formats, %i and %k -;# for space padded hours (` 1' to `12' and ` 0' to `23' respectivly), +;# for space padded hours (` 1' to `12' and ` 0' to `23' respectively), ;# and %C for locale long date/time format. Changed &mH to take a ;# pad char parameter to make to evaled code for %i and %k simpler. ;# Added %E for suffixed day-of-month (ie 1st, 3rd, 4th etc). @@ -398,7 +398,7 @@ X X # watch out in 2070... X $year += ($year < 70) ? 2000 : 1900; X -X # now loop throught the supplied format looking for tags... +X # now loop through the supplied format looking for tags... X while (($pos = index ($format, '%')) != -1) { X X # grab the format tag @@ -471,7 +471,7 @@ sub ls { X return ((&gettime ($TZ, time))[5] == @_[0]) ? "%R" : " %Y"; } X -# pad - pad $in with leading $pad until lenght $len +# pad - pad $in with leading $pad until length $len sub pad { X local ($in, $len, $pad) = @_; X local ($out) = "$in"; @@ -661,7 +661,7 @@ X ;# otherwise, $Status will be 0 and $Error_Msg will contain an error message. ;# ;# If $Use_Sendmail is 1 then sendmail is used to send the message. Normally -;# a mailer such as Mail is used. By specifiying this you can include +;# a mailer such as Mail is used. By specifying this you can include ;# headers in addition to text in either $Message or $Message_Is_File. ;# If either $Message or $Message_Is_File contain a Subject: header then ;# $Subject is ignored; otherwise, a Subject: header is automatically created. @@ -1026,15 +1026,15 @@ X ;# ;# Does not care about order of switches, options, and arguments like ;# getopts.pl. Thus all non-switches/options will be kept in ARGV even if they -;# are not at the end. If $Pass_Invalid is set all unkown options will be +;# are not at the end. If $Pass_Invalid is set all unknown options will be ;# passed back to the caller by keeping them in @ARGV. This is useful when ;# parsing a command line for your script while ignoring options that you ;# may pass to another script. If this is set New_Getopts tries to maintain -;# the switch clustering on the unkown switches. +;# the switch clustering on the unknown switches. ;# ;# Accepts the special argument -usage to print the Usage string. Also accepts ;# the special option -version which prints the contents of the string -;# $VERSION. $VERSION may or may not have an embeded \n in it. If -usage +;# $VERSION. $VERSION may or may not have an embedded \n in it. If -usage ;# or -version are specified a status of -1 is returned. Note that the usage ;# option is only accepted if the usage string is not null. ;# @@ -1048,8 +1048,8 @@ X ;# $Switch_To_Order {"v"} = 1; ;# $Switch_To_Order {"x"} = 2; ;# -;# Note that in the case of multiple occurances of an option $Switch_To_Order -;# will store each occurance of the argument via a string that emulates +;# Note that in the case of multiple occurrences of an option $Switch_To_Order +;# will store each occurrence of the argument via a string that emulates ;# an array. This is done by using join ($;, ...). You can retrieve the ;# array by using split (/$;/, ...). ;# @@ -1062,7 +1062,7 @@ X ;# Another exciting ;-) feature that newgetopts has. Along with creating the ;# normal $opt_ scalars for the last value of an argument the list @opt_ is ;# created. It is an array which contains all the values of arguments to the -;# basename of the variable. They are stored in the order which they occured +;# basename of the variable. They are stored in the order which they occurred ;# on the command line starting with $[. Note that blank arguments are stored ;# as "". Along with providing support for multiple options on the command ;# line this also provides a method of counting the number of times an option @@ -1293,8 +1293,8 @@ X ;# All other lines will be indented to match the amount of whitespace of ;# $Offset. ;# -;# + If $Bullet_Indent is $TRUE $Offset will only be applied to the begining -;# of lines as they occured in the original $String. Lines that are created +;# + If $Bullet_Indent is $TRUE $Offset will only be applied to the beginning +;# of lines as they occurred in the original $String. Lines that are created ;# by this routine will always be indented by blank spaces. ;# ;# + If $Columns is 0 no word-wrap is done. This might be useful to still @@ -1306,7 +1306,7 @@ X ;# + If $Offset_Blank is $TRUE then empty lines will have $Offset pre-pended ;# to them. Otherwise, they will still empty. ;# -;# This is a realy workhorse routine that I use in many places because of its +;# This is a really workhorse routine that I use in many places because of its ;# veratility. ;# ;# Arguments: @@ -1668,7 +1668,7 @@ sed 's/^X//' << 'SHAR_EOF' > 'man/postclip.1' && of the message. This keeps bounced mail private and helps to avoid disk space problems. \*(mp tries its best to keep as much of the header trail as possible. Hopefully only the original body of the message will be filtered. Only messages that have a subject that begins with 'Returned mail:' are filtered. This -ensures that other mail is not accidently mucked with. Finally, note that +ensures that other mail is not accidentally mucked with. Finally, note that \fBsendmail\fR is used to deliver the message after it has been (possibly) filtered. All of the original headers will remain intact. .sp 1 diff --git a/devtools/M4/header.m4 b/devtools/M4/header.m4 index 4ecc4f01f2de..bc19392bba2a 100644 --- a/devtools/M4/header.m4 +++ b/devtools/M4/header.m4 @@ -25,7 +25,7 @@ define(`confSHELL', `/bin/sh') define(`confBEFORE', `') define(`confLIBDIRS', `') define(`confINCDIRS', `') -define(`confLIBSEARCH', `db bind resolv 44bsd') +define(`confLIBSEARCH', `db bind resolv 44bsd cdb') define(`confLIBSEARCHPATH', `/lib /usr/lib /usr/shlib') define(`confSHAREDLIB_EXT', `.so') define(`confSITECONFIG', `site.config') diff --git a/devtools/OS/Darwin.14.x b/devtools/OS/Darwin.14.x new file mode 100644 index 000000000000..a34e90146e37 --- /dev/null +++ b/devtools/OS/Darwin.14.x @@ -0,0 +1,25 @@ +# $Id: Darwin.13.x,v 1.1 2013-12-02 22:11:06 gshapiro Exp $ + +dnl DO NOT EDIT THIS FILE. +dnl Place personal settings in devtools/Site/site.config.m4 + +# +define(`confCC', `cc -pipe ${Extra_CC_Flags}') +define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX') +define(`confENVDEF', `-DDARWIN=140000 -DBIND_8_COMPAT -DNETINET6') +define(`confLDOPTS', `${Extra_LD_Flags}') +define(`confMTLDOPTS', `-lpthread') +define(`confMILTER_STATIC', `') +define(`confDEPEND_TYPE', `CC-M') +define(`confOPTIMIZE', `-O3') +define(`confRANLIBOPTS', `-c') +define(`confHFDIR', `/usr/share/sendmail') +define(`confINSTALL_RAWMAN') +define(`confMANOWN', `root') +define(`confMANGRP', `wheel') +define(`confUBINOWN', `root') +define(`confUBINGRP', `wheel') +define(`confSBINOWN', `root') +define(`confSBINGRP', `wheel') +define(`confLDOPTS_SO', `-dynamiclib -flat_namespace -undefined suppress -single_module') +define(`confSHAREDLIB_EXT', `.dylib') diff --git a/devtools/OS/Darwin.15.x b/devtools/OS/Darwin.15.x new file mode 100644 index 000000000000..c2de69c8266a --- /dev/null +++ b/devtools/OS/Darwin.15.x @@ -0,0 +1,23 @@ +dnl DO NOT EDIT THIS FILE. +dnl Place personal settings in devtools/Site/site.config.m4 + +# +define(`confCC', `cc -pipe ${Extra_CC_Flags}') +define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX') +define(`confENVDEF', `-DDARWIN=150000 -DBIND_8_COMPAT -DNETINET6') +define(`confLDOPTS', `${Extra_LD_Flags}') +define(`confMTLDOPTS', `-lpthread') +define(`confMILTER_STATIC', `') +define(`confDEPEND_TYPE', `CC-M') +define(`confOPTIMIZE', `-O3') +define(`confRANLIBOPTS', `-c') +define(`confHFDIR', `/usr/share/sendmail') +define(`confINSTALL_RAWMAN') +define(`confMANOWN', `root') +define(`confMANGRP', `wheel') +define(`confUBINOWN', `root') +define(`confUBINGRP', `wheel') +define(`confSBINOWN', `root') +define(`confSBINGRP', `wheel') +define(`confLDOPTS_SO', `-dynamiclib -flat_namespace -undefined suppress -single_module') +define(`confSHAREDLIB_EXT', `.dylib') diff --git a/devtools/OS/Darwin.16.x b/devtools/OS/Darwin.16.x new file mode 100644 index 000000000000..e153e1d52239 --- /dev/null +++ b/devtools/OS/Darwin.16.x @@ -0,0 +1,23 @@ +dnl DO NOT EDIT THIS FILE. +dnl Place personal settings in devtools/Site/site.config.m4 + +# +define(`confCC', `cc -pipe ${Extra_CC_Flags}') +define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX') +define(`confENVDEF', `-DDARWIN=160000 -DBIND_8_COMPAT -DNETINET6') +define(`confLDOPTS', `${Extra_LD_Flags}') +define(`confMTLDOPTS', `-lpthread') +define(`confMILTER_STATIC', `') +define(`confDEPEND_TYPE', `CC-M') +define(`confOPTIMIZE', `-O3') +define(`confRANLIBOPTS', `-c') +define(`confHFDIR', `/usr/share/sendmail') +define(`confINSTALL_RAWMAN') +define(`confMANOWN', `root') +define(`confMANGRP', `wheel') +define(`confUBINOWN', `root') +define(`confUBINGRP', `wheel') +define(`confSBINOWN', `root') +define(`confSBINGRP', `wheel') +define(`confLDOPTS_SO', `-dynamiclib -flat_namespace -undefined suppress -single_module') +define(`confSHAREDLIB_EXT', `.dylib') diff --git a/devtools/OS/Darwin.17.x b/devtools/OS/Darwin.17.x new file mode 100644 index 000000000000..ef3ab555c4d9 --- /dev/null +++ b/devtools/OS/Darwin.17.x @@ -0,0 +1,23 @@ +dnl DO NOT EDIT THIS FILE. +dnl Place personal settings in devtools/Site/site.config.m4 + +# +define(`confCC', `cc -pipe ${Extra_CC_Flags}') +define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX') +define(`confENVDEF', `-DDARWIN=170000 -DBIND_8_COMPAT -DNETINET6') +define(`confLDOPTS', `${Extra_LD_Flags}') +define(`confMTLDOPTS', `-lpthread') +define(`confMILTER_STATIC', `') +define(`confDEPEND_TYPE', `CC-M') +define(`confOPTIMIZE', `-O3') +define(`confRANLIBOPTS', `-c') +define(`confHFDIR', `/usr/share/sendmail') +define(`confINSTALL_RAWMAN') +define(`confMANOWN', `root') +define(`confMANGRP', `wheel') +define(`confUBINOWN', `root') +define(`confUBINGRP', `wheel') +define(`confSBINOWN', `root') +define(`confSBINGRP', `wheel') +define(`confLDOPTS_SO', `-dynamiclib -flat_namespace -undefined suppress -single_module') +define(`confSHAREDLIB_EXT', `.dylib') diff --git a/devtools/OS/Darwin.18.x b/devtools/OS/Darwin.18.x new file mode 100644 index 000000000000..9a93b96cb0fb --- /dev/null +++ b/devtools/OS/Darwin.18.x @@ -0,0 +1,23 @@ +dnl DO NOT EDIT THIS FILE. +dnl Place personal settings in devtools/Site/site.config.m4 + +# +define(`confCC', `cc -pipe ${Extra_CC_Flags}') +define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX') +define(`confENVDEF', `-DDARWIN=180000 -DBIND_8_COMPAT -DNETINET6') +define(`confLDOPTS', `${Extra_LD_Flags}') +define(`confMTLDOPTS', `-lpthread') +define(`confMILTER_STATIC', `') +define(`confDEPEND_TYPE', `CC-M') +define(`confOPTIMIZE', `-O3') +define(`confRANLIBOPTS', `-c') +define(`confHFDIR', `/usr/share/sendmail') +define(`confINSTALL_RAWMAN') +define(`confMANOWN', `root') +define(`confMANGRP', `wheel') +define(`confUBINOWN', `root') +define(`confUBINGRP', `wheel') +define(`confSBINOWN', `root') +define(`confSBINGRP', `wheel') +define(`confLDOPTS_SO', `-dynamiclib -flat_namespace -undefined suppress -single_module') +define(`confSHAREDLIB_EXT', `.dylib') diff --git a/devtools/README b/devtools/README index 04f808e640e3..986e2461bd6b 100644 --- a/devtools/README +++ b/devtools/README @@ -137,7 +137,7 @@ confLIBGRP bin The group for libraries. confLIBMODE 444 The mode of installed libraries. confLIBOWN root The owner for libraries. confLIBS [varies] -l flags passed to ld. -confLIBSEARCH db bind resolv 44bsd +confLIBSEARCH db bind resolv 44bsd cdb Search for these libraries for linking with programs. confLIBSEARCHPATH /lib /usr/lib /usr/shlib @@ -177,7 +177,8 @@ confMANROOTMAN /usr/share/man/man The root of the man subtree, for unformatted manual pages. confMAPDEF [varies] The map definitions, e.g., -DNDBM -DNEWDB. -DNEWDB is always - added if libdb.* can be found. + added if libdb.* can be found, + -DCDB is added if libcdb.* is found. confMBINDIR /usr/sbin The location of the MTA (sm-mta, sendmail) binary. confMBINGRP bin The group of the MTA binary (sm-mta). diff --git a/devtools/bin/Build b/devtools/bin/Build index 4a1604c489f1..5f03a02e10cf 100755 --- a/devtools/bin/Build +++ b/devtools/bin/Build @@ -543,6 +543,8 @@ elif [ -r ${OBJ_ROOT}/obj${prefix}.$rel$sfx ]; then abs_obj_dir=${OBJ_ROOT}/obj${prefix}.$rel$sfx elif [ -r ${OBJ_ROOT}/obj${prefix}.$sfx ]; then abs_obj_dir=${OBJ_ROOT}/obj${prefix}.$sfx +elif [ -r ${OBJ_ROOT}/obj${prefix}$sfx ]; then + abs_obj_dir=${OBJ_ROOT}/obj${prefix}$sfx fi if [ -n "$abs_obj_dir" ] diff --git a/devtools/bin/configure.sh b/devtools/bin/configure.sh index daa951551bc4..db85c9df2862 100755 --- a/devtools/bin/configure.sh +++ b/devtools/bin/configure.sh @@ -115,11 +115,13 @@ do fi if [ -f $p/lib$l.a -o -f $p/lib$l$SOEXT ] then - case $l - in + case $l in db) mapdef="$mapdef -DNEWDB" ;; + cdb) + mapdef="$mapdef -DCDB" + ;; bind|resolv) if [ -n "$resolver" ] then diff --git a/doc/op/op.me b/doc/op/op.me index 57e25cd0940f..4d7ead30d4bb 100644 --- a/doc/op/op.me +++ b/doc/op/op.me @@ -90,10 +90,9 @@ Proofpoint, Inc. .de Ve Version \\$2 .. -.Ve $Revision: 8.759 $ .rm Ve .sp -For Sendmail Version 8.15 +For Sendmail Version 8.16 .)l .(f Sendmail is a trademark of Proofpoint, Inc. @@ -149,8 +148,9 @@ RFC 2554 (SMTP Service Extension for Authentication), RFC 2821 (Simple Mail Transfer Protocol), RFC 2822 (Internet Message Format), RFC 2852 (Deliver By SMTP Service Extension), +RFC 2920 (SMTP Service Extension for Command Pipelining), and -RFC 2920 (SMTP Service Extension for Command Pipelining). +RFC 7505 (A "Null MX" No Service Resource Record for Domains That Accept No Mail). However, since .i sendmail is designed to work in a wider world, @@ -309,9 +309,8 @@ program; for details see .sh 3 "Creating a Site Configuration File" .\"XXX .pp -(This section is not yet complete. -For now, see the file devtools/README for details.) -See sendmail/README for various compilation flags that can be set. +See sendmail/README for various compilation flags that can be set, +and devtools/README for details how to set them. .sh 3 "Tweaking the Makefile" .pp .\" .b "XXX This should all be in the Site Configuration File section." @@ -323,6 +322,8 @@ notably the database. At least one of these should be defined if at all possible. .nr ii 1i +.ip CDB +Constant DataBase (tinycdb). .ip NDBM The ``new DBM'' format, available on nearly all systems around today. @@ -1224,7 +1225,9 @@ A recipient address is mapped to a queue group as follows. First, if there is a ruleset called ``queuegroup'', and if this ruleset maps the address to a queue group name, then that queue group is chosen. -That is, the argument for the ruleset is the recipient address +That is, the argument for the ruleset is +the recipient address +(i.e., the address part of the resolved triple) and the result should be .b $# followed by the name of a queue group. @@ -1282,7 +1285,7 @@ In case one of the queue runners tries delivery to a slow recipient site at the end of a queue run, the next queue run may be substantially delayed. In general this should be smoothed out due to the distribution of those slow jobs, however, for sites with small number of -queue entries this might introduce noticable delays. +queue entries this might introduce noticeable delays. In general, persistent queue runners are only useful for sites with big queues. .sh 3 "Manual Intervention" @@ -2908,7 +2911,7 @@ Therefore it is necessary to run the client mail queue periodically. .pp .i Sendmail has several parameters to control resource usage. -Besides those mentionted in the previous section, there are at least +Besides those mentioned in the previous section, there are at least .b MaxDaemonChildren , .b ConnectionRateThrottle , .b MaxQueueChildren , @@ -2954,7 +2957,7 @@ by looking for the macro definitions of and .b MAXETRNCOMMANDS . If an SMTP command is issued more often than the corresponding -.b MAXcmdCOMMANDS +.b MAXcmdCOMMANDS value, then the response is delayed exponentially, starting with a sleep time of one second, up to a maximum of four minutes (as defined by @@ -2966,7 +2969,7 @@ then this could make a DoS attack even worse since it keeps a connection open longer than necessary. Therefore a connection is terminated with a 421 SMTP reply code if the number of commands exceeds the limit by a factor of two and -.b MAXBADCOMMANDS +.b MAXBADCOMMANDS is set to a value greater than zero (the default is 25). .sh 2 "Delivery Mode" .pp @@ -3038,8 +3041,9 @@ should not be used by the SMTP server. .pp The level of logging can be set for .i sendmail . -The default using a standard configuration table is level 9. -The levels are as follows: +The default using a standard configuration is level 9. +The levels are approximately as follows +(some log types are using different level depending on various factors): .nr ii 0.5i .ip 0 Minimal logging. @@ -3078,7 +3082,7 @@ questionable situations. .ip 14 Logs refused connections. .ip 15 -Log all incoming and outgoing SMTP commands. +Log all incoming SMTP commands. .ip 20 Logs attempts to run locked queue files. These are not errors, @@ -3280,7 +3284,7 @@ Accept group-writable .i \&.forward files as safe for program and file delivery. .ip GroupWritableIncludeFile -Allow group wriable +Allow group writable .i :include: files. .ip GroupWritableIncludeFileSafe @@ -3355,7 +3359,7 @@ Allow world writable .i \&.forward files. .ip WorldWritableIncludefile -Allow world wriable +Allow world writable .i :include: files. .ip WriteMapToHardLink @@ -3932,7 +3936,7 @@ The complete syntax for ruleset 0 is: .)b This specifies the {mailer, host, user} -3-tuple necessary to direct the mailer. +3-tuple (triple) necessary to direct the mailer. Note: the third element ( .i user ) is often also called @@ -3964,9 +3968,11 @@ If the is the built-in IPC mailer, the .i host -may be a colon-separated list of hosts -that are searched in order for the first working address -(exactly like MX records). +may be a colon (or comma) separated list of hosts. +Each is separately MX expanded and the results are concatenated +to make (essentially) one long MX list. +Hosts separated by a comma have the same MX preference, +and for each colon separated host the MX preference is increased. The .i user is later rewritten by the mailer-specific envelope rewriting set @@ -4148,7 +4154,7 @@ macro for use in the argv expansion of the specified mailer. Notice: since the envelope sender address will be used if a delivery status notification must be send, -i.e., is may specify a recipient, +i.e., it may specify a recipient, it is also run through ruleset zero. If ruleset zero returns a temporary error .b 4xy @@ -4515,7 +4521,7 @@ for details, as well as and note this warning: Options already set before are not cleared! .ip CipherList -Specify cipher list for STARTTLS, +Specify cipher list for STARTTLS (does not apply to TLSv1.3), see .i ciphers (1) for possible values. @@ -4526,6 +4532,28 @@ for the session. File containing a certificate. .ip KeyFile File containing the private key for the certificate. +.ip Flags +Currently the only valid flags are +.br +.i R +to require a CRL for each encountered certificate during verification +(by default a missing CRL is ignored), +.br +.i c +and +.i C +which basically clears/sets the option +.i TLSFallbacktoClear +for just this session, respectively, +.br +.i d +to turn off DANE which is obviously only valid for +.i tls_clt_features +and requires DANE to be compiled in. +This might be needed in case of a misconfiguration, +e.g., +specifying invalid TLSA RRs. +.br .lp .lp Example: @@ -4550,9 +4578,6 @@ and .i KeyFile must be specified together; specifying only one is an error. -.pp -These rulesets require the sendmail binary to be built with _FFR_TLS_SE_OPTS -enabled (see the "For Future Release" section). .sh 4 "authinfo" .pp The @@ -4589,9 +4614,9 @@ is ignored (even if the ruleset does not return a ``useful'' result). The .i queuegroup ruleset is used to map a recipient address to a queue group name. -The input for the ruleset is a recipient address as specified by the -.sm "SMTP RCPT" -command. +The input for the ruleset is +the recipient address +(i.e., the address part of the resolved triple) The ruleset should return .b $# followed by the name of a queue group. @@ -4615,7 +4640,7 @@ pause. If the return value starts with anything else or is not a number, it is silently ignored. Note: this ruleset is not invoked (and hence the feature is disabled) -when the smtps (SMTP over SSL) is used, i.e., +when smtps (SMTP over SSL) is used, i.e., the .i s modifier is set for the daemon via @@ -4651,9 +4676,11 @@ to an IP host address. .pp The host name passed in after the .q $@ -may also be a colon-separated list of hosts. +may also be a colon or comma separated list of hosts. Each is separately MX expanded and the results are concatenated to make (essentially) one long MX list. +Hosts separated by a comma have the same MX preference, +and for each colon separated host the MX preference is increased. The intent here is to create .q fake MX records that are not published in DNS @@ -5224,7 +5251,7 @@ The output of the function, i.e., the number of seconds since 0 hours, 0 minutes, 0 seconds, January 1, 1970, Coordinated Universal Time (UTC). .ip ${tls_version} -The TLS/SSL version used for the connection, e.g., TLSv1, SSLv3, SSLv2; +The TLS/SSL version used for the connection, e.g., TLSv1.2, TLSv1; defined after STARTTLS has been used. .ip ${total_rate} The total number of incoming connections over the time interval specified @@ -5241,6 +5268,7 @@ NOT no cert requested. FAIL cert presented but could not be verified, e.g., the signing CA is missing. NONE STARTTLS has not been performed. +CLEAR STARTTLS has been disabled internally for a clear text delivery attempt. TEMP temporary error occurred. PROTOCOL some protocol error occurred at the ESMTP level (not TLS). @@ -5859,7 +5887,7 @@ Do User Database rewriting on recipients as well as senders. Normally when .i sendmail connects to a host via SMTP, -it checks to make sure that this isn't accidently the same host name +it checks to make sure that this isn't accidentally the same host name as might happen if .i sendmail is misconfigured or if a long-haul network interface is set in loopback mode. @@ -5893,7 +5921,7 @@ macro occurs in the part of the mailer definition, that field will be repeated as necessary for all qualifying users. -Removing this flag can defeat duplicate supression on a remote site +Removing this flag can defeat duplicate suppression on a remote site as each recipient is sent in a separate transaction. .ip M\(dg This mailer wants a @@ -6519,6 +6547,10 @@ is specified), (if .sm NDBM is specified), +.q cdb +(if +.sm CDB +is specified), .q stab (internal symbol table \*- not normally used unless you have no other database lookup), @@ -6647,7 +6679,7 @@ see section about STARTTLS for more information. Specify the fingerprint algorithm (digest) to use for the presented cert. If the option is not set, md5 is used and the macro -.p ${cert_md5} +.b ${cert_md5} contains the cert fingerprint. If the option is explicitly set, the specified algorithm (e.g., sha1) is used @@ -6655,7 +6687,7 @@ and the macro .b ${cert_fp} contains the cert fingerprint. .ip CipherList -Specify cipher list for STARTTLS. +Specify cipher list for STARTTLS (does not apply to TLSv1.3). See .i ciphers (1) for possible values. @@ -6756,7 +6788,7 @@ By default, .i -SSL_OP_TLSEXT_PADDING are used (if those options are available). -Options can be cleared by preceeding them with a minus sign. +Options can be cleared by preceding them with a minus sign. It is also possible to specify numerical values, e.g., .b -0x0010 . .ip ColonOkInAddr @@ -6851,9 +6883,18 @@ Solaris and pre-4.4BSD kernel users should see the note in sendmail/README . [no short name] Name of file that contains certificate revocation status, useful for X.509v3 authentication. -CRL checking requires at least OpenSSL version 0.9.7. Note: if a CRLFile is specified but the file is unusable, STARTTLS is disabled. +.ip CRLPath=\fIname\fP +[no short name] +Name of directory that contains hashes pointing to +certificate revocation status files. +Symbolic links can be generated with the following +two (Bourne) shell commands: +.(b +C=FileName_of_CRL +ln -s $C `openssl crl -noout -hash < $C`.r0 +.)b .ip DHParameters This option applies to the server side only. Possible values are: @@ -6948,7 +6989,7 @@ can be a sequence (without any delimiters) of the following characters: .(b .ta 1i -a always require authentication +a always require AUTH b bind to interface through which mail has been received c perform hostname canonification (.cf) f require fully qualified hostname (.cf) @@ -6961,7 +7002,7 @@ O optional; if opening the socket fails ignore it S don't offer STARTTLS .)b That is, one way to specify a message submission agent (MSA) that -always requires authentication is: +always requires AUTH is: .(b O DaemonPortOptions=Name=MSA, Port=587, M=Ea .)b @@ -7000,7 +7041,7 @@ This will also override possible settings via Note, .i sendmail will listen on a new socket -for each occurence of the +for each occurrence of the .b DaemonPortOptions option in a configuration file. The modifier ``O'' causes sendmail to ignore a socket @@ -7296,6 +7337,18 @@ are: .\"8BITMIME\(->7BIT conversions are done. In all cases properly declared 8BITMIME data will be converted to 7BIT as needed. +.p +Note: if an automatic conversion is performed, a header with +the following format will be added: +.(b +X-MIME-Autoconverted: from OLD to NEW by $j id $i +.)b +where +.\" format? +OLD +and +NEW +describe the original format and the converted format, respectively. .ip ErrorHeader=\fIfile-or-message\fP [E] Prepend error messages with the indicated message. @@ -7393,6 +7446,10 @@ and then in .ip HeloName=\fIname\fP [no short name] Set the name to be used for HELO/EHLO (instead of $j). +.ip HelpFile=\fIfile\fP +[H] +Specify the help file for SMTP. +If no file name is specified, "helpfile" is used. .ip HoldExpensive [c] If an outgoing mailer is marked as being expensive, @@ -7520,9 +7577,10 @@ If not set, there is no limit to the number of children -- that is, the system load average controls this. .ip MaxHeadersLength=\fIN\fP [no short name] -The maximum length of the sum of all headers. +If set to a value greater than zero it specifies +the maximum length of the sum of all headers. This can be used to prevent a denial of service attack. -The default is no limit. +The default is 32K. .ip MaxHopCount=\fIN\fP [h] The maximum hop count. @@ -7706,6 +7764,12 @@ Sets the list of characters that must be quoted if used in a full name that is in the phrase part of a ``phrase
'' syntax. The default is ``\'.''. The characters ``@,;:\e()[]'' are always added to this list. +Note: To avoid potential breakage of +DKIM signatures it is useful to set +.(b +O MustQuoteChars=. +.)b +Moreover, relaxed header signing should be used for DKIM signatures. .ip NiceQueueRun [no short name] The priority of queue runners (nice(3)). @@ -8189,7 +8253,7 @@ By default, .i -SSL_OP_TLSEXT_PADDING are used (if those options are available). -Options can be cleared by preceeding them with a minus sign. +Options can be cleared by preceding them with a minus sign. It is also possible to specify numerical values, e.g., .b -0x0010 . .ip ServiceSwitchFile=\fIfilename\fP @@ -8301,6 +8365,31 @@ Defaults to If set, issue temporary errors (4xy) instead of permanent errors (5xy). This can be useful during testing of a new configuration to avoid erroneous bouncing of mails. +.ip SSLEngine +Name of SSL engine to use. +The available values depend on the OpenSSL version against which +.i sendmail +is compiled, +see +.(b +openssl engine -v +.)b +for some information. +.ip SSLEnginePath +Path to dynamic library for SSL engine. +This option is only useful if +.i SSLEngine +is set. +If both are set, the engine will be loaded dynamically at runtime +using the concatenation of the path, +a slash "/", +the string "lib", +the value of +.i SSLEngine , +and the string ".so". +If only +.i SSLEngine +is set then the static version of the engine is used. .ip StatusFile=\fIfile\fP [S] Log summary statistics in the named @@ -8340,6 +8429,22 @@ PostMilter is useful only when .i sendmail is running as an SMTP server; in all other situations it acts the same as True. +.ip TLSFallbacktoClear +[no short name] +If set, +.i sendmail +immediately tries an outbound connection again without STARTTLS +after a TLS handshake failure. +Note: +this applies to all connections even if TLS specific requirements are set +(see rulesets +.i tls_rcpt +and +.i tls_client +). +Hence such requirements will cause an error on a retry without STARTTLS. +Therefore they should only trigger a temporary failure so the connection +is later on tried again. .ip TLSSrvOptions [no short name] List of options for SMTP STARTTLS for the server @@ -8824,6 +8929,12 @@ $[\fIhostname\fP$] .)b .pp There are many defined classes. +.ip cdb +Database lookups using the cdb(3) library. +.i Sendmail +must be compiled with +.b CDB +defined. .ip dbm Database lookups using the ndbm(3) library. .i Sendmail @@ -8885,7 +8996,7 @@ only the first value will be returned unless the .b \-z (value separator) -map flag is set. +map option is set. Also, the .b \-1 map flag will treat a multiple value return @@ -8906,14 +9017,11 @@ The format of the text file is defined by the and .b \-z (field delimiter) -flags. +options. .ip ph PH query map. Contributed and supported by Mark Roth, roth@uiuc.edu. -For more information, -consult the web site -.q http://www-dev.cites.uiuc.edu/sendmail/ . .ip nsd nsd map for IRIX 6.5 and later. Contributed and supported by Bob Mende of SGI, @@ -8922,11 +9030,15 @@ mende@sgi.com. Internal symbol table lookups. Used internally for aliasing. .ip implicit -Really should be called -.q alias -\(em this is used to get the default lookups -for alias files, -and is the default if no class is specified for alias files. +Sequentially try a list of available map types: +.i hash , +.i dbm , +and +.i cdb . +It is the default for alias files if no class is specified. +If is no matching map type is found, +the text version is used for the alias file, +but other maps fail to open. .ip user Looks up users using .i getpwnam (3). @@ -8948,15 +9060,24 @@ This can be used to find out if this machine is the target for an MX record, and mail can be accepted on that basis. If the .b \-z -flag is given, then all MX names are returned, +option is given, then all MX names are returned, separated by the given delimiter. +Note: the return value is deterministic, +i.e., even if multiple MX records have the same preference, +they will be returned in the same order. .ip dns This map requires the option -R to specify the DNS resource record -type to lookup. The following types are supported: +type to lookup. +The following types are supported: A, AAAA, AFSDB, CNAME, MX, NS, PTR, SRV, and TXT. -A map lookup will return only one record. +A map lookup will return only one record +unless the +.b \-z +(value separator) +option is set. Hence for some types, e.g., MX records, the return value might be a random -element of the list due to randomizing in the DNS resolver. +element of the results due to randomizing in the DNS resolver, +if only one element is returned. .ip arpa Returns the ``reverse'' for the given IP (IPv4 or IPv6) address, i.e., the string for the PTR lookup, @@ -8969,7 +9090,7 @@ For example, the following configuration lines: Karpa arpa SArpa R$+ $: $(arpa $1 $) -.)b +.)b work like this in test mode: .(b sendmail -bt @@ -9069,33 +9190,45 @@ if used, it is substituted by the substring matches, delimited by .b $| or the string specified with the the .b \-d -flag. The flags available for the map are +option. +The options available for the map are .(b .ta 4n -n not -f case sensitive -b basic regular expressions (default is extended) -s substring match --d set the delimiter used for -s +-d set the delimiter string used for -s -a append string to key -m match only, do not replace/discard value -D perform no lookup in deferred delivery mode. .)b The .b \-s -flag can include an optional parameter which can be used -to select the substrings in the result of the lookup. For example, +option can include an optional parameter which can be used +to select the substrings in the result of the lookup. +For example, .(b -s1,3,4 .)b +The delimiter string specified via the +.b \-d +option is the sequence of characters after +.b d +ending at the first space. +Hence it isn't possible to specify a space as delimiter, +so if the option is immediately followed by a space +the delimiter string is empty, +which means the substrings are joined. + Notes: to match a .b $ in a string, \\$$ must be used. -If the pattern contains spaces, they must be replaced -with the blank substitution character, unless it is -space itself. +If the pattern contains spaces, +they must be replaced with the blank substitution character, +unless it is space itself. .ip program The arguments on the .b K @@ -9185,12 +9318,12 @@ and is one of the following upper case words: .ta 9n OK the key was found, result contains the looked up value NOTFOUND the key was not found, the result is empty -TEMP a temporary failure occured -TIMEOUT a timeout occured on the server side -PERM a permanent failure occured +TEMP a temporary failure occurred +TIMEOUT a timeout occurred on the server side +PERM a permanent failure occurred .)b -In case of errors (status TEMP, TIMEOUT or PERM) the result field may +In case of errors (status TEMP, TIMEOUT or PERM) the result field may contain an explanatory message. However, the explanatory message is not used any further by .i sendmail . @@ -9206,7 +9339,7 @@ Example replies: in case of successful lookups, or: .(b -8:NOTFOUND, +8:NOTFOUND, .)b in case the key was not found, or: @@ -9331,7 +9464,7 @@ or to indicate newline or tab respectively. If omitted entirely, the column separator is any sequence of white space. -For LDAP maps this is the separator character +For LDAP and some other maps this is the separator character to combine multiple values into a single return string. If not set, @@ -9413,6 +9546,11 @@ timeout: specify the timeout (in seconds) for communication with the socket map server. .pp The following additional flags are present in the ldap map only: +.ip "\-c\fItimeout\fP" +Set the LDAP network timeout. +sendmail must be compiled with +.b \-DLDAP_OPT_NETWORK_TIMEOUT +to use this flag. .ip "\-R" Do not auto chase referrals. sendmail must be compiled with .b \-DLDAP_REFERRALS @@ -9480,6 +9618,9 @@ Should be one of .b LDAP_AUTH_SIMPLE , or .b LDAP_AUTH_KRBV4 . +The leading +.b LDAP_AUTH_ +can be omitted and the value is case-insensitive. .ip "\-P\fIpasswordfile\fP" The file containing the secret key for the .b LDAP_AUTH_SIMPLE @@ -9530,8 +9671,9 @@ and the data is located in .pp The program .i makemap (8) -can be used to build any of the three database-oriented maps. -It takes the following flags: +can be used to build database-oriented maps. +It takes at least the following flags +(for a complete list see its man page): .ip \-f Do not fold upper to lower case in the map. .ip \-N @@ -9980,8 +10122,10 @@ configuration file. If set, the new version of the DBM library that allows multiple databases will be used. -If neither NDBM nor NEWDB are set, +If neither CDB, NDBM, nor NEWDB are set, a much less efficient method of alias lookup is used. +.ip CWDB +If set, use the cdb (tinycdb) package. .ip NEWDB If set, use the new database package from Berkeley (from 4.4BSD). This package is substantially faster than DBM or NDBM. @@ -10418,7 +10562,7 @@ Addresses in this header should receive error messages. This header is a Content-Transfer-Encoding header. .ip H_CTYPE This header is a Content-Type header. -.ip H_STRIPVAL +.ip H_BCC Strip the value from the header (for Bcc:). .nr ii 5n .lp @@ -10440,7 +10584,7 @@ struct hdrinfo HdrInfo[] = "to", H_RCPT, "resent-to", H_RCPT, "cc", H_RCPT, - "bcc", H_RCPT\^|\^H_STRIPVAL, + "bcc", H_RCPT\^|\^H_BCC, /* message identification and control */ "message", H_EOH, "text", H_EOH, @@ -10864,7 +11008,7 @@ it is necessary to understand at least some basics about X.509 certificates and public key cryptography. This information can be found in books about SSL/TLS or on WWW sites, e.g., -.q http://www.OpenSSL.org/ . +.q https://www.OpenSSL.org/ . .sh 3 "Certificates for STARTTLS" .pp When acting as a server, @@ -11003,6 +11147,43 @@ The macros which are subject to this encoding are {cert_subject}, {cert_issuer}, {cn_subject}, {cn_issuer}, as well as {auth_authen} and {auth_author}. +.sh 2 "DANE" +.pp +Initial support for DANE (see RFC 7672 et.al.) +is available if +.i sendmail +is compiled with the option +.b DANE . +Only TLSA RR 3-1-x (DANE-EE) is currently implemented. +The option +.(b +O DANE=true +.)b +enables this feature at run time +and it automatically adds +.b use_dnssec +and +.b use_edns0 +to +.(b +O ResolverOptions +.)b +This requires a (preferrably local) +validating DNS resolver which supports those options. + +If the client finds a usable TLSA RR and the check +succeeds the macro +.b ${verify} +is set to +.b TRUSTED . +All non-DNS maps are considered +.i secure +just like DNS lookups with DNSSEC. +Be aware that the implementation might not handle all +error conditions as required by the RFCs. +Moreover, TLSA RRs are not looked up for some features, +e.g., +.i FallBackSmartHost . .sh 1 "ACKNOWLEDGEMENTS" .pp I've worked on @@ -11243,7 +11424,6 @@ this is equivalent to using \-p.) .ip \-q\fItime\fP Try to process the queued up mail. If the time is given, -a .i sendmail will start one or more processes to run through the queue(s) at the specified time interval to deliver queued mail; otherwise, it only runs once. @@ -11307,7 +11487,7 @@ together, and items with different key letters .q and'ed together. .ip "\-Q[reason]" -Quarantine a normal queue items with the given reason or +Quarantine normal queue items with the given reason or unquarantine quarantined queue items if no reason is given. This should only be used with some sort of item matching using .b \-q[!]\fIXstring\fP @@ -11512,11 +11692,10 @@ but is actually realiased when the job is processed. There will be one line for each recipient. Version 1 qf files also include a leading colon-terminated list of flags, -which can be +some of which are `S' to return a message on successful final delivery, `F' to return a message on failure, `D' to return a message if the message is delayed, -`B' to indicate that the body should be returned, `N' to suppress returning the body, and `P' to declare this as a ``primary'' (command line or SMTP-session) address. @@ -11727,7 +11906,6 @@ replace it with a blank sheet for double-sided output. .\".sz 10 .\"Eric Allman .\".sp -.\"Version $Revision: 8.759 $ .\".ce 0 .bp 3 .ce diff --git a/doc/op/op.ps b/doc/op/op.ps index b3026d10c91a..6e0e2cba8e66 100644 --- a/doc/op/op.ps +++ b/doc/op/op.ps @@ -1,17 +1,21 @@ %!PS-Adobe-3.0 -%%Creator: groff version 1.18.1.1 -%%CreationDate: Fri Jun 19 18:46:22 2015 +%%Creator: groff version 1.19.2 +%%CreationDate: Wed Jul 1 22:01:42 2020 %%DocumentNeededResources: font Times-Bold %%+ font Times-Roman %%+ font Times-Italic %%+ font Symbol -%%DocumentSuppliedResources: procset grops 1.18 1 -%%Pages: 112 +%%DocumentSuppliedResources: procset grops 1.19 2 +%%Pages: 114 %%PageOrder: Ascend +%%DocumentMedia: Default 612 792 0 () () %%Orientation: Portrait %%EndComments +%%BeginDefaults +%%PageMedia: Default +%%EndDefaults %%BeginProlog -%%BeginResource: procset grops 1.18 1 +%%BeginResource: procset grops 1.19 2 /setpacking where{ pop currentpacking @@ -79,7 +83,7 @@ LS{ /EP{ level0 restore showpage -}bind def +}def /DA{ newpath arcn stroke }bind def @@ -112,16 +116,22 @@ TM setmatrix /Fr{ setrgbcolor fill }bind def +/setcmykcolor where{ +pop /Fk{ setcmykcolor fill }bind def +}if /Fg{ setgray fill }bind def /FL/fill load def /LW/setlinewidth load def /Cr/setrgbcolor load def +/setcmykcolor where{ +pop /Ck/setcmykcolor load def +}if /Cg/setgray load def /RE{ findfont @@ -164,9 +174,9 @@ newpath /CNT countdictstack def userdict begin /showpage{}def +/setpagedevice{}def }bind def /PEND{ -clear countdictstack CNT sub{end}repeat level1 restore }bind def @@ -176,6 +186,9 @@ pop setpacking }if %%EndResource +%%BeginFeature: *PageSize Default +<< /PageSize [ 612 792 ] /ImagingBBox null >> setpagedevice +%%EndFeature %%IncludeResource: font Times-Bold %%IncludeResource: font Times-Roman %%IncludeResource: font Times-Italic @@ -215,986 +228,736 @@ def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron %%BeginPageSetup BP %%EndPageSetup -/F0 16/Times-Bold@0 SF<53454e444d41494c>236.833 143.4 Q/F1 10 -/Times-Bold@0 SF<544d>-8 I/F2 12/Times-Bold@0 SF<494e5354>170.172 172.2 -Q<414c4c41>-1.08 E<54494f4e20414e44204f50455241>-1.14 E -<54494f4e204755494445>-1.14 E/F3 10/Times-Roman@0 SF -<4572696320416c6c6d616e>263.42 196.2 Q<436c617573204173736d616e6e>256.75 -208.2 Q<477265>244.75 220.2 Q<676f7279204e65696c205368617069726f>-.15 E -<50726f6f66706f696e742c20496e632e>256.475 232.2 Q -1.11<5665>260.225 -256.2 S<7273696f6e20382e373539>1.11 E -.15<466f>234.465 280.2 S 2.5 -<7253>.15 G<656e646d61696c2056>-2.5 E<657273696f6e20382e3135>-1.11 E/F4 -10/Times-Italic@0 SF<53656e646d61696c>97 324.6 Q/F5 8/Times-Roman@0 SF -<544d>-5 I F3 .1<696d706c656d656e747320612067656e6572616c20707572706f73 -6520696e7465726e657477>2.6 5 N .1<6f726b206d61696c20726f7574696e672066> --.1 F .1<6163696c69747920756e6465722074686520554e4958ae206f706572>-.1 F -<2d>-.2 E .017<6174696e672073797374656d2e>72 336.6 R .017 -<4974206973206e6f74207469656420746f20616e>5.017 F 2.517<796f>-.15 G .017 -<6e65207472616e73706f72742070726f746f636f6c208a206974732066756e6374696f -6e206d6179206265206c696b>-2.517 F .017 -<656e656420746f20612063726f7373626172207377697463682c>-.1 F 1.036<72656c -6179696e67206d657373616765732066726f6d206f6e6520646f6d61696e20696e746f20 -616e6f74686572>72 348.6 R 6.036<2e49>-.55 G 3.536<6e74>-6.036 G 1.036<68 -652070726f636573732c2069742063616e20646f2061206c696d6974656420616d6f756e -74206f66206d657373616765>-3.536 F .604<6865616465722065646974696e672074 -6f2070757420746865206d65737361676520696e746f206120666f726d61742074686174 -20697320617070726f70726961746520666f7220746865207265636569>72 360.6 R -.604<76696e6720646f6d61696e2e>-.25 F .604<416c6c206f662074686973206973> -5.604 F<646f6e6520756e6465722074686520636f6e74726f6c206f66206120636f6e8c -6775726174696f6e208c6c652e>72 372.6 Q .711 -<44756520746f2074686520726571756972656d656e7473206f66208d65>97 388.8 R -.711<786962696c69747920666f72>-.15 F F4<73656e646d61696c>3.211 E F3 -3.211<2c74>C .71 -<686520636f6e8c6775726174696f6e208c6c652063616e207365656d20736f6d65> --3.211 F .71<7768617420756e61702d>-.25 F 2.893 -<70726f61636861626c652e20486f>72 400.8 R<7765>-.25 E -.15<7665>-.25 G -1.193 -.4<722c2074>.15 H .393<6865726520617265206f6e6c792061206665>.4 F -2.893<7762>-.25 G .394<6173696320636f6e8c6775726174696f6e7320666f72206d -6f73742073697465732c20666f72207768696368207374616e6461726420636f6e8c6775 -2d>-2.893 F .646<726174696f6e208c6c6573206861>72 412.8 R .946 -.15 -<76652062>-.2 H .646<65656e20737570706c6965642e>.15 F .645 -<4d6f7374206f7468657220636f6e8c6775726174696f6e732063616e2062652062> -5.646 F .645<75696c742062792061646a757374696e6720616e2065>-.2 F .645 -<78697374696e6720636f6e8c677572612d>-.15 F -<74696f6e208c6c6520696e6372656d656e74616c6c79>72 424.8 Q<2e>-.65 E F4 -<53656e646d61696c>97 441 Q F3 .903 -<6973206261736564206f6e2052464320383231202853696d706c65204d61696c2054> -3.403 F .904<72616e73706f72742050726f746f636f6c292c20524643203832322028 -496e7465726e6574204d61696c2048656164657273>-.35 F -.15<466f>72 453 S -2.518<726d6174292c205246432039373420284d5820726f7574696e67292c2052464320 -313132332028496e7465726e657420486f737420526571756972656d656e7473292c2052 -4643203134313320284964656e74698c636174696f6e>.15 F<73657276>72 465 Q -1.868<6572292c2052464320313635322028534d545020384249544d494d452045787465 -6e73696f6e292c2052464320313836392028534d5450205365727669636520457874656e -73696f6e73292c205246432031383730>-.15 F .671<28534d54502053495a45204578 -74656e73696f6e292c2052464320313839312028534d54502044656c69>72 477 R -.15 -<7665>-.25 G .671<727920537461747573204e6f74698c636174696f6e73292c205246 -43203138393220284d756c7469706172742f5265706f7274292c>.15 F 1.273<524643 -20313839332028456e68616e636564204d61696c2053797374656d205374617475732043 -6f646573292c205246432031383934202844656c69>72 489 R -.15<7665>-.25 G -1.273 -<727920537461747573204e6f74698c636174696f6e73292c205246432031393835>.15 -F .639<28534d5450205365727669636520457874656e73696f6e20666f722052656d6f -7465204d657373616765205175657565205374617274696e67292c205246432032303333 -20284c6f63616c204d6573736167652054>72 501 R<72616e736d697373696f6e>-.35 -E .242<50726f746f636f6c292c2052464320323033342028534d545020536572766963 -6520457874656e73696f6e20666f722052657475726e696e6720456e68616e6365642045 -72726f7220436f646573292c20524643203230343520284d494d45292c>72 513 R .283 -<524643203234373620284d657373616765205375626d697373696f6e292c2052464320 -323438372028534d5450205365727669636520457874656e73696f6e20666f7220536563 -75726520534d5450206f>72 525 R -.15<7665>-.15 G 2.782<7254>.15 G .282 -<4c53292c20524643>-2.782 F .118<323535342028534d545020536572766963652045 -7874656e73696f6e20666f722041757468656e7469636174696f6e292c20524643203238 -3231202853696d706c65204d61696c2054>72 537 R .118 -<72616e736665722050726f746f636f6c292c205246432032383232>-.35 F .595 -<28496e7465726e6574204d6573736167652046>72 549 R .595 -<6f726d6174292c205246432032383532202844656c69>-.15 F -.15<7665>-.25 G -3.095<7242>.15 G 3.095<7953>-3.095 G .595<4d5450205365727669636520457874 -656e73696f6e292c20616e642052464320323932302028534d545020536572>-3.095 F -<2d>-.2 E .608<7669636520457874656e73696f6e20666f7220436f6d6d616e642050 -6970656c696e696e67292e>72 561 R<486f>5.608 E<7765>-.25 E -.15<7665>-.25 -G 1.409 -.4<722c2073>.15 H<696e6365>.4 E F4<73656e646d61696c>3.109 E F3 -.609<69732064657369676e656420746f2077>3.109 F .609 -<6f726b20696e20612077696465722077>-.1 F<6f726c642c>-.1 E<696e206d616e>72 -573 Q 2.5<7963>-.15 G -<617365732069742063616e20626520636f6e8c677572656420746f2065>-2.5 E -<78636565642074686573652070726f746f636f6c732e>-.15 E -<546865736520636173657320617265206465736372696265642068657265696e2e>5 E -<416c74686f756768>97 589.2 Q F4<73656e646d61696c>3.548 E F3 1.047<697320 -696e74656e64656420746f2072756e20776974686f757420746865206e65656420666f72 -206d6f6e69746f72696e672c206974206861732061206e756d626572206f662066656174 -75726573>3.548 F 1.972<74686174206d6179206265207573656420746f206d6f6e69 -746f72206f722061646a75737420746865206f7065726174696f6e20756e64657220756e -757375616c2063697263756d7374616e6365732e>72 601.2 R 1.972 -<546865736520666561747572657320617265>6.972 F<6465736372696265642e>72 -613.2 Q .817<53656374696f6e206f6e652064657363726962657320686f>97 629.4 R -3.317<7774>-.25 G 3.317<6f64>-3.317 G 3.317<6f61>-3.317 G<6261736963> --.001 E F4<73656e646d61696c>3.316 E F3 3.316 -<696e7374616c6c6174696f6e2e2053656374696f6e>3.316 F<7477>3.316 E 3.316 -<6f65>-.1 G .816<78706c61696e7320746865206461792d746f2d646179>-3.466 F -.282<696e666f726d6174696f6e20796f752073686f756c64206b6e6f>72 641.4 R -2.782<7774>-.25 G 2.782<6f6d>-2.782 G .282 -<61696e7461696e20796f7572206d61696c2073797374656d2e>-2.782 F .282 -<496620796f75206861>5.282 F .583 -.15<766520612072>-.2 H<656c617469>.15 -E -.15<7665>-.25 G .283 -<6c79206e6f726d616c20736974652c207468657365207477>.15 F<6f>-.1 E .635 -<73656374696f6e732073686f756c6420636f6e7461696e20737566>72 653.4 R .635< -8c6369656e7420696e666f726d6174696f6e20666f7220796f7520746f20696e7374616c -6c>-.25 F F4<73656e646d61696c>3.135 E F3 .634<616e64206b>3.135 F .634 -<6565702069742068617070>-.1 F 4.434 -.65<792e2053>-.1 H .634 -<656374696f6e207468726565>.65 F .509 -<68617320696e666f726d6174696f6e207265>72 665.4 R -.05<6761>-.15 G .509 -<7264696e672074686520636f6d6d616e64206c696e65206172>.05 F 3.009 -<67756d656e74732e2053656374696f6e>-.18 F .51<666f7572206465736372696265 -7320736f6d6520706172616d65746572732074686174206d6179>3.009 F .32 LW 76 -675 72 675 DL 80 675 76 675 DL 84 675 80 675 DL 88 675 84 675 DL 92 675 -88 675 DL 96 675 92 675 DL 100 675 96 675 DL 104 675 100 675 DL 108 675 -104 675 DL 112 675 108 675 DL 116 675 112 675 DL 120 675 116 675 DL 124 -675 120 675 DL 128 675 124 675 DL 132 675 128 675 DL 136 675 132 675 DL -140 675 136 675 DL 144 675 140 675 DL 148 675 144 675 DL 152 675 148 675 -DL 156 675 152 675 DL 160 675 156 675 DL 164 675 160 675 DL 168 675 164 -675 DL 172 675 168 675 DL 176 675 172 675 DL 180 675 176 675 DL 184 675 -180 675 DL 188 675 184 675 DL 192 675 188 675 DL 196 675 192 675 DL 200 -675 196 675 DL 204 675 200 675 DL 208 675 204 675 DL 212 675 208 675 DL -216 675 212 675 DL/F6 8/Times-Bold@0 SF<444953434c41494d45523a>93.6 687 -Q F5<5468697320646f63756d656e746174696f6e20697320756e646572206d6f64698c -636174696f6e2e>2 E<53656e646d61696c20697320612074726164656d61726b206f66 -2050726f6f66706f696e742c20496e632e>93.6 699 Q<55532050>4 E -<6174656e74204e756d6265727320363836353637312c20363938363033372e>-.12 E -F1<53656e646d61696c20496e7374616c6c6174696f6e20616e64204f7065726174696f -6e204775696465>72 756 Q<534d4d3a30382d31>200.86 E 0 Cg EP +/F0 16/Times-Bold@0 SF(SENDMAIL)236.833 143.4 Q/F1 10/Times-Bold@0 SF +(TM)-8 I/F2 12/Times-Bold@0 SF(INST)170.172 172.2 Q(ALLA)-1.08 E +(TION AND OPERA)-1.14 E(TION GUIDE)-1.14 E/F3 10/Times-Roman@0 SF +(Eric Allman)263.42 196.2 Q(Claus Assmann)256.75 208.2 Q(Gre)244.75 +220.2 Q(gory Neil Shapiro)-.15 E(Proofpoint, Inc.)256.475 232.2 Q -.15 +(Fo)234.465 268.2 S 2.5(rS).15 G(endmail V)-2.5 E(ersion 8.16)-1.11 E/F4 +10/Times-Italic@0 SF(Sendmail)97 312.6 Q/F5 8/Times-Roman@0 SF(TM)-5 I +F3 .1(implements a general purpose internetw)2.6 5 N .1 +(ork mail routing f)-.1 F .1(acility under the UNIX\256 oper)-.1 F(-)-.2 +E .017(ating system.)72 324.6 R .017(It is not tied to an)5.017 F 2.517 +(yo)-.15 G .017(ne transport protocol \212 its function may be lik) +-2.517 F .017(ened to a crossbar switch,)-.1 F 1.036 +(relaying messages from one domain into another)72 336.6 R 6.036(.I)-.55 +G 3.536(nt)-6.036 G 1.036 +(he process, it can do a limited amount of message)-3.536 F .604(header\ + editing to put the message into a format that is appropriate for the r\ +ecei)72 348.6 R .604(ving domain.)-.25 F .604(All of this is)5.604 F +(done under the control of a con\214guration \214le.)72 360.6 Q .711 +(Due to the requirements of \215e)97 376.8 R .711(xibility for)-.15 F F4 +(sendmail)3.211 E F3 3.211(,t)C .71 +(he con\214guration \214le can seem some)-3.211 F .71(what unap-)-.25 F +2.893(proachable. Ho)72 388.8 R(we)-.25 E -.15(ve)-.25 G 1.193 -.4(r, t) +.15 H .393(here are only a fe).4 F 2.893(wb)-.25 G .394 +(asic con\214gurations for most sites, for which standard con\214gu-) +-2.893 F .646(ration \214les ha)72 400.8 R .946 -.15(ve b)-.2 H .646 +(een supplied.).15 F .645(Most other con\214gurations can be b)5.646 F +.645(uilt by adjusting an e)-.2 F .645(xisting con\214gura-)-.15 F +(tion \214le incrementally)72 412.8 Q(.)-.65 E F4(Sendmail)97 429 Q F3 +.903(is based on RFC 821 \(Simple Mail T)3.403 F .904 +(ransport Protocol\), RFC 822 \(Internet Mail Headers)-.35 F -.15(Fo)72 +441 S 2.518(rmat\), RFC 974 \(MX routing\), RFC 1123 \(Internet Host Re\ +quirements\), RFC 1413 \(Identi\214cation).15 F(serv)72 453 Q 1.868(er\ +\), RFC 1652 \(SMTP 8BITMIME Extension\), RFC 1869 \(SMTP Service Exten\ +sions\), RFC 1870)-.15 F .671 +(\(SMTP SIZE Extension\), RFC 1891 \(SMTP Deli)72 465 R -.15(ve)-.25 G +.671(ry Status Noti\214cations\), RFC 1892 \(Multipart/Report\),).15 F +1.273(RFC 1893 \(Enhanced Mail System Status Codes\), RFC 1894 \(Deli)72 +477 R -.15(ve)-.25 G 1.273(ry Status Noti\214cations\), RFC 1985).15 F +.639(\(SMTP Service Extension for Remote Message Queue Starting\), RFC \ +2033 \(Local Message T)72 489 R(ransmission)-.35 E .242(Protocol\), RFC\ + 2034 \(SMTP Service Extension for Returning Enhanced Error Codes\), RF\ +C 2045 \(MIME\),)72 501 R .283(RFC 2476 \(Message Submission\), RFC 248\ +7 \(SMTP Service Extension for Secure SMTP o)72 513 R -.15(ve)-.15 G +2.782(rT).15 G .282(LS\), RFC)-2.782 F .118(2554 \(SMTP Service Extensi\ +on for Authentication\), RFC 2821 \(Simple Mail T)72 525 R .118 +(ransfer Protocol\), RFC 2822)-.35 F .904(\(Internet Message F)72 537 R +.903(ormat\), RFC 2852 \(Deli)-.15 F -.15(ve)-.25 G 3.403(rB).15 G 3.403 +(yS)-3.403 G .903(MTP Service Extension\), RFC 2920 \(SMTP Service) +-3.403 F 2.201(Extension for Command Pipelining\), and RFC 7505 \(A "Nu\ +ll MX" No Service Resource Record for)72 549 R .678 +(Domains That Accept No Mail\).)72 561 R(Ho)5.678 E(we)-.25 E -.15(ve) +-.25 G 1.478 -.4(r, s).15 H(ince).4 E F4(sendmail)3.178 E F3 .678 +(is designed to w)3.178 F .677(ork in a wider w)-.1 F .677(orld, in man) +-.1 F(y)-.15 E(cases it can be con\214gured to e)72 573 Q +(xceed these protocols.)-.15 E(These cases are described herein.)5 E +(Although)97 589.2 Q F4(sendmail)3.547 E F3 1.048(is intended to run wi\ +thout the need for monitoring, it has a number of features)3.547 F 1.972 +(that may be used to monitor or adjust the operation under unusual circ\ +umstances.)72 601.2 R 1.972(These features are)6.972 F(described.)72 +613.2 Q .816(Section one describes ho)97 629.4 R 3.316(wt)-.25 G 3.316 +(od)-3.316 G 3.316(oab)-3.316 G(asic)-3.316 E F4(sendmail)3.316 E F3 +3.317(installation. Section)3.317 F(tw)3.317 E 3.317(oe)-.1 G .817 +(xplains the day-to-day)-3.467 F .283(information you should kno)72 +641.4 R 2.783(wt)-.25 G 2.783(om)-2.783 G .282 +(aintain your mail system.)-2.783 F .282(If you ha)5.282 F .582 -.15 +(ve a r)-.2 H(elati).15 E -.15(ve)-.25 G .282(ly normal site, these tw) +.15 F(o)-.1 E .634(sections should contain suf)72 653.4 R .635 +(\214cient information for you to install)-.25 F F4(sendmail)3.135 E F3 +.635(and k)3.135 F .635(eep it happ)-.1 F 4.435 -.65(y. S)-.1 H .635 +(ection three).65 F .51(has information re)72 665.4 R -.05(ga)-.15 G +.509(rding the command line ar).05 F 3.009(guments. Section)-.18 F .509 +(four describes some parameters that may)3.009 F .32 LW 76 675 72 675 DL +80 675 76 675 DL 84 675 80 675 DL 88 675 84 675 DL 92 675 88 675 DL 96 +675 92 675 DL 100 675 96 675 DL 104 675 100 675 DL 108 675 104 675 DL +112 675 108 675 DL 116 675 112 675 DL 120 675 116 675 DL 124 675 120 675 +DL 128 675 124 675 DL 132 675 128 675 DL 136 675 132 675 DL 140 675 136 +675 DL 144 675 140 675 DL 148 675 144 675 DL 152 675 148 675 DL 156 675 +152 675 DL 160 675 156 675 DL 164 675 160 675 DL 168 675 164 675 DL 172 +675 168 675 DL 176 675 172 675 DL 180 675 176 675 DL 184 675 180 675 DL +188 675 184 675 DL 192 675 188 675 DL 196 675 192 675 DL 200 675 196 675 +DL 204 675 200 675 DL 208 675 204 675 DL 212 675 208 675 DL 216 675 212 +675 DL/F6 8/Times-Bold@0 SF(DISCLAIMER:)93.6 687 Q F5 +(This documentation is under modi\214cation.)2 E +(Sendmail is a trademark of Proofpoint, Inc.)93.6 699 Q(US P)4 E +(atent Numbers 6865671, 6986037.)-.12 E F1 +(Sendmail Installation and Operation Guide)72 756 Q(SMM:08-1)200.86 E 0 +Cg EP %%Page: 2 2 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 198.36<534d4d3a30382d322053656e646d61696c>72 60 R -<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF .363<626520736166656c7920747765616b>72 96 R -2.862<65642e2053656374696f6e>-.1 F<8c76>2.862 E 2.862<6563>-.15 G .362< -6f6e7461696e7320746865206e697474792d67726974747920696e666f726d6174696f6e -2061626f75742074686520636f6e8c6775726174696f6e208c6c652e>-2.862 F .362 -<54686973207365632d>5.362 F .142<74696f6e20697320666f72206d61736f636869 -73747320616e642070656f706c652077686f206d75737420777269746520746865697220 -6f>72 108 R .143<776e20636f6e8c6775726174696f6e208c6c652e>-.25 F .143 -<53656374696f6e207369782064657363726962657320636f6e8c672d>5.143 F .228< -75726174696f6e20746861742063616e20626520646f6e6520617420636f6d70696c6520 -74696d652e>72 120 R .227<54686520617070656e646978>5.227 F .227 -<6573206769>-.15 F .527 -.15<766520612062>-.25 H .227<726965662062>.15 F -.227<75742064657461696c65642065>-.2 F .227 -<78706c616e6174696f6e206f662061206e756d626572>-.15 F<6f6620666561747572 -6573206e6f742064657363726962656420696e207468652072657374206f662074686520 -7061706572>72 132 Q<2e>-.55 E 0 Cg EP +/F0 10/Times-Bold@0 SF 198.36(SMM:08-2 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF .362 +(be safely tweak)72 96 R 2.862(ed. Section)-.1 F<8c76>2.862 E 2.862(ec) +-.15 G .362 +(ontains the nitty-gritty information about the con\214guration \214le.) +-2.862 F .363(This sec-)5.363 F .143 +(tion is for masochists and people who must write their o)72 108 R .142 +(wn con\214guration \214le.)-.25 F .142(Section six describes con\214g-) +5.142 F .227(uration that can be done at compile time.)72 120 R .227 +(The appendix)5.227 F .227(es gi)-.15 F .527 -.15(ve a b)-.25 H .227 +(rief b).15 F .227(ut detailed e)-.2 F .228(xplanation of a number)-.15 +F(of features not described in the rest of the paper)72 132 Q(.)-.55 E 0 +Cg EP %%Page: 7 3 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d37>200.86 E 2.5 -<312e2042>72 96 R<4153494320494e5354>-.3 E<414c4c41>-.9 E<54494f4e>-.95 -E/F1 10/Times-Roman@0 SF .126<546865726520617265207477>112 112.2 R 2.626 -<6f62>-.1 G .126<6173696320737465707320746f20696e7374616c6c696e67>-2.626 -F/F2 10/Times-Italic@0 SF<73656e646d61696c>2.626 E F1 5.126<2e46>C .126 -<697273742c20796f75206861>-5.126 F .426 -.15<76652074>-.2 H 2.626<6f63> -.15 G .127<6f6d70696c6520616e6420696e7374616c6c207468652062696e617279> --2.626 F<2e>-.65 E<4966>87 124.2 Q F2<73656e646d61696c>2.889 E F1 .388< -68617320616c7265616479206265656e20706f7274656420746f20796f7572206f706572 -6174696e672073797374656d20746861742073686f756c642062652073696d706c652e> -2.889 F .388<5365636f6e642c20796f75206d757374>5.388 F -.2<6275>87 136.2 -S .278<696c6420612072756e2d74696d6520636f6e8c6775726174696f6e208c6c652e> -.2 F .278<546869732069732061208c6c652074686174>5.278 F F2 -<73656e646d61696c>2.778 E F1 .279<7265616473207768656e206974207374617274 -7320757020746861742064657363726962657320746865>2.778 F .532 -<6d61696c657273206974206b6e6f>87 148.2 R .532<77732061626f75742c20686f> --.25 F 3.031<7774>-.25 G 3.031<6f70>-3.031 G .531 -<61727365206164647265737365732c20686f>-3.031 F 3.031<7774>-.25 G 3.031 -<6f72>-3.031 G -.25<6577>-3.031 G .531 -<7269746520746865206d65737361676520686561646572>.25 F 3.031<2c61>-.4 G -.531<6e64207468652073657474696e6773206f66>-3.031 F -.25<7661>87 160.2 S -.868<72696f7573206f7074696f6e732e>.25 F .868<416c74686f7567682074686520 -636f6e8c6775726174696f6e208c6c652063616e20626520717569746520636f6d706c65> -5.868 F .869 -<782c206120636f6e8c6775726174696f6e2063616e20757375616c6c79206265>-.15 F --.2<6275>87 172.2 S 1.112<696c74207573696e6720616e204d342d62617365642063 -6f6e8c6775726174696f6e206c616e67756167652e>.2 F 1.112 -<417373756d696e6720796f75206861>6.112 F 1.411 -.15<76652074>-.2 H 1.111 -<6865207374616e64617264>.15 F F2<73656e646d61696c>3.611 E F1 -<64697374726962>3.611 E<752d>-.2 E<74696f6e2c20736565>87 184.2 Q F2 -<63662f524541444d45>2.5 E F1 -<666f72206675727468657220696e666f726d6174696f6e2e>2.5 E .192<5468652072 -656d61696e646572206f6620746869732073656374696f6e2077696c6c20646573637269 -62652074686520696e7374616c6c6174696f6e206f66>112 200.4 R F2 -<73656e646d61696c>2.692 E F1 .192 -<617373756d696e6720796f752063616e20757365206f6e65>2.692 F 1.432 -<6f66207468652065>87 212.4 R 1.432<78697374696e6720636f6e8c677572617469 -6f6e7320616e64207468617420746865207374616e6461726420696e7374616c6c617469 -6f6e20706172616d6574657273206172652061636365707461626c652e>-.15 F 1.431 -<416c6c20706174682d>6.431 F .976<6e616d657320616e642065>87 224.4 R .976 -<78616d706c657320617265206769>-.15 F -.15<7665>-.25 G 3.476<6e66>.15 G -.976<726f6d2074686520726f6f74206f6620746865>-3.476 F F2 -<73656e646d61696c>3.476 E F1 .977<737562747265652c206e6f726d616c6c79> -3.476 F F2<2f7573722f7372>3.477 E<632f757372>-.37 E -<2e7362696e2f73656e642d>-1.11 E<6d61696c>87 236.4 Q F1 -<6f6e20342e344253442d62617365642073797374656d732e>2.5 E .166 -<436f6e74696e7565207769746820746865206e65>112 252.6 R .166 -<78742073656374696f6e20696620796f75206e6565642f77>-.15 F .166 -<616e7420746f20636f6d70696c65>-.1 F F2<73656e646d61696c>2.666 E F1 2.665 -<796f757273656c662e204966>2.665 F .165<796f75206861>2.665 F .465 -.15 -<766520612072>-.2 H<756e2d>.15 E<6e696e672062696e61727920616c7265616479 -206f6e20796f75722073797374656d2c20796f752073686f756c642070726f6261626c79 -20736b697020746f2073656374696f6e20312e322e>87 264.6 Q F0 2.5 -<312e312e20436f6d70696c696e67>87 288.6 R<53656e646d61696c>2.5 E F1 -<416c6c>127 304.8 Q F2<73656e646d61696c>2.57 E F1 .07 -<736f7572636520697320696e20746865>2.57 F F2<73656e646d61696c>2.571 E F1 -<7375626469726563746f7279>2.571 E 5.071<2e54>-.65 G 2.571<6f63>-5.871 G -.071<6f6d70696c652073656e646d61696c2c209963649a20696e746f20746865>-2.571 -F F2<73656e642d>2.571 E<6d61696c>102 316.8 Q F1 -<6469726563746f727920616e642074797065>2.5 E<2e2f4275696c64>142 333 Q -1.411<546869732077696c6c206c6561>102 349.2 R 1.711 -.15<76652074>-.2 H -1.411<68652062696e61727920696e20616e20617070726f7072696174656c79206e616d -6564207375626469726563746f7279>.15 F 3.911<2c65>-.65 G 1.41 -<2e672e2c206f626a2e4253442d4f532e322e312e693338362e>-3.911 F<4974>6.41 E --.1<776f>102 361.2 S<726b7320666f72206d756c7469706c65206f626a6563742076> -.1 E<657273696f6e7320636f6d70696c6564206f7574206f66207468652073616d6520 -6469726563746f7279>-.15 E<2e>-.65 E F0 2.5<312e312e312e2054>102 385.2 R -<7765616b696e6720746865204275696c6420496e>-.74 E -.1<766f>-.4 G -<636174696f6e>.1 E F1 -1.1<596f>142 401.4 S 2.904<7563>1.1 G .404 -<616e206769>-2.904 F .704 -.15<76652070>-.25 H .404 -<6172616d6574657273206f6e20746865>.15 F F2<4275696c64>2.905 E F1 2.905 -<636f6d6d616e642e20496e>2.905 F .405 -<6d6f737420636173657320746865736520617265206f6e6c792075736564207768656e> -2.905 F<746865>117 413.4 Q F2<6f626a2e2a>2.5 E F1 -<6469726563746f7279206973208c72737420637265617465642e>5 E 1.6 -.8 -<546f2072>5 H<6573746172742066726f6d20736372617463682c20757365>.8 E F2 -<2d63>2.5 E F1 5<2e54>C<6865736520636f6d6d616e647320696e636c7564653a>-5 -E117 429.6 Q F2<6c6962646972>2.5 E<73>-.1 E F1 2.5<416c>153 441.6 -S<697374206f66206469726563746f7269657320746f2073656172636820666f72206c69 -627261726965732e>-2.5 E117 457.8 Q F2<696e63646972>2.5 E<73>-.1 E -F1 2.5<416c>153 469.8 S<697374206f66206469726563746f7269657320746f207365 -6172636820666f7220696e636c756465208c6c65732e>-2.5 E117 486 Q F2 -<656e>2.5 E<766172>-.4 E F1<3d>A F2<76616c7565>A F1<53657420616e20656e> -153 498 Q<7669726f6e6d656e742076>-.4 E -<61726961626c6520746f20616e20696e64696361746564>-.25 E F2<76616c7565>2.5 -E F1<6265666f726520636f6d70696c696e672e>2.5 E 23.42 -117 514.2 R 2.5<616e>2.5 G -.25<6577>-2.5 G F2<6f626a2e2a>2.75 E F1 -<74726565206265666f72652072756e6e696e672e>5 E117 530.4 Q F2 -<73697465636f6e8c67>2.5 E F1 2.193<526561642074686520696e64696361746564 -207369746520636f6e8c6775726174696f6e208c6c652e>153 542.4 R 2.192 -<4966207468697320706172616d65746572206973206e6f742073706563698c65642c> -7.193 F F2<4275696c64>4.692 E F1<696e636c75646573>153 554.4 Q F2<616c6c> -11.511 E F1 9.011<6f6620746865208c6c6573>11.511 F F2<2442>11.512 E -<55494c4454>-.1 E<4f4f4c532f536974652f73697465>-.18 E<2e246f736366>-.15 -E<2e6d34>-.15 E F1<616e64>11.512 E F2<2442>11.512 E<55494c442d>-.1 E --.18<544f>153 566.4 S<4f4c532f536974652f73697465>.18 E<2e636f6e8c67>-.15 -E<2e6d34>-.15 E F1 2.985<2c77>C .485<68657265202442>-2.985 F<55494c4454> --.1 E .485<4f4f4c53206973206e6f726d616c6c79>-.18 F F2<2e2e2f6465>2.985 E -<76746f6f6c73>-.15 E F1 .485<616e6420246f736366206973>2.985 F .678 -<7468652073616d65206e616d652061732075736564206f6e20746865>153 578.4 R F2 -<6f626a2e2a>3.178 E F1<6469726563746f7279>5.678 E 5.678<2e53>-.65 G .678 -<65652062656c6f>-5.678 F 3.178<7766>-.25 G .678 -<6f722061206465736372697074696f6e206f66207468652073697465>-3.178 F -<636f6e8c6775726174696f6e208c6c652e>153 590.4 Q 22.3117 -606.6 R<6175746f2d636f6e8c6775726174696f6e2e>4.421 E F2<4275696c64>6.921 -E F1 1.921<77696c6c2061>4.421 F -.2<766f>-.2 G 1.921<6964206175746f2d64 -6574656374696e67206c69627261726965732069662074686973206973207365742e>.2 -F<416c6c>6.92 E<6c696272617269657320616e64206d61702064658c6e6974696f6e73 -206d7573742062652073706563698c656420696e20746865207369746520636f6e8c6775 -726174696f6e208c6c652e>153 618.6 Q 5.606<4d6f7374206f746865722070617261 -6d6574657273206172652070617373656420746f20746865>117 634.8 R F2<6d616b> -8.107 E<65>-.1 E F1 5.607 -<70726f6772616d3b20666f722064657461696c7320736565>8.107 F F2<2442>8.107 -E<55494c442d>-.1 E -.18<544f>117 646.8 S<4f4c532f524541444d45>.18 E F1 -<2e>A F0 2.5<312e312e322e204372>102 670.8 R -<656174696e672061205369746520436f6e8c6775726174696f6e2046696c65>-.18 E -F1 1.09 -<28546869732073656374696f6e206973206e6f742079657420636f6d706c6574652e> -142 687 R -.15<466f>6.089 G 3.589<726e>.15 G -.25<6f77>-3.589 G 3.589 -<2c73>-.4 G 1.089<656520746865208c6c65206465>-3.589 F 1.089 -<76746f6f6c732f524541444d4520666f722064657461696c732e29>-.25 F -<5365652073656e646d61696c2f524541444d4520666f722076>117 699 Q<6172696f75 -7320636f6d70696c6174696f6e208d61677320746861742063616e206265207365742e> --.25 E 0 Cg EP +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-7)200.86 E 2.5(1. B)72 96 R(ASIC INST)-.3 E(ALLA)-.9 E(TION)-.95 +E/F1 10/Times-Roman@0 SF .127(There are tw)112 112.2 R 2.627(ob)-.1 G +.126(asic steps to installing)-2.627 F/F2 10/Times-Italic@0 SF(sendmail) +2.626 E F1 5.126(.F)C .126(irst, you ha)-5.126 F .426 -.15(ve t)-.2 H +2.626(oc).15 G .126(ompile and install the binary)-2.626 F(.)-.65 E(If) +87 124.2 Q F2(sendmail)2.888 E F1 .388(has already been ported to your \ +operating system that should be simple.)2.888 F .389(Second, you must) +5.388 F -.2(bu)87 136.2 S .279(ild a run-time con\214guration \214le.).2 +F .278(This is a \214le that)5.279 F F2(sendmail)2.778 E F1 .278 +(reads when it starts up that describes the)2.778 F .531(mailers it kno) +87 148.2 R .531(ws about, ho)-.25 F 3.031(wt)-.25 G 3.031(op)-3.031 G +.531(arse addresses, ho)-3.031 F 3.031(wt)-.25 G 3.031(or)-3.031 G -.25 +(ew)-3.031 G .531(rite the message header).25 F 3.031(,a)-.4 G .532 +(nd the settings of)-3.031 F -.25(va)87 160.2 S .869(rious options.).25 +F .869(Although the con\214guration \214le can be quite comple)5.869 F +.868(x, a con\214guration can usually be)-.15 F -.2(bu)87 172.2 S 1.111 +(ilt using an M4-based con\214guration language.).2 F 1.112 +(Assuming you ha)6.112 F 1.412 -.15(ve t)-.2 H 1.112(he standard).15 F +F2(sendmail)3.612 E F1(distrib)3.612 E(u-)-.2 E(tion, see)87 184.2 Q F2 +(cf/README)2.5 E F1(for further information.)2.5 E .192 +(The remainder of this section will describe the installation of)112 +200.4 R F2(sendmail)2.692 E F1 .192(assuming you can use one)2.692 F +1.431(of the e)87 212.4 R 1.432(xisting con\214gurations and that the s\ +tandard installation parameters are acceptable.)-.15 F 1.432(All path-) +6.432 F .977(names and e)87 224.4 R .976(xamples are gi)-.15 F -.15(ve) +-.25 G 3.476(nf).15 G .976(rom the root of the)-3.476 F F2(sendmail) +3.476 E F1 .976(subtree, normally)3.476 F F2(/usr/sr)3.476 E(c/usr)-.37 +E(.sbin/send-)-1.11 E(mail)87 236.4 Q F1(on 4.4BSD-based systems.)2.5 E +.165(Continue with the ne)112 252.6 R .165(xt section if you need/w)-.15 +F .166(ant to compile)-.1 F F2(sendmail)2.666 E F1 2.666(yourself. If) +2.666 F .166(you ha)2.666 F .466 -.15(ve a r)-.2 H(un-).15 E(ning binar\ +y already on your system, you should probably skip to section 1.2.)87 +264.6 Q F0 2.5(1.1. Compiling)87 288.6 R(Sendmail)2.5 E F1(All)127 304.8 +Q F2(sendmail)2.571 E F1 .071(source is in the)2.571 F F2(sendmail)2.571 +E F1(subdirectory)2.571 E 5.071(.T)-.65 G 2.571(oc)-5.871 G .07 +(ompile sendmail, \231cd\232 into the)-2.571 F F2(send-)2.57 E(mail)102 +316.8 Q F1(directory and type)2.5 E(./Build)142 333 Q 1.41 +(This will lea)102 349.2 R 1.711 -.15(ve t)-.2 H 1.411 +(he binary in an appropriately named subdirectory).15 F 3.911(,e)-.65 G +1.411(.g., obj.BSD-OS.2.1.i386.)-3.911 F(It)6.411 E -.1(wo)102 361.2 S +(rks for multiple object v).1 E +(ersions compiled out of the same directory)-.15 E(.)-.65 E F0 2.5 +(1.1.1. T)102 385.2 R(weaking the Build In)-.74 E -.1(vo)-.4 G(cation).1 +E F1 -1.1(Yo)142 401.4 S 2.905(uc)1.1 G .405(an gi)-2.905 F .705 -.15 +(ve p)-.25 H .405(arameters on the).15 F F2(Build)2.905 E F1 2.905 +(command. In)2.905 F .404(most cases these are only used when)2.905 F +(the)117 413.4 Q F2(obj.*)2.5 E F1(directory is \214rst created.)5 E 1.6 +-.8(To r)5 H(estart from scratch, use).8 E F2(-c)2.5 E F1 5(.T)C +(hese commands include:)-5 E117 429.6 Q F2(libdir)2.5 E(s)-.1 E F1 +2.5(Al)153 441.6 S(ist of directories to search for libraries.)-2.5 E +117 457.8 Q F2(incdir)2.5 E(s)-.1 E F1 2.5(Al)153 469.8 S +(ist of directories to search for include \214les.)-2.5 E117 486 Q +F2(en)2.5 E(var)-.4 E F1(=)A F2(value)A F1(Set an en)153 498 Q +(vironment v)-.4 E(ariable to an indicated)-.25 E F2(value)2.5 E F1 +(before compiling.)2.5 E 23.42(\255c Create)117 514.2 R 2.5(an)2.5 G +-.25(ew)-2.5 G F2(obj.*)2.75 E F1(tree before running.)5 E117 +530.4 Q F2(sitecon\214g)2.5 E F1 2.192 +(Read the indicated site con\214guration \214le.)153 542.4 R 2.193 +(If this parameter is not speci\214ed,)7.192 F F2(Build)4.693 E F1 +(includes)153 554.4 Q F2(all)11.512 E F1 9.012(of the \214les)11.512 F +F2($B)11.511 E(UILDT)-.1 E(OOLS/Site/site)-.18 E(.$oscf)-.15 E(.m4)-.15 +E F1(and)11.511 E F2($B)11.511 E(UILD-)-.1 E -.18(TO)153 566.4 S +(OLS/Site/site).18 E(.con\214g)-.15 E(.m4)-.15 E F1 2.985(,w)C .485 +(here $B)-2.985 F(UILDT)-.1 E .485(OOLS is normally)-.18 F F2(../de) +2.985 E(vtools)-.15 E F1 .485(and $oscf is)2.985 F .678 +(the same name as used on the)153 578.4 R F2(obj.*)3.178 E F1(directory) +5.678 E 5.678(.S)-.65 G .678(ee belo)-5.678 F 3.178(wf)-.25 G .678 +(or a description of the site)-3.178 F(con\214guration \214le.)153 590.4 +Q 22.3(\255S Skip)117 606.6 R(auto-con\214guration.)4.42 E F2(Build) +6.921 E F1 1.921(will a)4.421 F -.2(vo)-.2 G 1.921 +(id auto-detecting libraries if this is set.).2 F(All)6.921 E(libraries\ + and map de\214nitions must be speci\214ed in the site con\214guration \ +\214le.)153 618.6 Q 5.607(Most other parameters are passed to the)117 +634.8 R F2(mak)8.107 E(e)-.1 E F1 5.606(program; for details see)8.107 F +F2($B)8.106 E(UILD-)-.1 E -.18(TO)117 646.8 S(OLS/README).18 E F1(.)A F0 +2.5(1.1.2. Cr)102 670.8 R(eating a Site Con\214guration File)-.18 E F1 +4.321(See sendmail/README for v)142 687 R 4.322 +(arious compilation \215ags that can be set, and de)-.25 F(v-)-.25 E +(tools/README for details ho)117 699 Q 2.5(wt)-.25 G 2.5(os)-2.5 G +(et them.)-2.5 E 0 Cg EP %%Page: 8 4 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 198.36<534d4d3a30382d382053656e646d61696c>72 60 R -<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -2.5<312e312e332e2054>102 96 R<7765616b696e6720746865204d616b>-.74 E -<658c6c65>-.1 E/F1 10/Times-Italic@0 SF<53656e646d61696c>142 112.2 Q/F2 -10/Times-Roman@0 SF 2.18<737570706f727473207477>4.68 F 4.681<6f64>-.1 G -<6966>-4.681 E 2.181<666572656e7420666f726d61747320666f7220746865206c6f -63616c20286f6e206469736b292076>-.25 F 2.181 -<657273696f6e206f66206461746162617365732c>-.15 F<6e6f7461626c7920746865> -117 124.2 Q F1<616c6961736573>2.5 E F2 2.5<64617461626173652e204174>2.5 -F<6c65617374206f6e65206f662074686573652073686f756c642062652064658c6e6564 -20696620617420616c6c20706f737369626c652e>2.5 E 39.5<4e44424d20546865>117 -140.4 R -.74<6060>3.167 G<6e65>.74 E 3.167<7744>-.25 G<424d27>-3.167 E -3.167<2766>-.74 G .667<6f726d61742c2061>-3.167 F -.25<7661>-.2 G .666<69 -6c61626c65206f6e206e6561726c7920616c6c2073797374656d732061726f756e642074 -6f646179>.25 F 5.666<2e54>-.65 G<686973>-5.666 E -.1<7761>189 152.4 S -3.54<7374>.1 G 1.041<68652070726566657272656420666f726d6174207072696f72 -20746f20342e344253442e>-3.54 F 1.041<497420616c6c6f>6.041 F 1.041 -<7773207375636820636f6d706c65>-.25 F 3.541<7874>-.15 G 1.041 -<68696e6773206173>-3.541 F<6d756c7469706c652064617461626173657320616e64 -20636c6f73696e6720612063757272656e746c79206f70656e2064617461626173652e> -189 164.4 Q 32.84<4e4557444220546865>117 180.6 R<4265726b>3.788 E -<656c65>-.1 E 3.788<7944>-.15 G 3.788<4270>-3.788 G 3.788 -<61636b6167652e204966>-3.788 F 1.288<796f75206861>3.788 F 1.588 -.15 -<76652074>-.2 H 1.288<6869732c207573652069742e>.15 F 1.287 -<497420616c6c6f>6.287 F 1.287<7773206c6f6e67207265636f7264732c>-.25 F -2.56<6d756c7469706c65206f70656e206461746162617365732c207265616c20696e2d -6d656d6f72792063616368696e672c20616e6420736f20666f7274682e>189 192.6 R --1.1<596f>7.56 G 5.06<7563>1.1 G<616e>-5.06 E .469 -<64658c6e65207468697320696e20636f6e6a756e6374696f6e2077697468>189 204.6 -R/F3 9/Times-Roman@0 SF<4e44424d>2.969 E F2 2.969<3b69>C 2.968<6679> --2.969 G .468<6f7520646f2c206f6c6420616c69617320646174616261736573206172 -6520726561642c>-2.968 F -.2<6275>189 216.6 S 3.108<7477>.2 G .608 -<68656e2061206e65>-3.108 F 3.108<7764>-.25 G .608<6174616261736520697320 -637265617465642069742077696c6c20626520696e204e4557444220666f726d61742e> --3.108 F .608<41732061206e61737479>5.608 F 1.804 -<6861636b2c20696620796f75206861>189 228.6 R 2.104 -.15<7665204e>-.2 H -1.804<455744422c204e44424d2c20616e64204e49532064658c6e65642c20616e642069 -662074686520616c696173208c6c65>.15 F .123 -<6e616d6520696e636c756465732074686520737562737472696e6720992f79702f9a2c> -189 240.6 R F1<73656e646d61696c>2.623 E F2 .123 -<77696c6c2063726561746520626f7468206e65>2.623 F 2.624<7761>-.25 G .124 -<6e64206f6c642076>-2.624 F<6572>-.15 E<2d>-.2 E 1.08 -<73696f6e73206f662074686520616c696173208c6c6520647572696e672061>189 -252.6 R F1<6e65>3.58 E<77616c696173>-.15 E F2 3.58 -<636f6d6d616e642e2054686973>3.58 F 1.08 -<69732072657175697265642062656361757365>3.58 F .845<7468652053756e204e49 -532f59502073797374656d207265616473207468652044424d2076>189 264.6 R .845 -<657273696f6e206f662074686520616c696173208c6c652e>-.15 F<497427>5.845 E -3.345<7375>-.55 G .845<676c79206173>-3.345 F<73696e2c2062>189 276.6 Q -<75742069742077>-.2 E<6f726b732e>-.1 E 1.112 -<4966206e656974686572206f66207468657365206172652064658c6e65642c>117 -292.8 R F1<73656e646d61696c>3.612 E F2 1.112<72656164732074686520616c69 -6173208c6c6520696e746f206d656d6f7279206f6e2065>3.612 F -.15<7665>-.25 G -1.112<727920696e>.15 F -.2<766f>-.4 G<636174696f6e2e>.2 E 1.042 -<546869732063616e20626520736c6f>117 304.8 R 3.542<7761>-.25 G 1.043 -<6e642073686f756c642062652061>-3.542 F -.2<766f>-.2 G 3.543 -<696465642e205468657265>.2 F 1.043<61726520616c736f207365>3.543 F -.15 -<7665>-.25 G 1.043 -<72616c206d6574686f647320666f722072656d6f7465206461746162617365>.15 F -<6163636573733a>117 316.8 Q<4c44>117 333 Q 43.79 -<4150204c69676874776569676874>-.4 F -<4469726563746f7279204163636573732050726f746f636f6c2e>2.5 E 53.39 -<4e49532053756e27>117 349.2 R 2.5<734e>-.55 G<657477>-2.5 E<6f726b20496e -666f726d6174696f6e2053657276696365732028666f726d65726c79205950292e>-.1 E -28.94<4e4953504c55532053756e27>117 365.4 R 2.5<734e>-.55 G -<49532b2073657276696365732e>-2.5 E 26.73<4e4554494e464f204e65585427>117 -381.6 R 2.5<734e>-.55 G<6574496e666f20736572766963652e>-2.5 E 32.84 -<484553494f4420486573696f64>117 397.8 R -<73657276696365202866726f6d20417468656e61292e>2.5 E .086 -<4f7468657220636f6d70696c6174696f6e208d616773206172652073657420696e>117 -414 R F1<636f6e66>2.586 E<2e68>-.15 E F2 .085<616e642073686f756c64206265 -2070726564658c6e656420666f7220796f7520756e6c65737320796f752061726520706f -7274696e67>2.586 F<746f2061206e65>117 426 Q 2.5<7765>-.25 G -.4<6e76> --2.5 G 2.5<69726f6e6d656e742e2046>.4 F -<6f72206d6f7265206f7074696f6e7320736565>-.15 E F1 -<73656e646d61696c2f524541444d45>2.5 E F2<2e>A F0 2.5 -<312e312e342e20436f6d70696c6174696f6e>102 450 R -<616e6420696e7374616c6c6174696f6e>2.5 E F2 .308<4166746572206d616b696e67 -20746865206c6f63616c2073797374656d20636f6e8c6775726174696f6e206465736372 -696265642061626f>142 466.2 R -.15<7665>-.15 G 2.809<2c59>.15 G .309 -<6f752073686f756c642062652061626c6520746f20636f6d2d>-3.909 F -<70696c6520616e6420696e7374616c6c207468652073797374656d2e>117 478.2 Q<54 -68652073637269707420994275696c649a20697320746865206265737420617070726f61 -6368206f6e206d6f73742073797374656d733a>5 E<2e2f4275696c64>157 494.4 Q -<546869732077696c6c20757365>117 510.6 Q F1<756e616d65>2.5 E F2 -<28312920746f20637265617465206120637573746f6d204d616b>A -<658c6c6520666f7220796f757220656e>-.1 E<7669726f6e6d656e742e>-.4 E<4966 -20796f752061726520696e7374616c6c696e6720696e20746865207374616e6461726420 -706c616365732c20796f752073686f756c642062652061626c6520746f20696e7374616c -6c207573696e67>142 526.8 Q<2e2f4275696c6420696e7374616c6c>157 543 Q -3.346<546869732073686f756c6420696e7374616c6c207468652062696e61727920696e -202f7573722f7362696e20616e6420637265617465206c696e6b732066726f6d202f7573 -722f62696e2f6e65>117 559.2 R -.1<7761>-.25 G 3.345<6c696173657320616e64> -.1 F .28<2f7573722f62696e2f6d61696c7120746f202f7573722f7362696e2f73656e -646d61696c2e>117 571.2 R .281<4f6e206d6f73742073797374656d73206974207769 -6c6c20616c736f20666f726d617420616e6420696e7374616c6c206d616e207061676573 -2e>5.28 F 1.056<4e6f746963653a206173206f662076>117 583.2 R 1.056 -<657273696f6e20382e3132>-.15 F F1<73656e646d61696c>3.556 E F2 1.056<7769 -6c6c206e6f206c6f6e67657220626520696e7374616c6c6564207365742d75736572> -3.556 F 1.056<2d494420726f6f7420627920646566>-.2 F 3.556 -<61756c742e204966>-.1 F<796f75207265616c6c792077>117 595.2 Q<616e742074 -6f2075736520746865206f6c64206d6574686f642c20796f752063616e20737065636966 -7920697420617320746172>-.1 E<6765743a>-.18 E -<2e2f4275696c6420696e7374616c6c2d7365742d75736572>157 611.4 Q<2d6964>-.2 -E F0 2.5<312e322e20436f6e8c6775726174696f6e>87 639.6 R<46696c6573>2.5 E -F1<53656e646d61696c>127 655.8 Q F2 2.079<63616e6e6f74206f70657261746520 -776974686f7574206120636f6e8c6775726174696f6e208c6c652e>4.579 F 2.079 -<54686520636f6e8c6775726174696f6e2064658c6e657320746865206d61696c>7.079 -F<64656c69>102 667.8 Q -.15<7665>-.25 G .889<7279206d656368616e69736d73 -20756e64657273746f6f64206174207468697320736974652c20686f>.15 F 3.389 -<7774>-.25 G 3.389<6f61>-3.389 G .889<6363657373207468656d2c20686f> --3.389 F 3.388<7774>-.25 G 3.388<6f66>-3.388 G<6f7277>-3.388 E .888 -<61726420656d61696c20746f2072656d6f7465>-.1 F .088<6d61696c207379737465 -6d732c20616e642061206e756d626572206f662074756e696e6720706172616d65746572 -732e>102 679.8 R .088<5468697320636f6e8c6775726174696f6e208c6c6520697320 -64657461696c656420696e20746865206c6174657220706f72>5.088 F<2d>-.2 E -<74696f6e206f66207468697320646f63756d656e742e>102 691.8 Q<546865>127 708 -Q F1<73656e646d61696c>2.764 E F2 .264<636f6e8c6775726174696f6e2063616e20 -6265206461756e74696e67206174208c7273742e>2.764 F .264<5468652077>5.264 F -.264<6f726c6420697320636f6d706c65>-.1 F .264 -<782c20616e6420746865206d61696c20636f6e2d>-.15 F .108 -<8c6775726174696f6e2072658d6563747320746861742e>102 720 R .108 -<5468652064697374726962>5.108 F .109<7574696f6e20696e636c7564657320616e -206d342d626173656420636f6e8c6775726174696f6e207061636b616765207468617420 -68696465732061206c6f74>-.2 F 0 Cg EP +/F0 10/Times-Bold@0 SF 198.36(SMM:08-8 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E 2.5(1.1.3. T)102 96 R +(weaking the Mak)-.74 E(e\214le)-.1 E/F1 10/Times-Italic@0 SF(Sendmail) +142 112.2 Q/F2 10/Times-Roman@0 SF 2.181(supports tw)4.681 F 4.681(od) +-.1 G(if)-4.681 E 2.181(ferent formats for the local \(on disk\) v)-.25 +F 2.18(ersion of databases,)-.15 F(notably the)117 124.2 Q F1(aliases) +2.5 E F2 2.5(database. At)2.5 F +(least one of these should be de\214ned if at all possible.)2.5 E 48.94 +(CDB Constant)117 140.4 R(DataBase \(tin)2.5 E(ycdb\).)-.15 E 39.5 +(NDBM The)117 156.6 R -.74(``)3.166 G(ne).74 E 3.166(wD)-.25 G(BM') +-3.166 E 3.166('f)-.74 G .666(ormat, a)-3.166 F -.25(va)-.2 G .666 +(ilable on nearly all systems around today).25 F 5.667(.T)-.65 G(his) +-5.667 E -.1(wa)189 168.6 S 3.541(st).1 G 1.041 +(he preferred format prior to 4.4BSD.)-3.541 F 1.041(It allo)6.041 F +1.041(ws such comple)-.25 F 3.54(xt)-.15 G 1.04(hings as)-3.54 F +(multiple databases and closing a currently open database.)189 180.6 Q +32.84(NEWDB The)117 196.8 R(Berk)3.787 E(ele)-.1 E 3.787(yD)-.15 G 3.787 +(Bp)-3.787 G 3.787(ackage. If)-3.787 F 1.288(you ha)3.788 F 1.588 -.15 +(ve t)-.2 H 1.288(his, use it.).15 F 1.288(It allo)6.288 F 1.288 +(ws long records,)-.25 F 2.56 +(multiple open databases, real in-memory caching, and so forth.)189 +208.8 R -1.1(Yo)7.56 G 5.06(uc)1.1 G(an)-5.06 E .468 +(de\214ne this in conjunction with)189 220.8 R/F3 9/Times-Roman@0 SF +(NDBM)2.968 E F2 2.968(;i)C 2.968(fy)-2.968 G .469 +(ou do, old alias databases are read,)-2.968 F -.2(bu)189 232.8 S 3.108 +(tw).2 G .608(hen a ne)-3.108 F 3.108(wd)-.25 G .608 +(atabase is created it will be in NEWDB format.)-3.108 F .608 +(As a nasty)5.608 F 1.803(hack, if you ha)189 244.8 R 2.104 -.15(ve N) +-.2 H 1.804(EWDB, NDBM, and NIS de\214ned, and if the alias \214le).15 F +.124(name includes the substring \231/yp/\232,)189 256.8 R F1(sendmail) +2.623 E F2 .123(will create both ne)2.623 F 2.623(wa)-.25 G .123 +(nd old v)-2.623 F(er)-.15 E(-)-.2 E 1.08 +(sions of the alias \214le during a)189 268.8 R F1(ne)3.58 E(walias)-.15 +E F2 3.58(command. This)3.58 F 1.08(is required because)3.58 F .845 +(the Sun NIS/YP system reads the DBM v)189 280.8 R .845 +(ersion of the alias \214le.)-.15 F(It')5.845 E 3.345(su)-.55 G .845 +(gly as)-3.345 F(sin, b)189 292.8 Q(ut it w)-.2 E(orks.)-.1 E 1.112 +(If neither of these are de\214ned,)117 309 R F1(sendmail)3.612 E F2 +1.112(reads the alias \214le into memory on e)3.612 F -.15(ve)-.25 G +1.112(ry in).15 F -.2(vo)-.4 G(cation.).2 E 1.043(This can be slo)117 +321 R 3.543(wa)-.25 G 1.043(nd should be a)-3.543 F -.2(vo)-.2 G 3.543 +(ided. There).2 F 1.043(are also se)3.543 F -.15(ve)-.25 G 1.042 +(ral methods for remote database).15 F(access:)117 333 Q(LD)117 349.2 Q +43.79(AP Lightweight)-.4 F(Directory Access Protocol.)2.5 E 53.39 +(NIS Sun')117 365.4 R 2.5(sN)-.55 G(etw)-2.5 E +(ork Information Services \(formerly YP\).)-.1 E 28.94(NISPLUS Sun')117 +381.6 R 2.5(sN)-.55 G(IS+ services.)-2.5 E 26.73(NETINFO NeXT')117 397.8 +R 2.5(sN)-.55 G(etInfo service.)-2.5 E 32.84(HESIOD Hesiod)117 414 R +(service \(from Athena\).)2.5 E .085 +(Other compilation \215ags are set in)117 430.2 R F1(conf)2.585 E(.h) +-.15 E F2 .086 +(and should be prede\214ned for you unless you are porting)2.586 F +(to a ne)117 442.2 Q 2.5(we)-.25 G -.4(nv)-2.5 G 2.5(ironment. F).4 F +(or more options see)-.15 E F1(sendmail/README)2.5 E F2(.)A F0 2.5 +(1.1.4. Compilation)102 466.2 R(and installation)2.5 E F2 .309 +(After making the local system con\214guration described abo)142 482.4 R +-.15(ve)-.15 G 2.808(,Y).15 G .308(ou should be able to com-)-3.908 F +(pile and install the system.)117 494.4 Q +(The script \231Build\232 is the best approach on most systems:)5 E +(./Build)157 510.6 Q(This will use)117 526.8 Q F1(uname)2.5 E F2 +(\(1\) to create a custom Mak)A(e\214le for your en)-.1 E(vironment.)-.4 +E(If you are installing in the standard places, you should be able to i\ +nstall using)142 543 Q(./Build install)157 559.2 Q 3.346(This should in\ +stall the binary in /usr/sbin and create links from /usr/bin/ne)117 +575.4 R -.1(wa)-.25 G 3.346(liases and).1 F .281 +(/usr/bin/mailq to /usr/sbin/sendmail.)117 587.4 R .281 +(On most systems it will also format and install man pages.)5.281 F +1.056(Notice: as of v)117 599.4 R 1.056(ersion 8.12)-.15 F F1(sendmail) +3.556 E F2 1.056(will no longer be installed set-user)3.556 F 1.056 +(-ID root by def)-.2 F 3.556(ault. If)-.1 F(you really w)117 611.4 Q +(ant to use the old method, you can specify it as tar)-.1 E(get:)-.18 E +(./Build install-set-user)157 627.6 Q(-id)-.2 E F0 2.5 +(1.2. Con\214guration)87 655.8 R(Files)2.5 E F1(Sendmail)127 672 Q F2 +2.079(cannot operate without a con\214guration \214le.)4.58 F 2.079 +(The con\214guration de\214nes the mail)7.079 F(deli)102 684 Q -.15(ve) +-.25 G .888(ry mechanisms understood at this site, ho).15 F 3.389(wt) +-.25 G 3.389(oa)-3.389 G .889(ccess them, ho)-3.389 F 3.389(wt)-.25 G +3.389(of)-3.389 G(orw)-3.389 E .889(ard email to remote)-.1 F .088 +(mail systems, and a number of tuning parameters.)102 696 R .088 +(This con\214guration \214le is detailed in the later por)5.088 F(-)-.2 +E(tion of this document.)102 708 Q 0 Cg EP %%Page: 9 5 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d39>200.86 E/F1 -10/Times-Roman@0 SF<6f662074686520636f6d706c65>102 96 Q<78697479>-.15 E -5<2e53>-.65 G<6565>-5 E/F2 10/Times-Italic@0 SF<63662f524541444d45>2.5 E -F1<666f722064657461696c732e>2.5 E .658<4f757220636f6e8c6775726174696f6e -208c6c6573206172652070726f636573736564206279>127 112.2 R F2<6d34>3.158 E -F1 .658<746f2066>3.158 F .657<6163696c6974617465206c6f63616c20637573746f -6d697a6174696f6e3b20746865206469726563746f7279>-.1 F F2<6366>3.157 E F1 -.396<6f6620746865>102 124.2 R F2<73656e646d61696c>2.896 E F1 -<64697374726962>2.896 E .396<7574696f6e206469726563746f727920636f6e7461 -696e732074686520736f75726365208c6c65732e>-.2 F .396 -<54686973206469726563746f727920636f6e7461696e73207365>5.396 F -.15<7665> --.25 G .397<72616c207375622d>.15 F<6469726563746f726965733a>102 136.2 Q -61.73<636620426f7468>102 152.4 R .56<736974652d646570656e64656e7420616e -6420736974652d696e646570656e64656e74206465736372697074696f6e73206f662068 -6f7374732e>3.06 F .56<54686573652063616e206265206c69742d>5.56 F .445 -<6572616c20686f7374206e616d65732028652e672e2c2099756362>174 164.4 R -.25 -<7661>-.15 G .445 -<782e6d639a29207768656e2074686520686f737473206172652067>.25 F<617465> --.05 E -.1<7761>-.25 G .445<7973206f72206d6f72652067656e6572616c>.1 F -.535<6465736372697074696f6e73202873756368206173209967656e657269632d736f -6c61726973322e6d639a20617320612067656e6572616c206465736372697074696f6e20 -6f6620616e20534d54502d>174 176.4 R .93 -<636f6e6e656374656420686f73742072756e6e696e6720536f6c6172697320322e782e> -174 188.4 R .93<46696c657320656e64696e67>5.93 F F0<2e6d63>3.43 E F1 -<2860>3.43 E .93<604d3420436f6e8c6775726174696f6e27>-.74 F .93 -<272920617265>-.74 F 1.785<74686520696e707574206465736372697074696f6e73 -3b20746865206f757470757420697320696e2074686520636f72726573706f6e64696e67> -174 200.4 R F0<2e6366>4.285 E F1 4.285<8c6c652e20546865>4.285 F -<67656e6572616c>4.285 E<737472756374757265206f66207468657365208c6c657320 -6973206465736372696265642062656c6f>174 212.4 Q -.65<772e>-.25 G 39.5 -<646f6d61696e20536974652d646570656e64656e74>102 228.6 R .428 -<737562646f6d61696e206465736372697074696f6e732e>2.928 F .428 -<546865736520617265207469656420746f207468652077>5.428 F .428 -<617920796f7572206f72>-.1 F -.05<6761>-.18 G<6e697a612d>.05 E .777 -<74696f6e2077>174 240.6 R .777 -<616e747320746f20646f2061646472657373696e672e>-.1 F -.15<466f>5.777 G -3.277<7265>.15 G<78616d706c652c>-3.427 E F0 -<646f6d61696e2f43532e4265726b>3.276 E<656c6579>-.1 E<2e454455>-.7 E -<2e6d34>-.5 E F1 .776<6973206f7572>3.276 F 1.188<6465736372697074696f6e -20666f7220686f73747320696e207468652043532e4265726b>174 252.6 R<656c65> --.1 E -.65<792e>-.15 G 1.188<45445520737562646f6d61696e2e>.65 F 1.188 -<546865736520617265207265666572656e636564>6.188 F<7573696e6720746865>174 -264.6 Q/F3 9/Times-Roman@0 SF<444f4d41494e>2.5 E F0<6d34>2.5 E F1 -<6d6163726f20696e20746865>2.5 E F0<2e6d63>2.5 E F1<8c6c652e>2.5 E 41.74 -<666561747572652044658c6e6974696f6e73>102 280.8 R .728<6f66207370656369 -8c63206665617475726573207468617420736f6d6520706172746963756c617220686f73 -7420696e20796f75722073697465206d696768742077>3.229 F<616e742e>-.1 E -2.466<546865736520617265207265666572656e636564207573696e6720746865>174 -292.8 R F3<464541>4.966 E<54555245>-.999 E F0<6d34>4.966 E F1 4.966 -<6d6163726f2e20416e>4.966 F -.15<6578>4.967 G 2.467 -<616d706c652066656174757265206973>.15 F 1.764 -<7573655f63775f8c6c65202877686963682074656c6c73>174 304.8 R F2 -<73656e646d61696c>4.264 E F1 1.763<746f207265616420616e202f6574632f6d61 -696c2f6c6f63616c2d686f73742d6e616d6573208c6c65206f6e>4.263 F<7374617274 -757020746f208c6e642074686520736574206f66206c6f63616c206e616d6573292e>174 -316.8 Q 50.62<6861636b204c6f63616c>102 333 R 1.886 -<6861636b732c207265666572656e636564207573696e6720746865>4.386 F F3<4841> -4.386 E<434b>-.36 E F0<6d34>4.386 E F1 4.386<6d6163726f2e2054>4.386 F -1.886<727920746f2061>-.35 F -.2<766f>-.2 G 1.886<69642074686573652e>.2 F -<546865>6.887 E<706f696e74206f66206861>174 345 Q -<76696e67207468656d206865726520697320746f206d616b>-.2 E 2.5<6569>-.1 G -2.5<7463>-2.5 G<6c656172207468617420746865>-2.5 E 2.5<7973>-.15 G -<6d656c6c2e>-2.5 E 56.72<6d3420536974652d696e646570656e64656e74>102 -361.2 R F2<6d34>2.538 E F1 .038 -<28312920696e636c756465208c6c65732074686174206861>B .338 -.15<76652069> --.2 H .038 -<6e666f726d6174696f6e20636f6d6d6f6e20746f20616c6c20636f6e8c67752d>.15 F -<726174696f6e208c6c65732e>174 373.2 Q<546869732063616e2062652074686f7567 -6874206f662061732061209923696e636c7564659a206469726563746f7279>5 E<2e> --.65 E 43.95<6d61696c65722044658c6e6974696f6e73>102 389.4 R .152 -<6f66206d61696c6572732c207265666572656e636564207573696e6720746865>2.652 -F F3<4d41494c4552>2.652 E F0<6d34>2.652 E F1 2.652<6d6163726f2e20546865> -2.652 F .153<6d61696c6572207479706573>2.652 F 1.787 -<7468617420617265206b6e6f>174 401.4 R 1.787 -<776e20696e20746869732064697374726962>-.25 F 1.787 -<7574696f6e206172652066>-.2 F 1.787 -<61782c206c6f63616c2c20736d74702c20757563702c20616e64207573656e65742e> --.1 F -.15<466f>6.786 G<72>.15 E -.15<6578>174 413.4 S<616d706c652c2074 -6f20696e636c75646520737570706f727420666f722074686520555543502d6261736564 -206d61696c6572732c2075736520994d41494c45522875756370299a2e>.15 E 43.39 -<6f73747970652044658c6e6974696f6e73>102 429.6 R 1.156 -<64657363726962696e672076>3.656 F 1.157 -<6172696f7573206f7065726174696e672073797374656d20656e>-.25 F 1.157 -<7669726f6e6d656e747320287375636820617320746865206c6f63612d>-.4 F -<74696f6e206f6620737570706f7274208c6c6573292e>174 441.6 Q -<546865736520617265207265666572656e636564207573696e6720746865>5 E F3 -<4f5354595045>2.5 E F0<6d34>2.5 E F1<6d6163726f2e>2.5 E 60.61 -<7368205368656c6c>102 457.8 R<8c6c6573207573656420627920746865>2.5 E F0 -<6d34>2.5 E F1 -.2<6275>2.5 G<696c642070726f636573732e>.2 E -1.1<596f>5 -G 2.5<7573>1.1 G<686f756c646e27>-2.5 E 2.5<7468>-.18 G -2.25 -.2 -<61762065>-2.5 H<746f206d65737320776974682074686573652e>2.7 E 30.61 -<73697465636f6e8c67204c6f63616c>102 474 R .251 -<5555435020636f6e6e65637469>2.751 F .251 -<7669747920696e666f726d6174696f6e2e>-.25 F .251<54686973206469726563746f -727920686173206265656e20737570706c616e74656420627920746865>5.251 F 1.076 -<6d61696c65727461626c6520666561747572653b20616e>174 486 R 3.576<796e> --.15 G 1.576 -.25<65772063>-3.576 H 1.077<6f6e8c6775726174696f6e73207368 -6f756c64207573652074686174206665617475726520746f20646f2055554350>.25 F -<28616e64206f746865722920726f7574696e672e>174 498 Q<54686520757365206f66 -2074686973206469726563746f727920697320646570726563617465642e>5 E .757 -<496620796f752061726520696e2061206e65>127 514.2 R 3.257<7764>-.25 G .757 -<6f6d61696e2028652e672e2c206120636f6d70616e>-3.257 F .756 -<79292c20796f752077696c6c2070726f6261626c792077>-.15 F .756 -<616e7420746f2063726561746520612063662f646f6d61696e>-.1 F .05 -<8c6c6520666f7220796f757220646f6d61696e2e>102 526.2 R .051<546869732063 -6f6e7369737473207072696d6172696c79206f662072656c61792064658c6e6974696f6e -7320616e6420666561747572657320796f752077>5.05 F .051 -<616e7420656e61626c656420736974652d>-.1 F .916<776964653a20666f722065> -102 538.2 R .916<78616d706c652c204265726b>-.15 F<656c65>-.1 E<7927>-.15 -E 3.416<7364>-.55 G .915<6f6d61696e2064658c6e6974696f6e2064658c6e657320 -72656c61797320666f72204269744e455420616e642055554350>-3.416 F 5.915 -<2e54>-1.11 G .915<6865736520617265>-5.915 F 1.519 -<73706563698c6320746f204265726b>102 550.2 R<656c65>-.1 E 2.819 -.65 -<792c2061>-.15 H 1.519<6e642073686f756c642062652066756c6c792d7175616c69 -8c656420696e7465726e65742d7374796c6520646f6d61696e206e616d65732e>.65 F -1.52<506c6561736520636865636b20746f>6.519 F<6d616b>102 562.2 Q 2.5<6563> --.1 G<65727461696e20746865>-2.5 E 2.5<7961>-.15 G -<726520726561736f6e61626c6520666f7220796f757220646f6d61696e2e>-2.5 E -1.407<537562646f6d61696e73206174204265726b>127 578.4 R<656c65>-.1 E -3.907<7961>-.15 G 1.407<726520616c736f20726570726573656e74656420696e2074 -68652063662f646f6d61696e206469726563746f7279>-3.907 F 6.406<2e46>-.65 G -1.406<6f722065>-6.556 F 1.406<78616d706c652c20746865>-.15 F .356 -<646f6d61696e2043532e4265726b>102 590.4 R<656c65>-.1 E -.65<792e>-.15 G -.356<4544552069732074686520436f6d707574657220536369656e636520737562646f -6d61696e2c20454543532e4265726b>.65 F<656c65>-.1 E -.65<792e>-.15 G .356 -<4544552069732074686520456c65637472692d>.65 F 1.278<63616c20456e67696e65 -6572696e6720616e6420436f6d707574657220536369656e63657320737562646f6d6169 -6e2c20616e642053324b2e4265726b>102 602.4 R<656c65>-.1 E -.65<792e>-.15 G -1.278<4544552069732074686520536571756f69612032303030>.65 F 4.003 -<737562646f6d61696e2e2059>102 614.4 R 1.503 -<6f752077696c6c2070726f6261626c79206861>-1.1 F 1.804 -.15<76652074>-.2 H -4.004<6f61>.15 G 1.504<646420616e20656e74727920746f20746869732064697265 -63746f727920746f20626520617070726f70726961746520666f7220796f7572>-4.004 -F<646f6d61696e2e>102 626.4 Q -1.1<596f>127 642.6 S 4.373<7577>1.1 G -1.873<696c6c206861>-4.373 F 2.173 -.15<76652074>-.2 H 4.373<6f75>.15 G -1.873<7365206f7220637265617465>-4.373 F F0<2e6d63>4.372 E F1 1.872 -<8c6c657320696e20746865>4.372 F F2<63662f6366>4.372 E F1 1.872 -<7375626469726563746f727920666f7220796f757220686f7374732e>4.372 F 1.872 -<54686973206973>6.872 F -<64657461696c656420696e207468652063662f524541444d45208c6c652e>102 654.6 -Q F0 2.5<312e332e2044657461696c73>87 678.6 R -<6f6620496e7374616c6c6174696f6e2046696c6573>2.5 E F1<546869732073756273 -656374696f6e2064657363726962657320746865208c6c6573207468617420636f6d7072 -69736520746865>127 694.8 Q F2<73656e646d61696c>2.5 E F1 -<696e7374616c6c6174696f6e2e>2.5 E 0 Cg EP +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-9)200.86 E/F1 10/Times-Roman@0 SF(The)127 96 Q/F2 10 +/Times-Italic@0 SF(sendmail)2.764 E F1 .264 +(con\214guration can be daunting at \214rst.)2.764 F .264(The w)5.264 F +.264(orld is comple)-.1 F .264(x, and the mail con-)-.15 F .109 +(\214guration re\215ects that.)102 108 R .109(The distrib)5.109 F .108 +(ution includes an m4-based con\214guration package that hides a lot)-.2 +F(of the comple)102 120 Q(xity)-.15 E 5(.S)-.65 G(ee)-5 E F2(cf/README) +2.5 E F1(for details.)2.5 E .657 +(Our con\214guration \214les are processed by)127 136.2 R F2(m4)3.158 E +F1 .658(to f)3.158 F .658(acilitate local customization; the directory) +-.1 F F2(cf)3.158 E F1 .397(of the)102 148.2 R F2(sendmail)2.897 E F1 +(distrib)2.896 E .396(ution directory contains the source \214les.)-.2 F +.396(This directory contains se)5.396 F -.15(ve)-.25 G .396(ral sub-).15 +F(directories:)102 160.2 Q 61.73(cf Both)102 176.4 R .56 +(site-dependent and site-independent descriptions of hosts.)3.06 F .56 +(These can be lit-)5.56 F .445(eral host names \(e.g., \231ucb)174 188.4 +R -.25(va)-.15 G .445(x.mc\232\) when the hosts are g).25 F(ate)-.05 E +-.1(wa)-.25 G .445(ys or more general).1 F .535(descriptions \(such as \ +\231generic-solaris2.mc\232 as a general description of an SMTP-)174 +200.4 R .93(connected host running Solaris 2.x.)174 212.4 R .93 +(Files ending)5.93 F F0(.mc)3.43 E F1(\(`)3.43 E .93 +(`M4 Con\214guration')-.74 F .93('\) are)-.74 F 1.785 +(the input descriptions; the output is in the corresponding)174 224.4 R +F0(.cf)4.285 E F1 4.285(\214le. The)4.285 F(general)4.285 E +(structure of these \214les is described belo)174 236.4 Q -.65(w.)-.25 G +39.5(domain Site-dependent)102 252.6 R .428(subdomain descriptions.) +2.928 F .428(These are tied to the w)5.428 F .428(ay your or)-.1 F -.05 +(ga)-.18 G(niza-).05 E .776(tion w)174 264.6 R .776 +(ants to do addressing.)-.1 F -.15(Fo)5.777 G 3.277(re).15 G(xample,) +-3.427 E F0(domain/CS.Berk)3.277 E(eley)-.1 E(.EDU)-.7 E(.m4)-.5 E F1 +.777(is our)3.277 F 1.188(description for hosts in the CS.Berk)174 276.6 +R(ele)-.1 E -.65(y.)-.15 G 1.188(EDU subdomain.).65 F 1.187 +(These are referenced)6.188 F(using the)174 288.6 Q/F3 9/Times-Roman@0 +SF(DOMAIN)2.5 E F0(m4)2.5 E F1(macro in the)2.5 E F0(.mc)2.5 E F1 +(\214le.)2.5 E 41.74(feature De\214nitions)102 304.8 R .728 +(of speci\214c features that some particular host in your site might w) +3.228 F(ant.)-.1 E 2.467(These are referenced using the)174 316.8 R F3 +(FEA)4.966 E(TURE)-.999 E F0(m4)4.966 E F1 4.966(macro. An)4.966 F -.15 +(ex)4.966 G 2.466(ample feature is).15 F 1.763 +(use_cw_\214le \(which tells)174 328.8 R F2(sendmail)4.263 E F1 1.764 +(to read an /etc/mail/local-host-names \214le on)4.263 F +(startup to \214nd the set of local names\).)174 340.8 Q 50.62 +(hack Local)102 357 R 1.886(hacks, referenced using the)4.387 F F3(HA) +4.386 E(CK)-.36 E F0(m4)4.386 E F1 4.386(macro. T)4.386 F 1.886(ry to a) +-.35 F -.2(vo)-.2 G 1.886(id these.).2 F(The)6.886 E(point of ha)174 369 +Q(ving them here is to mak)-.2 E 2.5(ei)-.1 G 2.5(tc)-2.5 G +(lear that the)-2.5 E 2.5(ys)-.15 G(mell.)-2.5 E 56.72 +(m4 Site-independent)102 385.2 R F2(m4)2.538 E F1 .038 +(\(1\) include \214les that ha)B .338 -.15(ve i)-.2 H .038 +(nformation common to all con\214gu-).15 F(ration \214les.)174 397.2 Q +(This can be thought of as a \231#include\232 directory)5 E(.)-.65 E +43.95(mailer De\214nitions)102 413.4 R .152 +(of mailers, referenced using the)2.653 F F3(MAILER)2.652 E F0(m4)2.652 +E F1 2.652(macro. The)2.652 F .152(mailer types)2.652 F 1.786 +(that are kno)174 425.4 R 1.787(wn in this distrib)-.25 F 1.787 +(ution are f)-.2 F 1.787(ax, local, smtp, uucp, and usenet.)-.1 F -.15 +(Fo)6.787 G(r).15 E -.15(ex)174 437.4 S(ample, to include support for t\ +he UUCP-based mailers, use \231MAILER\(uucp\)\232.).15 E 43.39 +(ostype De\214nitions)102 453.6 R 1.157(describing v)3.657 F 1.157 +(arious operating system en)-.25 F 1.156(vironments \(such as the loca-) +-.4 F(tion of support \214les\).)174 465.6 Q +(These are referenced using the)5 E F3(OSTYPE)2.5 E F0(m4)2.5 E F1 +(macro.)2.5 E 60.61(sh Shell)102 481.8 R(\214les used by the)2.5 E F0 +(m4)2.5 E F1 -.2(bu)2.5 G(ild process.).2 E -1.1(Yo)5 G 2.5(us)1.1 G +(houldn')-2.5 E 2.5(th)-.18 G -2.25 -.2(av e)-2.5 H(to mess with these.) +2.7 E 30.61(sitecon\214g Local)102 498 R .251(UUCP connecti)2.751 F .251 +(vity information.)-.25 F .251 +(This directory has been supplanted by the)5.251 F 1.077 +(mailertable feature; an)174 510 R 3.577(yn)-.15 G 1.577 -.25(ew c) +-3.577 H 1.076(on\214gurations should use that feature to do UUCP).25 F +(\(and other\) routing.)174 522 Q +(The use of this directory is deprecated.)5 E .756(If you are in a ne) +127 538.2 R 3.256(wd)-.25 G .756(omain \(e.g., a compan)-3.256 F .757 +(y\), you will probably w)-.15 F .757(ant to create a cf/domain)-.1 F +.051(\214le for your domain.)102 550.2 R .051 +(This consists primarily of relay de\214nitions and features you w)5.051 +F .05(ant enabled site-)-.1 F .915(wide: for e)102 562.2 R .915 +(xample, Berk)-.15 F(ele)-.1 E(y')-.15 E 3.415(sd)-.55 G .915 +(omain de\214nition de\214nes relays for BitNET and UUCP)-3.415 F 5.916 +(.T)-1.11 G .916(hese are)-5.916 F 1.52(speci\214c to Berk)102 574.2 R +(ele)-.1 E 2.819 -.65(y, a)-.15 H 1.519 +(nd should be fully-quali\214ed internet-style domain names.).65 F 1.519 +(Please check to)6.519 F(mak)102 586.2 Q 2.5(ec)-.1 G(ertain the)-2.5 E +2.5(ya)-.15 G(re reasonable for your domain.)-2.5 E 1.406 +(Subdomains at Berk)127 602.4 R(ele)-.1 E 3.906(ya)-.15 G 1.407 +(re also represented in the cf/domain directory)-3.906 F 6.407(.F)-.65 G +1.407(or e)-6.557 F 1.407(xample, the)-.15 F .356(domain CS.Berk)102 +614.4 R(ele)-.1 E -.65(y.)-.15 G .356 +(EDU is the Computer Science subdomain, EECS.Berk).65 F(ele)-.1 E -.65 +(y.)-.15 G .356(EDU is the Electri-).65 F 1.278 +(cal Engineering and Computer Sciences subdomain, and S2K.Berk)102 626.4 +R(ele)-.1 E -.65(y.)-.15 G 1.278(EDU is the Sequoia 2000).65 F 4.004 +(subdomain. Y)102 638.4 R 1.504(ou will probably ha)-1.1 F 1.804 -.15 +(ve t)-.2 H 4.004(oa).15 G 1.504 +(dd an entry to this directory to be appropriate for your)-4.004 F +(domain.)102 650.4 Q -1.1(Yo)127 666.6 S 4.372(uw)1.1 G 1.872(ill ha) +-4.372 F 2.172 -.15(ve t)-.2 H 4.372(ou).15 G 1.872(se or create)-4.372 +F F0(.mc)4.372 E F1 1.872(\214les in the)4.372 F F2(cf/cf)4.372 E F1 +1.873(subdirectory for your hosts.)4.373 F 1.873(This is)6.873 F +(detailed in the cf/README \214le.)102 678.6 Q 0 Cg EP %%Page: 10 6 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d31302053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -2.5<312e332e312e202f7573722f7362696e2f73656e646d61696c>102 96 R/F1 10 -/Times-Roman@0 SF 1.832<5468652062696e61727920666f72>142 114.2 R/F2 10 -/Times-Italic@0 SF<73656e646d61696c>4.332 E F1 1.832 -<6973206c6f636174656420696e202f7573722f7362696e>4.332 F/F3 7 -/Times-Roman@0 SF<31>-4 I F1 6.831<2e49>4 K 4.331<7473>-6.831 G 1.831 -<686f756c64206265207365742d67726f75702d494420736d6d7370206173>-4.331 F -.644<64657363726962656420696e2073656e646d61696c2f5345435552495459>117 -126.2 R 5.644<2e46>-1.29 G .644 -<6f7220736563757269747920726561736f6e732c202f2c202f757372>-5.794 F 3.144 -<2c61>-.4 G .644<6e64202f7573722f7362696e2073686f756c64206265206f>-3.144 -F<776e6564>-.25 E<627920726f6f742c206d6f64652030373535>117 140.2 Q F3 -<32>-4 I F1<2e>4 I F0 2.5 -<312e332e322e202f6574632f6d61696c2f73656e646d61696c2e6366>102 164.2 R F1 -.89<5468697320697320746865206d61696e20636f6e8c6775726174696f6e208c6c6520 -666f72>142 182.4 R F2<73656e646d61696c>3.389 E F3<33>-4 I F1 5.889<2e54> -4 K .889<686973206973206f6e65206f6620746865207477>-5.889 F 3.389<6f6e> --.1 G .889<6f6e2d6c696272617279208c6c65>-3.389 F -<6e616d657320636f6d70696c656420696e746f>117 196.4 Q F2<73656e646d61696c> -2.5 E F3<34>-4 I F1 2.5<2c74>4 K -<6865206f74686572206973202f6574632f6d61696c2f7375626d69742e63662e>-2.5 E -.721<54686520636f6e8c6775726174696f6e208c6c65206973206e6f726d616c6c7920 -63726561746564207573696e67207468652064697374726962>142 212.6 R .721 -<7574696f6e208c6c6573206465736372696265642061626f>-.2 F -.15<7665>-.15 G -5.72<2e49>.15 G<66>-5.72 E .64<796f75206861>117 224.6 R .94 -.15 -<766520612070>-.2 H .64<6172746963756c61726c7920756e757375616c2073797374 -656d20636f6e8c6775726174696f6e20796f75206d6179206e65656420746f2063726561 -74652061207370656369616c2076>.15 F<657273696f6e2e>-.15 E<54686520666f72 -6d6174206f662074686973208c6c652069732064657461696c656420696e206c61746572 -2073656374696f6e73206f66207468697320646f63756d656e742e>117 236.6 Q F0 -2.5<312e332e332e202f6574632f6d61696c2f7375626d69742e6366>102 260.6 R F1 -.911<546869732069732074686520636f6e8c6775726174696f6e208c6c6520666f72> -142 276.8 R F2<73656e646d61696c>3.411 E F1 .91<7768656e2069742069732075 -73656420666f7220696e697469616c206d61696c207375626d697373696f6e2c20696e> -3.411 F 1.004 -<7768696368206361736520697420697320616c736f2063616c6c65642060>117 288.8 -R 1.004<604d61696c205375626d697373696f6e2050726f6772616d27>-.74 F 3.504 -<2728>-.74 G 1.005<4d53502920696e20636f6e747261737420746f2060>-3.504 F -1.005<604d61696c2054>-.74 F<72616e73666572>-.35 E<4167656e7427>117 300.8 -Q 3.87<2728>-.74 G<4d54>-3.87 E 3.87<41292e205374617274696e67>-.93 F -1.37<776974682076>3.87 F 1.37<657273696f6e20382e31322c>-.15 F F2 -<73656e646d61696c>3.87 E F1 1.37<75736573206f6e65206f66207477>3.87 F -3.87<6f64>-.1 G<6966>-3.87 E 1.37 -<666572656e7420636f6e8c6775726174696f6e>-.25 F .051<8c6c6573206261736564 -206f6e20697473206f7065726174696f6e206d6f646520286f7220746865206e65>117 -312.8 R<77>-.25 E F02.552 E F1 2.552<6f7074696f6e292e2046>2.552 F -.052<6f7220696e697469616c206d61696c207375626d697373696f6e2c20692e652e2c -206966206f6e65>-.15 F .952<6f6620746865206f7074696f6e73>117 324.8 R F0 -3.452 E F1<28646566>3.452 E<61756c74292c>-.1 E F03.451 E -F1 3.451<2c6f>C<72>-3.451 E F03.451 E F1 .951<69732073706563698c65 -642c207375626d69742e63662069732075736564202869662061>3.451 F -.25<7661> --.2 G .951<696c61626c65292c20666f72206f74686572>.25 F 2.28 -<6f7065726174696f6e732073656e646d61696c2e636620697320757365642e>117 -336.8 R 2.28<44657461696c732063616e20626520666f756e6420696e>7.28 F F2 -<73656e646d61696c2f5345435552495459>4.78 E F1 7.28<2e73>C 2.28 -<75626d69742e6366206973>-7.28 F .014<7368697070656420776974682073656e64 -6d61696c2028696e2063662f63662f2920616e6420697320696e7374616c6c6564206279 -20646566>117 348.8 R 2.514<61756c742e204966>-.1 F .014 -<6368616e67657320746f2074686520636f6e8c6775726174696f6e206e656564>2.514 -F<746f206265206d6164652c20737461727420776974682063662f63662f7375626d6974 -2e6d6320616e6420666f6c6c6f>117 360.8 Q 2.5<7774>-.25 G -<686520696e737472756374696f6e20696e2063662f524541444d452e>-2.5 E F0 2.5 -<312e332e342e202f7573722f62696e2f6e6577616c6961736573>102 384.8 R F1 -<546865>142 401 Q F2<6e65>2.5 E<77616c6961736573>-.15 E F1 -<636f6d6d616e642073686f756c64206a7573742062652061206c696e6b20746f>2.5 E -F2<73656e646d61696c>2.5 E F1<3a>A<726d20ad66202f7573722f62696e2f6e65>157 -417.2 Q -.1<7761>-.25 G<6c6961736573>.1 E<6c6e20ad73202f7573722f7362696e -2f73656e646d61696c202f7573722f62696e2f6e65>157 429.2 Q -.1<7761>-.25 G -<6c6961736573>.1 E -<546869732063616e20626520696e7374616c6c656420696e207768617465>117 445.4 -Q -.15<7665>-.25 G 2.5<7273>.15 G<6561726368207061746820796f752070726566 -657220666f7220796f75722073797374656d2e>-2.5 E F0 2.5 -<312e332e352e202f7573722f62696e2f686f737473746174>102 469.4 R F1<546865> -142 485.6 Q F2<686f737473746174>5.844 E F1 3.344 -<636f6d6d616e642073686f756c64206a7573742062652061206c696e6b20746f>5.844 -F F2<73656e646d61696c>5.844 E F1 5.844<2c69>C 5.845<6e6166>-5.844 G -3.345<617368696f6e2073696d696c617220746f>-5.945 F F2<6e65>117 497.6 Q -<77616c6961736573>-.15 E F1 6.444<2e54>C 1.444<68697320636f6d6d616e6420 -6c697374732074686520737461747573206f6620746865206c617374206d61696c207472 -616e73616374696f6e207769746820616c6c2072656d6f746520686f7374732e>-6.444 -F<546865>117 509.6 Q F03.856 E F1 1.356<8d61672077696c6c20707265> -3.856 F -.15<7665>-.25 G 1.357<6e74207468652073746174757320646973706c61 -792066726f6d206265696e67207472756e63617465642e>.15 F 1.357 -<49742066756e6374696f6e73206f6e6c79207768656e20746865>6.357 F F0 -<486f7374537461747573446972>117 521.6 Q<6563746f7279>-.18 E F1 -<6f7074696f6e206973207365742e>2.5 E F0 2.5 -<312e332e362e202f7573722f62696e2f707572>102 545.6 R<676573746174>-.1 E -F1 .187<5468697320636f6d6d616e6420697320616c736f2061206c696e6b20746f>142 -561.8 R F2<73656e646d61696c>2.687 E F1 5.187<2e49>C 2.686<748d>-5.187 G -.186<75736865732065>-2.686 F .186<787069726564202854>-.15 F .186 -<696d656f75742e686f73747374617475732920696e666f726d612d>-.35 F -<74696f6e20746861742069732073746f72656420696e20746865>117 573.8 Q F0 -<486f7374537461747573446972>2.5 E<6563746f7279>-.18 E F1<747265652e>2.5 -E .32 LW 76 583.4 72 583.4 DL 80 583.4 76 583.4 DL 84 583.4 80 583.4 DL -88 583.4 84 583.4 DL 92 583.4 88 583.4 DL 96 583.4 92 583.4 DL 100 583.4 -96 583.4 DL 104 583.4 100 583.4 DL 108 583.4 104 583.4 DL 112 583.4 108 -583.4 DL 116 583.4 112 583.4 DL 120 583.4 116 583.4 DL 124 583.4 120 -583.4 DL 128 583.4 124 583.4 DL 132 583.4 128 583.4 DL 136 583.4 132 -583.4 DL 140 583.4 136 583.4 DL 144 583.4 140 583.4 DL 148 583.4 144 -583.4 DL 152 583.4 148 583.4 DL 156 583.4 152 583.4 DL 160 583.4 156 -583.4 DL 164 583.4 160 583.4 DL 168 583.4 164 583.4 DL 172 583.4 168 -583.4 DL 176 583.4 172 583.4 DL 180 583.4 176 583.4 DL 184 583.4 180 -583.4 DL 188 583.4 184 583.4 DL 192 583.4 188 583.4 DL 196 583.4 192 -583.4 DL 200 583.4 196 583.4 DL 204 583.4 200 583.4 DL 208 583.4 204 -583.4 DL 212 583.4 208 583.4 DL 216 583.4 212 583.4 DL/F4 5 -/Times-Roman@0 SF<31>93.6 593.8 Q/F5 8/Times-Roman@0 SF .384<5468697320 -697320757375616c6c79202f7573722f7362696e206f6e20342e3442534420616e64206e -65>3.2 J .384<7765722073797374656d733b206d616e>-.2 F 2.385<7973>-.12 G -.385<797374656d7320696e7374616c6c20697420696e202f7573722f6c6962>-2.385 F -4.385<2e49>-.32 G .385 -<756e6465727374616e6420697420697320696e202f7573722f7563626c6962206f6e>-2 -F<53797374656d20562052656c6561736520342e>72 606.6 Q F4<32>93.6 617 Q F5 -.15<536f6d652076>3.2 J .15<656e646f72732073686970207468656d206f>-.12 F -.15<776e65642062792062696e3b20746869732063726561746573206120736563757269 -747920686f6c652074686174206973206e6f742061637475616c6c792072656c61746564 -20746f>-.2 F/F6 8/Times-Italic@0 SF<73656e646d61696c>2.15 E F5 4.15 -<2e4f>C .149<7468657220696d706f7274616e742064692d>-4.15 F -<726563746f7269657320746861742073686f756c64206861>72 629.8 Q .24 -.12 -<76652072>-.16 H<6573747269637469>.12 E .24 -.12<7665206f>-.2 H<776e6572 -736869707320616e64207065726d697373696f6e7320617265202f62696e2c202f757372 -2f62696e2c202f6574632c202f6574632f6d61696c2c202f7573722f6574632c202f6c69 -622c20616e64202f7573722f6c6962>-.08 E<2e>-.32 E F4<33>93.6 640.2 Q F5 -<41637475616c6c79>3.2 I 2.332<2c74>-.52 G .332 -<686520706174686e616d652076>-2.332 F .332<617269657320646570656e64696e67 -206f6e20746865206f7065726174696e672073797374656d3b202f6574632f6d61696c20 -69732074686520707265666572726564206469726563746f7279>-.2 F 4.332<2e53> --.52 G .332<6f6d65206f6c6465722073797374656d7320696e2d>-4.332 F 1.487 -<7374616c6c20697420696e>72 653 R/F7 8/Times-Bold@0 SF -<2f7573722f6c69622f73656e646d61696c2e6366>3.487 E F5 3.487<2c61>C 1.487 -<6e64204927>-3.487 F 1.727 -.12<76652061>-.4 H 1.486 -<6c736f207365656e20697420696e>.12 F F7<2f7573722f7563626c6962>3.486 E F5 -5.486<2e49>C 3.486<6679>-5.486 G 1.486<6f752077>-3.486 F 1.486 -<616e7420746f206d6f>-.08 F 1.726 -.12<76652074>-.12 H 1.486 -<686973208c6c652c20616464202d445f50>.12 F -.888<4154>-.736 G -<485f53454e444d41494c2d>.888 E .093<43463d5c222f8c6c652f6e616d655c222074 -6f20746865208d6167732070617373656420746f20746865204320636f6d70696c6572> -72 662.6 R 4.093<2e4d>-.44 G -.12<6f76>-4.093 G .093<696e67207468697320 -8c6c65206973206e6f74207265636f6d6d656e6465643a206f746865722070726f677261 -6d7320616e642073637269707473206b6e6f>.12 F 2.093<776f>-.2 G 2.093<6674> --2.093 G<686973>-2.093 E<6c6f636174696f6e2e>72 672.2 Q F4<34>93.6 682.6 -Q F5 .588<5468652073797374656d206c69627261726965732063616e20726566657265 -6e6365206f74686572208c6c65733b20696e20706172746963756c6172>3.2 J 2.589 -<2c73>-.32 G .589 -<797374656d206c69627261727920737562726f7574696e65732074686174>-2.589 F -F6<73656e646d61696c>2.589 E F5 .589 -<63616c6c732070726f6261626c79207265666572656e6365>2.589 F F6 -<2f6574632f706173737764>72 695.4 Q F5<616e64>2 E F6<2f6574632f72>2 E -<65736f6c76>-.296 E<2e636f6e66>-.592 E F5<2e>A 0 Cg EP +/F0 10/Times-Bold@0 SF 193.36(SMM:08-10 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E 2.5(1.3. Details)87 96 R +(of Installation Files)2.5 E/F1 10/Times-Roman@0 SF +(This subsection describes the \214les that comprise the)127 112.2 Q/F2 +10/Times-Italic@0 SF(sendmail)2.5 E F1(installation.)2.5 E F0 2.5 +(1.3.1. /usr/sbin/sendmail)102 136.2 R F1 1.831(The binary for)142 154.4 +R F2(sendmail)4.331 E F1 1.831(is located in /usr/sbin)4.331 F/F3 7 +/Times-Roman@0 SF(1)-4 I F1 6.832(.I)4 K 4.332(ts)-6.832 G 1.832 +(hould be set-group-ID smmsp as)-4.332 F .645 +(described in sendmail/SECURITY)117 166.4 R 5.644(.F)-1.29 G .644 +(or security reasons, /, /usr)-5.794 F 3.144(,a)-.4 G .644 +(nd /usr/sbin should be o)-3.144 F(wned)-.25 E(by root, mode 0755)117 +180.4 Q F3(2)-4 I F1(.)4 I F0 2.5(1.3.2. /etc/mail/sendmail.cf)102 204.4 +R F1 .889(This is the main con\214guration \214le for)142 222.6 R F2 +(sendmail)3.389 E F3(3)-4 I F1 5.889(.T)4 K .89(his is one of the tw) +-5.889 F 3.39(on)-.1 G .89(on-library \214le)-3.39 F +(names compiled into)117 236.6 Q F2(sendmail)2.5 E F3(4)-4 I F1 2.5(,t)4 +K(he other is /etc/mail/submit.cf.)-2.5 E .721 +(The con\214guration \214le is normally created using the distrib)142 +252.8 R .721(ution \214les described abo)-.2 F -.15(ve)-.15 G 5.721(.I) +.15 G(f)-5.721 E .64(you ha)117 264.8 R .94 -.15(ve a p)-.2 H .64(artic\ +ularly unusual system con\214guration you may need to create a special \ +v).15 F(ersion.)-.15 E(The format of this \214le is detailed in later s\ +ections of this document.)117 276.8 Q F0 2.5(1.3.3. /etc/mail/submit.cf) +102 300.8 R F1 .91(This is the con\214guration \214le for)142 317 R F2 +(sendmail)3.411 E F1 .911 +(when it is used for initial mail submission, in)3.411 F 1.005 +(which case it is also called `)117 329 R 1.004 +(`Mail Submission Program')-.74 F 3.504('\()-.74 G 1.004 +(MSP\) in contrast to `)-3.504 F 1.004(`Mail T)-.74 F(ransfer)-.35 E +(Agent')117 341 Q 3.87('\()-.74 G(MT)-3.87 E 3.87(A\). Starting)-.93 F +1.37(with v)3.87 F 1.37(ersion 8.12,)-.15 F F2(sendmail)3.87 E F1 1.37 +(uses one of tw)3.87 F 3.87(od)-.1 G(if)-3.87 E 1.37 +(ferent con\214guration)-.25 F .052 +(\214les based on its operation mode \(or the ne)117 353 R(w)-.25 E F0 +2.552 E F1 2.552(option\). F)2.552 F .051 +(or initial mail submission, i.e., if one)-.15 F .951(of the options)117 +365 R F0(\255bm)3.451 E F1(\(def)3.451 E(ault\),)-.1 E F0(\255bs)3.451 E +F1 3.451(,o)C(r)-3.451 E F03.451 E F1 .951 +(is speci\214ed, submit.cf is used \(if a)3.451 F -.25(va)-.2 G .952 +(ilable\), for other).25 F 2.28(operations sendmail.cf is used.)117 377 +R 2.28(Details can be found in)7.28 F F2(sendmail/SECURITY)4.78 E F1 +7.28(.s)C 2.28(ubmit.cf is)-7.28 F .014 +(shipped with sendmail \(in cf/cf/\) and is installed by def)117 389 R +2.514(ault. If)-.1 F .014(changes to the con\214guration need)2.514 F +(to be made, start with cf/cf/submit.mc and follo)117 401 Q 2.5(wt)-.25 +G(he instruction in cf/README.)-2.5 E F0 2.5(1.3.4. /usr/bin/newaliases) +102 425 R F1(The)142 441.2 Q F2(ne)2.5 E(waliases)-.15 E F1 +(command should just be a link to)2.5 E F2(sendmail)2.5 E F1(:)A +(rm \255f /usr/bin/ne)157 457.4 Q -.1(wa)-.25 G(liases).1 E +(ln \255s /usr/sbin/sendmail /usr/bin/ne)157 469.4 Q -.1(wa)-.25 G +(liases).1 E(This can be installed in whate)117 485.6 Q -.15(ve)-.25 G +2.5(rs).15 G(earch path you prefer for your system.)-2.5 E F0 2.5 +(1.3.5. /usr/bin/hoststat)102 509.6 R F1(The)142 525.8 Q F2(hoststat) +5.845 E F1 3.344(command should just be a link to)5.845 F F2(sendmail) +5.844 E F1 5.844(,i)C 5.844(naf)-5.844 G 3.344(ashion similar to)-5.944 +F F2(ne)117 537.8 Q(waliases)-.15 E F1 6.443(.T)C 1.444(his command lis\ +ts the status of the last mail transaction with all remote hosts.)-6.443 +F(The)117 549.8 Q F03.857 E F1 1.357(\215ag will pre)3.857 F -.15 +(ve)-.25 G 1.357(nt the status display from being truncated.).15 F 1.356 +(It functions only when the)6.356 F F0(HostStatusDir)117 561.8 Q(ectory) +-.18 E F1(option is set.)2.5 E .32 LW 76 580.4 72 580.4 DL 80 580.4 76 +580.4 DL 84 580.4 80 580.4 DL 88 580.4 84 580.4 DL 92 580.4 88 580.4 DL +96 580.4 92 580.4 DL 100 580.4 96 580.4 DL 104 580.4 100 580.4 DL 108 +580.4 104 580.4 DL 112 580.4 108 580.4 DL 116 580.4 112 580.4 DL 120 +580.4 116 580.4 DL 124 580.4 120 580.4 DL 128 580.4 124 580.4 DL 132 +580.4 128 580.4 DL 136 580.4 132 580.4 DL 140 580.4 136 580.4 DL 144 +580.4 140 580.4 DL 148 580.4 144 580.4 DL 152 580.4 148 580.4 DL 156 +580.4 152 580.4 DL 160 580.4 156 580.4 DL 164 580.4 160 580.4 DL 168 +580.4 164 580.4 DL 172 580.4 168 580.4 DL 176 580.4 172 580.4 DL 180 +580.4 176 580.4 DL 184 580.4 180 580.4 DL 188 580.4 184 580.4 DL 192 +580.4 188 580.4 DL 196 580.4 192 580.4 DL 200 580.4 196 580.4 DL 204 +580.4 200 580.4 DL 208 580.4 204 580.4 DL 212 580.4 208 580.4 DL 216 +580.4 212 580.4 DL/F4 5/Times-Roman@0 SF(1)93.6 590.8 Q/F5 8 +/Times-Roman@0 SF .385(This is usually /usr/sbin on 4.4BSD and ne)3.2 J +.385(wer systems; man)-.2 F 2.385(ys)-.12 G .385 +(ystems install it in /usr/lib)-2.385 F 4.384(.I)-.32 G .384 +(understand it is in /usr/ucblib on)-2 F(System V Release 4.)72 603.6 Q +F4(2)93.6 614 Q F5 .149(Some v)3.2 J .15(endors ship them o)-.12 F .15(\ +wned by bin; this creates a security hole that is not actually related \ +to)-.2 F/F6 8/Times-Italic@0 SF(sendmail)2.15 E F5 4.15(.O)C .15 +(ther important di-)-4.15 F(rectories that should ha)72 626.8 Q .24 -.12 +(ve r)-.16 H(estricti).12 E .24 -.12(ve o)-.2 H(wnerships and permissio\ +ns are /bin, /usr/bin, /etc, /etc/mail, /usr/etc, /lib, and /usr/lib) +-.08 E(.)-.32 E F4(3)93.6 637.2 Q F5(Actually)3.2 I 2.332(,t)-.52 G .332 +(he pathname v)-2.332 F .332(aries depending on the operating system; /\ +etc/mail is the preferred directory)-.2 F 4.332(.S)-.52 G .332 +(ome older systems in-)-4.332 F 1.486(stall it in)72 650 R/F7 8 +/Times-Bold@0 SF(/usr/lib/sendmail.cf)3.486 E F5 3.486(,a)C 1.486(nd I') +-3.486 F 1.726 -.12(ve a)-.4 H 1.486(lso seen it in).12 F F7 +(/usr/ucblib)3.486 E F5 5.486(.I)C 3.486(fy)-5.486 G 1.486(ou w)-3.486 F +1.487(ant to mo)-.08 F 1.727 -.12(ve t)-.12 H 1.487 +(his \214le, add -D_P).12 F -.888(AT)-.736 G(H_SENDMAIL-).888 E .093 +(CF=\\"/\214le/name\\" to the \215ags passed to the C compiler)72 659.6 +R 4.093(.M)-.44 G -.12(ov)-4.093 G .093 +(ing this \214le is not recommended: other programs and scripts kno).12 +F 2.093(wo)-.2 G 2.092(ft)-2.093 G(his)-2.092 E(location.)72 669.2 Q F4 +(4)93.6 679.6 Q F5 .589 +(The system libraries can reference other \214les; in particular)3.2 J +2.589(,s)-.32 G .589(ystem library subroutines that)-2.589 F F6 +(sendmail)2.588 E F5 .588(calls probably reference)2.588 F F6 +(/etc/passwd)72 692.4 Q F5(and)2 E F6(/etc/r)2 E(esolv)-.296 E(.conf) +-.592 E F5(.)A 0 Cg EP %%Page: 11 7 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3131>195.86 E -2.5<312e332e372e202f76>102 96 R<61722f73706f6f6c2f6d7175657565>-.1 E/F1 -10/Times-Roman@0 SF .217<546865206469726563746f7279>142 112.2 R/F2 10 -/Times-Italic@0 SF<2f7661722f73706f6f6c2f6d7175657565>2.717 E F1 .218<73 -686f756c64206265206372656174656420746f20686f6c6420746865206d61696c207175 -6575652e>2.717 F .218<54686973206469726563746f7279>5.218 F -<73686f756c64206265206d6f6465203037303020616e64206f>117 124.2 Q -<776e656420627920726f6f742e>-.25 E 1.192<5468652061637475616c2070617468 -206f662074686973206469726563746f72792069732064658c6e656420627920746865> -142 140.4 R F0<5175657565446972>3.691 E<6563746f7279>-.18 E F1 1.191 -<6f7074696f6e206f6620746865>3.691 F F2<73656e642d>3.691 E -<6d61696c2e6366>117 152.4 Q F1 4.427<8c6c652e2054>4.427 F 4.428<6f75>-.8 -G 1.928<7365206d756c7469706c65207175657565732c20737570706c7920612076> --4.428 F 1.928 -<616c756520656e64696e67207769746820616e20617374657269736b2e>-.25 F -.15 -<466f>6.928 G 4.428<7265>.15 G<78616d706c652c>-4.578 E F2 -<2f7661722f73706f6f6c2f6d71756575652f71642a>117 164.4 Q F1 .737<77696c6c -2075736520616c6c206f6620746865206469726563746f72696573206f722073796d626f -6c6963206c696e6b7320746f206469726563746f72696573206265>3.237 F -<67696e6e696e67>-.15 E .779<77697468206071642720696e>117 176.4 R F2 -<2f7661722f73706f6f6c2f6d7175657565>3.279 E F1 .779 -<6173207175657565206469726563746f726965732e>3.279 F .779<446f206e6f7420 -6368616e676520746865207175657565206469726563746f72792073747275632d>5.779 -F<74757265207768696c652073656e646d61696c2069732072756e6e696e672e>117 -188.4 Q .898<4966207468657365206469726563746f72696573206861>142 204.6 R -1.198 -.15<76652073>-.2 H .897<75626469726563746f72696573206f722073796d -626f6c6963206c696e6b7320746f206469726563746f72696573206e616d656420607166> -.15 F .897<272c20606466>.55 F<272c>.55 E 1.24<616e6420607866>117 216.6 R -1.24<272c207468656e2074686573652077696c6c206265207573656420666f72207468 -6520646966>.55 F 1.241<666572656e74207175657565208c6c652074797065732e> --.25 F 1.241<546861742069732c207468652064617461208c6c657320617265>6.241 -F .247<73746f72656420696e2074686520606466>117 228.6 R 2.747<2773>.55 G -<75626469726563746f7279>-2.747 E 2.746<2c74>-.65 G .246<6865207472616e73 -6372697074208c6c6573206172652073746f72656420696e2074686520607866>-2.746 -F 2.746<2773>.55 G<75626469726563746f7279>-2.746 E 2.746<2c61>-.65 G -.246<6e6420616c6c206f74682d>-2.746 F -<657273206172652073746f72656420696e2074686520607166>117 240.6 Q 2.5 -<2773>.55 G<75626469726563746f7279>-2.5 E<2e>-.65 E 1.602<49662073686172 -6564206d656d6f727920737570706f727420697320636f6d70696c656420696e2c>142 -256.8 R F2<73656e646d61696c>4.102 E F1 1.602<73746f726573207468652061> -4.102 F -.25<7661>-.2 G 1.603 -<696c61626c65206469736b737061636520696e2061>.25 F 1.065 -<736861726564206d656d6f7279207365>117 268.8 R 1.065 -<676d656e7420746f206d616b>-.15 F 3.565<6574>-.1 G 1.065<68652076>-3.565 -F 1.065<616c7565732072656164696c792061>-.25 F -.25<7661>-.2 G 1.064<696c -61626c6520746f20616c6c206368696c6472656e20776974686f757420696e6375727269 -6e67>.25 F .25<73797374656d206f>117 280.8 R -.15<7665>-.15 G 2.75 -<72686561642e20496e>.15 F .251<7468697320636173652c206f6e6c792074686520 -6461656d6f6e20757064617465732074686520646174613b20692e652e2c207468652073 -656e646d61696c206461656d6f6e206372652d>2.75 F 1.037 -<617465732074686520736861726564206d656d6f7279207365>117 292.8 R 1.037<67 -6d656e7420616e642064656c65746573206974206966206974206973207465726d696e61 -7465642e>-.15 F 2.637 -.8<546f2075>6.037 H 1.037<736520746869732c>.8 F -F2<73656e646d61696c>3.536 E F1<6d757374>3.536 E<6861>117 304.8 Q 2.461 --.15<76652062>-.2 H 2.162<65656e20636f6d70696c6564207769746820737570706f -727420666f7220736861726564206d656d6f727920282d44534d5f434f4e465f53484d29 -20616e6420746865206f7074696f6e>.15 F F0<53686172>117 316.8 Q -<65644d656d6f72794b>-.18 E<6579>-.25 E F1 1.517 -<6d757374206265207365742e>4.017 F 1.516 -<4e6f746963653a20646f206e6f7420757365207468652073616d65206b>6.516 F -1.816 -.15<65792066>-.1 H<6f72>.15 E F2<73656e646d61696c>4.016 E F1 -<696e>4.016 E -.2<766f>-.4 G<636174696f6e73>.2 E .031<7769746820646966> -117 328.8 R .031 -<666572656e74207175657565206469726563746f72696573206f7220646966>-.25 F -.032<666572656e742071756575652067726f7570206465636c61726174696f6e732e> --.25 F .032<41636365737320746f20736861726564206d656d6f7279>5.032 F 1.542 -<6973206e6f7420636f6e74726f6c6c6564206279206c6f636b732c20692e652e2c2074 -686572652069732061207261636520636f6e646974696f6e207768656e20646174612069 -6e2074686520736861726564206d656d6f7279206973>117 340.8 R 2.844 -<757064617465642e20486f>117 352.8 R<7765>-.25 E -.15<7665>-.25 G 1.144 --.4<722c2073>.15 H .344<696e6365206f7065726174696f6e206f66>.4 F F2 -<73656e646d61696c>2.844 E F1 .344<646f6573206e6f742072656c79206f6e207468 -65206461746120696e2074686520736861726564206d656d6f7279>2.844 F<2c>-.65 E -<7468697320646f6573206e6f74206e65>117 364.8 Q -.05<6761>-.15 G<7469>.05 -E -.15<7665>-.25 G<6c7920696e8d75656e6365207468652062656861>.15 E -<76696f72>-.2 E<2e>-.55 E F0 2.5<312e332e382e202f76>102 388.8 R -<61722f73706f6f6c2f636c69656e746d7175657565>-.1 E F1 1.727 -<546865206469726563746f7279>142 405 R F2 -<2f7661722f73706f6f6c2f636c69656e746d7175657565>4.227 E F1 1.726<73686f -756c64206265206372656174656420746f20686f6c6420746865206d61696c2071756575 -652e>4.227 F<54686973>6.726 E -<6469726563746f72792073686f756c64206265206d6f6465203037373020616e64206f> -117 417 Q -<776e6564206279207573657220736d6d73702c2067726f757020736d6d73702e>-.25 E -.139<5468652061637475616c2070617468206f662074686973206469726563746f7279 -2069732064658c6e656420627920746865>142 433.2 R F0<5175657565446972>2.639 -E<6563746f7279>-.18 E F1 .14<6f7074696f6e206f6620746865>2.64 F F2 -<7375626d69742e6366>2.64 E F1<8c6c652e>117 445.2 Q F0 2.5 -<312e332e392e202f76>102 469.2 R -<61722f73706f6f6c2f6d71756575652f2e686f737473746174>-.1 E F1 1.045 -<546869732069732061207479706963616c2076>142 485.4 R 1.045 -<616c756520666f7220746865>-.25 F F0<486f7374537461747573446972>3.545 E -<6563746f7279>-.18 E F1 1.044 -<6f7074696f6e2c20636f6e7461696e696e67206f6e65208c6c652070657220686f7374> -3.545 F<7468617420746869732073656e646d61696c2068617320636861747465642077 -69746820726563656e746c79>117 497.4 Q 5<2e49>-.65 G 2.5<7469>-5 G 2.5 -<736e>-2.5 G<6f726d616c6c792061207375626469726563746f7279206f66>-2.5 E -F2<6d7175657565>2.5 E F1<2e>A F0 2.5 -<312e332e31302e202f6574632f6d61696c2f616c69617365732a>102 521.4 R F1 -.019<5468652073797374656d20616c6961736573206172652068656c6420696e20992f -6574632f6d61696c2f616c69617365739a2e>142 537.6 R 2.519<4173>5.019 G .019 -<616d706c65206973206769>-2.519 F -.15<7665>-.25 G 2.52<6e69>.15 G 2.52 -<6e99>-2.52 G<73656e646d61696c2f616c69617365739a>-2.52 E -<776869636820696e636c7564657320736f6d6520616c6961736573207768696368>117 -549.6 Q F2<6d757374>2.5 E F1<62652064658c6e65643a>2.5 E<63702073656e646d -61696c2f616c6961736573202f6574632f6d61696c2f616c6961736573>157 565.8 Q -F2<65646974202f6574632f6d61696c2f616c6961736573>157 577.8 Q F1 -1.1 -<596f>117 594 S 2.5<7573>1.1 G<686f756c642065>-2.5 E -<7874656e642074686973208c6c65207769746820616e>-.15 E 2.5<7961>-.15 G<6c -6961736573207468617420617265206170726f706f7320746f20796f7572207379737465 -6d2e>-2.5 E<4e6f726d616c6c79>142 610.2 Q F2<73656e646d61696c>7.984 E F1 -5.484<6c6f6f6b7320617420612064617461626173652076>7.984 F 5.483<65727369 -6f6e206f6620746865208c6c65732c2073746f7265642065697468657220696e>-.15 F -1.089<992f6574632f6d61696c2f616c69617365732e6469729a20616e6420992f657463 -2f6d61696c2f616c69617365732e7061679a206f7220992f6574632f6d61696c2f616c69 -617365732e64629a20646570656e64696e67206f6e207768696368>117 622.2 R .203 -<6461746162617365207061636b61676520796f7520617265207573696e672e>117 -634.2 R .202<5468652061637475616c2070617468206f662074686973208c6c652069 -732064658c6e656420696e20746865>5.203 F F0<416c69617346696c65>2.702 E F1 -.202<6f7074696f6e206f66>2.702 F<746865>117 646.2 Q F2 -<73656e646d61696c2e6366>2.5 E F1<8c6c652e>2.5 E .154<546865207065726d69 -7373696f6e73206f662074686520616c696173208c6c6520616e64207468652064617461 -626173652076>142 662.4 R .155 -<657273696f6e732073686f756c64206265203036343020746f20707265>-.15 F -.15 -<7665>-.25 G .155<6e74206c6f63616c>.15 F .242 -<64656e69616c206f6620736572766963652061747461636b732061732065>117 674.4 -R .242<78706c61696e656420696e2074686520746f70206c65>-.15 F -.15<7665> --.25 G<6c>.15 E F0<524541444d45>2.742 E F1 .242 -<696e207468652073656e646d61696c2064697374726962>2.742 F 2.742 -<7574696f6e2e204966>-.2 F .909<746865207065726d697373696f6e732030363430 -2061726520757365642c20626520737572652074686174206f6e6c792074727573746564 -2075736572732062656c6f6e6720746f207468652067726f75702061737369676e656420 -746f>117 686.4 R<74686f7365208c6c65732e>117 698.4 Q -<4f74686572776973652c208c6c65732073686f756c64206e6f742065>5 E -.15<7665> --.25 G 2.5<6e62>.15 G 2.5<6567>-2.5 G<726f7570207265616461626c652e>-2.5 -E 0 Cg EP +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-11)195.86 E 2.5(1.3.6. /usr/bin/pur)102 96 R(gestat)-.1 E/F1 10 +/Times-Roman@0 SF .186(This command is also a link to)142 112.2 R/F2 10 +/Times-Italic@0 SF(sendmail)2.687 E F1 5.187(.I)C 2.687<748d>-5.187 G +.187(ushes e)-2.687 F .187(xpired \(T)-.15 F .187 +(imeout.hoststatus\) informa-)-.35 F(tion that is stored in the)117 +124.2 Q F0(HostStatusDir)2.5 E(ectory)-.18 E F1(tree.)2.5 E F0 2.5 +(1.3.7. /v)102 148.2 R(ar/spool/mqueue)-.1 E F1 .218(The directory)142 +164.4 R F2(/var/spool/mqueue)2.718 E F1 .217 +(should be created to hold the mail queue.)2.718 F .217(This directory) +5.217 F(should be mode 0700 and o)117 176.4 Q(wned by root.)-.25 E 1.191 +(The actual path of this directory is de\214ned by the)142 192.6 R F0 +(QueueDir)3.692 E(ectory)-.18 E F1 1.192(option of the)3.692 F F2(send-) +3.692 E(mail.cf)117 204.6 Q F1 4.428(\214le. T)4.428 F 4.428(ou)-.8 G +1.928(se multiple queues, supply a v)-4.428 F 1.928 +(alue ending with an asterisk.)-.25 F -.15(Fo)6.927 G 4.427(re).15 G +(xample,)-4.577 E F2(/var/spool/mqueue/qd*)117 216.6 Q F1 .737 +(will use all of the directories or symbolic links to directories be) +3.236 F(ginning)-.15 E .78(with `qd' in)117 228.6 R F2 +(/var/spool/mqueue)3.28 E F1 .779(as queue directories.)3.279 F .779 +(Do not change the queue directory struc-)5.779 F +(ture while sendmail is running.)117 240.6 Q .897 +(If these directories ha)142 256.8 R 1.197 -.15(ve s)-.2 H .898 +(ubdirectories or symbolic links to directories named `qf).15 F .898 +(', `df).55 F(',).55 E 1.241(and `xf)117 268.8 R 1.241 +(', then these will be used for the dif).55 F 1.24 +(ferent queue \214le types.)-.25 F 1.24(That is, the data \214les are) +6.24 F .246(stored in the `df)117 280.8 R 2.746('s).55 G(ubdirectory) +-2.746 E 2.746(,t)-.65 G .246 +(he transcript \214les are stored in the `xf)-2.746 F 2.747('s).55 G +(ubdirectory)-2.747 E 2.747(,a)-.65 G .247(nd all oth-)-2.747 F +(ers are stored in the `qf)117 292.8 Q 2.5('s).55 G(ubdirectory)-2.5 E +(.)-.65 E 1.603(If shared memory support is compiled in,)142 309 R F2 +(sendmail)4.102 E F1 1.602(stores the a)4.102 F -.25(va)-.2 G 1.602 +(ilable diskspace in a).25 F 1.064(shared memory se)117 321 R 1.064 +(gment to mak)-.15 F 3.564(et)-.1 G 1.065(he v)-3.564 F 1.065 +(alues readily a)-.25 F -.25(va)-.2 G 1.065 +(ilable to all children without incurring).25 F .251(system o)117 333 R +-.15(ve)-.15 G 2.751(rhead. In).15 F .251(this case, only the daemon up\ +dates the data; i.e., the sendmail daemon cre-)2.751 F 1.036 +(ates the shared memory se)117 345 R 1.037 +(gment and deletes it if it is terminated.)-.15 F 2.637 -.8(To u)6.037 H +1.037(se this,).8 F F2(sendmail)3.537 E F1(must)3.537 E(ha)117 357 Q +2.462 -.15(ve b)-.2 H 2.162(een compiled with support for shared memory\ + \(-DSM_CONF_SHM\) and the option).15 F F0(Shar)117 369 Q(edMemoryK)-.18 +E(ey)-.25 E F1 1.516(must be set.)4.016 F 1.516 +(Notice: do not use the same k)6.516 F 1.816 -.15(ey f)-.1 H(or).15 E F2 +(sendmail)4.017 E F1(in)4.017 E -.2(vo)-.4 G(cations).2 E .032(with dif) +117 381 R .032(ferent queue directories or dif)-.25 F .032 +(ferent queue group declarations.)-.25 F .031(Access to shared memory) +5.031 F 1.542(is not controlled by locks, i.e., there is a race conditi\ +on when data in the shared memory is)117 393 R 2.844(updated. Ho)117 405 +R(we)-.25 E -.15(ve)-.25 G 1.144 -.4(r, s).15 H .344(ince operation of) +.4 F F2(sendmail)2.844 E F1 .344 +(does not rely on the data in the shared memory)2.844 F(,)-.65 E +(this does not ne)117 417 Q -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G +(ly in\215uence the beha).15 E(vior)-.2 E(.)-.55 E F0 2.5(1.3.8. /v)102 +441 R(ar/spool/clientmqueue)-.1 E F1 1.726(The directory)142 457.2 R F2 +(/var/spool/clientmqueue)4.226 E F1 1.726 +(should be created to hold the mail queue.)4.226 F(This)6.727 E +(directory should be mode 0770 and o)117 469.2 Q +(wned by user smmsp, group smmsp.)-.25 E .139 +(The actual path of this directory is de\214ned by the)142 485.4 R F0 +(QueueDir)2.639 E(ectory)-.18 E F1 .139(option of the)2.639 F F2 +(submit.cf)2.639 E F1(\214le.)117 497.4 Q F0 2.5(1.3.9. /v)102 521.4 R +(ar/spool/mqueue/.hoststat)-.1 E F1 1.044(This is a typical v)142 537.6 +R 1.044(alue for the)-.25 F F0(HostStatusDir)3.545 E(ectory)-.18 E F1 +1.045(option, containing one \214le per host)3.545 F +(that this sendmail has chatted with recently)117 549.6 Q 5(.I)-.65 G +2.5(ti)-5 G 2.5(sn)-2.5 G(ormally a subdirectory of)-2.5 E F2(mqueue)2.5 +E F1(.)A F0 2.5(1.3.10. /etc/mail/aliases*)102 573.6 R F1 .019 +(The system aliases are held in \231/etc/mail/aliases\232.)142 589.8 R +2.519(As)5.019 G .019(ample is gi)-2.519 F -.15(ve)-.25 G 2.519(ni).15 G +2.519<6e99>-2.519 G(sendmail/aliases\232)-2.519 E +(which includes some aliases which)117 601.8 Q F2(must)2.5 E F1 +(be de\214ned:)2.5 E(cp sendmail/aliases /etc/mail/aliases)157 618 Q F2 +(edit /etc/mail/aliases)157 630 Q F1 -1.1(Yo)117 646.2 S 2.5(us)1.1 G +(hould e)-2.5 E(xtend this \214le with an)-.15 E 2.5(ya)-.15 G +(liases that are apropos to your system.)-2.5 E(Normally)142 662.4 Q F2 +(sendmail)7.983 E F1 5.483(looks at a database v)7.983 F 5.484 +(ersion of the \214les, stored either in)-.15 F 1.089(\231/etc/mail/ali\ +ases.dir\232 and \231/etc/mail/aliases.pag\232 or \231/etc/mail/aliases\ +.db\232 depending on which)117 674.4 R .202 +(database package you are using.)117 686.4 R .202 +(The actual path of this \214le is de\214ned in the)5.202 F F0 +(AliasFile)2.703 E F1 .203(option of)2.703 F(the)117 698.4 Q F2 +(sendmail.cf)2.5 E F1(\214le.)2.5 E 0 Cg EP %%Page: 12 8 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d31322053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -2.5<312e332e31312e202f6574632f72>102 96 R 2.5<636f>-.18 G 2.5<722f>-2.5 -G<6574632f696e69742e642f73656e646d61696c>-2.5 E/F1 10/Times-Roman@0 SF -.156<49742077696c6c206265206e656365737361727920746f20737461727420757020 -746865>142 112.2 R/F2 10/Times-Italic@0 SF<73656e646d61696c>2.655 E F1 -.155<6461656d6f6e207768656e20796f75722073797374656d207265626f6f74732e> -2.655 F .155<54686973206461652d>5.155 F 1.537 -<6d6f6e20706572666f726d73207477>117 124.2 R 4.037<6f66>-.1 G 1.537<756e -6374696f6e733a206974206c697374656e73206f6e2074686520534d545020736f636b> --4.037 F 1.537<657420666f7220636f6e6e656374696f6e732028746f207265636569> --.1 F 1.838 -.15<7665206d>-.25 H<61696c>.15 E .442<66726f6d20612072656d -6f74652073797374656d2920616e642069742070726f6365737365732074686520717565 -756520706572696f646963616c6c7920746f20696e737572652074686174206d61696c20 -676574732064656c69>117 136.2 R -.15<7665>-.25 G<726564>.15 E -<7768656e20686f73747320636f6d652075702e>117 148.2 Q .893 -<4966206e6563657373617279>142 164.4 R 3.393<2c61>-.65 G .893 -<64642074686520666f6c6c6f>-3.393 F .893<77696e67206c696e657320746f20992f -6574632f72639a20286f7220992f6574632f72632e6c6f63616c9a20617320617070726f -7072696174652920696e20746865>-.25 F .313<617265612077686572652069742069 -73207374617274696e6720757020746865206461656d6f6e73206f6e2061204253442d62 -6173652073797374656d2c206f72206f6e20612053797374656d2d56>117 176.4 R -.312<2d62617365642073797374656d>-1 F<696e206f6e65206f662074686520737461 -72747570208c6c65732c207479706963616c6c7920992f6574632f696e69742e642f7365 -6e646d61696c9a3a>117 188.4 Q<6966205b20ad66202f7573722f7362696e2f73656e -646d61696c20ad6120ad66202f6574632f6d61696c2f73656e646d61696c2e6366205d3b -207468656e>157 204.6 Q<286364202f76>193 216.6 Q -<61722f73706f6f6c2f6d71756575653b20726d20ad662078662a29>-.25 E -<2f7573722f7362696e2f73656e646d61696c20ad626420ad7133306d2026>193 228.6 -Q<6563686f20ad6e20272073656e646d61696c27203e2f6465>193 240.6 Q -<762f636f6e736f6c65>-.25 E<8c>157 252.6 Q 1.611<546865209963649a20616e64 -2099726d9a20636f6d6d616e647320696e73757265207468617420616c6c207472616e73 -6372697074208c6c6573206861>117 268.8 R 1.911 -.15<76652062>-.2 H 1.611 -<65656e2072656d6f>.15 F -.15<7665>-.15 G 1.611<643b2065>.15 F -<787472616e656f7573>-.15 E .773<7472616e736372697074208c6c6573206d617920 -6265206c6566742061726f756e64206966207468652073797374656d20676f657320646f> -117 280.8 R .772<776e20696e20746865206d6964646c65206f662070726f63657373 -696e672061206d65732d>-.25 F 3.921<736167652e20546865>117 292.8 R 1.422 -<6c696e6520746861742061637475616c6c7920696e>3.921 F -.2<766f>-.4 G -.1 -<6b65>.2 G<73>.1 E F2<73656e646d61696c>3.922 E F1 1.422<686173207477> -3.922 F 3.922<6f8d>-.1 G 1.422<6167733a2099ad62649a20636175736573206974 -20746f206c697374656e206f6e20746865>-3.922 F<534d545020706f72742c20616e64 -2099ad7133306d9a2063617573657320697420746f2072756e2074686520717565756520 -65>117 304.8 Q -.15<7665>-.25 G<72792068616c6620686f7572>.15 E<2e>-.55 E -.03<536f6d652070656f706c65207573652061206d6f726520636f6d706c65>142 321 R -2.529<7873>-.15 G .029<746172747570207363726970742c2072656d6f>-2.529 F -.029<76696e67207a65726f206c656e6774682071662f68662f5166208c6c657320616e -64206466>-.15 F .022<8c6c657320666f72207768696368207468657265206973206e -6f2071662f68662f5166208c6c652e>117 333 R .022 -<4e6f74652074686973206973206e6f7420616476697361626c652e>5.022 F -.15 -<466f>5.022 G 2.522<7265>.15 G .023 -<78616d706c652c2073656520466967757265203120666f72>-2.672 F<616e2065>117 -345 Q<78616d706c65206f66206120636f6d706c65>-.15 E 2.5<7873>-.15 G -<637269707420776869636820646f6573207468697320636c65616e2075702e>-2.5 E -F0 2.5<312e332e31322e202f6574632f6d61696c2f68656c708c6c65>102 369 R F1 -.161<54686973206973207468652068656c70208c6c6520757365642062792074686520 -534d5450>142 385.2 R F0<48454c50>2.661 E F1 2.66<636f6d6d616e642e204974> -2.661 F .16<73686f756c6420626520636f706965642066726f6d209973656e642d> -2.66 F<6d61696c2f68656c708c6c659a3a>117 397.2 Q<63702073656e646d61696c2f -68656c708c6c65202f6574632f6d61696c2f68656c708c6c65>157 413.4 Q<54686520 -61637475616c2070617468206f662074686973208c6c652069732064658c6e656420696e -20746865>117 429.6 Q F0<48656c7046696c65>2.5 E F1 -<6f7074696f6e206f6620746865>2.5 E F2<73656e646d61696c2e6366>2.5 E F1 -<8c6c652e>2.5 E F0 2.5 -<312e332e31332e202f6574632f6d61696c2f73746174697374696373>102 453.6 R F1 -3.04<496620796f75207769736820746f20636f6c6c6563742073746174697374696373 -2061626f757420796f7572206d61696c2074726166>142 469.8 R 3.04 -<8c632c20796f752073686f756c642063726561746520746865208c6c65>-.25 F -<992f6574632f6d61696c2f737461746973746963739a3a>117 481.8 Q -<6370202f6465>157 498 Q -<762f6e756c6c202f6574632f6d61696c2f73746174697374696373>-.25 E -<63686d6f642030363030202f6574632f6d61696c2f73746174697374696373>157 510 -Q .716<54686973208c6c6520646f6573206e6f742067726f>117 526.2 R 4.516 -.65 -<772e2049>-.25 H 3.216<7469>.65 G 3.216<7370>-3.216 G .716<72696e746564 -2077697468207468652070726f6772616d20996d61696c73746174732f6d61696c737461 -74732e632e>-3.216 F 5.715<9a54>-.7 G .715<68652061637475616c2070617468> --5.715 F<6f662074686973208c6c652069732064658c6e656420696e20746865>117 -538.2 Q F0<53>2.5 E F1<6f7074696f6e206f6620746865>2.5 E F2 -<73656e646d61696c2e6366>2.5 E F1<8c6c652e>2.5 E F0 2.5 -<312e332e31342e202f7573722f62696e2f6d61696c71>102 562.2 R F1<4966>142 -578.4 Q F2<73656e646d61696c>3.439 E F1 .939<697320696e>3.439 F -.2<766f> --.4 G -.1<6b65>.2 G 3.439<6461>.1 G 3.439<7399>-3.439 G<6d61696c712c> --3.439 E 3.439<9a69>-.7 G 3.439<7477>-3.439 G .939 -<696c6c2073696d756c61746520746865>-3.439 F F03.439 E F1 .94 -<8d61672028692e652e2c>3.44 F F2<73656e646d61696c>3.44 E F1 .94 -<77696c6c207072696e74>3.44 F<74686520636f6e74656e7473206f6620746865206d -61696c2071756575653b207365652062656c6f>117 590.4 Q 2.5<77292e2054686973> --.25 F<73686f756c642062652061206c696e6b20746f202f7573722f7362696e2f7365 -6e646d61696c2e>2.5 E F0 2.5<312e332e31352e2073656e646d61696c2e706964>102 -614.4 R F2<73656e646d61696c>142 630.6 Q F1 2.334<73746f7265732069747320 -63757272656e742070696420696e20746865208c6c652073706563698c65642062792074 -6865>4.834 F F0<50696446696c65>4.833 E F1 2.333<6f7074696f6e2028646566> -4.833 F 2.333<61756c74206973>-.1 F<5f50>117 642.6 Q -1.11<4154>-.92 G -<485f53454e444d41494c504944292e>1.11 E F2<73656e646d61696c>5.697 E F1 -<75736573>3.197 E F0 -.92<5465>3.197 G<6d7046696c654d6f6465>.92 E F1 -.697<28776869636820646566>3.197 F .697 -<61756c747320746f2030363030292061732074686520706572>-.1 F<2d>-.2 E 1.958 -<6d697373696f6e73206f662074686174208c6c6520746f20707265>117 654.6 R -.15 -<7665>-.25 G 1.958<6e74206c6f63616c2064656e69616c206f662073657276696365 -2061747461636b732061732065>.15 F 1.958 -<78706c61696e656420696e2074686520746f70206c65>-.15 F -.15<7665>-.25 G -<6c>.15 E F0<524541444d45>117 666.6 Q F1 .64 -<696e207468652073656e646d61696c2064697374726962>3.14 F 3.14 -<7574696f6e2e204966>-.2 F .64<746865208c6c6520616c72656164792065>3.14 F -.64<78697374732c207468656e206974206d69676874206265206e656365737361727920 -746f>-.15 F -<6368616e676520746865207065726d697373696f6e73206163636f7264696e676c79> -117 678.6 Q 2.5<2c65>-.65 G<2e672e2c>-2.5 E<63686d6f642030363030202f76> -157 694.8 Q<61722f72756e2f73656e646d61696c2e706964>-.25 E 1.956 -<4e6f74652074686174206173206f662076>117 711 R 1.956 -<657273696f6e20382e31332c2074686973208c6c6520697320756e6c696e6b>-.15 F -1.956<6564207768656e>-.1 F F2<73656e646d61696c>4.456 E F1 -.15<6578> -4.456 G 4.456<6974732e204173>.15 F 4.456<6172>4.456 G 1.955 -<6573756c74206f662074686973>-4.456 F 1.324 -<6368616e67652c20612073637269707420737563682061732074686520666f6c6c6f> -117 723 R 1.324<77696e672c207768696368206d6179206861>-.25 F 1.624 -.15 -<76652077>-.2 H<6f726b>.05 E 1.325 -<6564207072696f7220746f20382e31332c2077696c6c206e6f206c6f6e676572>-.1 F -0 Cg EP +/F0 10/Times-Bold@0 SF 193.36(SMM:08-12 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF .155 +(The permissions of the alias \214le and the database v)142 96 R .154 +(ersions should be 0640 to pre)-.15 F -.15(ve)-.25 G .154(nt local).15 F +.242(denial of service attacks as e)117 108 R .242 +(xplained in the top le)-.15 F -.15(ve)-.25 G(l).15 E F0(README)2.742 E +F1 .242(in the sendmail distrib)2.742 F 2.742(ution. If)-.2 F .909(the \ +permissions 0640 are used, be sure that only trusted users belong to th\ +e group assigned to)117 120 R(those \214les.)117 132 Q +(Otherwise, \214les should not e)5 E -.15(ve)-.25 G 2.5(nb).15 G 2.5(eg) +-2.5 G(roup readable.)-2.5 E F0 2.5(1.3.11. /etc/r)102 156 R 2.5(co)-.18 +G 2.5(r/)-2.5 G(etc/init.d/sendmail)-2.5 E F1 .155 +(It will be necessary to start up the)142 172.2 R/F2 10/Times-Italic@0 +SF(sendmail)2.655 E F1 .156(daemon when your system reboots.)2.655 F +.156(This dae-)5.156 F 1.538(mon performs tw)117 184.2 R 4.037(of)-.1 G +1.537(unctions: it listens on the SMTP sock)-4.037 F 1.537 +(et for connections \(to recei)-.1 F 1.837 -.15(ve m)-.25 H(ail).15 E +.442(from a remote system\) and it processes the queue periodically to \ +insure that mail gets deli)117 196.2 R -.15(ve)-.25 G(red).15 E +(when hosts come up.)117 208.2 Q .894(If necessary)142 224.4 R 3.393(,a) +-.65 G .893(dd the follo)-3.393 F .893(wing lines to \231/etc/rc\232 \(\ +or \231/etc/rc.local\232 as appropriate\) in the)-.25 F .312(area where\ + it is starting up the daemons on a BSD-base system, or on a System-V) +117 236.4 R .313(-based system)-1 F +(in one of the startup \214les, typically \231/etc/init.d/sendmail\232:) +117 248.4 Q(if [ \255f /usr/sbin/sendmail \255a \255f /etc/mail/sendmai\ +l.cf ]; then)157 264.6 Q(\(cd /v)193 276.6 Q +(ar/spool/mqueue; rm \255f xf*\))-.25 E +(/usr/sbin/sendmail \255bd \255q30m &)193 288.6 Q +(echo \255n ' sendmail' >/de)193 300.6 Q(v/console)-.25 E<8c>157 312.6 Q +1.611(The \231cd\232 and \231rm\232 commands insure that all transcript\ + \214les ha)117 328.8 R 1.91 -.15(ve b)-.2 H 1.61(een remo).15 F -.15 +(ve)-.15 G 1.61(d; e).15 F(xtraneous)-.15 E .772 +(transcript \214les may be left around if the system goes do)117 340.8 R +.773(wn in the middle of processing a mes-)-.25 F 3.922(sage. The)117 +352.8 R 1.422(line that actually in)3.922 F -.2(vo)-.4 G -.1(ke).2 G(s) +.1 E F2(sendmail)3.922 E F1 1.422(has tw)3.922 F 3.922<6f8d>-.1 G 1.422 +(ags: \231\255bd\232 causes it to listen on the)-3.922 F +(SMTP port, and \231\255q30m\232 causes it to run the queue e)117 364.8 +Q -.15(ve)-.25 G(ry half hour).15 E(.)-.55 E .029 +(Some people use a more comple)142 381 R 2.529(xs)-.15 G .029 +(tartup script, remo)-2.529 F .03 +(ving zero length qf/hf/Qf \214les and df)-.15 F .023 +(\214les for which there is no qf/hf/Qf \214le.)117 393 R .022 +(Note this is not advisable.)5.022 F -.15(Fo)5.022 G 2.522(re).15 G .022 +(xample, see Figure 1 for)-2.672 F(an e)117 405 Q(xample of a comple) +-.15 E 2.5(xs)-.15 G(cript which does this clean up.)-2.5 E F0 2.5 +(1.3.12. /etc/mail/help\214le)102 429 R F1 .16 +(This is the help \214le used by the SMTP)142 445.2 R F0(HELP)2.661 E F1 +2.661(command. It)2.661 F .161(should be copied from \231send-)2.661 F +(mail/help\214le\232:)117 457.2 Q +(cp sendmail/help\214le /etc/mail/help\214le)157 473.4 Q +(The actual path of this \214le is de\214ned in the)117 489.6 Q F0 +(HelpFile)2.5 E F1(option of the)2.5 E F2(sendmail.cf)2.5 E F1(\214le.) +2.5 E F0 2.5(1.3.13. /etc/mail/statistics)102 513.6 R F1 3.04 +(If you wish to collect statistics about your mail traf)142 529.8 R 3.04 +(\214c, you should create the \214le)-.25 F +(\231/etc/mail/statistics\232:)117 541.8 Q(cp /de)157 558 Q +(v/null /etc/mail/statistics)-.25 E(chmod 0600 /etc/mail/statistics)157 +570 Q .715(This \214le does not gro)117 586.2 R 4.516 -.65(w. I)-.25 H +3.216(ti).65 G 3.216(sp)-3.216 G .716 +(rinted with the program \231mailstats/mailstats.c.)-3.216 F 5.716<9a54> +-.7 G .716(he actual path)-5.716 F(of this \214le is de\214ned in the) +117 598.2 Q F0(S)2.5 E F1(option of the)2.5 E F2(sendmail.cf)2.5 E F1 +(\214le.)2.5 E F0 2.5(1.3.14. /usr/bin/mailq)102 622.2 R F1(If)142 638.4 +Q F2(sendmail)3.44 E F1 .94(is in)3.44 F -.2(vo)-.4 G -.1(ke).2 G 3.44 +(da).1 G 3.44<7399>-3.44 G(mailq,)-3.44 E 3.439<9a69>-.7 G 3.439(tw) +-3.439 G .939(ill simulate the)-3.439 F F0(\255bp)3.439 E F1 .939 +(\215ag \(i.e.,)3.439 F F2(sendmail)3.439 E F1 .939(will print)3.439 F +(the contents of the mail queue; see belo)117 650.4 Q 2.5(w\). This)-.25 +F(should be a link to /usr/sbin/sendmail.)2.5 E F0 2.5 +(1.3.15. sendmail.pid)102 674.4 R F2(sendmail)142 690.6 Q F1 2.333 +(stores its current pid in the \214le speci\214ed by the)4.833 F F0 +(PidFile)4.834 E F1 2.334(option \(def)4.834 F 2.334(ault is)-.1 F(_P) +117 702.6 Q -1.11(AT)-.92 G(H_SENDMAILPID\).)1.11 E F2(sendmail)5.697 E +F1(uses)3.197 E F0 -.92(Te)3.197 G(mpFileMode).92 E F1 .697(\(which def) +3.197 F .697(aults to 0600\) as the per)-.1 F(-)-.2 E 1.958 +(missions of that \214le to pre)117 714.6 R -.15(ve)-.25 G 1.958 +(nt local denial of service attacks as e).15 F 1.958 +(xplained in the top le)-.15 F -.15(ve)-.25 G(l).15 E 0 Cg EP %%Page: 13 9 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3133>195.86 E +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-13)195.86 E .4 LW 77 108 72 108 DL 79 108 74 108 DL 84 108 79 +108 DL 89 108 84 108 DL 94 108 89 108 DL 99 108 94 108 DL 104 108 99 108 +DL 109 108 104 108 DL 114 108 109 108 DL 119 108 114 108 DL 124 108 119 +108 DL 129 108 124 108 DL 134 108 129 108 DL 139 108 134 108 DL 144 108 +139 108 DL 149 108 144 108 DL 154 108 149 108 DL 159 108 154 108 DL 164 +108 159 108 DL 169 108 164 108 DL 174 108 169 108 DL 179 108 174 108 DL +184 108 179 108 DL 189 108 184 108 DL 194 108 189 108 DL 199 108 194 108 +DL 204 108 199 108 DL 209 108 204 108 DL 214 108 209 108 DL 219 108 214 +108 DL 224 108 219 108 DL 229 108 224 108 DL 234 108 229 108 DL 239 108 +234 108 DL 244 108 239 108 DL 249 108 244 108 DL 254 108 249 108 DL 259 +108 254 108 DL 264 108 259 108 DL 269 108 264 108 DL 274 108 269 108 DL +279 108 274 108 DL 284 108 279 108 DL 289 108 284 108 DL 294 108 289 108 +DL 299 108 294 108 DL 304 108 299 108 DL 309 108 304 108 DL 314 108 309 +108 DL 319 108 314 108 DL 324 108 319 108 DL 329 108 324 108 DL 334 108 +329 108 DL 339 108 334 108 DL 344 108 339 108 DL 349 108 344 108 DL 354 +108 349 108 DL 359 108 354 108 DL 364 108 359 108 DL 369 108 364 108 DL +374 108 369 108 DL 379 108 374 108 DL 384 108 379 108 DL 389 108 384 108 +DL 394 108 389 108 DL 399 108 394 108 DL 404 108 399 108 DL 409 108 404 +108 DL 414 108 409 108 DL 419 108 414 108 DL 424 108 419 108 DL 429 108 +424 108 DL 434 108 429 108 DL 439 108 434 108 DL 444 108 439 108 DL 449 +108 444 108 DL 454 108 449 108 DL 459 108 454 108 DL 464 108 459 108 DL +469 108 464 108 DL 474 108 469 108 DL 479 108 474 108 DL 484 108 479 108 +DL 489 108 484 108 DL 494 108 489 108 DL 499 108 494 108 DL 504 108 499 +108 DL/F1 10/Times-Roman@0 SF(#!/bin/sh)72 132 Q 2.5(#r)72 144 S(emo) +-2.5 E .3 -.15(ve z)-.15 H(ero length qf/hf/Qf \214les).15 E(for qf)72 +156 Q(\214le in qf* hf* Qf*)-.25 E(do)72 168 Q(if [ \255r $qf)108 180 Q +(\214le ])-.25 E(then)108 192 Q(if [ ! \255s $qf)144 204 Q(\214le ])-.25 +E(then)144 216 Q(echo \255n " " > /de)-.25 E +(v/console)-.25 E(rm \255f $qf)180 240 Q(\214le)-.25 E<8c>144 252 Q<8c> +108 264 Q(done)72 276 Q 2.5(#r)72 288 S +(ename tf \214les to be qf if the qf does not e)-2.5 E(xist)-.15 E +(for tf)72 300 Q(\214le in tf*)-.25 E(do)72 312 Q(qf)108 324 Q +(\214le=`echo $tf)-.25 E(\214le | sed ')-.25 E(s/t/q/'`)-.55 E +(if [ \255r $tf)108 336 Q(\214le \255a ! \255f $qf)-.25 E(\214le ])-.25 +E(then)108 348 Q(echo \255n " " > /de)-.25 E(v/console)-.25 E(mv $tf)144 372 Q +(\214le $qf)-.25 E(\214le)-.25 E(else)108 384 Q(if [ \255f $tf)144 396 Q +(\214le ])-.25 E(then)144 408 Q(echo \255n " " > /de)-.25 E(v/console)-.25 E(rm \255f $tf)180 432 Q(\214le) +-.25 E<8c>144 444 Q<8c>108 456 Q(done)72 468 Q 2.5(#r)72 480 S(emo)-2.5 +E .3 -.15(ve d)-.15 H 2.5<668c>.15 G +(les with no corresponding qf/hf/Qf \214les)-2.5 E(for df)72 492 Q +(\214le in df*)-.25 E(do)72 504 Q(qf)108 516 Q(\214le=`echo $df)-.25 E +(\214le | sed ')-.25 E(s/d/q/'`)-.55 E(hf)108 528 Q(\214le=`echo $df) +-.25 E(\214le | sed ')-.25 E(s/d/h/'`)-.55 E(Qf)108 540 Q +(\214le=`echo $df)-.25 E(\214le | sed ')-.25 E(s/d/Q/'`)-.55 E +(if [ \255r $df)108 552 Q(\214le \255a ! \255f $qf)-.25 E +(\214le \255a ! \255f $hf)-.25 E(\214le \255a ! \255f $Qf)-.25 E +(\214le ])-.25 E(then)108 564 Q(echo \255n " " > /de)-.25 E(v/console)-.25 E(mv $df)144 588 Q +(\214le `echo $df)-.25 E(\214le | sed ')-.25 E(s/d/D/'`)-.55 E<8c>108 +600 Q(done)72 612 Q 2.5(#a)72 624 S(nnounce \214les that ha)-2.5 E .3 +-.15(ve b)-.2 H(een sa).15 E -.15(ve)-.2 G 2.5(dd).15 G +(uring disaster reco)-2.5 E -.15(ve)-.15 G(ry).15 E(for xf)72 636 Q +(\214le in [A-Z]f*)-.25 E(do)72 648 Q(if [ \255f $xf)108 660 Q(\214le ]) +-.25 E(then)108 672 Q(echo \255n " " > /de) +-.25 E(v/console)-.25 E<8c>108 696 Q(done)72 708 Q 0 Cg EP +%%Page: 14 10 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 193.36(SMM:08-14 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF +(Figure 1 \212 A comple)214.47 96 Q 2.5(xs)-.15 G(tartup script)-2.5 E .4 LW 77 108 72 108 DL 79 108 74 108 DL 84 108 79 108 DL 89 108 84 108 DL 94 108 89 108 DL 99 108 94 108 DL 104 108 99 108 DL 109 108 104 108 DL 114 108 109 108 DL 119 108 114 108 DL 124 108 119 108 DL 129 108 124 @@ -1217,5406 +980,57 @@ DL 399 108 394 108 DL 404 108 399 108 DL 409 108 404 108 DL 414 108 409 429 108 DL 439 108 434 108 DL 444 108 439 108 DL 449 108 444 108 DL 454 108 449 108 DL 459 108 454 108 DL 464 108 459 108 DL 469 108 464 108 DL 474 108 469 108 DL 479 108 474 108 DL 484 108 479 108 DL 489 108 484 108 -DL 494 108 489 108 DL 499 108 494 108 DL 504 108 499 108 DL/F1 10 -/Times-Roman@0 SF<23212f62696e2f7368>72 132 Q 2.5<2372>72 144 S<656d6f> --2.5 E .3 -.15<7665207a>-.15 H -<65726f206c656e6774682071662f68662f5166208c6c6573>.15 E<666f72207166>72 -156 Q<8c6c6520696e2071662a2068662a2051662a>-.25 E<646f>72 168 Q -<6966205b20ad7220247166>108 180 Q<8c6c65205d>-.25 E<7468656e>108 192 Q -<6966205b202120ad7320247166>144 204 Q<8c6c65205d>-.25 E<7468656e>144 216 -Q<6563686f20ad6e2022203c7a65726f3a20247166>180 228 Q -<8c6c653e22203e202f6465>-.25 E<762f636f6e736f6c65>-.25 E -<726d20ad6620247166>180 240 Q<8c6c65>-.25 E<8c>144 252 Q<8c>108 264 Q -<646f6e65>72 276 Q 2.5<2372>72 288 S<656e616d65207466208c6c657320746f20 -62652071662069662074686520716620646f6573206e6f742065>-2.5 E<78697374> --.15 E<666f72207466>72 300 Q<8c6c6520696e2074662a>-.25 E<646f>72 312 Q -<7166>108 324 Q<8c6c653d606563686f20247466>-.25 E -<8c6c65207c207365642027>-.25 E<732f742f712f2760>-.55 E -<6966205b20ad7220247466>108 336 Q<8c6c6520ad61202120ad6620247166>-.25 E -<8c6c65205d>-.25 E<7468656e>108 348 Q<6563686f20ad6e2022203c7265636f>144 -360 Q -.15<7665>-.15 G<72696e673a20247466>.15 E<8c6c653e22203e202f6465> --.25 E<762f636f6e736f6c65>-.25 E<6d7620247466>144 372 Q<8c6c6520247166> --.25 E<8c6c65>-.25 E<656c7365>108 384 Q<6966205b20ad6620247466>144 396 Q -<8c6c65205d>-.25 E<7468656e>144 408 Q<6563686f20ad6e2022203c65>180 420 Q -<787472613a20247466>-.15 E<8c6c653e22203e202f6465>-.25 E -<762f636f6e736f6c65>-.25 E<726d20ad6620247466>180 432 Q<8c6c65>-.25 E -<8c>144 444 Q<8c>108 456 Q<646f6e65>72 468 Q 2.5<2372>72 480 S<656d6f> --2.5 E .3 -.15<76652064>-.15 H 2.5<668c>.15 G<6c65732077697468206e6f2063 -6f72726573706f6e64696e672071662f68662f5166208c6c6573>-2.5 E -<666f72206466>72 492 Q<8c6c6520696e2064662a>-.25 E<646f>72 504 Q<7166> -108 516 Q<8c6c653d606563686f20246466>-.25 E<8c6c65207c207365642027>-.25 -E<732f642f712f2760>-.55 E<6866>108 528 Q<8c6c653d606563686f20246466>-.25 -E<8c6c65207c207365642027>-.25 E<732f642f682f2760>-.55 E<5166>108 540 Q -<8c6c653d606563686f20246466>-.25 E<8c6c65207c207365642027>-.25 E -<732f642f512f2760>-.55 E<6966205b20ad7220246466>108 552 Q -<8c6c6520ad61202120ad6620247166>-.25 E<8c6c6520ad61202120ad6620246866> --.25 E<8c6c6520ad61202120ad6620245166>-.25 E<8c6c65205d>-.25 E<7468656e> -108 564 Q<6563686f20ad6e2022203c696e636f6d706c6574653a20246466>144 576 Q -<8c6c653e22203e202f6465>-.25 E<762f636f6e736f6c65>-.25 E<6d7620246466> -144 588 Q<8c6c6520606563686f20246466>-.25 E<8c6c65207c207365642027>-.25 -E<732f642f442f2760>-.55 E<8c>108 600 Q<646f6e65>72 612 Q 2.5<2361>72 624 -S<6e6e6f756e6365208c6c65732074686174206861>-2.5 E .3 -.15<76652062>-.2 H -<65656e207361>.15 E -.15<7665>-.2 G 2.5<6464>.15 G -<7572696e67206469736173746572207265636f>-2.5 E -.15<7665>-.15 G<7279>.15 -E<666f72207866>72 636 Q<8c6c6520696e205b412d5a5d662a>-.25 E<646f>72 648 -Q<6966205b20ad6620247866>108 660 Q<8c6c65205d>-.25 E<7468656e>108 672 Q -<6563686f20ad6e2022203c70616e69633a20247866>144 684 Q -<8c6c653e22203e202f6465>-.25 E<762f636f6e736f6c65>-.25 E<8c>108 696 Q -<646f6e65>72 708 Q 0 Cg EP -%%Page: 14 10 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d31342053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF<4669677572652031208a204120636f6d706c65>214.47 96 -Q 2.5<7873>-.15 G<74617274757020736372697074>-2.5 E .4 LW 77 108 72 108 -DL 79 108 74 108 DL 84 108 79 108 DL 89 108 84 108 DL 94 108 89 108 DL -99 108 94 108 DL 104 108 99 108 DL 109 108 104 108 DL 114 108 109 108 DL -119 108 114 108 DL 124 108 119 108 DL 129 108 124 108 DL 134 108 129 108 -DL 139 108 134 108 DL 144 108 139 108 DL 149 108 144 108 DL 154 108 149 -108 DL 159 108 154 108 DL 164 108 159 108 DL 169 108 164 108 DL 174 108 -169 108 DL 179 108 174 108 DL 184 108 179 108 DL 189 108 184 108 DL 194 -108 189 108 DL 199 108 194 108 DL 204 108 199 108 DL 209 108 204 108 DL -214 108 209 108 DL 219 108 214 108 DL 224 108 219 108 DL 229 108 224 108 -DL 234 108 229 108 DL 239 108 234 108 DL 244 108 239 108 DL 249 108 244 -108 DL 254 108 249 108 DL 259 108 254 108 DL 264 108 259 108 DL 269 108 -264 108 DL 274 108 269 108 DL 279 108 274 108 DL 284 108 279 108 DL 289 -108 284 108 DL 294 108 289 108 DL 299 108 294 108 DL 304 108 299 108 DL -309 108 304 108 DL 314 108 309 108 DL 319 108 314 108 DL 324 108 319 108 -DL 329 108 324 108 DL 334 108 329 108 DL 339 108 334 108 DL 344 108 339 -108 DL 349 108 344 108 DL 354 108 349 108 DL 359 108 354 108 DL 364 108 -359 108 DL 369 108 364 108 DL 374 108 369 108 DL 379 108 374 108 DL 384 -108 379 108 DL 389 108 384 108 DL 394 108 389 108 DL 399 108 394 108 DL -404 108 399 108 DL 409 108 404 108 DL 414 108 409 108 DL 419 108 414 108 -DL 424 108 419 108 DL 429 108 424 108 DL 434 108 429 108 DL 439 108 434 -108 DL 444 108 439 108 DL 449 108 444 108 DL 454 108 449 108 DL 459 108 -454 108 DL 464 108 459 108 DL 469 108 464 108 DL 474 108 469 108 DL 479 -108 474 108 DL 484 108 479 108 DL 489 108 484 108 DL 494 108 489 108 DL -499 108 494 108 DL 504 108 499 108 DL -.1<776f>117 144 S<726b3a>.1 E 2.5 -<2373>157 160.2 S<746f7020262073746172742073656e646d61696c>-2.5 E -<50494446494c453d2f76>157 172.2 Q -<61722f72756e2f73656e646d61696c2e706964>-.25 E -<6b696c6c206068656164202d31202450494446494c4560>157 184.2 Q -<607461696c202d31202450494446494c4560>157 196.2 Q .218<6265636175736520 -697420617373756d6573207468617420746865207069648c6c652077696c6c207374696c -6c2065>117 212.4 R .218<786973742065>-.15 F -.15<7665>-.25 G 2.718<6e61> -.15 G .217<66746572206b696c6c696e67207468652070726f6365737320746f207768 -696368206974207265666572732e>-2.718 F<42656c6f>117 224.4 Q 2.5<7769>-.25 -G 2.5<736173>-2.5 G<63726970742077686963682077696c6c2077>-2.5 E -<6f726b20636f72726563746c79206f6e20626f7468206e65>-.1 E -<77657220616e64206f6c6465722076>-.25 E<657273696f6e733a>-.15 E 2.5<2373> -157 240.6 S<746f7020262073746172742073656e646d61696c>-2.5 E -<50494446494c453d2f76>157 252.6 Q -<61722f72756e2f73656e646d61696c2e706964>-.25 E -<7069643d6068656164202d31202450494446494c4560>157 264.6 Q -<636d643d607461696c202d31202450494446494c4560>157 276.6 Q -<6b696c6c2024706964>157 288.6 Q<24636d64>157 300.6 Q 1.31 -<54686973206973206a75737420616e2065>117 316.8 R 1.311<78616d706c65207363 -726970742c20697420646f6573206e6f7420706572666f726d20616e>-.15 F 3.811 -<7965>-.15 G 1.311<72726f7220636865636b732c20652e672e2c2077686574686572 -20746865207069648c6c65>-3.811 F -.15<6578>117 328.8 S -<6973747320617420616c6c2e>.15 E F0 2.5<312e332e31362e204d6170>102 352.8 -R<46696c6573>2.5 E F1 2.466 -.8<546f2070>142 369 T<7265>.8 E -.15<7665> --.25 G .866<6e74206c6f63616c2064656e69616c206f66207365727669636520617474 -61636b732061732065>.15 F .865 -<78706c61696e656420696e2074686520746f70206c65>-.15 F -.15<7665>-.25 G -<6c>.15 E F0<524541444d45>3.365 E F1 .865<696e20746865>3.365 F 1.076 -<73656e646d61696c2064697374726962>117 381 R 1.077<7574696f6e2c2074686520 -7065726d697373696f6e73206f66206d6170208c6c65732063726561746564206279>-.2 -F/F2 10/Times-Italic@0 SF<6d616b>3.577 E<656d6170>-.1 E F1 1.077 -<73686f756c6420626520303634302e>3.577 F<546865>6.077 E .56<757365206f66 -203036343020696d706c6965732074686174206f6e6c7920747275737465642075736572 -732062656c6f6e6720746f207468652067726f75702061737369676e656420746f207468 -6f7365208c6c65732e>117 393 R .56<49662074686f7365>5.56 F -<8c6c657320616c72656164792065>117 405 Q<786973742c207468656e206974206d69 -676874206265206e656365737361727920746f206368616e676520746865207065726d69 -7373696f6e73206163636f7264696e676c79>-.15 E 2.5<2c65>-.65 G<2e672e2c> --2.5 E<6364202f6574632f6d61696c>157 421.2 Q -<63686d6f642030363430202a2e6462202a2e706167202a2e646972>157 433.2 Q F0 -2.5<322e204e4f524d414c>72 461.4 R<4f50455241>2.5 E<54494f4e53>-.95 E 2.5 -<322e312e20546865>87 485.4 R<53797374656d204c6f67>2.5 E F1 1.511 -<5468652073797374656d206c6f6720697320737570706f7274656420627920746865> -127 501.6 R F2<7379736c6f>4.011 E<6764>-.1 E F1 1.511 -<2838292070726f6772616d2e>1.666 F 1.511 -<416c6c206d657373616765732066726f6d>6.511 F F2<73656e646d61696c>4.011 E -F1<617265>4.012 E<6c6f6767656420756e64657220746865>102 515.6 Q/F3 9 -/Times-Roman@0 SF<4c4f475f4d41494c>2.5 E F1 -.1<6661>2.5 G<63696c697479> -.1 E/F4 7/Times-Roman@0 SF<35>-4 I F1<2e>4 I F0 2.5<322e312e312e2046>102 -539.6 R<6f726d6174>-.25 E F1 .574<45616368206c696e6520696e20746865207379 -7374656d206c6f6720636f6e7369737473206f6620612074696d657374616d702c207468 -65206e616d65206f6620746865206d616368696e6520746861742067656e6572>142 -555.8 R<2d>-.2 E .848 -<617465642069742028666f72206c6f6767696e672066726f6d207365>117 567.8 R --.15<7665>-.25 G .848<72616c206d616368696e6573206f>.15 F -.15<7665>-.15 -G 3.349<7274>.15 G .849<6865206c6f63616c2061726561206e657477>-3.349 F -.849<6f726b292c207468652077>-.1 F .849<6f7264209973656e646d61696c3a9a2c> --.1 F<616e642061206d657373616765>117 581.8 Q F4<36>-4 I F1 5<2e4d>4 K -<6f7374206d657373616765732061726520612073657175656e6365206f66>-5 E F2 -<6e616d65>2.5 E F1<3d>A F2<76616c7565>A F1<70616972732e>2.5 E .68 -<546865207477>142 598 R 3.18<6f6d>-.1 G .68<6f737420636f6d6d6f6e206c696e -657320617265206c6f67676564207768656e2061206d6573736167652069732070726f63 -65737365642e>-3.18 F .68<546865208c727374206c6f677320746865>5.68 F .376< -72656365697074206f662061206d6573736167653b2074686572652077696c6c20626520 -65>117 610 R .376 -<786163746c79206f6e65206f6620746865736520706572206d6573736167652e>-.15 F -.376<536f6d65208c656c6473206d6179206265206f6d69742d>5.376 F -<74656420696620746865>117 622 Q 2.5<7964>-.15 G 2.5<6f6e>-2.5 G -<6f7420636f6e7461696e20696e746572657374696e6720696e666f726d6174696f6e2e> --2.5 E<4669656c6473206172653a>5 E 50.06<66726f6d20546865>117 638.2 R -<656e>2.5 E -.15<7665>-.4 G<6c6f70652073656e64657220616464726573732e>.15 -E 53.95<73697a6520546865>117 654.4 R -<73697a65206f6620746865206d65737361676520696e2062797465732e>2.5 E .32 LW -76 665.2 72 665.2 DL 80 665.2 76 665.2 DL 84 665.2 80 665.2 DL 88 665.2 -84 665.2 DL 92 665.2 88 665.2 DL 96 665.2 92 665.2 DL 100 665.2 96 665.2 -DL 104 665.2 100 665.2 DL 108 665.2 104 665.2 DL 112 665.2 108 665.2 DL -116 665.2 112 665.2 DL 120 665.2 116 665.2 DL 124 665.2 120 665.2 DL 128 -665.2 124 665.2 DL 132 665.2 128 665.2 DL 136 665.2 132 665.2 DL 140 -665.2 136 665.2 DL 144 665.2 140 665.2 DL 148 665.2 144 665.2 DL 152 -665.2 148 665.2 DL 156 665.2 152 665.2 DL 160 665.2 156 665.2 DL 164 -665.2 160 665.2 DL 168 665.2 164 665.2 DL 172 665.2 168 665.2 DL 176 -665.2 172 665.2 DL 180 665.2 176 665.2 DL 184 665.2 180 665.2 DL 188 -665.2 184 665.2 DL 192 665.2 188 665.2 DL 196 665.2 192 665.2 DL 200 -665.2 196 665.2 DL 204 665.2 200 665.2 DL 208 665.2 204 665.2 DL 212 -665.2 208 665.2 DL 216 665.2 212 665.2 DL/F5 5/Times-Roman@0 SF<35>93.6 -675.6 Q/F6 8/Times-Roman@0 SF<457863657074206f6e20556c747269782c20776869 -636820646f6573206e6f7420737570706f72742066>3.2 I -<6163696c697469657320696e20746865207379736c6f672e>-.08 E F5<36>93.6 -689.2 Q F6<5468697320666f726d6174206d61792076>3.2 I -<61727920736c696768746c7920696620796f75722076>-.2 E -<656e646f7220686173206368616e676564207468652073796e7461782e>-.12 E 0 Cg -EP -%%Page: 15 11 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3135>195.86 E -/F1 10/Times-Roman@0 SF 50.06<636c61737320546865>117 96 R<636c6173732028 -692e652e2c206e756d6572696320707265636564656e636529206f6620746865206d6573 -736167652e>2.5 E 58.39<70726920546865>117 112.2 R<696e697469616c206d6573 -73616765207072696f7269747920287573656420666f7220717565756520736f7274696e -67292e>2.5 E 45.06<6e726370747320546865>117 128.4 R 1.515 -<6e756d626572206f6620656e>4.015 F -.15<7665>-.4 G 1.514<6c6f706520726563 -697069656e747320666f722074686973206d6573736167652028616674657220616c6961 -73696e6720616e6420666f72>.15 F<2d>-.2 E -.1<7761>189 140.4 S -<7264696e67292e>.1 E 45.05<6d7367696420546865>117 156.6 R<6d657373616765 -206964206f6620746865206d657373616765202866726f6d207468652068656164657229 -2e>2.5 E 32.28<626f64797479706520546865>117 172.8 R 3.144<6d657373616765 -20626f64792074797065202837424954206f7220384249544d494d45292c206173206465 -7465726d696e65642066726f6d20746865>5.644 F<656e>189 184.8 Q -.15<7665> --.4 G<6c6f70652e>.15 E 48.39<70726f746f20546865>117 201 R -<70726f746f636f6c207573656420746f207265636569>2.5 E .3 -.15<76652074> --.25 H -<686973206d6573736167652028652e672e2c2045534d5450206f72205555435029>.15 -E 37.84<6461656d6f6e20546865>117 217.2 R -<6461656d6f6e206e616d652066726f6d20746865>2.5 E F0<4461656d6f6e50>2.5 E -<6f72744f7074696f6e73>-.2 E F1<73657474696e672e>2.5 E 49.51 -<72656c617920546865>117 233.4 R -<6d616368696e652066726f6d2077686963682069742077>2.5 E<6173207265636569> --.1 E -.15<7665>-.25 G<642e>.15 E .43<546865726520697320616c736f206f6e65 -206c696e65206c6f67676564207065722064656c69>117 249.6 R -.15<7665>-.25 G -.43<727920617474656d70742028736f2074686572652063616e206265207365>.15 F --.15<7665>-.25 G .43<72616c20706572206d6573736167652069662064656c69>.15 -F<762d>-.25 E<657279206973206465666572726564206f722074686572652061726520 -6d756c7469706c6520726563697069656e7473292e>117 261.6 Q -<4669656c6473206172653a>5 E 61.72<746f2041>117 277.8 R<636f6d6d612d7365 -70617261746564206c697374206f662074686520726563697069656e747320746f207468 -6973206d61696c6572>2.5 E<2e>-.55 E 41.73<63746c6164647220546865>117 294 -R -.74<6060>2.726 G .226<636f6e74726f6c6c696e67207573657227>.74 F .226< -272c20746861742069732c20746865206e616d65206f662074686520757365722077686f -73652063726564656e7469616c7320776520757365>-.74 F<666f722064656c69>189 -306 Q -.15<7665>-.25 G<7279>.15 E<2e>-.65 E 47.84<64656c617920546865>117 -322.2 R 1.205<746f74616c2064656c6179206265747765656e207468652074696d6520 -74686973206d6573736167652077>3.705 F 1.205<6173207265636569>-.1 F -.15 -<7665>-.25 G 3.705<6461>.15 G 1.205<6e64207468652063757272656e74>-3.705 -F<64656c69>189 334.2 Q -.15<7665>-.25 G<727920617474656d70742e>.15 E -42.84<7864656c617920546865>117 350.4 R .116 -<616d6f756e74206f662074696d65206e656564656420696e20746869732064656c69> -2.615 F -.15<7665>-.25 G .116 -<727920617474656d707420286e6f726d616c6c7920696e646963617469>.15 F .416 --.15<7665206f>-.25 H 2.616<6674>.15 G<6865>-2.616 E -<7370656564206f662074686520636f6e6e656374696f6e292e>189 362.4 Q 43.95 -<6d61696c657220546865>117 378.6 R -<6e616d65206f6620746865206d61696c6572207573656420746f2064656c69>2.5 E --.15<7665>-.25 G 2.5<7274>.15 G 2.5<6f74>-2.5 G -<68697320726563697069656e742e>-2.5 E 49.51<72656c617920546865>117 394.8 -R<6e616d65206f662074686520686f737420746861742061637475616c6c792061636365 -7074656420286f722072656a656374656429207468697320726563697069656e742e>2.5 -E 55.61<64736e20546865>117 411 R -<656e68616e636564206572726f7220636f646520285246432032303334292069662061> -2.5 E -.25<7661>-.2 G<696c61626c652e>.25 E 55.61<7374617420546865>117 -427.2 R<64656c69>2.5 E -.15<7665>-.25 G<7279207374617475732e>.15 E 1.012 -<4e6f7420616c6c208c656c6473206172652070726573656e7420696e20616c6c206d65 -7373616765733b20666f722065>117 443.4 R 1.012<78616d706c652c207468652072 -656c617920697320757375616c6c79206e6f74206c697374656420666f72206c6f63616c> --.15 F<64656c69>117 455.4 Q -.15<7665>-.25 G<726965732e>.15 E F0 2.5 -<322e312e322e204c65>102 479.4 R -.1<7665>-.15 G<6c73>.1 E F1 .204 -<496620796f75206861>142 495.6 R -.15<7665>-.2 G/F2 10/Times-Italic@0 SF -<7379736c6f>2.854 E<6764>-.1 E F1 .204<283829206f7220616e2065717569> -1.666 F -.25<7661>-.25 G .205<6c656e7420696e7374616c6c65642c20796f752077 -696c6c2062652061626c6520746f20646f206c6f6767696e672e>.25 F .205 -<5468657265206973>5.205 F 2.788<616c>117 507.6 S<6172>-2.788 E .287<6765 -20616d6f756e74206f6620696e666f726d6174696f6e20746861742063616e206265206c -6f676765642e>-.18 F .287<546865206c6f6720697320617272616e67656420617320 -612073756363657373696f6e206f66206c65>5.287 F -.15<7665>-.25 G<6c732e>.15 -E .65<417420746865206c6f>117 519.6 R .65<77657374206c65>-.25 F -.15 -<7665>-.25 G 3.15<6c6f>.15 G .65<6e6c792065>-3.15 F .651<787472656d656c -7920737472616e676520736974756174696f6e7320617265206c6f676765642e>-.15 F -.651<4174207468652068696768657374206c65>5.651 F -.15<7665>-.25 G .651 -<6c2c2065>.15 F -.15<7665>-.25 G 3.151<6e74>.15 G<6865>-3.151 E .826 -<6d6f7374206d756e64616e6520616e6420756e696e746572657374696e672065>117 -531.6 R -.15<7665>-.25 G .825 -<6e747320617265207265636f7264656420666f7220706f73746572697479>.15 F -5.825<2e41>-.65 G 3.325<736163>-5.825 G<6f6e>-3.325 E -.15<7665>-.4 G -.825<6e74696f6e2c206c6f67206c65>.15 F -.15<7665>-.25 G<6c73>.15 E .2<75 -6e6465722074656e2061726520636f6e736964657265642067656e6572616c6c79209975 -736566756c3b9a206c6f67206c65>117 543.6 R -.15<7665>-.25 G .201 -<6c732061626f>.15 F .501 -.15<76652036>-.15 H 2.701<3461>.15 G .201 -<726520726573657276>-2.701 F .201<656420666f7220646562>-.15 F .201 -<756767696e6720707572>-.2 F<2d>-.2 E 2.5<706f7365732e204c65>117 555.6 R --.15<7665>-.25 G<6c732066726f6d203131ad36342061726520726573657276>.15 E -<656420666f722076>-.15 E<6572626f736520696e666f726d6174696f6e2074686174 -20736f6d65207369746573206d696768742077>-.15 E<616e742e>-.1 E 2.5<4163> -142 571.8 S -<6f6d706c657465206465736372697074696f6e206f6620746865206c6f67206c65>-2.5 -E -.15<7665>-.25 G<6c73206973206769>.15 E -.15<7665>-.25 G 2.5<6e69>.15 -G 2.5<6e73>-2.5 G<656374696f6e2060>-2.5 E<604c6f67204c65>-.74 E -.15 -<7665>-.25 G<6c27>.15 E<272e>-.74 E F0 2.5<322e322e2044756d70696e67>87 -595.8 R<5374617465>2.5 E F1 -1.1<596f>127 612 S 2.564<7563>1.1 G .064 -<616e2061736b>-2.564 F F2<73656e646d61696c>2.564 E F1 .064<746f206c6f67 -20612064756d70206f6620746865206f70656e208c6c657320616e642074686520636f6e -6e656374696f6e2063616368652062792073656e64696e672069742061>2.564 F/F3 9 -/Times-Roman@0 SF<53494755535231>102 624 Q F1 2.5 -<7369676e616c2e20546865>2.5 F -<726573756c747320617265206c6f67676564206174>2.5 E F3<4c4f475f444542>2.5 -E<5547>-.09 E F1<7072696f72697479>2.5 E<2e>-.65 E F0 2.5 -<322e332e20546865>87 648 R<4d61696c20517565756573>2.5 E F1 .648 -<4d61696c206d65737361676573206d6179206569746865722062652064656c69>127 -664.2 R -.15<7665>-.25 G .649<72656420696d6d6564696174656c79206f72206265 -2068656c6420666f72206c617465722064656c69>.15 F -.15<7665>-.25 G<7279>.15 -E 5.649<2e48>-.65 G .649<656c64206d65732d>-5.649 F<73616765732061726520 -706c6163656420696e746f206120686f6c64696e67206469726563746f72792063616c6c -65642061206d61696c2071756575652e>102 676.2 Q 2.5<416d>127 692.4 S<61696c -206d657373616765206d61792062652071756575656420666f7220746865736520726561 -736f6e733a>-2.5 E 5<8349>107 708.6 S 2.547<66616d>-5 G .047 -<61696c206d6573736167652069732074656d706f726172696c7920756e64656c69> --2.547 F -.15<7665>-.25 G .047 -<7261626c652c2069742069732071756575656420616e642064656c69>.15 F -.15 -<7665>-.25 G .047<727920697320617474656d70746564206c61746572>.15 F 5.046 -<2e49>-.55 G 2.546<6674>-5.046 G<6865>-2.546 E 1.979<6d6573736167652069 -732061646472657373656420746f206d756c7469706c6520726563697069656e74732c20 -697420697320717565756564206f6e6c7920666f722074686f736520726563697069656e -747320746f2077686f6d>115.5 720.6 R 0 Cg EP -%%Page: 16 12 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d31362053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF<64656c69>115.5 96 Q -.15<7665>-.25 G -<7279206973206e6f7420696d6d6564696174656c7920706f737369626c652e>.15 E 5 -<8349>107 108 S 2.5<6674>-5 G<686520537570657253616665206f7074696f6e2069 -732073657420746f20747275652c20616c6c206d61696c206d6573736167657320617265 -20717565756564207768696c652064656c69>-2.5 E -.15<7665>-.25 G -<727920697320617474656d707465642e>.15 E 5<8349>107 120 S 3.259<6674>-5 G -.759<68652044656c69>-3.259 F -.15<7665>-.25 G .758<72794d6f6465206f7074 -696f6e2069732073657420746f2071756575652d6f6e6c79206f72206465666572>.15 F -3.258<2c61>-.4 G .758 -<6c6c206d61696c206973207175657565642c20616e64206e6f20696d6d656469617465> --3.258 F<64656c69>115.5 132 Q -.15<7665>-.25 G -<727920697320617474656d707465642e>.15 E 5<8349>107 144 S 2.814<6674>-5 G -.314<6865206c6f61642061>-2.814 F -.15<7665>-.2 G .315 -<72616765206265636f6d657320686967686572207468616e207468652076>.15 F .315 -<616c7565206f66207468652051756575654c41206f7074696f6e20616e6420746865> --.25 F F0<517565756546>2.815 E<6163746f72>-.25 E F1<28>115.5 156 Q F0 -<71>A F1 3.442<296f>C .942<7074696f6e206469>-3.442 F .942 -<76696465642062792074686520646966>-.25 F .942 -<666572656e636520696e207468652063757272656e74206c6f61642061>-.25 F -.15 -<7665>-.2 G .942<7261676520616e6420746865>.15 F F0<51756575654c41>3.442 -E F1 .942<6f7074696f6e20706c7573>3.442 F .403<6f6e65206973206c6573732074 -68616e20746865207072696f72697479206f6620746865206d6573736167652c206d6573 -7361676573206172652071756575656420726174686572207468616e20696d6d65646961 -74656c792064656c69>115.5 168 R<762d>-.25 E<657265642e>115.5 180 Q 5 -<834f>107 192 S .745 -<6e65206f72206d6f72652061646472657373657320617265206d61726b>-5 F .745 -<65642061732065>-.1 F<7870656e7369>-.15 E 1.045 -.15<76652061>-.25 H -.745<6e642064656c69>.15 F -.15<7665>-.25 G .744 -<727920697320706f7374706f6e656420756e74696c20746865206e65>.15 F .744 -<7874207175657565>-.15 F -<72756e206f72206f6e65206f72206d6f7265206164647265737320617265206d61726b> -115.5 204 Q<65642061732068656c6420766961206d61696c6572207768696368207573 -65732074686520686f6c64206d61696c6572208d61672e>-.1 E 5<8354>107 216 S -<6865206d61696c206d65737361676520686173206265656e206d61726b>-5 E<656420 -61732071756172616e74696e6564207669612061206d61696c208c6c746572206f722072 -756c65736574732e>-.1 E F0 2.5<322e332e312e205175657565>102 240 R<4772> -2.5 E<6f75707320616e6420517565756520446972>-.18 E<6563746f72696573>-.18 -E F1 .338 -<546865726520617265206f6e65206f72206d6f7265206d61696c207175657565732e> -142 256.2 R .339<45616368206d61696c2071756575652062656c6f6e677320746f20 -612071756575652067726f75702e>5.339 F .339<5468657265206973>5.339 F<616c> -117 268.2 Q -.1<7761>-.1 G .617<7973206120646566>.1 F .617 -<61756c742071756575652067726f757020746861742069732063616c6c65642060>-.1 -F<606d717565756527>-.74 E 3.117<2728>-.74 G .616 -<7768696368206973207768657265206d6573736167657320676f20627920646566> --3.117 F<61756c74>-.1 E 2.243 -<756e6c657373206f74686572776973652073706563698c6564292e>117 280.2 R -2.244<546865206469726563746f7279206f72206469726563746f726965732077686963 -6820636f6d70726973652074686520646566>7.243 F 2.244<61756c74207175657565> --.1 F 1.38<67726f7570206172652073706563698c6564206279207468652051756575 -654469726563746f7279206f7074696f6e2e>117 292.2 R 1.379<5468657265206172 -65207a65726f206f72206d6f7265206164646974696f6e616c206e616d6564>6.379 F -<71756575652067726f757073206465636c61726564207573696e6720746865>117 -304.2 Q F0<51>2.5 E F1 -<636f6d6d616e6420696e2074686520636f6e8c6775726174696f6e208c6c652e>2.5 E -.181<427920646566>142 320.4 R .181<61756c742c206120717565756564206d6573 -7361676520697320706c6163656420696e207468652071756575652067726f7570206173 -736f636961746564207769746820746865208c727374207265636970692d>-.1 F 1.181 -<656e7420696e2074686520726563697069656e74206c6973742e>117 332.4 R 3.681 -<4172>6.181 G 1.18<6563697069656e742061646472657373206973206d6170706564 -20746f20612071756575652067726f757020617320666f6c6c6f>-3.681 F 3.68 -<77732e2046697273742c>-.25 F<6966>3.68 E 1.222 -<746865726520697320612072756c657365742063616c6c65642060>117 344.4 R -<607175657565>-.74 E<67726f757027>-.15 E 1.222<272c20616e64206966207468 -69732072756c65736574206d61707320746865206164647265737320746f206120717565 -75652067726f7570>-.74 F 1.39<6e616d652c207468656e2074686174207175657565 -2067726f75702069732063686f73656e2e>117 356.4 R 1.39 -<546861742069732c20746865206172>6.39 F 1.39<67756d656e7420666f7220746865 -2072756c657365742069732074686520726563697069656e74>-.18 F .79 -<6164647265737320616e642074686520726573756c742073686f756c64206265>117 -368.4 R F0<2423>3.29 E F1<666f6c6c6f>3.29 E .79 -<77656420627920746865206e616d65206f6620612071756575652067726f75702e>-.25 -F .79<4f74686572776973652c20696620746865>5.79 F 1.457<6d61696c6572206173 -736f63696174656420776974682074686520616464726573732073706563698c65732061 -2071756575652067726f75702c207468656e20746861742071756575652067726f757020 -69732063686f73656e2e>117 380.4 R<4f74686572776973652c2074686520646566> -117 392.4 Q<61756c742071756575652067726f75702069732063686f73656e2e>-.1 E -3.378<416d>142 408.6 S .878<6573736167652077697468206d756c7469706c652072 -6563697069656e74732077696c6c2062652073706c697420696620646966>-3.378 F -.879<666572656e742071756575652067726f757073206172652063686f73656e206279> --.25 F<746865206d617070696e67206f6620726563697069656e747320746f20717565 -75652067726f7570732e>117 420.6 Q 1.606<5768656e2061206d6573736167652069 -7320706c6163656420696e20612071756575652067726f75702c20616e64207468652071 -756575652067726f757020686173206d6f7265207468616e206f6e65>142 436.8 R -<71756575652c20612071756575652069732073656c65637465642072616e646f6d6c79> -117 448.8 Q<2e>-.65 E 1.633<49662061206d6573736167652077697468206d756c74 -69706c6520726563697069656e747320697320706c6163656420696e746f206120717565 -75652067726f75702077697468207468652027>142 465 R 1.633 -<7227206f7074696f6e>-.5 F 1.056<286d6178696d756d206e756d626572206f662072 -6563697069656e747320706572206d657373616765292073657420746f206120706f7369 -7469>117 477 R 1.356 -.15<76652076>-.25 H<616c7565>-.1 E/F2 10 -/Times-Italic@0 SF<4e>3.555 E F1 3.555<2c61>C 1.055 -<6e6420696620746865726520617265206d6f7265>-3.555 F<7468616e>117 489 Q F2 -<4e>2.905 E F1 .405<726563697069656e747320696e20746865206d6573736167652c -207468656e20746865206d6573736167652077696c6c2062652073706c697420696e746f -206d756c7469706c65206d657373616765732c2065616368206f66>2.905 F -<7768696368206861>117 501 Q .3 -.15<76652061>-.2 H 2.5<746d>.15 G -<6f7374>-2.5 E F2<4e>2.5 E F1<726563697069656e74732e>2.5 E .06<4e6f7469 -63653a206966206d756c7469706c652071756575652067726f7570732061726520757365 -642c20646f>142 517.2 R F0<6e6f74>2.56 E F1<6d6f>2.56 E .36 -.15 -<76652071>-.15 H .06 -<75657565208c6c65732061726f756e642c20652e672e2c20696e746f2061206469662d> -.15 F 1.435<666572656e74207175657565206469726563746f7279>117 529.2 R -6.435<2e54>-.65 G 1.435<686973206d6179206861>-6.435 F 1.735 -.15 -<76652077>-.2 H 1.435<65697264206566>.15 F 1.436<666563747320616e642063 -616e206361757365206d61696c206e6f7420746f2062652064656c69>-.25 F -.15 -<7665>-.25 G<7265642e>.15 E<5175657565208c6c657320616e64206469726563746f -726965732073686f756c642062652074726561746564206173206f706171756520616e64 -2073686f756c64206e6f74206265206d616e6970756c61746564206469726563746c79> -117 541.2 Q<2e>-.65 E F0 2.5<322e332e322e205175657565>102 565.2 R -<52756e73>2.5 E F2<73656e646d61696c>142 581.4 Q F1 1.001<686173207477> -3.501 F 3.501<6f64>-.1 G<6966>-3.501 E 1.001<666572656e742077>-.25 F -1.001<61797320746f2070726f63657373207468652071756575652873292e>-.1 F 1 -<546865208c727374206f6e6520697320746f207374617274207175657565>6.001 F -.103<72756e6e657273206166746572206365727461696e20696e74657276>117 593.4 -R .103<616c73202860>-.25 F<606e6f726d616c27>-.74 E 2.603<2771>-.74 G -.104<756575652072756e6e657273292c20746865207365636f6e64206f6e6520697320 -746f206b>-2.603 F .104<6565702071756575652072756e6e6572>-.1 F .401 -<70726f6365737365732061726f756e64202860>117 605.4 R -<6070657273697374656e7427>-.74 E 2.901<2771>-.74 G .401 -<756575652072756e6e657273292e>-2.901 F<486f>5.401 E 2.901<7774>-.25 G -2.901<6f73>-2.901 G .401<656c65637420656974686572206f662074686573652074 -7970657320697320646973637573736564>-2.901 F 1.348 -<696e2074686520617070656e6469782060>117 617.4 R 1.348 -<60434f4d4d414e44204c494e4520464c41>-.74 F<475327>-.4 E 3.848 -<272e2050657273697374656e74>-.74 F 1.348 -<71756575652072756e6e657273206861>3.848 F 1.649 -.15<76652074>-.2 H -1.349<686520616476>.15 F<616e74616765>-.25 E .055<74686174206e6f206e65> -117 629.4 R 2.555<7770>-.25 G .055 -<726f636573736573206e65656420746f20626520737061>-2.555 F .055 -<776e6564206174206365727461696e20696e74657276>-.15 F .055 -<616c733b20746865>-.25 F 2.555<796a>-.15 G .054 -<75737420736c65657020666f7220612073706563698c65642074696d65>-2.555 F -.554<616674657220746865>117 641.4 R 3.054<798c>-.15 G .554 -<6e697368656420612071756575652072756e2e>-3.054 F .554 -<416e6f7468657220616476>5.554 F .554<616e74616765206f662070657273697374 -656e742071756575652072756e6e6572732069732074686174206f6e6c79206f6e65> --.25 F .38<70726f636573732062656c6f6e67696e6720746f20612077>117 653.4 R -.38<6f726b67726f75702028612077>-.1 F .379<6f726b67726f757020697320612073 -6574206f662071756575652067726f7570732920636f6c6c656374732074686520646174 -6120666f722061>-.1 F .489<71756575652072756e20616e64207468656e206d756c74 -69706c652071756575652072756e6e6572206d617920676f206168656164207573696e67 -207468617420646174612e>117 665.4 R .489 -<546869732063616e207369676e698c63616e746c79>5.489 F .861<72656475636520 -746865206469736b20492f4f206e656365737361727920746f2072656164207468652071 -75657565208c6c657320636f6d706172656420746f207374617274696e67206d756c7469 -706c652071756575652072756e2d>117 677.4 R .549 -<6e657273206469726563746c79>117 689.4 R 5.549<2e54>-.65 G .549 -<6865697220646973616476>-5.549 F .549 -<616e7461676520697320746861742061206e65>-.25 F 3.049<7771>-.25 G .55<75 -6575652072756e206973206f6e6c79207374617274656420616674657220616c6c207175 -6575652072756e6e657273>-3.049 F 1.044<62656c6f6e67696e6720746f2061206772 -6f7570208c6e6973686564207468656972207461736b732e>117 701.4 R 1.043<496e -2063617365206f6e65206f66207468652071756575652072756e6e657273207472696573 -2064656c69>6.044 F -.15<7665>-.25 G 1.043<727920746f2061>.15 F<736c6f> -117 713.4 Q 3.282<7772>-.25 G .782<6563697069656e7420736974652061742074 -686520656e64206f6620612071756575652072756e2c20746865206e65>-3.282 F .783 -<78742071756575652072756e206d6179206265207375627374616e7469616c6c792064 -656c617965642e>-.15 F .741<496e2067656e6572616c20746869732073686f756c64 -20626520736d6f6f74686564206f75742064756520746f207468652064697374726962> -117 725.4 R .741<7574696f6e206f662074686f736520736c6f>-.2 F 3.241<776a> --.25 G .741<6f62732c20686f>-3.241 F<7765>-.25 E -.15<7665>-.25 G 1.541 --.4<722c2066>.15 H<6f72>.4 E 0 Cg EP -%%Page: 17 13 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3137>195.86 E -/F1 10/Times-Roman@0 SF .458<7369746573207769746820736d616c6c206e756d62 -6572206f6620717565756520656e74726965732074686973206d6967687420696e74726f -64756365206e6f74696361626c652064656c6179732e>117 96 R .459 -<496e2067656e6572616c2c20706572>5.459 F<2d>-.2 E<73697374656e7420717565 -75652072756e6e65727320617265206f6e6c792075736566756c20666f72207369746573 -207769746820626967207175657565732e>117 108 Q F0 2.5 -<322e332e332e204d616e75616c>102 132 R<496e746572>2.5 E -.1<7665>-.1 G -<6e74696f6e>.1 E F1 1.049<556e646572206e6f726d616c20636f6e646974696f6e73 -20746865206d61696c2071756575652077696c6c2062652070726f636573736564207472 -616e73706172656e746c79>142 148.2 R 6.049<2e48>-.65 G -.25<6f77>-6.049 G --2.15 -.25<65762065>.25 H 1.849 -.4<722c2079>.25 H<6f75>.4 E .151 -<6d6179208c6e642074686174206d616e75616c20696e74657276>117 160.2 R .151 -<656e74696f6e20697320736f6d6574696d6573206e6563657373617279>-.15 F 5.151 -<2e46>-.65 G .151<6f722065>-5.301 F .152 -<78616d706c652c2069662061206d616a6f7220686f737420697320646f>-.15 F<776e> --.25 E .104<666f72206120706572696f64206f662074696d6520746865207175657565 -206d6179206265636f6d6520636c6f676765642e>117 172.2 R<416c74686f756768> -5.103 E/F2 10/Times-Italic@0 SF<73656e646d61696c>2.603 E F1 .103 -<6f7567687420746f207265636f>2.603 F -.15<7665>-.15 G 2.603<7267>.15 G -<726163652d>-2.603 E .249<66756c6c79207768656e2074686520686f737420636f6d -65732075702c20796f75206d6179208c6e6420706572666f726d616e636520756e616363 -65707461626c792062616420696e20746865206d65616e74696d652e>117 184.2 R -<496e>5.249 E .539<74686174206361736520796f752077>117 196.2 R .538<616e -7420746f20636865636b2074686520636f6e74656e74206f662074686520717565756520 -616e64206d616e6970756c6174652069742061732065>-.1 F .538 -<78706c61696e656420696e20746865206e65>-.15 F<7874>-.15 E<7477>117 208.2 -Q 2.5<6f73>-.1 G<656374696f6e732e>-2.5 E F0 2.5 -<322e332e342e205072696e74696e67>102 232.2 R<746865207175657565>2.5 E F1 -.861<54686520636f6e74656e7473206f66207468652071756575652873292063616e20 -6265207072696e746564207573696e6720746865>142 248.4 R F2<6d61696c71>3.362 -E F1 .862<636f6d6d616e6420286f722062792073706563696679696e67>3.362 F -<746865>117 260.4 Q F02.5 E F1<8d616720746f>2.5 E F2 -<73656e646d61696c>2.5 E F1<293a>A<6d61696c71>157 276.6 Q 1.673<54686973 -2077696c6c2070726f647563652061206c697374696e67206f6620746865207175657565 -20696427>117 292.8 R 1.673<732c207468652073697a65206f6620746865206d6573 -736167652c20746865206461746520746865206d657373616765>-.55 F .527<656e74 -65726564207468652071756575652c20616e64207468652073656e64657220616e642072 -6563697069656e74732e>117 304.8 R .528<496620736861726564206d656d6f727920 -737570706f727420697320636f6d70696c656420696e2c20746865>5.527 F<8d6167> -117 316.8 Q F03.015 E F1 .514<63616e206265207573656420746f207072 -696e7420746865206e756d626572206f6620656e747269657320696e2074686520717565 -75652873292c2070726f>3.015 F .514 -<766964656420612070726f636573732075706461746573>-.15 F .54 -<74686520646174612e>117 328.8 R<486f>5.54 E<7765>-.25 E -.15<7665>-.25 G -1.34 -.4<722c2061>.15 H 3.04<7365>.4 G .54 -<78706c61696e6564206561726c696572>-3.19 F 3.041<2c74>-.4 G .541<6865206f -7574707574206d6967687420626520736c696768746c792077726f6e672c2073696e6365 -2061636365737320746f20746865>-3.041 F 1.431 -<736861726564206d656d6f7279206973206e6f74206c6f636b>117 340.8 R 3.931 -<65642e2046>-.1 F 1.431<6f722065>-.15 F 1.431<78616d706c652c2060>-.15 F -<60756e6b6e6f>-.74 E 1.431<776e206e756d626572206f6620656e747269657327> --.25 F 3.93<276d>-.74 G 1.43<696768742062652073686f>-3.93 F<776e2e>-.25 -E<54686520696e7465726e616c20636f756e746572732061726520757064617465642061 -6674657220656163682071756575652072756e20746f2074686520636f72726563742076> -117 352.8 Q<616c7565206167>-.25 E<61696e2e>-.05 E F0 2.5 -<322e332e352e2046>102 376.8 R<6f72>-.25 E<63696e6720746865207175657565> --.18 E F2<53656e646d61696c>142 393 Q F1 .352<73686f756c642072756e207468 -65207175657565206175746f6d61746963616c6c7920617420696e74657276>2.852 F -2.853<616c732e205768656e>-.25 F .353 -<7573696e67206d756c7469706c65207175657565732c2061>2.853 F .277 -<73657061726174652070726f636573732077696c6c20627920646566>117 405 R .276 -<61756c74206265206372656174656420746f2072756e2065616368206f662074686520 -71756575657320756e6c657373207468652071756575652072756e20697320696e692d> --.1 F .613<746961746564206279206120757365722077697468207468652076>117 -417 R .613<6572626f7365208d61672e>-.15 F .613<54686520616c676f726974686d -20697320746f207265616420616e6420736f7274207468652071756575652c20616e6420 -7468656e20746f>5.613 F .159<617474656d707420746f2070726f6365737320616c6c -206a6f627320696e206f72646572>117 429 R 5.159<2e57>-.55 G .159 -<68656e20697420617474656d70747320746f2072756e20746865206a6f622c>-5.159 F -F2<73656e646d61696c>2.659 E F1 .158 -<8c72737420636865636b7320746f20736565>2.659 F -<696620746865206a6f62206973206c6f636b>117 441 Q 2.5<65642e204966>-.1 F -<736f2c2069742069676e6f72657320746865206a6f62>2.5 E<2e>-.4 E .338<546865 -7265206973206e6f20617474656d707420746f20696e737572652074686174206f6e6c79 -206f6e652071756575652070726f636573736f722065>142 457.2 R .338 -<786973747320617420616e>-.15 F 2.838<7974>-.15 G .339 -<696d652c2073696e6365207468657265>-2.838 F .095<6973206e6f2067756172616e -74656520746861742061206a6f622063616e6e6f742074616b>117 469.2 R 2.595 -<6566>-.1 G<6f7265>-2.595 E -.15<7665>-.25 G 2.595<7274>.15 G 2.595 -<6f70>-2.595 G .094<726f636573732028686f>-2.595 F<7765>-.25 E -.15<7665> --.25 G -.4<722c>.15 G F2<73656e646d61696c>2.994 E F1 .094 -<646f657320696e636c756465206865757269732d>2.594 F 1.086<7469637320746f20 -74727920746f2061626f7274206a6f62732074686174206172652074616b696e67206162 -7375726420616d6f756e7473206f662074696d653b20746563686e6963616c6c79>117 -481.2 R 3.587<2c74>-.65 G 1.087<6869732076696f6c6174657320524643>-3.587 -F .462<3832312c2062>117 493.2 R .461 -<757420697320626c6573736564206279205246432031313233292e>-.2 F .461<4475 -6520746f20746865206c6f636b696e6720616c676f726974686d2c20697420697320696d -706f737369626c6520666f72206f6e65206a6f6220746f>5.461 F 1.086 -<667265657a652074686520656e746972652071756575652e>117 505.2 R<486f>6.086 -E<7765>-.25 E -.15<7665>-.25 G 1.886 -.4<722c2061>.15 H 3.586<6e75>.4 G -<6e636f6f706572617469>-3.586 E 1.386 -.15<76652072>-.25 H 1.086<65636970 -69656e7420686f7374206f7220612070726f6772616d20726563697069656e7420746861 -74>.15 F<6e65>117 517.2 Q -.15<7665>-.25 G 3.351<7272>.15 G .851 -<657475726e732063616e20616363756d756c617465206d616e>-3.351 F 3.351<7970> --.15 G .851<726f63657373657320696e20796f75722073797374656d2e>-3.351 F -<556e666f7274756e6174656c79>5.851 E 3.351<2c74>-.65 G .85 -<68657265206973206e6f20636f6d2d>-3.351 F -<706c6574656c792067656e6572616c2077>117 529.2 Q<617920746f20736f6c76>-.1 -E 2.5<6574>-.15 G<6869732e>-2.5 E .082<496e20736f6d652063617365732c2079 -6f75206d6179208c6e6420746861742061206d616a6f7220686f737420676f696e672064 -6f>142 545.4 R .083 -<776e20666f72206120636f75706c65206f662064617973206d617920637265617465> --.25 F 2.925<6170>117 557.4 S<726f686962697469>-2.925 E -.15<7665>-.25 G -.425<6c79206c6172>.15 F .425<67652071756575652e>-.18 F .424 -<546869732077696c6c20726573756c7420696e>5.425 F F2<73656e646d61696c> -2.924 E F1 .424<7370656e64696e6720616e20696e6f7264696e61746520616d6f756e -74206f662074696d65>2.924 F 1.084<736f7274696e67207468652071756575652e> -117 569.4 R 1.084<5468697320736974756174696f6e2063616e206265208c78>6.084 -F 1.084<6564206279206d6f>-.15 F 1.085<76696e672074686520717565756520746f -20612074656d706f7261727920706c61636520616e64>-.15 F .023 -<6372656174696e672061206e65>117 581.4 R 2.523<7771>-.25 G 2.523 -<756575652e20546865>-2.523 F .022<6f6c642071756575652063616e206265207275 -6e206c61746572207768656e20746865206f66>2.523 F .022 -<66656e64696e6720686f73742072657475726e7320746f20736572766963652e>-.25 F -1.6 -.8<546f2064>142 597.6 T 2.5<6f74>.8 G -<6869732c2069742069732061636365707461626c6520746f206d6f>-2.5 E .3 -.15 -<76652074>-.15 H<686520656e74697265207175657565206469726563746f72793a> -.15 E<6364202f76>157 613.8 Q<61722f73706f6f6c>-.25 E<6d76206d7175657565 -206f6d71756575653b206d6b646972206d71756575653b2063686d6f642030373030206d -7175657565>157 625.8 Q -1.1<596f>117 642 S 2.708<7573>1.1 G .208 -<686f756c64207468656e206b696c6c207468652065>-2.708 F .209<78697374696e67 -206461656d6f6e202873696e63652069742077696c6c207374696c6c2062652070726f63 -657373696e6720696e20746865206f6c642071756575652064697265632d>-.15 F -<746f72792920616e64206372656174652061206e65>117 654 Q 2.5<7764>-.25 G -<61656d6f6e2e>-2.5 E 1.6 -.8<546f2072>142 670.2 T<756e20746865206f6c6420 -6d61696c2071756575652c2069737375652074686520666f6c6c6f>.8 E -<77696e6720636f6d6d616e643a>-.25 E<2f7573722f7362696e2f73656e646d61696c -20ad43202f6574632f6d61696c2f71756575652e636620ad71>157 686.4 Q<546865> -117 702.6 Q F03.313 E F1 .813<8d61672073706563698c657320616e20616c -7465726e61746520636f6e8c6775726174696f6e208c6c65>3.313 F F0 -<71756575652e6366>3.313 E F1 .813 -<77686963682073686f756c6420726566657220746f20746865206d6f>3.313 F -.15 -<7665>-.15 G<64>.15 E<7175657565206469726563746f7279>117 714.6 Q 0 Cg EP -%%Page: 18 14 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d31382053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF 2.5<4f51>157 96 S -<756575654469726563746f72793d2f76>-2.5 E -<61722f73706f6f6c2f6f6d7175657565>-.25 E .648<616e6420746865>117 112.2 R -F03.148 E F1 .648<8d6167207361797320746f206a7573742072756e2065> -3.148 F -.15<7665>-.25 G .648<7279206a6f6220696e207468652071756575652e> -.15 F -1.1<596f>5.649 G 3.149<7563>1.1 G .649 -<616e20616c736f207370656369667920746865206d6f>-3.149 F -.15<7665>-.15 G -3.149<6471>.15 G<75657565>-3.149 E -<6469726563746f7279206f6e2074686520636f6d6d616e64206c696e65>117 124.2 Q -<2f7573722f7362696e2f73656e646d61696c20ad6f512f76>157 140.4 Q -<61722f73706f6f6c2f6f6d717565756520ad71>-.25 E -.2<6275>117 156.6 S -3.236<7474>.2 G .736 -<686973207265717569726573207468617420796f7520646f206e6f74206861>-3.236 F -1.036 -.15<76652071>-.2 H .735<756575652067726f75707320696e207468652063 -6f6e8c6775726174696f6e208c6c652c20626563617573652074686f736520617265>.15 -F 1.07<6e6f74207375626469726563746f72696573206f6620746865206d6f>117 -168.6 R -.15<7665>-.15 G 3.571<6464>.15 G<69726563746f7279>-3.571 E -6.071<2e53>-.65 G 1.071<6565207468652073656374696f6e2061626f75742060> --6.071 F 1.071<6051756575652047726f7570204465636c61726174696f6e27>-.74 F -<27>-.74 E .012<666f722064657461696c733b20796f75206d6f7374206c696b>117 -180.6 R .011<656c79206e656564206120646966>-.1 F .011<666572656e7420636f -6e8c6775726174696f6e208c6c6520746f20636f72726563746c79206465616c20776974 -6820746869732070726f626c656d2e>-.25 F<486f>117 192.6 Q<7765>-.25 E -.15 -<7665>-.25 G 1.817 -.4<722c20612070>.15 H 1.018<726f70657220636f6e8c6775 -726174696f6e206f662071756575652067726f7570732073686f756c642061>.4 F -.2 -<766f>-.2 G 1.018 -<6964208c6c6c696e67207570207175657565206469726563746f726965732c20736f>.2 -F .368<796f752073686f756c646e27>117 204.6 R 2.868<7472>-.18 G .368 -<756e20696e746f20746869732070726f626c656d2e>-2.868 F .368 -<496620796f75206861>5.368 F .667 -.15<766520612074>-.2 H<656e64656e63> -.15 E 2.867<7974>-.15 G -2.1 -.25<6f772061>-2.867 H .367<72642076>.25 F --.1<6f79>-.2 G .367<65757269736d2c20796f752063616e2075736520746865>.1 F -F0117 216.6 Q F1<8d616720746f2077>2.5 E -<61746368207768617420697320676f696e67206f6e2e>-.1 E<5768656e207468652071 -75657565206973208c6e616c6c7920656d70746965642c20796f752063616e2072656d6f> -142 232.8 Q .3 -.15<76652074>-.15 H<6865206469726563746f72793a>.15 E -<726d646972202f76>157 249 Q<61722f73706f6f6c2f6f6d7175657565>-.25 E F0 -2.5<322e332e362e2051756172616e74696e6564>102 277.2 R -<5175657565204974656d73>2.5 E F1 1.183<497420697320706f737369626c652074 -6f202271756172616e74696e6522206d61696c206d657373616765732c206f7468657277 -697365206b6e6f>142 293.4 R 1.183<776e20617320656e>-.25 F -.15<7665>-.4 G -3.683<6c6f7065732e20456e>.15 F -.15<7665>-.4 G<6c6f706573>.15 E .098 -<287175657565208c6c657329206172652073746f7265642062>117 305.4 R .097 -<7574206e6f7420636f6e7369646572656420666f722064656c69>-.2 F -.15<7665> --.25 G .097<7279206f7220646973706c617920756e6c65737320746865202271756172 -616e74696e6522207374617465206f66>.15 F 1.236<74686520656e>117 317.4 R --.15<7665>-.4 G 1.236<6c6f706520697320756e646f6e65206f722064656c69>.15 F --.15<7665>-.25 G 1.236<7279206f7220646973706c6179206f662071756172616e74 -696e6564206974656d73206973207265717565737465642e>.15 F -<51756172616e74696e6564>6.237 E 1.07 -<6d657373616765732061726520746167676564206279207573696e67206120646966> -117 329.4 R 1.07 -<666572656e74206e616d6520666f7220746865207175657565208c6c652c20276866> --.25 F 3.57<2769>.55 G 1.07<6e7374656164206f6620277166>-3.57 F 1.07 -<272c20616e64206279>.55 F<616464696e67207468652071756172616e74696e652072 -6561736f6e20746f20746865207175657565208c6c652e>117 341.4 Q<44656c69>142 -357.6 Q -.15<7665>-.25 G .323<7279206f7220646973706c6179206f662071756172 -616e74696e6564206974656d732063616e20626520726571756573746564207573696e67 -20746865>.15 F F02.823 E F1 .323<8d616720746f>2.823 F/F2 10 -/Times-Italic@0 SF<73656e646d61696c>2.823 E F1<6f72>117 369.6 Q F2 -<6d61696c71>4.278 E F1 6.778<2e41>C<64646974696f6e616c6c79>-6.778 E -4.278<2c6d>-.65 G 1.777<6573736167657320616c726561647920696e207468652071 -756575652063616e2062652071756172616e74696e6564206f7220756e71756172616e74 -696e6564>-4.278 F<7573696e6720746865206e65>117 381.6 Q<77>-.25 E F0 -2.5 E F1<8d616720746f2073656e646d61696c2e>2.5 E -.15<466f>5 G 2.5 -<7265>.15 G<78616d706c652c>-2.65 E<73656e646d61696c202d51726561736f6e20 -2d715b215d5b497c527c535d5b6d61746368737472696e675d>157 397.8 Q .874<5175 -6172616e74696e657320746865206e6f726d616c207175657565206974656d73206d6174 -6368696e67207468652063726974657269612073706563698c656420627920746865>117 -414 R F0<2d715b215d5b497c527c535d5b6d617463682d>3.375 E<737472696e675d> -117 426 Q F1<7573696e672074686520726561736f6e206769>2.5 E -.15<7665>-.25 -G 2.5<6e6f>.15 G 2.5<6e74>-2.5 G<6865>-2.5 E F02.5 E F1 2.5 -<8d61672e204c696b>2.5 F -.25<6577>-.1 G<6973652c>.25 E<73656e646d61696c -202d7151202d515b726561736f6e5d202d715b215d5b497c527c537c515d5b6d61746368 -737472696e675d>157 442.2 Q 1.164<4368616e6765207468652071756172616e7469 -6e6520726561736f6e20666f72207468652071756172616e74696e6564206974656d7320 -6d61746368696e67207468652063726974657269612073706563698c6564206279207468 -65>117 458.4 R F0 -<2d715b215d5b497c527c537c515d5b6d61746368737472696e675d>117 470.4 Q F1 -<7573696e672074686520726561736f6e206769>2.5 E -.15<7665>-.25 G 2.5<6e6f> -.15 G 2.5<6e74>-2.5 G<6865>-2.5 E F02.5 E F1 2.5<8d61672e204966> -2.5 F<7468657265206973206e6f20726561736f6e2c>2.5 E .757<756e71756172616e -74696e6520746865206d61746368696e67206974656d7320616e64206d616b>119.5 -482.4 R 3.257<6574>-.1 G .757 -<68656d206e6f726d616c207175657565206974656d732e>-3.257 F .757 -<4e6f7465207468617420746865>5.757 F F03.258 E F1<8d6167>3.258 E< -74656c6c732073656e646d61696c20746f206f706572617465206f6e2071756172616e74 -696e6564206974656d7320696e7374656164206f66206e6f726d616c206974656d732e> -117 494.4 Q F0 2.5<322e342e204469736b>87 518.4 R -<426173656420436f6e6e656374696f6e20496e66>2.5 E<6f726d6174696f6e>-.25 E -F2<53656e646d61696c>127 534.6 Q F1 .597<73746f7265732061206c6172>3.097 F -.596<676520616d6f756e74206f6620696e666f726d6174696f6e2061626f7574206561 -63682072656d6f74652073797374656d2069742068617320636f6e6e656374656420746f> --.18 F .002<696e206d656d6f7279>102 546.6 R 2.502<2e49>-.65 G 2.502<7469> --2.502 G 2.502<7370>-2.502 G .002<6f737369626c6520746f2070726573657276> --2.502 F 2.502<6573>-.15 G .002<6f6d65206f66207468697320696e666f726d6174 -696f6e206f6e206469736b2061732077656c6c2c206279207573696e6720746865> --2.502 F F0<486f73745374612d>2.503 E<747573446972>102 558.6 Q -<6563746f7279>-.18 E F1 .229<6f7074696f6e2c20736f2074686174206974206d61 -7920626520736861726564206265747765656e207365>2.73 F -.15<7665>-.25 G -.229<72616c20696e>.15 F -.2<766f>-.4 G .229<636174696f6e73206f66>.2 F F2 -<73656e646d61696c>2.729 E F1 5.229<2e54>C .229<68697320616c6c6f>-5.229 F -<7773>-.25 E .831<6d61696c20746f2062652071756575656420696d6d656469617465 -6c79206f7220736b697070656420647572696e6720612071756575652072756e20696620 -746865726520686173206265656e206120726563656e742066>102 570.6 R .832 -<61696c75726520696e>-.1 F .372 -<636f6e6e656374696e6720746f20612072656d6f7465206d616368696e652e>102 -582.6 R .371<4e6f74653a20696e666f726d6174696f6e2061626f757420612072656d -6f74652073797374656d2069732073746f72656420696e2061208c6c652077686f7365> -5.371 F .693<706174686e616d6520636f6e7369737473206f662074686520636f6d70 -6f6e656e7473206f662074686520686f73746e616d6520696e207265>102 594.6 R --.15<7665>-.25 G .694<727365206f72646572>.15 F 5.694<2e46>-.55 G .694 -<6f722065>-5.844 F .694<78616d706c652c2074686520696e666f726d612d>-.15 F -1.103<74696f6e20666f72>102 606.6 R F0<686f73742e6578616d706c652e636f6d> -3.603 E F1 1.103<69732073746f72656420696e>3.603 F F0 -<636f6d2e2f6578616d706c652e2f686f7374>3.603 E F1 6.102<2e46>C 1.102 -<6f7220746f702d6c65>-6.252 F -.15<7665>-.25 G 3.602<6c64>.15 G 1.102 -<6f6d61696e73206c696b>-3.602 F<65>-.1 E F0<636f6d>3.602 E F1<74686973> -3.602 E 1.381<63616e206372656174652061206c6172>102 618.6 R 1.381<676520 -6e756d626572206f66207375626469726563746f72696573207768696368206f6e20736f -6d65208c6c6573797374656d732063616e2065>-.18 F 1.382 -<78686175737420736f6d65206c696d6974732e>-.15 F<4d6f72656f>102 630.6 Q --.15<7665>-.15 G 2.433 -.4<722c2074>.15 H 1.632<686520706572666f726d616e -6365206f66206c6f6f6b75707320696e206469726563746f727920776974682074686f75 -73616e6473206f6620656e74726965732063616e2062652066>.4 F 1.632 -<6169726c7920736c6f>-.1 F<77>-.25 E<646570656e64696e67206f6e20746865208c -6c6573797374656d20696d706c656d656e746174696f6e2e>102 642.6 Q 1.438 -<4164646974696f6e616c6c7920656e61626c696e67>127 658.8 R F0 -<53696e676c65546872>3.939 E<65616444656c69>-.18 E -.1<7665>-.1 G<7279>.1 -E F1 1.439<68617320746865206164646564206566>3.939 F 1.439 -<66656374206f662073696e676c652d746872656164696e67206d61696c>-.25 F -<64656c69>102 670.8 Q -.15<7665>-.25 G 1.611 -<727920746f20612064657374696e6174696f6e2e>.15 F 1.611<546869732063616e20 -62652071756974652068656c7066756c206966207468652072656d6f7465206d61636869 -6e652069732072756e6e696e6720616e20534d5450>6.611 F<73657276>102 682.8 Q -1.01<6572207468617420697320656173696c79206f>-.15 F -.15<7665>-.15 G -1.011<726c6f61646564206f722063616e6e6f7420616363657074206d6f726520746861 -6e20612073696e676c6520636f6e6e656374696f6e20617420612074696d652c2062>.15 -F 1.011<75742063616e>-.2 F .458<636175736520736f6d65206d6573736167657320 -746f2062652070756e74656420746f2061206675747572652071756575652072756e2e> -102 694.8 R .458<497420616c736f206170706c69657320746f>5.458 F F2<616c6c> -2.958 E F1 .457<686f7374732c20736f2073657474696e672074686973>2.958 F -.281<6265636175736520796f75206861>102 706.8 R .581 -.15<7665206f>-.2 H -.281<6e65206d616368696e65206f6e207369746520746861742072756e7320736f6d65 -20736f667477>.15 F .281<617265207468617420697320656173696c79206f>-.1 F --.15<7665>-.15 G .282<7272756e2063616e206361757365206d61696c>.15 F .315 -<746f206f7468657220686f73747320746f20626520736c6f>102 718.8 R .315 -<77656420646f>-.25 F 2.815<776e2e204966>-.25 F .315 -<74686973206f7074696f6e206973207365742c20796f752070726f6261626c792077> -2.815 F .315<616e7420746f2073657420746865>-.1 F F0 -<4d696e5175657565416765>2.815 E 0 Cg EP -%%Page: 19 15 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3139>195.86 E -/F1 10/Times-Roman@0 SF .871 -<6f7074696f6e2061732077656c6c20616e642072756e207468652071756575652066> -102 96 R .871<6169726c79206672657175656e746c793b20746869732077>-.1 F -.872<6179206a6f627320746861742061726520736b6970706564206265636175736520 -616e6f74686572>-.1 F/F2 10/Times-Italic@0 SF<73656e646d61696c>102 108 Q -F1 .364<69732074616c6b696e6720746f207468652073616d6520686f73742077696c6c -206265207472696564206167>2.864 F .363<61696e20717569636b6c79207261746865 -72207468616e206265696e672064656c6179656420666f722061206c6f6e67>-.05 F -<74696d652e>102 120 Q 1.098<546865206469736b20626173656420686f737420696e -666f726d6174696f6e2069732073746f72656420696e2061207375626469726563746f72 -79206f6620746865>127 136.2 R F0<6d7175657565>3.599 E F1 1.099 -<6469726563746f72792063616c6c6564>3.599 F F0<2e686f737473746174>102 -150.2 Q/F3 7/Times-Roman@0 SF<37>-4 I F1 6.75<2e52>4 K<656d6f>-6.75 E -1.749<76696e672074686973206469726563746f727920616e6420697473207375626469 -726563746f726965732068617320616e206566>-.15 F 1.749 -<666563742073696d696c617220746f20746865>-.25 F F2<707572>4.249 E -.1 -<6765>-.37 G<73746174>.1 E F1 1.215 -<636f6d6d616e6420616e6420697320636f6d706c6574656c7920736166652e>102 -162.2 R<486f>6.215 E<7765>-.25 E -.15<7665>-.25 G -.4<722c>.15 G F2 -<707572>4.115 E -.1<6765>-.37 G<73746174>.1 E F1 1.215 -<6f6e6c792072656d6f>3.715 F -.15<7665>-.15 G 3.715<7365>.15 G 1.215 -<787069726564202854>-3.865 F<696d656f75742e686f737473746174757329>-.35 E -3.54<646174612e20546865>102 174.2 R 1.039<696e666f726d6174696f6e20696e20 -7468657365206469726563746f726965732063616e206265207065727573656420776974 -6820746865>3.54 F F2<686f737473746174>3.539 E F1 1.039 -<636f6d6d616e642c2077686963682077696c6c>3.539 F .065<696e64696361746520 -74686520686f7374206e616d652c20746865206c617374206163636573732c20616e6420 -74686520737461747573206f662074686174206163636573732e>102 186.2 R .065 -<416e20617374657269736b20696e20746865206c656674206d6f737420636f6c2d> -5.065 F<756d6e20696e6469636174657320746861742061>102 198.2 Q F2 -<73656e646d61696c>2.5 E F1 -<70726f636573732063757272656e746c79206861732074686520686f7374206c6f636b> -2.5 E<656420666f72206d61696c2064656c69>-.1 E -.15<7665>-.25 G<7279>.15 E -<2e>-.65 E .53<546865206469736b20626173656420636f6e6e656374696f6e20696e -666f726d6174696f6e2069732074726561746564207468652073616d652077>127 214.4 -R .53<6179206173206d656d6f727920626173656420636f6e6e656374696f6e>-.1 F -.536<696e666f726d6174696f6e20666f722074686520707572706f7365206f66207469 -6d656f7574732e>102 226.4 R .536<427920646566>5.536 F .536 -<61756c742c20696e666f726d6174696f6e2061626f757420686f73742066>-.1 F .536 -<61696c757265732069732076>-.1 F .536<616c696420666f72203330>-.25 F 2.5 -<6d696e757465732e2054686973>102 238.4 R -<63616e2062652061646a7573746564207769746820746865>2.5 E F0 -.18<5469>2.5 -G<6d656f75742e686f7374737461747573>.18 E F1<6f7074696f6e2e>2.5 E 1.51<54 -686520636f6e6e656374696f6e20696e666f726d6174696f6e2073746f726564206f6e20 -6469736b206d61792062652065>127 254.6 R 1.51<78706972656420617420616e> --.15 F 4.01<7974>-.15 G 1.51<696d65207769746820746865>-4.01 F F2<707572> -4.01 E -.1<6765>-.37 G<73746174>.1 E F1 2.092 -<636f6d6d616e64206f7220627920696e>102 266.6 R -.2<766f>-.4 G 2.092 -<6b696e672073656e646d61696c207769746820746865>.2 F F04.592 E F1 -4.592<7377697463682e20546865>4.592 F 2.093 -<636f6e6e656374696f6e20696e666f726d6174696f6e206d6179206265>4.593 F -<766965>102 278.6 Q<776564207769746820746865>-.25 E F2<686f737473746174> -2.5 E F1<636f6d6d616e64206f7220627920696e>2.5 E -.2<766f>-.4 G -<6b696e672073656e646d61696c207769746820746865>.2 E F02.5 E F1 -<7377697463682e>2.5 E F0 2.5<322e352e20546865>87 302.6 R<536572>2.5 E -<7669636520537769746368>-.1 E F1 1.416<54686520696d706c656d656e74617469 -6f6e206f66206365727461696e2073797374656d20736572766963657320737563682061 -7320686f737420616e642075736572206e616d65206c6f6f6b757020697320636f6e2d> -127 318.8 R 1.321 -<74726f6c6c6564206279207468652073657276696365207377697463682e>102 330.8 -R 1.321<49662074686520686f7374206f7065726174696e672073797374656d20737570 -706f72747320737563682061207377697463682c20616e642073656e646d61696c>6.321 -F<6b6e6f>102 342.8 Q .384<77732061626f75742069742c>-.25 F F2 -<73656e646d61696c>2.884 E F1 .383<77696c6c2075736520746865206e617469> -2.884 F .683 -.15<7665207665>-.25 H 2.883<7273696f6e2e20556c747269782c> -.15 F .383<536f6c617269732c20616e6420444543204f53462f31206172652065> -2.883 F<78616d706c6573>-.15 E<6f6620737563682073797374656d73>102 356.8 Q -F3<38>-4 I F1<2e>4 I .88<49662074686520756e6465726c79696e67206f70657261 -74696e672073797374656d20646f6573206e6f7420737570706f72742061207365727669 -6365207377697463682028652e672e2c2053756e4f5320342e582c2048502d>127 373 R -.211<55582c2042534429207468656e>102 385 R F2<73656e646d61696c>2.711 E F1 -.212<77696c6c2070726f>2.711 F .212 -<766964652061207374756220696d706c656d656e746174696f6e2e>-.15 F<546865> -5.212 E F0<536572>2.712 E<7669636553776974636846696c65>-.1 E F1 .212 -<6f7074696f6e20706f696e7473>2.712 F .937<746f20746865206e616d65206f6620 -61208c6c652074686174206861732074686520736572766963652064658c6e6974696f6e -732e>102 397 R .937<45616368206c696e652068617320746865206e616d65206f6620 -61207365727669636520616e6420746865>5.937 F<706f737369626c6520696d706c65 -6d656e746174696f6e73206f66207468617420736572766963652e>102 409 Q -.15 -<466f>5 G 2.5<7265>.15 G<78616d706c652c20746865208c6c653a>-2.65 E 12.94 -<686f73747320646e73>142 425.2 R<8c6c6573206e6973>2.5 E 6.84 -<616c6961736573208c6c6573>142 437.2 R<6e6973>2.5 E .328 -<77696c6c2061736b>102 453.4 R F2<73656e646d61696c>2.828 E F1 .328<746f20 -6c6f6f6b20666f7220686f73747320696e2074686520446f6d61696e204e616d65205379 -7374656d208c7273742e>2.828 F .329 -<4966207468652072657175657374656420686f7374206e616d65206973>5.329 F .379 -<6e6f7420666f756e642c206974207472696573206c6f63616c208c6c65732c20616e64 -20696620746861742066>102 465.4 R .379 -<61696c73206974207472696573204e49532e>-.1 F<53696d696c61726c79>5.379 E -2.879<2c77>-.65 G .379 -<68656e206c6f6f6b696e6720666f7220616c69617365732069742077696c6c>-2.879 F -<74727920746865206c6f63616c208c6c6573208c72737420666f6c6c6f>102 477.4 Q -<776564206279204e49532e>-.25 E .493<4e6f746963653a2073696e6365>127 493.6 -R F2<73656e646d61696c>2.993 E F1 .493<6d75737420616363657373204d58207265 -636f72647320666f7220636f7272656374206f7065726174696f6e2c2069742077696c6c -2075736520444e53206966206974206973>2.993 F -<636f6e8c677572656420696e20746865>102 505.6 Q F0<536572>2.5 E -<7669636553776974636846696c65>-.1 E F1 2.5<8c6c652e2048656e6365>2.5 F -<616e20656e747279206c696b>2.5 E<65>-.1 E 12.94<686f737473208c6c6573>142 -521.8 R<646e73>2.5 E<77696c6c206e6f742061>102 538 Q -.2<766f>-.2 G -<696420444e53206c6f6f6b7570732065>.2 E -.15<7665>-.25 G 2.5<6e69>.15 G -2.5<666168>-2.5 G -<6f73742063616e20626520666f756e6420696e202f6574632f686f7374732e>-2.5 E -1.27<5365727669636520737769746368657320617265206e6f7420636f6d706c657465 -6c7920696e7465>127 554.2 R 3.769<6772617465642e2046>-.15 F 1.269 -<6f722065>-.15 F 1.269<78616d706c652c2064657370697465207468652066>-.15 F -1.269<61637420746861742074686520686f7374>-.1 F .293 -<656e747279206c697374656420696e207468652061626f>102 566.2 R .593 -.15 -<7665206578>-.15 H .294<616d706c652073706563698c657320746f206c6f6f6b2069 -6e204e49532c206f6e2053756e4f5320746869732077>.15 F<6f6e27>-.1 E 2.794 -<7468>-.18 G .294<617070656e206265636175736520746865>-2.794 F -<73797374656d20696d706c656d656e746174696f6e206f66>102 578.2 Q F2 -.1 -<6765>2.5 G<74686f737462796e616d65>.1 E F1<28332920646f65736e27>1.666 E -2.5<7475>-.18 G<6e6465727374616e6420746869732e>-2.5 E F0 2.5 -<322e362e20546865>87 602.2 R<416c696173204461746162617365>2.5 E F1 2.074 -<416674657220726563697069656e742061646472657373657320617265207265616420 -66726f6d2074686520534d545020636f6e6e656374696f6e206f7220636f6d6d616e6420 -6c696e6520746865>127 618.4 R 4.573<7961>-.15 G<7265>-4.573 E .599<706172 -7365642062792072756c6573657420302c207768696368206d757374207265736f6c76> -102 630.4 R 3.099<6574>-.15 G 3.099<6f617b>-3.099 G F2<6d61696c6572> --3.099 E F1<2c>A F2<686f7374>3.099 E F1<2c>A F2<61646472>3.1 E<657373> --.37 E F1 3.1<7d74>C 3.1<7269706c652e204966>-3.1 F .6 -<746865208d6167732073656c6563746564206279>3.1 F<746865>102 642.4 Q F2 -<6d61696c6572>3.1 E F1 .6<696e636c75646520746865>3.1 F F0<41>3.1 E F1 .6 -<28616c69617361626c6529208d61672c20746865>3.1 F F2<61646472>3.1 E -<657373>-.37 E F1 .599 -<70617274206f662074686520747269706c65206973206c6f6f6b>3.1 F .599 -<656420757020617320746865206b>-.1 F .899 -.15<65792028>-.1 H<692e652e2c> -.15 E 1.045<746865206c6566742068616e6420736964652920696e2074686520616c69 -61732064617461626173652e>102 654.4 R 1.045<4966207468657265206973206120 -6d617463682c2074686520616464726573732069732064656c657465642066726f6d2074 -68652073656e64>6.045 F .32 LW 76 664 72 664 DL 80 664 76 664 DL 84 664 -80 664 DL 88 664 84 664 DL 92 664 88 664 DL 96 664 92 664 DL 100 664 96 -664 DL 104 664 100 664 DL 108 664 104 664 DL 112 664 108 664 DL 116 664 -112 664 DL 120 664 116 664 DL 124 664 120 664 DL 128 664 124 664 DL 132 -664 128 664 DL 136 664 132 664 DL 140 664 136 664 DL 144 664 140 664 DL -148 664 144 664 DL 152 664 148 664 DL 156 664 152 664 DL 160 664 156 664 -DL 164 664 160 664 DL 168 664 164 664 DL 172 664 168 664 DL 176 664 172 -664 DL 180 664 176 664 DL 184 664 180 664 DL 188 664 184 664 DL 192 664 -188 664 DL 196 664 192 664 DL 200 664 196 664 DL 204 664 200 664 DL 208 -664 204 664 DL 212 664 208 664 DL 216 664 212 664 DL/F4 5/Times-Roman@0 -SF<37>93.6 674.4 Q/F5 8/Times-Roman@0 SF -<546869732069732074686520757375616c2076>3.2 I<616c7565206f6620746865>-.2 -E/F6 8/Times-Bold@0 SF<486f7374537461747573446972>2 E<6563746f7279>-.144 -E F5<6f7074696f6e3b2069742063616e2c206f6620636f757273652c20676f20616e>2 -E<79776865726520796f75206c696b>-.12 E 2<6569>-.08 G 2<6e79>-2 G -<6f7572208c6c6573797374656d2e>-2 E F4<38>93.6 688 Q F5 .107<48502d555820 -31302068617320736572766963652073776974636820737570706f72742c2062>3.2 J -.108<75742073696e636520746865204150497320617265206170706172656e746c7920 -6e6f742061>-.16 F -.2<7661>-.16 G .108 -<696c61626c6520696e20746865206c6962726172696573>.2 F/F7 8/Times-Italic@0 -SF<73656e646d61696c>2.108 E F5 .108<646f6573206e6f742075736520746865> -2.108 F<6e617469>72 700.8 Q .24 -.12<76652073>-.2 H -<6572766963652073776974636820696e20746869732072656c656173652e>.12 E 0 Cg -EP -%%Page: 20 16 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d32302053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF .776<717565756520616e6420616c6c2061646472657373 -6573206f6e207468652072696768742068616e642073696465206f662074686520616c69 -61732061726520616464656420696e20706c616365206f662074686520616c6961732074 -6861742077>102 96 R<6173>-.1 E 2.682<666f756e642e2054686973>102 108 R -.182<697320612072656375727369>2.682 F .483 -.15<7665206f>-.25 H .183<70 -65726174696f6e2c20736f20616c696173657320666f756e6420696e2074686520726967 -68742068616e642073696465206f662074686520616c696173206172652073696d696c61 -726c79>.15 F -.15<6578>102 120 S<70616e6465642e>.15 E 3.718 -<54686520616c6961732064617461626173652065>127 136.2 R 3.718 -<786973747320696e207477>-.15 F 6.218<6f66>-.1 G 6.218 -<6f726d732e204f6e65>-6.218 F 3.718<69732061207465>6.218 F 3.718 -<787420666f726d2c206d61696e7461696e656420696e20746865208c6c65>-.15 F/F2 -10/Times-Italic@0 SF<2f6574632f6d61696c2f616c69617365732e>102 148.2 Q F1 -<54686520616c696173657320617265206f662074686520666f726d>5 E -<6e616d653a206e616d65312c206e616d65322c202e2e2e>142 164.4 Q<4f6e6c79206c -6f63616c206e616d6573206d617920626520616c69617365643b20652e672e2c>102 -180.6 Q<6572696340707265702e61692e4d4954>142 196.8 Q -<2e4544553a20657269634043532e4265726b>-.74 E<656c65>-.1 E -.65<792e>-.15 -G<454455>.65 E 1.087<77696c6c206e6f74206861>102 215 R 1.388 -.15 -<76652074>-.2 H 1.088<68652064657369726564206566>.15 F 1.088 -<66656374202865>-.25 F 1.088<7863657074206f6e20707265702e61692e4d4954> --.15 F 1.088<2e4544552c20616e6420746865>-.74 F 3.588<7970>-.15 G 1.088 -<726f6261626c7920646f6e27>-3.588 F 3.588<7477>-.18 G 1.088 -<616e74206d6529>-3.688 F/F3 7/Times-Roman@0 SF<39>-4 I F1<2e>4 I .986<41 -6c6961736573206d617920626520636f6e74696e756564206279207374617274696e6720 -616e>102 227 R 3.486<7963>-.15 G .986<6f6e74696e756174696f6e206c696e6573 -20776974682061207370616365206f72206120746162206f722062792070757474696e67 -2061>-3.486 F .776 -<6261636b736c617368206469726563746c79206265666f726520746865206e65>102 -239 R 3.276<776c696e652e20426c616e6b>-.25 F .776 -<6c696e657320616e64206c696e6573206265>3.276 F .776 -<67696e6e696e6720776974682061207368617270207369676e202899239a2920617265> --.15 F<636f6d6d656e74732e>102 251 Q .651 -<546865207365636f6e6420666f726d2069732070726f63657373656420627920746865> -127 269.2 R F2<6e64626d>3.15 E F1<283329>1.666 E F3<3130>-4 I F1 .65 -<6f7220746865204265726b>3.15 4 N<656c65>-.1 E 3.15<7944>-.15 G 3.15 -<426c>-3.15 G<696272617279>-3.15 E 5.65<2e54>-.65 G .65 -<68697320666f726d20697320696e>-5.65 F .794<746865208c6c65>102 281.2 R F2 -<2f6574632f6d61696c2f616c69617365732e6462>3.294 E F1 .794 -<286966207573696e67204e4557444229206f72>3.294 F F2 -<2f6574632f6d61696c2f616c69617365732e646972>3.294 E F1<616e64>3.294 E F2 -<2f6574632f6d61696c2f616c69617365732e7061>3.294 E<67>-.1 E F1<286966> -3.294 E 1.127<7573696e67204e44424d292e>102 293.2 R 1.127 -<546869732069732074686520666f726d2074686174>6.127 F F2<73656e646d61696c> -3.627 E F1 1.127<61637475616c6c79207573657320746f207265736f6c76>3.627 F -3.626<6561>-.15 G 3.626<6c69617365732e2054686973>-3.626 F 1.126 -<746563686e69717565206973>3.626 F<7573656420746f20696d70726f>102 305.2 Q -.3 -.15<76652070>-.15 H<6572666f726d616e63652e>.15 E<54686520636f6e7472 -6f6c206f6620736561726368206f726465722069732061637475616c6c79207365742062 -79207468652073657276696365207377697463682e>127 321.4 Q -<457373656e7469616c6c79>5 E 2.5<2c74>-.65 G<686520656e747279>-2.5 E 2.5 -<4f41>142 337.6 S<6c69617346696c653d7377697463683a616c6961736573>-2.5 E -.926<697320616c>102 353.8 R -.1<7761>-.1 G .927<797320616464656420617320 -746865208c72737420616c69617320656e7472793b20616c736f2c20746865208c727374 -20616c696173208c6c65206e616d6520776974686f7574206120636c6173732028652e67 -2e2c20776974686f7574>.1 F .269<996e69733a9a206f6e207468652066726f6e7429 -2077696c6c206265207573656420617320746865206e616d65206f6620746865208c6c65 -20666f7220612060>102 365.8 R<608c6c657327>-.74 E 2.768<2765>-.74 G .268 -<6e74727920696e2074686520616c6961736573207377697463682e>-2.768 F -.15 -<466f>5.268 G<72>.15 E -.15<6578>102 377.8 S<616d706c652c20696620746865 -20636f6e8c6775726174696f6e208c6c6520636f6e7461696e73>.15 E 2.5<4f41>142 -394 S<6c69617346696c653d2f6574632f6d61696c2f616c6961736573>-2.5 E -<616e642074686520736572766963652073776974636820636f6e7461696e73>102 -410.2 Q 6.84<616c6961736573206e6973>142 426.4 R -<8c6c6573206e6973706c7573>2.5 E 1.164<7468656e20616c69617365732077696c6c -208c72737420626520736561726368656420696e20746865204e49532064617461626173 -652c207468656e20696e202f6574632f6d61696c2f616c69617365732c207468656e2069 -6e20746865204e49532b>102 442.6 R<64617461626173652e>102 454.6 Q -1.1 -<596f>127 470.8 S 2.5<7563>1.1 G<616e20616c736f20757365>-2.5 E/F4 9 -/Times-Roman@0 SF<4e4953>2.5 E F1<2d626173656420616c696173208c6c65732e>A --.15<466f>5 G 2.5<7265>.15 G -<78616d706c652c207468652073706563698c636174696f6e3a>-2.65 E 2.5<4f41>142 -487 S<6c69617346696c653d2f6574632f6d61696c2f616c6961736573>-2.5 E 2.5 -<4f41>142 499 S -<6c69617346696c653d6e69733a6d61696c2e616c6961736573406d79>-2.5 E -<2e6e69732e646f6d61696e>-.65 E .143<77696c6c208c727374207365617263682074 -6865202f6574632f6d61696c2f616c6961736573208c6c6520616e64207468656e207468 -65206d6170206e616d656420996d61696c2e616c69617365739a20696e20996d79>102 -515.2 R<2e6e69732e646f6d61696e9a2e>-.65 E -.8<5761>102 527.2 S .589 -<726e696e673a20696620796f752062>.8 F .589<75696c6420796f7572206f>-.2 F -<776e>-.25 E F4<4e4953>3.089 E F1 .589 -<2d626173656420616c696173208c6c65732c206265207375726520746f2070726f>B -.59<7669646520746865>-.15 F F03.09 E F1 .59<8d616720746f>3.09 F F2 -<6d616b>3.09 E<6564626d>-.1 E F1<283829>A .159 -<746f206d61702075707065722063617365206c65747465727320696e20746865206b> -102 539.2 R -.15<6579>-.1 G 2.659<7374>.15 G 2.659<6f6c>-2.659 G -.25 -<6f77>-2.659 G .159<657220636173653b206f74686572776973652c20616c69617365 -7320776974682075707065722063617365206c65747465727320696e207468656972>.25 -F<6e616d65732077>102 551.2 Q<6f6e27>-.1 E 2.5<746d>-.18 G -<6174636820696e636f6d696e67206164647265737365732e>-2.5 E<4164646974696f -6e616c208d6167732063616e2062652061646465642061667465722074686520636f6c6f -6e2065>127 567.4 Q<786163746c79206c696b>-.15 E 2.5<6561>-.1 G F0<4b>A F1 -<6c696e65208a20666f722065>2.5 E<78616d706c653a>-.15 E 2.5<4f41>142 583.6 -S<6c69617346696c653d6e69733aad4e206d61696c2e616c6961736573406d79>-2.5 E -<2e6e69732e646f6d61696e>-.65 E<77696c6c20736561726368207468652061707072 -6f707269617465204e4953206d617020616e6420616c>102 599.8 Q -.1<7761>-.1 G -<797320696e636c756465206e756c6c20627974657320696e20746865206b>.1 E -.15 -<6579>-.1 G 5<2e41>-.5 G<6c736f3a>-5 E 2.5<4f41>142 616 S -<6c69617346696c653d6e69733aad66206d61696c2e616c6961736573406d79>-2.5 E -<2e6e69732e646f6d61696e>-.65 E<77696c6c20707265>102 632.2 Q -.15<7665> --.25 G<6e742073656e646d61696c2066726f6d20646f>.15 E -<776e636173696e6720746865206b>-.25 E .3 -.15<65792062>-.1 H -<65666f72652074686520616c696173206c6f6f6b75702e>.15 E .32 LW 76 665.2 72 -665.2 DL 80 665.2 76 665.2 DL 84 665.2 80 665.2 DL 88 665.2 84 665.2 DL -92 665.2 88 665.2 DL 96 665.2 92 665.2 DL 100 665.2 96 665.2 DL 104 -665.2 100 665.2 DL 108 665.2 104 665.2 DL 112 665.2 108 665.2 DL 116 -665.2 112 665.2 DL 120 665.2 116 665.2 DL 124 665.2 120 665.2 DL 128 -665.2 124 665.2 DL 132 665.2 128 665.2 DL 136 665.2 132 665.2 DL 140 -665.2 136 665.2 DL 144 665.2 140 665.2 DL 148 665.2 144 665.2 DL 152 -665.2 148 665.2 DL 156 665.2 152 665.2 DL 160 665.2 156 665.2 DL 164 -665.2 160 665.2 DL 168 665.2 164 665.2 DL 172 665.2 168 665.2 DL 176 -665.2 172 665.2 DL 180 665.2 176 665.2 DL 184 665.2 180 665.2 DL 188 -665.2 184 665.2 DL 192 665.2 188 665.2 DL 196 665.2 192 665.2 DL 200 -665.2 196 665.2 DL 204 665.2 200 665.2 DL 208 665.2 204 665.2 DL 212 -665.2 208 665.2 DL 216 665.2 212 665.2 DL/F5 5/Times-Roman@0 SF<39>93.6 -675.6 Q/F6 8/Times-Roman@0 SF<41637475616c6c79>3.2 I 2<2c61>-.52 G .24 --.12<6e79206d>-2 H<61696c6572207468617420686173207468652060>.12 E 1.776 --.888<4127206d>-.64 H<61696c6572208d6167207365742077696c6c207065726d6974 -20616c696173696e673b2074686973206973206e6f726d616c6c79206c696d6974656420 -746f20746865206c6f63616c206d61696c6572>.888 E<2e>-.44 E F5<3130>93.6 -689.2 Q F6<546865>3.2 I/F7 8/Times-Italic@0 SF<6764626d>2 E F6 -<7061636b61676520646f6573206e6f742077>2 E<6f726b2e>-.08 E 0 Cg EP -%%Page: 21 17 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3231>195.86 E -2.5<322e362e312e20526562>102 96 R -<75696c64696e672074686520616c696173206461746162617365>-.2 E/F1 10 -/Times-Roman@0 SF<546865>142 112.2 Q/F2 10/Times-Italic@0 SF<68617368> -3.079 E F1<6f72>3.079 E F2<64626d>3.079 E F1 -.15<7665>3.079 G .579 -<7273696f6e206f6620746865206461746162617365206d617920626520726562>.15 F -.58<75696c742065>-.2 F .58<78706c696369746c792062792065>-.15 F -.15 -<7865>-.15 G .58<637574696e672074686520636f6d2d>.15 F<6d616e64>117 124.2 -Q<6e65>157 140.4 Q -.1<7761>-.25 G<6c6961736573>.1 E -<546869732069732065717569>117 156.6 Q -.25<7661>-.25 G -<6c656e7420746f206769>.25 E<76696e67>-.25 E F2<73656e646d61696c>2.5 E F1 -<746865>2.5 E F02.5 E F1<8d61673a>2.5 E -<2f7573722f7362696e2f73656e646d61696c20ad6269>157 172.8 Q 1.77 -<496620796f75206861>142 193.2 R 2.07 -.15<7665206d>-.2 H 1.77<756c746970 -6c6520616c6961736573206461746162617365732073706563698c65642c20746865>.15 -F F04.27 E F1 1.77<8d616720726562>4.27 F 1.77 -<75696c647320616c6c20746865206461746162617365>-.2 F -<747970657320697420756e6465727374616e64732028666f722065>117 205.2 Q -<78616d706c652c2069742063616e20726562>-.15 E -<75696c64204e44424d206461746162617365732062>-.2 E -<7574206e6f74204e495320646174616261736573292e>-.2 E F0 2.5 -<322e362e322e2050>102 229.2 R<6f74656e7469616c207072>-.2 E<6f626c656d73> --.18 E F1 1.131<5468657265206172652061206e756d626572206f662070726f626c65 -6d7320746861742063616e206f6363757220776974682074686520616c69617320646174 -61626173652e>142 245.4 R<546865>6.131 E 3.631<7961>-.15 G 1.131 -<6c6c20726573756c74>-3.631 F 1.104<66726f6d2061>117 257.4 R F2 -<73656e646d61696c>3.604 E F1 1.104 -<70726f6365737320616363657373696e67207468652044424d2076>3.604 F 1.103 -<657273696f6e207768696c65206974206973206f6e6c79207061727469616c6c792062> --.15 F 3.603<75696c742e2054686973>-.2 F<63616e>3.603 E 1.248 -<68617070656e20756e646572207477>117 269.4 R 3.748<6f63>-.1 G 1.248<6972 -63756d7374616e6365733a204f6e652070726f6365737320616363657373657320746865 -206461746162617365207768696c6520616e6f746865722070726f63657373206973> --3.748 F<726562>117 281.4 Q .518 -<75696c64696e672069742c206f72207468652070726f6365737320726562>-.2 F .518 -<75696c64696e67207468652064617461626173652064696573202864756520746f2062 -65696e67206b696c6c6564206f7220612073797374656d20637261736829>-.2 F -<6265666f726520636f6d706c6574696e672074686520726562>117 293.4 Q -<75696c642e>-.2 E .401<53656e646d61696c2068617320746872656520746563686e -697175657320746f2074727920746f2072656c6965>142 309.6 R .701 -.15 -<76652074>-.25 H .401<686573652070726f626c656d732e>.15 F .401 -<46697273742c2069742069676e6f72657320696e7465727275707473>5.401 F .045 -<7768696c6520726562>117 321.6 R .045 -<75696c64696e67207468652064617461626173653b20746869732061>-.2 F -.2 -<766f>-.2 G .045<696473207468652070726f626c656d206f6620736f6d656f6e6520 -61626f7274696e67207468652070726f63657373206c6561>.2 F .045<76696e672061> --.2 F .176<7061727469616c6c7920726562>117 333.6 R .176 -<75696c742064617461626173652e>-.2 F .177<5365636f6e642c206974206c6f636b -732074686520646174616261736520736f75726365208c6c6520647572696e6720746865 -20726562>5.176 F .177<75696c64208a2062>-.2 F .177<75742074686174>-.2 F -.813<6d6179206e6f742077>117 345.6 R .813<6f726b206f>-.1 F -.15<7665>-.15 -G 3.313<724e>.15 G .813 -<4653206f7220696620746865208c6c6520697320756e7772697461626c652e>-3.313 F -.812<54686972642c2061742074686520656e64206f662074686520726562>5.812 F -.812<75696c64206974206164647320616e>-.2 F -<616c696173206f662074686520666f726d>117 357.6 Q<403a2040>157 373.8 Q -.336<287768696368206973206e6f74206e6f726d616c6c79206c65>117 390 R -.05 -<6761>-.15 G 2.836<6c292e204265666f7265>.05 F F2<73656e646d61696c>2.836 -E F1 .336<77696c6c20616363657373207468652064617461626173652c206974206368 -65636b7320746f20696e737572652074686174>2.836 F<7468697320656e7472792065> -117 404 Q<7869737473>-.15 E/F3 7/Times-Roman@0 SF<3131>-4 I F1<2e>4 I F0 -2.5<322e362e332e204c697374>102 428 R -.1<6f77>2.5 G<6e657273>.1 E F1 -.401<496620616e206572726f72206f6363757273206f6e2073656e64696e6720746f20 -61206365727461696e20616464726573732c207361792099>142 444.2 R F2<78>A F1 -<9a2c>A F2<73656e646d61696c>2.9 E F1 .4 -<77696c6c206c6f6f6b20666f7220616e20616c696173>2.9 F .417 -<6f662074686520666f726d20996f>117 456.2 R<776e6572>-.25 E<2d>-.2 E F2 -<78>A F1 2.917<9a74>C 2.917<6f72>-2.917 G<65636569>-2.917 E .717 -.15 -<76652074>-.25 H .418<6865206572726f72732e>.15 F .418<546869732069732074 -79706963616c6c792075736566756c20666f722061206d61696c696e67206c6973742077 -6865726520746865>5.418 F 1.117<7375626d6974746572206f6620746865206c6973 -7420686173206e6f20636f6e74726f6c206f>117 468.2 R -.15<7665>-.15 G 3.617 -<7274>.15 G 1.116<6865206d61696e74656e616e6365206f6620746865206c69737420 -697473656c663b20696e2074686973206361736520746865206c697374>-3.617 F -<6d61696e7461696e65722077>117 480.2 Q<6f756c6420626520746865206f>-.1 E -<776e6572206f6620746865206c6973742e>-.25 E -.15<466f>5 G 2.5<7265>.15 G -<78616d706c653a>-2.65 E<756e69782d77697a617264733a2065726963407563626172 -70612c20776e6a406d6f6e65742c206e6f7375636875736572>157 496.4 Q<2c>-.4 E -<73616d406d617469737365>193 508.4 Q -.25<6f77>157 520.4 S<6e6572>.25 E -<2d756e69782d77697a617264733a20756e69782d77697a617264732d72657175657374> --.2 E -<756e69782d77697a617264732d726571756573743a20657269634075636261727061> -157 532.4 Q -.1<776f>117 548.6 S .689<756c642063617573652099657269634075 -6362617270619a20746f2067657420746865206572726f7220746861742077696c6c206f -63637572207768656e20736f6d656f6e652073656e647320746f20756e69782d77697a2d> -.1 F<617264732064756520746f2074686520696e636c7573696f6e206f6620996e6f73 -756368757365729a206f6e20746865206c6973742e>117 560.6 Q .959 -<4c697374206f>142 576.8 R .959 -<776e65727320616c736f2063617573652074686520656e>-.25 F -.15<7665>-.4 G -.959 -<6c6f70652073656e646572206164647265737320746f206265206d6f64698c65642e> -.15 F .958<54686520636f6e74656e7473206f6620746865>5.958 F -.25<6f77>117 -588.8 S .428<6e657220616c69617320617265207573656420696620746865>.25 F -2.928<7970>-.15 G .428<6f696e7420746f20612073696e676c652075736572>-2.928 -F 2.928<2c6f>-.4 G .429<746865727769736520746865206e616d65206f6620746865 -20616c69617320697473656c6620697320757365642e>-2.928 F -.15<466f>117 -600.8 S 3.455<7274>.15 G .955 -<68697320726561736f6e2c20616e6420746f206f6265>-3.455 F 3.454<7949>-.15 G -.954<6e7465726e657420636f6e>-3.454 F -.15<7665>-.4 G .954 -<6e74696f6e732c2074686520996f>.15 F<776e6572>-.25 E .954 -<2d9a2061646472657373206e6f726d616c6c7920706f696e747320617420746865>-.2 -F .503<992d726571756573749a20616464726573733b20746869732063617573657320 -6d6573736167657320746f20676f206f7574207769746820746865207479706963616c20 -496e7465726e657420636f6e>117 612.8 R -.15<7665>-.4 G .504 -<6e74696f6e206f66207573696e67>.15 F -.74<6060>117 624.8 S F2<6c697374> -.74 E F1<2d7265717565737427>A 2.5<2761>-.74 G 2.5<7374>-2.5 G -<68652072657475726e20616464726573732e>-2.5 E F0 2.5<322e372e2055736572> -87 648.8 R<496e66>2.5 E<6f726d6174696f6e204461746162617365>-.25 E F1 -3.636<54686973206f7074696f6e20697320646570726563617465642c20757365207669 -7274757365727461626c6520616e642067656e65726963737461626c6520696e73746561 -642061732065>127 665 R 3.635<78706c61696e656420696e>-.15 F F2 -<63662f524541444d45>102 677 Q F1 5.06<2e49>C 2.56<6679>-5.06 G .06 -<6f75206861>-2.56 F .36 -.15<76652061207665>-.2 H .06<7273696f6e206f66> -.15 F F2<73656e646d61696c>2.56 E F1 .06<7769746820746865207573657220696e -666f726d6174696f6e20646174616261736520636f6d70696c656420696e2c20616e64> -2.56 F .32 LW 76 686.6 72 686.6 DL 80 686.6 76 686.6 DL 84 686.6 80 -686.6 DL 88 686.6 84 686.6 DL 92 686.6 88 686.6 DL 96 686.6 92 686.6 DL -100 686.6 96 686.6 DL 104 686.6 100 686.6 DL 108 686.6 104 686.6 DL 112 -686.6 108 686.6 DL 116 686.6 112 686.6 DL 120 686.6 116 686.6 DL 124 -686.6 120 686.6 DL 128 686.6 124 686.6 DL 132 686.6 128 686.6 DL 136 -686.6 132 686.6 DL 140 686.6 136 686.6 DL 144 686.6 140 686.6 DL 148 -686.6 144 686.6 DL 152 686.6 148 686.6 DL 156 686.6 152 686.6 DL 160 -686.6 156 686.6 DL 164 686.6 160 686.6 DL 168 686.6 164 686.6 DL 172 -686.6 168 686.6 DL 176 686.6 172 686.6 DL 180 686.6 176 686.6 DL 184 -686.6 180 686.6 DL 188 686.6 184 686.6 DL 192 686.6 188 686.6 DL 196 -686.6 192 686.6 DL 200 686.6 196 686.6 DL 204 686.6 200 686.6 DL 208 -686.6 204 686.6 DL 212 686.6 208 686.6 DL 216 686.6 212 686.6 DL/F4 5 -/Times-Roman@0 SF<3131>93.6 697 Q/F5 8/Times-Roman@0 SF<546865>3.2 I/F6 -8/Times-Bold@0 SF<416c69617357>2 E<616974>-.52 E F5<6f7074696f6e20697320 -726571756972656420696e2074686520636f6e8c6775726174696f6e20666f7220746869 -7320616374696f6e20746f206f63637572>2 E 4<2e54>-.44 G -<6869732073686f756c64206e6f726d616c6c792062652073706563698c65642e>-4 E 0 -Cg EP -%%Page: 22 18 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d32322053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF .765<796f75206861>102 96 R 1.065 -.15<76652073> --.2 H .764<706563698c6564206f6e65206f72206d6f72652064617461626173657320 -7573696e6720746865>.15 F F0<55>3.264 E F1 .764<6f7074696f6e2c2074686520 -6461746162617365732077696c6c20626520736561726368656420666f722061>3.264 F -/F2 10/Times-Italic@0 SF<75736572>102 108 Q F1 -<3a6d61696c64726f7020656e747279>A 5<2e49>-.65 G 2.5<6666>-5 G<6f756e642c -20746865206d61696c2077696c6c2062652073656e7420746f207468652073706563698c -656420616464726573732e>-2.5 E F0 2.5<322e382e2050>87 132 R<6572>-.2 E -<2d557365722046>-.37 E<6f7277617264696e6720282e66>-.25 E -<6f72776172642046696c657329>-.25 E F1 .12 -<417320616e20616c7465726e617469>127 148.2 R .42 -.15<76652074>-.25 H -2.62<6f74>.15 G .12<686520616c6961732064617461626173652c20616e>-2.62 F -2.62<7975>-.15 G .121<736572206d6179207075742061208c6c652077697468207468 -65206e616d6520992e666f7277>-2.62 F .121<6172649a20696e20686973>-.1 F -.205<6f722068657220686f6d65206469726563746f7279>102 160.2 R 5.205<2e49> --.65 G 2.705<6674>-5.205 G .205<686973208c6c652065>-2.705 F -<78697374732c>-.15 E F2<73656e646d61696c>2.705 E F1 .205<72656469726563 -7473206d61696c20666f722074686174207573657220746f20746865206c697374206f66 -20616464726573736573>2.705 F .664 -<6c697374656420696e20746865202e666f7277>102 172.2 R .664 -<617264208c6c652e>-.1 F .665 -<4e6f7465207468617420616c6961736573206172652066756c6c792065>5.664 F .665 -<7870616e646564206265666f726520666f7277>-.15 F .665 -<617264208c6c657320617265207265666572656e6365642e>-.1 F -.15<466f>102 -184.2 S 2.5<7265>.15 G<78616d706c652c2069662074686520686f6d652064697265 -63746f727920666f72207573657220996d636b757369636b9a206861732061202e666f72 -77>-2.65 E<617264208c6c65207769746820636f6e74656e74733a>-.1 E -<6d636b757369636b4065726e6965>142 200.4 Q<6b69726b4063616c646572>142 -212.4 Q<7468656e20616e>102 228.6 Q 2.5<796d>-.15 G<61696c2061727269>-2.5 -E<76696e6720666f7220996d636b757369636b9a2077696c6c2062652072656469726563 -74656420746f207468652073706563698c6564206163636f756e74732e>-.25 E -<41637475616c6c79>127 244.8 Q 3.375<2c74>-.65 G .874<686520636f6e8c6775 -726174696f6e208c6c652064658c6e657320612073657175656e6365206f66208c6c656e -616d657320746f20636865636b2e>-3.375 F .874<427920646566>5.874 F .874 -<61756c742c2074686973206973>-.1 F .516<746865207573657227>102 256.8 R -3.016<732e>-.55 G<666f7277>-3.016 E .517<617264208c6c652c2062>-.1 F .517 -<75742063616e2062652064658c6e656420746f206265206d6f72652067656e6572616c -6c79207573696e6720746865>-.2 F F0 -.25<466f>3.017 G<727761726450>.25 E -<617468>-.1 E F1 3.017<6f7074696f6e2e204966>3.017 F .183 -<796f75206368616e676520746869732c20796f752077696c6c206861>102 268.8 R -.482 -.15<76652074>-.2 H 2.682<6f69>.15 G .182<6e666f726d20796f75722075 -7365722062617365206f6620746865206368616e67653b202e666f7277>-2.682 F .182 -<617264206973207072657474792077656c6c20696e636f72>-.1 F<2d>-.2 E -<706f726174656420696e746f2074686520636f6c6c65637469>102 280.8 Q .3 -.15 -<76652073>-.25 H<7562636f6e7363696f75732e>.15 E F0 2.5 -<322e392e205370656369616c>87 304.8 R<486561646572204c696e6573>2.5 E F1 -<5365>127 321 Q -.15<7665>-.25 G 1.897 -<72616c20686561646572206c696e6573206861>.15 F 2.197 -.15<76652073>-.2 H -1.897<70656369616c20696e746572707265746174696f6e732064658c6e656420627920 -74686520636f6e8c6775726174696f6e208c6c652e>.15 F<4f7468657273>6.898 E -<6861>102 333 Q 1.206 -.15<76652069>-.2 H .906 -<6e746572707265746174696f6e732062>.15 F .906<75696c7420696e746f>-.2 F F2 -<73656e646d61696c>3.406 E F1 .905<746861742063616e6e6f74206265206368616e -67656420776974686f7574206368616e67696e672074686520636f64652e>3.406 F -<5468657365>5.905 E -.2<6275>102 345 S -<696c742d696e73206172652064657363726962656420686572652e>.2 E F0 2.5 -<322e392e312e20457272>102 369 R<6f72732d54>-.18 E<6f3a>-.92 E F1 .22 -<4966206572726f7273206f6363757220616e>142 385.2 R .22<797768657265206475 -72696e672070726f63657373696e672c2074686973206865616465722077696c6c206361 -757365206572726f72206d6573736167657320746f20676f20746f>-.15 F -<746865206c6973746564206164647265737365732e>117 397.2 Q -<5468697320697320696e74656e64656420666f72206d61696c696e67206c697374732e> -5 E .385<546865204572726f72732d54>142 413.4 R .385 -<6f3a206865616465722077>-.8 F .384<6173206372656174656420696e2074686520 -626164206f6c642064617973207768656e2055554350206469646e27>-.1 F 2.884 -<7475>-.18 G .384<6e6465727374616e6420746865>-2.884 F .889 -<64697374696e6374696f6e206265747765656e20616e20656e>117 425.4 R -.15 -<7665>-.4 G .889<6c6f706520616e642061206865616465723b20746869732077>.15 -F .889<61732061206861636b20746f2070726f>-.1 F .89 -<7669646520776861742073686f756c64206e6f>-.15 F 3.39<7762>-.25 G<65>-3.39 -E .81<7061737365642061732074686520656e>117 437.4 R -.15<7665>-.4 G .81 -<6c6f70652073656e64657220616464726573732e>.15 F .809 -<49742073686f756c6420676f2061>5.81 F -.1<7761>-.15 G 4.609 -.65 -<792e2049>.1 H 3.309<7469>.65 G 3.309<736f>-3.309 G .809 -<6e6c79207573656420696620746865>-3.309 F F0<557365457272>3.309 E -<6f727354>-.18 E<6f>-.92 E F1<6f7074696f6e206973207365742e>117 449.4 Q -<546865204572726f72732d54>142 465.6 Q<6f3a20686561646572206973206f66>-.8 -E<8c6369616c6c79206465707265636174656420616e642077696c6c20676f2061>-.25 -E -.1<7761>-.15 G 2.5<7969>.1 G 2.5<6e6166>-2.5 G -<75747572652072656c656173652e>-2.5 E F0 2.5<322e392e322e2041>102 489.6 R -<70706172>-.25 E<656e746c792d54>-.18 E<6f3a>-.92 E F1 .044<524643203832 -32207265717569726573206174206c65617374206f6e6520726563697069656e74208c65 -6c64202854>142 505.8 R .045 -<6f3a2c2043633a2c206f72204263633a206c696e652920696e2065>-.8 F -.15<7665> --.25 G .045<7279206d6573736167652e>.15 F .045<49662061>5.045 F .562<6d65 -737361676520636f6d657320696e2077697468206e6f20726563697069656e7473206c69 -7374656420696e20746865206d657373616765207468656e>117 517.8 R F2 -<73656e646d61696c>3.062 E F1 .562 -<77696c6c2061646a7573742074686520686561646572>3.062 F .085<626173656420 -6f6e2074686520994e6f526563697069656e74416374696f6e9a206f7074696f6e2e>117 -529.8 R .085<4f6e65206f662074686520706f737369626c6520616374696f6e732069 -7320746f2061646420616e2099>5.085 F<4170706172656e746c792d>-.8 E -.8 -<546f>117 541.8 S<3a9a20686561646572206c696e6520666f7220616e>.8 E 2.5 -<7972>-.15 G<6563697069656e74732069742069732061>-2.5 E -.1<7761>-.15 G -<7265206f662e>.1 E .911<546865204170706172656e746c792d54>142 558 R .911< -6f3a20686561646572206973206e6f6e2d7374616e6461726420616e6420697320626f74 -68206465707265636174656420616e64207374726f6e676c7920646973636f7572>-.8 F -<2d>-.2 E<616765642e>117 570 Q F0 2.5<322e392e332e205072>102 594 R -<65636564656e6365>-.18 E F1 .425<54686520507265636564656e63653a20686561 -6465722063616e2062652075736564206173206120637275646520636f6e74726f6c206f -66206d657373616765207072696f72697479>142 610.2 R 5.425<2e49>-.65 G 2.925 -<7474>-5.425 G .425<7765616b7320746865>-2.925 F .181<736f7274206f726465 -7220696e2074686520717565756520616e642063616e20626520636f6e8c677572656420 -746f206368616e676520746865206d6573736167652074696d656f75742076>117 622.2 -R 2.681<616c7565732e20546865>-.25 F<70726563652d>2.681 E .234 -<64656e6365206f662061206d65737361676520616c736f20636f6e74726f6c7320686f> -117 634.2 R 2.734<7764>-.25 G<656c69>-2.734 E -.15<7665>-.25 G .235<7279 -20737461747573206e6f74698c636174696f6e73202844534e7329206172652070726f63 -657373656420666f722074686174>.15 F<6d6573736167652e>117 646.2 Q F0 2.5 -<322e31302e204944454e54>87 670.2 R<5072>2.5 E -<6f746f636f6c20537570706f7274>-.18 E F2<53656e646d61696c>127 686.4 Q F1 -.746<737570706f72747320746865204944454e542070726f746f636f6c206173206465 -8c6e656420696e2052464320313431332e>3.246 F .745 -<4e6f746520746861742074686520524643207374617465732061>5.745 F 1.36 -<636c69656e742073686f756c642077>102 698.4 R 1.36<616974206174206c656173 -74203330207365636f6e647320666f72206120726573706f6e73652e>-.1 F 1.361 -<54686520646566>6.361 F 1.361<61756c742054>-.1 F 1.361 -<696d656f75742e6964656e742069732035207365636f6e6473206173>-.35 F<6d616e> -102 710.4 Q 3.024<7973>-.15 G .524<69746573206861>-3.024 F .824 -.15 -<76652061>-.2 H .524<646f7074656420746865207072616374696365206f66206472 -6f7070696e67204944454e5420717565726965732e>.15 F .524 -<5468697320686173206c65616420746f2064656c6179732070726f636573732d>5.524 -F .451<696e67206d61696c2e>102 722.4 R .452<416c74686f756768207468697320 -656e68616e636573206964656e74698c636174696f6e206f662074686520617574686f72 -206f6620616e20656d61696c206d65737361676520627920646f696e6720612060>5.451 -F<6063616c6c>-.74 E 0 Cg EP -%%Page: 23 19 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3233>195.86 E -/F1 10/Times-Roman@0 SF<6261636b27>102 96 Q 3.628<2774>-.74 G 3.628 -<6f74>-3.628 G 1.128<6865206f726967696e6174696e672073797374656d20746f20 -696e636c75646520746865206f>-3.628 F 1.127<776e6572206f662061207061727469 -63756c61722054435020636f6e6e656374696f6e20696e20746865206175646974>-.25 -F .164<747261696c20697420697320696e206e6f2073656e736520706572666563743b -20612064657465726d696e656420666f72>102 108 R .164<6765722063616e20656173 -696c792073706f6f6620746865204944454e542070726f746f636f6c2e>-.18 F .165 -<54686520666f6c6c6f>5.165 F<772d>-.25 E -<696e67206465736372697074696f6e2069732065>102 120 Q -<78636572707465642066726f6d2052464320313431333a>-.15 E 2.5 -<362e205365637572697479>127 136.2 R<436f6e73696465726174696f6e73>2.5 E -.006<54686520696e666f726d6174696f6e2072657475726e6564206279207468697320 -70726f746f636f6c206973206174206d6f737420617320747275737477>127 152.4 R -<6f727468>-.1 E 2.505<7961>-.05 G 2.505<7374>-2.505 G .005 -<686520686f73742070726f>-2.505 F .005<766964696e67206974204f52>-.15 F -.273<746865206f72>127 164.4 R -.05<6761>-.18 G .273 -<6e697a6174696f6e206f7065726174696e672074686520686f73742e>.05 F -.15 -<466f>5.273 G 2.773<7265>.15 G .274 -<78616d706c652c206120504320696e20616e206f70656e206c616220686173206665> --2.923 F 2.774<7769>-.25 G 2.774<6661>-2.774 G .574 -.15<6e792063>-2.774 -H<6f6e74726f6c73>.15 E .987<6f6e20697420746f20707265>127 176.4 R -.15 -<7665>-.25 G .986<6e74206120757365722066726f6d206861>.15 F .986 -<76696e6720746869732070726f746f636f6c2072657475726e20616e>-.2 F 3.486 -<7969>-.15 G .986<64656e74698c65722074686520757365722077>-3.486 F 3.486 -<616e74732e204c696b>-.1 F<652d>-.1 E 1.441<776973652c206966207468652068 -6f737420686173206265656e20636f6d70726f6d697365642074686520696e666f726d61 -74696f6e2072657475726e6564206d617920626520636f6d706c6574656c79206572726f -2d>127 188.4 R<6e656f757320616e64206d69736c656164696e672e>127 200.4 Q -.521<546865204964656e74698c636174696f6e2050726f746f636f6c206973206e6f74 -20696e74656e64656420617320616e20617574686f72697a6174696f6e206f7220616363 -65737320636f6e74726f6c2070726f746f636f6c2e>127 216.6 R<4174>5.52 E 1.036 -<626573742c2069742070726f>127 228.6 R 1.037<766964657320736f6d6520616464 -6974696f6e616c206175646974696e6720696e666f726d6174696f6e2077697468207265 -737065637420746f2054435020636f6e6e656374696f6e732e>-.15 F<4174>6.037 E --.1<776f>127 240.6 S<7273742c2069742063616e2070726f>.1 E<76696465206d69 -736c656164696e672c20696e636f72726563742c206f72206d616c6963696f75736c7920 -696e636f727265637420696e666f726d6174696f6e2e>-.15 E 1.006<54686520757365 -206f662074686520696e666f726d6174696f6e2072657475726e65642062792074686973 -2070726f746f636f6c20666f72206f74686572207468616e206175646974696e67206973 -207374726f6e676c79206469732d>127 256.8 R 2.697 -<636f7572616765642e2053706563698c63616c6c79>127 268.8 R 2.697<2c75>-.65 -G .197<73696e67204964656e74698c636174696f6e2050726f746f636f6c20696e666f -726d6174696f6e20746f206d616b>-2.697 F 2.697<6561>-.1 G .197 -<636365737320636f6e74726f6c20646563692d>-2.697 F .514<73696f6e73202d2065 -697468657220617320746865207072696d617279206d6574686f642028692e652e2c206e -6f206f7468657220636865636b7329206f7220617320616e2061646a756e637420746f20 -6f74686572206d6574686f6473>127 280.8 R -<6d617920726573756c7420696e2061207765616b>127 292.8 Q -<656e696e67206f66206e6f726d616c20686f7374207365637572697479>-.1 E<2e> --.65 E 1.778<416e204964656e74698c636174696f6e2073657276>127 309 R 1.778 -<6572206d6179207265>-.15 F -.15<7665>-.25 G 1.778<616c20696e666f726d6174 -696f6e2061626f75742075736572732c20656e7469746965732c206f626a65637473206f -722070726f636573736573>.15 F .337<7768696368206d69676874206e6f726d616c6c -7920626520636f6e7369646572656420707269>127 321 R -.25<7661>-.25 G 2.836 -<74652e20416e>.25 F .336<4964656e74698c636174696f6e2073657276>2.836 F -.336<65722070726f>-.15 F .336<76696465732073657276696365207768696368> --.15 F .806<6973206120726f75676820616e616c6f67206f66207468652043616c6c65 -7249442073657276696365732070726f>127 333 R .806<766964656420627920736f6d -652070686f6e6520636f6d70616e69657320616e64206d616e>-.15 F 3.306<796f> --.15 G<66>-3.306 E 1.398<7468652073616d6520707269>127 345 R -.25<7661> --.25 G 1.698 -.15<63792063>.25 H 1.398 -<6f6e73696465726174696f6e7320616e64206172>.15 F 1.398<67756d656e74732074 -686174206170706c7920746f207468652043616c6c657249442073657276696365206170 -706c7920746f>-.18 F 3.545<4964656e74698c636174696f6e2e204966>127 357 R -1.045<796f752077>3.545 F<6f756c646e27>-.1 E 3.545<7472>-.18 G 1.045 -<756e206120228c6e676572222073657276>-3.545 F 1.046 -<65722064756520746f20707269>-.15 F -.25<7661>-.25 G 1.346 -.15<63792063> -.25 H 1.046<6f6e73696465726174696f6e7320796f75206d6179>.15 F<6e6f742077> -127 369 Q<616e7420746f2072756e20746869732070726f746f636f6c2e>-.1 E .377 -<496e20736f6d6520636173657320796f75722073797374656d206d6179206e6f742077> -102 385.2 R .377<6f726b2070726f7065726c792077697468204944454e5420737570 -706f72742064756520746f20612062>-.1 F .376 -<756720696e20746865205443502f4950>-.2 F 3.675 -<696d706c656d656e746174696f6e2e20546865>102 397.2 R 1.175<73796d70746f6d -732077696c6c206265207468617420666f7220736f6d6520686f7374732074686520534d -545020636f6e6e656374696f6e2077696c6c20626520636c6f736564>3.675 F .566 -<616c6d6f737420696d6d6564696174656c79>102 409.2 R 5.566<2e49>-.65 G -3.066<6674>-5.566 G .565 -<6869732069732074727565206f7220696620796f7520646f206e6f742077>-3.066 F -.565<616e7420746f20757365204944454e54>-.1 F 3.065<2c79>-.74 G .565 -<6f752073686f756c642073657420746865204944454e54>-3.065 F<74696d656f7574 -20746f207a65726f3b20746869732077696c6c2064697361626c6520746865204944454e -542070726f746f636f6c2e>102 421.2 Q F0 2.5<332e20415247554d454e5453>72 -445.2 R F1 .017<54686520636f6d706c657465206c697374206f66206172>112 461.4 -R .017<67756d656e747320746f>-.18 F/F2 10/Times-Italic@0 SF -<73656e646d61696c>2.517 E F1 .017<69732064657363726962656420696e20646574 -61696c20696e20417070656e64697820412e>2.517 F .018 -<536f6d6520696d706f7274616e74>5.018 F<6172>87 473.4 Q -<67756d656e7473206172652064657363726962656420686572652e>-.18 E F0 2.5 -<332e312e205175657565>87 497.4 R<496e746572>2.5 E -.1<7661>-.1 G<6c>.1 E -F1 .455<54686520616d6f756e74206f662074696d65206265747765656e20666f726b69 -6e6720612070726f6365737320746f2072756e207468726f756768207468652071756575 -652069732064658c6e656420627920746865>127 513.6 R F02.955 E F1 -2.675<8d61672e204966>102 525.6 R .175 -<796f752072756e20776974682064656c69>2.675 F -.15<7665>-.25 G .175 -<7279206d6f64652073657420746f>.15 F F0<69>2.675 E F1<6f72>2.675 E F0<62> -2.675 E F1 .176<746869732063616e2062652072656c617469>2.675 F -.15<7665> --.25 G .176<6c79206c6172>.15 F .176 -<67652c2073696e63652069742077696c6c206f6e6c792062652072656c2d>-.18 F --.25<657661>102 537.6 S .207<6e74207768656e206120686f737420746861742077> -.25 F .207<617320646f>-.1 F .207<776e20636f6d6573206261636b2075702e>-.25 -F .206<496620796f752072756e20696e>5.207 F F0<71>2.706 E F1 .206 -<6d6f64652069742073686f756c642062652072656c617469>2.706 F -.15<7665>-.25 -G .206<6c792073686f72742c>.15 F 1.039<73696e63652069742064658c6e65732074 -6865206d6178696d756d20616d6f756e74206f662074696d6520746861742061206d6573 -73616765206d61792073697420696e207468652071756575652e>102 549.6 R 1.039 -<2853656520616c736f20746865>6.039 F -<4d696e5175657565416765206f7074696f6e2e29>102 561.6 Q 1.336<524643203131 -32332073656374696f6e20352e332e312e312073617973207468617420746869732076> -127 577.8 R 1.335<616c75652073686f756c64206265206174206c6561737420333020 -6d696e757465732028616c74686f7567682074686174>-.25 F -<70726f6261626c7920646f65736e27>102 589.8 Q 2.5<746d>-.18 G<616b>-2.5 E -2.5<6573>-.1 G<656e736520696620796f75207573652060>-2.5 E -<6071756575652d6f6e6c7927>-.74 E 2.5<276d>-.74 G<6f6465292e>-2.5 E .364 -<4e6f746963653a20746865206d65616e696e67206f662074686520696e74657276>127 -606 R .364<616c2074696d6520646570656e6473206f6e2077686574686572206e6f72 -6d616c2071756575652072756e6e657273206f72207065727369732d>-.25 F .208 -<74656e742071756575652072756e6e6572732061726520757365642e>102 618 R -.15 -<466f>5.208 G 2.708<7274>.15 G .208<686520666f726d6572>-2.708 F 2.708 -<2c69>-.4 G 2.708<7469>-2.708 G 2.708<7374>-2.708 G .208<68652074696d65 -206265747765656e2073756273657175656e7420737461727473206f6620612071756575 -652072756e2e>-2.708 F -.15<466f>102 630 S 3.349<7274>.15 G .849 -<6865206c6174746572>-3.349 F 3.349<2c69>-.4 G 3.349<7469>-3.349 G 3.349 -<7374>-3.349 G .849<68652074696d652073656e646d61696c2077>-3.349 F .85<61 -69747320616674657220612070657273697374656e742071756575652072756e6e657220 -686173208c6e6973686564206974732077>-.1 F .85<6f726b20746f>-.1 F .411 -<737461727420746865206e65>102 642 R .411<7874206f6e652e>-.15 F .411<4865 -6e636520666f722070657273697374656e742071756575652072756e6e65727320746869 -7320696e74657276>5.411 F .41<616c2073686f756c642062652076>-.25 F .41 -<657279206c6f>-.15 F 1.71 -.65<772c2074>-.25 H .41 -<79706963616c6c79206e6f>.65 F<6d6f7265207468616e207477>102 654 Q 2.5 -<6f6d>-.1 G<696e757465732e>-2.5 E F0 2.5<332e322e204461656d6f6e>87 678 R -<4d6f6465>2.5 E F1 .084<496620796f7520616c6c6f>127 694.2 R 2.584<7769> --.25 G .084<6e636f6d696e67206d61696c206f>-2.584 F -.15<7665>-.15 G 2.585 -<7261>.15 G 2.585<6e49>-2.585 G .085 -<504320636f6e6e656374696f6e2c20796f752073686f756c64206861>-2.585 F .385 --.15<766520612064>-.2 H .085<61656d6f6e2072756e6e696e672e>.15 F -<54686973>5.085 E .07<73686f756c642062652073657420627920796f7572>102 -706.2 R F2<2f6574632f72>2.57 E<63>-.37 E F1 .07 -<8c6c65207573696e6720746865>2.57 F F02.57 E F1 2.569 -<8d61672e20546865>2.57 F F02.569 E F1 .069 -<8d616720616e6420746865>2.569 F F02.569 E F1 .069 -<8d6167206d617920626520636f6d62696e6564>2.569 F -<696e206f6e652063616c6c3a>102 718.2 Q 0 Cg EP -%%Page: 24 20 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d32342053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF -<2f7573722f7362696e2f73656e646d61696c20ad626420ad7133306d>142 96 Q 1.14 -<416e20616c7465726e617469>127 116.4 R 1.44 -.15<76652061>-.25 H 1.14 -<7070726f61636820697320746f20696e>.15 F -.2<766f>-.4 G 1.341 -.1 -<6b652073>.2 H 1.141<656e646d61696c2066726f6d>.1 F/F2 10/Times-Italic@0 -SF<696e657464>3.641 E F1 1.141<283829202875736520746865>B F0 -3.641 E F1 1.1412.5 F 1.34<73656e646d61 -696c20746f20737065616b20534d5450206f6e20697473207374616e6461726420696e70 -757420616e64206f757470757420616e6420746f2072756e206173204d54>102 128.4 R -3.839<41292e2054686973>-.93 F -.1<776f>3.839 G 1.339<726b7320616e64>.1 F -<616c6c6f>102 140.4 Q .322<777320796f7520746f2077726170>-.25 F F2 -<73656e646d61696c>2.822 E F1 .323 -<696e20612054435020777261707065722070726f6772616d2c2062>2.823 F .323 -<7574206d617920626520612062697420736c6f>-.2 F .323 -<7765722073696e63652074686520636f6e8c67752d>-.25 F .346 -<726174696f6e208c6c652068617320746f2062652072652d72656164206f6e2065>102 -152.4 R -.15<7665>-.25 G .346 -<7279206d657373616765207468617420636f6d657320696e2e>.15 F .345<49662079 -6f7520646f20746869732c20796f75207374696c6c206e65656420746f206861>5.346 F -.645 -.15<76652061>-.2 H F2<73656e646d61696c>102 164.4 Q F1 -<72756e6e696e6720746f208d757368207468652071756575653a>2.5 E -<2f7573722f7362696e2f73656e646d61696c20ad7133306d>142 180.6 Q F0 2.5 -<332e332e2046>87 208.8 R<6f72>-.25 E<63696e6720746865205175657565>-.18 E -F1 .04<496e20736f6d6520636173657320796f75206d6179208c6e6420746861742074 -68652071756575652068617320676f7474656e20636c6f6767656420666f7220736f6d65 -20726561736f6e2e>127 225 R -1.1<596f>5.04 G 2.54<7563>1.1 G .04 -<616e20666f726365>-2.54 F 3.185<6171>102 237 S .685 -<756575652072756e207573696e6720746865>-3.185 F F03.184 E F1 .684 -<8d6167202877697468206e6f2076>3.184 F 3.184<616c7565292e204974>-.25 F -.684<697320656e7465727461696e696e6720746f2075736520746865>3.184 F F0 -3.184 E F1 .684<8d6167202876>3.184 F .684 -<6572626f736529207768656e>-.15 F<7468697320697320646f6e6520746f2077>102 -249 Q<6174636820776861742068617070656e733a>-.1 E -<2f7573722f7362696e2f73656e646d61696c20ad7120ad76>142 265.2 Q -1.1<596f> -127 285.6 S 2.999<7563>1.1 G .499<616e20616c736f206c696d697420746865206a -6f627320746f2074686f73652077697468206120706172746963756c6172207175657565 -206964656e74698c6572>-2.999 F 3<2c72>-.4 G .5 -<6563697069656e742c2073656e646572>-3 F 3<2c71>-.4 G<756172>-3 E<2d>-.2 E -2.097<616e74696e6520726561736f6e2c206f722071756575652067726f757020757369 -6e67206f6e65206f6620746865207175657565206d6f64698c6572732e>102 297.6 R --.15<466f>7.097 G 4.597<7265>.15 G 2.096 -<78616d706c652c2099ad71526265726b>-4.747 F<656c65>-.1 E<799a>-.15 E -1.363<726573747269637473207468652071756575652072756e20746f206a6f62732074 -686174206861>102 309.6 R 1.664 -.15<76652074>-.2 H 1.364 -<686520737472696e6720996265726b>.15 F<656c65>-.1 E 1.364<799a20736f6d65> --.15 F 1.364<776865726520696e206f6e65206f662074686520726563697069656e74> --.25 F 2.843<6164647265737365732e2053696d696c61726c79>102 321.6 R 2.843 -<2c99>-.65 G .342-2.843 F .408<756c6172207175657565 -206964656e74698c6572732c20616e642099ad7151737472696e679a206c696d69747320 -697420746f20706172746963756c61722071756172616e74696e656420726561736f6e73 -20616e64206f6e6c79206f70657261746564>102 333.6 R 1.748<6f6e207175617261 -6e74696e6564207175657565206974656d732c20616e642099ad7147737472696e679a20 -6c696d69747320697420746f206120706172746963756c61722071756575652067726f75 -702e>102 345.6 R 1.747<546865206e616d6564>6.747 F .388 -<71756575652067726f75702077696c6c2062652072756e2065>102 357.6 R -.15 -<7665>-.25 G 2.888<6e69>.15 G 2.888<6669>-2.888 G 2.888<7469>-2.888 G -2.888<7373>-2.888 G .388<657420746f206861>-2.888 F .688 -.15 -<766520302072>-.2 H 2.888<756e6e6572732e2059>.15 F .388 -<6f75206d617920616c736f20706c61636520616e>-1.1 F F0<21>2.889 E F1 .389 -<6265666f726520746865>5.389 F F0<49>2.889 E F1<6f72>2.889 E F0<52>102 -369.6 Q F1<6f72>3.053 E F0<53>3.053 E F1<6f72>3.053 E F0<51>3.053 E F1 -.552<746f20696e6469636174652074686174206a6f627320617265206c696d69746564 -20746f206e6f7420696e636c7564696e67206120706172746963756c6172207175657565 -206964656e74698c6572>3.052 F 3.052<2c72>-.4 G<6563697069656e74>-3.052 E -.251<6f722073656e646572>102 381.6 R 5.251<2e46>-.55 G .251<6f722065> --5.401 F .252<78616d706c652c2099ad71215273656174746c659a206c696d69747320 -7468652071756575652072756e20746f206a6f6273207468617420646f206e6f74206861> --.15 F .552 -.15<76652074>-.2 H .252<686520737472696e672099736561742d> -.15 F .297<746c659a20736f6d65>102 393.6 R .297<776865726520696e206f6e65 -206f662074686520726563697069656e74206164647265737365732e>-.25 F .297<53 -686f756c6420796f75206e65656420746f207465726d696e617465207468652071756575 -65206a6f627320637572>5.297 F<2d>-.2 E<72656e746c792061637469>102 405.6 Q -.3 -.15<76652074>-.25 H<68656e2061205349475445524d20746f2074686520706172 -656e74206f66207468652070726f6365737320286f722070726f63657373657329207769 -6c6c20636c65616e6c792073746f7020746865206a6f62732e>.15 E F0 2.5 -<332e342e20446562>87 429.6 R<756767696e67>-.2 E F1 .255 -<54686572652061726520612066>127 445.8 R .256<6169726c79206c6172>-.1 F -.256<6765206e756d626572206f6620646562>-.18 F .256<7567208d6167732062>-.2 -F .256<75696c7420696e746f>-.2 F F2<73656e646d61696c>2.756 E F1 5.256 -<2e45>C .256<61636820646562>-5.256 F .256 -<7567208d6167206861732061206361742d>-.2 F -.15<6567>102 457.8 S .502 -<6f727920616e642061206c65>.15 F -.15<7665>-.25 G 3.002 -<6c2e20486967686572>.15 F<6c65>3.002 E -.15<7665>-.25 G .502 -<6c7320696e63726561736520746865206c65>.15 F -.15<7665>-.25 G 3.002<6c6f> -.15 G 3.002<6664>-3.002 G<6562>-3.002 E .502<756767696e672061637469>-.2 -F .502<766974793b20696e206d6f73742063617365732c2074686973206d65616e73> --.25 F .137 -<746f207072696e74206f7574206d6f726520696e666f726d6174696f6e2e>102 469.8 -R .137<54686520636f6e>5.137 F -.15<7665>-.4 G .137 -<6e74696f6e2069732074686174206c65>.15 F -.15<7665>-.25 G .138 -<6c732067726561746572207468616e206e696e652061726520996162737572642c>.15 -F 2.638<9a69>-.7 G .138<2e652e2c20746865>-2.638 F<79>-.15 E .87<7072696e -74206f757420736f206d75636820696e666f726d6174696f6e207468617420796f752077> -102 481.8 R<6f756c646e27>-.1 E 3.369<746e>-.18 G .869 -<6f726d616c6c792077>-3.369 F .869<616e7420746f20736565207468656d2065>-.1 -F .869<786365707420666f7220646562>-.15 F<756767696e67>-.2 E -<7468617420706172746963756c6172207069656365206f6620636f64652e>102 493.8 -Q -1.1<596f>127 510 S 2.866<7573>1.1 G<686f756c64>-2.866 E F0<6e65>2.866 -E -.1<7665>-.15 G<72>.1 E F1 .366 -<72756e20612070726f64756374696f6e2073656e646d61696c2073657276>2.866 F -.366<657220696e20646562>-.15 F .366<7567206d6f64652e>-.2 F<4d616e>5.366 -E 2.866<796f>-.15 G 2.866<6674>-2.866 G .366<686520646562>-2.866 F .366 -<7567208d616773>-.2 F .907<77696c6c20726573756c7420696e20646562>102 522 -R .907<7567206f7574707574206265696e672073656e74206f>-.2 F -.15<7665>-.15 -G 3.407<7274>.15 G .907 -<686520534d5450206368616e6e656c20756e6c65737320746865206f7074696f6e> --3.407 F F03.407 E F1 .907<697320757365642e>3.407 F<54686973>5.907 -E 1.225<77696c6c20636f6e66757365206d616e>102 534 R 3.725<796d>-.15 G -1.225<61696c2070726f6772616d732e>-3.725 F<486f>6.225 E<7765>-.25 E -.15 -<7665>-.25 G 2.025 -.4<722c2066>.15 H 1.225<6f722074657374696e6720707572 -706f7365732c2069742063616e2062652075736566756c207768656e2073656e64696e67> -.4 F<6d61696c206d616e75616c6c79207669612074656c6e657420746f207468652070 -6f727420796f7520617265207573696e67207768696c6520646562>102 546 Q -<756767696e672e>-.2 E 2.754<4164>127 562.2 S<6562>-2.754 E .254 -<75672063617465>-.2 F .254<676f72792069732065697468657220616e20696e7465> --.15 F<676572>-.15 E 2.754<2c6c>-.4 G<696b>-2.754 E 2.754<6534>-.1 G -.254<322c206f722061206e616d652c206c696b>-2.754 F 2.754<6541>-.1 G 2.754 -<4e53492e2059>-2.754 F .254 -<6f752063616e207370656369667920612072616e6765>-1.1 F .928 -<6f66206e756d6572696320646562>102 574.2 R .928<75672063617465>-.2 F .928 -<676f72696573207573696e67207468652073796e7461782031372d34322e>-.15 F --1.1<596f>5.928 G 3.428<7563>1.1 G .928 -<616e2073706563696679206120736574206f66206e616d656420646562>-3.428 F -.929<756720636174652d>-.2 F .484 -<676f72696573207573696e67206120676c6f62207061747465726e206c696b>102 -586.2 R 2.984<6599>-.1 G 2.984<736d5f74726163655f2a9a2e204174>-2.984 F -.484<70726573656e742c206f6e6c7920992a9a20616e6420993f9a>2.984 F .483 -<61726520737570706f7274656420696e207468657365>5.483 F -<676c6f62207061747465726e732e>102 598.2 Q<446562>127 614.4 Q -<7567208d6167732061726520736574207573696e6720746865>-.2 E F02.5 E -F1<6f7074696f6e3b207468652073796e7461782069733a>2.5 E<646562>142 630.6 Q -<75672d8d61673a>-.2 E F036.78 E F1<646562>2.5 E<75672d6c697374>-.2 -E<646562>142 642.6 Q 37.05<75672d6c6973743a20646562>-.2 F -<75672d6f7074696f6e205b202c20646562>-.2 E<75672d6f7074696f6e205d2a>-.2 E -<646562>142 654.6 Q 23.72<75672d6f7074696f6e3a20646562>-.2 F -<75672d63617465>-.2 E<676f72696573205b202e20646562>-.15 E<75672d6c65>-.2 -E -.15<7665>-.25 G 2.5<6c5d>.15 G<646562>142 666.6 Q<75672d63617465>-.2 -E 8.89<676f726965733a20696e7465>-.15 F<676572207c20696e7465>-.15 E -<67657220ad20696e7465>-.15 E<676572207c2063617465>-.15 E -<676f72792d7061747465726e>-.15 E<63617465>142 678.6 Q 11.47<676f72792d70 -61747465726e3a205b612d7a412d5a5f2a3f5d5b612d7a412d5a302d395f2a3f5d2a> --.15 F<646562>142 690.6 Q<75672d6c65>-.2 E -.15<7665>-.25 G 30.24 -<6c3a20696e7465>.15 F<676572>-.15 E<776865726520737061636573206172652066 -6f722072656164696e672065617365206f6e6c79>102 706.8 Q 5<2e46>-.65 G -<6f722065>-5.15 E<78616d706c652c>-.15 E 0 Cg EP -%%Page: 25 21 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3235>195.86 E -/F1 10/Times-Roman@0 SF 58.99142 96 R<63617465>2.5 E -<676f727920313220746f206c65>-.15 E -.15<7665>-.25 G 2.5<6c31>.15 G 51.49 -142 108 R<63617465>2.5 E -<676f727920313220746f206c65>-.15 E -.15<7665>-.25 G 2.5<6c33>.15 G 48.35 -142 120 R<63617465>2.5 E -<676f726965732033207468726f75676820313720746f206c65>-.15 E -.15<7665> --.25 G 2.5<6c31>.15 G 40.85142 132 R<63617465> -2.5 E<676f726965732033207468726f75676820313720746f206c65>-.15 E -.15 -<7665>-.25 G 2.5<6c34>.15 G 45.66142 144 R -<63617465>2.5 E<676f727920414e534920746f206c65>-.15 E -.15<7665>-.25 G -2.5<6c31>.15 G 15.39142 156 R -<616c6c206e616d65642063617465>2.5 E -<676f72696573206d61746368696e6720736d5f74726163655f2a20746f206c65>-.15 E --.15<7665>-.25 G 2.5<6c33>.15 G -.15<466f>102 172.2 S 3.283<726163>.15 G -.783<6f6d706c657465206c697374206f66207468652061>-3.283 F -.25<7661>-.2 G -.783<696c61626c6520646562>.25 F .783 -<7567208d61677320796f752077696c6c206861>-.2 F 1.083 -.15<76652074>-.2 H -3.283<6f6c>.15 G .783<6f6f6b2061742074686520636f646520616e6420746865> --3.283 F/F2 10/Times-Italic@0 SF<545241>3.284 E<43452d>-.3 E<464c41>102 -184.2 Q<4753>-.35 E F1 1.062 -<8c6c6520696e207468652073656e646d61696c2064697374726962>3.562 F 1.062 -<7574696f6e2028746865>-.2 F 3.562<7961>-.15 G 1.062 -<726520746f6f2064796e616d696320746f206b>-3.562 F 1.062 -<656570207468697320646f63756d656e7420757020746f2064617465292e>-.1 F -.15 -<466f>102 196.2 S 2.5<72616c>.15 G<697374206f66206e616d656420646562>-2.5 -E<75672063617465>-.2 E -<676f7269657320696e207468652073656e646d61696c2062696e617279>-.15 E 2.5 -<2c75>-.65 G<7365>-2.5 E -<6964656e74202f7573722f7362696e2f73656e646d61696c207c206772657020446562> -142 212.4 Q<7567>-.2 E F0 2.5<332e352e204368616e67696e67>87 240.6 R -<7468652056>2.5 E<616c756573206f66204f7074696f6e73>-.92 E F1 -<4f7074696f6e732063616e206265206f>127 256.8 Q -.15<7665>-.15 G -<7272696464656e207573696e6720746865>.15 E F02.5 E F1<6f72>2.5 E F0 -2.5 E F1<636f6d6d616e64206c696e65208d6167732e>2.5 E -.15<466f>5 G -2.5<7265>.15 G<78616d706c652c>-2.65 E -<2f7573722f7362696e2f73656e646d61696c20ad6f54326d>142 273 Q .02 -<7365747320746865>102 289.2 R F0<54>2.52 E F1 .02 -<2874696d656f757429206f7074696f6e20746f207477>2.52 F 2.52<6f6d>-.1 G -.021 -<696e7574657320666f7220746869732072756e206f6e6c793b207468652065717569> --2.52 F -.25<7661>-.25 G .021 -<6c656e74206c696e65207573696e6720746865206c6f6e67206f7074696f6e>.25 F -<6e616d65206973>102 301.2 Q<2f7573722f7362696e2f73656e646d61696c202d4f> -142 317.4 Q -.35<5469>-.4 G<6d656f75742e717565756572657475726e3d326d>.35 -E .72<536f6d65206f7074696f6e73206861>127 337.8 R 1.02 -.15<76652073>-.2 -H .72<6563757269747920696d706c69636174696f6e732e>.15 F .72 -<53656e646d61696c20616c6c6f>5.72 F .72 -<777320796f7520746f207365742074686573652c2062>-.25 F .72 -<75742072656c696e71756973686573>-.2 F<697473207365742d75736572>102 351.8 -Q<2d4944206f72207365742d67726f75702d4944207065726d697373696f6e7320746865 -72656166746572>-.2 E/F3 7/Times-Roman@0 SF<3132>-4 I F1<2e>4 I F0 2.5 -<332e362e2054>87 375.8 R<7279696e67206120446966666572>-.74 E -<656e7420436f6e8c6775726174696f6e2046696c65>-.18 E F1 -<416e20616c7465726e617469>127 392 Q .3 -.15<76652063>-.25 H<6f6e8c677572 -6174696f6e208c6c652063616e2062652073706563698c6564207573696e6720746865> -.15 E F02.5 E F1<8d61673b20666f722065>2.5 E<78616d706c652c>-.15 E< -2f7573722f7362696e2f73656e646d61696c20ad43746573742e636620ad6f512f746d70 -2f6d7175657565>142 408.2 Q .68 -<757365732074686520636f6e8c6775726174696f6e208c6c65>102 424.4 R F2 -<746573742e6366>3.18 E F1 .68<696e7374656164206f662074686520646566>3.18 -F<61756c74>-.1 E F2<2f6574632f6d61696c2f73656e646d61696c2e6366>3.18 E -<2e>-.15 E F1 .68<496620746865>5.68 F F03.18 E F1 .68 -<8d616720686173206e6f>3.18 F -.25<7661>102 436.4 S<6c756520697420646566> -.25 E<61756c747320746f>-.1 E F2<73656e646d61696c2e6366>2.5 E F1 -<696e207468652063757272656e74206469726563746f7279>2.5 E<2e>-.65 E F2 -<53656e646d61696c>127 452.6 Q F1<6769>2.57 E -.15<7665>-.25 G 2.57<7375> -.15 G 2.57<7073>-2.57 G<65742d75736572>-2.57 E .071<2d494420726f6f742070 -65726d697373696f6e732028696620697420686173206265656e20696e7374616c6c6564 -207365742d75736572>-.2 F .071<2d494420726f6f7429207768656e>-.2 F .779<79 -6f75207573652074686973208d61672c20736f20697420697320636f6d6d6f6e20746f20 -7573652061207075626c69636c79207772697461626c65206469726563746f7279202873 -756368206173202f746d702920617320746865207175657565>102 464.6 R<64697265 -63746f7279202851756575654469726563746f7279206f722051206f7074696f6e292077 -68696c652074657374696e672e>102 476.6 Q F0 2.5<332e372e204c6f6767696e67> -87 500.6 R -.74<5472>2.5 G<61668c63>.74 E F1<4d616e>127 516.8 Q 3.254 -<7953>-.15 G .754<4d545020696d706c656d656e746174696f6e7320646f206e6f7420 -66756c6c7920696d706c656d656e74207468652070726f746f636f6c2e>-3.254 F -.15 -<466f>5.754 G 3.254<7265>.15 G .755<78616d706c652c20736f6d6520706572> --3.404 F<2d>-.2 E 1.178<736f6e616c20636f6d707574657220626173656420534d54 -507320646f206e6f7420756e6465727374616e6420636f6e74696e756174696f6e206c69 -6e657320696e207265706c7920636f6465732e>102 528.8 R 1.177 -<54686573652063616e206265>6.178 F -.15<7665>102 540.8 S .13 -<7279206861726420746f2074726163652e>.15 F .13<496620796f7520737573706563 -74207375636820612070726f626c656d2c20796f752063616e207365742074726166> -5.13 F .13<8c63206c6f6767696e67207573696e6720746865>-.25 F F02.63 -E F1 2.63<8d61672e2046>2.63 F<6f72>-.15 E -.15<6578>102 552.8 S -<616d706c652c>.15 E -<2f7573722f7362696e2f73656e646d61696c20ad58202f746d702f74726166>142 569 -Q<8c6320ad6264>-.25 E<77696c6c206c6f6720616c6c2074726166>102 585.2 Q -<8c6320696e20746865208c6c65>-.25 E F2<2f746d702f7472>2.5 E<6166>-.15 E -<8c63>-.18 E F1<2e>A .998 -<54686973206c6f67732061206c6f74206f6620646174612076>127 601.4 R .997 -<65727920717569636b6c7920616e642073686f756c64>-.15 F F0<4e45564552>3.497 -E F1 .997 -<6265207573656420647572696e67206e6f726d616c206f7065726174696f6e732e> -3.497 F .962<4166746572207374617274696e6720757020737563682061206461656d -6f6e2c20666f7263652074686520657272616e7420696d706c656d656e746174696f6e20 -746f2073656e642061206d65737361676520746f20796f757220686f73742e>102 613.4 -R .609<416c6c206d6573736167652074726166>102 625.4 R .609 -<8c6320696e20616e64206f7574206f66>-.25 F F2<73656e646d61696c>3.109 E F1 -3.109<2c69>C .609 -<6e636c7564696e672074686520696e636f6d696e6720534d54502074726166>-3.109 F -.608<8c632c2077696c6c206265206c6f6767656420696e>-.25 F -<74686973208c6c652e>102 637.4 Q .32 LW 76 669.2 72 669.2 DL 80 669.2 76 -669.2 DL 84 669.2 80 669.2 DL 88 669.2 84 669.2 DL 92 669.2 88 669.2 DL -96 669.2 92 669.2 DL 100 669.2 96 669.2 DL 104 669.2 100 669.2 DL 108 -669.2 104 669.2 DL 112 669.2 108 669.2 DL 116 669.2 112 669.2 DL 120 -669.2 116 669.2 DL 124 669.2 120 669.2 DL 128 669.2 124 669.2 DL 132 -669.2 128 669.2 DL 136 669.2 132 669.2 DL 140 669.2 136 669.2 DL 144 -669.2 140 669.2 DL 148 669.2 144 669.2 DL 152 669.2 148 669.2 DL 156 -669.2 152 669.2 DL 160 669.2 156 669.2 DL 164 669.2 160 669.2 DL 168 -669.2 164 669.2 DL 172 669.2 168 669.2 DL 176 669.2 172 669.2 DL 180 -669.2 176 669.2 DL 184 669.2 180 669.2 DL 188 669.2 184 669.2 DL 192 -669.2 188 669.2 DL 196 669.2 192 669.2 DL 200 669.2 196 669.2 DL 204 -669.2 200 669.2 DL 208 669.2 204 669.2 DL 212 669.2 208 669.2 DL 216 -669.2 212 669.2 DL/F4 5/Times-Roman@0 SF<3132>93.6 679.6 Q/F5 8 -/Times-Roman@0 SF .497<546861742069732c206974207365747320697473206566> -3.2 J<6665637469>-.2 E .737 -.12<76652075>-.2 H .497<696420746f20746865 -207265616c207569643b20746875732c20696620796f75206172652065>.12 F -.12 -<7865>-.12 G .497 -<637574696e6720617320726f6f742c2061732066726f6d20726f6f7427>.12 F 2.497 -<7363>-.44 G .497 -<726f6e746162208c6c65206f7220647572696e672073797374656d>-2.497 F<737461 -727475702074686520726f6f74207065726d697373696f6e732077696c6c207374696c6c -20626520686f6e6f7265642e>72 692.4 Q 0 Cg EP -%%Page: 26 22 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d32362053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -2.5<332e382e2054>87 96 R -<657374696e6720436f6e8c6775726174696f6e2046696c6573>-.92 E/F1 10 -/Times-Roman@0 SF .643<5768656e20796f752062>127 112.2 R .644<75696c6420 -6120636f6e8c6775726174696f6e207461626c652c20796f752063616e20646f20612063 -65727461696e20616d6f756e74206f662074657374696e67207573696e67207468652099 -74657374>-.2 F<6d6f64659a206f66>102 124.2 Q/F2 10/Times-Italic@0 SF -<73656e646d61696c>2.5 E F1 5<2e46>C<6f722065>-5.15 E -<78616d706c652c20796f7520636f756c6420696e>-.15 E -.2<766f>-.4 G -.1 -<6b65>.2 G F2<73656e646d61696c>2.6 E F1<61733a>2.5 E -<73656e646d61696c20ad627420ad43746573742e6366>142 140.4 Q .448 -<77686963682077>102 156.6 R .448<6f756c6420726561642074686520636f6e8c67 -75726174696f6e208c6c652099746573742e63669a20616e6420656e7465722074657374 -206d6f64652e>-.1 F .447 -<496e2074686973206d6f64652c20796f7520656e746572206c696e6573>5.447 F -<6f662074686520666f726d3a>102 168.6 Q<72777365742061646472657373>142 -184.8 Q<7768657265>102 201 Q F2<7277736574>3.006 E F1 .506 -<697320746865207265>3.006 F .506<77726974696e672073657420796f752077>-.25 -F .506<616e7420746f2075736520616e64>-.1 F F2<61646472>3.007 E<657373> --.37 E F1 .507 -<697320616e206164647265737320746f206170706c79207468652073657420746f2e> -3.007 F -.7<5465>5.507 G<7374>.7 E .794<6d6f64652073686f>102 213 R .794 -<777320796f75207468652073746570732069742074616b>-.25 F .794 -<65732061732069742070726f63656564732c208c6e616c6c792073686f>-.1 F .794< -77696e6720796f7520746865206164647265737320697420656e64732075702077697468 -2e>-.25 F -1.1<596f>102 225 S 3.331<756d>1.1 G .832<61792075736520612063 -6f6d6d6120736570617261746564206c697374206f662072777365747320666f72207365 -7175656e7469616c206170706c69636174696f6e206f662072756c657320746f20616e20 -696e7075742e>-3.331 F -.15<466f>5.832 G<72>.15 E -.15<6578>102 237 S -<616d706c653a>.15 E<332c312c32312c34206d6f6e65743a626f6c6c617264>142 -253.2 Q .622<8c727374206170706c6965732072756c6573657420746872656520746f -2074686520696e70757420996d6f6e65743a626f6c6c6172642e>102 269.4 R 5.622 -<9a52>-.7 G .622<756c65736574206f6e65206973207468656e206170706c69656420 -746f20746865206f7574707574206f66>-5.622 F -<72756c657365742074687265652c20666f6c6c6f>102 281.4 Q<7765642073696d696c -61726c792062792072756c6573657473207477656e74792d6f6e6520616e6420666f7572> --.25 E<2e>-.55 E 1.084<496620796f75206e656564206d6f72652064657461696c2c -20796f752063616e20616c736f20757365207468652099ad6432319a208d616720746f20 -7475726e206f6e206d6f726520646562>127 297.6 R 3.585<756767696e672e2046> --.2 F<6f72>-.15 E -.15<6578>102 309.6 S<616d706c652c>.15 E -<73656e646d61696c20ad627420ad6432312e3939>142 325.8 Q .689<7475726e7320 -6f6e20616e20696e6372656469626c6520616d6f756e74206f6620696e666f726d617469 -6f6e3b20612073696e676c652077>102 342 R .688<6f72642061646472657373206973 -2070726f6261626c7920676f696e6720746f207072696e74206f7574>-.1 F<7365>102 -354 Q -.15<7665>-.25 G<72616c2070616765732077>.15 E -<6f727468206f6620696e666f726d6174696f6e2e>-.1 E -1.1<596f>127 370.2 S -2.574<7573>1.1 G .074<686f756c642062652077>-2.574 F .074 -<61726e6564207468617420696e7465726e616c6c79>-.1 F<2c>-.65 E F2 -<73656e646d61696c>2.575 E F1 .075 -<6170706c6965732072756c65736574203320746f20616c6c206164647265737365732e> -2.575 F .075<496e2074657374206d6f6465>5.075 F<796f752077696c6c206861>102 -382.2 Q .3 -.15<76652074>-.2 H 2.5<6f64>.15 G 2.5<6f74>-2.5 G -<686174206d616e75616c6c79>-2.5 E 5<2e46>-.65 G<6f722065>-5.15 E -<78616d706c652c206f6c6465722076>-.15 E<657273696f6e7320616c6c6f>-.15 E -<77656420796f7520746f20757365>-.25 E 2.5<3062>142 398.4 S -<727563654062726f6164636173742e736f6e>-2.5 E -.65<792e>-.15 G<636f6d>.65 -E<546869732076>102 414.6 Q -<657273696f6e207265717569726573207468617420796f75207573653a>-.15 E -<332c302062727563654062726f6164636173742e736f6e>142 430.8 Q -.65<792e> --.15 G<636f6d>.65 E<4173206f662076>127 451.2 Q -<657273696f6e20382e372c20736f6d65206f746865722073796e746178>-.15 E -<6573206172652061>-.15 E -.25<7661>-.2 G -<696c61626c6520696e2074657374206d6f64653a>.25 E -.834<2e4420782076>102 -467.4 R 30.038<616c75652064658c6e6573>-.25 F<6d6163726f>2.953 E F2<78> -2.953 E F1 .453<746f206861>2.953 F .752 -.15<76652074>-.2 H .452 -<686520696e64696361746564>.15 F F2<76616c7565>2.952 E F1 5.452<2e54>C -.452<6869732069732075736566756c207768656e20646562>-5.452 F .452 -<756767696e672072756c6573>-.2 F<746861742075736520746865>174 479.4 Q F0 -<2426>2.5 E F2<78>A F1<73796e7461782e>2.5 E -.834<2e4320632076>102 495.6 -R 31.148<616c75652061646473>-.25 F<74686520696e64696361746564>2.5 E F2 -<76616c7565>2.5 E F1<746f20636c617373>2.5 E F2<63>2.5 E F1<2e>A -.834 -<3d532072756c65736574>102 511.8 R<64756d70732074686520636f6e74656e747320 -6f662074686520696e646963617465642072756c657365742e>32.474 E -.834 -102 528 R 11.854<75672d73706563206973>-.2 F<65717569>2.5 E --.25<7661>-.25 G -<6c656e7420746f2074686520636f6d6d616e642d6c696e65208d61672e>.25 E -1.11 -<5665>102 544.2 S -<7273696f6e20382e3920696e74726f6475636564206d6f72652066656174757265733a> -1.11 E 67.56<3f73>102 560.4 S<686f>-67.56 E -<777320612068656c70206d6573736167652e>-.25 E 54.97<3d4d20646973706c6179> -102 576.6 R<746865206b6e6f>2.5 E<776e206d61696c6572732e>-.25 E 56.72 -<246d207072696e74>102 592.8 R<7468652076>2.5 E -<616c7565206f66206d6163726f206d2e>-.25 E 54.42<243d63207072696e74>102 -609 R<74686520636f6e74656e7473206f6620636c61737320632e>2.5 E -<2f6d7820686f7374>102 625.2 Q -<72657475726e7320746865204d58207265636f72647320666f722060686f7374272e> -37.27 E<2f70617273652061646472657373>102 641.4 Q -<706172736520616464726573732c2072657475726e696e67207468652076>15.63 E -<616c7565206f66>-.25 E F2<6372>2.5 E<6163>-.15 E<6b61646472>-.2 E F1 2.5 -<2c61>C<6e64207468652070617273656420616464726573732e>-2.5 E -<2f747279206d61696c65722061646472>102 657.6 Q<7265>9.79 E<77726974652061 -64647265737320696e746f2074686520666f726d2069742077696c6c206861>-.25 E .3 --.15<76652077>-.2 H<68656e2070726573656e74656420746f2074686520696e646963 -61746564206d61696c6572>.15 E<2e>-.55 E<2f7472798d616773208d616773>102 -673.8 Q 1.005<736574208d61677320757365642062792070617273696e672e>17.83 F -1.005<546865208d6167732063616e2062652060482720666f7220486561646572206f72 -2060452720666f7220456e>6.005 F -.15<7665>-.4 G<6c6f70652c>.15 E .62<616e -642060532720666f722053656e646572206f722060522720666f7220526563697069656e -742e>174 685.8 R .62<54686573652063616e20626520636f6d62696e65642c206048 -52272073657473208d616773>5.62 F -<666f722068656164657220726563697069656e74732e>174 697.8 Q 0 Cg EP -%%Page: 27 23 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3237>195.86 E -/F1 10/Times-Roman@0 SF<2f63616e6f6e20686f73746e616d65>102 96 Q -<74727920746f2063616e6f6e69667920686f73746e616d652e>4.51 E -<2f6d6170206d61706e616d65206b>102 112.2 Q -.15<6579>-.1 G -<6c6f6f6b20757020606b>174 124.2 Q -.15<6579>-.1 G 2.5<2769>.15 G 2.5 -<6e74>-2.5 G<686520696e6469636174656420606d61706e616d65272e>-2.5 E 51.16 -<2f717569742071756974>102 140.4 R<616464726573732074657374206d6f64652e> -2.5 E F0 2.5<332e392e2050>87 156.6 R -<657273697374656e7420486f73742053746174757320496e66>-.2 E -<6f726d6174696f6e>-.25 E F1<5768656e>127 172.8 Q F0 -<486f7374537461747573446972>2.569 E<6563746f7279>-.18 E F1 .069<69732065 -6e61626c65642c20696e666f726d6174696f6e2061626f75742074686520737461747573 -206f6620686f737473206973206d61696e7461696e6564206f6e>2.569 F .249<646973 -6b20616e642063616e207468757320626520736861726564206265747765656e20646966> -102 184.8 R .249<666572656e7420696e7374616e74696174696f6e73206f66>-.25 F -/F2 10/Times-Italic@0 SF<73656e646d61696c>2.749 E F1 5.249<2e54>C .248 -<686520737461747573206f6620746865206c61737420636f6e2d>-5.249 F<6e656374 -696f6e207769746820656163682072656d6f746520686f7374206d617920626520766965> -102 196.8 Q<77656420776974682074686520636f6d6d616e643a>-.25 E -<73656e646d61696c20ad6268>142 213 Q<5468697320696e666f726d6174696f6e206d -6179206265208d757368656420776974682074686520636f6d6d616e643a>102 229.2 Q -<73656e646d61696c20ad6248>142 245.4 Q 1.534 -<466c757368696e672074686520696e666f726d6174696f6e20707265>102 261.6 R --.15<7665>-.25 G 1.534<6e7473206e65>.15 F<77>-.25 E F2<73656e646d61696c> -4.034 E F1 1.535 -<70726f6365737365732066726f6d206c6f6164696e672069742c2062>4.035 F 1.535 -<757420646f6573206e6f7420707265>-.2 F -.15<7665>-.25 G<6e74>.15 E -.15 -<6578>102 273.6 S<697374696e672070726f6365737365732066726f6d207573696e67 -207468652073746174757320696e666f726d6174696f6e207468617420746865>.15 E -2.5<7961>-.15 G<6c7265616479206861>-2.5 E -.15<7665>-.2 G<2e>.15 E F0 -2.5<342e2054554e494e47>72 297.6 R F1 1.922<5468657265206172652061206e75 -6d626572206f6620636f6e8c6775726174696f6e20706172616d657465727320796f7520 -6d61792077>112 313.8 R 1.922 -<616e7420746f206368616e67652c20646570656e64696e67206f6e20746865>-.1 F -.366<726571756972656d656e7473206f6620796f757220736974652e>87 325.8 R -.367<4d6f7374206f662074686573652061726520736574207573696e6720616e206f70 -74696f6e20696e2074686520636f6e8c6775726174696f6e208c6c652e>5.366 F -.15 -<466f>5.367 G 2.867<7265>.15 G<78616d706c652c>-3.017 E -<746865206c696e6520994f2054>87 337.8 Q<696d656f75742e717565756572657475 -726e3d35649a2073657473206f7074696f6e209954>-.35 E -<696d656f75742e717565756572657475726e9a20746f207468652076>-.35 E -<616c7565209935649a20288c76>-.25 E 2.5<6564>-.15 G<617973292e>-2.5 E -.735<4d6f7374206f66207468657365206f7074696f6e73206861>112 354 R 1.035 --.15<76652061>-.2 H .735<7070726f70726961746520646566>.15 F .735 -<61756c747320666f72206d6f73742073697465732e>-.1 F<486f>5.735 E<7765>-.25 -E -.15<7665>-.25 G 1.535 -.4<722c2073>.15 H .735<69746573206861>.4 F -.735<76696e672076>-.2 F .735<6572792068696768>-.15 F .045 -<6d61696c206c6f616473206d6179208c6e6420746865>87 366 R 2.545<796e>-.15 G -.046<65656420746f2074756e65207468656d20617320617070726f7072696174652066 -6f72207468656972206d61696c206c6f61642e>-2.545 F .046 -<496e20706172746963756c6172>5.046 F 2.546<2c73>-.4 G .046<697465732065> --2.546 F<78706572692d>-.15 E 1.088<656e63696e672061206c6172>87 378 R -1.088<6765206e756d626572206f6620736d616c6c206d657373616765732c206d616e> --.18 F 3.588<796f>-.15 G 3.587<6677>-3.588 G 1.087 -<68696368206172652064656c69>-3.587 F -.15<7665>-.25 G 1.087 -<72656420746f206d616e>.15 F 3.587<7972>-.15 G 1.087 -<6563697069656e74732c206d6179208c6e64>-3.587 F<7468617420746865>87 390 Q -2.5<796e>-.15 G<65656420746f2061646a7573742074686520706172616d6574657273 -206465616c696e672077697468207175657565207072696f7269746965732e>-2.5 E -.523<416c6c2076>112 406.2 R .523<657273696f6e73206f66>-.15 F F2 -<73656e646d61696c>3.023 E F1 .524<7072696f7220746f20382e3720686164207369 -6e676c6520636861726163746572206f7074696f6e206e616d65732e>3.023 F .524 -<4173206f6620382e372c206f7074696f6e73206861>5.524 F -.15<7665>-.2 G -1.216<6c6f6e6720286d756c74692d636861726163746572206e616d6573292e>87 -418.2 R 1.216<416c74686f756768206f6c642073686f7274206e616d65732061726520 -7374696c6c2061636365707465642c206d6f7374206e65>6.216 F 3.715<776f>-.25 G -1.215<7074696f6e7320646f206e6f74>-3.715 F<6861>87 430.2 Q .3 -.15 -<76652073>-.2 H<686f72742065717569>.15 E -.25<7661>-.25 G<6c656e74732e> -.25 E .802<546869732073656374696f6e206f6e6c7920646573637269626573207468 -65206f7074696f6e7320796f7520617265206d6f7374206c696b>112 446.4 R .802 -<656c7920746f2077>-.1 F .802 -<616e7420746f20747765616b3b20726561642073656374696f6e203520666f72>-.1 F -<6d6f72652064657461696c732e>87 458.4 Q F0 2.5<342e312e2054>87 482.4 R -<696d656f757473>-.18 E F1 .583<416c6c2074696d6520696e74657276>127 498.6 -R .583 -<616c732061726520736574207573696e672061207363616c65642073796e7461782e> --.25 F -.15<466f>5.583 G 3.083<7265>.15 G .583<78616d706c652c209931306d -9a20726570726573656e74732074656e206d696e757465732c>-3.233 F -<776865726561732099326833306d9a20726570726573656e7473207477>102 510.6 Q -2.5<6f61>-.1 G<6e6420612068616c6620686f7572732e>-2.5 E -<5468652066756c6c20736574206f66207363616c65732069733a>5 E 16.11<7373>142 -526.8 S<65636f6e6473>-16.11 E 12.22<6d6d>142 538.8 S<696e75746573>-12.22 -E 15<6868>142 550.8 S<6f757273>-15 E 15<6464>142 562.8 S<617973>-15 E -12.78<7777>142 574.8 S<65656b73>-12.78 E F0 2.5 -<342e312e312e205175657565>102 603 R<696e746572>2.5 E -.1<7661>-.1 G<6c> -.1 E F1 .18<546865206172>142 619.2 R .18<67756d656e7420746f20746865>-.18 -F F02.68 E F1 .18<8d61672073706563698c657320686f>2.68 F 2.68<776f> --.25 G .18<6674656e2061207375622d6461656d6f6e2077696c6c2072756e20746865 -2071756575652e>-2.68 F .18<54686973206973>5.18 F .793<7479706963616c6c79 -2073657420746f206265747765656e208c667465656e206d696e7574657320616e64206f -6e6520686f7572>117 631.2 R 5.793<2e49>-.55 G 3.293<666e>-5.793 G .793<6f -74207365742c206f722073657420746f207a65726f2c207468652071756575652077696c -6c>-3.293 F .048<6e6f742062652072756e206175746f6d61746963616c6c79>117 -643.2 R 5.048<2e52>-.65 G .048<464320313132332073656374696f6e20352e332e -312e31207265636f6d6d656e647320746861742074686973206265206174206c65617374 -203330206d696e757465732e>-5.048 F .501<53686f756c6420796f75206e65656420 -746f207465726d696e61746520746865207175657565206a6f62732063757272656e746c -792061637469>117 655.2 R .801 -.15<76652074>-.25 H .5 -<68656e2061205349475445524d20746f2074686520706172656e74206f66>.15 F<7468 -652070726f6365737320286f722070726f636573736573292077696c6c20636c65616e6c -792073746f7020746865206a6f62732e>117 667.2 Q F0 2.5 -<342e312e322e2052656164>102 691.2 R<74696d656f757473>2.5 E F1 -.35<5469> -142 707.4 S .297<6d656f75747320616c6c206861>.35 F .597 -.15<7665206f>-.2 -H .297<7074696f6e206e616d6573209954>.15 F<696d656f75742e>-.35 E F2 -<7375626f7074696f6e>A F1 2.797<9a2e204d6f7374>B .298 -<6f6620746865736520636f6e74726f6c20534d5450206f706572>2.797 F<2d>-.2 E -3.899<6174696f6e732e20546865>117 719.4 R<7265636f676e697a6564>3.899 E F2 -<7375626f7074696f6e>3.899 E F1 1.399<732c20746865697220646566>B 1.398 -<61756c742076>-.1 F 1.398 -<616c7565732c20616e6420746865206d696e696d756d2076>-.25 F 1.398 -<616c75657320616c6c6f>-.25 F 1.398<776564206279>-.25 F 0 Cg EP -%%Page: 28 24 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d32382053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF<52464320323832312073656374696f6e20342e352e332e32 -20286f722052464320313132332073656374696f6e20352e332e3229206172653a>117 -96 Q 38.4<636f6e6e65637420546865>117 112.2 R .16<74696d6520746f2077>2.66 -F .161<61697420666f7220616e20534d545020636f6e6e656374696f6e20746f206f70 -656e2028746865>-.1 F/F2 10/Times-Italic@0 SF<636f6e6e656374>2.661 E F1 -.161<2832292073797374656d2063616c6c29>B 1.154 -<5b302c20756e73706563698c65645d2e>189 124.2 R 1.153 -<4966207a65726f2c207573657320746865206b>6.153 F 1.153 -<65726e656c20646566>-.1 F 3.653<61756c742e20496e>-.1 F 1.153 -<6e6f20636173652063616e2074686973206f7074696f6e>3.653 F -.15<6578>189 -136.2 S .518 -<74656e64207468652074696d656f7574206c6f6e676572207468616e20746865206b> -.15 F .518<65726e656c2070726f>-.1 F .519<76696465732c2062>-.15 F .519 -<75742069742063616e2073686f7274656e2069742e>-.2 F<54686973>5.519 E .58 -<697320746f206765742061726f756e64206b>189 148.2 R .579 -<65726e656c7320746861742070726f>-.1 F .579<7669646520616e20616273757264 -6c79206c6f6e6720636f6e6e656374696f6e2074696d656f757420283930>-.15 F -<6d696e7574657320696e206f6e652063617365292e>189 160.2 Q 35.62 -<69636f6e6e65637420546865>117 176.4 R .31<73616d65206173>2.81 F F2 -<636f6e6e6563742c>2.81 E F1 -.15<6578>2.81 G .311<6365707420697420617070 -6c696573206f6e6c7920746f2074686520696e697469616c20617474656d707420746f20 -636f6e6e65637420746f>.15 F 2.75<6168>189 188.4 S .25 -<6f737420666f722061206769>-2.75 F -.15<7665>-.25 G 2.75<6e6d>.15 G .25 -<657373616765205b302c20756e73706563698c65645d2e>-2.75 F .25 -<54686520636f6e63657074206973207468617420746869732073686f756c64206265> -5.25 F -.15<7665>189 200.4 S .766<72792073686f7274202861206665>.15 F -3.266<7773>-.25 G .767<65636f6e6473293b20686f73747320746861742061726520 -77656c6c20636f6e6e656374656420616e6420726573706f6e7369>-3.266 F 1.067 --.15<76652077>-.25 H<696c6c>.15 E .027 -<7468757320626520736572766963656420696d6d6564696174656c79>189 212.4 R -5.026<2e48>-.65 G .026<6f73747320746861742061726520736c6f>-5.026 F 2.526 -<7777>-.25 G .026<696c6c206e6f7420686f6c64207570206f746865722064656c69> --2.526 F<762d>-.25 E<657269657320696e2074686520696e697469616c2064656c69> -189 224.4 Q -.15<7665>-.25 G<727920617474656d70742e>.15 E 33.96 -<61636f6e6e656374205b302c>117 240.6 R 1.707 -<756e73706563698c65645d20546865206f>4.207 F -.15<7665>-.15 G 1.707 -<72616c6c2074696d656f75742077>.15 F 1.707<616974696e6720666f7220616c6c20 -636f6e6e656374696f6e20666f7220612073696e676c65>-.1 F<64656c69>189 252.6 -Q -.15<7665>-.25 G .153<727920617474656d707420746f20737563636565642e>.15 -F .152<496620302c206e6f206f>5.152 F -.15<7665>-.15 G .152 -<72616c6c206c696d6974206973206170706c6965642e>.15 F .152 -<546869732063616e2062652075736564>5.152 F .521<746f20726573747269637420 -74686520746f74616c20616d6f756e74206f662074696d6520747279696e6720746f2063 -6f6e6e65637420746f2061206c6f6e67206c697374206f6620686f73742074686174>189 -264.6 R .514<636f756c642061636365707420616e20652d6d61696c20666f72207468 -6520726563697069656e742e>189 276.6 R .514 -<546869732074696d656f757420646f6573206e6f74206170706c7920746f>5.514 F F0 --.25<4661>3.013 G<6c6c2d>.25 E<6261636b4d58686f7374>189 288.6 Q F1 2.677 -<2c69>C .177<2e652e2c206966207468652074696d652069732065>-2.677 F .177 -<78686175737465642c20746865>-.15 F F0 -.25<4661>2.677 G -<6c6c6261636b4d58686f7374>.25 E F1 .178<6973207472696564206e65>2.678 F -<78742e>-.15 E 46.16<696e697469616c20546865>117 304.8 R -.1<7761>2.5 G< -697420666f722074686520696e697469616c20323230206772656574696e67206d657373 -616765205b356d2c20356d5d2e>.1 E 52.28<68656c6f20546865>117 321 R -.1 -<7761>4.227 G 1.727<697420666f722061207265706c792066726f6d20612048454c4f -206f722045484c4f20636f6d6d616e64205b356d2c20756e73706563698c65645d2e>.1 -F .1<54686973206d61792072657175697265206120686f7374206e616d65206c6f6f6b -75702c20736f208c76>189 333 R 2.6<656d>-.15 G .1 -<696e757465732069732070726f6261626c79206120726561736f6e61626c65>-2.6 F -<6d696e696d756d2e>189 345 Q 46.72<6d61696c8720546865>117 361.2 R -.1 -<7761>2.5 G<697420666f722061207265706c792066726f6d2061204d41494c20636f6d -6d616e64205b31306d2c20356d5d2e>.1 E 48.95<726370748720546865>117 377.4 R --.1<7761>3.482 G .982<697420666f722061207265706c792066726f6d206120524350 -5420636f6d6d616e64205b31682c20356d5d2e>.1 F .981 -<546869732073686f756c64206265206c6f6e67>5.981 F 1.556<626563617573652069 -7420636f756c6420626520706f696e74696e672061742061206c69737420746861742074 -616b>189 389.4 R 1.556<65732061206c6f6e672074696d6520746f2065>-.1 F -1.556<7870616e642028736565>-.15 F<62656c6f>189 401.4 Q<77292e>-.25 E -34.5<64617461696e69748720546865>117 417.6 R -.1<7761>2.5 G -<697420666f722061207265706c792066726f6d20612044>.1 E -1.21 -1.11 -<41542041>-.4 H<636f6d6d616e64205b356d2c20326d5d2e>3.61 E 20.62 -<64617461626c6f636b878820546865>117 433.8 R -.1<7761>2.696 G .196<697420 -666f722072656164696e672061206461746120626c6f636b2028746861742069732c2074 -686520626f6479206f6620746865206d657373616765292e>.1 F .196 -<5b31682c20336d5d2e>5.196 F .621<546869732073686f756c64206265206c6f6e67 -206265636175736520697420616c736f206170706c69657320746f2070726f6772616d73 -20706970696e6720696e70757420746f>189 445.8 R F2<73656e642d>3.121 E -<6d61696c>189 457.8 Q F1<7768696368206861>2.5 E .3 -.15<7665206e>-.2 H -2.5<6f67>.15 G<756172616e746565206f662070726f6d70746e6573732e>-2.5 E -30.06<646174618c6e616c8720546865>117 474 R -.1<7761>2.806 G .306<697420 -666f722061207265706c792066726f6d2074686520646f74207465726d696e6174696e67 -2061206d6573736167652e>.1 F .306<5b31682c2031306d5d2e>5.306 F .306 -<49662074686973206973>5.306 F .883<73686f72746572207468616e207468652074 -696d652061637475616c6c79206e656564656420666f7220746865207265636569>189 -486 R -.15<7665>-.25 G 3.384<7274>.15 G 3.384<6f64>-3.384 G<656c69> --3.384 E -.15<7665>-.25 G 3.384<7274>.15 G .884<6865206d6573736167652c> --3.384 F<6475706c6963617465732077696c6c2062652067656e6572617465642e>189 -498 Q<546869732069732064697363757373656420696e2052464320313034372e>5 E -55.06<7273657420546865>117 514.2 R -.1<7761>2.5 G<697420666f722061207265 -706c792066726f6d2061205253455420636f6d6d616e64205b356d2c20756e7370656369 -8c65645d2e>.1 E 53.94<7175697420546865>117 530.4 R -.1<7761>2.5 G -<697420666f722061207265706c792066726f6d20612051>.1 E -<55495420636f6d6d616e64205b326d2c20756e73706563698c65645d2e>-.1 E 50.61 -<6d69736320546865>117 546.6 R -.1<7761>2.761 G .261<697420666f7220612072 -65706c792066726f6d206d697363656c6c616e656f7573202862>.1 F .261 -<75742073686f72742920636f6d6d616e64732073756368206173204e4f4f50>-.2 F -<286e6f2d6f7065726174696f6e2920616e6420564552422028676f20696e746f2076> -189 558.6 Q<6572626f7365206d6f6465292e>-.15 E -<5b326d2c20756e73706563698c65645d2e>5 E 20.06<636f6d6d616e64878820496e> -117 574.8 R<73657276>2.5 E<657220534d5450>-.15 E 2.5<2c74>-1.11 G -<68652074696d6520746f2077>-2.5 E -<61697420666f7220616e6f7468657220636f6d6d616e642e>-.1 E -<5b31682c20356d5d2e>5 E 44.5<6964656e748820546865>117 593 R -<74696d656f75742077>2.5 E<616974696e6720666f722061207265706c7920746f2061 -6e204944454e54207175657279205b3573>-.1 E/F3 7/Times-Roman@0 SF<3133>-4 I -F1 2.5<2c75>4 K<6e73706563698c65645d2e>-2.5 E 53.94<6c686c6f20546865>117 -609.2 R -.1<7761>2.5 G<697420666f722061207265706c7920746f20616e204c4d54 -50204c484c4f20636f6d6d616e64205b326d2c20756e73706563698c65645d2e>.1 E -52.28<6175746820546865>117 625.4 R -<74696d656f757420666f722061207265706c7920696e20616e20534d54502041>2.5 E -<555448206469616c6f677565205b31306d2c20756e73706563698c65645d2e>-.55 E -42.83<7374617274746c7320546865>117 641.6 R .141 -<74696d656f757420666f722061207265706c7920746f20616e20534d5450205354>2.64 -F<4152>-.93 E .141 -<54544c5320636f6d6d616e6420616e642074686520544c532068616e642d>-.6 F -<7368616b>189 653.6 Q 2.5<655b>-.1 G<31682c20756e73706563698c65645d2e> --2.5 E .32 LW 76 678.8 72 678.8 DL 80 678.8 76 678.8 DL 84 678.8 80 -678.8 DL 88 678.8 84 678.8 DL 92 678.8 88 678.8 DL 96 678.8 92 678.8 DL -100 678.8 96 678.8 DL 104 678.8 100 678.8 DL 108 678.8 104 678.8 DL 112 -678.8 108 678.8 DL 116 678.8 112 678.8 DL 120 678.8 116 678.8 DL 124 -678.8 120 678.8 DL 128 678.8 124 678.8 DL 132 678.8 128 678.8 DL 136 -678.8 132 678.8 DL 140 678.8 136 678.8 DL 144 678.8 140 678.8 DL 148 -678.8 144 678.8 DL 152 678.8 148 678.8 DL 156 678.8 152 678.8 DL 160 -678.8 156 678.8 DL 164 678.8 160 678.8 DL 168 678.8 164 678.8 DL 172 -678.8 168 678.8 DL 176 678.8 172 678.8 DL 180 678.8 176 678.8 DL 184 -678.8 180 678.8 DL 188 678.8 184 678.8 DL 192 678.8 188 678.8 DL 196 -678.8 192 678.8 DL 200 678.8 196 678.8 DL 204 678.8 200 678.8 DL 208 -678.8 204 678.8 DL 212 678.8 208 678.8 DL 216 678.8 212 678.8 DL/F4 5 -/Times-Roman@0 SF<3133>93.6 689.2 Q/F5 8/Times-Roman@0 SF -<4f6e20736f6d652073797374656d732074686520646566>3.2 I<61756c74206973207a -65726f20746f207475726e207468652070726f746f636f6c206f66>-.08 E 2<6665>-.2 -G<6e746972656c79>-2 E<2e>-.52 E 0 Cg EP -%%Page: 29 25 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3239>195.86 E -/F1 10/Times-Roman@0 SF 32.28<8c6c656f70656e8820546865>117 96 R -<74696d656f757420666f72206f70656e696e67202e666f7277>2.5 E -<61726420616e64203a696e636c7564653a208c6c6573205b3630732c206e6f6e655d2e> --.1 E 36.17<636f6e74726f6c8820546865>117 112.2 R .241 -<74696d656f757420666f72206120636f6d706c65746520636f6e74726f6c20736f636b> -2.741 F .241<6574207472616e73616374696f6e20746f20636f6d706c657465205b32 -6d2c206e6f6e655d2e>-.1 F 25.05<686f73747374617475738820486f>117 128.4 R -4.141<776c>-.25 G 1.642<6f6e672073746174757320696e666f726d6174696f6e2061 -626f7574206120686f73742028652e672e2c20686f737420646f>-4.141 F 1.642 -<776e292077696c6c20626520636163686564>-.25 F<6265666f726520697420697320 -636f6e73696465726564207374616c65205b33306d2c20756e73706563698c65645d2e> -189 140.4 Q<7265736f6c76>117 156.6 Q<6572>-.15 E 3.28 -<2e72657472616e738820546865>-.55 F<7265736f6c76>4.275 E<657227>-.15 E -4.275<7372>-.55 G 1.775 -<657472616e736d697373696f6e2074696d6520696e74657276>-4.275 F 1.774 -<616c2028696e207365636f6e647329205b76>-.25 F 4.274 -<61726965735d2e2053657473>-.25 F<626f7468>4.274 E/F2 10/Times-Italic@0 -SF -.55<5469>189 168.6 S<6d656f75742e72>.55 E<65736f6c766572>-.37 E -<2e72>-1.11 E<657472>-.37 E<616e732e8c72>-.15 E<7374>-.1 E F1<616e64>2.5 -E F2 -.55<5469>2.5 G<6d656f75742e72>.55 E<65736f6c766572>-.37 E<2e72> --1.11 E<657472>-.37 E<616e732e6e6f726d616c>-.15 E F1<2e>A<7265736f6c76> -117 184.8 Q<6572>-.15 E<2e72657472616e732e8c72737488>-.55 E .317 -<546865207265736f6c76>189 196.8 R<657227>-.15 E 2.817<7372>-.55 G .317 -<657472616e736d697373696f6e2074696d6520696e74657276>-2.817 F .317<616c20 -28696e207365636f6e64732920666f7220746865208c72737420617474656d707420746f> --.25 F<64656c69>189 208.8 Q -.15<7665>-.25 G 2.5<72616d>.15 G -<657373616765205b76>-2.5 E<61726965735d2e>-.25 E<7265736f6c76>117 225 Q -<6572>-.15 E<2e72657472616e732e6e6f726d616c88>-.55 E 3.555 -<546865207265736f6c76>189 237 R<657227>-.15 E 6.055<7372>-.55 G 3.555 -<657472616e736d697373696f6e2074696d6520696e74657276>-6.055 F 3.554 -<616c2028696e207365636f6e64732920666f7220616c6c207265736f6c76>-.25 F -<6572>-.15 E<6c6f6f6b7570732065>189 249 Q -<786365707420746865208c7273742064656c69>-.15 E -.15<7665>-.25 G -<727920617474656d7074205b76>.15 E<61726965735d2e>-.25 E<7265736f6c76>117 -265.2 Q<6572>-.15 E 11.61<2e72657472798820546865>-.55 F 3.838<6e756d6265 -72206f662074696d657320746f2072657472616e736d69742061207265736f6c76>6.338 -F 3.838<6572207175657279>-.15 F 8.838<2e53>-.65 G 3.839 -<65747320626f7468>-8.838 F F2 -.55<5469>6.339 G<6d652d>.55 E<6f75742e72> -189 277.2 Q<65736f6c766572>-.37 E<2e72>-1.11 E<65747279>-.37 E<2e8c72> --.55 E<7374>-.1 E F1<616e64>2.5 E F2 -.55<5469>2.5 G<6d656f75742e72>.55 -E<65736f6c766572>-.37 E<2e72>-1.11 E<65747279>-.37 E<2e6e6f726d616c>-.55 -E F1<5b76>2.5 E<61726965735d2e>-.25 E<7265736f6c76>117 293.4 Q<6572>-.15 -E<2e7265747279>-.55 E<2e8c72737488>-.65 E 1.66<546865206e756d626572206f -662074696d657320746f2072657472616e736d69742061207265736f6c76>189 305.4 R -1.66<657220717565727920666f7220746865208c72737420617474656d707420746f> --.15 F<64656c69>189 317.4 Q -.15<7665>-.25 G 2.5<72616d>.15 G -<657373616765205b76>-2.5 E<61726965735d2e>-.25 E<7265736f6c76>117 333.6 -Q<6572>-.15 E<2e7265747279>-.55 E<2e6e6f726d616c88>-.65 E<546865206e756d -626572206f662074696d657320746f2072657472616e736d69742061207265736f6c76> -189 345.6 Q<657220717565727920666f7220616c6c207265736f6c76>-.15 E -<6572206c6f6f6b757073>-.15 E -.15<6578>191.5 357.6 S -<6365707420746865208c7273742064656c69>.15 E -.15<7665>-.25 G -<727920617474656d7074205b76>.15 E<61726965735d2e>-.25 E -.15<466f>117 -373.8 S 4.608<7263>.15 G 2.108<6f6d7061746962696c6974792077697468206f6c -6420636f6e8c6775726174696f6e208c6c65732c206966206e6f>-4.608 F F2 -<7375626f7074696f6e>4.609 E F1 2.109 -<69732073706563698c65642c20616c6c207468652074696d656f757473>4.609 F -<6d61726b>117 385.8 Q .059<65642077697468206120646167676572202887292061 -72652073657420746f2074686520696e646963617465642076>-.1 F 2.559 -<616c75652e20416c6c>-.25 F -.2<6275>2.559 G 2.559<7474>.2 G .059 -<686f7365206d61726b>-2.559 F .059 -<65642077697468206120646f75626c65206461672d>-.1 F -<67657220288829206170706c7920746f20636c69656e7420534d5450>117 397.8 Q -<2e>-1.11 E -.15<466f>142 414 S 2.5<7265>.15 G -<78616d706c652c20746865206c696e65733a>-2.65 E 2.5<4f54>157 430.2 S -<696d656f75742e636f6d6d616e643d32356d>-2.85 E 2.5<4f54>157 442.2 S -<696d656f75742e64617461626c6f636b3d3368>-2.85 E .343 -<73657473207468652073657276>117 458.4 R .344<657220534d545020636f6d6d61 -6e642074696d656f757420746f203235206d696e7574657320616e642074686520696e70 -7574206461746120626c6f636b2074696d656f757420746f207468726565>-.15 F -<686f7572732e>117 470.4 Q F0 2.5<342e312e332e204d657373616765>102 494.4 -R<74696d656f757473>2.5 E F1 .464 -<41667465722073697474696e6720696e2074686520717565756520666f722061206665> -142 510.6 R 2.964<7764>-.25 G .464<6179732c20616e20756e64656c69>-2.964 F --.15<7665>-.25 G .464 -<7261626c65206d6573736167652077696c6c2074696d65206f75742e>.15 F .463 -<54686973206973>5.463 F .164<746f20696e737572652074686174206174206c6561 -7374207468652073656e6465722069732061>117 522.6 R -.1<7761>-.15 G .165<72 -65206f662074686520696e6162696c69747920746f2073656e642061206d657373616765 -2e>.1 F .165<5468652074696d656f757420697320747970692d>5.165 F .56 -<63616c6c792073657420746f208c76>117 534.6 R 3.06<6564>-.15 G 3.06 -<6179732e204974>-3.06 F .56 -<697320736f6d6574696d657320636f6e7369646572656420636f6e>3.06 F -.15 -<7665>-.4 G .56<6e69656e7420746f20616c736f2073656e6420612077>.15 F .56 -<61726e696e67206d657373616765206966>-.1 F .236<746865206d65737361676520 -697320696e20746865207175657565206c6f6e676572207468616e2061206665>117 -546.6 R 2.736<7768>-.25 G .236 -<6f7572732028617373756d696e6720796f75206e6f726d616c6c79206861>-2.736 F -.537 -.15<76652067>-.2 H .237<6f6f6420636f6e6e65632d>.15 F<7469>117 -558.6 Q 2.074<766974793b20696620796f7572206d65737361676573206e6f726d616c -6c7920746f6f6b207365>-.25 F -.15<7665>-.25 G 2.073 -<72616c20686f75727320746f2073656e6420796f752077>.15 F<6f756c646e27>-.1 E -4.573<7477>-.18 G 2.073<616e7420746f20646f2074686973>-4.673 F .793 -<626563617573652069742077>117 570.6 R<6f756c646e27>-.1 E 3.294<7462>-.18 -G 3.294<6561>-3.294 G 3.294<6e75>-3.294 G .794<6e757375616c2065>-3.294 F --.15<7665>-.25 G 3.294<6e74292e205468657365>.15 F .794 -<74696d656f7574732061726520736574207573696e6720746865>3.294 F F0 -.18 -<5469>3.294 G<6d656f75742e717565756572>.18 E<652d>-.18 E<747572>117 -582.6 Q<6e>-.15 E F1<616e64>3.076 E F0 -.18<5469>3.076 G -<6d656f75742e7175657565776172>.18 E<6e>-.15 E F1 .576<6f7074696f6e732069 -6e2074686520636f6e8c6775726174696f6e208c6c652028707265>3.076 F .576 -<76696f75736c7920626f7468207765726520736574207573696e67>-.25 F<746865> -117 594.6 Q F0<54>2.5 E F1<6f7074696f6e292e>2.5 E 1.367<496620746865206d -657373616765206973207375626d6974746564207573696e6720746865>142 610.8 R -/F3 9/Times-Roman@0 SF<4e4f>3.867 E 1.617<5449465920534d5450>-.36 F F1 --.15<6578>3.868 G 1.368<74656e73696f6e2c2077>.15 F 1.368 -<61726e696e67206d657373616765732077696c6c>-.1 F .888 -<6f6e6c792062652073656e74206966>117 622.8 R F3<4e4f>3.388 E -<544946593d44454c41>-.36 E<59>-.945 E F1 .888<69732073706563698c65642e> -3.388 F .888<54686520717565756572657475726e20616e64207175657565>5.888 F --.1<7761>-.25 G .888<726e2074696d656f7574732063616e206265>.1 F .669<6675 -7274686572207175616c698c65642077697468206120746167206261736564206f6e2074 -686520507265636564656e63653a208c656c6420696e20746865206d6573736167653b20 -746865>117 634.8 R 3.17<796d>-.15 G .67<757374206265206f6e65206f66>-3.17 -F<997572>117 646.8 Q .938 -<67656e749a2028696e6469636174696e67206120706f73697469>-.18 F 1.238 -.15 -<7665206e>-.25 H .938<6f6e2d7a65726f20707265636564656e6365292c20996e6f72 -6d616c9a2028696e6469636174696e672061207a65726f20707265636564656e6365292c> -.15 F 3.495<6f7220996e6f6e2d7572>117 658.8 R 3.495 -<67656e749a2028696e6469636174696e67206e65>-.18 F -.05<6761>-.15 G<7469> -.05 E 3.795 -.15<76652070>-.25 H 5.995<7265636564656e636573292e2046>.15 -F 3.495<6f722065>-.15 F 3.495<78616d706c652c2073657474696e67209954>-.15 -F<696d656f75742e71756575652d>-.35 E -.1<7761>117 670.8 S<726e2e7572>.1 E -.486<67656e743d31689a2073657473207468652077>-.18 F .486 -<61726e696e672074696d656f757420666f72207572>-.1 F .486 -<67656e74206d65737361676573206f6e6c7920746f206f6e6520686f7572>-.18 F -5.485<2e54>-.55 G .485<686520646566>-5.485 F .485<61756c74206966>-.1 F -.205<6e6f20707265636564656e636520697320696e6469636174656420697320746f20 -736574207468652074696d656f757420666f7220616c6c20707265636564656e6365732e> -117 682.8 R .205<496620746865206d657373616765206861732061206e6f726d616c> -5.205 F<28646566>117 694.8 Q 1.278 -<61756c742920707265636564656e636520616e6420697420697320612064656c69>-.1 -F -.15<7665>-.25 G 1.278 -<727920737461747573206e6f74698c636174696f6e202844534e292c>.15 F F0 -.18 -<5469>3.778 G<6d656f75742e717565756572>.18 E<65747572>-.18 E<6e2e64736e> --.15 E F1<616e64>117 706.8 Q F0 -.18<5469>2.675 G -<6d656f75742e7175657565776172>.18 E<6e2e64736e>-.15 E F1 .175 -<63616e206265207573656420746f206769>2.675 F .475 -.15<76652061>-.25 H -2.675<6e61>.15 G<6c7465726e617469>-2.675 E .475 -.15<76652077>-.25 H -.175<61726e20616e642072657475726e2074696d6520666f722044534e732e>.05 F -.242<5468652076>117 718.8 R .242<616c756520226e6f>-.25 F .242 -<77222063616e206265207573656420666f72202d4f2054>-.25 F .241<696d656f7574 -2e717565756572657475726e20746f2072657475726e20656e747269657320696d6d6564 -696174656c7920647572696e672061>-.35 F 0 Cg EP -%%Page: 30 26 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d33302053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF<71756575652072756e2c20652e672e2c20746f20626f756e -6365206d6573736167657320696e646570656e64656e74206f662074686569722074696d -6520696e207468652071756575652e>117 96 Q .28<53696e6365207468657365206f70 -74696f6e732061726520676c6f62616c2c20616e642073696e636520796f752063616e6e -6f74206b6e6f>142 112.2 R<77>-.25 E/F2 10/Times-Italic@0 SF 2.78<6170> -2.78 G<72696f7269>-2.78 E F1<686f>2.78 E 2.78<776c>-.25 G .28 -<6f6e6720616e6f7468657220686f7374>-2.78 F .476 -<6f75747369646520796f757220646f6d61696e2077696c6c20626520646f>117 124.2 -R .475<776e2c2061208c76>-.25 F 2.975<6564>-.15 G .475 -<61792074696d656f7574206973207265636f6d6d656e6465642e>-2.975 F .475 -<5468697320616c6c6f>5.475 F .475<7773206120726563697069656e74>-.25 F -1.579<746f208c78207468652070726f626c656d2065>117 136.2 R -.15<7665>-.25 -G 4.079<6e69>.15 G 4.079<6669>-4.079 G 4.079<746f>-4.079 G 1.579 -<636375727320617420746865206265>-4.079 F 1.58 -<67696e6e696e67206f662061206c6f6e67207765656b>-.15 F 4.08 -<656e642e20524643>-.1 F 1.58<313132332073656374696f6e>4.08 F<352e332e31 -2e3120736179732074686174207468697320706172616d657465722073686f756c642062 -652060>117 148.2 Q<606174206c656173742034ad35206461797327>-.74 E<272e> --.74 E<546865>142 164.4 Q F0 -.18<5469>2.923 G -<6d656f75742e7175657565776172>.18 E<6e>-.15 E F1 -.25<7661>2.923 G .423 -<6c75652063616e2062652070696767796261636b>.25 F .422<6564206f6e20746865> --.1 F F0<54>2.922 E F1 .422 -<6f7074696f6e20627920696e6469636174696e6720612074696d65>2.922 F .845 -<616674657220776869636820612077>117 176.4 R .845<61726e696e67206d657373 -6167652073686f756c642062652073656e743b20746865207477>-.1 F 3.346<6f74> --.1 G .846 -<696d656f7574732061726520736570617261746564206279206120736c6173682e> --3.346 F -.15<466f>5.846 G<72>.15 E -.15<6578>117 188.4 S -<616d706c652c20746865206c696e65>.15 E -.4<4f54>157 204.6 S<35642f3468>.4 -E .972<63617573657320656d61696c20746f2066>117 220.8 R .971 -<61696c206166746572208c76>-.1 F 3.471<6564>-.15 G .971<6179732c2062> --3.471 F .971<757420612077>-.2 F .971<61726e696e67206d657373616765207769 -6c6c2062652073656e7420616674657220666f757220686f7572732e>-.1 F<54686973> -5.971 E<73686f756c64206265206c6172>117 232.8 Q -<676520656e6f756768207468617420746865206d6573736167652077696c6c206861> --.18 E .3 -.15<76652062>-.2 H<65656e207472696564207365>.15 E -.15<7665> --.25 G<72616c2074696d65732e>.15 E F0 2.5<342e322e2046>87 256.8 R -<6f726b696e6720447572696e672051756575652052756e73>-.25 E F1 .848 -<42792073657474696e6720746865>127 273 R F0 -.25<466f>3.348 G -<726b456163684a>.25 E<6f62>-.15 E F1<28>3.348 E F0<59>A F1 3.348<296f>C -<7074696f6e2c>-3.348 E F2<73656e646d61696c>3.348 E F1 .849 -<77696c6c20666f726b206265666f7265206561636820696e6469>3.348 F .849 -<76696475616c206d657373616765>-.25 F .486 -<7768696c652072756e6e696e67207468652071756575652e>102 285 R .486 -<54686973206f7074696f6e2077>5.486 F .486<617320757365642077697468206561 -726c6965722072656c656173657320746f20707265>-.1 F -.15<7665>-.25 G<6e74> -.15 E F2<73656e646d61696c>2.986 E F1 .486<66726f6d20636f6e2d>2.986 F -1.562<73756d696e67206c6172>102 297 R 1.562 -<676520616d6f756e7473206f66206d656d6f7279>-.18 F 6.562<2e49>-.65 G 4.062 -<7473>-6.562 G 1.562 -<686f756c64206e6f206c6f6e676572206265206e65636573736172792077697468> --4.062 F F2<73656e646d61696c>4.062 E F1 4.062<382e31322e204966>4.062 F -<746865>4.062 E F0 -.25<466f>102 309 S<726b456163684a>.25 E<6f62>-.15 E -F1 .246<6f7074696f6e206973206e6f74207365742c>2.746 F F2 -<73656e646d61696c>2.746 E F1 .245<77696c6c206b>2.745 F .245 -<65657020747261636b206f6620686f73747320746861742061726520646f>-.1 F .245 -<776e20647572696e6720612071756575652072756e2c>-.25 F -<77686963682063616e20696d70726f>102 321 Q .3 -.15<76652070>-.15 H -<6572666f726d616e6365206472616d61746963616c6c79>.15 E<2e>-.65 E -<496620746865>127 337.2 Q F0 -.25<466f>2.5 G<726b456163684a>.25 E<6f62> --.15 E F1<6f7074696f6e206973207365742c>2.5 E F2<73656e646d61696c>2.5 E -F1<63616e6e6f742075736520636f6e6e656374696f6e2063616368696e672e>2.5 E F0 -2.5<342e332e205175657565>87 361.2 R<5072696f726974696573>2.5 E F1<4576> -127 377.4 Q 1.128<657279206d6573736167652069732061737369676e656420612070 -72696f72697479207768656e206974206973208c72737420696e7374616e746961746564 -2c20636f6e73697374696e67206f6620746865206d657373616765>-.15 F .286 -<73697a652028696e20627974657329206f66>102 389.4 R .286<6673657420627920 -746865206d65737361676520636c617373202877686963682069732064657465726d696e -65642066726f6d2074686520507265636564656e63653a20686561646572292074696d65 -73>-.25 F .342<746865209977>102 401.4 R .342<6f726b20636c6173732066>-.1 -F .343<6163746f729a20616e6420746865206e756d626572206f662072656369706965 -6e74732074696d657320746865209977>-.1 F .343 -<6f726b20726563697069656e742066>-.1 F<6163746f72>-.1 E 4.243 -.7 -<2e9a2054>-.55 H .343<6865207072696f72697479>.7 F .073 -<6973207573656420746f206f72646572207468652071756575652e>102 413.4 R .073 -<486967686572206e756d6265727320666f7220746865207072696f72697479206d6561 -6e207468617420746865206d6573736167652077696c6c2062652070726f636573736564> -5.073 F<6c61746572207768656e2072756e6e696e67207468652071756575652e>102 -425.4 Q .328<546865206d6573736167652073697a6520697320696e636c7564656420 -736f2074686174206c6172>127 441.6 R .329 -<6765206d65737361676573206172652070656e616c697a65642072656c617469>-.18 F -.629 -.15<76652074>-.25 H 2.829<6f73>.15 G .329 -<6d616c6c206d657373616765732e>-2.829 F .285 -<546865206d65737361676520636c61737320616c6c6f>102 453.6 R .285<77732075 -7365727320746f2073656e64209968696768207072696f726974799a206d657373616765 -7320627920696e636c7564696e6720612099507265636564656e63653a9a208c656c64> --.25 F .007<696e207468656972206d6573736167653b207468652076>102 465.6 R -.007<616c7565206f662074686973208c656c64206973206c6f6f6b>-.25 F .008 -<656420757020696e20746865>-.1 F F0<50>2.508 E F1 .008 -<6c696e6573206f662074686520636f6e8c6775726174696f6e208c6c652e>2.508 F -.008<53696e636520746865>5.008 F 1.967 -<6e756d626572206f6620726563697069656e7473206166>102 477.6 R 1.967<666563 -74732074686520616d6f756e74206f66206c6f61642061206d6573736167652070726573 -656e747320746f207468652073797374656d2c207468697320697320616c736f>-.25 F -<696e636c7564656420696e746f20746865207072696f72697479>102 489.6 Q<2e> --.65 E .53<54686520726563697069656e7420616e6420636c6173732066>127 505.8 -R .53<6163746f72732063616e2062652073657420696e2074686520636f6e8c67757261 -74696f6e208c6c65207573696e6720746865>-.1 F F0<526563697069656e7446>3.03 -E<6163746f72>-.25 E F1<28>102 517.8 Q F0<79>A F1 3.443<2961>C<6e64> --3.443 E F0<436c61737346>3.443 E<6163746f72>-.25 E F1<28>3.442 E F0<7a>A -F1 3.442<296f>C .942<7074696f6e73207265737065637469>-3.442 F -.15<7665> --.25 G<6c79>.15 E 5.942<2e54>-.65 G<6865>-5.942 E 3.442<7964>-.15 G -<6566>-3.442 E .942 -<61756c7420746f2033303030302028666f722074686520726563697069656e742066> --.1 F .942<6163746f722920616e64>-.1 F -<313830302028666f722074686520636c6173732066>102 529.8 Q 2.5 -<6163746f72292e20546865>-.1 F<696e697469616c207072696f726974792069733a> -2.5 E F2<707269>169.68 547.8 Q/F3 10/Symbol SF<3d>3.05 E F2 -<6d736773697a65>3.18 E F3<2d>2.27 E F1<28>1.72 E F2<636c617373>.2 E F3 -2.3 E F0<436c617373466163746f7229>1.71 E F3<2b>2.1 E F1<28>1.72 E F2 -<6e72637074>.36 E F32.71 E F0<526563697069656e74466163746f7229>1.94 -E F1<2852656d656d626572>102 565.8 Q 3.328<2c68>-.4 G .828 -<69676865722076>-3.328 F .828<616c75657320666f72207468697320706172616d65 -7465722061637475616c6c79206d65616e207468617420746865206a6f622077696c6c20 -626520747265617465642077697468206c6f>-.25 F<776572>-.25 E -<7072696f72697479>102 577.8 Q<2e29>-.65 E 1.519<546865207072696f72697479 -206f662061206a6f622063616e20616c736f2062652061646a7573746564206561636820 -74696d652069742069732070726f6365737365642028746861742069732c206561636820 -74696d6520616e>127 594 R .235 -<617474656d7074206973206d61646520746f2064656c69>102 606 R -.15<7665>-.25 -G 2.736<7269>.15 G .236<7429207573696e6720746865209977>-2.736 F .236 -<6f726b2074696d652066>-.1 F<6163746f72>-.1 E 1.636 -.7<2c9a2073>-.4 H -.236<657420627920746865>.7 F F0<526574727946>2.736 E<6163746f72>-.25 E -F1<28>2.736 E F0<5a>A F1 2.736<296f>C 2.736<7074696f6e2e2054686973> --2.736 F .367<697320616464656420746f20746865207072696f72697479>102 618 R -2.867<2c73>-.65 G 2.867<6f69>-2.867 G 2.867<746e>-2.867 G .366<6f726d61 -6c6c79206465637265617365732074686520707265636564656e6365206f662074686520 -6a6f622c206f6e207468652067726f756e64732074686174206a6f6273>-2.867 F .137 -<74686174206861>102 630 R .437 -.15<76652066>-.2 H .137 -<61696c6564206d616e>.05 F 2.637<7974>-.15 G .137 -<696d65732077696c6c2074656e6420746f2066>-2.637 F .137<61696c206167>-.1 F -.137<61696e20696e20746865206675747572652e>-.05 F<546865>5.137 E F0 -<526574727946>2.637 E<6163746f72>-.25 E F1 .137<6f7074696f6e20646566> -2.637 F .138<61756c747320746f>-.1 F<39303030302e>102 642 Q F0 2.5 -<342e342e204c6f6164>87 666 R<4c696d6974696e67>2.5 E F2<53656e646d61696c> -127 682.2 Q F1 .102<63616e2062652061736b>2.602 F .101 -<656420746f207175657565202862>-.1 F .101<7574206e6f742064656c69>-.2 F --.15<7665>-.25 G .101 -<7229206d61696c206966207468652073797374656d206c6f61642061>.15 F -.15 -<7665>-.2 G .101<72616765206765747320746f6f2068696768>.15 F .483 -<7573696e6720746865>102 694.2 R F0<51756575654c41>2.983 E F1<28>2.983 E -F0<78>A F1 2.983<296f>C 2.983<7074696f6e2e205768656e>-2.983 F .483 -<746865206c6f61642061>2.983 F -.15<7665>-.2 G .483<726167652065>.15 F -.483<786365656473207468652076>-.15 F .484<616c7565206f6620746865>-.25 F -F0<51756575654c41>2.984 E F1<6f7074696f6e2c>2.984 E .532 -<7468652064656c69>102 706.2 R -.15<7665>-.25 G .532 -<7279206d6f64652069732073657420746f>.15 F F0<71>3.032 E F1 .532 -<287175657565206f6e6c792920696620746865>3.032 F F0<517565756546>3.032 E -<6163746f72>-.25 E F1<28>3.032 E F0<71>A F1 3.032<296f>C .531 -<7074696f6e206469>-3.032 F .531<76696465642062792074686520646966>-.25 F -<666572656e6365>-.25 E .01<696e207468652063757272656e74206c6f61642061> -102 718.2 R -.15<7665>-.2 G .01<7261676520616e6420746865>.15 F F0 -<51756575654c41>2.51 E F1 .01<6f7074696f6e20706c7573206f6e65206973206c65 -7373207468616e20746865207072696f72697479206f6620746865206d657373616765> -2.51 F 0 Cg EP -%%Page: 31 27 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3331>195.86 E -/F1 10/Times-Roman@0 SF 2.5<8a74>102 96 S -<6861742069732c20746865206d65737361676520697320717565756564206966>-2.5 E -<663a>-.25 E/F2 10/Times-Italic@0 SF<707269>252.26 119.41 Q F1<3e>3.16 E -F0<5175657565466163746f72>14.305 -7 M F2<4c41>-65.825 14 M/F3 10/Symbol -SF<2d>2.12 E F0<51756575654c41>1.85 E F3<2b>2.1 E F1<31>1.09 E .4 LW -353.79 116.81 276.73 116.81 DL<546865>102 142.67 Q F0<517565756546>2.616 -E<6163746f72>-.25 E F1 .116<6f7074696f6e20646566>2.616 F .116<61756c7473 -20746f203630303030302c20736f206561636820706f696e74206f66206c6f61642061> --.1 F -.15<7665>-.2 G .116<726167652069732077>.15 F .116 -<6f72746820363030303030207072696f72697479>-.1 F -<706f696e747320286173206465736372696265642061626f>102 154.67 Q -.15 -<7665>-.15 G<292e>.15 E -.15<466f>127 170.87 S 3.893<7264>.15 G 1.393 -<7261737469632063617365732c20746865>-3.893 F F0<5265667573654c41>3.893 E -F1<28>3.893 E F0<58>A F1 3.893<296f>C 1.394 -<7074696f6e2064658c6e65732061206c6f61642061>-3.893 F -.15<7665>-.2 G -1.394<72616765206174207768696368>.15 F F2<73656e646d61696c>3.894 E F1 -<77696c6c>3.894 E .433<72656675736520746f20616363657074206e657477>102 -182.87 R .432<6f726b20636f6e6e656374696f6e732e>-.1 F .432<4c6f63616c6c79 -2067656e657261746564206d61696c2c20692e652e2c206d61696c207768696368206973 -206e6f74207375626d697474656420766961>5.432 F .317<534d54502028696e636c75 -64696e6720696e636f6d696e672055554350206d61696c292c206973207374696c6c2061 -636365707465642e>102 194.87 R .318<4e6f74696365207468617420746865204d53 -50207375626d697473206d61696c20746f20746865>5.317 F<4d54>102 206.87 Q -3.214<4176>-.93 G .714<696120534d5450>-3.214 F 3.214<2c61>-1.11 G .713< -6e642068656e6365206d61696c2077696c6c2062652071756575656420696e2074686520 -636c69656e7420717565756520696e2073756368206120636173652e>-3.214 F .713 -<5468657265666f7265206974206973>5.713 F<6e656365737361727920746f2072756e -2074686520636c69656e74206d61696c20717565756520706572696f646963616c6c79> -102 218.87 Q<2e>-.65 E F0 2.5<342e352e205265736f7572>87 242.87 R -<6365204c696d697473>-.18 E F2<53656e646d61696c>127 259.07 Q F1 .807 -<686173207365>3.307 F -.15<7665>-.25 G .807<72616c20706172616d6574657273 -20746f20636f6e74726f6c207265736f757263652075736167652e>.15 F .808 -<426573696465732074686f7365206d656e74696f6e74656420696e20746865>5.808 F -<707265>102 271.07 Q 8.476 -<76696f75732073656374696f6e2c20746865726520617265206174206c65617374>-.25 -F F0<4d61784461656d6f6e4368696c6472>10.975 E<656e>-.18 E F1<2c>A F0 -<436f6e6e656374696f6e52617465546872>10.975 E<6f74746c65>-.18 E F1<2c>A -F0<4d617851756575654368696c6472>102 283.07 Q<656e>-.18 E F1 3.889<2c61>C -<6e64>-3.889 E F0<4d617852756e6e65727350>3.889 E<65725175657565>-.2 E F1 -6.389<2e54>C 1.389<6865206c6174746572207477>-6.389 F 3.889<6f6c>-.1 G -1.389<696d697420746865206e756d626572206f66>-3.889 F F2<73656e646d61696c> -3.889 E F1 1.315<70726f6365737365732074686174206f706572617465206f6e2074 -68652071756575652e>102 295.07 R 1.315<5468657365206172652064697363757373 -656420696e207468652073656374696f6e2060>6.315 F 1.315 -<6051756575652047726f7570204465636c6172612d>-.74 F<74696f6e27>102 307.07 -Q 2.712<272e20546865>-.74 F .212<666f726d6572207477>2.712 F 2.712<6f63> --.1 G .212<616e206265207573656420746f206c696d697420746865206e756d626572 -206f6620696e636f6d696e6720636f6e6e656374696f6e732e>-2.712 F .212 -<546865697220617070726f707269617465>5.212 F -.25<7661>102 319.07 S .062< -6c75657320646570656e64206f6e2074686520686f7374206f7065726174696e67207379 -7374656d20616e6420746865206861726477>.25 F .062 -<6172652c20652e672e2c20616d6f756e74206f66206d656d6f7279>-.1 F 5.062 -<2e49>-.65 G 2.561<6e6d>-5.062 G<616e>-2.561 E 2.561<7973>-.15 G<69742d> --2.561 E 1.082<756174696f6e73206974206d696768742062652075736566756c2074 -6f20736574206c696d69747320746f20707265>102 331.07 R -.15<7665>-.25 G -1.082<6e7420746f206861>.15 F 1.382 -.15<76652074>-.2 H 1.082 -<6f6f206d616e>.15 F<79>-.15 E F2<73656e646d61696c>3.582 E F1 1.082 -<70726f6365737365732c20686f>3.582 F<7765>-.25 E -.15<7665>-.25 G -.4 -<722c>.15 G .652<7468657365206c696d6974732063616e206265206162>102 343.07 -R .652<7573656420746f206d6f756e7420612064656e69616c206f6620736572766963 -652061747461636b2e>-.2 F -.15<466f>5.652 G 3.152<7265>.15 G .652 -<78616d706c652c206966>-3.302 F F0<4d61784461656d6f6e4368696c2d>3.152 E -<6472>102 355.07 Q<656e3d3130>-.18 E F1 .9<7468656e20616e2061747461636b> -3.4 F .901<6572206e6565647320746f206f70656e206f6e6c7920313020534d545020 -73657373696f6e7320746f207468652073657276>-.1 F<6572>-.15 E 3.401<2c6c> --.4 G<6561>-3.401 E 1.201 -.15<76652074>-.2 H .901 -<68656d2069646c6520666f72>.15 F .591<6d6f7374206f66207468652074696d652c -20616e64206e6f206d6f726520636f6e6e656374696f6e732077696c6c20626520616363 -65707465642e>102 367.07 R .591<49662074686973206f7074696f6e206973207365 -74207468656e207468652074696d656f757473>5.591 F 1.187 -<7573656420696e206120534d54502073657373696f6e2073686f756c64206265206c6f> -102 379.07 R 1.187<77657265642066726f6d20746865697220646566>-.25 F 1.187 -<61756c742076>-.1 F 1.187 -<616c75657320746f207468656972206d696e696d756d2076>-.25 F 1.187 -<616c756573206173>-.25 F<73706563698c656420696e20524643203238323120616e -64206c697374656420696e2073656374696f6e20342e312e322e>102 391.07 Q F0 2.5 -<342e362e204d6561737572>87 415.07 R -<657320616761696e73742044656e69616c206f6620536572>-.18 E -<766963652041747461636b73>-.1 E F2<53656e646d61696c>127 431.27 Q F1 -1.674<68617320736f6d652062>4.174 F 1.674 -<75696c742d696e206d65617375726573206167>-.2 F 1.673<61696e73742073696d70 -6c652064656e69616c206f6620736572766963652028446f53292061747461636b732e> --.05 F<546865>6.673 E .913<534d54502073657276>102 443.27 R .913 -<657220627920646566>-.15 F .913<61756c7420736c6f>-.1 F .913<777320646f> --.25 F .913<776e20696620746f6f206d616e>-.25 F 3.413<7962>-.15 G .913<61 -6420636f6d6d616e64732061726520697373756564206f7220696620736f6d6520636f6d -6d616e6473>-3.413 F .034<61726520726570656174656420746f6f206f6674656e20 -77697468696e20612073657373696f6e2e>102 455.27 R .033<44657461696c732063 -616e20626520666f756e6420696e2074686520736f75726365208c6c65>5.033 F F0 -<73656e646d61696c2f7372>2.533 E<7672736d74702e63>-.1 E F1 2.169<6279206c -6f6f6b696e6720666f7220746865206d6163726f2064658c6e6974696f6e73206f66>102 -467.27 R F0<4d415842>4.669 E<4144434f4d4d414e4453>-.3 E F1<2c>A F0 -<4d41584e4f4f50434f4d4d414e4453>4.669 E F1<2c>A F0 -<4d415848454c4f434f4d4d414e4453>102 479.27 Q F1<2c>A F0 -<4d415856524659434f4d4d414e4453>4.414 E F1 4.414<2c61>C<6e64>-4.414 E F0 -<4d41584554524e434f4d4d414e4453>4.414 E F1 6.914<2e49>C 4.414<6661> --6.914 G<6e>-4.414 E .462<534d545020636f6d6d616e642069732069737375656420 -6d6f7265206f6674656e207468616e2074686520636f72726573706f6e64696e67>102 -491.27 R F0<4d4158636d64434f4d4d414e4453>2.962 E F1 -.25<7661>2.962 G -.462<6c75652c207468656e>.25 F .217 -<74686520726573706f6e73652069732064656c617965642065>102 503.27 R -<78706f6e656e7469616c6c79>-.15 E 2.717<2c73>-.65 G .216<74617274696e6720 -77697468206120736c6565702074696d65206f66206f6e65207365636f6e642c20757020 -746f2061206d6178696d756d206f66>-2.717 F 1.687 -<666f7572206d696e75746573202861732064658c6e6564206279>102 515.27 R F0 -<4d415854494d454f5554>4.187 E F1 4.187<292e204966>B 1.687 -<746865206f7074696f6e>4.187 F F0<4d61784461656d6f6e4368696c6472>4.187 E -<656e>-.18 E F1 1.687<69732073657420746f2061>4.187 F -.25<7661>102 -527.27 S .735<6c75652067726561746572207468616e207a65726f2c207468656e2074 -68697320636f756c64206d616b>.25 F 3.235<656144>-.1 G .735 -<6f532061747461636b2065>-3.235 F -.15<7665>-.25 G 3.235<6e77>.15 G .734 -<6f7273652073696e6365206974206b>-3.335 F .734 -<65657073206120636f6e6e656374696f6e>-.1 F .867 -<6f70656e206c6f6e676572207468616e206e6563657373617279>102 539.27 R 5.867 -<2e54>-.65 G .867<68657265666f7265206120636f6e6e656374696f6e206973207465 -726d696e61746564207769746820612034323120534d5450207265706c7920636f646520 -6966>-5.867 F .57<746865206e756d626572206f6620636f6d6d616e64732065>102 -551.27 R .57<78636565647320746865206c696d697420627920612066>-.15 F .57 -<6163746f72206f66207477>-.1 F 3.07<6f61>-.1 G<6e64>-3.07 E F0<4d415842> -3.07 E<4144434f4d4d414e4453>-.3 E F1 .57<697320736574>3.07 F -<746f20612076>102 563.27 Q -<616c75652067726561746572207468616e207a65726f202874686520646566>-.25 E -<61756c74206973203235292e>-.1 E F0 2.5<342e372e2044656c69>87 587.27 R --.1<7665>-.1 G<7279204d6f6465>.1 E F1 .253 -<5468657265206172652061206e756d626572206f662064656c69>127 603.47 R -.15 -<7665>-.25 G .253<7279206d6f6465732074686174>.15 F F2<73656e646d61696c> -2.753 E F1 .254<63616e206f70657261746520696e2c2073657420627920746865> -2.753 F F0<44656c69>2.754 E -.1<7665>-.1 G<72794d6f6465>.1 E F1<28>102 -615.47 Q F0<64>A F1 3.599<2963>C 1.099 -<6f6e8c6775726174696f6e206f7074696f6e2e>-3.599 F 1.099 -<5468657365206d6f646573207370656369667920686f>6.099 F 3.598<7771>-.25 G -1.098<7569636b6c79206d61696c2077696c6c2062652064656c69>-3.598 F -.15 -<7665>-.25 G 3.598<7265642e204c65>.15 F -.05<6761>-.15 G 3.598<6c6d>.05 -G<6f646573>-3.598 E<6172653a>102 627.47 Q 17.22<6964>142 643.67 S -<656c69>-17.22 E -.15<7665>-.25 G 2.5<7269>.15 G<6e74657261637469>-2.5 E --.15<7665>-.25 G<6c79202873796e6368726f6e6f75736c7929>.15 E 15<6264>142 -655.67 S<656c69>-15 E -.15<7665>-.25 G 2.5<7269>.15 G 2.5<6e62>-2.5 G -<61636b67726f756e6420286173796e6368726f6e6f75736c7929>-2.5 E 15<7171>142 -667.67 S<75657565206f6e6c792028646f6e27>-15 E 2.5<7464>-.18 G<656c69> --2.5 E -.15<7665>-.25 G<7229>.15 E 15<6464>142 679.67 S -<656665722064656c69>-15 E -.15<7665>-.25 G -<727920617474656d7074732028646f6e27>.15 E 2.5<7464>-.18 G<656c69>-2.5 E --.15<7665>-.25 G<7229>.15 E 1.273<5468657265206172652074726164656f66>102 -695.87 R 3.773<66732e204d6f6465>-.25 F 1.273<99699a206769>3.773 F -.15 -<7665>-.25 G 3.773<7374>.15 G 1.273 -<68652073656e6465722074686520717569636b>-3.773 F 1.273 -<65737420666565646261636b2c2062>-.1 F 1.274<7574206d617920736c6f>-.2 F -3.774<7764>-.25 G -.25<6f77>-3.774 G 3.774<6e73>.25 G<6f6d65>-3.774 E -.799<6d61696c65727320616e6420697320686172646c792065>102 707.87 R -.15 -<7665>-.25 G 3.299<726e>.15 G<6563657373617279>-3.299 E 5.799<2e4d>-.65 -G .799<6f64652099629a2064656c69>-5.799 F -.15<7665>-.25 G .799 -<72732070726f6d70746c792062>.15 F .798<75742063616e206361757365206c6172> --.2 F .798<6765206e756d62657273206f66>-.18 F .223 -<70726f63657373657320696620796f75206861>102 719.87 R .524 -.15 -<76652061206d>-.2 H .224<61696c657220746861742074616b>.15 F .224 -<65732061206c6f6e672074696d6520746f2064656c69>-.1 F -.15<7665>-.25 G -2.724<72616d>.15 G 2.724<6573736167652e204d6f6465>-2.724 F .224 -<99719a206d696e696d697a657320746865>2.724 F 0 Cg EP -%%Page: 32 28 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d33322053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF .597 -<6c6f6164206f6e20796f7572206d616368696e652c2062>102 96 R .597 -<7574206d65616e7320746861742064656c69>-.2 F -.15<7665>-.25 G .596<727920 -6d61792062652064656c6179656420666f7220757020746f207468652071756575652069 -6e74657276>.15 F 3.096<616c2e204d6f6465>-.25 F .36 -<99649a206973206964656e746963616c20746f206d6f64652099719a2065>102 108 R -.36<7863657074207468617420697420616c736f20707265>-.15 F -.15<7665>-.25 G -.36<6e7473206c6f6f6b75707320696e206d61707320696e636c7564696e6720746865> -.15 F F0<2d44>2.86 E F1 .36<8d61672066726f6d>2.86 F -.1<776f>102 120 S -2.076<726b696e6720647572696e672074686520696e697469616c207175657565207068 -6173653b20697420697320696e74656e64656420666f722060>.1 F 2.075 -<606469616c206f6e2064656d616e6427>-.74 F 4.575<2773>-.74 G 2.075 -<6974657320776865726520444e53>-4.575 F .318 -<6c6f6f6b757073206d6967687420636f7374207265616c206d6f6e65>102 132 R -4.118 -.65<792e2053>-.15 H .319<6f6d652073696d706c65206572726f72206d6573 -73616765732028652e672e2c20686f737420756e6b6e6f>.65 F .319 -<776e20647572696e672074686520534d5450>-.25 F<70726f746f636f6c292077696c -6c2062652064656c61796564207573696e672074686973206d6f64652e>102 144 Q -<4d6f64652099629a2069732074686520757375616c20646566>5 E<61756c742e>-.1 E -.052<496620796f752072756e20696e206d6f64652099719a20287175657565206f6e6c -79292c2099649a20286465666572292c206f722099629a202864656c69>127 160.2 R --.15<7665>-.25 G 2.552<7269>.15 G 2.552<6e62>-2.552 G -<61636b67726f756e6429>-2.552 E/F2 10/Times-Italic@0 SF<73656e646d61696c> -2.551 E F1<77696c6c>2.551 E 1.391<6e6f742065>102 172.2 R 1.392 -<7870616e6420616c696173657320616e6420666f6c6c6f>-.15 F 3.892<772e>-.25 G -<666f7277>-3.892 E 1.392<617264208c6c65732075706f6e20696e697469616c2072 -656365697074206f6620746865206d61696c2e>-.1 F 1.392 -<546869732073706565647320757020746865>6.392 F -<726573706f6e736520746f205243505420636f6d6d616e64732e>102 184.2 Q<4d6f64 -652099699a2073686f756c64206e6f7420626520757365642062792074686520534d5450 -2073657276>5 E<6572>-.15 E<2e>-.55 E F0 2.5<342e382e204c6f67>87 208.2 R -<4c65>2.5 E -.1<7665>-.15 G<6c>.1 E F1 .19<546865206c65>127 224.4 R -.15 -<7665>-.25 G 2.69<6c6f>.15 G 2.69<666c>-2.69 G .19 -<6f6767696e672063616e2062652073657420666f72>-2.69 F F2<73656e646d61696c> -2.689 E F1 5.189<2e54>C .189<686520646566>-5.189 F .189<61756c7420757369 -6e672061207374616e6461726420636f6e8c6775726174696f6e207461626c65>-.1 F -<6973206c65>102 236.4 Q -.15<7665>-.25 G 2.5<6c39>.15 G 5<2e54>-2.5 G -<6865206c65>-5 E -.15<7665>-.25 G<6c732061726520617320666f6c6c6f>.15 E -<77733a>-.25 E 31<304d>102 252.6 S<696e696d616c206c6f6767696e672e>-31 E -31<3153>102 268.8 S<6572696f75732073797374656d2066>-31 E<61696c75726573 -20616e6420706f74656e7469616c2073656375726974792070726f626c656d732e>-.1 E -31<324c>102 285 S<6f737420636f6d6d756e69636174696f6e7320286e657477>-31 E -<6f726b2070726f626c656d732920616e642070726f746f636f6c2066>-.1 E -<61696c757265732e>-.1 E 31<334f>102 301.2 S 1.237 -<7468657220736572696f75732066>-31 F 1.237<61696c757265732c206d616c666f72 -6d6564206164647265737365732c207472616e7369656e7420666f7277>-.1 F 1.238 -<6172642f696e636c756465206572726f72732c20636f6e6e656374696f6e>-.1 F -<74696d656f7574732e>138 313.2 Q 31<344d>102 329.4 S<696e6f722066>-31 E< -61696c757265732c206f7574206f66206461746520616c69617320646174616261736573 -2c20636f6e6e656374696f6e2072656a656374696f6e732076696120636865636b5f2072 -756c65736574732e>-.1 E 31<354d>102 345.6 S -<65737361676520636f6c6c656374696f6e20737461746973746963732e>-31 E 31 -<3643>102 361.8 S<72656174696f6e206f66206572726f72206d657373616765732c20 -5652465920616e64204558504e20636f6d6d616e64732e>-31 E 31<3744>102 378 S -<656c69>-31 E -.15<7665>-.25 G<72792066>.15 E -<61696c757265732028686f7374206f72207573657220756e6b6e6f>-.1 E -<776e2c206574632e292e>-.25 E 31<3853>102 394.2 S -<75636365737366756c2064656c69>-31 E -.15<7665>-.25 G -<7269657320616e6420616c69617320646174616261736520726562>.15 E -<75696c64732e>-.2 E 31<394d>102 410.4 S<65737361676573206265696e67206465 -666572726564202864756520746f206120686f7374206265696e6720646f>-31 E -<776e2c206574632e292e>-.25 E 23.5<3130204461746162617365>102 426.6 R --.15<6578>2.5 G<70616e73696f6e2028616c6961732c20666f7277>.15 E<6172642c -20616e6420757365726462206c6f6f6b7570732920616e642061757468656e7469636174 -696f6e20696e666f726d6174696f6e2e>-.1 E 23.5<3131204e4953>102 442.8 R -<6572726f727320616e6420656e64206f66206a6f622070726f63657373696e672e>2.5 -E 23.5<3132204c6f6773>102 459 R -<616c6c20534d545020636f6e6e656374696f6e732e>2.5 E 23.5<3133204c6f67>102 -475.2 R<6261642075736572207368656c6c732c208c6c6573207769746820696d70726f -706572207065726d697373696f6e732c20616e64206f74686572207175657374696f6e61 -626c6520736974756174696f6e732e>2.5 E 23.5<3134204c6f6773>102 491.4 R -<7265667573656420636f6e6e656374696f6e732e>2.5 E 23.5<3135204c6f67>102 -507.6 R<616c6c20696e636f6d696e6720616e64206f7574676f696e6720534d54502063 -6f6d6d616e64732e>2.5 E 23.5<3230204c6f6773>102 523.8 R .603 -<617474656d70747320746f2072756e206c6f636b>3.103 F .603 -<6564207175657565208c6c65732e>-.1 F .603 -<546865736520617265206e6f74206572726f72732c2062>5.603 F .603 -<75742063616e2062652075736566756c20746f206e6f7465206966>-.2 F -<796f7572207175657565206170706561727320746f20626520636c6f676765642e>138 -535.8 Q 23.5<3330204c6f7374>102 552 R<6c6f636b7320286f6e6c79206966207573 -696e67206c6f636b6620696e7374656164206f66208d6f636b292e>2.5 E -<4164646974696f6e616c6c79>102 568.2 Q 2.716<2c76>-.65 G .216 -<616c7565732061626f>-2.966 F .516 -.15<76652036>-.15 H 2.716<3461>.15 G -.216<726520726573657276>-2.716 F .216<656420666f722065>-.15 F .216 -<787472656d656c792076>-.15 F .216<6572626f736520646562>-.15 F .216 -<756767696e67206f75747075742e>-.2 F .217<4e6f206e6f726d616c2073697465> -5.216 F -.1<776f>102 580.2 S<756c642065>.1 E -.15<7665>-.25 G 2.5<7273> -.15 G<65742074686573652e>-2.5 E F0 2.5<342e392e2046696c65>87 604.2 R -<4d6f646573>2.5 E F1 .264<546865206d6f646573207573656420666f72208c6c6573 -20646570656e64206f6e20776861742066756e6374696f6e616c69747920796f752077> -127 620.4 R .264<616e7420616e6420746865206c65>-.1 F -.15<7665>-.25 G -2.763<6c6f>.15 G 2.763<6673>-2.763 G .263<6563757269747920796f75>-2.763 -F 2.56<726571756972652e20496e>102 632.4 R<6d616e>2.56 E 2.56<7963>-.15 G -<61736573>-2.56 E F2<73656e646d61696c>2.56 E F1 .061<646f65732063617265 -66756c20636865636b696e67206f6620746865206d6f646573206f66208c6c657320616e -64206469726563746f7269657320746f2061>2.56 F -.2<766f>-.2 G<6964>.2 E -1.336<6163636964656e74616c20636f6d70726f6d6973653b20696620796f752077>102 -644.4 R 1.336<616e7420746f206d616b>-.1 F 3.836<6569>-.1 G 3.836<7470> --3.836 G 1.336<6f737369626c6520746f206861>-3.836 F 1.635 -.15<76652067> --.2 H 1.335 -<726f75702d7772697461626c6520737570706f7274208c6c657320796f75>.15 F -<6d6179206e65656420746f2075736520746865>102 656.4 Q F0 -<446f6e74426c616d6553656e646d61696c>2.5 E F1 -<6f7074696f6e20746f207475726e206f66>2.5 E 2.5<6673>-.25 G -<6f6d65206f6620746865736520636865636b732e>-2.5 E F0 2.5 -<342e392e312e2054>102 680.4 R 2.5<6f73>-.92 G -<756964206f72206e6f7420746f20737569643f>-2.5 E F2<53656e646d61696c>142 -696.6 Q F1 .162 -<6973206e6f206c6f6e67657220696e7374616c6c6564207365742d75736572>2.662 F -.163<2d494420746f20726f6f742e>-.2 F .163 -<73656e646d61696c2f53454355524954592065>5.163 F .163 -<78706c61696e7320686f>-.15 F 2.663<7774>-.25 G<6f>-2.663 E .56 -<636f6e8c6775726520616e6420696e7374616c6c>117 708.6 R F2 -<73656e646d61696c>3.06 E F1 .559<776974686f7574207365742d75736572>3.059 -F .559<2d494420746f20726f6f742062>-.2 F .559 -<7574207365742d67726f75702d49442077686963682069732074686520646566>-.2 F -<61756c74>-.1 E -<636f6e8c6775726174696f6e207374617274696e67207769746820382e31322e>117 -720.6 Q 0 Cg EP -%%Page: 33 29 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3333>195.86 E -/F1 10/Times-Roman@0 SF 1.286<546865206461656d6f6e20757375616c6c79207275 -6e7320617320726f6f742c20756e6c657373206f74686572206d65617375726573206172 -652074616b>142 96 R 3.786<656e2e204174>-.1 F 1.286 -<74686520706f696e74207768657265>3.786 F/F2 10/Times-Italic@0 SF -<73656e646d61696c>117 108 Q F1 .495<69732061626f757420746f>2.995 F F2 --.2<6578>2.995 G<6563>.2 E F1 .495<2832292061206d61696c6572>1.666 F -2.995<2c69>-.4 G 2.995<7463>-2.995 G .495<6865636b7320746f20736565206966 -2074686520757365726964206973207a65726f2028726f6f74293b20696620736f2c2069 -7420726573657473>-2.995 F .333 -<7468652075736572696420616e642067726f7570696420746f206120646566>117 120 -R .333<61756c74202873657420627920746865>-.1 F F0<553d>2.833 E F1 .334<65 -717561746520696e20746865206d61696c6572206c696e653b2069662074686174206973 -206e6f74207365742c20746865>2.833 F F0<44656661756c7455736572>117 132 Q -F1 .122<6f7074696f6e2069732075736564292e>2.622 F .122 -<546869732063616e206265206f>5.122 F -.15<7665>-.15 G .122 -<7272696464656e2062792073657474696e6720746865>.15 F F0<53>2.622 E F1 -.121<8d616720746f20746865206d61696c657220666f72206d61696c2d>2.622 F .804 -<657273207468617420617265207472757374656420616e64206d757374206265206361 -6c6c656420617320726f6f742e>117 144 R<486f>5.804 E<7765>-.25 E -.15<7665> --.25 G 1.604 -.4<722c2074>.15 H .804<6869732077696c6c206361757365206d61 -696c2070726f63657373696e6720746f206265>.4 F -<6163636f756e74656420287573696e67>117 156 Q F2<7361>2.5 E F1<2838292920 -746f20726f6f7420726174686572207468616e20746f2074686520757365722073656e64 -696e6720746865206d61696c2e>1.666 E 3.558<416d>142 172.2 S 1.057 -<6964646c652067726f756e6420697320746f2073657420746865>-3.558 F F0 -<52756e417355736572>3.557 E F1 3.557<6f7074696f6e2e2054686973>3.557 F -<636175736573>3.557 E F2<73656e646d61696c>3.557 E F1 1.057 -<746f206265636f6d6520746865>3.557 F .392<696e64696361746564207573657220 -617320736f6f6e2061732069742068617320646f6e652074686520737461727475702074 -68617420726571756972657320726f6f7420707269>117 184.2 R<76696c65>-.25 E -.392<67657320287072696d6172696c79>-.15 F 2.892<2c6f>-.65 G<70656e696e67> --2.892 E<746865>117 196.2 Q/F3 9/Times-Roman@0 SF<534d5450>3.742 E F1 -<736f636b>3.741 E 3.741<6574292e204966>-.1 F 1.241<796f7520757365>3.741 -F F0<52756e417355736572>3.741 E F1 3.741<2c74>C 1.241 -<6865207175657565206469726563746f727920286e6f726d616c6c79>-3.741 F F2 -<2f7661722f73706f6f6c2f6d7175657565>3.741 E F1<29>A 1.314 -<73686f756c64206265206f>117 208.2 R 1.314 -<776e656420627920746861742075736572>-.25 F 3.815<2c61>-.4 G 1.315<6e6420 -616c6c208c6c657320616e64206461746162617365732028696e636c7564696e67207573 -6572>-3.815 F F2<2e666f72776172>3.815 E<64>-.37 E F1 1.315 -<8c6c65732c20616c696173>3.815 F .257 -<8c6c65732c203a696e636c7564653a208c6c65732c20616e642065>117 220.2 R .256 -<787465726e616c2064617461626173657329206d757374206265207265616461626c65 -20627920746861742075736572>-.15 F 5.256<2e41>-.55 G .256 -<6c736f2c2073696e63652073656e646d61696c>-5.256 F .836<77696c6c206e6f7420 -62652061626c6520746f206368616e676520697473207569642c2064656c69>117 232.2 -R -.15<7665>-.25 G .836 -<727920746f2070726f6772616d73206f72208c6c65732077696c6c206265206d61726b> -.15 F .837<656420617320756e736166652c20652e672e2c>-.1 F<756e64656c69>117 -244.2 Q -.15<7665>-.25 G .815<7261626c652c20696e>.15 F F2 -<2e666f72776172>3.315 E<64>-.37 E F1 3.314<2c61>C .814 -<6c69617365732c20616e64203a696e636c7564653a208c6c65732e>-3.314 F .814 -<41646d696e6973747261746f72732063616e206f>5.814 F -.15<7665>-.15 G .814 -<72726964652074686973206279207365742d>.15 F .7<74696e6720746865>117 -256.2 R F0<446f6e74426c616d6553656e646d61696c>3.2 E F1 .7 -<6f7074696f6e20746f207468652073657474696e67>3.2 F F0 -<4e6f6e526f6f745361666541646472>3.2 E F1<2e>A F0<52756e417355736572>5.7 -E F1 .7<69732070726f62612d>3.2 F 1.186 -<626c7920626573742073756974656420666f72208c7265>117 268.2 R -.1<7761> --.25 G 1.186<6c6c20636f6e8c6775726174696f6e73207468617420646f6e27>.1 F -3.686<7468>-.18 G -2.25 -.2<61762065>-3.686 H<7265>3.886 E 1.186 -<67756c61722075736572206c6f67696e732e>-.15 F 1.186 -<496620746865206f7074696f6e206973>6.186 F 1.442<75736564206f6e2061207379 -7374656d20776869636820706572666f726d73206c6f63616c2064656c69>117 280.2 R --.15<7665>-.25 G<7279>.15 E 3.943<2c74>-.65 G 1.443 -<68656e20746865206c6f63616c2064656c69>-3.943 F -.15<7665>-.25 G 1.443 -<7279206167656e74206d757374206861>.15 F 1.743 -.15<76652074>-.2 H<6865> -.15 E .975<70726f706572207065726d697373696f6e732028692e652e2c2075737561 -6c6c79207365742d75736572>117 292.2 R .975 -<2d494420726f6f74292073696e63652069742077696c6c20626520696e>-.2 F -.2 -<766f>-.4 G -.1<6b65>.2 G 3.474<6462>.1 G 3.474<7974>-3.474 G<6865> --3.474 E F0<52756e417355736572>3.474 E F1<2c>A<6e6f7420627920726f6f742e> -117 304.2 Q F0 2.5<342e392e322e2054>102 328.2 R<7572>-.92 E -<6e696e67206f666620736563757269747920636865636b73>-.15 E F2 -<53656e646d61696c>142 344.4 Q F1 .648<69732076>3.148 F .648<657279207061 -72746963756c61722061626f757420746865206d6f646573206f66208c6c657320746861 -74206974207265616473206f72207772697465732e>-.15 F -.15<466f>5.648 G -3.148<7265>.15 G<78616d706c652c>-3.298 E .251<627920646566>117 356.4 R -.251<61756c742069742077696c6c2072656675736520746f2072656164206d6f737420 -8c6c65732074686174206172652067726f7570207772697461626c65206f6e2074686520 -67726f756e6473207468617420746865>-.1 F 2.75<796d>-.15 G<69676874>-2.75 E -<6861>117 368.4 Q 1.215 -.15<76652062>-.2 H .916<65656e2074616d70657265 -64207769746820627920736f6d656f6e65206f74686572207468616e20746865206f>.15 -F .916<776e65723b2069742077696c6c2065>-.25 F -.15<7665>-.25 G 3.416 -<6e72>.15 G .916<656675736520746f2072656164208c6c657320696e>-3.416 F -1.457<67726f7570207772697461626c65206469726563746f726965732e>117 380.4 R -1.456<416c736f2c2073656e646d61696c2077696c6c2072656675736520746f20637265 -6174652061206e65>6.457 F 3.956<7761>-.25 G 1.456 -<6c696173657320646174616261736520696e20616e>-3.956 F .031 -<756e73616665206469726563746f7279>117 392.4 R 5.031<2e59>-.65 G .031<6f -752063616e206765742061726f756e642074686973206279206d616e75616c6c79206372 -656174696e6720746865206461746162617365208c6c6520617320612074727573746564 -2075736572>-6.131 F -<6168656164206f662074696d6520616e64207468656e20726562>117 404.4 Q -<75696c64696e672074686520616c69617365732064617461626173652077697468>-.2 -E F0<6e6577616c6961736573>2.5 E F1<2e>A .438<496620796f7520617265>142 -420.6 R F2<7175697465>2.938 E F1 .438<73757265207468617420796f757220636f -6e8c6775726174696f6e206973207361666520616e6420796f752077>2.938 F<616e74> --.1 E F2<73656e646d61696c>2.937 E F1 .437<746f2061>2.937 F -.2<766f>-.2 -G .437<6964207468657365>.2 F 1.186 -<736563757269747920636865636b732c20796f752063616e207475726e206f66>117 -432.6 R 3.687<6663>-.25 G 1.187 -<65727461696e20636865636b73207573696e6720746865>-3.687 F F0 -<446f6e74426c616d6553656e646d61696c>3.687 E F1 3.687 -<6f7074696f6e2e2054686973>3.687 F 1.39<6f7074696f6e2074616b>117 444.6 R -1.389<6573206f6e65206f72206d6f7265206e616d657320746861742064697361626c65 -20636865636b732e>-.1 F 1.389 -<496e20746865206465736372697074696f6e73207468617420666f6c6c6f>6.389 F -2.689 -.65<772c2099>-.25 H<756e73616665>.65 E<6469726563746f72799a206d65 -616e732061206469726563746f72792074686174206973207772697461626c6520627920 -616e>117 456.6 Q<796f6e65206f74686572207468616e20746865206f>-.15 E -<776e6572>-.25 E 5<2e54>-.55 G<68652076>-5 E<616c756573206172653a>-.25 E -15.73<53616665204e6f>117 472.8 R<7370656369616c2068616e646c696e672e>2.5 -E<417373756d655361666543686f>117 489 Q<776e>-.25 E .412 -<417373756d65207468617420746865>153 501 R F2 -.15<6368>2.913 G<6f776e> -.15 E F1 .413 -<73797374656d2063616c6c206973207265737472696374656420746f20726f6f742e> -2.913 F .413<53696e636520736f6d652076>5.413 F .413 -<657273696f6e73206f6620554e4958>-.15 F .866<7065726d6974207265>153 513 R -.866<67756c617220757365727320746f206769>-.15 F 1.166 -.15<7665206177> --.25 H .866<6179207468656972208c6c657320746f206f74686572207573657273206f -6e20736f6d65208c6c6573797374656d732c>.05 F F2<73656e642d>3.365 E -<6d61696c>153 525 Q F1 .456 -<6f6674656e2063616e6e6f7420617373756d6520746861742061206769>2.956 F -.15 -<7665>-.25 G 2.956<6e8c>.15 G .456<6c652077>-2.956 F .457 -<6173206372656174656420627920746865206f>-.1 F<776e6572>-.25 E 2.957 -<2c70>-.4 G .457<6172746963756c61726c79207768656e>-2.957 F 1.475 -<697420697320696e2061207772697461626c65206469726563746f7279>153 537 R -6.475<2e59>-.65 G 1.475 -<6f752063616e207365742074686973208d616720696620796f75206b6e6f>-7.575 F -3.974<7774>-.25 G 1.474<686174208c6c65206769>-3.974 F -.15<7665>-.25 G --2.3 -.15<61772061>.15 H 3.974<7969>.15 G<73>-3.974 E -<72657374726963746564206f6e20796f75722073797374656d2e>153 549 Q -<436c61737346696c65496e556e7361666544697250>117 565.2 Q<617468>-.15 E -.493 -<5768656e2072656164696e6720636c617373208c6c657320287573696e6720746865> -153 577.2 R F0<46>2.993 E F1 .493 -<6c696e6520696e2074686520636f6e8c6775726174696f6e208c6c65292c20616c6c6f> -2.993 F 2.994<778c>-.25 G .494<6c6573207468617420617265>-2.994 F -<696e20756e73616665206469726563746f726965732e>153 589.2 Q<446f6e7457>117 -605.4 Q<61726e46>-.8 E<6f7277>-.15 E -<61726446696c65496e556e7361666544697250>-.1 E<617468>-.15 E<507265>153 -617.4 Q -.15<7665>-.25 G<6e74206c6f6767696e67206f6620756e73616665206469 -726563746f727920706174682077>.15 E<61726e696e677320666f72206e6f6e2d65> --.1 E<78697374656e7420666f7277>-.15 E<617264208c6c65732e>-.1 E -<4572726f72486561646572496e556e7361666544697250>117 633.6 Q<617468>-.15 -E<416c6c6f>153 645.6 Q 2.5<7774>-.25 G -<6865208c6c65206e616d656420696e20746865>-2.5 E F0<457272>2.5 E -<6f72486561646572>-.18 E F1 -<6f7074696f6e20746f20626520696e20616e20756e73616665206469726563746f7279> -2.5 E<2e>-.65 E<46696c6544656c69>117 661.8 Q -.15<7665>-.25 G<727954>.15 -E<6f486172644c696e6b>-.8 E<416c6c6f>153 673.8 Q 2.5<7764>-.25 G<656c69> --2.5 E -.15<7665>-.25 G -<727920746f208c6c65732074686174206172652068617264206c696e6b732e>.15 E -<46696c6544656c69>117 690 Q -.15<7665>-.25 G<727954>.15 E -<6f53796d4c696e6b>-.8 E<416c6c6f>153 702 Q 2.5<7764>-.25 G<656c69>-2.5 E --.15<7665>-.25 G -<727920746f208c6c65732074686174206172652073796d626f6c6963206c696e6b732e> -.15 E 0 Cg EP -%%Page: 34 30 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d33342053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF -.15<466f>117 96 S<7277>.15 E -<61726446696c65496e47726f75705772697461626c6544697250>-.1 E<617468>-.15 -E<416c6c6f>153 108 Q<77>-.25 E/F2 10/Times-Italic@0 SF<2e666f72776172> -2.5 E<64>-.37 E F1 -<8c6c657320696e2067726f7570207772697461626c65206469726563746f726965732e> -2.5 E -.15<466f>117 124.2 S<7277>.15 E -<61726446696c65496e556e7361666544697250>-.1 E<617468>-.15 E<416c6c6f>153 -136.2 Q<77>-.25 E F2<2e666f72776172>2.5 E<64>-.37 E F1 -<8c6c657320696e20756e73616665206469726563746f726965732e>2.5 E -.15<466f> -117 152.4 S<7277>.15 E<61726446696c65496e556e7361666544697250>-.1 E -<61746853616665>-.15 E<416c6c6f>153 164.4 Q 2.612<7761>-.25 G F2 -<2e666f72776172>A<64>-.37 E F1 .112<8c6c65207468617420697320696e20616e20 -756e73616665206469726563746f727920746f20696e636c756465207265666572656e63 -657320746f2070726f6772616d20616e64>2.612 F<8c6c65732e>153 176.4 Q -<47726f75705265616461626c654b>117 192.6 Q -.15<6579>-.25 G<46696c65>.15 -E<41636365707420612067726f75702d7265616461626c65206b>153 204.6 Q .3 -.15 -<6579208c>-.1 H<6c6520666f72205354>.15 E<4152>-.93 E<54544c532e>-.6 E -<47726f75705265616461626c655341534c444246696c65>117 220.8 Q<416363657074 -20612067726f75702d7265616461626c65204379727573205341534c207061737377>153 -232.8 Q<6f7264208c6c652e>-.1 E<47726f75705265616461626c65446566>117 249 -Q<61756c7441757468496e666f46696c65>-.1 E -<41636365707420612067726f75702d7265616461626c6520446566>153 261 Q -<61756c7441757468496e666f208c6c6520666f72205341534c2e>-.1 E -<47726f75705772697461626c65416c69617346696c65>117 277.2 Q<416c6c6f>153 -289.2 Q 2.5<7767>-.25 G -<726f75702d7772697461626c6520616c696173208c6c65732e>-2.5 E -<47726f75705772697461626c6544697250>117 305.4 Q<61746853616665>-.15 E -.224<4368616e6765207468652064658c6e6974696f6e206f662099756e736166652064 -69726563746f72799a20746f20636f6e73696465722067726f75702d7772697461626c65 -206469726563746f7269657320746f206265>153 317.4 R 2.5<736166652e2057>153 -329.4 R -<6f726c642d7772697461626c65206469726563746f726965732061726520616c>-.8 E --.1<7761>-.1 G<797320756e736166652e>.1 E<47726f75705772697461626c6546> -117 345.6 Q<6f7277>-.15 E<61726446696c65>-.1 E<416c6c6f>153 357.6 Q 2.5 -<7767>-.25 G<726f7570207772697461626c65>-2.5 E F2<2e666f72776172>2.5 E -<64>-.37 E F1<8c6c65732e>2.5 E<47726f75705772697461626c6546>117 373.8 Q -<6f7277>-.15 E<61726446696c6553616665>-.1 E -<4163636570742067726f75702d7772697461626c65>153 385.8 Q F2 -<2e666f72776172>2.5 E<64>-.37 E F1<8c6c6573206173207361666520666f722070 -726f6772616d20616e64208c6c652064656c69>2.5 E -.15<7665>-.25 G<7279>.15 E -<2e>-.65 E<47726f75705772697461626c65496e636c75646546696c65>117 402 Q -<416c6c6f>153 414 Q 2.5<7767>-.25 G<726f75702077726961626c65>-2.5 E F2 -<3a696e636c7564653a>2.5 E F1<8c6c65732e>2.5 E -<47726f75705772697461626c65496e636c75646546696c6553616665>117 430.2 Q -<4163636570742067726f75702d7772697461626c65>153 442.2 Q F2 -<3a696e636c7564653a>2.5 E F1<8c6c6573206173207361666520666f722070726f67 -72616d20616e64208c6c652064656c69>2.5 E -.15<7665>-.25 G<7279>.15 E<2e> --.65 E<47726f75705772697461626c655341534c444246696c65>117 458.4 Q<416363 -65707420612067726f75702d7772697461626c65204379727573205341534c2070617373 -77>153 470.4 Q<6f7264208c6c652e>-.1 E -<48656c7046696c65496e556e7361666544697250>117 486.6 Q<617468>-.15 E -<416c6c6f>153 498.6 Q 2.5<7774>-.25 G -<6865208c6c65206e616d656420696e20746865>-2.5 E F0<48656c7046696c65>2.5 E -F1 -<6f7074696f6e20746f20626520696e20616e20756e73616665206469726563746f7279> -2.5 E<2e>-.65 E -<496e636c75646546696c65496e47726f75705772697461626c6544697250>117 514.8 -Q<617468>-.15 E<416c6c6f>153 526.8 Q<77>-.25 E F2<3a696e636c7564653a>2.5 -E F1 -<8c6c657320696e2067726f7570207772697461626c65206469726563746f726965732e> -2.5 E<496e636c75646546696c65496e556e7361666544697250>117 543 Q<617468> --.15 E<416c6c6f>153 555 Q<77>-.25 E F2<3a696e636c7564653a>2.5 E F1 -<8c6c657320696e20756e73616665206469726563746f726965732e>2.5 E -<496e636c75646546696c65496e556e7361666544697250>117 571.2 Q -<61746853616665>-.15 E<416c6c6f>153 583.2 Q 3.706<7761>-.25 G F2 -<3a696e636c7564653a>A F1 1.206<8c6c65207468617420697320696e20616e20756e -73616665206469726563746f727920746f20696e636c756465207265666572656e636573 -20746f2070726f6772616d>3.706 F<616e64208c6c65732e>153 595.2 Q -<496e737566>117 611.4 Q<8c6369656e74456e74726f70>-.25 E<79>-.1 E -.35 -<5472>153 623.4 S 3.212<7974>.35 G 3.212<6f75>-3.212 G .713<7365205354> --3.212 F<4152>-.93 E .713<54544c532065>-.6 F -.15<7665>-.25 G 3.213 -<6e69>.15 G 3.213<6674>-3.213 G .713<68652050524e4720666f72204f70656e53 -534c206973206e6f742070726f7065726c79207365656465642064657370697465> --3.213 F<7468652073656375726974792070726f626c656d732e>153 635.4 Q -<4c696e6b>117 651.6 Q<6564416c69617346696c65496e5772697461626c65446972> --.1 E<416c6c6f>153 663.6 Q 2.5<7761>-.25 G 2.5<6e61>-2.5 G<6c696173208c -6c6520746861742069732061206c696e6b20696e2061207772697461626c652064697265 -63746f7279>-2.5 E<2e>-.65 E<4c696e6b>117 679.8 Q -<6564436c61737346696c65496e5772697461626c65446972>-.1 E<416c6c6f>153 -691.8 Q 2.5<7763>-.25 G<6c617373208c6c6573207468617420617265206c696e6b73 -20696e207772697461626c65206469726563746f726965732e>-2.5 E<4c696e6b>117 -708 Q<656446>-.1 E<6f7277>-.15 E -<61726446696c65496e5772697461626c65446972>-.1 E<416c6c6f>153 720 Q<77> --.25 E F2<2e666f72776172>2.5 E<64>-.37 E F1<8c6c657320746861742061726520 -6c696e6b7320696e207772697461626c65206469726563746f726965732e>2.5 E 0 Cg -EP -%%Page: 35 31 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3335>195.86 E -/F1 10/Times-Roman@0 SF<4c696e6b>117 96 Q -<6564496e636c75646546696c65496e5772697461626c65446972>-.1 E<416c6c6f>153 -108 Q<77>-.25 E/F2 10/Times-Italic@0 SF<3a696e636c7564653a>2.5 E F1<8c6c -6573207468617420617265206c696e6b7320696e207772697461626c6520646972656374 -6f726965732e>2.5 E<4c696e6b>117 124.2 Q -<65644d6170496e5772697461626c65446972>-.1 E<416c6c6f>153 136.2 Q 2.685 -<776d>-.25 G .185<6170208c6c6573207468617420617265206c696e6b7320696e2077 -72697461626c65206469726563746f726965732e>-2.685 F .184 -<5468697320696e636c7564657320616c696173206461746162617365208c6c65732e> -5.184 F<4c696e6b>117 152.4 Q -<65645365727669636553776974636846696c65496e5772697461626c65446972>-.1 E -<416c6c6f>153 164.4 Q 2.5<7774>-.25 G<6865207365727669636520737769746368 -208c6c6520746f2062652061206c696e6b2065>-2.5 E -.15<7665>-.25 G 2.5<6e69> -.15 G 2.5<6674>-2.5 G -<6865206469726563746f7279206973207772697461626c652e>-2.5 E -<4d6170496e556e7361666544697250>117 180.6 Q<617468>-.15 E<416c6c6f>153 -192.6 Q 2.97<776d>-.25 G .47<6170732028652e672e2c>-2.97 F F2<68617368> -2.97 E F1<2c>A F2<627472>2.97 E<6565>-.37 E F1 2.97<2c61>C<6e64>-2.97 E -F2<64626d>2.97 E F1 .47 -<8c6c65732920696e20756e73616665206469726563746f726965732e>2.97 F .47 -<5468697320696e636c7564657320616c696173>5.47 F -<6461746162617365208c6c65732e>153 204.6 Q -<4e6f6e526f6f745361666541646472>117 220.8 Q .485 -<446f206e6f74206d61726b208c6c6520616e642070726f6772616d2064656c69>153 -232.8 R -.15<7665>-.25 G .484<7269657320617320756e736166652069662073656e -646d61696c206973206e6f742072756e6e696e67207769746820726f6f74>.15 F -<707269>153 244.8 Q<76696c65>-.25 E<6765732e>-.15 E -<52756e50726f6772616d496e556e7361666544697250>117 261 Q<617468>-.15 E<52 -756e2070726f6772616d7320746861742061726520696e207772697461626c6520646972 -6563746f7269657320776974686f7574206c6f6767696e6720612077>153 273 Q -<61726e696e672e>-.1 E<52756e5772697461626c6550726f6772616d>117 289.2 Q -<52756e2070726f6772616d732074686174206172652067726f75702d206f722077>153 -301.2 Q -<6f726c642d7772697461626c6520776974686f7574206c6f6767696e6720612077>-.1 -E<61726e696e672e>-.1 E -.35<5472>117 317.4 S<757374537469636b>.35 E -<79426974>-.15 E<416c6c6f>153 329.4 Q 3.405<7767>-.25 G .905 -<726f7570206f722077>-3.405 F .905<6f726c64207772697461626c65206469726563 -746f726965732069662074686520737469636b>-.1 F 3.405<7962>-.15 G .906 -<697420697320736574206f6e20746865206469726563746f7279>-3.405 F 5.906 -<2e44>-.65 G<6f>-5.906 E<6e6f74207365742074686973206f6e2073797374656d73 -20776869636820646f206e6f7420686f6e6f722074686520737469636b>153 341.4 Q -2.5<7962>-.15 G<6974206f6e206469726563746f726965732e>-2.5 E -.8<576f>117 -357.6 S<726c645772697461626c65416c69617346696c65>.8 E<4163636570742077> -153 369.6 Q<6f726c642d7772697461626c6520616c696173208c6c65732e>-.1 E -.8 -<576f>117 385.8 S<726c645772697461626c6546>.8 E<6f7277>-.15 E -<6172648c6c65>-.1 E<416c6c6f>153 397.8 Q 2.5<7777>-.25 G -<6f726c64207772697461626c65>-2.6 E F2<2e666f72776172>2.5 E<64>-.37 E F1 -<8c6c65732e>2.5 E -.8<576f>117 414 S -<726c645772697461626c65496e636c7564658c6c65>.8 E<416c6c6f>153 426 Q 2.5 -<7777>-.25 G<6f726c642077726961626c65>-2.6 E F2<3a696e636c7564653a>2.5 E -F1<8c6c65732e>2.5 E<57726974654d617054>117 442.2 Q<6f486172644c696e6b> --.8 E<416c6c6f>153 454.2 Q 2.5<7777>-.25 G -<726974657320746f206d6170732074686174206172652068617264206c696e6b732e> --2.5 E<57726974654d617054>117 470.4 Q<6f53796d4c696e6b>-.8 E<416c6c6f> -153 482.4 Q 2.5<7777>-.25 G<726974657320746f206d617073207468617420617265 -2073796d626f6c6963206c696e6b732e>-2.5 E<5772697465537461747354>117 498.6 -Q<6f486172644c696e6b>-.8 E<416c6c6f>153 510.6 Q 2.5<7774>-.25 G -<686520737461747573208c6c6520746f20626520612068617264206c696e6b2e>-2.5 E -<5772697465537461747354>117 526.8 Q<6f53796d4c696e6b>-.8 E<416c6c6f>153 -538.8 Q 2.5<7774>-.25 G<686520737461747573208c6c6520746f2062652061207379 -6d626f6c6963206c696e6b2e>-2.5 E F0 2.5<342e31302e20436f6e6e656374696f6e> -87 562.8 R<43616368696e67>2.5 E F1 .642 -<5768656e2070726f63657373696e67207468652071756575652c>127 579 R F2 -<73656e646d61696c>3.142 E F1 .642<77696c6c2074727920746f206b>3.142 F -.642<65657020746865206c617374206665>-.1 F 3.142<776f>-.25 G .642 -<70656e20636f6e6e656374696f6e73206f70656e20746f>-3.142 F -.2<61766f>102 -591 S<6964207374617274757020616e642073687574646f>.2 E -<776e20636f7374732e>-.25 E<54686973206f6e6c79206170706c69657320746f2049 -504320616e64204c504320636f6e6e656374696f6e732e>5 E .286<5768656e20747279 -696e6720746f206f70656e206120636f6e6e656374696f6e207468652063616368652069 -73208c7273742073656172636865642e>127 607.2 R .287 -<496620616e206f70656e20636f6e6e656374696f6e20697320666f756e642c>5.286 F -1.034<69742069732070726f62656420746f20736565206966206974206973207374696c -6c2061637469>102 619.2 R 1.333 -.15<76652062>-.25 H 3.533<7973>.15 G -1.033<656e64696e672061>-3.533 F/F3 9/Times-Roman@0 SF<52534554>3.533 E -F1 3.533<636f6d6d616e642e204974>3.533 F 1.033 -<6973206e6f7420616e206572726f7220696620746869732066>3.533 F<61696c733b> --.1 E<696e73746561642c2074686520636f6e6e656374696f6e20697320636c6f736564 -20616e642072656f70656e65642e>102 631.2 Q -1 -.8<5477206f>127 647.4 T -.408<706172616d657465727320636f6e74726f6c2074686520636f6e6e656374696f6e -2063616368652e>3.708 F<546865>5.408 E F0 -<436f6e6e656374696f6e436163686553697a65>2.908 E F1<28>2.908 E F0<6b>A F1 -2.908<296f>C .408<7074696f6e2064658c6e6573>-2.908 F .145<746865206e756d -626572206f662073696d756c74616e656f7573206f70656e20636f6e6e656374696f6e73 -20746861742077696c6c206265207065726d69747465642e>102 659.4 R .145 -<49662069742069732073657420746f207a65726f2c20636f6e6e656374696f6e73> -5.145 F .212<77696c6c20626520636c6f73656420617320717569636b6c7920617320 -706f737369626c652e>102 671.4 R .212<54686520646566>5.212 F .212 -<61756c74206973206f6e652e>-.1 F .213<546869732073686f756c64206265207365 -7420617320617070726f70726961746520666f7220796f7572>5.212 F .63<73797374 -656d2073697a653b2069742077696c6c206c696d69742074686520616d6f756e74206f66 -2073797374656d207265736f75726365732074686174>102 683.4 R F2 -<73656e646d61696c>3.129 E F1 .629 -<77696c6c2075736520647572696e672071756575652072756e732e>3.129 F<4e65>102 -695.4 Q -.15<7665>-.25 G 2.5<7273>.15 G -<6574207468697320686967686572207468616e20342e>-2.5 E<546865>127 711.6 Q -F0<436f6e6e656374696f6e436163686554>2.74 E<696d656f7574>-.18 E F1<28> -2.741 E F0<4b>A F1 2.741<296f>C .241<7074696f6e2073706563698c6573207468 -65206d6178696d756d2074696d65207468617420616e>-2.741 F 2.741<7963>-.15 G -.241<616368656420636f6e2d>-2.741 F .9 -<6e656374696f6e2077696c6c206265207065726d697474656420746f2069646c652e> -102 723.6 R .899<5768656e207468652069646c652074696d652065>5.9 F .899 -<78636565647320746869732076>-.15 F .899 -<616c75652074686520636f6e6e656374696f6e20697320636c6f7365642e>-.25 F 0 -Cg EP -%%Page: 36 32 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d33362053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF .34<54686973206e756d6265722073686f756c6420626520 -736d616c6c2028756e6465722074656e206d696e757465732920746f20707265>102 96 -R -.15<7665>-.25 G .34 -<6e7420796f752066726f6d206772616262696e6720746f6f206d616e>.15 F 2.84 -<7972>-.15 G<65736f7572636573>-2.84 E -<66726f6d206f7468657220686f7374732e>102 108 Q<54686520646566>5 E -<61756c74206973208c76>-.1 E 2.5<656d>-.15 G<696e757465732e>-2.5 E F0 2.5 -<342e31312e204e616d65>87 132 R<536572>2.5 E -.1<7665>-.1 G 2.5<7241>.1 G -<6363657373>-2.5 E F1 .104<436f6e74726f6c206f6620686f737420616464726573 -73206c6f6f6b7570732069732073657420627920746865>127 148.2 R F0 -<686f737473>2.604 E F1 .103<7365727669636520656e74727920696e20796f757220 -7365727669636520737769746368208c6c652e>2.603 F<4966>5.103 E .99 -<796f7520617265206f6e20612073797374656d2074686174206861732062>102 160.2 -R .99<75696c742d696e20736572766963652073776974636820737570706f7274202865 -2e672e2c20556c747269782c20536f6c617269732c206f7220444543204f53462f3129> --.2 F .336<7468656e20796f75722073797374656d2069732070726f6261626c792063 -6f6e8c67757265642070726f7065726c7920616c7265616479>102 172.2 R 5.335 -<2e4f>-.65 G<74686572776973652c>-5.335 E/F2 10/Times-Italic@0 SF -<73656e646d61696c>2.835 E F1 .335 -<77696c6c20636f6e73756c7420746865208c6c65>2.835 F F0 -<2f6574632f6d61696c2f736572>102 184.2 Q<766963652e737769746368>-.1 E F1 -4.901<2c77>C 2.402<686963682073686f756c6420626520637265617465642e>-4.901 -F F2<53656e646d61696c>7.402 E F1 2.402<6f6e6c792075736573207477>4.902 F -4.902<6f65>-.1 G<6e74726965733a>-4.902 E F0<686f737473>4.902 E F1 -<616e64>4.902 E F0<616c6961736573>102 196.2 Q F1 2.746<2c61>C .246<6c74 -686f7567682073797374656d20726f7574696e6573206d617920757365206f7468657220 -736572766963657320286e6f7461626c7920746865>-2.746 F F0<706173737764> -2.746 E F1 .245<7365727669636520666f722075736572206e616d65>2.745 F -<6c6f6f6b757073206279>102 208.2 Q F2 -.1<6765>2.5 G<7470776e616d65>.1 E -F1<292e>A<486f>127 224.4 Q<7765>-.25 E -.15<7665>-.25 G 1.51 -.4 -<722c2073>.15 H .711<6f6d652073797374656d732028737563682061732053756e4f -5320342e58292077696c6c20646f20444e53206c6f6f6b757073207265>.4 F -.05 -<6761>-.15 G .711<72646c657373206f66207468652073657474696e67>.05 F 1.029 -<6f662074686520736572766963652073776974636820656e747279>102 236.4 R -6.029<2e49>-.65 G 3.529<6e70>-6.029 G<6172746963756c6172>-3.529 E 3.529 -<2c74>-.4 G 1.029<68652073797374656d20726f7574696e65>-3.529 F F2 -.1 -<6765>3.529 G<74686f737462796e616d65>.1 E F1 1.028 -<283329206973207573656420746f206c6f6f6b207570>B 1.868 -<686f7374206e616d65732c20616e64206d616e>102 248.4 R 4.368<7976>-.15 G -1.868<656e646f722076>-4.518 F 1.869<657273696f6e732074727920736f6d652063 -6f6d62696e6174696f6e206f6620444e532c204e49532c20616e64208c6c65206c6f6f6b -757020696e>-.15 F 1.731<2f6574632f686f73747320776974686f757420636f6e7375 -6c74696e6720612073657276696365207377697463682e>102 260.4 R F2 -<53656e646d61696c>6.731 E F1<6d616b>4.231 E 1.731 -<6573206e6f20617474656d707420746f2077>-.1 F 1.73 -<6f726b2061726f756e642074686973>-.1 F .367<70726f626c656d2c20616e642074 -686520444e53206c6f6f6b75702077696c6c20626520646f6e6520616e>102 272.4 R -<7977>-.15 E<6179>-.1 E 5.368<2e49>-.65 G 2.868<6679>-5.368 G .368 -<6f7520646f206e6f74206861>-2.868 F .668 -.15<76652061206e>-.2 H -<616d6573657276>.15 E .368<657220636f6e8c6775726564206174>-.15 F .464 -<616c6c2c2073756368206173206174206120555543502d6f6e6c7920736974652c>102 -284.4 R F2<73656e646d61696c>2.964 E F1 .464<77696c6c2067657420612099636f -6e6e656374696f6e20726566757365649a206d657373616765207768656e206974207472 -69657320746f>2.964 F .423 -<636f6e6e65637420746f20746865206e616d652073657276>102 296.4 R<6572>-.15 -E 5.423<2e49>-.55 G 2.923<6674>-5.423 G<6865>-2.923 E F0<686f737473> -2.923 E F1 .424<73776974636820656e74727920686173207468652073657276696365 -2099646e739a206c697374656420736f6d65>2.923 F .424 -<776865726520696e20746865>-.25 F<6c6973742c>102 308.4 Q F2 -<73656e646d61696c>3.313 E F1 .813<77696c6c20696e746572707265742074686973 -20746f206d65616e20612074656d706f726172792066>3.313 F .813<61696c75726520 -616e642077696c6c20717565756520746865206d61696c20666f72206c61746572207072 -6f2d>-.1 F<63657373696e673b206f74686572776973652c2069742069676e6f726573 -20746865206e616d652073657276>102 320.4 Q<657220646174612e>-.15 E .672<54 -68652073616d6520746563686e69717565206973207573656420746f2064656369646520 -7768657468657220746f20646f204d58206c6f6f6b7570732e>127 336.6 R .673 -<496620796f752077>5.673 F .673<616e74204d5820737570706f72742c>-.1 F -<796f75>102 348.6 Q F2<6d757374>2.5 E F1<6861>2.5 E .3 -.15<76652099>-.2 -H<646e739a206c69737465642061732061207365727669636520696e20746865>.15 E -F0<686f737473>2.5 E F1<73776974636820656e747279>2.5 E<2e>-.65 E<546865> -127 364.8 Q F0<5265736f6c76>3.87 E<65724f7074696f6e73>-.1 E F1<28>3.87 E -F0<49>A F1 3.869<296f>C 1.369<7074696f6e20616c6c6f>-3.869 F 1.369 -<777320796f7520746f20747765616b206e616d652073657276>-.25 F 1.369 -<6572206f7074696f6e732e>-.15 F 1.369<54686520636f6d6d616e64>6.369 F .892 -<6c696e652074616b>102 376.8 R .892<6573206120736572696573206f66208d6167 -7320617320646f63756d656e74656420696e>-.1 F F2 -.37<7265>3.392 G -<736f6c766572>.37 E F1 .892<28332920287769746820746865206c656164696e6720 -995245535f9a2064656c65746564292e>B<45616368>5.892 E<63616e20626520707265 -636564656420627920616e206f7074696f6e616c20602b27206f722060>102 388.8 Q -/F3 10/Symbol SF<2d>A F1 2.5<272e2046>B<6f722065>-.15 E -<78616d706c652c20746865206c696e65>-.15 E 2.5<4f52>142 405 S<65736f6c76> --2.5 E<65724f7074696f6e733d2b4141>-.15 E<4f4e4c>-.55 E<59>-1 E F3<2d>2.5 -E F1<444e53524348>A .862<7475726e73206f6e20746865204141>102 421.2 R -<4f4e4c>-.55 E 3.362<5928>-1 G .862 -<61636365707420617574686f726974617469>-3.362 F 1.162 -.15<76652061>-.25 -H .861<6e7377657273206f6e6c792920616e64207475726e73206f66>.15 F 3.361 -<6674>-.25 G .861<686520444e53524348202873656172636820746865>-3.361 F -2.039<646f6d61696e207061746829206f7074696f6e732e>102 433.2 R 2.039 -<4d6f7374207265736f6c76>7.039 F 2.039<6572206c696272617269657320646566> --.15 F 2.039<61756c7420444e535243482c204445464e>-.1 F 2.039 -<414d45532c20616e642052454355525345>-.35 F .394 -<8d616773206f6e20616e6420616c6c206f7468657273206f66>102 445.2 R 2.894 -<662e204966>-.25 F .394<4e4554494e45543620697320656e61626c65642c206d6f73 -74206c696272617269657320646566>2.894 F .393 -<61756c7420746f205553455f494e4554362061732077656c6c2e>-.1 F -1.1<596f> -102 457.2 S 3.748<7563>1.1 G 1.248 -<616e20616c736f20696e636c756465209948617357>-3.748 F 1.249<696c64636172 -644d589a20746f2073706563696679207468617420746865726520697320612077696c64 -63617264204d58207265636f7264206d61746368696e67>-.4 F .225 -<796f757220646f6d61696e3b2074686973207475726e73206f66>102 469.2 R 2.724 -<664d>-.25 G 2.724<586d>-2.724 G .224<61746368696e67207768656e2063616e6f -6e696679696e67206e616d65732c2077686963682063616e206c65616420746f20696e61 -7070726f707269617465>-2.724 F 5.248 -<63616e6f6e698c636174696f6e732e20557365>102 481.2 R<9957>5.249 E -<6f726b41726f756e6442726f6b>-.8 E 2.749<656e414141419a207768656e2066>-.1 -F 2.749<61636564207769746820612062726f6b>-.1 F 2.749 -<656e206e616d6573657276>-.1 F 2.749<65722074686174>-.15 F .565 -<72657475726e7320534552>102 493.2 R<5646>-.8 E .565 -<41494c2028612074656d706f726172792066>-.74 F .564<61696c75726529206f6e20 -545f4141414120284950763629206c6f6f6b75707320647572696e6720686f73746e616d -652063616e6f6e698c63612d>-.1 F 2.5<74696f6e2e204e6f746963653a>102 505.2 -R<6974206d69676874206265206e656365737361727920746f206170706c792074686520 -73616d6520286f722073696d696c617229206f7074696f6e7320746f>2.5 E F2 -<7375626d69742e6366>2.5 E F1<746f6f2e>2.5 E -1.11<5665>127 521.4 S 1.732 -<7273696f6e206c65>1.11 F -.15<7665>-.25 G 4.232<6c3163>.15 G 1.733<6f6e -8c6775726174696f6e732028736565207468652073656374696f6e2061626f75742060> --4.232 F 1.733<60436f6e8c6775726174696f6e2056>-.74 F 1.733 -<657273696f6e204c65>-1.11 F -.15<7665>-.25 G<6c27>.15 E 1.733 -<2729207475726e>-.74 F .843<444e5352434820616e64204445464e>102 533.4 R -.843<414d4553206f66>-.35 F 3.343<6677>-.25 G .842 -<68656e20646f696e672064656c69>-3.343 F -.15<7665>-.25 G .842 -<7279206c6f6f6b7570732c2062>.15 F .842<7574206c6561>-.2 F 1.142 -.15 -<76652074>-.2 H .842<68656d206f6e2065>.15 F -.15<7665>-.25 G .842 -<7279776865726520656c73652e>.15 F -1.11<5665>102 545.4 S 1.042 -<7273696f6e2038206f66>1.11 F F2<73656e646d61696c>3.542 E F1 1.043<69676e -6f726573207468656d207768656e20646f696e672063616e6f6e698c636174696f6e206c -6f6f6b7570732028746861742069732c207768656e207573696e6720245b202e2e2e> -3.542 F .392<245d292c20616e6420616c>102 557.4 R -.1<7761>-.1 G .392 -<797320646f657320746865207365617263682e>.1 F .392 -<496620796f7520646f6e27>5.392 F 2.892<7477>-.18 G .392 -<616e7420746f20646f206175746f6d61746963206e616d652065>-2.992 F .391 -<7874656e73696f6e2c20646f6e27>-.15 F 2.891<7463>-.18 G .391 -<616c6c20245b202e2e2e>-2.891 F<245d2e>102 569.4 Q .485<5468652073656172 -63682072756c657320666f7220245b202e2e2e20245d2061726520736f6d65>127 585.6 -R .485<7768617420646966>-.25 F .485 -<666572656e74207468616e20757375616c2e>-.25 F .486 -<496620746865206e616d65206265696e67206c6f6f6b>5.485 F .486<6564207570> --.1 F .11<686173206174206c65617374206f6e6520646f742c20697420616c>102 -597.6 R -.1<7761>-.1 G .11 -<79732074726965732074686520756e6d6f64698c6564206e616d65208c7273742e>.1 F -.109<496620746861742066>5.109 F .109 -<61696c732c20697420747269657320746865207265647563656420736561726368>-.1 -F .124<706174682c20616e64206c6173746c792074726965732074686520756e6d6f64 -698c6564206e616d65202862>102 609.6 R .124<7574206f6e6c7920666f72206e616d -657320776974686f7574206120646f742c2073696e6365206e616d657320776974682061 -20646f74>-.2 F<6861>102 621.6 Q .789 -.15<76652061>-.2 H .489 -<6c7265616479206265656e207472696564292e>.15 F .489<5468697320616c6c6f> -5.489 F .489<7773206e616d657320737563682061732060>-.25 F -<607574632e435327>-.74 E 2.989<2774>-.74 G 2.988<6f6d>-2.989 G .488 -<6174636820746865207369746520696e20437a6563686f736c6f>-2.988 F -.25 -<7661>-.15 G<6b6961>.25 E 1.587<726174686572207468616e207468652073697465 -20696e20796f7572206c6f63616c20436f6d707574657220536369656e63652064657061 -72746d656e742e>102 633.6 R 1.588 -<497420616c736f2070726566657273204120616e6420434e>6.587 F<414d45>-.35 E -.513<7265636f726473206f>102 645.6 R -.15<7665>-.15 G 3.013<724d>.15 G -3.013<5872>-3.013 G .513<65636f726473208a20746861742069732c206966206974 -208c6e647320616e204d58207265636f7264206974206d616b>-3.013 F .512 -<6573206e6f7465206f662069742c2062>-.1 F .512<7574206b>-.2 F .512 -<65657073206c6f6f6b696e672e>-.1 F 1.541<546869732077>102 657.6 R<6179> --.1 E 4.041<2c69>-.65 G 4.041<6679>-4.041 G 1.541<6f75206861>-4.041 F -1.841 -.15<766520612077>-.2 H 1.541<696c6463617264204d58207265636f726420 -6d61746368696e6720796f757220646f6d61696e2c2069742077696c6c206e6f74206173 -73756d65207468617420616c6c>.15 F<6e616d6573206d617463682e>102 669.6 Q -3.454 -.8<546f2063>127 685.8 T 1.853<6f6d706c6574656c79207475726e206f66> -.8 F 4.353<6661>-.25 G 1.853<6c6c206e616d652073657276>-4.353 F 1.853<65 -7220616363657373206f6e2073797374656d7320776974686f7574207365727669636520 -73776974636820737570706f7274>-.15 F .941 -<28737563682061732053756e4f5320342e582920796f752077696c6c206861>102 -697.8 R 1.242 -.15<76652074>-.2 H 3.442<6f72>.15 G .942 -<65636f6d70696c65207769746820ad444e>-3.442 F .942 -<414d45445f42494e443d3020616e642072656d6f>-.35 F 1.242 -.15<766520ad> --.15 H<6c7265736f6c76>.15 E<66726f6d20746865206c697374206f66206c69627261 -7269657320746f206265207365617263686564207768656e206c696e6b696e672e>102 -709.8 Q 0 Cg EP -%%Page: 37 33 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3337>195.86 E -2.5<342e31322e204d6f>87 96 R<76696e67207468652050>-.1 E<6572>-.2 E -<2d557365722046>-.37 E<6f72776172642046696c6573>-.25 E/F1 10 -/Times-Roman@0 SF .772 -<536f6d65207369746573206d6f756e742065616368207573657227>127 112.2 R -3.272<7368>-.55 G .772<6f6d65206469726563746f72792066726f6d2061206c6f63 -616c206469736b206f6e2074686569722077>-3.272 F .772 -<6f726b73746174696f6e2c20736f2074686174>-.1 F .614 -<6c6f63616c206163636573732069732066>102 124.2 R 3.114<6173742e20486f>-.1 -F<7765>-.25 E -.15<7665>-.25 G 1.414 -.4<722c2074>.15 H .614 -<686520726573756c742069732074686174202e666f7277>.4 F .614<617264208c6c65 -206c6f6f6b7570732066726f6d20612063656e7472616c206d61696c2073657276>-.1 F -.615<657220617265>-.15 F<736c6f>102 136.2 Q 5.534 -.65<772e2049>-.25 H -4.234<6e73>.65 G 1.734<6f6d652063617365732c206d61696c2063616e2065>-4.234 -F -.15<7665>-.25 G 4.234<6e62>.15 G 4.234<6564>-4.234 G<656c69>-4.234 E --.15<7665>-.25 G 1.734<726564206f6e206d616368696e657320696e617070726f70 -72696174656c792062656361757365206f662061208c6c65>.15 F<73657276>102 -148.2 Q<6572206265696e6720646f>-.15 E 2.5<776e2e20546865>-.25 F<70657266 -6f726d616e63652063616e20626520657370656369616c6c792062616420696620796f75 -2072756e20746865206175746f6d6f756e746572>2.5 E<2e>-.55 E<546865>127 -164.4 Q F0 -.25<466f>2.743 G<727761726450>.25 E<617468>-.1 E F1<28>2.743 -E F0<4a>A F1 2.743<296f>C .243<7074696f6e20616c6c6f>-2.743 F .243 -<777320796f7520746f2073657420612070617468206f6620666f7277>-.25 F .243 -<617264208c6c65732e>-.1 F -.15<466f>5.243 G 2.743<7265>.15 G .244 -<78616d706c652c2074686520636f6e2d>-2.893 F<8c67208c6c65206c696e65>102 -176.4 Q 2.5<4f46>142 192.6 S<6f7277>-2.65 E<61726450>-.1 E<6174683d2f76> --.15 E<61722f666f7277>-.25 E<6172642f24753a247a2f2e666f7277>-.1 E -<6172642e2477>-.1 E -.1<776f>102 208.8 S .208<756c64208c727374206c6f6f6b -20666f722061208c6c652077697468207468652073616d65206e616d6520617320746865 -207573657227>.1 F 2.707<736c>-.55 G .207<6f67696e20696e202f76>-2.707 F -<61722f666f7277>-.25 E .207 -<6172643b2069662074686174206973206e6f7420666f756e64>-.1 F 1.17 -<286f7220697320696e61636365737369626c652920746865208c6c652060>102 220.8 -R<602e666f7277>-.74 E<6172642e>-.1 E/F2 10/Times-Italic@0 SF<6d6163>A -<68696e656e616d65>-.15 E F1 2.651 -.74<27272069>D 3.671<6e74>.74 G 1.171 -<6865207573657227>-3.671 F 3.671<7368>-.55 G 1.171 -<6f6d65206469726563746f72792069732073656172636865642e>-3.671 F<41>6.171 -E<7472756c792070657276>102 232.8 Q<65727365207369746520636f756c6420616c -736f207365617263682062792073656e646572206279207573696e67202472>-.15 E -2.5<2c24>-.4 G<732c206f722024662e>-2.5 E .69<496620796f7520637265617465 -2061206469726563746f72792073756368206173202f76>127 249 R<61722f666f7277> --.25 E .69<6172642c2069742073686f756c64206265206d6f64652031373737202874 -6861742069732c2074686520737469636b>-.1 F 3.19<7962>-.15 G<6974>-3.19 E -.108<73686f756c6420626520736574292e>102 261 R .109<55736572732073686f75 -6c642063726561746520746865208c6c6573206d6f646520303634342e>5.108 F .109 -<4e6f7465207468617420796f75206d75737420757365207468652046>5.109 F -<6f7277>-.15 E<61726446696c65496e2d>-.1 E<556e7361666544697250>102 273 Q -.393<61746820616e642046>-.15 F<6f7277>-.15 E -<61726446696c65496e556e7361666544697250>-.1 E .393 -<61746853616665208d616773207769746820746865>-.15 F F0 -<446f6e74426c616d6553656e646d61696c>2.892 E F1 .392<6f7074696f6e20746f> -2.892 F<616c6c6f>102 285 Q 3.781<7766>-.25 G<6f7277>-3.781 E 1.281 -<617264208c6c657320696e20612077>-.1 F 1.281 -<6f726c64207772697461626c65206469726563746f7279>-.1 F 6.281<2e54>-.65 G -1.281<686973206d6967687420616c736f206265207573656420617320612064656e6961 -6c206f662073657276696365>-6.281 F 2.352 -<61747461636b2028757365727320636f756c642063726561746520666f7277>102 297 -R 2.351<617264208c6c657320666f72206f74686572207573657273293b206120626574 -74657220617070726f616368206d6967687420626520746f20637265617465>-.1 F -<2f76>102 309 Q<61722f666f7277>-.25 E 1.086<617264206d6f6465203037353520 -616e642063726561746520656d707479208c6c657320666f7220656163682075736572> --.1 F 3.586<2c6f>-.4 G 1.086<776e656420627920746861742075736572>-3.836 F -3.587<2c6d>-.4 G 1.087<6f646520303634342e>-3.587 F<4966>6.087 E -<796f7520646f20746869732c20796f7520646f6e27>102 321 Q 2.5<7468>-.18 G --2.25 -.2<61762065>-2.5 H<746f207365742074686520446f6e74426c616d6553656e -646d61696c206f7074696f6e7320696e646963617465642061626f>2.7 E -.15<7665> --.15 G<2e>.15 E F0 2.5<342e31332e204672>87 345 R<6565205370616365>-.18 E -F1 1.406<4f6e2073797374656d732074686174206861>127 361.2 R 1.706 -.15 -<7665206f>-.2 H 1.405 -<6e65206f66207468652073797374656d2063616c6c7320696e20746865>.15 F F2 -<737461746673>3.905 E F1 1.405<2832292066>B 1.405 -<616d696c792028696e636c7564696e67>-.1 F F2<73746174766673>3.905 E F1 -<616e64>3.905 E F2<7573746174>102 373.2 Q F1 .839<292c20796f752063616e20 -737065636966792061206d696e696d756d206e756d626572206f66206672656520626c6f -636b73206f6e20746865207175657565208c6c6573797374656d207573696e6720746865> -B F0<4d696e2d>3.34 E<4672>102 385.2 Q<6565426c6f636b73>-.18 E F1<28> -2.554 E F0<62>A F1 2.554<296f>C 2.553<7074696f6e2e204966>-2.554 F .053 -<746865726520617265206665>2.553 F .053<776572207468616e2074686520696e64 -696361746564206e756d626572206f6620626c6f636b732066726565206f6e2074686520 -8c6c6573797374656d>-.25 F 1.354<6f6e207768696368207468652071756575652069 -73206d6f756e7465642074686520534d54502073657276>102 397.2 R 1.355<657220 -77696c6c2072656a656374206d61696c20776974682074686520343532206572726f7220 -636f64652e>-.15 F<54686973>6.355 E<696e>102 409.2 Q -<76697465732074686520534d545020636c69656e7420746f20747279206167>-.4 E -<61696e206c61746572>-.05 E<2e>-.55 E<4265>127 425.4 Q -.1<7761>-.25 G -.746<7265206f662073657474696e672074686973206f7074696f6e20746f6f20686967 -683b2069742063616e2063617573652072656a656374696f6e206f6620656d61696c2077 -68656e2074686174206d61696c2077>.1 F<6f756c64>-.1 E -<62652070726f63657373656420776974686f757420646966>102 437.4 Q -<8c63756c7479>-.25 E<2e>-.65 E F0 2.5<342e31342e204d6178696d756d>87 -461.4 R<4d6573736167652053697a65>2.5 E F1 2.077 -.8<546f2061>127 477.6 T --.2<766f>.6 G .477<6964206f>.2 F -.15<7665>-.15 G<728d6f>.15 E .478 -<77696e6720796f75722073797374656d20776974682061206c6172>-.25 F .478 -<6765206d6573736167652c20746865>-.18 F F0<4d61784d65737361676553697a65> -2.978 E F1 .478<6f7074696f6e2063616e206265>2.978 F .693<73657420746f2073 -657420616e206162736f6c757465206c696d6974206f6e207468652073697a65206f6620 -616e>102 489.6 R 3.193<796f>-.15 G .693<6e65206d6573736167652e>-3.193 F -.692<546869732077696c6c20626520616476>5.692 F .692 -<6572746973656420696e207468652045534d5450>-.15 F -<6469616c6f67756520616e6420636865636b>102 501.6 Q -<656420647572696e67206d65737361676520636f6c6c656374696f6e2e>-.1 E F0 2.5 -<342e31352e20507269>87 525.6 R -.1<7661>-.1 G<637920466c616773>.1 E F1 -<546865>127 541.8 Q F0<507269>2.96 E -.1<7661>-.1 G<63794f7074696f6e73> -.1 E F1<28>2.96 E F0<70>A F1 2.96<296f>C .46<7074696f6e20616c6c6f>-2.96 -F .46<777320796f7520746f20736574206365727461696e2060>-.25 F<60707269> --.74 E -.25<7661>-.25 G -.15<6379>.25 G 1.94 -.74<2727208d>.15 H 2.96 -<6167732e2041637475616c6c79>.74 F 2.96<2c6d>-.65 G<616e>-2.96 E 2.96 -<796f>-.15 G<66>-2.96 E .534<7468656d20646f6e27>102 553.8 R 3.034<7467> --.18 G -2.15 -.25<69762065>-3.034 H .534<796f7520616e>3.284 F 3.034 -<7965>-.15 G .534<7874726120707269>-3.184 F -.25<7661>-.25 G -.15<6379> -.25 G 3.034<2c72>-.5 G .534<6174686572206a75737420696e73697374696e672074 -68617420636c69656e7420534d54502073657276>-3.034 F .533 -<65727320757365207468652048454c4f>-.15 F 2.87<636f6d6d616e64206265666f72 -65207573696e67206365727461696e20636f6d6d616e6473206f7220616464696e672065> -102 565.8 R 2.87<78747261206865616465727320746f20696e64696361746520706f -737369626c652073706f6f66>-.15 F<617474656d7074732e>102 577.8 Q .124 -<546865206f7074696f6e2074616b>127 594 R .124<6573206120736572696573206f -66208d6167206e616d65733b20746865208c6e616c20707269>-.1 F -.25<7661>-.25 -G .424 -.15<63792069>.25 H 2.624<7374>.15 G .124<686520696e636c757369> --2.624 F .424 -.15<7665206f>-.25 H 2.624<726f>.15 G 2.624<6674>-2.624 G -.123<686f7365208d6167732e>-2.624 F -.15<466f>5.123 G<72>.15 E -.15<6578> -102 606 S<616d706c653a>.15 E 2.5<4f50>142 622.2 S<7269>-2.5 E -.25<7661> --.25 G -.15<6379>.25 G -<4f7074696f6e733d6e6565646d61696c68656c6f2c206e6f65>.15 E<78706e>-.15 E -.928<696e73697374732074686174207468652048454c4f206f722045484c4f20636f6d -6d616e642062652075736564206265666f72652061204d41494c20636f6d6d616e642069 -7320616363657074656420616e64206469732d>102 638.4 R -<61626c657320746865204558504e20636f6d6d616e642e>102 650.4 Q<546865208d61 -6773206172652064657461696c656420696e2073656374696f6e20352e362e>127 666.6 -Q F0 2.5<342e31362e2053656e64>87 690.6 R<746f204d652054>2.5 E<6f6f>-.92 -E F1<4265>127 706.8 Q 1.075<67696e6e696e6720776974682076>-.15 F 1.075 -<657273696f6e20382e31302c>-.15 F F2<73656e646d61696c>3.575 E F1 1.075 -<696e636c7564657320627920646566>3.575 F 1.075<61756c74207468652028656e> --.1 F -.15<7665>-.4 G 1.074<6c6f7065292073656e64657220696e20616e>.15 F -3.574<796c>-.15 G<697374>-3.574 E -.15<6578>102 718.8 S 3.464 -<70616e73696f6e732e2046>.15 F .964<6f722065>-.15 F .964<78616d706c652c20 -696620996d6174749a2073656e647320746f2061206c697374207468617420636f6e7461 -696e7320996d6174749a206173206f6e65206f6620746865206d656d62657273206865> --.15 F 0 Cg EP -%%Page: 38 34 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d33382053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF .228<77696c6c20676574206120636f70>102 96 R 2.728 -<796f>-.1 G 2.728<6674>-2.728 G .228<6865206d6573736167652e>-2.728 F -.228<496620746865>5.228 F F0<4d6554>2.728 E<6f6f>-.92 E F1 .228 -<6f7074696f6e2069732073657420746f>2.728 F/F2 9/Times-Roman@0 SF -.666 -<4641>2.727 G<4c5345>.666 E F1 .227 -<28696e2074686520636f6e8c6775726174696f6e208c6c65206f7220766961>2.727 F -1.022<74686520636f6d6d616e64206c696e65292c20746869732062656861>102 108 R -1.023<76696f72206973206368616e6765642c20692e652e2c207468652028656e>-.2 F --.15<7665>-.4 G 1.023<6c6f7065292073656e6465722069732065>.15 F 1.023 -<78636c7564656420696e206c6973742065>-.15 F<7870616e2d>-.15 E -<73696f6e732e>102 120 Q F0 2.5<352e20544845>72 144 R -<57484f4c452053434f4f50204f4e2054484520434f4e464947555241>2.5 E -<54494f4e2046494c45>-.95 E F1<546869732073656374696f6e206465736372696265 -732074686520636f6e8c6775726174696f6e208c6c6520696e2064657461696c2e>112 -160.2 Q .648<5468657265206973206f6e6520706f696e7420746861742073686f756c -64206265206d61646520636c65617220696d6d6564696174656c793a207468652073796e -746178206f662074686520636f6e8c6775726174696f6e208c6c65206973>112 176.4 R -1.076<64657369676e656420746f20626520726561736f6e61626c79206561737920746f -2070617273652c2073696e6365207468697320697320646f6e652065>87 188.4 R -.15 -<7665>-.25 G 1.077<72792074696d65>.15 F/F3 10/Times-Italic@0 SF -<73656e646d61696c>3.577 E F1 1.077 -<7374617274732075702c20726174686572207468616e>3.577 F .303 -<6561737920666f7220612068756d616e20746f2072656164206f722077726974652e>87 -200.4 R .302<54686520636f6e8c6775726174696f6e208c6c652073686f756c642062 -652067656e6572617465642076696120746865206d6574686f6420646573637269626564> -5.302 F<696e>87 212.4 Q F0<63662f524541444d45>3.657 E F1 3.657<2c69>C -3.657<7473>-3.657 G 1.157<686f756c64206e6f742062652065646974656420646972 -6563746c7920756e6c65737320736f6d656f6e652069732066>-3.657 F 1.158 -<616d696c69617220776974682074686520696e7465726e616c73206f6620746865>-.1 -F<73796e74617820646573637269626564206865726520616e64206974206973206e6f74 -20706f737369626c6520746f206163686965>87 224.4 Q .3 -.15<76652074>-.25 H -<6865206465736972656420726573756c74207669612074686520646566>.15 E -<61756c74206d6574686f642e>-.1 E .243 -<54686520636f6e8c6775726174696f6e208c6c65206973206f72>112 240.6 R -.05 -<6761>-.18 G .243<6e697a6564206173206120736572696573206f66206c696e65732c -2065616368206f66207768696368206265>.05 F .243 -<67696e73207769746820612073696e676c65206368617261632d>-.15 F .102<746572 -2064658c6e696e67207468652073656d616e7469637320666f7220746865207265737420 -6f6620746865206c696e652e>87 252.6 R .102<4c696e6573206265>5.102 F .102< -67696e6e696e6720776974682061207370616365206f722061207461622061726520636f -6e74696e756174696f6e>-.15 F 1.323<6c696e65732028616c74686f75676820746865 -2073656d616e7469637320617265206e6f742077656c6c2064658c6e656420696e206d61 -6e>87 264.6 R 3.823<7970>-.15 G 3.822<6c61636573292e20426c616e6b>-3.823 -F 1.322<6c696e657320616e64206c696e6573206265>3.822 F<67696e6e696e67>-.15 -E<7769746820612073686172702073796d626f6c2028602327292061726520636f6d6d65 -6e74732e>87 276.6 Q F0 2.5<352e312e2052>87 300.6 R -<616e642053208a20526577726974696e672052756c6573>2.5 E F1 .465<5468652063 -6f7265206f6620616464726573732070617273696e672061726520746865207265>127 -316.8 R .466<77726974696e672072756c65732e>-.25 F .466<546865736520617265 -20616e206f7264657265642070726f64756374696f6e2073797374656d2e>5.466 F F3 -<53656e646d61696c>102 328.8 Q F1 .19 -<7363616e73207468726f7567682074686520736574206f66207265>2.69 F .19<7772 -6974696e672072756c6573206c6f6f6b696e6720666f722061206d61746368206f6e2074 -6865206c6566742068616e64207369646520284c485329206f66>-.25 F -<7468652072756c652e>102 340.8 Q<5768656e20612072756c65206d6174636865732c -207468652061646472657373206973207265706c61636564206279207468652072696768 -742068616e642073696465202852485329206f66207468652072756c652e>5 E .921 -<546865726520617265207365>127 357 R -.15<7665>-.25 G .921 -<72616c2073657473206f66207265>.15 F .921<77726974696e672072756c65732e> --.25 F .921<536f6d65206f6620746865207265>5.921 F .922<77726974696e672073 -65747320617265207573656420696e7465726e616c6c7920616e64>-.25 F .36 -<6d757374206861>102 369 R .66 -.15<76652073>-.2 H .36 -<706563698c632073656d616e746963732e>.15 F .359<4f74686572207265>5.359 F -.359<77726974696e67207365747320646f206e6f74206861>-.25 F .659 -.15 -<76652073>-.2 H .359 -<706563698c63616c6c792061737369676e65642073656d616e746963732c20616e64> -.15 F<6d6179206265207265666572656e63656420627920746865206d61696c65722064 -658c6e6974696f6e73206f72206279206f74686572207265>102 381 Q -<77726974696e6720736574732e>-.25 E -<5468652073796e746178206f66207468657365207477>127 397.2 Q 2.5<6f63>-.1 G -<6f6d6d616e6473206172653a>-2.5 E F0<53>142 413.4 Q F3<6e>A F1 .248<5365 -7473207468652063757272656e742072756c65736574206265696e6720636f6c6c656374 -656420746f>102 429.6 R F3<6e>2.748 E F1 5.248<2e49>C 2.748<6679>-5.248 G -.248<6f75206265>-2.748 F .249<67696e20612072756c65736574206d6f7265207468 -616e206f6e636520697420617070656e647320746f20746865>-.15 F -<6f6c642064658c6e6974696f6e2e>102 441.6 Q F0<52>142 457.8 Q F3 -<6c68732072687320636f6d6d656e7473>A F1 1.185<546865208c656c6473206d7573 -7420626520736570617261746564206279206174206c65617374206f6e65207461622063 -68617261637465723b207468657265206d617920626520656d6265646465642073706163 -657320696e20746865>102 474 R 2.594<8c656c64732e20546865>102 486 R F3 -<6c6873>2.594 E F1 .095<69732061207061747465726e207468617420697320617070 -6c69656420746f2074686520696e7075742e>2.594 F .095 -<4966206974206d6174636865732c2074686520696e707574206973207265>5.095 F -.095<7772697474656e20746f20746865>-.25 F F3<726873>2.595 E F1<2e>A -<546865>102 498 Q F3<636f6d6d656e7473>2.5 E F1<6172652069676e6f7265642e> -2.5 E .427<4d6163726f2065>127 514.2 R .427 -<7870616e73696f6e73206f662074686520666f726d>-.15 F F0<24>2.927 E F3<78>A -F1 .427<61726520706572666f726d6564207768656e2074686520636f6e8c6775726174 -696f6e208c6c6520697320726561642e>2.927 F 2.926<416c>5.426 G -<69746572616c>-2.926 E F0<24>102 526.2 Q F1 .609 -<63616e20626520696e636c75646564207573696e67>3.108 F F0<2424>3.109 E F1 -5.609<2e45>C .609<7870616e73696f6e73206f662074686520666f726d>-5.609 F F0 -<2426>3.109 E F3<78>A F1 .609<61726520706572666f726d65642061742072756e20 -74696d65207573696e67206120736f6d652d>3.109 F .148 -<77686174206c6573732067656e6572616c20616c676f726974686d2e>102 538.2 R -.148<5468697320697320696e74656e646564206f6e6c7920666f72207265666572656e -63696e6720696e7465726e616c6c792064658c6e6564206d6163726f7320737563682061 -73>5.148 F F0<2468>102 550.2 Q F1 -<7468617420617265206368616e6765642061742072756e74696d652e>2.5 E F0 2.5 -<352e312e312e20546865>102 574.2 R<6c6566742068616e642073696465>2.5 E F1 -2.77<546865206c6566742068616e642073696465206f66207265>142 590.4 R 2.771 -<77726974696e672072756c657320636f6e7461696e732061207061747465726e2e>-.25 -F 2.771<4e6f726d616c2077>7.771 F 2.771<6f726473206172652073696d706c79> --.1 F<6d617463686564206469726563746c79>117 602.4 Q 5<2e4d>-.65 G<657461 -73796e74617820697320696e74726f6475636564207573696e67206120646f6c6c617220 -7369676e2e>-5 E<546865206d65746173796d626f6c73206172653a>5 E F0<242a>157 -618.6 Q F1<4d61746368207a65726f206f72206d6f726520746f6b>10.14 E<656e73> --.1 E F0<242b>157 630.6 Q F1<4d61746368206f6e65206f72206d6f726520746f6b> -9.44 E<656e73>-.1 E F0<24ad>157 642.6 Q F1<4d617463682065>9.44 E -<786163746c79206f6e6520746f6b>-.15 E<656e>-.1 E F0<243d>157 654.6 Q F3 -<78>A F1<4d6174636820616e>5 E 2.5<7970>-.15 G -<687261736520696e20636c617373>-2.5 E F3<78>2.5 E F0<247e>157 666.6 Q F3 -<78>A F1<4d6174636820616e>7.37 E 2.5<7977>-.15 G -<6f7264206e6f7420696e20636c617373>-2.6 E F3<78>2.5 E F1 .132<496620616e> -117 682.8 R 2.632<796f>-.15 G 2.632<6674>-2.632 G .132 -<68657365206d617463682c20746865>-2.632 F 2.632<7961>-.15 G .132 -<72652061737369676e656420746f207468652073796d626f6c>-2.632 F F0<24>2.632 -E F3<6e>A F1 .131<666f72207265706c6163656d656e74206f6e207468652072696768 -742068616e6420736964652c>2.632 F<7768657265>117 694.8 Q F3<6e>2.5 E F1 -<69732074686520696e6465>2.5 E 2.5<7869>-.15 G 2.5<6e74>-2.5 G -<6865204c48532e>-2.5 E -.15<466f>5 G 2.5<7265>.15 G -<78616d706c652c20696620746865204c48533a>-2.65 E<24ad3a242b>157 711 Q 0 -Cg EP -%%Page: 39 35 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3339>195.86 E -/F1 10/Times-Roman@0 SF -<6973206170706c69656420746f2074686520696e7075743a>117 96 Q<554342>157 -112.2 Q<415250>-.35 E<413a65726963>-.92 E -<7468652072756c652077696c6c206d617463682c20616e64207468652076>117 128.4 -Q<616c7565732070617373656420746f20746865205248532077696c6c2062653a>-.25 -E 7.5<243120554342>157 144.6 R<415250>-.35 E<41>-.92 E 7.5 -<24322065726963>157 156.6 R<4164646974696f6e616c6c79>142 177 Q 2.704 -<2c74>-.65 G .204<6865204c48532063616e20696e636c756465>-2.704 F F0<2440> -2.704 E F1 .204<746f206d61746368207a65726f20746f6b>2.704 F 2.704 -<656e732e2054686973>-.1 F<6973>2.704 E/F2 10/Times-Italic@0 SF<6e6f74> -2.704 E F1 .204<626f756e6420746f2061>2.704 F F0<24>2.705 E F2<6e>A F1 -<6f6e>2.705 E<746865205248532c20616e64206973206e6f726d616c6c79206f6e6c79 -2075736564207768656e206974207374616e647320616c6f6e6520696e206f7264657220 -746f206d6174636820746865206e756c6c20696e7075742e>117 189 Q F0 2.5 -<352e312e322e20546865>102 213 R<72696768742068616e642073696465>2.5 E F1 -.649<5768656e20746865206c6566742068616e642073696465206f662061207265>142 -229.2 R .649<77726974696e672072756c65206d6174636865732c2074686520696e70 -75742069732064656c6574656420616e64207265706c61636564206279>-.25 F 1.036 -<7468652072696768742068616e6420736964652e>117 241.2 R -.8<546f>6.036 G --.1<6b65>.8 G 1.036<6e732061726520636f70696564206469726563746c792066726f -6d207468652052485320756e6c65737320746865>.1 F 3.537<7962>-.15 G -.15 -<6567>-3.537 G 1.037<696e2077697468206120646f6c6c6172>.15 F 2.5 -<7369676e2e204d65746173796d626f6c73>117 253.2 R<6172653a>2.5 E F0<24>157 -269.4 Q F2<6e>A F1<5375627374697475746520696e64658c6e69746520746f6b> -40.55 E<656e>-.1 E F2<6e>2.5 E F1<66726f6d204c4853>2.5 E F0<245b>157 -281.4 Q F2<6e616d65>A F0<245d>A F1<43616e6f6e6963616c697a65>12.23 E F2 -<6e616d65>2.5 E F0<2428>157 293.4 Q F2<6d6170206b>A -.3<6579>-.1 G F0 -<2440>2.8 E F2<6172>A<67756d656e7473>-.37 E F0<243a>2.5 E F2 -<64656661756c74>A F0<2429>2.5 E F1<47656e6572616c697a6564206b>207.55 -305.4 Q -.15<6579>-.1 G<6564206d617070696e672066756e6374696f6e>.15 E F0 -<243e>157 317.4 Q F2<6e>A F1<9943616c6c9a2072756c65736574>34.85 E F2<6e> -2.5 E F0<2423>157 329.4 Q F2<6d61696c6572>A F1<5265736f6c76>14.44 E 2.5 -<6574>-.15 G<6f>-2.5 E F2<6d61696c6572>2.5 E F0<2440>157 341.4 Q F2 -<686f7374>A F1<53706563696679>19.58 E F2<686f7374>2.5 E F0<243a>157 -353.4 Q F2<75736572>A F1<53706563696679>25 E F2<75736572>2.5 E F1 -<546865>142 373.8 Q F0<24>3.137 E F2<6e>A F1 .637<73796e7461782073756273 -746974757465732074686520636f72726573706f6e64696e672076>3.137 F .637 -<616c75652066726f6d2061>-.25 F F0<242b>3.137 E F1<2c>A F0<24ad>3.137 E -F1<2c>A F0<242a>3.137 E F1<2c>A F0<243d>3.137 E F1 3.137<2c6f>C<72> --3.137 E F0<247e>3.137 E F1 .636<6d61746368206f6e>3.136 F -<746865204c48532e>117 385.8 Q<4974206d6179206265207573656420616e>5 E -<7977686572652e>-.15 E 2.705<4168>142 402 S .205 -<6f7374206e616d6520656e636c6f736564206265747765656e>-2.705 F F0<245b> -2.705 E F1<616e64>2.705 E F0<245d>2.706 E F1 .206<6973206c6f6f6b>2.706 F -.206<656420757020696e2074686520686f737420646174616261736528732920616e64 -207265706c61636564>-.1 F 1.683 -<6279207468652063616e6f6e6963616c206e616d65>117 416 R/F3 7/Times-Roman@0 -SF<3134>-4 I F1 6.683<2e46>4 K 1.683<6f722065>-6.833 F 1.683<78616d706c -652c2099245b667470245d9a206d69676874206265636f6d6520996674702e43532e4265 -726b>-.15 F<656c65>-.1 E -.65<792e>-.15 G 1.683<4544559a20616e64>.65 F -3.17<99245b5b3132382e33322e3133302e325d245d9a2077>117 428 R 3.17 -<6f756c64206265636f6d65209976>-.1 F<616e676f67682e43532e4265726b>-.25 E -<656c65>-.1 E -.65<792e>-.15 G<4544552e>.65 E<9a>-.7 E F2 -<53656e646d61696c>8.17 E F1 3.17<7265636f676e697a657320697473>5.67 F<6e -756d65726963204950206164647265737320776974686f75742063616c6c696e67207468 -65206e616d652073657276>117 440 Q<657220616e64207265706c6163657320697420 -77697468206974732063616e6f6e6963616c206e616d652e>-.15 E<546865>142 456.2 -Q F0<2428>3.004 E F1<2e2e2e>3.004 E F0<2429>5.504 E F1 .503<73796e746178 -2069732061206d6f72652067656e6572616c20666f726d206f66206c6f6f6b75703b2069 -7420757365732061206e616d6564206d617020696e7374656164206f6620616e>3.003 F -.809<696d706c69636974206d61702e>117 468.2 R .809<4966206e6f206c6f6f6b75 -7020697320666f756e642c2074686520696e64696361746564>5.809 F F2 -<64656661756c74>3.309 E F1 .81 -<697320696e7365727465643b206966206e6f20646566>3.309 F .81 -<61756c742069732073706563698c6564>-.1 F .776 -<616e64206e6f206c6f6f6b7570206d6174636865732c207468652076>117 480.2 R -.776<616c7565206973206c65667420756e6368616e6765642e>-.25 F<546865>5.776 -E F2<6172>3.276 E<67756d656e7473>-.37 E F1 .775 -<6172652070617373656420746f20746865206d617020666f72>3.275 F -<706f737369626c65207573652e>117 492.2 Q<546865>142 508.4 Q F0<243e>2.619 -E F2<6e>A F1 .119<73796e74617820636175736573207468652072656d61696e646572 -206f6620746865206c696e6520746f206265207375627374697475746564206173207573 -75616c20616e64207468656e20706173736564>2.619 F .587<617320746865206172> -117 520.4 R .587<67756d656e7420746f2072756c65736574>-.18 F F2<6e>3.087 E -F1 5.587<2e54>C .587<6865208c6e616c2076>-5.587 F .586 -<616c7565206f662072756c65736574>-.25 F F2<6e>3.086 E F1 .586<7468656e20 -6265636f6d65732074686520737562737469747574696f6e20666f722074686973>3.086 -F 3.758<72756c652e20546865>117 532.4 R F0<243e>3.758 E F1 1.258 -<73796e7461782065>3.758 F 1.258<7870616e64732065>-.15 F -.15<7665>-.25 G -1.259<72797468696e67206166746572207468652072756c65736574206e616d6520746f -2074686520656e64206f6620746865207265706c6163656d656e74>.15 F .976<737472 -696e6720616e64207468656e2070617373657320746861742061732074686520696e6974 -69616c20696e70757420746f207468652072756c657365742e>117 544.4 R -<52656375727369>5.976 E 1.276 -.15<76652063>-.25 H .976 -<616c6c732061726520616c6c6f>.15 F 3.476<7765642e2046>-.25 F<6f72>-.15 E --.15<6578>117 556.4 S<616d706c652c>.15 E<243e3020243e33202431>157 572.6 -Q -.15<6578>117 588.8 S<70616e64732024312c20706173736573207468617420746f -2072756c6573657420332c20616e64207468656e20706173736573207468652072657375 -6c74206f662072756c65736574203320746f2072756c6573657420302e>.15 E<546865> -142 605 Q F0<2423>2.768 E F1 .268<73796e7461782073686f756c64>2.768 F F2 -<6f6e6c79>2.768 E F1 .268<6265207573656420696e2072756c65736574207a65726f -2c206120737562726f7574696e65206f662072756c65736574207a65726f2c206f722072 -756c6573657473>2.768 F .455<746861742072657475726e206465636973696f6e7320 -28652e672e2c20636865636b5f72637074292e>117 617 R .455 -<4974206361757365732065>5.455 F -.25<7661>-.25 G .454<6c756174696f6e206f -66207468652072756c6573657420746f207465726d696e61746520696d6d6564692d>.25 -F<6174656c79>117 629 Q 2.565<2c61>-.65 G .065 -<6e64207369676e616c7320746f>-2.565 F F2<73656e646d61696c>2.565 E F1 .065 -<746861742074686520616464726573732068617320636f6d706c6574656c7920726573 -6f6c76>2.565 F 2.565<65642e20546865>-.15 F .065 -<636f6d706c6574652073796e74617820666f72>2.565 F -<72756c6573657420302069733a>117 641 Q F0<2423>157 657.2 Q F2 -<6d61696c6572>A F0<2440>2.5 E F2<686f7374>A F0<243a>2.5 E F2<75736572>A -F1 1.513<546869732073706563698c657320746865207b6d61696c6572>117 673.4 R -4.013<2c68>-.4 G 1.513<6f73742c20757365727d20332d7475706c65206e65636573 -7361727920746f2064697265637420746865206d61696c6572>-4.013 F 6.513<2e4e> --.55 G 1.512<6f74653a20746865207468697264>-6.513 F .32 LW 76 683 72 683 -DL 80 683 76 683 DL 84 683 80 683 DL 88 683 84 683 DL 92 683 88 683 DL -96 683 92 683 DL 100 683 96 683 DL 104 683 100 683 DL 108 683 104 683 DL -112 683 108 683 DL 116 683 112 683 DL 120 683 116 683 DL 124 683 120 683 -DL 128 683 124 683 DL 132 683 128 683 DL 136 683 132 683 DL 140 683 136 -683 DL 144 683 140 683 DL 148 683 144 683 DL 152 683 148 683 DL 156 683 -152 683 DL 160 683 156 683 DL 164 683 160 683 DL 168 683 164 683 DL 172 -683 168 683 DL 176 683 172 683 DL 180 683 176 683 DL 184 683 180 683 DL -188 683 184 683 DL 192 683 188 683 DL 196 683 192 683 DL 200 683 196 683 -DL 204 683 200 683 DL 208 683 204 683 DL 212 683 208 683 DL 216 683 212 -683 DL/F4 5/Times-Roman@0 SF<3134>93.6 693.4 Q/F5 8/Times-Roman@0 SF -<546869732069732061637475616c6c7920636f6d706c6574656c792065717569>3.2 I --.2<7661>-.2 G<6c656e7420746f202428686f7374>.2 E/F6 8/Times-Italic@0 SF -<686f73746e616d65>2 E F5 2<24292e20496e>B<706172746963756c6172>2 E 2 -<2c61>-.32 G/F7 8/Times-Bold@0 SF<243a>A F5<646566>2 E -<61756c742063616e20626520757365642e>-.08 E 0 Cg EP -%%Page: 40 36 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d34302053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF 1.253<656c656d656e742028>117 96 R/F2 10 -/Times-Italic@0 SF<75736572>3.753 E F1 3.753<2969>3.753 G 3.753<736f> --3.753 G 1.253<6674656e20616c736f2063616c6c6564>-3.753 F F2<61646472> -3.754 E<657373>-.37 E F1 3.754<706172742e204966>3.754 F 1.254<746865206d -61696c6572206973206c6f63616c2074686520686f73742070617274206d6179206265> -3.754 F<6f6d6974746564>117 110 Q/F3 7/Times-Roman@0 SF<3135>-4 I F1 -5.967<2e54>4 K<6865>-5.967 E F2<6d61696c6572>3.467 E F1 .967 -<6d75737420626520612073696e676c652077>3.467 F .967<6f72642c2062>-.1 F -.967<757420746865>-.2 F F2<686f7374>3.467 E F1<616e64>3.467 E F2 -<75736572>3.467 E F1 .967<6d6179206265206d756c74692d706172742e>3.467 F -.968<496620746865>5.967 F F2<6d61696c6572>117 122 Q F1 .026 -<6973207468652062>2.526 F .026<75696c742d696e20495043206d61696c6572>-.2 -F 2.525<2c74>-.4 G<6865>-2.525 E F2<686f7374>2.525 E F1 .025<6d61792062 -65206120636f6c6f6e2d736570617261746564206c697374206f6620686f737473207468 -617420617265207365617263686564>2.525 F .723 -<696e206f7264657220666f7220746865208c7273742077>117 134 R .723 -<6f726b696e672061646472657373202865>-.1 F .723<786163746c79206c696b>-.15 -F 3.223<654d>-.1 G 3.223<5872>-3.223 G 3.223<65636f726473292e20546865> --3.223 F F2<75736572>3.223 E F1 .723<6973206c61746572207265>3.223 F .724 -<7772697474656e206279>-.25 F .106<746865206d61696c6572>117 146 R .106 -<2d73706563698c6320656e>-.2 F -.15<7665>-.4 G .106<6c6f7065207265>.15 F -.106<77726974696e672073657420616e642061737369676e656420746f20746865>-.25 -F F0<2475>2.606 E F1 2.605<6d6163726f2e204173>2.606 F 2.605<6173>2.605 G -.105<70656369616c20636173652c20696620746865>-2.605 F 1.033 -<6d61696c65722073706563698c65642068617320746865>117 158 R F0<463d40> -3.533 E F1 1.033<8d61672073706563698c656420616e6420746865208c7273742063 -6861726163746572206f6620746865>3.533 F F0<243a>3.533 E F1 -.25<7661> -3.533 G 1.033<6c75652069732099409a2c20746865>.25 F .017 -<99409a206973207374726970706564206f66>117 170 R .017<662c20616e64206120 -8d61672069732073657420696e2074686520616464726573732064657363726970746f72 -2074686174206361757365732073656e646d61696c20746f206e6f7420646f2072756c65 -2d>-.25 F<73657420352070726f63657373696e672e>117 182 Q<4e6f726d616c6c79> -142 198.2 Q 3.251<2c6172>-.65 G .751<756c652074686174206d61746368657320 -697320726574726965642c20746861742069732c207468652072756c65206c6f6f707320 -756e74696c2069742066>-3.251 F 3.252<61696c732e2041>-.1 F .752 -<524853206d6179>3.252 F 1.086 -<616c736f2062652070726563656465642062792061>117 210.2 R F0<2440>3.586 E -F1 1.085<6f722061>3.585 F F0<243a>3.585 E F1 1.085 -<746f206368616e676520746869732062656861>3.585 F<76696f72>-.2 E 6.085 -<2e41>-.55 G F0<2440>-2.5 E F1 1.085 -<7072658c7820636175736573207468652072756c6573657420746f>3.585 F 1.46<72 -657475726e2077697468207468652072656d61696e646572206f66207468652052485320 -6173207468652076>117 222.2 R 3.96<616c75652e2041>-.25 F F0<243a>3.96 E -F1 1.46 -<7072658c7820636175736573207468652072756c6520746f207465726d696e617465> -3.96 F<696d6d6564696174656c79>117 234.2 Q 3.756<2c62>-.65 G 1.256<757420 -7468652072756c6573657420746f20636f6e74696e75653b20746869732063616e206265 -207573656420746f2061>-3.956 F -.2<766f>-.2 G 1.256 -<696420636f6e74696e756564206170706c69636174696f6e206f662061>.2 F 2.5 -<72756c652e20546865>117 246.2 R<7072658c78206973207374726970706564206265 -666f726520636f6e74696e75696e672e>2.5 E<546865>142 262.4 Q F0<2440>2.5 E -F1<616e64>2.5 E F0<243a>2.5 E F1<7072658c78>2.5 E -<6573206d617920707265636564652061>-.15 E F0<243e>2.5 E F1 -<737065633b20666f722065>2.5 E<78616d706c653a>-.15 E 20.19<52242b20243a> -157 278.6 R<243e37202431>2.5 E 1.256<6d61746368657320616e>117 294.8 R -1.256 -<797468696e672c20706173736573207468617420746f2072756c65736574207365>-.15 -F -.15<7665>-.25 G 1.256<6e2c20616e6420636f6e74696e7565733b20746865>.15 -F F0<243a>3.756 E F1 1.256<6973206e656365737361727920746f2061>3.756 F --.2<766f>-.2 G 1.256<696420616e>.2 F<696e8c6e697465206c6f6f702e>117 -306.8 Q 1.205<537562737469747574696f6e206f636375727320696e20746865206f72 -646572206465736372696265642c20746861742069732c20706172616d65746572732066 -726f6d20746865204c485320617265207375627374692d>142 323 R .219<7475746564 -2c20686f73746e616d6573206172652063616e6f6e6963616c697a65642c209973756272 -6f7574696e65739a206172652063616c6c65642c20616e64208c6e616c6c79>117 335 R -F0<2423>2.719 E F1<2c>A F0<2440>2.719 E F1 2.72<2c61>C<6e64>-2.72 E F0 -<243a>2.72 E F1 .22<6172652070726f2d>2.72 F<6365737365642e>117 347 Q F0 -2.5<352e312e332e2053656d616e74696373>102 371 R<6f662072>2.5 E -<6577726974696e672072756c652073657473>-.18 E F1 1.848 -<54686572652061726520736978207265>142 387.2 R 1.847 -<77726974696e6720736574732074686174206861>-.25 F 2.147 -.15<76652073>-.2 -H 1.847<706563698c632073656d616e746963732e>.15 F<4669>6.847 E 2.147 -.15 -<7665206f>-.25 H 4.347<6674>.15 G 1.847 -<68657365206172652072656c61746564206173>-4.347 F -<6465706963746564206279208c6775726520312e>117 399.2 Q 1.029<52756c657365 -742074687265652073686f756c64207475726e20746865206164647265737320696e746f -209963616e6f6e6963616c20666f726d2e>142 415.4 R 6.029<9a54>-.7 G 1.03 -<68697320666f726d2073686f756c64206861>-6.029 F 1.33 -.15<76652074>-.2 H -<6865>.15 E<62617369632073796e7461783a>117 427.4 Q .4 LW 77 451.4 72 -451.4 DL 79 451.4 74 451.4 DL 84 451.4 79 451.4 DL 89 451.4 84 451.4 DL -94 451.4 89 451.4 DL 99 451.4 94 451.4 DL 104 451.4 99 451.4 DL 109 -451.4 104 451.4 DL 114 451.4 109 451.4 DL 119 451.4 114 451.4 DL 124 -451.4 119 451.4 DL 129 451.4 124 451.4 DL 134 451.4 129 451.4 DL 139 -451.4 134 451.4 DL 144 451.4 139 451.4 DL 149 451.4 144 451.4 DL 154 -451.4 149 451.4 DL 159 451.4 154 451.4 DL 164 451.4 159 451.4 DL 169 -451.4 164 451.4 DL 174 451.4 169 451.4 DL 179 451.4 174 451.4 DL 184 -451.4 179 451.4 DL 189 451.4 184 451.4 DL 194 451.4 189 451.4 DL 199 -451.4 194 451.4 DL 204 451.4 199 451.4 DL 209 451.4 204 451.4 DL 214 -451.4 209 451.4 DL 219 451.4 214 451.4 DL 224 451.4 219 451.4 DL 229 -451.4 224 451.4 DL 234 451.4 229 451.4 DL 239 451.4 234 451.4 DL 244 -451.4 239 451.4 DL 249 451.4 244 451.4 DL 254 451.4 249 451.4 DL 259 -451.4 254 451.4 DL 264 451.4 259 451.4 DL 269 451.4 264 451.4 DL 274 -451.4 269 451.4 DL 279 451.4 274 451.4 DL 284 451.4 279 451.4 DL 289 -451.4 284 451.4 DL 294 451.4 289 451.4 DL 299 451.4 294 451.4 DL 304 -451.4 299 451.4 DL 309 451.4 304 451.4 DL 314 451.4 309 451.4 DL 319 -451.4 314 451.4 DL 324 451.4 319 451.4 DL 329 451.4 324 451.4 DL 334 -451.4 329 451.4 DL 339 451.4 334 451.4 DL 344 451.4 339 451.4 DL 349 -451.4 344 451.4 DL 354 451.4 349 451.4 DL 359 451.4 354 451.4 DL 364 -451.4 359 451.4 DL 369 451.4 364 451.4 DL 374 451.4 369 451.4 DL 379 -451.4 374 451.4 DL 384 451.4 379 451.4 DL 389 451.4 384 451.4 DL 394 -451.4 389 451.4 DL 399 451.4 394 451.4 DL 404 451.4 399 451.4 DL 409 -451.4 404 451.4 DL 414 451.4 409 451.4 DL 419 451.4 414 451.4 DL 424 -451.4 419 451.4 DL 429 451.4 424 451.4 DL 434 451.4 429 451.4 DL 439 -451.4 434 451.4 DL 444 451.4 439 451.4 DL 449 451.4 444 451.4 DL 454 -451.4 449 451.4 DL 459 451.4 454 451.4 DL 464 451.4 459 451.4 DL 469 -451.4 464 451.4 DL 474 451.4 469 451.4 DL 479 451.4 474 451.4 DL 484 -451.4 479 451.4 DL 489 451.4 484 451.4 DL 494 451.4 489 451.4 DL 499 -451.4 494 451.4 DL 504 451.4 499 451.4 DL<61646472>91.915 546 Q 133.2 -543.8 111.6 543.8 DL 133.2 543.8 MT -7.2 1.8 RL 0 -3.6 RL CL 0 Fg 133.2 -543.8 MT -7.2 1.8 RL 0 -3.6 RL CL 0 Cg ST 154.8 554.6 MT 0 -21.6 RL --21.6 0 RL 0 21.6 RL CL ST<33>141.5 546 Q 176.4 543.8 154.8 543.8 DL -176.4 543.8 MT -7.2 1.8 RL 0 -3.6 RL CL 0 Fg 176.4 543.8 MT -7.2 1.8 RL -0 -3.6 RL CL 0 Cg ST 198 554.6 MT 0 -21.6 RL -21.6 0 RL 0 21.6 RL CL ST -<44>183.59 546 Q 219.6 543.8 198 543.8 DL 277.2 525.8 255.6 525.8 DL -277.2 525.8 MT -7.2 1.8 RL 0 -3.6 RL CL 0 Fg 277.2 525.8 MT -7.2 1.8 RL -0 -3.6 RL CL 0 Cg ST 298.8 536.6 MT 0 -21.6 RL -21.6 0 RL 0 21.6 RL CL -ST<31>285.5 528 Q 320.4 525.8 298.8 525.8 DL 320.4 525.8 MT -7.2 1.8 RL -0 -3.6 RL CL 0 Fg 320.4 525.8 MT -7.2 1.8 RL 0 -3.6 RL CL 0 Cg ST 342 -536.6 MT 0 -21.6 RL -21.6 0 RL 0 21.6 RL CL ST<53>328.42 528 Q 363.6 -525.8 342 525.8 DL 277.2 561.8 255.6 561.8 DL 277.2 561.8 MT -7.2 1.8 RL -0 -3.6 RL CL 0 Fg 277.2 561.8 MT -7.2 1.8 RL 0 -3.6 RL CL 0 Cg ST 298.8 -572.6 MT 0 -21.6 RL -21.6 0 RL 0 21.6 RL CL ST<32>285.5 564 Q 320.4 -561.8 298.8 561.8 DL 320.4 561.8 MT -7.2 1.8 RL 0 -3.6 RL CL 0 Fg 320.4 -561.8 MT -7.2 1.8 RL 0 -3.6 RL CL 0 Cg ST 342 572.6 MT 0 -21.6 RL -21.6 -0 RL 0 21.6 RL CL ST<52>327.865 564 Q 363.6 561.8 342 561.8 DL 421.2 -543.8 399.6 543.8 DL 421.2 543.8 MT -7.2 1.8 RL 0 -3.6 RL CL 0 Fg 421.2 -543.8 MT -7.2 1.8 RL 0 -3.6 RL CL 0 Cg ST 442.8 554.6 MT 0 -21.6 RL --21.6 0 RL 0 21.6 RL CL ST<34>429.5 546 Q 464.4 543.8 442.8 543.8 DL -464.4 543.8 MT -7.2 1.8 RL 0 -3.6 RL CL 0 Fg 464.4 543.8 MT -7.2 1.8 RL -0 -3.6 RL CL 0 Cg ST<6d7367>466.865 546 Q 255.6 525.8 219.6 543.8 DL -255.6 561.8 219.6 543.8 DL 399.6 543.8 363.6 525.8 DL 399.6 543.8 363.6 -561.8 DL 208.8 489.8 187.2 489.8 DL 208.8 489.8 MT -7.2 1.8 RL 0 -3.6 RL -CL 0 Fg 208.8 489.8 MT -7.2 1.8 RL 0 -3.6 RL CL 0 Cg ST 230.4 500.6 MT 0 --21.6 RL -21.6 0 RL 0 21.6 RL CL ST<30>217.1 492 Q 252 489.8 230.4 489.8 -DL 252 489.8 MT -7.2 1.8 RL 0 -3.6 RL CL 0 Fg 252 489.8 MT -7.2 1.8 RL 0 --3.6 RL CL 0 Cg ST<7265736f6c76>265.69 492 Q<65642061646472657373>-.15 E -187.2 489.8 162 543.8 DL<4669677572652031208a205265>216.045 591.8 Q -<77726974696e67207365742073656d616e74696373>-.25 E 2.5<448a73>209.35 -603.8 S<656e64657220646f6d61696e206164646974696f6e>-2.5 E 2.5<538a6d> -209.35 615.8 S<61696c6572>-2.5 E<2d73706563698c632073656e646572207265> --.2 E<77726974696e67>-.25 E 2.5<528a6d>209.35 627.8 S<61696c6572>-2.5 E -<2d73706563698c6320726563697069656e74207265>-.2 E<77726974696e67>-.25 E -77 639.8 72 639.8 DL 79 639.8 74 639.8 DL 84 639.8 79 639.8 DL 89 639.8 -84 639.8 DL 94 639.8 89 639.8 DL 99 639.8 94 639.8 DL 104 639.8 99 639.8 -DL 109 639.8 104 639.8 DL 114 639.8 109 639.8 DL 119 639.8 114 639.8 DL -124 639.8 119 639.8 DL 129 639.8 124 639.8 DL 134 639.8 129 639.8 DL 139 -639.8 134 639.8 DL 144 639.8 139 639.8 DL 149 639.8 144 639.8 DL 154 -639.8 149 639.8 DL 159 639.8 154 639.8 DL 164 639.8 159 639.8 DL 169 -639.8 164 639.8 DL 174 639.8 169 639.8 DL 179 639.8 174 639.8 DL 184 -639.8 179 639.8 DL 189 639.8 184 639.8 DL 194 639.8 189 639.8 DL 199 -639.8 194 639.8 DL 204 639.8 199 639.8 DL 209 639.8 204 639.8 DL 214 -639.8 209 639.8 DL 219 639.8 214 639.8 DL 224 639.8 219 639.8 DL 229 -639.8 224 639.8 DL 234 639.8 229 639.8 DL 239 639.8 234 639.8 DL 244 -639.8 239 639.8 DL 249 639.8 244 639.8 DL 254 639.8 249 639.8 DL 259 -639.8 254 639.8 DL 264 639.8 259 639.8 DL 269 639.8 264 639.8 DL 274 -639.8 269 639.8 DL 279 639.8 274 639.8 DL 284 639.8 279 639.8 DL 289 -639.8 284 639.8 DL 294 639.8 289 639.8 DL 299 639.8 294 639.8 DL 304 -639.8 299 639.8 DL 309 639.8 304 639.8 DL 314 639.8 309 639.8 DL 319 -639.8 314 639.8 DL 324 639.8 319 639.8 DL 329 639.8 324 639.8 DL 334 -639.8 329 639.8 DL 339 639.8 334 639.8 DL 344 639.8 339 639.8 DL 349 -639.8 344 639.8 DL 354 639.8 349 639.8 DL 359 639.8 354 639.8 DL 364 -639.8 359 639.8 DL 369 639.8 364 639.8 DL 374 639.8 369 639.8 DL 379 -639.8 374 639.8 DL 384 639.8 379 639.8 DL 389 639.8 384 639.8 DL 394 -639.8 389 639.8 DL 399 639.8 394 639.8 DL 404 639.8 399 639.8 DL 409 -639.8 404 639.8 DL 414 639.8 409 639.8 DL 419 639.8 414 639.8 DL 424 -639.8 419 639.8 DL 429 639.8 424 639.8 DL 434 639.8 429 639.8 DL 439 -639.8 434 639.8 DL 444 639.8 439 639.8 DL 449 639.8 444 639.8 DL 454 -639.8 449 639.8 DL 459 639.8 454 639.8 DL 464 639.8 459 639.8 DL 469 -639.8 464 639.8 DL 474 639.8 469 639.8 DL 479 639.8 474 639.8 DL 484 -639.8 479 639.8 DL 489 639.8 484 639.8 DL 494 639.8 489 639.8 DL 499 -639.8 494 639.8 DL 504 639.8 499 639.8 DL .32 LW 76 673.4 72 673.4 DL 80 -673.4 76 673.4 DL 84 673.4 80 673.4 DL 88 673.4 84 673.4 DL 92 673.4 88 -673.4 DL 96 673.4 92 673.4 DL 100 673.4 96 673.4 DL 104 673.4 100 673.4 -DL 108 673.4 104 673.4 DL 112 673.4 108 673.4 DL 116 673.4 112 673.4 DL -120 673.4 116 673.4 DL 124 673.4 120 673.4 DL 128 673.4 124 673.4 DL 132 -673.4 128 673.4 DL 136 673.4 132 673.4 DL 140 673.4 136 673.4 DL 144 -673.4 140 673.4 DL 148 673.4 144 673.4 DL 152 673.4 148 673.4 DL 156 -673.4 152 673.4 DL 160 673.4 156 673.4 DL 164 673.4 160 673.4 DL 168 -673.4 164 673.4 DL 172 673.4 168 673.4 DL 176 673.4 172 673.4 DL 180 -673.4 176 673.4 DL 184 673.4 180 673.4 DL 188 673.4 184 673.4 DL 192 -673.4 188 673.4 DL 196 673.4 192 673.4 DL 200 673.4 196 673.4 DL 204 -673.4 200 673.4 DL 208 673.4 204 673.4 DL 212 673.4 208 673.4 DL 216 -673.4 212 673.4 DL/F4 5/Times-Roman@0 SF<3135>93.6 683.8 Q/F5 8 -/Times-Roman@0 SF -.88<596f>3.2 K 2.726<756d>.88 G .726<61792077>-2.726 -F .726<616e7420746f2075736520697420666f72207370656369616c20997065722075 -7365729a2065>-.08 F 2.726<7874656e73696f6e732e2046>-.12 F .726<6f722065> --.12 F .725<78616d706c652c20696e20746865206164647265737320996a676d2b666f -6f40434d552e4544559a3b2074686520992b666f6f9a>-.12 F<70617274206973206e6f -742070617274206f66207468652075736572206e616d652c20616e642069732070617373 -656420746f20746865206c6f63616c206d61696c657220666f72206c6f63616c20757365 -2e>72 696.6 Q 0 Cg EP -%%Page: 41 37 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3431>195.86 E -/F1 10/Times-Roman@0 SF -<6c6f63616c2d7061727440686f73742d646f6d61696e2d73706563>157 96 Q -<52756c65736574207468726565206973206170706c696564206279>117 112.2 Q/F2 -10/Times-Italic@0 SF<73656e646d61696c>2.5 E F1 -<6265666f726520646f696e6720616e>2.5 E<797468696e67207769746820616e>-.15 -E 2.5<7961>-.15 G<6464726573732e>-2.5 E .302<4966206e6f2099409a20736967 -6e2069732073706563698c65642c207468656e2074686520686f73742d646f6d61696e2d -73706563>142 128.4 R F2<6d6179>2.801 E F1 .301 -<626520617070656e6465642028626f782099449a20696e204669672d>2.801 F .577< -7572652031292066726f6d207468652073656e6465722061646472657373202869662074 -6865>117 140.4 R F0<43>3.077 E F1 .577<8d61672069732073657420696e207468 -65206d61696c65722064658c6e6974696f6e20636f72726573706f6e64696e6720746f20 -746865>3.077 F F2<73656e64696e67>117 152.4 Q F1<6d61696c6572292e>2.5 E -1.021<52756c65736574207a65726f206973206170706c6965642061667465722072756c -6573657420746872656520746f2061646472657373657320746861742061726520676f69 -6e6720746f2061637475616c6c792073706563696679>142 168.6 R 2.818 -<726563697069656e74732e204974>117 180.6 R .318<6d757374207265736f6c76> -2.818 F 2.818<6574>-.15 G 2.819<6f61>-2.818 G F2<7b6d61696c6572>A 2.819 -<2c68>-1.11 G .319<6f73742c2061646472>-2.819 F<6573737d>-.37 E F1 2.819 -<747269706c652e20546865>2.819 F F2<6d61696c6572>2.819 E F1 .319 -<6d7573742062652064658c6e656420696e20746865>2.819 F .752<6d61696c657220 -64658c6e6974696f6e732066726f6d2074686520636f6e8c6775726174696f6e208c6c65 -2e>117 192.6 R<546865>5.751 E F2<686f7374>3.251 E F1 .751 -<69732064658c6e656420696e746f20746865>3.251 F F0<2468>3.251 E F1 .751 -<6d6163726f20666f722075736520696e>3.251 F 1.202<746865206172>117 204.6 R -1.202<67762065>-.18 F 1.203 -<7870616e73696f6e206f66207468652073706563698c6564206d61696c6572>-.15 F -6.203<2e4e>-.55 G 1.203<6f746963653a2073696e63652074686520656e>-6.203 F --.15<7665>-.4 G 1.203 -<6c6f70652073656e64657220616464726573732077696c6c206265>.15 F .645 -<7573656420696620612064656c69>117 216.6 R -.15<7665>-.25 G .644<72792073 -7461747573206e6f74698c636174696f6e206d7573742062652073656e642c20692e652e -2c206973206d61792073706563696679206120726563697069656e742c20697420697320 -616c736f2072756e>.15 F 1.548<7468726f7567682072756c65736574207a65726f2e> -117 228.6 R 1.548<49662072756c65736574207a65726f2072657475726e7320612074 -656d706f72617279206572726f72>6.548 F F0<347879>4.049 E F1 1.549 -<7468656e2064656c69>4.049 F -.15<7665>-.25 G 1.549 -<72792069732064656665727265642e>.15 F .064<546869732063616e206265207573 -656420746f2074656d706f726172696c792064697361626c652064656c69>117 240.6 R --.15<7665>-.25 G<7279>.15 E 2.564<2c65>-.65 G .064<2e672e2c206261736564 -206f6e207468652074696d65206f662074686520646179206f72206f746865722076> --2.564 F<6172792d>-.25 E<696e6720706172616d65746572732e>117 252.6 Q<4974 -2073686f756c64206e6f74206265207573656420746f2071756172616e74696e6520652d -6d61696c732e>5 E .452<52756c6573657473206f6e6520616e64207477>142 268.8 R -2.952<6f61>-.1 G .452<7265206170706c69656420746f20616c6c2073656e64657220 -616e6420726563697069656e7420616464726573736573207265737065637469>-2.952 -F -.15<7665>-.25 G<6c79>.15 E 5.453<2e54>-.65 G<6865>-5.453 E<79>-.15 E -<617265206170706c696564206265666f726520616e>117 280.8 Q 2.5<7973>-.15 G< -706563698c636174696f6e20696e20746865206d61696c65722064658c6e6974696f6e2e> --2.5 E<546865>5 E 2.5<796d>-.15 G<757374206e65>-2.5 E -.15<7665>-.25 G -2.5<7272>.15 G<65736f6c76>-2.5 E<652e>-.15 E 1.266<52756c6573657420666f -7572206973206170706c69656420746f20616c6c2061646472657373657320696e207468 -65206d6573736167652e>142 297 R 1.265 -<4974206973207479706963616c6c79207573656420746f207472616e736c617465> -6.265 F<696e7465726e616c20746f2065>117 309 Q<787465726e616c20666f726d2e> --.15 E .652<496e206164646974696f6e2c2072756c657365742035206973206170706c -69656420746f20616c6c206c6f63616c20616464726573736573202873706563698c6361 -6c6c79>142 325.2 R 3.153<2c74>-.65 G .653 -<686f73652074686174207265736f6c76>-3.153 F 3.153<6574>-.15 G 3.153<6f61> --3.153 G .296<6d61696c65722077697468207468652060463d3527208d616720736574 -29207468617420646f206e6f74206861>117 337.2 R .596 -.15<76652061>-.2 H -2.796<6c69617365732e2054686973>.15 F<616c6c6f>2.796 E .296 -<77732061206c617374206d696e75746520686f6f6b20666f72206c6f63616c>-.25 F -<6e616d65732e>117 349.2 Q F0 2.5<352e312e342e2052756c65736574>102 373.2 -R<686f6f6b73>2.5 E F1 3.814<4166>142 389.4 S 1.814 -.25<65772065>-3.814 -H 1.315<787472612072756c6573657473206172652064658c6e65642061732099686f6f -6b739a20746861742063616e2062652064658c6e656420746f2067657420737065636961 -6c2066656174757265732e>.1 F<546865>117 401.4 Q 3.468<7961>-.15 G .968 -<726520616c6c206e616d65642072756c65736574732e>-3.468 F .968 -<5468652099636865636b5f2a9a20666f726d7320616c6c206769>5.968 F 1.268 -.15 -<76652061>-.25 H .968<63636570742f72656a656374207374617475733b2066>.15 F -.967<616c6c696e67206f66>-.1 F 3.467<6674>-.25 G<6865>-3.467 E .207<656e -64206f722072657475726e696e67206e6f726d616c6c7920697320616e20616363657074 -2c20616e64207265736f6c76696e6720746f>117 413.4 R F0<2423657272>2.707 E -<6f72>-.18 E F1 .207 -<697320612072656a656374206f722071756172616e74696e652e>2.707 F<51756172> -5.207 E<2d>-.2 E -<616e74696e696e672069732063686f73656e2062792073706563696679696e67>117 -425.4 Q F0<71756172616e74696e65>2.5 E F1<696e20746865207365636f6e642070 -617274206f6620746865206d61696c657220747269706c65743a>2.5 E<24236572726f -722024402071756172616e74696e6520243a20526561736f6e20666f722071756172616e -74696e65>157 441.6 Q<4d616e>117 457.8 Q 3.121<796f>-.15 G 3.121<6674> --3.121 G .621<686573652063616e20616c736f207265736f6c76>-3.121 F 3.121 -<6574>-.15 G 3.121<6f74>-3.121 G .621 -<6865207370656369616c206d61696c6572206e616d65>-3.121 F F0 -<242364697363617264>3.12 E F1 3.12<3b74>C .62 -<686973206163636570747320746865206d657373616765>-3.12 F .923 -<61732074686f7567682069742077657265207375636365737366756c2062>117 469.8 -R .923<7574207468656e20646973636172647320697420776974686f75742064656c69> --.2 F -.15<7665>-.25 G<7279>.15 E 5.924<2e4e>-.65 G .924 -<6f74652c2074686973206d61696c65722063616e6e6f74206265>-5.924 F .682 -<63686f73656e2061732061206d61696c657220696e2072756c6573657420302e>117 -481.8 R .682<4e6f746520616c736f207468617420616c6c2099636865636b5f2a9a20 -72756c6573657473206861>5.682 F .981 -.15<76652074>-.2 H 3.181<6f64>.15 G -.681<65616c20776974682074656d706f2d>-3.181 F .682<726172792066>117 493.8 -R .682<61696c757265732c20657370656369616c6c7920666f72206d6170206c6f6f6b -7570732c207468656d73656c76>-.1 F .682<65732c20692e652e2c20746865>-.15 F -3.182<7973>-.15 G .683 -<686f756c642072657475726e20612074656d706f72617279206572726f72>-3.182 F -<636f6465206f72206174206c6561737420746865>117 505.8 Q 2.5<7973>-.15 G -<686f756c64206d616b>-2.5 E 2.5<656170>-.1 G -<726f706572206465636973696f6e20696e2074686f73652063617365732e>-2.5 E F0 -2.5<352e312e342e312e20636865636b5f72>117 529.8 R<656c6179>-.18 E F1 -<546865>157 546 Q F2 -.15<6368>3.336 G<6563>.15 E<6b5f72>-.2 E<656c6179> --.37 E F1 .836<72756c657365742069732063616c6c6564206166746572206120636f -6e6e656374696f6e20697320616363657074656420627920746865206461656d6f6e2e> -3.336 F .835<4974206973>5.835 F<6e6f742063616c6c6564207768656e2073656e64 -6d61696c2069732073746172746564207573696e6720746865>132 558 Q F0 -2.5 E F1 2.5<6f7074696f6e2e204974>2.5 F<697320706173736564>2.5 E<636c69 -656e742e686f73742e6e616d6520247c20636c69656e742e686f73742e61646472657373> -172 574.2 Q<7768657265>132 590.4 Q F0<247c>4.016 E F1 1.517<69732061206d -6574616368617261637465722073657061726174696e6720746865207477>4.017 F -4.017<6f70>-.1 G 4.017<617274732e2054686973>-4.017 F 1.517 -<72756c657365742063616e2072656a65637420636f6e6e656374696f6e73>4.017 F -.323<66726f6d2076>132 602.4 R .323<6172696f7573206c6f636174696f6e732e> --.25 F .322<4e6f74652074686174206974206f6e6c7920636865636b73207468652063 -6f6e6e656374696e6720534d545020636c69656e74204950206164647265737320616e64> -5.322 F 3.463<686f73746e616d652e204974>132 614.4 R .963<646f6573206e6f74 -20636865636b20666f72207468697264207061727479206d6573736167652072656c6179 -696e672e>3.463 F<546865>5.963 E F2 -.15<6368>3.463 G<6563>.15 E<6b5f72> --.2 E<637074>-.37 E F1 .964<72756c65736574206469732d>3.463 F -<6375737365642062656c6f>132 626.4 Q 2.5<7775>-.25 G<7375616c6c7920646f65 -73207468697264207061727479206d6573736167652072656c617920636865636b696e67 -2e>-2.5 E F0 2.5<352e312e342e322e20636865636b5f6d61696c>117 650.4 R F1 -<546865>157 666.6 Q F2 -.15<6368>3.723 G<6563>.15 E<6b5f6d61696c>-.2 E -F1 1.223<72756c6573657420697320706173736564207468652075736572206e616d65 -20706172616d65746572206f6620746865>3.723 F/F3 9/Times-Roman@0 SF 1.222 -<534d5450204d41494c>3.723 F F1<636f6d2d>3.722 E 2.5<6d616e642e204974>132 -678.6 R -<63616e20616363657074206f722072656a6563742074686520616464726573732e>2.5 -E 0 Cg EP -%%Page: 42 38 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d34322053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -2.5<352e312e342e332e20636865636b5f72>117 96 R<637074>-.18 E/F1 10 -/Times-Roman@0 SF<546865>157 112.2 Q/F2 10/Times-Italic@0 SF -.15<6368> -3.917 G<6563>.15 E<6b5f72>-.2 E<637074>-.37 E F1 1.417<72756c6573657420 -697320706173736564207468652075736572206e616d6520706172616d65746572206f66 -20746865>3.917 F/F3 9/Times-Roman@0 SF 1.418<534d54502052435054>3.917 F -F1<636f6d2d>3.918 E 2.5<6d616e642e204974>132 124.2 R -<63616e20616363657074206f722072656a6563742074686520616464726573732e>2.5 -E F0 2.5<352e312e342e342e20636865636b5f64617461>117 148.2 R F1<546865> -157 164.4 Q F2 -.15<6368>3.246 G<6563>.15 E<6b5f64617461>-.2 E F1 .746 -<72756c657365742069732063616c6c656420616674657220746865>3.246 F F3 .746 -<534d54502044>3.246 F -1.089 -.999<41542041>-.36 H F1 .745 -<636f6d6d616e642c2069747320706172616d6574657220697320746865>4.245 F -<6e756d626572206f6620726563697069656e74732e>132 176.4 Q<49742063616e2061 -6363657074206f722072656a6563742074686520636f6d6d616e642e>5 E F0 2.5 -<352e312e342e352e20636865636b5f636f6d706174>117 200.4 R F1<546865>157 -216.6 Q F2 -.15<6368>2.5 G<6563>.15 E<6b5f636f6d706174>-.2 E F1 -<72756c6573657420697320706173736564>2.5 E<73656e646572>172 232.8 Q -<2d6164647265737320247c20726563697069656e742d61646472657373>-.2 E -<7768657265>132 249 Q F0<247c>3.725 E F1 1.225<69732061206d657461636861 -7261637465722073657061726174696e6720746865206164647265737365732e>3.725 F -1.225<49742063616e20616363657074206f722072656a656374206d61696c207472616e -73666572>6.225 F 2.386<6265747765656e207468657365207477>132 261 R 4.886 -<6f61>-.1 G 2.386<6464726573736573206d756368206c696b>-4.886 F 4.885 -<6574>-.1 G<6865>-4.885 E F2 -.15<6368>4.885 G<6563>.15 E -<6b636f6d7061742829>-.2 E F1 4.885<66756e6374696f6e2e204e6f74653a>4.885 -F 2.385<7768696c65206f74686572>4.885 F F2 -.15<6368>132 273 S<6563>.15 E -<6b5f2a>-.2 E F1 1.99<72756c65736574732061726520696e>4.49 F -.2<766f>-.4 -G -.1<6b65>.2 G 4.49<6464>.1 G 1.99<7572696e672074686520534d5450206d6169 -6c2072656365697074696f6e2073746167652028692e652e2c20696e2074686520534d54 -50>-4.49 F<73657276>132 285 Q<6572292c>-.15 E F2 -.15<6368>2.5 G<6563> -.15 E<6b5f636f6d706174>-.2 E F1<697320696e>2.5 E -.2<766f>-.4 G -.1 -<6b65>.2 G 2.5<6464>.1 G<7572696e6720746865206d61696c2064656c69>-2.5 E --.15<7665>-.25 G<72792073746167652e>.15 E F0 2.5 -<352e312e342e362e20636865636b5f656f68>117 309 R F1<546865>157 325.2 Q F2 --.15<6368>2.5 G<6563>.15 E<6b5f656f68>-.2 E F1 -<72756c6573657420697320706173736564>2.5 E<6e756d626572>172 341.4 Q -<2d6f662d6865616465727320247c2073697a652d6f662d68656164657273>-.2 E -<7768657265>132 357.6 Q F0<247c>3.803 E F1 1.303<69732061206d6574616368 -617261637465722073657061726174696e6720746865206e756d626572732e>3.803 F -1.303 -<5468657365206e756d626572732063616e206265207573656420666f722073697a65> -6.303 F .588<636f6d70617269736f6e73207769746820746865>132 369.6 R F0 -<6172697468>3.088 E F1 3.088<6d61702e20546865>3.088 F .588<72756c657365 -742069732074726967676572656420616674657220616c6c206f66207468652068656164 -657273206861>3.088 F .888 -.15<76652062>-.2 H<65656e>.15 E 3.262 -<726561642e204974>132 381.6 R .762<63616e206265207573656420746f20636f72 -72656c61746520696e666f726d6174696f6e2067>3.262 F .761<617468657265642066 -726f6d2074686f73652068656164657273207573696e6720746865>-.05 F F0 -<6d616372>3.261 E<6f>-.18 E F1<73746f72616765206d61702e>132 393.6 Q<4f6e -6520706f737369626c652075736520697320746f20636865636b20666f722061206d6973 -73696e6720686561646572>5 E 5<2e46>-.55 G<6f722065>-5.15 E -<78616d706c653a>-.15 E<4b73746f72616765206d6163726f>172 409.8 Q -<484d6573736167652d49643a20243e436865636b4d6573736167654964>172 421.8 Q -<53436865636b4d6573736167654964>172 445.8 Q 2.5<2352>172 457.8 S -<65636f7264207468652070726573656e6365206f662074686520686561646572>-2.5 E -88.83<52242a20243a>172 469.8 R<242873746f72616765207b4d6573736167654964 -436865636b7d202440204f4b202429202431>2.5 E<523c20242b204020242b203e>172 -481.8 Q<2440204f4b>49.56 E 88.83<52242a2024236572726f72>172 493.8 R -<243a2035353320486561646572204572726f72>2.5 E<53636865636b5f656f68>172 -517.8 Q 2.5<2343>172 529.8 S<6865636b20746865206d6163726f>-2.5 E 88.83 -<52242a20243a>172 541.8 R 2.5<3c24>2.5 G -<267b4d6573736167654964436865636b7d203e>-2.5 E 2.5<2343>172 553.8 S -<6c65617220746865206d6163726f20666f7220746865206e65>-2.5 E -<7874206d657373616765>-.15 E 88.83<52242a20243a>172 565.8 R -<242873746f72616765207b4d6573736167654964436865636b7d202429202431>2.5 E -2.5<2348>172 577.8 S<61732061204d6573736167652d49643a20686561646572>-2.5 -E<523c20242b203e>172 589.8 Q<2440204f4b>74.41 E 2.5<2341>172 601.8 S -<6c6c6f>-2.5 E 2.5<776d>-.25 G -<697373696e67204d6573736167652d49643a2066726f6d206c6f63616c206d61696c> --2.5 E 88.83<52242a20243a>172 613.8 R 2.5<3c24>2.5 G -<267b636c69656e745f6e616d657d203e>-2.5 E<523c203e>172 625.8 Q -<2440204f4b>87.55 E<523c20243d77203e>172 637.8 Q<2440204f4b>67.19 E 2.5 -<234f>172 649.8 S<74686572776973652c2072656a65637420746865206d61696c> --2.5 E 88.83<52242a2024236572726f72>172 661.8 R -<243a2035353320486561646572204572726f72>2.5 E -.25<4b65>132 678 S .459< -657020696e206d696e6420746865204d6573736167652d49643a20686561646572206973 -206e6f7420612072657175697265642068656164657220616e64206973206e6f74206120 -67756172616e74656564207370616d>.25 F<696e64696361746f72>132 690 Q 5 -<2e54>-.55 G<6869732072756c6573657420697320616e2065>-5 E<78616d706c6520 -616e642073686f756c642070726f6261626c79206e6f74206265207573656420696e2070 -726f64756374696f6e2e>-.15 E 0 Cg EP -%%Page: 43 39 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3433>195.86 E -2.5<352e312e342e372e20636865636b5f656f6d>117 96 R/F1 10/Times-Roman@0 SF -<546865>157 112.2 Q/F2 10/Times-Italic@0 SF -.15<6368>3.219 G<6563>.15 E -<6b5f656f6d>-.2 E F1 .719<72756c657365742069732063616c6c6564206166746572 -2074686520656e64206f662061206d6573736167652c2069747320706172616d65746572 -20697320746865206d65732d>3.219 F<736167652073697a652e>132 124.2 Q<497420 -63616e20616363657074206f722072656a65637420746865206d6573736167652e>5 E -F0 2.5<352e312e342e382e20636865636b5f657472>117 148.2 R<6e>-.15 E F1 -<546865>157 164.4 Q F2 -.15<6368>3.384 G<6563>.15 E<6b5f6574726e>-.2 E -F1 .885<72756c65736574206973207061737365642074686520706172616d6574657220 -6f6620746865>3.384 F/F3 9/Times-Roman@0 SF .885<534d5450204554524e>3.385 -F F1 3.385<636f6d6d616e642e204974>3.385 F<63616e>3.385 E -<616363657074206f722072656a6563742074686520636f6d6d616e642e>132 176.4 Q -F0 2.5<352e312e342e392e20636865636b5f6578706e>117 200.4 R F1<546865>157 -216.6 Q F2 -.15<6368>3.615 G<6563>.15 E<6b5f65>-.2 E<78706e>-.2 E F1 -1.115<72756c6573657420697320706173736564207468652075736572206e616d652070 -6172616d65746572206f6620746865>3.615 F F3 1.114<534d5450204558504e>3.615 -F F1<636f6d2d>3.614 E 2.5<6d616e642e204974>132 228.6 R -<63616e20616363657074206f722072656a6563742074686520616464726573732e>2.5 -E F0 2.5<352e312e342e31302e20636865636b5f76726679>117 252.6 R F1<546865> -157 268.8 Q F2 -.15<6368>3.816 G<6563>.15 E<6b5f76726679>-.2 E F1 1.317< -72756c6573657420697320706173736564207468652075736572206e616d652070617261 -6d65746572206f6620746865>3.816 F F3 1.317<534d54502056524659>3.817 F F1 -<636f6d2d>3.817 E 2.5<6d616e642e204974>132 280.8 R -<63616e20616363657074206f722072656a6563742074686520636f6d6d616e642e>2.5 -E F0 2.5<352e312e342e31312e2074727573745f61757468>117 304.8 R F1<546865> -157 321 Q F2<74727573745f61757468>3.045 E F1 .545 -<72756c6573657420697320706173736564207468652041>3.045 F .545 -<5554483d20706172616d65746572206f6620746865>-.55 F F3 .544 -<534d5450204d41494c>3.044 F F1<636f6d6d616e642e>3.044 E .635<4974206973 -207573656420746f2064657465726d696e65207768657468657220746869732076>132 -333 R .636<616c75652073686f756c6420626520747275737465642e20496e206f7264 -657220746f206d616b>-.25 F 3.136<6574>-.1 G .636 -<686973206465636973696f6e2c>-3.136 F .154 -<7468652072756c65736574206d6179206d616b>132 345 R 2.654<6575>-.1 G .154 -<7365206f66207468652076>-2.654 F<6172696f7573>-.25 E F0 -<247b617574685f2a7d>2.654 E F1 2.654<6d6163726f732e204966>2.654 F .153 -<7468652072756c6573657420646f6573207265736f6c76>2.654 F 2.653<6574>-.15 -G 2.653<6f74>-2.653 G<6865>-2.653 E .018 -<996572726f729a206d61696c6572207468652041>132 357 R .019<5554483d207061 -72616d65746572206973206e6f74207472757374656420616e642068656e6365206e6f74 -20706173736564206f6e20746f20746865206e65>-.55 F .019<78742072656c6179> --.15 F<2e>-.65 E F0 2.5<352e312e342e31322e20746c735f636c69656e74>117 381 -R F1<546865>157 397.2 Q F2<746c735f636c69656e74>2.947 E F1 .447<72756c65 -7365742069732063616c6c6564207768656e2073656e646d61696c206163747320617320 -73657276>2.947 F<6572>-.15 E 2.947<2c61>-.4 G .447<667465722061205354> --2.947 F<4152>-.93 E .446<54544c5320636f6d2d>-.6 F 1.045 -<6d616e6420686173206265656e206973737565642c20616e642066726f6d>132 409.2 -R F2 -.15<6368>3.545 G<6563>.15 E<6b5f6d61696c2e>-.2 E F1 1.045 -<54686520706172616d65746572206973207468652076>6.045 F 1.045 -<616c7565206f66>-.25 F F0<247b76>3.545 E<65726966797d>-.1 E F1<616e64> -3.545 E<5354>132 421.2 Q<4152>-.93 E 1.704 -<54544c53206f72204d41494c2c207265737065637469>-.6 F -.15<7665>-.25 G -<6c79>.15 E 6.704<2e49>-.65 G 4.204<6674>-6.704 G 1.704 -<68652072756c6573657420646f6573207265736f6c76>-4.204 F 4.204<6574>-.15 G -4.204<6f74>-4.204 G 1.704<686520996572726f729a206d61696c6572>-4.204 F -4.203<2c74>-.4 G<6865>-4.203 E<617070726f707269617465206572726f7220636f -64652069732072657475726e656420746f2074686520636c69656e742e>132 433.2 Q -F0 2.5<352e312e342e31332e20746c735f736572>117 457.2 R -.1<7665>-.1 G<72> -.1 E F1<546865>157 473.4 Q F2<746c735f736572766572>3.053 E F1 .554<7275 -6c657365742069732063616c6c6564207768656e2073656e646d61696c20616374732061 -7320636c69656e742061667465722061205354>3.053 F<4152>-.93 E .554 -<54544c5320636f6d2d>-.6 F .05<6d616e64202873686f756c6429206861>132 485.4 -R .35 -.15<76652062>-.2 H .05<65656e206973737565642e>.15 F .049 -<54686520706172616d65746572206973207468652076>5.05 F .049 -<616c7565206f66>-.25 F F0<247b76>2.549 E<65726966797d>-.1 E F1 5.049 -<2e49>C 2.549<6674>-5.049 G .049<68652072756c6573657420646f6573>-2.549 F -<7265736f6c76>132 497.4 Q 2.514<6574>-.15 G 2.514<6f74>-2.514 G .014 -<686520996572726f729a206d61696c6572>-2.514 F 2.514<2c74>-.4 G .014<6865 -20636f6e6e656374696f6e2069732061626f72746564202874726561746564206173206e -6f6e2d64656c69>-2.514 F -.15<7665>-.25 G .015 -<7261626c652077697468206120706572>.15 F<2d>-.2 E -<6d616e656e74206f722074656d706f72617279206572726f72292e>132 509.4 Q F0 -2.5<352e312e342e31342e20746c735f72>117 533.4 R<637074>-.18 E F1<546865> -157 549.6 Q F2<746c735f72>4.075 E<637074>-.37 E F1 1.574<72756c65736574 -2069732063616c6c656420656163682074696d65206265666f7265206120524350542054> -4.075 F 4.074<4f63>-.18 G 1.574<6f6d6d616e642069732073656e742e>-4.074 F -<546865>6.574 E .102 -<706172616d65746572206973207468652063757272656e7420726563697069656e742e> -132 561.6 R .102<4966207468652072756c6573657420646f6573207265736f6c76> -5.102 F 2.602<6574>-.15 G 2.602<6f74>-2.602 G .102 -<686520996572726f729a206d61696c6572>-2.602 F 2.602<2c74>-.4 G .102 -<68652052435054>-2.602 F 2.749 -.18<544f2063>132 573.6 T 2.388<6f6d6d61 -6e642069732073757070726573736564202874726561746564206173206e6f6e2d64656c -69>.18 F -.15<7665>-.25 G 2.388 -<7261626c6520776974682061207065726d616e656e74206f722074656d706f72617279> -.15 F 3.027<6572726f72292e2054686973>132 585.6 R .527 -<72756c6573657420616c6c6f>3.027 F .528 -<777320746f207265717569726520656e6372797074696f6e206f722076>-.25 F .528 -<6572698c636174696f6e206f662074686520726563697069656e7427>-.15 F 3.028 -<734d>-.55 G 2.388 -.93<54412065>-3.028 H -.15<7665>.68 G<6e>.15 E .468 -<696620746865206d61696c20697320736f6d65686f>132 597.6 R 2.968<7772>-.25 -G .468<65646972656374656420746f20616e6f7468657220686f73742e>-2.968 F --.15<466f>5.468 G 2.968<7265>.15 G .468 -<78616d706c652c2073656e64696e67206d61696c20746f>-3.118 F F2<6c756b>2.967 -E<6540656e642d>-.1 E<6d61696c2e6f72>132 609.6 Q<67>-.37 E F1 1.929 -<6d617920676574207265646972656374656420746f206120686f7374206e616d6564> -4.429 F F2<64656174682e73746172>4.429 E F1 1.93 -<616e642068656e63652074686520746c735f73657276>4.429 F 1.93 -<65722072756c65736574>-.15 F -.1<776f>132 621.6 S<6e27>.1 E 3.003<7461> --.18 G<70706c79>-3.003 E 5.503<2e42>-.65 G 3.003<7969>-5.503 G .502<6e74 -726f647563696e672070657220726563697069656e74207265737472696374696f6e7320 -737563682061747461636b732028652e672e2c2076696120444e532073706f6f8c6e6729> --3.003 F<63616e206265206d61646520696d706f737369626c652e>132 633.6 Q -<536565>5 E F2<63662f524541444d45>2.5 E F1<686f>2.5 E 2.5<7774>-.25 G -<6869732072756c657365742063616e20626520757365642e>-2.5 E F0 2.5 -<352e312e342e31352e207372>117 657.6 R<765f666561747572>-.1 E<6573>-.18 E -F1<546865>157 673.8 Q F2<7372765f666561747572>2.75 E<6573>-.37 E F1 .25< -72756c657365742069732063616c6c656420776974682074686520636f6e6e656374696e -6720636c69656e7427>2.75 F 2.75<7368>-.55 G .25 -<6f7374206e616d65207768656e206120636c69656e74>-2.75 F 1.512 -<636f6e6e6563747320746f2073656e646d61696c2e>132 685.8 R 1.512 -<546869732072756c657365742073686f756c642072657475726e>6.512 F F0<2423> -4.011 E F1<666f6c6c6f>4.011 E 1.511 -<7765642062792061206c697374206f66206f7074696f6e73202873696e676c65>-.25 F -2.16<636861726163746572732064656c696d6974656420627920776869746520737061 -6365292e>132 697.8 R 2.16<4966207468652072657475726e2076>7.16 F 2.16 -<616c756520737461727473207769746820616e>-.25 F 2.16 -<797468696e6720656c7365206974206973>-.15 F .267 -<73696c656e746c792069676e6f7265642e>132 709.8 R .267<47656e6572616c6c79 -20757070657220636173652063686172616374657273207475726e206f66>5.267 F -2.767<666166>-.25 G .267<656174757265207768696c65206c6f>-2.767 F .267 -<7765722063617365206368617261632d>-.25 F 1.55 -<74657273207475726e206974206f6e2e>132 721.8 R 1.55 -<4f7074696f6e2060532720636175736573207468652073657276>6.55 F 1.55 -<6572206e6f7420746f206f66>-.15 F 1.55<666572205354>-.25 F<4152>-.93 E -1.55<54544c532c2077686963682069732075736566756c20746f>-.6 F 0 Cg EP -%%Page: 44 40 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d34342053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF 1.865<696e7465726163742077697468204d54>132 96 R -<41732f4d55>-.93 E 1.865<41732074686174206861>-.4 F 2.165 -.15<76652062> --.2 H<726f6b>.15 E 1.865<656e205354>-.1 F<4152>-.93 E 1.865 -<54544c5320696d706c656d656e746174696f6e732062792073696d706c79206e6f74> --.6 F<6f66>132 108 Q 2.115<666572696e672069742e>-.25 F 2.115 -<605627207475726e73206f66>7.115 F 4.616<6674>-.25 G 2.116<68652072657175 -65737420666f72206120636c69656e742063657274698c6361746520647572696e672074 -686520544c532068616e647368616b>-4.616 F<652e>-.1 E .149 -<4f7074696f6e732060>132 120 R 2.369 -1.11<41272061>-.8 H .149 -<6e642060502720737570707265737320534d54502041>1.11 F .148 -<55544820616e6420504950454c494e494e472c207265737065637469>-.55 F -.15 -<7665>-.25 G<6c79>.15 E 5.148<2e60>-.65 G .148 -<6327206973207468652065717569>-5.148 F<762d>-.25 E 1.768<616c656e742074 -6f20417574684f7074696f6e733d702c20692e652e2c20697420646f65736e27>132 132 -R 4.268<7470>-.18 G 1.768<65726d6974206d656368616e69736d7320737573636570 -7469626c6520746f2073696d706c65207061737369>-4.268 F -.15<7665>-.25 G -1.13<61747461636b2028652e672e2c20504c41494e2c204c4f47494e292c20756e6c65 -73732061207365637572697479206c617965722069732061637469>132 144 R -.15 -<7665>-.25 G 6.13<2e4f>.15 G 1.13 -<7074696f6e20606c2720726571756972657320534d5450>-6.13 F -.55<4155>132 -156 S 2.123<544820666f72206120636f6e6e656374696f6e2e>.55 F 2.123<4f7074 -696f6e73202742272c202744272c202745272c20616e6420275827207375707072657373 -20534d545020564552422c2044534e2c>7.123 F -<4554524e2c20616e64204558504e2c207265737065637469>132 168 Q -.15<7665> --.25 G<6c79>.15 E<2e>-.65 E 37.78<4144>172 184.2 S 2.5<6f6e>-37.78 G -<6f74206f66>-2.5 E<6665722041>-.25 E<555448>-.55 E 40.56<614f>172 196.2 -S -.25<6666>-40.56 G<65722041>.25 E<5554482028646566>-.55 E<61756c7429> --.1 E 38.33<4244>172 208.2 S 2.5<6f6e>-38.33 G<6f74206f66>-2.5 E -<6665722056455242>-.25 E 40<624f>172 220.2 S -.25<6666>-40 G -<657220564552422028646566>.25 E<61756c7429>-.1 E 38.33<4344>172 232.2 S -2.5<6f6e>-38.33 G -<6f742072657175697265207365637572697479206c6179657220666f72>-2.5 E -<706c61696e7465>217 244.2 Q<78742041>-.15 E<5554482028646566>-.55 E -<61756c7429>-.1 E 40.56<6352>172 256.2 S -<657175697265207365637572697479206c6179657220666f7220706c61696e7465> --40.56 E<78742041>-.15 E<555448>-.55 E 37.78<4444>172 268.2 S 2.5<6f6e> --37.78 G<6f74206f66>-2.5 E<6665722044534e>-.25 E 40<644f>172 280.2 S --.25<6666>-40 G<65722044534e2028646566>.25 E<61756c7429>-.1 E 38.89 -<4544>172 292.2 S 2.5<6f6e>-38.89 G<6f74206f66>-2.5 E<666572204554524e> --.25 E 40.56<654f>172 304.2 S -.25<6666>-40.56 G -<6572204554524e2028646566>.25 E<61756c7429>-.1 E 38.89<4c44>172 316.2 S -2.5<6f6e>-38.89 G<6f7420726571756972652041>-2.5 E<5554482028646566>-.55 -E<61756c7429>-.1 E 42.22<6c52>172 328.2 S<6571756972652041>-42.22 E -<555448>-.55 E 39.44<5044>172 340.2 S 2.5<6f6e>-39.44 G<6f74206f66>-2.5 -E<66657220504950454c494e494e47>-.25 E 40<704f>172 352.2 S -.25<6666>-40 -G<657220504950454c494e494e472028646566>.25 E<61756c7429>-.1 E 39.44 -<5344>172 364.2 S 2.5<6f6e>-39.44 G<6f74206f66>-2.5 E<666572205354>-.25 -E<4152>-.93 E<54544c53>-.6 E 41.11<734f>172 376.2 S -.25<6666>-41.11 G -<6572205354>.25 E<4152>-.93 E<54544c532028646566>-.6 E<61756c7429>-.1 E -37.78<5644>172 388.2 S 2.5<6f6e>-37.78 G -<6f742072657175657374206120636c69656e742063657274698c63617465>-2.5 E 40 -<7652>172 400.2 S -<657175657374206120636c69656e742063657274698c636174652028646566>-40 E -<61756c7429>-.1 E 37.78<5844>172 412.2 S 2.5<6f6e>-37.78 G<6f74206f66> --2.5 E<666572204558504e>-.25 E 40<784f>172 424.2 S -.25<6666>-40 G -<6572204558504e2028646566>.25 E<61756c7429>-.1 E .205 -<4e6f74653a2074686520656e7472696573206d61726b>132 440.4 R .205 -<65642061732060>-.1 F<6028646566>-.74 E<61756c742927>-.1 E 2.705<276d> --.74 G .204<61792072657175697265207468617420736f6d6520636f6e8c6775726174 -696f6e20686173206265656e206d6164652c>-2.705 F .406 -<652e672e2c20534d54502041>132 452.4 R .407<555448206973206f6e6c792061> --.55 F -.25<7661>-.2 G .407 -<696c61626c652069662070726f7065726c7920636f6e8c67757265642e>.25 F -<4d6f72656f>5.407 E -.15<7665>-.15 G 1.207 -.4<722c206d>.15 H<616e>.4 E -2.907<796f>-.15 G .407<7074696f6e732063616e206265>-2.907 F .054<6368616e -676564206f6e206120676c6f62616c20626173697320766961206f746865722073657474 -696e67732061732065>132 464.4 R .054<78706c61696e656420696e20746869732064 -6f63756d656e742c20652e672e2c20766961204461656d6f6e2d>-.15 F -<506f72744f7074696f6e732e>132 476.4 Q .88<5468652072756c65736574206d6179 -2072657475726e2060242374656d702720746f20696e6469636174652074686174207468 -65726520697320612074656d706f726172792070726f626c656d206465746572>157 -492.6 R<2d>-.2 E 1.623<6d696e696e672074686520636f7272656374206665617475 -7265732c20652e672e2c2069662061206d617020697320756e61>132 504.6 R -.25 -<7661>-.2 G 4.123<696c61626c652e20496e>.25 F 1.622 -<7468617420636173652c2074686520534d54502073657276>4.122 F<6572>-.15 E -<69737375657320612074656d706f726172792066>132 516.6 Q -<61696c75726520616e6420646f6573206e6f742061636365707420656d61696c2e>-.1 -E F0 2.5<352e312e342e31362e207472795f746c73>117 540.6 R F1<546865>157 -556.8 Q/F2 10/Times-Italic@0 SF<7472795f746c73>3.563 E F1 1.063<72756c65 -7365742069732063616c6c6564207768656e2073656e646d61696c20636f6e6e65637473 -20746f20616e6f74686572204d54>3.563 F 3.563<412e204966>-.93 F 1.064 -<7468652072756c65736574>3.563 F 1.153<646f6573207265736f6c76>132 568.8 R -3.653<6574>-.15 G 3.653<6f74>-3.653 G 1.153 -<686520996572726f729a206d61696c6572>-3.653 F 3.653<2c73>-.4 G 1.153 -<656e646d61696c20646f6573206e6f7420747279205354>-3.653 F<4152>-.93 E -1.152<54544c532065>-.6 F -.15<7665>-.25 G 3.652<6e69>.15 G 3.652<6669> --3.652 G 3.652<7469>-3.652 G 3.652<736f>-3.652 G -.25<6666>-3.652 G -<657265642e>.25 E -<546869732069732075736566756c20746f206465616c2077697468205354>132 580.8 -Q<4152>-.93 E<54544c5320696e7465726f7065726162696c6974792069737375657320 -62792073696d706c79206e6f74207573696e672069742e>-.6 E F0 2.5 -<352e312e342e31372e20746c735f7372>117 604.8 R<765f666561747572>-.1 E -<657320616e6420746c735f636c745f666561747572>-.18 E<6573>-.18 E F1 -<546865>157 621 Q F2<746c735f636c745f666561747572>2.871 E<6573>-.37 E F1 -.372<72756c657365742069732063616c6c6564207768656e2073656e646d61696c2063 -6f6e6e6563747320746f20616e6f74686572204d54>2.871 F 2.872<4161>-.93 G -.372<6e6420746865>-2.872 F F2<746c735f7372765f666561747572>132 633 Q -<6573>-.37 E F1 .436<72756c657365742069732063616c6c6564207768656e206120 -636c69656e7420636f6e6e6563747320746f>2.936 F F2<73656e646d61696c>2.935 E -F1 5.435<2e54>C .435<6865206172>-5.435 F .435 -<67756d656e747320666f7220746865>-.18 F 1.872<72756c65736574732061726520 -74686520686f7374206e616d6520616e642049502061646472657373206f662074686520 -6f74686572207369646520736570617261746564206279>132 645 R F0<247c>4.372 E -F1 1.872<2877686963682069732061>4.372 F 3.593 -<6d657461636861726163746572292e20546865>132 657 R 3.593<7973>-.15 G -1.093<686f756c642072657475726e2061206c697374206f66>-3.593 F F2 -.1<6b65> -3.592 G<793d76616c7565>-.2 E F1 1.092 -<7061697273207365706172617465642062792073656d69636f6c6f6e733b20746865> -3.592 F .552<6c6973742063616e20626520656d707479206966206e6f206f7074696f -6e732073686f756c64206265206170706c69656420746f2074686520636f6e6e65637469 -6f6e2e>132 669 R -1.27 -.74<41762061>5.553 H .553<696c61626c65206b>.74 F --.15<6579>-.1 G 3.053<7361>.15 G .553<726520616e64>-3.053 F -<746865697220616c6c6f>132 681 Q<7765642076>-.25 E<616c756573206172653a> --.25 E<4f7074696f6e73>132 697.2 Q 3.977<4163>146.4 709.2 S 1.477<6f6d6d -6120736570617261746564206c697374206f662053534c2072656c61746564206f707469 -6f6e732e>-3.977 F<536565>6.476 E F2<53657276657253534c4f7074696f6e73> -3.976 E F1<616e64>3.976 E F2<436c69656e7453532d>3.976 E -<4c4f7074696f6e73>146.4 721.2 Q F1 2.519 -<666f722064657461696c732c2061732077656c6c206173>5.019 F F2 -<53534c5f7365745f6f7074696f6e73>5.019 E F1 2.519 -<28332920616e64206e6f746520746869732077>B 2.52 -<61726e696e673a204f7074696f6e73>-.1 F 0 Cg EP -%%Page: 45 41 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3435>195.86 E -/F1 10/Times-Roman@0 SF -<616c726561647920736574206265666f726520617265206e6f7420636c656172656421> -146.4 96 Q<4369706865724c697374>132 112.2 Q .195 -<5370656369667920636970686572206c69737420666f72205354>146.4 124.2 R -<4152>-.93 E .194<54544c532c20736565>-.6 F/F2 10/Times-Italic@0 SF -<636970686572>2.694 E<73>-.1 E F1 .194 -<28312920666f7220706f737369626c652076>B 2.694<616c7565732e2054686973> --.25 F -.15<6f7665>2.694 G .194<72726964657320746865>.15 F<676c6f62616c> -146.4 136.2 Q F2<4369706865724c697374>2.5 E F1 -<666f72207468652073657373696f6e2e>2.5 E<4365727446696c65>132 152.4 Q -<46696c6520636f6e7461696e696e6720612063657274698c636174652e>146.4 164.4 -Q -2.15 -.25<4b652079>132 180.6 T<46696c65>.25 E -<46696c6520636f6e7461696e696e672074686520707269>146.4 192.6 Q -.25<7661> --.25 G<7465206b>.25 E .3 -.15<65792066>-.1 H -<6f72207468652063657274698c636174652e>.15 E<4578616d706c653a>132 208.8 Q -<53746c735f7372765f6665617475726573>172 225 Q<52242a20247c2031302e242b> -172 237 Q<243a206369706865726c6973743d48494748>56.19 E<4e6f7465733a>132 -257.4 Q .402<4572726f727320696e2074686573652066656174757265732028652e67 -2e2c20756e6b6e6f>157 273.6 R .402<776e206b>-.25 F -.15<6579>-.1 G 2.902 -<736f>.15 G 2.902<7269>-2.902 G -1.95 -.4<6e762061>-2.902 H .402 -<6c69642076>.4 F .402 -<616c7565732920617265206c6f6767656420616e642074686520637572>-.25 F<2d> --.2 E 2.362<72656e742073657373696f6e2069732061626f7274656420746f2061>132 -285.6 R -.2<766f>-.2 G 2.362<6964207573696e67205354>.2 F<4152>-.93 E -2.361 -<54544c53207769746820666561747572657320746861742073686f756c64206861>-.6 -F 2.661 -.15<76652062>-.2 H<65656e>.15 E<6368616e6765642e>132 297.6 Q -<546865206b>157 313.8 Q -.15<6579>-.1 G 2.5<7361>.15 G -<726520636173652d696e73656e73697469>-2.5 E -.15<7665>-.25 G<2e>.15 E -<426f7468>157 330 Q F2<4365727446>2.5 E<696c65>-.45 E F1<616e64>2.5 E F2 --2.1 -.35<4b652079>2.5 H -.45<4669>.35 G<6c65>.45 E F1<6d75737420626520 -73706563698c656420746f6765746865723b2073706563696679696e67206f6e6c79206f -6e6520697320616e206572726f72>2.5 E<2e>-.55 E 2.054<54686573652072756c65 -736574732072657175697265207468652073656e646d61696c2062696e61727920746f20 -62652062>157 346.2 R 2.054 -<75696c742077697468205f4646525f544c535f53455f4f505453>-.2 F -<656e61626c6564202873656520746865202246>132 358.2 Q -<6f72204675747572652052656c65617365222073656374696f6e292e>-.15 E F0 2.5 -<352e312e342e31382e2061757468696e66>117 382.2 R<6f>-.25 E F1<546865>157 -398.4 Q F2<61757468696e666f>3.05 E F1 .549<72756c657365742069732063616c -6c6564207768656e2073656e646d61696c20747269657320746f2061757468656e746963 -61746520746f20616e6f74686572204d54>3.05 F 3.049<412e204974>-.93 F .843 -<73686f756c642072657475726e>132 410.4 R F0<2423>3.343 E F1<666f6c6c6f> -3.343 E .843<7765642062792061206c697374206f6620746f6b>-.25 F .844 -<656e73207468617420617265207573656420666f7220534d54502041>-.1 F 3.344 -<5554482e204966>-.55 F .844<7468652072657475726e>3.344 F -.25<7661>132 -422.4 S 1.304<6c756520737461727473207769746820616e>.25 F 1.304 -<797468696e6720656c73652069742069732073696c656e746c792069676e6f7265642e> --.15 F 1.304<4561636820746f6b>6.304 F 1.303 -<656e20697320612074616767656420737472696e67206f6620746865>-.1 F<666f726d -3a20225444737472696e67222028696e636c7564696e67207468652071756f746573292c -207768657265>132 434.4 Q 38.89<5454>172 450.6 S -<61672077686963682064657363726962657320746865206974656d>-39.69 E 37.78 -<4444>172 462.6 S<656c696d697465723a20273a272073696d706c65207465>-37.78 -E<787420666f6c6c6f>-.15 E<7773>-.25 E -<273d2720737472696e672069732062617365363420656e636f646564>217 474.6 Q -19.72<737472696e672056>172 486.6 R<616c7565206f6620746865206974656d> --1.11 E -1.11<5661>132 502.8 S<6c69642076>1.11 E -<616c75657320666f722074686520746167206172653a>-.25 E 37.78<5575>172 519 -S<7365722028617574686f72697a6174696f6e29206964>-37.78 E 41.67<4961>172 -531 S<757468656e7469636174696f6e206964>-41.67 E 39.44<5070>172 543 S -<61737377>-39.44 E<6f7264>-.1 E 38.33<5272>172 555 S<65616c6d>-38.33 E -36.11<4d6c>172 567 S<697374206f66206d656368616e69736d732064656c696d6974 -656420627920737061636573>-36.11 E .323<496620746869732072756c6573657420 -69732064658c6e65642c20746865206f7074696f6e>132 583.2 R F0 -<44656661756c7441>2.823 E<757468496e66>-.5 E<6f>-.25 E F1 .323 -<69732069676e6f726564202865>2.823 F -.15<7665>-.25 G 2.824<6e69>.15 G -2.824<6674>-2.824 G .324<68652072756c6573657420646f6573206e6f74>-2.824 F -<72657475726e20612060>132 595.2 Q<6075736566756c27>-.74 E 2.5<2772>-.74 -G<6573756c74292e>-2.5 E F0 2.5<352e312e342e31392e2071756575656772>117 -619.2 R<6f7570>-.18 E F1<546865>157 635.4 Q F2<7175657565>3.919 E<6772> --.4 E<6f7570>-.45 E F1 1.419<72756c65736574206973207573656420746f206d61 -70206120726563697069656e74206164647265737320746f20612071756575652067726f -7570206e616d652e>3.919 F 1.197<54686520696e70757420666f7220746865207275 -6c65736574206973206120726563697069656e7420616464726573732061732073706563 -698c656420627920746865>132 647.4 R/F3 9/Times-Roman@0 SF 1.197 -<534d54502052435054>3.697 F F1<636f6d6d616e642e>3.697 E 1.307 -<5468652072756c657365742073686f756c642072657475726e>132 659.4 R F0<2423> -3.807 E F1<666f6c6c6f>3.807 E 1.307 -<77656420627920746865206e616d65206f6620612071756575652067726f75702e>-.25 -F 1.306<4966207468652072657475726e2076>6.307 F<616c7565>-.25 E 1.24 -<737461727473207769746820616e>132 671.4 R 1.241 -<797468696e6720656c73652069742069732073696c656e746c792069676e6f7265642e> --.15 F 1.241<536565207468652073656374696f6e2061626f75742060>6.241 F -1.241<6051756575652047726f75707320616e64>-.74 F -<5175657565204469726563746f7269657327>132 683.4 Q 2.5<2766>-.74 G -<6f72206675727468657220696e666f726d6174696f6e2e>-2.5 E 0 Cg EP -%%Page: 46 42 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d34362053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -2.5<352e312e342e32302e206772>117 96 R<6565745f7061757365>-.18 E/F1 10 -/Times-Roman@0 SF<546865>157 112.2 Q/F2 10/Times-Italic@0 SF<6772>2.793 -E<6565745f7061757365>-.37 E F1 .292<72756c65736574206973207573656420746f -20737065636966792074686520616d6f756e74206f662074696d6520746f207061757365 -206265666f72652073656e64696e67>2.793 F 1.226 -<74686520696e697469616c20534d545020323230206772656574696e672e>132 124.2 -R 1.226<496620616e>6.226 F 3.726<7974>-.15 G<726166>-3.726 E 1.226 -<8c63206973207265636569>-.25 F -.15<7665>-.25 G 3.726<6464>.15 G 1.226 -<7572696e6720746861742070617573652c20616e20534d545020353534>-3.726 F -.295<72656a656374696f6e20726573706f6e7365206973206769>132 136.2 R -.15 -<7665>-.25 G 2.795<6e69>.15 G .295<6e7374656164206f66207468652032323020 -6772656574696e6720616e6420616c6c20534d545020636f6d6d616e6473206172652072 -656a6563746564>-2.795 F 1.488 -<647572696e67207468617420636f6e6e656374696f6e2e>132 148.2 R 1.488<546869 -732068656c70732070726f746563742073697465732066726f6d206f70656e2070726f78 -69657320616e6420534d545020736c616d6d6572732e>6.488 F .522 -<5468652072756c657365742073686f756c642072657475726e>132 160.2 R F0<2423> -3.022 E F1<666f6c6c6f>3.022 E .521<77656420627920746865206e756d62657220 -6f66206d696c6c697365636f6e6473202874686f7573616e64746873206f662061207365 -632d>-.25 F .728<6f6e642920746f2070617573652e>132 172.2 R .728 -<4966207468652072657475726e2076>5.728 F .728 -<616c756520737461727473207769746820616e>-.25 F .728 -<797468696e6720656c7365206f72206973206e6f742061206e756d626572>-.15 F -3.229<2c69>-.4 G 3.229<7469>-3.229 G 3.229<7373>-3.229 G<696c656e746c79> --3.229 E 2.702<69676e6f7265642e204e6f74653a>132 184.2 R .202 -<746869732072756c65736574206973206e6f7420696e>2.702 F -.2<766f>-.4 G -.1 -<6b65>.2 G 2.702<6428>.1 G .202<616e642068656e63652074686520666561747572 -652069732064697361626c656429207768656e2074686520736d747073>-2.702 F -1.224<28534d5450206f>132 196.2 R -.15<7665>-.15 G 3.724<7253>.15 G 1.224 -<534c2920697320757365642c20692e652e2c20746865>-3.724 F F2<73>3.724 E F1 -1.224 -<6d6f64698c65722069732073657420666f7220746865206461656d6f6e20766961> -3.724 F F0<4461656d6f6e50>3.724 E<6f72744f702d>-.2 E<74696f6e73>132 -208.2 Q F1 2.5<2c62>C<65636175736520696e20746869732063617365207468652053 -534c2068616e647368616b>-2.5 E 2.5<6569>-.1 G 2.5<7370>-2.5 G<6572666f72 -6d6564206265666f726520746865206772656574696e672069732073656e742e>-2.5 E -F0 2.5<352e312e352e20495043>102 232.2 R<6d61696c657273>2.5 E F1 1.333<53 -6f6d65207370656369616c2070726f63657373696e67206f636375727320696620746865 -2072756c65736574207a65726f207265736f6c76>142 248.4 R 1.332 -<657320746f20616e20495043206d61696c65722028746861742069732c2061>-.15 F -1.178<6d61696c657220746861742068617320995b4950435d9a206c6973746564206173 -207468652050>117 260.4 R 1.179<61746820696e20746865>-.15 F F0<4d>3.679 E -F1 1.179<636f6e8c6775726174696f6e206c696e652e>3.679 F 1.179 -<54686520686f7374206e616d6520706173736564>6.179 F 1.178 -<6166746572209924409a20686173204d582065>117 272.4 R 1.178 -<7870616e73696f6e20706572666f726d6564206966206e6f742064656c69>-.15 F --.15<7665>-.25 G 1.178<72696e67207669612061206e616d656420736f636b>.15 F -1.178<65743b2074686973206c6f6f6b7320746865>-.1 F<6e616d6520757020696e20 -444e5320746f208c6e6420616c7465726e6174652064656c69>117 284.4 Q -.15 -<7665>-.25 G<72792073697465732e>.15 E .441 -<54686520686f7374206e616d652063616e20616c736f2062652070726f>142 300.6 R -.442<7669646564206173206120646f747465642071756164206f7220616e2049507636 -206164647265737320696e2073717561726520627261636b2d>-.15 F -<6574733b20666f722065>117 312.6 Q<78616d706c653a>-.15 E -<5b3132382e33322e3134392e37385d>157 328.8 Q<6f72>117 345 Q -<5b495076363a323030323a633061383a353164323a3a323366345d>157 361.2 Q -<54686973206361757365732064697265637420636f6e>117 377.4 Q -.15<7665>-.4 -G<7273696f6e206f6620746865206e756d657269632076>.15 E -<616c756520746f20616e20495020686f737420616464726573732e>-.25 E .214<5468 -6520686f7374206e616d652070617373656420696e20616674657220746865209924409a -206d617920616c736f206265206120636f6c6f6e2d736570617261746564206c69737420 -6f6620686f7374732e>142 393.6 R<45616368>5.213 E .484 -<69732073657061726174656c79204d582065>117 405.6 R .484<7870616e64656420 -616e642074686520726573756c74732061726520636f6e636174656e6174656420746f20 -6d616b>-.15 F 2.985<6528>-.1 G .485 -<657373656e7469616c6c7929206f6e65206c6f6e67204d58>-2.985 F 3.465 -<6c6973742e20546865>117 417.6 R .964 -<696e74656e74206865726520697320746f20637265617465209966>3.465 F<616b>-.1 -E .964<659a204d58207265636f726473207468617420617265206e6f74207075626c69 -7368656420696e20444e5320666f7220707269>-.1 F -.25<7661>-.25 G<7465>.25 E -<696e7465726e616c206e657477>117 429.6 Q<6f726b732e>-.1 E<41732061208c6e -616c207370656369616c20636173652c2074686520686f7374206e616d652063616e2062 -652070617373656420696e2061732061207465>142 445.8 Q -<787420737472696e6720696e2073717561726520627261636b>-.15 E<6574733a>-.1 -E<5b756362>157 462 Q -.25<7661>-.15 G<782e6265726b>.25 E<656c65>-.1 E --.65<792e>-.15 G<6564755d>.65 E .312<5468697320666f726d2061>117 478.2 R --.2<766f>-.2 G .312<69647320746865204d58206d617070696e672e>.2 F F0 -<4e2e422e3a>5.312 E F2 .313<5468697320697320696e74656e646564206f6e6c7920 -666f7220736974756174696f6e732077686572>2.812 F 2.813<6579>-.37 G .313 -<6f7520686176652061>-2.813 F .338<6e6574776f726b208c72>117 490.2 R -.15 -<6577>-.37 G .337<616c6c206f72206f7468657220686f737420746861742077696c6c -20646f207370656369616c207072>.15 F .337<6f63657373696e6720666f7220616c6c -20796f7572206d61696c2c20736f207468617420796f7572204d58>-.45 F -.37<7265> -117 502.2 S<636f72>.37 E 3.958<6470>-.37 G 1.458 -<6f696e747320746f20612067617465>-3.958 F 1.458<776179206d6163>-.15 F -1.458<68696e653b2074686973206d6163>-.15 F 1.459 -<68696e6520636f756c64207468656e20646f20646972>-.15 F 1.459 -<6563742064656c697665727920746f206d6163>-.37 F<68696e6573>-.15 E .09 -<77697468696e20796f7572206c6f63616c20646f6d61696e2e>117 514.2 R .09 -<557365206f66207468697320666561747572>5.09 F 2.59<6564>-.37 G<6972>-2.59 -E .09<6563746c792076696f6c617465732052464320313132332073656374696f6e2035 -2e332e353a2069742073686f756c64>-.37 F -<6e6f742062652075736564206c696768746c79>117 526.2 Q<2e>-.55 E F0 2.5 -<352e322e2044>87 550.2 R 2.5<8a44>2.5 G<658c6e65204d616372>-2.5 E<6f> --.18 E F1 .88<4d6163726f7320617265206e616d6564207769746820612073696e676c -6520636861726163746572206f72207769746820612077>127 566.4 R .881 -<6f726420696e207b6272616365737d2e>-.1 F .881<546865206e616d65732060> -5.881 F<607827>-.74 E 3.381<2761>-.74 G<6e64>-3.381 E -.74<6060>102 -578.4 S<7b787d27>.74 E 4.35<2764>-.74 G 1.85 -<656e6f7465207468652073616d65206d6163726f20666f722065>-4.35 F -.15<7665> --.25 G 1.849<72792073696e676c65206368617261637465722060>.15 F<607827> --.74 E 4.349<272e2053696e676c65>-.74 F 1.849 -<636861726163746572206e616d6573206d6179206265>4.349 F .172<73656c656374 -65642066726f6d2074686520656e74697265204153434949207365742c2062>102 590.4 -R .172<75742075736572>-.2 F .173<2d64658c6e6564206d6163726f732073686f75 -6c642062652073656c65637465642066726f6d2074686520736574206f66207570706572> --.2 F .032<63617365206c657474657273206f6e6c79>102 602.4 R 5.032<2e4c> --.65 G -.25<6f77>-5.032 G .031<65722063617365206c65747465727320616e6420 -7370656369616c2073796d626f6c7320617265207573656420696e7465726e616c6c79> -.25 F 5.031<2e4c>-.65 G .031<6f6e67206e616d6573206265>-5.031 F -<67696e6e696e67>-.15 E .326<776974682061206c6f>102 614.4 R .326<77657220 -63617365206c6574746572206f7220612070756e6374756174696f6e2063686172616374 -65722061726520726573657276>-.25 F .327 -<656420666f72207573652062792073656e646d61696c2c20736f2075736572>-.15 F -<2d64658c6e6564>-.2 E -<6c6f6e67206d6163726f206e616d65732073686f756c64206265>102 626.4 Q -<67696e207769746820616e2075707065722063617365206c6574746572>-.15 E<2e> --.55 E -<5468652073796e74617820666f72206d6163726f2064658c6e6974696f6e732069733a> -127 642.6 Q F0<44>142 658.8 Q F2 1.666<7876>C<616c>-1.666 E F1 -<7768657265>102 675 Q F2<78>3.069 E F1 .569<697320746865206e616d65206f66 -20746865206d6163726f20287768696368206d617920626520612073696e676c65206368 -61726163746572206f7220612077>3.069 F .568 -<6f726420696e206272616365732920616e64>-.1 F F2<76616c>3.068 E F1<6973> -3.068 E .478<7468652076>102 687 R .478 -<616c75652069742073686f756c64206861>-.25 F -.15<7665>-.2 G 5.478<2e54> -.15 G .478<686572652073686f756c64206265206e6f20737061636573206769>-5.478 -F -.15<7665>-.25 G 2.978<6e74>.15 G .479<68617420646f206e6f742061637475 -616c6c792062656c6f6e6720696e20746865206d6163726f>-2.978 F -.25<7661>102 -699 S<6c75652e>.25 E 0 Cg EP -%%Page: 47 43 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3437>195.86 E -/F1 10/Times-Roman@0 SF .494<4d6163726f732061726520696e746572706f6c6174 -6564207573696e672074686520636f6e737472756374>127 96 R F0<24>2.994 E/F2 -10/Times-Italic@0 SF<78>A F1 2.994<2c77>C<68657265>-2.994 E F2<78>2.994 -E F1 .494<697320746865206e616d65206f6620746865206d6163726f20746f20626520 -696e746572>2.994 F<2d>-.2 E 2.932<706f6c617465642e2054686973>102 108 R -.432<696e746572706f6c6174696f6e20697320646f6e65207768656e2074686520636f -6e8c6775726174696f6e208c6c6520697320726561642c2065>2.932 F .433 -<786365707420696e>-.15 F F0<4d>2.933 E F1 2.933<6c696e65732e20546865> -2.933 F<7370652d>2.933 E<6369616c20636f6e737472756374>102 120 Q F0<2426> -2.5 E F2<78>A F1<63616e206265207573656420696e>2.5 E F0<52>2.5 E F1<6c69 -6e657320746f2067657420646566657272656420696e746572706f6c6174696f6e2e>2.5 -E<436f6e646974696f6e616c732063616e2062652073706563698c6564207573696e6720 -7468652073796e7461783a>127 136.2 Q<243f78207465>142 152.4 Q -<78743120247c207465>-.15 E<78743220242e>-.15 E 1.562 -<5468697320696e746572706f6c61746573>102 168.6 R F2<7465>4.062 E<787431> --.2 E F1 1.562<696620746865206d6163726f>4.062 F F0<2478>4.062 E F1 1.562 -<69732073657420616e64206e6f6e2d6e756c6c2c20616e64>4.062 F F2<7465>4.062 -E<787432>-.2 E F1 4.062<6f74686572776973652e20546865>4.062 F 1.561 -<99656c73659a2028>4.061 F F0<247c>A F1<29>A -<636c61757365206d6179206265206f6d69747465642e>102 180.6 Q 1.302 -<54686520666f6c6c6f>127 196.8 R 1.302<77696e67206d6163726f73206172652064 -658c6e656420616e642f6f72207573656420696e7465726e616c6c79206279>-.25 F F2 -<73656e646d61696c>3.803 E F1 1.303 -<666f7220696e746572706f6c6174696f6e20696e746f>3.803 F<6172>102 210.8 Q -<677627>-.18 E 2.793<7366>-.55 G .293 -<6f72206d61696c657273206f7220666f72206f7468657220636f6e7465>-2.793 F -2.793<7874732e20546865>-.15 F .293<6f6e6573206d61726b>2.793 F .292<6564 -20872061726520696e666f726d6174696f6e2070617373656420696e746f2073656e646d -61696c>-.1 F/F3 7/Times-Roman@0 SF<3136>-4 I F1<2c>4 I .035 -<746865206f6e6573206d61726b>102 222.8 R .036<656420882061726520696e666f -726d6174696f6e2070617373656420626f746820696e20616e64206f7574206f66207365 -6e646d61696c2c20616e642074686520756e6d61726b>-.1 F .036 -<6564206d6163726f7320617265>-.1 F -<706173736564206f7574206f662073656e646d61696c2062>102 234.8 Q<7574206172 -65206e6f74206f7468657277697365207573656420696e7465726e616c6c79>-.2 E 5 -<2e54>-.65 G<68657365206d6163726f73206172653a>-5 E 13.06<246120546865> -102 251 R -<6f726967696e6174696f6e206461746520696e205246432038323220666f726d61742e> -2.5 E<546869732069732065>5 E -<78747261637465642066726f6d2074686520446174653a206c696e652e>-.15 E 12.5 -<246220546865>102 267.2 R -<63757272656e74206461746520696e205246432038323220666f726d61742e>2.5 E -13.06<246320546865>102 283.4 R .003<686f7020636f756e742e>2.503 F .003<54 -686973206973206120636f756e74206f6620746865206e756d626572206f662052656365 -69>5.003 F -.15<7665>-.25 G .002<643a206c696e657320706c7573207468652076> -.15 F .002<616c7565206f6620746865>-.25 F F02.502 E F1<636f6d2d> -2.502 E<6d616e64206c696e65208d61672e>127 295.4 Q 12.5<246420546865>102 -311.6 R<63757272656e74206461746520696e20554e495820286374696d652920666f72 -6d61742e>2.5 E 8.06<24658720284f62736f6c6574653b>102 327.8 R 1.814<7573 -6520536d74704772656574696e674d657373616765206f7074696f6e20696e7374656164 -2e29>4.314 F 1.814<54686520534d545020656e747279206d6573736167652e>6.814 -F 1.814<54686973206973>6.814 F .632 -<7072696e746564206f7574207768656e20534d5450207374617274732075702e>127 -339.8 R .631<546865208c7273742077>5.631 F .631 -<6f7264206d75737420626520746865>-.1 F F0<246a>3.131 E F1 .631 -<6d6163726f2061732073706563698c656420627920524643>3.131 F 2.97 -<3832312e20446566>127 351.8 R .47<61756c747320746f2099246a2053656e646d61 -696c2024762072656164792061742024629a2e>-.1 F .47<436f6d6d6f6e6c79207265 -64658c6e656420746f20696e636c7564652074686520636f6e8c67752d>5.47 F -<726174696f6e2076>127 363.8 Q<657273696f6e206e756d626572>-.15 E 2.5 -<2c65>-.4 G<2e672e2c2099246a2053656e646d61696c2024762f245a20726561647920 -61742024629a>-2.5 E 14.17<246620546865>102 380 R<656e>2.5 E -.15<7665> --.4 G<6c6f70652073656e646572202866726f6d2920616464726573732e>.15 E 12.5 -<246720546865>102 396.2 R .018 -<73656e64657220616464726573732072656c617469>2.518 F .318 -.15<76652074> --.25 H 2.518<6f74>.15 G .018<686520726563697069656e742e>-2.518 F -.15 -<466f>5.018 G 2.518<7265>.15 G .017<78616d706c652c206966>-2.668 F F0 -<2466>2.517 E F1 .017<69732099666f6f9a2c>2.517 F F0<2467>2.517 E F1 .017 -<77696c6c2062652099686f737421666f6f9a2c>2.517 F -<99666f6f40686f73742e646f6d61696e9a2c206f72207768617465>127 408.2 Q -.15 -<7665>-.25 G 2.5<7269>.15 G 2.5<7361>-2.5 G -<7070726f70726961746520666f7220746865207265636569>-2.5 E -<76696e67206d61696c6572>-.25 E<2e>-.55 E 12.5<246820546865>102 424.4 R -<726563697069656e7420686f73742e>2.5 E<546869732069732073657420696e207275 -6c6573657420302066726f6d20746865202440208c656c64206f66206120706172736564 -20616464726573732e>5 E 14.72<246920546865>102 440.6 R -<71756575652069642c20652e672e2c2099663334344d5878703031383731379a2e>2.5 -E 9.72<246a8820546865>102 456.8 R<996f66>2.746 E .247 -<8c6369616c9a20646f6d61696e206e616d6520666f72207468697320736974652e>-.25 -F .247<546869732069732066756c6c79207175616c698c656420696620746865206675 -6c6c207175616c698c636174696f6e2063616e206265>5.247 F 3.094 -<666f756e642e204974>127 468.8 R F2<6d757374>3.094 E F1 .593<626520726564 -658c6e656420746f206265207468652066756c6c79207175616c698c656420646f6d6169 -6e206e616d6520696620796f75722073797374656d206973206e6f7420636f6e2d>3.094 -F<8c677572656420736f207468617420696e666f726d6174696f6e2063616e208c6e6420 -6974206175746f6d61746963616c6c79>127 480.8 Q<2e>-.65 E 12.5 -<246b20546865>102 497 R<55554350206e6f6465206e616d65202866726f6d20746865 -20756e616d652073797374656d2063616c6c292e>2.5 E 9.72 -<246c8720284f62736f6c6574653b>102 513.2 R 1.281 -<75736520556e697846726f6d4c696e65206f7074696f6e20696e73746561642e29> -3.781 F 1.282 -<54686520666f726d6174206f662074686520554e49582066726f6d206c696e652e> -6.282 F<556e6c657373>6.282 E 1.41<796f75206861>127 525.2 R 1.71 -.15 -<76652063>-.2 H 1.409<68616e6765642074686520554e4958206d61696c626f782066 -6f726d61742c20796f752073686f756c64206e6f74206368616e67652074686520646566> -.15 F 1.409<61756c742c207768696368206973>-.1 F -<9946726f6d2024672024649a2e>127 537.2 Q 9.72<246d20546865>102 553.4 R -.718<646f6d61696e2070617274206f6620746865>3.218 F F2 -.1<6765>3.218 G -<74686f73746e616d65>.1 E F1 .718<72657475726e2076>3.218 F 3.219 -<616c75652e20556e646572>-.25 F .719 -<6e6f726d616c2063697263756d7374616e6365732c>3.219 F F0<246a>3.219 E F1 -.719<69732065717569>3.219 F<762d>-.25 E<616c656e7420746f>127 565.4 Q F0 -<2477>2.5 E<2e246d>-.7 E F1<2e>A 7.5<246e8720546865>102 581.6 R<6e616d65 -206f6620746865206461656d6f6e2028666f72206572726f72206d65737361676573292e> -2.5 E<446566>5 E<61756c747320746f20994d41494c45522d44>-.1 E -<41454d4f4e9a2e>-.4 E 7.5<246f8720284f62736f6c6574653a>102 597.8 R .651 -<757365204f70657261746f724368617273206f7074696f6e20696e73746561642e29> -3.151 F .651<54686520736574206f6620996f70657261746f72739a20696e20616464 -7265737365732e>5.651 F 3.15<416c>5.65 G .65<697374206f66>-3.15 F .581<63 -6861726163746572732077686963682077696c6c20626520636f6e736964657265642074 -6f6b>127 609.8 R .582 -<656e7320616e642077686963682077696c6c20736570617261746520746f6b>-.1 F -.582<656e73207768656e20646f696e6720706172732d>-.1 F 3.278<696e672e2046> -127 621.8 R .778<6f722065>-.15 F .778 -<78616d706c652c2069662099409a207765726520696e20746865>-.15 F F0<246f> -3.278 E F1 .777 -<6d6163726f2c207468656e2074686520696e70757420996140629a2077>3.278 F .777 -<6f756c64206265207363616e6e6564206173>-.1 F .627<746872656520746f6b>127 -633.8 R .627<656e733a2099612c>-.1 F 3.127<9a99>-.7 G<402c>-3.127 E 3.127 -<9a61>-.7 G .627<6e64209962>-3.127 F 4.527 -.7<2e9a2044>-.4 H<6566>.7 E -.628<61756c747320746f20992e3a405b5d9a2c20776869636820697320746865206d69 -6e696d756d20736574206e656365737361727920746f>-.1 F .856<646f205246432038 -32322070617273696e673b20612072696368657220736574206f66206f70657261746f72 -7320697320992e3a2540212f5b5d9a2c207768696368206164647320737570706f727420 -666f722055554350>127 645.8 R<2c>-1.11 E -<74686520252d6861636b2c20616e6420582e343030206164647265737365732e>127 -657.8 Q .32 LW 76 678.8 72 678.8 DL 80 678.8 76 678.8 DL 84 678.8 80 -678.8 DL 88 678.8 84 678.8 DL 92 678.8 88 678.8 DL 96 678.8 92 678.8 DL -100 678.8 96 678.8 DL 104 678.8 100 678.8 DL 108 678.8 104 678.8 DL 112 -678.8 108 678.8 DL 116 678.8 112 678.8 DL 120 678.8 116 678.8 DL 124 -678.8 120 678.8 DL 128 678.8 124 678.8 DL 132 678.8 128 678.8 DL 136 -678.8 132 678.8 DL 140 678.8 136 678.8 DL 144 678.8 140 678.8 DL 148 -678.8 144 678.8 DL 152 678.8 148 678.8 DL 156 678.8 152 678.8 DL 160 -678.8 156 678.8 DL 164 678.8 160 678.8 DL 168 678.8 164 678.8 DL 172 -678.8 168 678.8 DL 176 678.8 172 678.8 DL 180 678.8 176 678.8 DL 184 -678.8 180 678.8 DL 188 678.8 184 678.8 DL 192 678.8 188 678.8 DL 196 -678.8 192 678.8 DL 200 678.8 196 678.8 DL 204 678.8 200 678.8 DL 208 -678.8 204 678.8 DL 212 678.8 208 678.8 DL 216 678.8 212 678.8 DL/F4 5 -/Times-Roman@0 SF<3136>93.6 689.2 Q/F5 8/Times-Roman@0 SF -<4173206f662076>3.2 I -<657273696f6e20382e362c20616c6c206f66207468657365206d6163726f73206861> --.12 E .24 -.12<76652072>-.16 H<6561736f6e61626c6520646566>.12 E 2 -<61756c74732e20507265>-.08 F<76696f75732076>-.2 E -<657273696f6e73207265717569726564207468617420746865>-.12 E 2<7962>-.12 G -2<6564>-2 G<658c6e65642e>-2 E 0 Cg EP -%%Page: 48 44 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d34382053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF 12.5<24702053656e646d61696c27>102 96 R 2.5<7370> --.55 G<726f636573732069642e>-2.5 E 7.5<24718720446566>102 112.2 R .403 -<61756c7420666f726d6174206f662073656e64657220616464726573732e>-.1 F -<546865>5.403 E F0<2471>2.903 E F1 .403 -<6d6163726f2073706563698c657320686f>2.903 F 2.903<7761>-.25 G 2.904 -<6e61>-2.903 G .404<6464726573732073686f756c642061707065617220696e2061> --2.904 F 1.181<6d657373616765207768656e20697420697320646566>127 124.2 R -3.681<61756c7465642e20446566>-.1 F 1.181 -<61756c747320746f20993c24673e9a2e>-.1 F 1.18<497420697320636f6d6d6f6e6c -7920726564658c6e656420746f2062652099243f782478>6.181 F -<3c24673e247c2467242e>127 136.2 Q 5<9a6f>-.7 G 2.5<7299>-5 G -<2467243f782028247829242e>-2.5 E -<9a2c20636f72726573706f6e64696e6720746f2074686520666f6c6c6f>-.7 E -<77696e67207477>-.25 E 2.5<6f66>-.1 G<6f726d6174733a>-2.5 E -<4572696320416c6c6d616e203c657269634043532e4265726b>167 152.4 Q<656c65> --.1 E -.65<792e>-.15 G<4544553e>.65 E<657269634043532e4265726b>167 164.4 -Q<656c65>-.1 E -.65<792e>-.15 G<45445520284572696320416c6c6d616e29>.65 E -/F2 10/Times-Italic@0 SF<53656e646d61696c>127 180.6 Q F1 -<70726f7065726c792071756f746573206e616d65732074686174206861>2.5 E .3 --.15<76652073>-.2 H<70656369616c206368617261637465727320696620746865208c -72737420666f726d20697320757365642e>.15 E 14.17<24722050726f746f636f6c> -102 196.8 R .976<7573656420746f207265636569>3.476 F 1.276 -.15<76652074> --.25 H .976<6865206d6573736167652e>.15 F .976<5365742066726f6d20746865> -5.976 F F03.476 E F1 .977 -<636f6d6d616e64206c696e65208d6167206f722062792074686520534d5450>3.476 F -<73657276>127 208.8 Q<657220636f64652e>-.15 E 13.61 -<24732053656e64657227>102 225 R 3.947<7368>-.55 G 1.447 -<6f7374206e616d652e>-3.947 F 1.447<5365742066726f6d20746865>6.447 F F0 -3.947 E F1 1.447<636f6d6d616e64206c696e65208d6167206f722062792074 -686520534d54502073657276>3.947 F 1.446<657220636f64652028696e>-.15 F<77 -6869636820636173652069742069732073657420746f207468652045484c4f2f48454c4f -20706172616d65746572292e>127 237 Q 14.72<24742041>102 253.2 R 1.607<6e75 -6d6572696320726570726573656e746174696f6e206f66207468652063757272656e7420 -74696d6520696e2074686520666f726d617420595959594d4d444448486d6d2028342064 -69676974>4.106 F .576<7965617220313930302d393939392c2032206469676974206d -6f6e74682030312d31322c2032206469676974206461792030312d33312c203220646967 -697420686f7572732030302d32332c2032206469676974206d696e75746573>127 265.2 -R<30302d3539292e>127 277.2 Q 12.5<247520546865>102 293.4 R -<726563697069656e742075736572>2.5 E<2e>-.55 E 12.5<247620546865>102 -309.6 R -.15<7665>2.5 G<7273696f6e206e756d626572206f6620746865>.15 E F2 -<73656e646d61696c>2.5 E F1<62696e617279>2.5 E<2e>-.65 E 5.28 -<24778820546865>102 325.8 R -<686f73746e616d65206f66207468697320736974652e>2.5 E<54686973206973207468 -6520726f6f74206e616d65206f66207468697320686f7374202862>5 E -<7574207365652062656c6f>-.2 E 2.5<7766>-.25 G<6f72206361>-2.5 E -.15 -<7665>-.2 G<617473292e>.15 E 12.5<247820546865>102 342 R -<66756c6c206e616d65206f66207468652073656e646572>2.5 E<2e>-.55 E 13.06 -<247a20546865>102 358.2 R -<686f6d65206469726563746f7279206f662074686520726563697069656e742e>2.5 E -12.5<245f20546865>102 374.4 R -.25<7661>2.5 G -<6c6964617465642073656e64657220616464726573732e>.25 E<53656520616c736f>5 -E F0<247b636c69656e745f72>2.5 E<65736f6c76>-.18 E<657d>-.1 E F1<2e>A -<247b616464725f747970657d>102 390.6 Q .802<5468652074797065206f66207468 -6520616464726573732077686963682069732063757272656e746c79206265696e672072 -65>127 402.6 R 3.303<7772697474656e2e2054686973>-.25 F .803 -<6d6163726f20636f6e7461696e7320757020746f207468726565>3.303 F .393<6368 -61726163746572732c20746865208c7273742069732065697468657220606527206f7220 -60682720666f7220656e>127 414.6 R -.15<7665>-.4 G .392<6c6f70652f68656164 -657220616464726573732c20746865207365636f6e6420697320612073706163652c2061 -6e64>.15 F<7468652074686972642069732065697468657220607327206f7220607227 -20666f722073656e6465722f726563697069656e7420616464726573732e>127 426.6 Q -<247b616c675f626974737d>102 442.8 Q .242<546865206d6178696d756d206b>127 -454.8 R -.15<6579>-.1 G .243<6c656e6774682028696e206269747329206f662074 -68652073796d6d657472696320656e6372797074696f6e20616c676f726974686d207573 -656420666f72206120544c5320636f6e2d>.15 F 2.823 -<6e656374696f6e2e2054686973>127 466.8 R .322 -<6d6179206265206c657373207468616e20746865206566>2.823 F<6665637469>-.25 -E .622 -.15<7665206b>-.25 H -.15<6579>.05 G .322 -<6c656e6774682c2077686963682069732073746f72656420696e>.15 F F0 -<247b6369706865725f626974737d>2.822 E F1 2.822<2c66>C<6f72>-2.822 E -.74 -<6060>127 478.8 S -.15<6578>.74 G<706f727420636f6e74726f6c6c656427>.15 E -2.5<2761>-.74 G<6c676f726974686d732e>-2.5 E -<247b617574685f61757468656e7d>102 495 Q 1.222<54686520636c69656e7427>127 -507 R 3.722<7361>-.55 G 1.223<757468656e7469636174696f6e2063726564656e74 -69616c732061732064657465726d696e65642062792061757468656e7469636174696f6e -20286f6e6c792073657420696620737563636573732d>-3.722 F 2.728 -<66756c292e20546865>127 519 R .227<666f726d617420646570656e6473206f6e20 -746865206d656368616e69736d20757365642c206974206d69676874206265206a757374 -206075736572272c206f72206075736572407265616c6d272c206f72>2.728 F -<736f6d657468696e672073696d696c61722028534d54502041>127 531 Q -<555448206f6e6c79292e>-.55 E<247b617574685f617574686f727d>102 547.2 Q -1.301<54686520617574686f72697a6174696f6e206964656e74697479>127 559.2 R -3.801<2c69>-.65 G 1.301<2e652e207468652041>-3.801 F 1.301 -<5554483d20706172616d65746572206f6620746865>-.55 F/F3 9/Times-Roman@0 SF -1.302<534d5450204d41494c>3.801 F F1 1.302 -<636f6d6d616e64206966207375702d>3.802 F<706c6965642e>127 571.2 Q -<247b617574685f747970657d>102 587.4 Q<546865206d656368616e69736d20757365 -6420666f7220534d54502061757468656e7469636174696f6e20286f6e6c792073657420 -6966207375636365737366756c292e>127 599.4 Q<247b617574685f7373667d>102 -615.6 Q .321<546865206b>127 627.6 R -.15<6579>-.1 G .321<6c656e67746820 -28696e206269747329206f66207468652073796d6d657472696320656e6372797074696f -6e20616c676f726974686d207573656420666f7220746865207365637572697479206c61 -796572206f662061>.15 F<5341534c206d656368616e69736d2e>127 639.6 Q -<247b626f6479747970657d>102 655.8 Q<546865206d65737361676520626f64792074 -797065202837424954206f7220384249544d494d45292c2061732064657465726d696e65 -642066726f6d2074686520656e>127 667.8 Q -.15<7665>-.4 G<6c6f70652e>.15 E -<247b636572745f66707d>102 684 Q 2.288<546865208c6e6765727072696e74206f66 -207468652070726573656e7465642063657274698c6361746520285354>127 696 R -<4152>-.93 E 2.288<54544c53206f6e6c79292e>-.6 F 2.289 -<4e6f74653a2074686973206d6163726f206973206f6e6c79>7.288 F .017 -<64658c6e656420696620746865206f7074696f6e>127 708 R F0 -<4365727446696e676572>2.517 E<7072696e74416c676f726974686d>-.1 E F1 .016 -<6973207365742c20696e2077686963682063617365207468652073706563698c656420 -8c6e6765727072696e74>2.517 F 1.076<616c676f726974686d20697320757365642e> -127 720 R 1.077<5468652076>6.077 F 1.077<616c696420616c676f726974686d73 -20646570656e64206f6e20746865204f70656e53534c2076>-.25 F 1.077 -<657273696f6e2c2062>-.15 F 1.077<757420757375616c6c79206d64352c>-.2 F 0 -Cg EP -%%Page: 49 45 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3439>195.86 E -/F1 10/Times-Roman@0 SF<736861312c20616e6420736861323536206172652061>127 -96 Q -.25<7661>-.2 G 2.5<696c61626c652e20536565>.25 F -<6f70656e73736c2064677374202d68>167 112.2 Q<666f722061206c6973742e>127 -128.4 Q<247b636572745f6973737565727d>102 144.6 Q .709<54686520444e202864 -697374696e67756973686564206e616d6529206f6620746865204341202863657274698c -6361746520617574686f72697479292074686174207369676e6564207468652070726573 -656e74656420636572>127 156.6 R<2d>-.2 E -<74698c6361746520287468652063657274206973737565722920285354>127 168.6 Q -<4152>-.93 E<54544c53206f6e6c79292e>-.6 E<247b636572745f6d64357d>102 -184.8 Q 2.134<546865204d44352068617368206f66207468652070726573656e746564 -2063657274698c6361746520285354>127 196.8 R<4152>-.93 E 2.134 -<54544c53206f6e6c79292e>-.6 F 2.134 -<4e6f74653a2074686973206d6163726f206973206f6e6c79>7.134 F -<64658c6e656420696620746865206f7074696f6e>127 208.8 Q F0 -<4365727446696e676572>2.5 E<7072696e74416c676f726974686d>-.1 E F1 -<6973206e6f74207365742e>2.5 E<247b636572745f7375626a6563747d>102 225 Q< -54686520444e206f66207468652070726573656e7465642063657274698c636174652028 -63616c6c6564207468652063657274207375626a6563742920285354>127 237 Q<4152> --.93 E<54544c53206f6e6c79292e>-.6 E<247b6369706865727d>102 253.2 Q .228< -54686520636970686572207375697465207573656420666f722074686520636f6e6e6563 -74696f6e2c20652e672e2c204544482d4453532d4445532d434243332d5348412c204544 -482d5253412d4445532d>127 265.2 R<4342432d5348412c204445532d4342432d4d44 -352c204445532d434243332d53484120285354>127 277.2 Q<4152>-.93 E -<54544c53206f6e6c79292e>-.6 E<247b6369706865725f626974737d>102 293.4 Q -.687<546865206566>127 305.4 R<6665637469>-.25 E .987 -.15<7665206b>-.25 -H -.15<6579>.05 G .688<6c656e6774682028696e206269747329206f662074686520 -73796d6d657472696320656e6372797074696f6e20616c676f726974686d207573656420 -666f72206120544c5320636f6e2d>.15 F<6e656374696f6e2e>127 317.4 Q -<247b636c69656e745f616464727d>102 333.6 Q 2.302 -<5468652049502061646472657373206f662074686520534d545020636c69656e742e> -127 345.6 R 2.302<495076362061646472657373657320617265207461676765642077 -6974682022495076363a22206265666f726520746865>7.302 F 2.5 -<616464726573732e2044658c6e6564>127 357.6 R -<696e2074686520534d54502073657276>2.5 E<6572206f6e6c79>-.15 E<2e>-.65 E -<247b636c69656e745f636f6e6e656374696f6e737d>102 373.8 Q<546865206e756d62 -6572206f66206f70656e20636f6e6e656374696f6e7320696e2074686520534d54502073 -657276>127 385.8 Q -<657220666f722074686520636c69656e7420495020616464726573732e>-.15 E -<247b636c69656e745f8d6167737d>102 402 Q 1.524<546865208d6167732073706563 -698c656420627920746865204d6f64698c65723d2070617274206f66>127 414 R F0 -<436c69656e7450>4.024 E<6f72744f7074696f6e73>-.2 E F1 1.525 -<7768657265208d6167732061726520736570617261746564>4.024 F 1.133<66726f6d -2065616368206f746865722062792073706163657320616e642075707065722063617365 -208d6167732061726520646f75626c65642e>127 426 R 1.132 -<546861742069732c204d6f64698c65723d68412077696c6c206265>6.132 F -<726570726573656e7465642061732022682041412220696e>127 438 Q F0 -<247b636c69656e745f8d6167737d>2.5 E F1 2.5<2c77>C<6869636820697320726571 -756972656420666f722074657374696e6720746865208d61677320696e2072756c657365 -74732e>-2.5 E<247b636c69656e745f6e616d657d>102 454.2 Q .24 -<54686520686f7374206e616d65206f662074686520534d545020636c69656e742e>127 -466.2 R .241<54686973206d61792062652074686520636c69656e7427>5.24 F 2.741 -<7362>-.55 G<7261636b>-2.741 E .241 -<65746564204950206164647265737320696e2074686520666f726d>-.1 F 3.322 -<5b6e>127 478.2 S .821<6e6e2e6e6e6e2e6e6e6e2e6e6e6e205d20666f7220495076 -3420616e64205b20495076363a6e6e6e6e3a2e2e2e3a6e6e6e6e205d20666f7220495076 -362069662074686520636c69656e7427>-3.322 F 3.321<7349>-.55 G 3.321<5061> --3.321 G .821<646472657373206973>-3.321 F .21<6e6f74207265736f6c76>127 -490.2 R .21<61626c652c206f72206966206974206973207265736f6c76>-.25 F .21 -<61626c652062>-.25 F .21 -<7574207468652049502061646472657373206f6620746865207265736f6c76>-.2 F -.21<656420686f73746e616d6520646f65736e27>-.15 F 2.71<746d>-.18 G -<61746368>-2.71 E<746865206f726967696e616c20495020616464726573732e>127 -502.2 Q<44658c6e656420696e2074686520534d54502073657276>5 E -<6572206f6e6c79>-.15 E 5<2e53>-.65 G<656520616c736f>-5 E F0 -<247b636c69656e745f72>2.5 E<65736f6c76>-.18 E<657d>-.1 E F1<2e>A -<247b636c69656e745f706f72747d>102 518.4 Q -<54686520706f7274206e756d626572206f662074686520534d545020636c69656e742e> -127 530.4 Q<44658c6e656420696e2074686520534d54502073657276>5 E -<6572206f6e6c79>-.15 E<2e>-.65 E<247b636c69656e745f7074727d>102 546.6 Q -3.634<54686520726573756c74206f662074686520505452206c6f6f6b757020666f7220 -74686520636c69656e7420495020616464726573732e>127 558.6 R 3.633 -<4e6f74653a2074686973206973207468652073616d65206173>8.634 F F0 -<247b636c69656e745f6e616d657d>127 570.6 Q F1 -<696620616e64206f6e6c79206966>2.5 E F0<247b636c69656e745f72>2.5 E -<65736f6c76>-.18 E<657d>-.1 E F1<6973204f4b2e>2.5 E -<44658c6e656420696e2074686520534d54502073657276>5 E<6572206f6e6c79>-.15 -E<2e>-.65 E<247b636c69656e745f726174657d>102 586.8 Q .266<546865206e756d -626572206f6620696e636f6d696e6720636f6e6e656374696f6e7320666f722074686520 -636c69656e742049502061646472657373206f>127 598.8 R -.15<7665>-.15 G -2.766<7274>.15 G .266<68652074696d6520696e74657276>-2.766 F .266 -<616c2073706563698c6564>-.25 F<627920436f6e6e656374696f6e5261746557>127 -610.8 Q<696e646f>-.4 E<7753697a652e>-.25 E -<247b636c69656e745f7265736f6c76>102 627 Q<657d>-.15 E -<486f6c64732074686520726573756c74206f6620746865207265736f6c76>127 639 Q -2.5<6563>-.15 G<616c6c20666f72>-2.5 E F0<247b636c69656e745f6e616d657d> -2.5 E F1 5<2e50>C<6f737369626c652076>-5 E<616c756573206172653a>-.25 E -33.06<4f4b207265736f6c76>167 655.2 R<6564207375636365737366756c6c79>-.15 -E -.74<4641>167 667.2 S 26.02<494c207065726d616e656e74>.74 F -<6c6f6f6b75702066>2.5 E<61696c757265>-.1 E 7.5<464f5247454420666f7277> -167 679.2 R<617264206c6f6f6b757020646f65736e27>-.1 E 2.5<746d>-.18 G -<61746368207265>-2.5 E -.15<7665>-.25 G<727365206c6f6f6b7570>.15 E 20.83 -<54454d502074656d706f72617279>167 691.2 R<6c6f6f6b75702066>2.5 E -<61696c757265>-.1 E .208<44658c6e656420696e2074686520534d54502073657276> -127 707.4 R .208<6572206f6e6c79>-.15 F<2e>-.65 E/F2 10/Times-Italic@0 SF -<73656e646d61696c>5.208 E F1 .208<706572666f726d73206120686f73746e616d65 -206c6f6f6b7570206f6e207468652049502061646472657373206f66>2.708 F .561 -<74686520636f6e6e656374696e6720636c69656e742e>127 719.4 R<4e65>5.561 E -.561<78742074686520495020616464726573736573206f66207468617420686f73746e -616d6520617265206c6f6f6b>-.15 F .561<65642075702e>-.1 F .562 -<49662074686520636c69656e74204950>5.562 F 0 Cg EP -%%Page: 50 46 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d35302053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF .782<6164647265737320646f6573206e6f742061707065 -617220696e2074686174206c6973742c207468656e2074686520686f73746e616d652069 -73206d6179626520666f72>127 96 R 3.282<6765642e2054686973>-.18 F .781 -<69732072658d6563746564206173>3.282 F<7468652076>127 108 Q -<616c756520464f5247454420666f72>-.25 E F0<247b636c69656e745f72>2.5 E -<65736f6c76>-.18 E<657d>-.1 E F1<616e6420697420616c736f2073686f>2.5 E -<777320757020696e>-.25 E F0<245f>2.5 E F1 -<61732022286d617920626520666f72>2.5 E<67656429222e>-.18 E -<247b636e5f6973737565727d>102 124.2 Q .874<54686520434e2028636f6d6d6f6e -206e616d6529206f66207468652043412074686174207369676e65642074686520707265 -73656e7465642063657274698c6361746520285354>127 136.2 R<4152>-.93 E .874 -<54544c53206f6e6c79292e>-.6 F .376 -<4e6f74653a2069662074686520434e2063616e6e6f742062652065>127 148.2 R .376 -<78747261637465642070726f7065726c792069742077696c6c206265207265706c6163 -6564206279206f6e65206f6620746865736520737472696e6773206261736564>-.15 F -<6f6e2074686520656e636f756e7465726564206572726f723a>127 160.2 Q 8.62 -<42616443657274698c63617465436f6e7461696e734e554c20434e>167 176.4 R -<636f6e7461696e732061204e554c20636861726163746572>2.5 E -<42616443657274698c6361746554>167 188.4 Q 28.31<6f6f4c6f6e6720434e>-.8 F -<697320746f6f206c6f6e67>2.5 E<42616443657274698c63617465556e6b6e6f>167 -200.4 Q 25.54<776e20434e>-.25 F<636f756c64206e6f742062652065>2.5 E -<7874726163746564>-.15 E<496e20746865206c61737420636173652c20736f6d6520 -6f746865722028756e73706563698c6329206572726f72206f636375727265642e>127 -216.6 Q<247b636e5f7375626a6563747d>102 232.8 Q 1.251<54686520434e202863 -6f6d6d6f6e206e616d6529206f66207468652070726573656e7465642063657274698c63 -61746520285354>127 244.8 R<4152>-.93 E 1.251<54544c53206f6e6c79292e>-.6 -F<536565>6.251 E F0<247b636e5f6973737565727d>3.751 E F1 -<666f7220706f737369626c65207265706c6163656d656e74732e>127 256.8 Q -<247b637572724865616465727d>102 273 Q .164<4865616465722076>127 285 R -.164<616c75652061732071756f74656420737472696e672028706f737369626c792074 -72756e636174656420746f>-.25 F F0<4d41584e>2.664 E<414d45>-.2 E F1 2.664 -<292e2054686973>B .163<6d6163726f206973206f6e6c792061>2.664 F -.25<7661> --.2 G<696c2d>.25 E -<61626c6520696e2068656164657220636865636b2072756c65736574732e>127 297 Q -<247b6461656d6f6e5f616464727d>102 313.2 Q<546865204950206164647265737320 -746865206461656d6f6e206973206c697374656e696e67206f6e20666f7220636f6e6e65 -6374696f6e732e>127 325.2 Q<247b6461656d6f6e5f66>102 341.4 Q -<616d696c797d>-.1 E .355<546865206e657477>127 353.4 R .355<6f726b2066> --.1 F .356<616d696c7920696620746865206461656d6f6e2069732061636365707469 -6e67206e657477>-.1 F .356<6f726b20636f6e6e656374696f6e732e>-.1 F .356 -<506f737369626c652076>5.356 F .356<616c75657320696e636c756465>-.25 F<99 -696e65749a2c2099696e6574369a2c209969736f9a2c20996e739a2c2099782e32359a> -127 365.4 Q<247b6461656d6f6e5f8d6167737d>102 381.6 Q .103<546865208d6167 -7320666f7220746865206461656d6f6e2061732073706563698c65642062792074686520 -4d6f64698c65723d2070617274206f66>127 393.6 R F0<4461656d6f6e50>2.603 E -<6f72744f7074696f6e73>-.2 E F1<77686572656279>2.603 E .548<746865208d61 -677320617265207365706172617465642066726f6d2065616368206f7468657220627920 -7370616365732c20616e642075707065722063617365208d6167732061726520646f7562 -6c65642e>127 405.6 R .549<546861742069732c>5.549 F .37<4d6f64698c65723d -45612077696c6c20626520726570726573656e7465642061732022454520612220696e> -127 417.6 R F0<247b6461656d6f6e5f8d6167737d>2.87 E F1 2.87<2c77>C .37 -<6869636820697320726571756972656420666f722074657374696e67>-2.87 F -<746865208d61677320696e2072756c65736574732e>127 429.6 Q -<247b6461656d6f6e5f696e666f7d>102 445.8 Q 4.763<536f6d6520696e666f726d61 -74696f6e2061626f75742061206461656d6f6e2061732061207465>127 457.8 R 4.764 -<787420737472696e672e>-.15 F -.15<466f>9.764 G 7.264<7265>.15 G 4.764 -<78616d706c652c2099534d54502b71756575652d>-7.414 F -<696e674030303a33303a30309a2e>127 469.8 Q<247b6461656d6f6e5f6e616d657d> -102 486 Q .734<546865206e616d65206f6620746865206461656d6f6e2066726f6d> -127 498 R F0<4461656d6f6e50>3.234 E<6f72744f7074696f6e73>-.2 E F1 .734 -<4e616d653d207375626f7074696f6e2e>3.234 F .734 -<49662074686973207375626f7074696f6e206973>5.734 F<6e6f74207365742c202244 -61656d6f6e23222c207768657265202320697320746865206461656d6f6e206e756d6265 -72>127 510 Q 2.5<2c69>-.4 G 2.5<7375>-2.5 G<7365642e>-2.5 E -<247b6461656d6f6e5f706f72747d>102 526.2 Q 1.459<54686520706f727420746865 -206461656d6f6e20697320616363657074696e6720636f6e6e656374696f6e206f6e2e> -127 538.2 R<556e6c657373>6.459 E F0<4461656d6f6e50>3.959 E -<6f72744f7074696f6e73>-.2 E F1 1.46<6973207365742c2074686973>3.959 F -<77696c6c206d6f7374206c696b>127 550.2 Q<656c79206265209932359a2e>-.1 E -<247b64656c69>102 566.4 Q -.15<7665>-.25 G<72794d6f64657d>.15 E .806 -<5468652063757272656e742064656c69>127 578.4 R -.15<7665>-.25 G .806 -<7279206d6f64652073656e646d61696c206973207573696e672e>.15 F .806 -<497420697320696e697469616c6c792073657420746f207468652076>5.806 F .805 -<616c7565206f6620746865>-.25 F F0<44656c69>3.305 E -.1<7665>-.1 G -<72792d>.1 E<4d6f6465>127 590.4 Q F1<6f7074696f6e2e>2.5 E<247b656e>102 -606.6 Q<7669647d>-.4 E<54686520656e>127 618.6 Q -.15<7665>-.4 G<6c6f7065 -20696420706172616d657465722028454e5649443d292070617373656420746f2073656e -646d61696c2061732070617274206f662074686520656e>.15 E -.15<7665>-.4 G -<6c6f70652e>.15 E<247b6864726c656e7d>102 634.8 Q .339 -<546865206c656e677468206f6620746865206865616465722076>127 646.8 R .339< -616c75652077686963682069732073746f72656420696e20247b63757272486561646572 -7d20286265666f726520706f737369626c65207472756e636174696f6e292e>-.25 F -<496620746869732076>127 658.8 Q -<616c75652069732067726561746572207468616e206f7220657175616c20746f>-.25 E -F0<4d41584e>2.5 E<414d45>-.2 E F1 -<7468652068656164657220686173206265656e207472756e63617465642e>2.5 E -<247b6864725f6e616d657d>102 675 Q .167<546865206e616d65206f662074686520 -686561646572208c656c6420666f72207768696368207468652063757272656e74206865 -6164657220636865636b2072756c6573657420686173206265656e2063616c6c65642e> -127 687 R<54686973>5.166 E .831<69732075736566756c20666f72206120646566> -127 699 R .832<61756c742068656164657220636865636b2072756c6573657420746f -2067657420746865206e616d65206f6620746865206865616465723b20746865206d6163 -726f206973206f6e6c79>-.1 F -.2<6176>127 711 S -<61696c61626c6520696e2068656164657220636865636b2072756c65736574732e>-.05 -E 0 Cg EP -%%Page: 51 47 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3531>195.86 E -/F1 10/Times-Roman@0 SF<247b69665f616464727d>102 96 Q 1.194 -<5468652049502061646472657373206f662074686520696e74657266>127 108 R -1.194<616365206f6620616e20696e636f6d696e6720636f6e6e656374696f6e20756e6c -65737320697420697320696e20746865206c6f6f706261636b206e65742e>-.1 F<4950 -763620616464726573736573206172652074616767656420776974682022495076363a22 -206265666f72652074686520616464726573732e>127 120 Q -<247b69665f616464725f6f75747d>102 136.2 Q 1.332 -<5468652049502061646472657373206f662074686520696e74657266>127 148.2 R -1.333<616365206f6620616e206f7574676f696e6720636f6e6e656374696f6e20756e6c -65737320697420697320696e20746865206c6f6f706261636b206e65742e>-.1 F<4950 -763620616464726573736573206172652074616767656420776974682022495076363a22 -206265666f72652074686520616464726573732e>127 160.2 Q<247b69665f66>102 -176.4 Q<616d696c797d>-.1 E<5468652049502066>127 188.4 Q -<616d696c79206f662074686520696e74657266>-.1 E<616365206f6620616e20696e63 -6f6d696e6720636f6e6e656374696f6e20756e6c65737320697420697320696e20746865 -206c6f6f706261636b206e65742e>-.1 E<247b69665f66>102 204.6 Q -<616d696c795f6f75747d>-.1 E<5468652049502066>127 216.6 Q -<616d696c79206f662074686520696e74657266>-.1 E<616365206f6620616e206f7574 -676f696e6720636f6e6e656374696f6e20756e6c65737320697420697320696e20746865 -206c6f6f706261636b206e65742e>-.1 E<247b69665f6e616d657d>102 232.8 Q -1.086<54686520686f73746e616d65206173736f63696174656420776974682074686520 -696e74657266>127 244.8 R 1.086 -<616365206f6620616e20696e636f6d696e6720636f6e6e656374696f6e2e>-.1 F -1.086<54686973206d6163726f2063616e206265>6.086 F<7573656420666f7220536d -74704772656574696e674d65737361676520616e6420485265636569>127 256.8 Q --.15<7665>-.25 G 2.5<6466>.15 G<6f72207669727475616c20686f7374696e672e> --2.5 E -.15<466f>5 G 2.5<7265>.15 G<78616d706c653a>-2.65 E 2.5<4f53>167 -273 S<6d74704772656574696e674d6573736167653d243f7b69665f6e616d657d247b69 -665f6e616d657d247c246a242e204d54>-2.5 E<41>-.93 E -<247b69665f6e616d655f6f75747d>102 293.4 Q -<546865206e616d65206f662074686520696e74657266>127 305.4 Q -<616365206f6620616e206f7574676f696e6720636f6e6e656374696f6e2e>-.1 E -<247b6c6f61645f61>102 321.6 Q<76677d>-.2 E -<5468652063757272656e74206c6f61642061>127 333.6 Q -.15<7665>-.2 G -<726167652e>.15 E<247b6d61696c5f616464727d>102 349.8 Q 1.239 -<54686520616464726573732070617274206f6620746865207265736f6c76>127 361.8 -R 1.239<656420747269706c65206f66207468652061646472657373206769>-.15 F --.15<7665>-.25 G 3.739<6e66>.15 G 1.239<6f7220746865>-3.739 F/F2 9 -/Times-Roman@0 SF 1.24<534d5450204d41494c>3.739 F F1<636f6d6d616e642e> -3.74 E<44658c6e656420696e2074686520534d54502073657276>127 373.8 Q -<6572206f6e6c79>-.15 E<2e>-.65 E<247b6d61696c5f686f73747d>102 390 Q .146 -<54686520686f73742066726f6d20746865207265736f6c76>127 402 R .146 -<656420747269706c65206f66207468652061646472657373206769>-.15 F -.15 -<7665>-.25 G 2.646<6e66>.15 G .146<6f7220746865>-2.646 F F2 .145 -<534d5450204d41494c>2.646 F F1 2.645<636f6d6d616e642e2044658c6e6564> -2.645 F<696e2074686520534d54502073657276>127 414 Q<6572206f6e6c79>-.15 E -<2e>-.65 E<247b6d61696c5f6d61696c65727d>102 430.2 Q 2.14 -<546865206d61696c65722066726f6d20746865207265736f6c76>127 442.2 R 2.14 -<656420747269706c65206f66207468652061646472657373206769>-.15 F -.15 -<7665>-.25 G 4.641<6e66>.15 G 2.141<6f7220746865>-4.641 F F2 2.141 -<534d5450204d41494c>4.641 F F1<636f6d6d616e642e>4.641 E -<44658c6e656420696e2074686520534d54502073657276>127 454.2 Q -<6572206f6e6c79>-.15 E<2e>-.65 E<247b6d73675f69647d>102 470.4 Q -<5468652076>127 482.4 Q -<616c7565206f6620746865204d6573736167652d49643a20686561646572>-.25 E<2e> --.55 E<247b6d73675f73697a657d>102 498.6 Q 1.033<5468652076>127 510.6 R -1.033<616c7565206f66207468652053495a453d20706172616d65746572>-.25 F -3.533<2c69>-.4 G 1.032<2e652e2c20757375616c6c79207468652073697a65206f66 -20746865206d6573736167652028696e20616e2045534d5450206469612d>-3.533 F -1.252<6c6f677565292c206265666f726520746865206d65737361676520686173206265 -656e20636f6c6c65637465642c207468657265616674657220746865206d657373616765 -2073697a6520617320636f6d7075746564206279>127 522.6 R/F3 10 -/Times-Italic@0 SF<73656e646d61696c>127 534.6 Q F1 -<28616e642063616e206265207573656420696e20636865636b5f636f6d706174292e> -2.5 E<247b6e62616472637074737d>102 550.8 Q<546865206e756d626572206f6620 -62616420726563697069656e747320666f7220612073696e676c65206d6573736167652e> -127 562.8 Q<247b6e72637074737d>102 579 Q .049 -<546865206e756d626572206f662076>127 591 R .049<616c69646174656420726563 -697069656e747320666f7220612073696e676c65206d6573736167652e>-.25 F .048 -<4e6f74653a2073696e636520726563697069656e742076>5.048 F .048 -<616c69646174696f6e206861702d>-.25 F .472<70656e73206166746572>127 603 R -F3 -.15<6368>2.973 G<6563>.15 E<6b5f72>-.2 E<637074>-.37 E F1 .473 -<686173206265656e2063616c6c65642c207468652076>2.973 F .473<616c75652069 -6e20746869732072756c65736574206973206f6e65206c657373207468616e2077686174 -206d69676874206265>-.25 F -.15<6578>127 615 S<7065637465642e>.15 E -<247b6e74726965737d>102 631.2 Q<546865206e756d626572206f662064656c69>127 -643.2 Q -.15<7665>-.25 G<727920617474656d7074732e>.15 E -<247b6f704d6f64657d>102 659.4 Q<5468652063757272656e74206f7065726174696f -6e206d6f6465202866726f6d20746865>127 671.4 Q F02.5 E F1 -<8d6167292e>2.5 E<247b71756172616e74696e657d>102 687.6 Q -<5468652071756172616e74696e6520726561736f6e20666f722074686520656e>127 -699.6 Q -.15<7665>-.4 G -<6c6f70652c2069662069742069732071756172616e74696e65642e>.15 E 0 Cg EP -%%Page: 52 48 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d35322053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF<247b71756575655f696e74657276>102 96 Q<616c7d> --.25 E .362<5468652071756575652072756e20696e74657276>127 108 R .362 -<616c206769>-.25 F -.15<7665>-.25 G 2.862<6e62>.15 G 2.862<7974>-2.862 G -<6865>-2.862 E F02.861 E F1 2.861<8d61672e2046>2.861 F .361 -<6f722065>-.15 F<78616d706c652c>-.15 E F02.861 E F1 -.1 -<776f>2.861 G .361<756c6420736574>.1 F F0<247b71756575655f696e746572> -2.861 E<2d>-.37 E -.1<7661>127 120 S<6c7d>.1 E F1 -<746f209930303a33303a30309a2e>2.5 E<247b726370745f616464727d>102 136.2 Q -1.271<54686520616464726573732070617274206f6620746865207265736f6c76>127 -148.2 R 1.272<656420747269706c65206f66207468652061646472657373206769> --.15 F -.15<7665>-.25 G 3.772<6e66>.15 G 1.272<6f7220746865>-3.772 F/F2 -9/Times-Roman@0 SF 1.272<534d54502052435054>3.772 F F1<636f6d6d616e642e> -3.772 E<44658c6e656420696e2074686520534d54502073657276>127 160.2 Q -<6572206f6e6c792061667465722061205243505420636f6d6d616e642e>-.15 E -<247b726370745f686f73747d>102 176.4 Q .179 -<54686520686f73742066726f6d20746865207265736f6c76>127 188.4 R .178 -<656420747269706c65206f66207468652061646472657373206769>-.15 F -.15 -<7665>-.25 G 2.678<6e66>.15 G .178<6f7220746865>-2.678 F F2 .178 -<534d54502052435054>2.678 F F1 2.678<636f6d6d616e642e2044658c6e6564> -2.678 F<696e2074686520534d54502073657276>127 200.4 Q -<6572206f6e6c792061667465722061205243505420636f6d6d616e642e>-.15 E -<247b726370745f6d61696c65727d>102 216.6 Q 2.175 -<546865206d61696c65722066726f6d20746865207265736f6c76>127 228.6 R 2.175 -<656420747269706c65206f66207468652061646472657373206769>-.15 F -.15 -<7665>-.25 G 4.675<6e66>.15 G 2.175<6f7220746865>-4.675 F F2 2.176 -<534d54502052435054>4.676 F F1<636f6d6d616e642e>4.676 E -<44658c6e656420696e2074686520534d54502073657276>127 240.6 Q -<6572206f6e6c792061667465722061205243505420636f6d6d616e642e>-.15 E -<247b73657276>102 256.8 Q<65725f616464727d>-.15 E .515 -<5468652061646472657373206f66207468652073657276>127 268.8 R .514<657220 -6f66207468652063757272656e74206f7574676f696e6720534d545020636f6e6e656374 -696f6e2e>-.15 F -.15<466f>5.514 G 3.014<724c>.15 G .514 -<4d54502064656c69>-3.014 F -.15<7665>-.25 G .514<727920746865>.15 F<6d61 -63726f2069732073657420746f20746865206e616d65206f6620746865206d61696c6572> -127 280.8 Q<2e>-.55 E<247b73657276>102 297 Q<65725f6e616d657d>-.15 E -<546865206e616d65206f66207468652073657276>127 309 Q<6572206f662074686520 -63757272656e74206f7574676f696e6720534d5450206f72204c4d545020636f6e6e6563 -74696f6e2e>-.15 E<247b74696d657d>102 325.2 Q .006 -<546865206f7574707574206f6620746865>127 337.2 R/F3 10/Times-Italic@0 SF -<74696d65>2.506 E F1 .007<2833292066756e6374696f6e2c20692e652e2c20746865 -206e756d626572206f66207365636f6e64732073696e6365203020686f7572732c203020 -6d696e757465732c2030207365632d>B<6f6e64732c204a616e7561727920312c203139 -37302c20436f6f7264696e6174656420556e69>127 349.2 Q -.15<7665>-.25 G -<7273616c2054>.15 E<696d652028555443292e>-.35 E<247b746c735f76>102 365.4 -Q<657273696f6e7d>-.15 E 1.755<54686520544c532f53534c2076>127 377.4 R -1.755<657273696f6e207573656420666f722074686520636f6e6e656374696f6e2c2065 -2e672e2c20544c5376312c2053534c76332c2053534c76323b2064658c6e656420616674 -6572>-.15 F<5354>127 389.4 Q<4152>-.93 E -<54544c5320686173206265656e20757365642e>-.6 E -<247b746f74616c5f726174657d>102 405.6 Q 1.373<54686520746f74616c206e756d -626572206f6620696e636f6d696e6720636f6e6e656374696f6e73206f>127 417.6 R --.15<7665>-.15 G 3.873<7274>.15 G 1.373<68652074696d6520696e74657276> --3.873 F 1.374<616c2073706563698c656420627920436f6e6e656374696f6e2d>-.25 -F<5261746557>127 429.6 Q<696e646f>-.4 E<7753697a652e>-.25 E<247b76>102 -445.8 Q<65726966797d>-.15 E 1.141 -<54686520726573756c74206f66207468652076>127 457.8 R 1.141<6572698c636174 -696f6e206f66207468652070726573656e74656420636572743b206f6e6c792064658c6e -6564206166746572205354>-.15 F<4152>-.93 E 1.14 -<54544c5320686173206265656e>-.6 F -<7573656420286f7220617474656d70746564292e>127 469.8 Q -<506f737369626c652076>5 E<616c756573206172653a>-.25 E 48.06<4f4b2076>167 -486 R<6572698c636174696f6e207375636365656465642e>-.15 E 48.06 -<4e4f206e6f>167 498 R<636572742070726573656e7465642e>2.5 E<4e4f>167 510 -Q 44.85<546e>-.4 G 2.5<6f63>-44.85 G<657274207265717565737465642e>-2.5 E --.74<4641>167 522 S 41.02<494c2063657274>.74 F<70726573656e7465642062> -2.5 E<757420636f756c64206e6f742062652076>-.2 E<6572698c65642c>-.15 E -<652e672e2c20746865207369676e696e67204341206973206d697373696e672e>232 -534 Q 34.73<4e4f4e45205354>167 546 R<4152>-.93 E -<54544c5320686173206e6f74206265656e20706572666f726d65642e>-.6 E 35.83 -<54454d502074656d706f72617279>167 558 R<6572726f72206f636375727265642e> -2.5 E<5052>167 570 Q -1.88 -.4<4f54204f>-.4 H 10.7<434f4c20736f6d65>.4 F -<70726f746f636f6c206572726f72206f63637572726564>2.5 E -<6174207468652045534d5450206c65>232 582 Q -.15<7665>-.25 G 2.5<6c28>.15 -G<6e6f7420544c53292e>-2.5 E<534f465457>167 594 Q 9.81<415245205354>-1.2 -F<4152>-.93 E<54544c532068616e647368616b>-.6 E 2.5<6566>-.1 G -<61696c65642c>-2.6 E<776869636820697320612066>232 606 Q -<6174616c206572726f7220666f7220746869732073657373696f6e2c>-.1 E -<74686520652d6d61696c2077696c6c206265207175657565642e>232 618 Q .749<54 -6865726520617265207468726565207479706573206f6620646174657320746861742063 -616e20626520757365642e>127 638.4 R<546865>5.749 E F0<2461>3.249 E F1 -<616e64>3.249 E F0<2462>3.249 E F1 .749 -<6d6163726f732061726520696e205246432038323220666f72>3.249 F<2d>-.2 E -<6d61743b>102 650.4 Q F0<2461>3.214 E F1 .714 -<6973207468652074696d652061732065>3.214 F .713<78747261637465642066726f -6d207468652099446174653a9a206c696e65206f6620746865206d657373616765202869 -662074686572652077>-.15 F .713<6173206f6e65292c20616e64>-.1 F F0<2462> -3.213 E F1<6973>3.213 E .056<7468652063757272656e74206461746520616e6420 -74696d6520287573656420666f7220706f73746d61726b73292e>102 662.4 R .057<49 -66206e6f2099446174653a9a206c696e6520697320666f756e6420696e2074686520696e -636f6d696e67206d6573736167652c>5.056 F F0<2461>102 674.4 Q F1 .305 -<69732073657420746f207468652063757272656e742074696d6520616c736f2e>2.805 -F<546865>5.305 E F0<2464>2.805 E F1 .304<6d6163726f2069732065717569> -2.805 F -.25<7661>-.25 G .304<6c656e7420746f20746865>.25 F F0<2462>2.804 -E F1 .304<6d6163726f20696e20554e495820286374696d652920666f72>2.804 F<2d> --.2 E<6d61742e>102 686.4 Q .238<546865206d6163726f73>127 702.6 R F0 -<2477>2.738 E F1<2c>A F0<246a>2.738 E F1 2.738<2c61>C<6e64>-2.738 E F0 -<246d>2.738 E F1 .238<6172652073657420746f20746865206964656e74697479206f -66207468697320686f73742e>2.738 F F3<53656e646d61696c>5.239 E F1 .239 -<747269657320746f208c6e64207468652066756c6c79>2.739 F .335<7175616c698c -6564206e616d65206f662074686520686f737420696620617420616c6c20706f73736962 -6c653b20697420646f657320746869732062792063616c6c696e67>102 714.6 R F3 --.1<6765>2.834 G<74686f73746e616d65>.1 E F1 .334 -<28322920746f20676574207468652063757272656e74>B 0 Cg EP -%%Page: 53 49 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3533>195.86 E -/F1 10/Times-Roman@0 SF .457 -<686f73746e616d6520616e64207468656e2070617373696e67207468617420746f>102 -96 R/F2 10/Times-Italic@0 SF -.1<6765>2.957 G<74686f737462796e616d65>.1 -E F1 .457<28332920776869636820697320737570706f73656420746f2072657475726e -207468652063616e6f6e6963616c2076>B<6572>-.15 E<2d>-.2 E .279 -<73696f6e206f66207468617420686f7374206e616d652e>102 110 R/F3 7 -/Times-Roman@0 SF<3137>-4 I F1 .279 -<417373756d696e672074686973206973207375636365737366756c2c>2.779 4 N F0 -<246a>2.778 E F1 .278<69732073657420746f207468652066756c6c79207175616c69 -8c6564206e616d6520616e64>2.778 F F0<246d>2.778 E F1<6973>2.778 E .706<73 -657420746f2074686520646f6d61696e2070617274206f6620746865206e616d65202865> -102 122 R -.15<7665>-.25 G .706 -<72797468696e6720616674657220746865208c72737420646f74292e>.15 F<546865> -5.706 E F0<2477>3.206 E F1 .706 -<6d6163726f2069732073657420746f20746865208c727374>3.206 F -.1<776f>102 -134 S .359<7264202865>.1 F -.15<7665>-.25 G .358<72797468696e6720626566 -6f726520746865208c72737420646f742920696620796f75206861>.15 F .658 -.15 -<76652061206c>-.2 H -2.15 -.25<65762065>.15 H 2.858<6c356f>.25 G 2.858 -<7268>-2.858 G .358<696768657220636f6e8c6775726174696f6e208c6c653b206f74 -686572776973652c206974>-2.858 F .404 -<69732073657420746f207468652073616d652076>102 146 R .405<616c7565206173> --.25 F F0<246a>2.905 E F1 5.405<2e49>C 2.905<6674>-5.405 G .405<68652063 -616e6f6e698c636174696f6e206973206e6f74207375636365737366756c2c2069742069 -7320696d706572617469>-2.905 F .705 -.15<76652074>-.25 H .405 -<6861742074686520636f6e8c67>.15 F<8c6c6520736574>102 160 Q F0<246a>2.5 E -F1<746f207468652066756c6c79207175616c698c656420646f6d61696e206e616d65> -2.5 E F3<3138>-4 I F1<2e>4 I<546865>127 176.2 Q F0<2466>2.833 E F1 .333< -6d6163726f20697320746865206964206f66207468652073656e646572206173206f7269 -67696e616c6c792064657465726d696e65643b207768656e206d61696c696e6720746f20 -612073706563698c6320686f7374>2.833 F<746865>102 188.2 Q F0<2467>3.224 E -F1 .724<6d6163726f2069732073657420746f207468652061646472657373206f662074 -68652073656e646572>3.224 F F2 -.37<7265>3.225 G .725 -<6c617469766520746f207468652072>.37 F<6563697069656e742e>-.37 E F1 -.15 -<466f>5.725 G 3.225<7265>.15 G .725 -<78616d706c652c20696620492073656e6420746f>-3.375 F -<99626f6c6c617264406d6174697373652e43532e4265726b>102 200.2 Q<656c65>-.1 -E -.65<792e>-.15 G .425 -<4544559a2066726f6d20746865206d616368696e65209976>.65 F -<616e676f67682e43532e4265726b>-.25 E<656c65>-.1 E -.65<792e>-.15 G .424 -<4544559a20746865>.65 F F0<2466>2.924 E F1<6d6163726f>2.924 E -<77696c6c2062652099657269639a20616e6420746865>102 212.2 Q F0<2467>2.5 E -F1<6d6163726f2077696c6c2062652099657269634076>2.5 E -<616e676f67682e43532e4265726b>-.25 E<656c65>-.1 E -.65<792e>-.15 G -<4544552e>.65 E<9a>-.7 E<546865>127 228.4 Q F0<2478>2.562 E F1 .062<6d61 -63726f2069732073657420746f207468652066756c6c206e616d65206f66207468652073 -656e646572>2.562 F 5.062<2e54>-.55 G .062 -<6869732063616e2062652064657465726d696e656420696e207365>-5.062 F -.15 -<7665>-.25 G .063<72616c2077>.15 F 2.563<6179732e204974>-.1 F .63 -<63616e20626520706173736564206173208d616720746f>102 240.4 R F2 -<73656e646d61696c>3.13 E F1 5.629<2e49>C 3.129<7463>-5.629 G .629 -<616e2062652064658c6e656420696e20746865>-3.129 F/F4 9/Times-Roman@0 SF --.315<4e41>3.129 G<4d45>.315 E F1<656e>3.129 E .629 -<7669726f6e6d656e742076>-.4 F 3.129<61726961626c652e20546865>-.25 F -<7468697264>3.129 E .948<63686f696365206973207468652076>102 252.4 R .948 -<616c7565206f6620746865209946756c6c2d4e616d653a9a206c696e6520696e207468 -65206865616465722069662069742065>-.25 F .949 -<78697374732c20616e642074686520666f757274682063686f69636520697320746865> --.15 F .526 -<636f6d6d656e74208c656c64206f662061209946726f6d3a9a206c696e652e>102 -264.4 R .526<496620616c6c206f662074686573652066>5.526 F .526<61696c2c20 -616e6420696620746865206d657373616765206973206265696e67206f726967696e6174 -6564206c6f63616c6c79>-.1 F<2c>-.65 E -<7468652066756c6c206e616d65206973206c6f6f6b>102 276.4 Q -<656420757020696e20746865>-.1 E F2<2f6574632f706173737764>2.5 E F1 -<8c6c652e>2.5 E 1.32<5768656e2073656e64696e672c20746865>127 292.6 R F0 -<2468>3.82 E F1<2c>A F0<2475>3.82 E F1 3.82<2c61>C<6e64>-3.82 E F0<247a> -3.82 E F1 1.321 -<6d6163726f73206765742073657420746f2074686520686f73742c2075736572>3.82 F -3.821<2c61>-.4 G 1.321<6e6420686f6d65206469726563746f727920286966>-3.821 -F .517<6c6f63616c29206f662074686520726563697069656e742e>102 304.6 R .517 -<546865208c727374207477>5.517 F 3.016<6f61>-.1 G .516 -<7265207365742066726f6d20746865>-3.016 F F0<2440>3.016 E F1<616e64>3.016 -E F0<243a>3.016 E F1 .516<70617274206f6620746865207265>3.016 F .516 -<77726974696e672072756c65732c207265737065632d>-.25 F<7469>102 316.6 Q --.15<7665>-.25 G<6c79>.15 E<2e>-.65 E<546865>127 332.8 Q F0<2470>3.806 E -F1<616e64>3.806 E F0<2474>3.806 E F1 1.306<6d6163726f732061726520757365 -6420746f2063726561746520756e6971756520737472696e67732028652e672e2c20666f -722074686520994d6573736167652d49643a9a208c656c64292e>3.806 F<546865>102 -344.8 Q F0<2469>3.252 E F1 .751<6d6163726f2069732073657420746f2074686520 -7175657565206964206f6e207468697320686f73743b2069662070757420696e746f2074 -68652074696d657374616d70206c696e652069742063616e2062652065>3.252 F -<787472656d656c79>-.15 E .164 -<75736566756c20666f7220747261636b696e67206d657373616765732e>102 356.8 R -<546865>5.164 E F0<2476>2.664 E F1 .164 -<6d6163726f2069732073657420746f206265207468652076>2.664 F .165 -<657273696f6e206e756d626572206f66>-.15 F F2<73656e646d61696c>2.665 E F1 -2.665<3b74>C .165<686973206973206e6f72>-2.665 F<2d>-.2 E<6d616c6c792070 -757420696e2074696d657374616d707320616e6420686173206265656e2070726f>102 -368.8 Q -.15<7665>-.15 G 2.5<6e65>.15 G -<787472656d656c792075736566756c20666f7220646562>-2.65 E<756767696e672e> --.2 E<546865>127 385 Q F0<2463>3.548 E F1 1.048 -<8c656c642069732073657420746f207468652099686f7020636f756e742c>3.548 F -3.548<9a69>-.7 G 1.048<2e652e2c20746865206e756d626572206f662074696d6573 -2074686973206d65737361676520686173206265656e2070726f2d>-3.548 F 2.856 -<6365737365642e2054686973>102 397 R .356 -<63616e2062652064657465726d696e656420627920746865>2.856 F F02.856 -E F1 .357<8d6167206f6e2074686520636f6d6d616e64206c696e65206f722062792063 -6f756e74696e67207468652074696d657374616d7073>2.856 F -<696e20746865206d6573736167652e>102 409 Q<546865>127 425.2 Q F0<2472> -2.833 E F1<616e64>2.833 E F0<2473>2.833 E F1 .333<8c656c6473206172652073 -657420746f207468652070726f746f636f6c207573656420746f20636f6d6d756e696361 -74652077697468>2.833 F F2<73656e646d61696c>2.833 E F1 .333 -<616e64207468652073656e642d>2.833 F .194<696e6720686f73746e616d652e>102 -437.2 R<546865>5.194 E 2.694<7963>-.15 G .194 -<616e2062652073657420746f676574686572207573696e6720746865>-2.694 F F0 -2.694 E F1 .194<636f6d6d616e64206c696e65208d6167206f72207365706172 -6174656c79207573696e6720746865>2.694 F F02.695 E F1<6f72>102 449.2 -Q F02.5 E F1<8d6167732e>2.5 E<546865>127 465.4 Q F0<245f>2.967 E -F1 .467<69732073657420746f20612076>2.967 F .467 -<616c6964617465642073656e64657220686f7374206e616d652e>-.25 F .466<496620 -7468652073656e6465722069732072756e6e696e6720616e20524643203134313320636f -6d706c692d>5.467 F .384<616e74204944454e542073657276>102 477.4 R .384 -<657220616e6420746865207265636569>-.15 F -.15<7665>-.25 G 2.884<7268>.15 -G .384<617320746865204944454e542070726f746f636f6c207475726e6564206f6e2c -2069742077696c6c20696e636c756465207468652075736572206e616d65>-2.884 F -<6f6e207468617420686f73742e>102 489.4 Q<546865>127 505.6 Q F0 -<247b636c69656e745f6e616d657d>5.98 E F1<2c>A F0 -<247b636c69656e745f616464727d>5.98 E F1 5.98<2c61>C<6e64>-5.98 E F0 -<247b636c69656e745f706f72747d>5.98 E F1 3.48 -<6d6163726f73206172652073657420746f20746865206e616d652c>5.98 F .786<6164 -64726573732c20616e6420706f7274206e756d626572206f662074686520534d54502063 -6c69656e742077686f20697320696e>102 517.6 R -.2<766f>-.4 G<6b696e67>.2 E -F2<73656e646d61696c>3.286 E F1 .786<617320612073657276>3.286 F<6572>-.15 -E 5.786<2e54>-.55 G .786<686573652063616e206265>-5.786 F -<7573656420696e20746865>102 529.6 Q F2 -.15<6368>2.5 G<6563>.15 E -<6b5f2a>-.2 E F1<72756c657365747320287573696e6720746865>2.5 E F0<2426> -2.5 E F1<64656665727265642065>2.5 E -.25<7661>-.25 G -<6c756174696f6e20666f726d2c206f6620636f7572736521292e>.25 E F0 2.5 -<352e332e2043>87 553.6 R<616e642046208a2044658c6e6520436c6173736573>2.5 -E F1 .66<436c6173736573206f662070687261736573206d61792062652064658c6e65 -6420746f206d61746368206f6e20746865206c6566742068616e642073696465206f6620 -7265>127 569.8 R .659<77726974696e672072756c65732c2077686572652061>-.25 -F .464<997068726173659a20697320612073657175656e6365206f6620636861726163 -74657273207468617420646f6573206e6f7420636f6e7461696e20737061636520636861 -726163746572732e>102 581.8 R -.15<466f>5.465 G 2.965<7265>.15 G .465 -<78616d706c65206120636c617373206f66>-3.115 F .654<616c6c206c6f63616c206e -616d657320666f7220746869732073697465206d69676874206265206372656174656420 -736f207468617420617474656d70747320746f2073656e6420746f206f6e6573656c6620 -63616e20626520656c696d696e617465642e>102 593.8 R .041<54686573652063616e -206569746865722062652064658c6e6564206469726563746c7920696e2074686520636f -6e8c6775726174696f6e208c6c65206f72207265616420696e2066726f6d20616e6f7468 -6572208c6c652e>102 605.8 R .041<436c617373657320617265>5.041 F .649 -<6e616d656420617320612073696e676c65206c6574746572206f7220612077>102 -617.8 R .649<6f726420696e207b6272616365737d2e>-.1 F .649 -<436c617373206e616d6573206265>5.649 F .649 -<67696e6e696e672077697468206c6f>-.15 F .648 -<7765722063617365206c65747465727320616e64>-.25 F .638 -<7370656369616c20636861726163746572732061726520726573657276>102 629.8 R -.638<656420666f722073797374656d207573652e>-.15 F .639<436c61737365732064 -658c6e656420696e20636f6e8c67208c6c6573206d6179206265206769>5.639 F -.15 -<7665>-.25 G 3.139<6e6e>.15 G<616d6573>-3.139 E 1.05<66726f6d2074686520 -736574206f662075707065722063617365206c65747465727320666f722073686f727420 -6e616d6573206f72206265>102 641.8 R 1.05<67696e6e696e67207769746820616e20 -75707065722063617365206c657474657220666f72206c6f6e67>-.15 F -<6e616d65732e>102 653.8 Q .32 LW 76 665.2 72 665.2 DL 80 665.2 76 665.2 +DL 494 108 489 108 DL 499 108 494 108 DL 504 108 499 108 DL F0(README) +117 144 Q F1 .64(in the sendmail distrib)3.14 F 3.14(ution. If)-.2 F .64 +(the \214le already e)3.14 F .64(xists, then it might be necessary to) +-.15 F(change the permissions accordingly)117 156 Q 2.5(,e)-.65 G(.g.,) +-2.5 E(chmod 0600 /v)157 172.2 Q(ar/run/sendmail.pid)-.25 E 1.955 +(Note that as of v)117 188.4 R 1.956(ersion 8.13, this \214le is unlink) +-.15 F 1.956(ed when)-.1 F/F2 10/Times-Italic@0 SF(sendmail)4.456 E F1 +-.15(ex)4.456 G 4.456(its. As).15 F 4.456(ar)4.456 G 1.956 +(esult of this)-4.456 F 1.325(change, a script such as the follo)117 +200.4 R 1.324(wing, which may ha)-.25 F 1.624 -.15(ve w)-.2 H(ork).05 E +1.324(ed prior to 8.13, will no longer)-.1 F -.1(wo)117 212.4 S(rk:).1 E +2.5(#s)157 228.6 S(top & start sendmail)-2.5 E(PIDFILE=/v)157 240.6 Q +(ar/run/sendmail.pid)-.25 E(kill `head -1 $PIDFILE`)157 252.6 Q +(`tail -1 $PIDFILE`)157 264.6 Q .217 +(because it assumes that the pid\214le will still e)117 280.8 R .218 +(xist e)-.15 F -.15(ve)-.25 G 2.718(na).15 G .218 +(fter killing the process to which it refers.)-2.718 F(Belo)117 292.8 Q +2.5(wi)-.25 G 2.5(sas)-2.5 G(cript which will w)-2.5 E +(ork correctly on both ne)-.1 E(wer and older v)-.25 E(ersions:)-.15 E +2.5(#s)157 309 S(top & start sendmail)-2.5 E(PIDFILE=/v)157 321 Q +(ar/run/sendmail.pid)-.25 E(pid=`head -1 $PIDFILE`)157 333 Q +(cmd=`tail -1 $PIDFILE`)157 345 Q(kill $pid)157 357 Q($cmd)157 369 Q +1.311(This is just an e)117 385.2 R 1.311 +(xample script, it does not perform an)-.15 F 3.81(ye)-.15 G 1.31 +(rror checks, e.g., whether the pid\214le)-3.81 F -.15(ex)117 397.2 S +(ists at all.).15 E F0 2.5(1.3.16. Map)102 421.2 R(Files)2.5 E F1 2.465 +-.8(To p)142 437.4 T(re).8 E -.15(ve)-.25 G .865 +(nt local denial of service attacks as e).15 F .865 +(xplained in the top le)-.15 F -.15(ve)-.25 G(l).15 E F0(README)3.366 E +F1 .866(in the)3.366 F 1.077(sendmail distrib)117 449.4 R 1.077 +(ution, the permissions of map \214les created by)-.2 F F2(mak)3.577 E +(emap)-.1 E F1 1.077(should be 0640.)3.577 F(The)6.076 E .56(use of 064\ +0 implies that only trusted users belong to the group assigned to those\ + \214les.)117 461.4 R .56(If those)5.56 F(\214les already e)117 473.4 Q +(xist, then it might be necessary to change the permissions accordingly) +-.15 E 2.5(,e)-.65 G(.g.,)-2.5 E(cd /etc/mail)157 489.6 Q +(chmod 0640 *.db *.pag *.dir)157 501.6 Q F0 2.5(2. NORMAL)72 529.8 R +(OPERA)2.5 E(TIONS)-.95 E 2.5(2.1. The)87 553.8 R(System Log)2.5 E F1 +1.511(The system log is supported by the)127 570 R F2(syslo)4.011 E(gd) +-.1 E F1 1.511(\(8\) program.)1.666 F 1.511(All messages from)6.511 F F2 +(sendmail)4.011 E F1(are)4.011 E(logged under the)102 584 Q/F3 9 +/Times-Roman@0 SF(LOG_MAIL)2.5 E F1 -.1(fa)2.5 G(cility).1 E/F4 7 +/Times-Roman@0 SF(5)-4 I F1(.)4 I F0 2.5(2.1.1. F)102 608 R(ormat)-.25 E +F1 .574(Each line in the system log consists of a timestamp, the name o\ +f the machine that gener)142 624.2 R(-)-.2 E .849 +(ated it \(for logging from se)117 636.2 R -.15(ve)-.25 G .849 +(ral machines o).15 F -.15(ve)-.15 G 3.349(rt).15 G .848 +(he local area netw)-3.349 F .848(ork\), the w)-.1 F .848 +(ord \231sendmail:\232,)-.1 F(and a message)117 650.2 Q F4(6)-4 I F1 5 +(.M)4 K(ost messages are a sequence of)-5 E F2(name)2.5 E F1(=)A F2 +(value)A F1(pairs.)2.5 E .32 LW 76 665.2 72 665.2 DL 80 665.2 76 665.2 DL 84 665.2 80 665.2 DL 88 665.2 84 665.2 DL 92 665.2 88 665.2 DL 96 665.2 92 665.2 DL 100 665.2 96 665.2 DL 104 665.2 100 665.2 DL 108 665.2 104 665.2 DL 112 665.2 108 665.2 DL 116 665.2 112 665.2 DL 120 665.2 116 @@ -6628,2967 +1042,3173 @@ DL 84 665.2 80 665.2 DL 88 665.2 84 665.2 DL 92 665.2 88 665.2 DL 96 665.2 DL 184 665.2 180 665.2 DL 188 665.2 184 665.2 DL 192 665.2 188 665.2 DL 196 665.2 192 665.2 DL 200 665.2 196 665.2 DL 204 665.2 200 665.2 DL 208 665.2 204 665.2 DL 212 665.2 208 665.2 DL 216 665.2 212 -665.2 DL/F5 5/Times-Roman@0 SF<3137>93.6 675.6 Q/F6 8/Times-Roman@0 SF --.12<466f>3.2 K 2<7265>.12 G -<78616d706c652c206f6e20736f6d652073797374656d73>-2.12 E/F7 8 -/Times-Italic@0 SF -.08<6765>2 G<74686f73746e616d65>.08 E F6 -<6d696768742072657475726e2099666f6f9a2077686963682077>2 E -<6f756c64206265206d617070656420746f2099666f6f2e626172>-.08 E -<2e636f6d9a206279>-.44 E F7 -.08<6765>2 G<74686f737462796e616d65>.08 E -F6<2e>A F5<3138>93.6 689.2 Q F6<4f6c6465722076>3.2 I -<657273696f6e73206f662073656e646d61696c206469646e27>-.12 E 2<7470>-.144 -G<72652d64658c6e65>-2 E/F8 8/Times-Bold@0 SF<246a>2 E F6 -<617420616c6c2c20736f20757020756e74696c20382e362c20636f6e8c67208c6c6573> -2 E F7<616c77617973>2 E F6<68616420746f2064658c6e65>2 E F8<246a>2 E F6 -<2e>A 0 Cg EP -%%Page: 54 50 +665.2 DL/F5 5/Times-Roman@0 SF(5)93.6 675.6 Q/F6 8/Times-Roman@0 SF +(Except on Ultrix, which does not support f)3.2 I +(acilities in the syslog.)-.08 E F5(6)93.6 689.2 Q F6(This format may v) +3.2 I(ary slightly if your v)-.2 E(endor has changed the syntax.)-.12 E +0 Cg EP +%%Page: 15 11 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d35342053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF<5468652073796e7461782069733a>127 96 Q F0<43>142 -112.2 Q/F2 10/Times-Italic@0 SF 1.666<6370>C<6872>-1.666 E -<6173653120706872>-.15 E<617365322e2e2e>-.15 E F0<46>142 124.2 Q F2 -1.666<638c>C<6c65>-1.666 E F0<46>142 136.2 Q F2 1.666<637c>C<7072>-1.666 -E -.1<6f67>-.45 G -.15<7261>.1 G<6d>.15 E F0<46>142 148.2 Q F2 1.666 -<635b>C<6d61706b>-1.666 E -.3<6579>-.1 G -<5d406d6170636c6173733a6d617073706563>.3 E F1 .035 -<546865208c72737420666f726d2064658c6e65732074686520636c617373>102 164.4 -R F2<63>2.535 E F1 .035<746f206d6174636820616e>2.535 F 2.535<796f>-.15 G -2.535<6674>-2.535 G .035<6865206e616d65642077>-2.535 F 2.535 -<6f7264732e204966>-.1 F F2<706872>2.536 E<61736531>-.15 E F1<6f72>2.536 -E F2<706872>2.536 E<61736532>-.15 E F1 .036<697320616e6f74686572>2.536 F -.747<636c6173732c20652e672e2c>102 176.4 R F2<243d53>3.247 E F1 3.247 -<2c74>C .747<686520636f6e74656e7473206f6620636c617373>-3.247 F F2<53> -3.246 E F1 .746<61726520616464656420746f20636c617373>3.246 F F2<63>3.246 -E F1 5.746<2e49>C 3.246<7469>-5.746 G 3.246<7370>-3.246 G .746 -<65726d69737369626c6520746f2073706c6974207468656d20616d6f6e67>-3.246 F -<6d756c7469706c65206c696e65733b20666f722065>102 188.4 Q -<78616d706c652c20746865207477>-.15 E 2.5<6f66>-.1 G<6f726d733a>-2.5 E -<43486d6f6e6574207563626d6f6e6574>142 204.6 Q<616e64>102 220.8 Q -<43486d6f6e6574>142 237 Q<43487563626d6f6e6574>142 249 Q 1.015 -<6172652065717569>102 265.2 R -.25<7661>-.25 G 3.515<6c656e742e20546865> -.25 F -.74<6060>3.516 G<4627>.74 E 3.516<2766>-.74 G 1.016 -<6f726d7320726561642074686520656c656d656e7473206f662074686520636c617373> --3.516 F F2<63>3.516 E F1 1.016<66726f6d20746865206e616d6564>3.516 F F2 -<8c6c65>3.516 E F1<2c>A F2<7072>3.516 E -.1<6f67>-.45 G -.15<7261>.1 G -<6d>.15 E F1 3.516<2c6f>C<72>-3.516 E F2 .162 -<6d61702073706563698c636174696f6e>102 277.2 R F1 5.162<2e45>C .161<6163 -6820656c656d656e742073686f756c64206265206c6973746564206f6e20612073657061 -72617465206c696e652e>-5.162 F 1.761 -.8<546f2073>5.161 H .161 -<70656369667920616e206f7074696f6e616c208c6c652c20757365>.8 F -.74<6060> -102 289.2 S.74 E 2.5<2762>-.74 G<65747765656e2074686520636c6173 -73206e616d6520616e6420746865208c6c65206e616d652c20652e672e2c>-2.5 E -<466320ad6f202f706174682f746f2f8c6c65>142 305.4 Q .396 -<496620746865208c6c652063616e27>102 321.6 R 2.896<7462>-.18 G 2.896 -<6575>-2.896 G<7365642c>-2.896 E F2<73656e646d61696c>2.896 E F1 .396 -<77696c6c206e6f7420636f6d706c61696e2062>2.896 F .396 -<75742073696c656e746c792069676e6f72652069742e>-.2 F .396 -<546865206d617020666f726d2073686f756c64206265>5.396 F .364 -<616e206f7074696f6e616c206d6170206b>102 333.6 R -.15<6579>-.1 G 2.864 -<2c61>-.5 G 2.864<6e61>-2.864 G 2.864<7473>-2.864 G .363 -<69676e2c20616e642061206d617020636c61737320666f6c6c6f>-2.864 F .363<7765 -64206279207468652073706563698c636174696f6e20666f722074686174206d61702e> --.25 F<4578616d2d>5.363 E<706c657320696e636c7564653a>102 345.6 Q<467b56> -142 361.8 Q<697274486f7374737d406c6461703aad6b202826286f626a656374436c61 -73733d76697274486f7374732928686f73743d2a292920ad7620686f7374>-.6 E<467b -4d79436c6173737d666f6f40686173683a2f6574632f6d61696c2f636c6173736573>142 -373.8 Q 2.625<77696c6c208c6c6c2074686520636c617373>102 390 R F0 -<243d7b56>5.125 E<697274486f7374737d>-.37 E F1 2.625 -<66726f6d20616e204c44>5.125 F 2.625<4150206d6170206c6f6f6b757020616e64> --.4 F F0<243d7b4d79436c6173737d>5.125 E F1 2.625<66726f6d20612068617368> -5.125 F .234<6461746162617365206d6170206c6f6f6b7570206f6620746865>102 -402 R F0 -.25<666f>2.734 G<6f>.25 E F1 5.234<2e54>C .233 -<6865726520697320616c736f20612062>-5.234 F .233<75696c742d696e2073636865 -6d6120746861742063616e206265206163636573736564206279206f6e6c792073706563 -692d>-.2 F<6679696e673a>102 414 Q<467b>142 430.2 Q F2 -<436c6173734e616d65>A F1<7d404c44>A<4150>-.4 E<546869732077696c6c207465 -6c6c2073656e646d61696c20746f207573652074686520646566>102 446.4 Q -<61756c7420736368656d613a>-.1 E -142 462.6 Q --.4<4143>-.93 G<6c61737329>.4 E<2873656e646d61696c4d54>154.5 474.6 Q -.4 -<4143>-.93 G<6c6173734e616d653d>.4 E F2<436c6173734e616d65>A F1<29>A -<287c2873656e646d61696c4d54>154.5 486.6 Q -.4<4143>-.93 G -<6c75737465723d247b73656e646d61696c4d54>.4 E -.4<4143>-.93 G -<6c75737465727d29>.4 E<2873656e646d61696c4d54>159.5 498.6 Q -<41486f73743d246a292929>-.93 E142 510.6 Q --.4<4143>-.93 G<6c61737356>.4 E<616c7565>-1.11 E<4e6f746520746861742074 -6865206c6f6f6b7570206973206f6e6c7920646f6e65207768656e2073656e646d61696c -20697320696e697469616c6c7920737461727465642e>102 526.8 Q 1.339<456c656d -656e7473206f6620636c61737365732063616e20626520616363657373656420696e2072 -756c6573207573696e67>127 543 R F0<243d>3.839 E F1<6f72>3.839 E F0<247e> -3.839 E F1 6.339<2e54>C<6865>-6.339 E F0<247e>3.839 E F1 1.339 -<286d6174636820656e7472696573206e6f7420696e>3.839 F -<636c61737329206f6e6c79206d61746368657320612073696e676c652077>102 555 Q -<6f72643b206d756c74692d77>-.1 E<6f726420656e747269657320696e207468652063 -6c617373206172652069676e6f72656420696e207468697320636f6e7465>-.1 E -<78742e>-.15 E<536f6d6520636c6173736573206861>127 571.2 Q .3 -.15 -<76652069>-.2 H<6e7465726e616c206d65616e696e6720746f>.15 E F2 -<73656e646d61696c>2.5 E F1<3a>A 18.42<243d6520636f6e7461696e73>102 587.4 -R .562<74686520436f6e74656e742d54>3.062 F<72616e73666572>-.35 E .562 -<2d456e636f64696e677320746861742063616e2062652038>-.2 F/F3 10/Symbol SF -A F1 3.062<3762>C .562<697420656e636f6465642e>-3.062 F .561 -<49742069732070726564658c6e656420746f>5.561 F<636f6e7461696e209937626974 -9a2c2099386269749a2c20616e64209962696e6172799a2e>138 599.4 Q 17.86 -<243d6b20736574>102 615.6 R<746f206265207468652073616d65206173>2.5 E F0 -<246b>2.5 E F1 2.5<2c74>C -<6861742069732c207468652055554350206e6f6465206e616d652e>-2.5 E 15.08 -<243d6d20736574>102 631.8 R<746f2074686520736574206f6620646f6d61696e7320 -6279207768696368207468697320686f7374206973206b6e6f>2.5 E -<776e2c20696e697469616c6c79206a757374>-.25 E F0<246d>2.5 E F1<2e>A 17.86 -<243d6e2063616e>102 648 R .58<62652073657420746f2074686520736574206f6620 -4d494d4520626f647920747970657320746861742063616e206e65>3.08 F -.15<7665> --.25 G 3.081<7262>.15 G 3.081<6565>-3.081 G .581<6967687420746f207365> --3.081 F -.15<7665>-.25 G 3.081<6e62>.15 G .581<697420656e636f6465642e> --3.081 F<4974>5.581 E<646566>138 660 Q 1.81 -<61756c747320746f20996d756c7469706172742f7369676e65649a2e>-.1 F 1.81<4d -65737361676520747970657320996d6573736167652f2a9a20616e6420996d756c746970 -6172742f2a9a20617265206e65>6.81 F -.15<7665>-.25 G<72>.15 E 1.853 -<656e636f646564206469726563746c79>138 672 R 6.853<2e4d>-.65 G 1.853 -<756c746970617274206d657373616765732061726520616c>-6.853 F -.1<7761>-.1 -G 1.853<79732068616e646c65642072656375727369>.1 F -.15<7665>-.25 G<6c79> -.15 E 6.853<2e54>-.65 G 1.853<68652068616e646c696e67206f66>-6.853 F<6d65 -73736167652f2a206d657373616765732061726520636f6e74726f6c6c65642062792063 -6c617373>138 684 Q F0<243d73>2.5 E F1<2e>A 17.86<243d712041>102 700.2 R -.712<736574206f6620436f6e74656e742d54>3.212 F .712 -<7970657320746861742077696c6c206e65>-.8 F -.15<7665>-.25 G 3.212<7262> -.15 G 3.212<6565>-3.212 G .712 -<6e636f646564206173206261736536342028696620746865>-3.212 F 3.212<7968> --.15 G -2.25 -.2<61762065>-3.212 H .711<746f20626520656e636f6465642c> -3.412 F<746865>138 712.2 Q 3.357<7977>-.15 G .858<696c6c20626520656e636f -6465642061732071756f7465642d7072696e7461626c65292e>-3.357 F .858 -<49742063616e206861>5.858 F 1.158 -.15<76652070>-.2 H .858 -<72696d6172792074797065732028652e672e2c20997465>.15 F .858 -<78749a29206f722066756c6c>-.15 F<747970657320287375636820617320997465> -138 724.2 Q<78742f706c61696e9a292e>-.15 E 0 Cg EP -%%Page: 55 51 +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-15)195.86 E/F1 10/Times-Roman@0 SF .68(The tw)142 96 R 3.18(om) +-.1 G .68(ost common lines are logged when a message is processed.)-3.18 +F .68(The \214rst logs the)5.68 F .376 +(receipt of a message; there will be e)117 108 R .376 +(xactly one of these per message.)-.15 F .376 +(Some \214elds may be omit-)5.376 F(ted if the)117 120 Q 2.5(yd)-.15 G +2.5(on)-2.5 G(ot contain interesting information.)-2.5 E(Fields are:)5 E +50.06(from The)117 136.2 R(en)2.5 E -.15(ve)-.4 G(lope sender address.) +.15 E 53.95(size The)117 152.4 R(size of the message in bytes.)2.5 E +50.06(class The)117 168.6 R +(class \(i.e., numeric precedence\) of the message.)2.5 E 58.39(pri The) +117 184.8 R(initial message priority \(used for queue sorting\).)2.5 E +45.06(nrcpts The)117 201 R 1.514(number of en)4.014 F -.15(ve)-.4 G +1.515(lope recipients for this message \(after aliasing and for).15 F(-) +-.2 E -.1(wa)189 213 S(rding\).).1 E 45.05(msgid The)117 229.2 R +(message id of the message \(from the header\).)2.5 E 32.28 +(bodytype The)117 245.4 R 3.144 +(message body type \(7BIT or 8BITMIME\), as determined from the)5.644 F +(en)189 257.4 Q -.15(ve)-.4 G(lope.).15 E 48.39(proto The)117 273.6 R +(protocol used to recei)2.5 E .3 -.15(ve t)-.25 H +(his message \(e.g., ESMTP or UUCP\)).15 E 37.84(daemon The)117 289.8 R +(daemon name from the)2.5 E F0(DaemonP)2.5 E(ortOptions)-.2 E F1 +(setting.)2.5 E 49.51(relay The)117 306 R(machine from which it w)2.5 E +(as recei)-.1 E -.15(ve)-.25 G(d.).15 E .43 +(There is also one line logged per deli)117 322.2 R -.15(ve)-.25 G .43 +(ry attempt \(so there can be se).15 F -.15(ve)-.25 G .43 +(ral per message if deli).15 F(v-)-.25 E +(ery is deferred or there are multiple recipients\).)117 334.2 Q +(Fields are:)5 E 61.72(to A)117 350.4 R +(comma-separated list of the recipients to this mailer)2.5 E(.)-.55 E +41.73(ctladdr The)117 366.6 R -.74(``)2.727 G .227(controlling user').74 +F .226(', that is, the name of the user whose credentials we use)-.74 F +(for deli)189 378.6 Q -.15(ve)-.25 G(ry).15 E(.)-.65 E 47.84(delay The) +117 394.8 R 1.205(total delay between the time this message w)3.705 F +1.205(as recei)-.1 F -.15(ve)-.25 G 3.705(da).15 G 1.205(nd the current) +-3.705 F(deli)189 406.8 Q -.15(ve)-.25 G(ry attempt.).15 E 42.84 +(xdelay The)117 423 R .116(amount of time needed in this deli)2.616 F +-.15(ve)-.25 G .116(ry attempt \(normally indicati).15 F .415 -.15(ve o) +-.25 H 2.615(ft).15 G(he)-2.615 E(speed of the connection\).)189 435 Q +43.95(mailer The)117 451.2 R(name of the mailer used to deli)2.5 E -.15 +(ve)-.25 G 2.5(rt).15 G 2.5(ot)-2.5 G(his recipient.)-2.5 E 49.51 +(relay The)117 467.4 R(name of the host that actually accepted \(or rej\ +ected\) this recipient.)2.5 E 55.61(dsn The)117 483.6 R +(enhanced error code \(RFC 2034\) if a)2.5 E -.25(va)-.2 G(ilable.).25 E +55.61(stat The)117 499.8 R(deli)2.5 E -.15(ve)-.25 G(ry status.).15 E +1.012(Not all \214elds are present in all messages; for e)117 516 R +1.012(xample, the relay is usually not listed for local)-.15 F(deli)117 +528 Q -.15(ve)-.25 G(ries.).15 E F0 2.5(2.1.2. Le)102 552 R -.1(ve)-.15 +G(ls).1 E F1 .205(If you ha)142 568.2 R -.15(ve)-.2 G/F2 10 +/Times-Italic@0 SF(syslo)2.855 E(gd)-.1 E F1 .205(\(8\) or an equi)1.666 +F -.25(va)-.25 G .205(lent installed, you will be able to do logging.) +.25 F .204(There is)5.204 F 2.787(al)117 580.2 S(ar)-2.787 E .287 +(ge amount of information that can be logged.)-.18 F .287 +(The log is arranged as a succession of le)5.287 F -.15(ve)-.25 G(ls.) +.15 E .651(At the lo)117 592.2 R .651(west le)-.25 F -.15(ve)-.25 G +3.151(lo).15 G .651(nly e)-3.151 F .651 +(xtremely strange situations are logged.)-.15 F .65(At the highest le) +5.651 F -.15(ve)-.25 G .65(l, e).15 F -.15(ve)-.25 G 3.15(nt).15 G(he) +-3.15 E .825(most mundane and uninteresting e)117 604.2 R -.15(ve)-.25 G +.825(nts are recorded for posterity).15 F 5.826(.A)-.65 G 3.326(sac) +-5.826 G(on)-3.326 E -.15(ve)-.4 G .826(ntion, log le).15 F -.15(ve)-.25 +G(ls).15 E .201 +(under ten are considered generally \231useful;\232 log le)117 616.2 R +-.15(ve)-.25 G .201(ls abo).15 F .501 -.15(ve 6)-.15 H 2.701(4a).15 G .2 +(re reserv)-2.701 F .2(ed for deb)-.15 F .2(ugging pur)-.2 F(-)-.2 E 2.5 +(poses. Le)117 628.2 R -.15(ve)-.25 G(ls from 11\25564 are reserv).15 E +(ed for v)-.15 E(erbose information that some sites might w)-.15 E(ant.) +-.1 E 2.5(Ac)142 644.4 S(omplete description of the log le)-2.5 E -.15 +(ve)-.25 G(ls is gi).15 E -.15(ve)-.25 G 2.5(ni).15 G 2.5(ns)-2.5 G +(ection `)-2.5 E(`Log Le)-.74 E -.15(ve)-.25 G(l').15 E('.)-.74 E F0 2.5 +(2.2. Dumping)87 668.4 R(State)2.5 E F1 -1.1(Yo)127 684.6 S 2.563(uc)1.1 +G .063(an ask)-2.563 F F2(sendmail)2.563 E F1 .064(to log a dump of the\ + open \214les and the connection cache by sending it a)2.563 F/F3 9 +/Times-Roman@0 SF(SIGUSR1)102 696.6 Q F1 2.5(signal. The)2.5 F +(results are logged at)2.5 E F3(LOG_DEB)2.5 E(UG)-.09 E F1(priority)2.5 +E(.)-.65 E 0 Cg EP +%%Page: 16 12 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3535>195.86 E -/F1 10/Times-Roman@0 SF 18.97<243d7320636f6e7461696e73>102 96 R .648<74 -686520736574206f66207375627479706573206f66206d65737361676520746861742063 -616e20626520747265617465642072656375727369>3.148 F -.15<7665>-.25 G -<6c79>.15 E 5.648<2e42>-.65 G 3.148<7964>-5.648 G<6566>-3.148 E .648 -<61756c7420697420636f6e2d>-.1 F .969 -<7461696e73206f6e6c7920997266633832329a2e>138 108 R .969 -<4f7468657220996d6573736167652f2a9a2074797065732063616e6e6f742062652038> -5.969 F/F2 10/Symbol SFA F1 3.469<3762>C .969 -<697420656e636f6465642e>-3.469 F .97<49662061206d657373616765>5.97 F -1.045<636f6e7461696e696e672065696768742062697420646174612069732073656e74 -20746f2061207365>138 120 R -.15<7665>-.25 G 3.545<6e62>.15 G 1.045<6974 -20686f73742c20616e642074686174206d6573736167652063616e6e6f7420626520656e -636f646564>-3.545 F<696e746f207365>138 132 Q -.15<7665>-.25 G 2.5<6e62> -.15 G -<6974732c2069742077696c6c20626520737472697070656420746f203720626974732e> --2.5 E 20.08<243d7420736574>102 148.2 R .372 -<746f2074686520736574206f66207472757374656420757365727320627920746865> -2.872 F F0<54>2.872 E F1 .372<636f6e8c6775726174696f6e206c696e652e>2.872 -F .372<496620796f752077>5.372 F .373 -<616e7420746f20726561642074727573746564207573657273>-.1 F -<66726f6d2061208c6c652c20757365>138 160.2 Q F0<4674>2.5 E/F3 10 -/Times-Italic@0 SF<2f8c6c652f6e616d65>A F1<2e>A 15.64<243d7720736574>102 -176.4 R .513<746f2062652074686520736574206f6620616c6c206e616d6573207468 -697320686f7374206973206b6e6f>3.013 F .513<776e206279>-.25 F 5.513<2e54> --.65 G .513<6869732063616e206265207573656420746f206d61746368206c6f63616c -20686f73742d>-5.513 F<6e616d65732e>138 188.4 Q -<243d7b70657273697374656e744d6163726f737d>102 204.6 Q 1.712 -<73657420746f20746865206d6163726f7320746861742073686f756c64206265207361> -138 216.6 R -.15<7665>-.2 G 4.212<6461>.15 G 1.712 -<63726f73732071756575652072756e732e>-4.212 F 1.712 -<436172652073686f756c642062652074616b>6.712 F 1.712<656e207768656e>-.1 F -<616464696e67206d6163726f206e616d657320746f207468697320636c6173732e>138 -228.6 Q F3<53656e646d61696c>127 244.8 Q F1 .183 -<63616e20626520636f6d70696c656420746f20616c6c6f>2.683 F 2.683<7761>-.25 -G F3<7363616e66>-.001 E F1 .182<28332920737472696e67206f6e20746865>B F0 -<46>2.682 E F1 2.682<6c696e652e2054686973>2.682 F .182 -<6c65747320796f7520646f2073696d706c6973746963>2.682 F .554 -<70617273696e67206f66207465>102 256.8 R .554<7874208c6c65732e>-.15 F --.15<466f>5.554 G 3.054<7265>.15 G .554<78616d706c652c20746f207265616420 -616c6c207468652075736572206e616d657320696e20796f75722073797374656d> --3.204 F F3<2f6574632f706173737764>3.055 E F1 .555<8c6c6520696e746f2061> -3.055 F<636c6173732c20757365>102 268.8 Q -<464c2f6574632f70617373776420255b5e3a5d>142 285 Q -<77686963682072656164732065>102 301.2 Q -.15<7665>-.25 G -<7279206c696e6520757020746f20746865208c72737420636f6c6f6e2e>.15 E F0 2.5 -<352e342e204d>87 325.2 R 2.5<8a44>2.5 G<658c6e65204d61696c6572>-2.5 E F1 -<50726f6772616d7320616e6420696e74657266>127 341.4 Q<6163657320746f206d61 -696c657273206172652064658c6e656420696e2074686973206c696e652e>-.1 E -<54686520666f726d61742069733a>5 E F0<4d>142 357.6 Q F3<6e616d65>A F1 2.5 -<2c7b>C F3<8c656c64>-2.5 E F1<3d>A F3<76616c7565>A F1<7d2a>1.666 E -<7768657265>102 373.8 Q F3<6e616d65>4.244 E F1 1.744<697320746865206e61 -6d65206f6620746865206d61696c657220287573656420696e7465726e616c6c79206f6e -6c792920616e642074686520998c656c643d6e616d659a2070616972732064658c6e65> -4.244 F<617474726962>102 385.8 Q<75746573206f6620746865206d61696c6572> --.2 E 5<2e46>-.55 G<69656c6473206172653a>-5 E -.15<5061>142 402 S 51.87 -<746820546865>.15 F<706174686e616d65206f6620746865206d61696c6572>2.5 E -47.83<466c616773205370656369616c>142 414 R -<8d61677320666f722074686973206d61696c6572>2.5 E 41.73 -<53656e646572205265>142 426 R -<77726974696e672073657428732920666f722073656e64657220616464726573736573> --.25 E 31.17<526563697069656e74205265>142 438 R<77726974696e672073657428 -732920666f7220726563697069656e7420616464726573736573>-.25 E 30.62 -<726563697069656e7473204d6178696d756d>142 450 R -<6e756d626572206f6620726563697069656e74732070657220636f6e6e656374696f6e> -2.5 E<4172>142 462 Q 49.13<677620416e>-.18 F<6172>2.5 E -<67756d656e742076>-.18 E -<6563746f7220746f207061737320746f2074686973206d61696c6572>-.15 E 55.61 -<456f6c20546865>142 474 R -<656e642d6f662d6c696e6520737472696e6720666f722074686973206d61696c6572> -2.5 E 35.62<4d617873697a6520546865>142 486 R<6d6178696d756d206d65737361 -6765206c656e67746820746f2074686973206d61696c6572>2.5 E 14.51 -<6d61786d6573736167657320546865>142 498 R -<6d6178696d756d206d6573736167652064656c69>2.5 E -.15<7665>-.25 G -<726965732070657220636f6e6e656374696f6e>.15 E 32.27 -<4c696e656c696d697420546865>142 510 R<6d6178696d756d206c696e65206c656e67 -746820696e20746865206d65737361676520626f6479>2.5 E 31.18 -<4469726563746f727920546865>142 522 R -.1<776f>2.5 G -<726b696e67206469726563746f727920666f7220746865206d61696c6572>.1 E 42.84 -<55736572696420546865>142 534 R<646566>2.5 E -<61756c74207573657220616e642067726f757020696420746f2072756e206173>-.1 E -50.62<4e69636520546865>142 546 R -<6e69636528322920696e6372656d656e7420666f7220746865206d61696c6572>2.5 E -38.95<4368617273657420546865>142 558 R<646566>2.5 E<61756c74206368617261 -637465722073657420666f7220382d6269742063686172616374657273>-.1 E -.8 -<5479>142 570 S 49.75<70652054>.8 F -<79706520696e666f726d6174696f6e20666f722044534e20646961676e6f7374696373> --.8 E -.8<5761>142 582 S 50.86<697420546865>.8 F -<6d6178696d756d2074696d6520746f2077>2.5 E -<61697420666f7220746865206d61696c6572>-.1 E<5175657565>142 594 Q 20.22 -<67726f757020546865>-.15 F<646566>2.5 E -<61756c742071756575652067726f757020666f7220746865206d61696c6572>-.1 E -69.22<2f54>142 606 S -<686520726f6f74206469726563746f727920666f7220746865206d61696c6572>-69.22 -E<4f6e6c7920746865208c72737420636861726163746572206f6620746865208c656c64 -206e616d6520697320636865636b>102 622.2 Q<65642028697427>-.1 E 2.5<7363> --.55 G<6173652d73656e73697469>-2.5 E -.15<7665>-.25 G<292e>.15 E .396 -<54686520666f6c6c6f>127 638.4 R .396<77696e67208d616773206d617920626520 -73657420696e20746865206d61696c6572206465736372697074696f6e2e>-.25 F -<416e>5.396 E 2.896<796f>-.15 G .397 -<74686572208d616773206d6179206265207573656420667265656c79>-2.896 F .075< -746f20636f6e646974696f6e616c6c792061737369676e206865616465727320746f206d -657373616765732064657374696e656420666f7220706172746963756c6172206d61696c -6572732e>102 650.4 R .075<466c616773206d61726b>5.075 F .075 -<65642077697468208720617265>-.1 F 1.192 -<6e6f7420696e74657270726574656420627920746865>102 662.4 R F3 -<73656e646d61696c>3.692 E F1 1.193 -<62696e6172793b207468657365206172652074686520636f6e>3.692 F -.15<7665> --.4 G 1.193<6e74696f6e616c6c79207573656420746f20636f7272656c61746520746f -20746865208d616773>.15 F .738<706f7274696f6e206f6620746865>102 674.4 R -F0<48>3.238 E F1 3.237<6c696e652e20466c616773>3.238 F<6d61726b>3.237 E -.737<656420776974682088206170706c7920746f20746865206d61696c65727320666f -72207468652073656e646572206164647265737320726174686572207468616e>-.1 F -<74686520757375616c20726563697069656e74206d61696c6572732e>102 686.4 Q -15.56<6152>102 702.6 S .987<756e20457874656e64656420534d5450202845534d54 -50292070726f746f636f6c202864658c6e656420696e205246437320313836392c203136 -35322c20616e642031383730292e>-15.56 F .987<54686973208d6167>5.987 F -<646566>122 714.6 Q<61756c7473206f6e2069662074686520534d5450206772656574 -696e67206d65737361676520696e636c75646573207468652077>-.1 E -<6f7264209945534d54509a2e>-.1 E 0 Cg EP -%%Page: 56 52 +/F0 10/Times-Bold@0 SF 193.36(SMM:08-16 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E 2.5(2.3. The)87 96 R +(Mail Queues)2.5 E/F1 10/Times-Roman@0 SF .649 +(Mail messages may either be deli)127 112.2 R -.15(ve)-.25 G .648 +(red immediately or be held for later deli).15 F -.15(ve)-.25 G(ry).15 E +5.648(.H)-.65 G .648(eld mes-)-5.648 F +(sages are placed into a holding directory called a mail queue.)102 +124.2 Q 2.5(Am)127 140.4 S(ail message may be queued for these reasons:) +-2.5 E 5<8349>107 156.6 S 2.546(fam)-5 G .047 +(ail message is temporarily undeli)-2.546 F -.15(ve)-.25 G .047 +(rable, it is queued and deli).15 F -.15(ve)-.25 G .047 +(ry is attempted later).15 F 5.047(.I)-.55 G 2.547(ft)-5.047 G(he)-2.547 +E .141(message is addressed to multiple recipients, it is queued only f\ +or those recipients to whom deli)115.5 168.6 R(v-)-.25 E +(ery is not immediately possible.)115.5 180.6 Q 5<8349>107 192.6 S 2.5 +(ft)-5 G(he SuperSafe option is set to true, all mail messages are queu\ +ed while deli)-2.5 E -.15(ve)-.25 G(ry is attempted.).15 E 5<8349>107 +204.6 S 3.258(ft)-5 G .758(he Deli)-3.258 F -.15(ve)-.25 G .758 +(ryMode option is set to queue-only or defer).15 F 3.258(,a)-.4 G .758 +(ll mail is queued, and no immediate)-3.258 F(deli)115.5 216.6 Q -.15 +(ve)-.25 G(ry is attempted.).15 E 5<8349>107 228.6 S 2.815(ft)-5 G .315 +(he load a)-2.815 F -.15(ve)-.2 G .315(rage becomes higher than the v) +.15 F .314(alue of the QueueLA option and the)-.25 F F0(QueueF)2.814 E +(actor)-.25 E F1(\()115.5 240.6 Q F0(q)A F1 3.442(\)o)C .942(ption di) +-3.442 F .942(vided by the dif)-.25 F .942 +(ference in the current load a)-.25 F -.15(ve)-.2 G .942(rage and the) +.15 F F0(QueueLA)3.442 E F1 .942(option plus)3.442 F .403(one is less t\ +han the priority of the message, messages are queued rather than immedi\ +ately deli)115.5 252.6 R(v-)-.25 E(ered.)115.5 264.6 Q 5<834f>107 276.6 +S .744(ne or more addresses are mark)-5 F .745(ed as e)-.1 F(xpensi)-.15 +E 1.045 -.15(ve a)-.25 H .745(nd deli).15 F -.15(ve)-.25 G .745 +(ry is postponed until the ne).15 F .745(xt queue)-.15 F +(run or one or more address are mark)115.5 288.6 Q +(ed as held via mailer which uses the hold mailer \215ag.)-.1 E 5<8354> +107 300.6 S(he mail message has been mark)-5 E +(ed as quarantined via a mail \214lter or rulesets.)-.1 E F0 2.5 +(2.3.1. Queue)102 324.6 R(Gr)2.5 E(oups and Queue Dir)-.18 E(ectories) +-.18 E F1 .339(There are one or more mail queues.)142 340.8 R .339 +(Each mail queue belongs to a queue group.)5.339 F .338(There is)5.338 F +(al)117 352.8 Q -.1(wa)-.1 G .616(ys a def).1 F .616 +(ault queue group that is called `)-.1 F(`mqueue')-.74 E 3.117('\()-.74 +G .617(which is where messages go by def)-3.117 F(ault)-.1 E 2.244 +(unless otherwise speci\214ed\).)117 364.8 R 2.244 +(The directory or directories which comprise the def)7.244 F 2.243 +(ault queue)-.1 F 1.379 +(group are speci\214ed by the QueueDirectory option.)117 376.8 R 1.379 +(There are zero or more additional named)6.379 F +(queue groups declared using the)117 388.8 Q F0(Q)2.5 E F1 +(command in the con\214guration \214le.)2.5 E .182(By def)142 405 R .181 +(ault, a queued message is placed in the queue group associated with th\ +e \214rst recipi-)-.1 F 1.18(ent in the recipient list.)117 417 R 3.68 +(Ar)6.18 G 1.181(ecipient address is mapped to a queue group as follo) +-3.68 F 3.681(ws. First,)-.25 F(if)3.681 E 1.222 +(there is a ruleset called `)117 429 R(`queue)-.74 E(group')-.15 E 1.222 +(', and if this ruleset maps the address to a queue group)-.74 F 1.39 +(name, then that queue group is chosen.)117 441 R 1.39(That is, the ar) +6.39 F 1.39(gument for the ruleset is the recipient)-.18 F .44 +(address \(i.e., the address part of the resolv)117 453 R .439 +(ed triple\) and the result should be)-.15 F F0($#)2.939 E F1(follo) +2.939 E .439(wed by the)-.25 F .768(name of a queue group.)117 465 R +.769(Otherwise, if the mailer associated with the address speci\214es a\ + queue)5.768 F(group, then that queue group is chosen.)117 477 Q +(Otherwise, the def)5 E(ault queue group is chosen.)-.1 E 3.379(Am)142 +493.2 S .879(essage with multiple recipients will be split if dif)-3.379 +F .878(ferent queue groups are chosen by)-.25 F +(the mapping of recipients to queue groups.)117 505.2 Q 1.606(When a me\ +ssage is placed in a queue group, and the queue group has more than one) +142 521.4 R(queue, a queue is selected randomly)117 533.4 Q(.)-.65 E +1.633(If a message with multiple recipients is placed into a queue grou\ +p with the ')142 549.6 R 1.632(r' option)-.5 F 1.055 +(\(maximum number of recipients per message\) set to a positi)117 561.6 +R 1.356 -.15(ve v)-.25 H(alue)-.1 E/F2 10/Times-Italic@0 SF(N)3.556 E F1 +3.556(,a)C 1.056(nd if there are more)-3.556 F(than)117 573.6 Q F2(N) +2.905 E F1 .405(recipients in the message, then the message will be spl\ +it into multiple messages, each of)2.905 F(which ha)117 585.6 Q .3 -.15 +(ve a)-.2 H 2.5(tm).15 G(ost)-2.5 E F2(N)2.5 E F1(recipients.)2.5 E .06 +(Notice: if multiple queue groups are used, do)142 601.8 R F0(not)2.56 E +F1(mo)2.56 E .36 -.15(ve q)-.15 H .06 +(ueue \214les around, e.g., into a dif-).15 F 1.436 +(ferent queue directory)117 613.8 R 6.436(.T)-.65 G 1.436(his may ha) +-6.436 F 1.735 -.15(ve w)-.2 H 1.435(eird ef).15 F 1.435 +(fects and can cause mail not to be deli)-.25 F -.15(ve)-.25 G(red.).15 +E(Queue \214les and directories should be treated as opaque and should \ +not be manipulated directly)117 625.8 Q(.)-.65 E F0 2.5(2.3.2. Queue)102 +649.8 R(Runs)2.5 E F2(sendmail)142 666 Q F1 1(has tw)3.5 F 3.5(od)-.1 G +(if)-3.5 E 1(ferent w)-.25 F 1.001(ays to process the queue\(s\).)-.1 F +1.001(The \214rst one is to start queue)6.001 F .104 +(runners after certain interv)117 678 R .104(als \(`)-.25 F(`normal') +-.74 E 2.604('q)-.74 G .103(ueue runners\), the second one is to k) +-2.604 F .103(eep queue runner)-.1 F .4(processes around \(`)117 690 R +(`persistent')-.74 E 2.9('q)-.74 G .401(ueue runners\).)-2.9 F(Ho)5.401 +E 2.901(wt)-.25 G 2.901(os)-2.901 G .401 +(elect either of these types is discussed)-2.901 F 1.349 +(in the appendix `)117 702 R 1.348(`COMMAND LINE FLA)-.74 F(GS')-.4 E +3.848('. Persistent)-.74 F 1.348(queue runners ha)3.848 F 1.648 -.15 +(ve t)-.2 H 1.348(he adv).15 F(antage)-.25 E .054(that no ne)117 714 R +2.554(wp)-.25 G .054(rocesses need to be spa)-2.554 F .055 +(wned at certain interv)-.15 F .055(als; the)-.25 F 2.555(yj)-.15 G .055 +(ust sleep for a speci\214ed time)-2.555 F 0 Cg EP +%%Page: 17 13 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d35362053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF 12.78<414c>102 96 S .852<6f6f6b2075702074686520 -75736572202861646472657373292070617274206f6620746865207265736f6c76> --12.78 F .852<6564206d61696c657220747269706c652c20696e2074686520616c6961 -732064617461626173652e>-.15 F<4e6f726d616c6c79>5.852 E -<74686973206973206f6e6c792073657420666f72206c6f63616c206d61696c6572732e> -122 108 Q 15<6246>102 124.2 S .456<6f726365206120626c616e6b206c696e6520 -6f6e2074686520656e64206f662061206d6573736167652e>-15.15 F .456 -<5468697320697320696e74656e64656420746f2077>5.456 F .456 -<6f726b2061726f756e6420736f6d65207374757069642076>-.1 F<6572>-.15 E<2d> --.2 E .362<73696f6e73206f66202f62696e2f6d61696c207468617420726571756972 -65206120626c616e6b206c696e652c2062>122 136.2 R .362 -<757420646f206e6f742070726f>-.2 F .362<76696465206974207468656d73656c76> --.15 F 2.861<65732e204974>-.15 F -.1<776f>2.861 G .361 -<756c64206e6f74206e6f72>.1 F<2d>-.2 E -<6d616c6c792062652075736564206f6e206e657477>122 148.2 Q -<6f726b206d61696c2e>-.1 E 13.33<4253>102 164.4 S .142 -<74726970206c656164696e67206261636b736c617368657320285c29206f66>-13.33 F -2.643<666f>-.25 G 2.643<6674>-2.643 G .143<686520616464726573733b207468 -6973206973206120737562736574206f66207468652066756e6374696f6e616c69747920 -6f6620746865>-2.643 F F0<73>2.643 E F1<8d61672e>2.643 E 15.56<6344>102 -180.6 S 2.663<6f6e>-15.56 G .163 -<6f7420696e636c75646520636f6d6d656e747320696e206164647265737365732e> --2.663 F .163 -<546869732073686f756c64206f6e6c79206265207573656420696620796f75206861> -5.163 F .463 -.15<76652074>-.2 H 2.663<6f77>.15 G .163 -<6f726b2061726f756e642061>-2.763 F 1.846<72656d6f7465206d61696c65722074 -686174206765747320636f6e667573656420627920636f6d6d656e74732e>122 192.6 R -1.846<546869732073747269707320616464726573736573206f662074686520666f726d -2099506872617365>6.846 F<3c616464726573733e9a206f7220996164647265737320 -28436f6d6d656e74299a20646f>122 204.6 Q -<776e20746f206a7573742099616464726573739a2e>-.25 E 5.83<4388204966>102 -220.8 R .214<6d61696c206973>2.714 F/F2 10/Times-Italic@0 SF -.37<7265> -2.714 G<636569766564>.37 E F1 .213 -<66726f6d2061206d61696c657220776974682074686973208d6167207365742c20616e> -2.713 F 2.713<7961>-.15 G .213<646472657373657320696e207468652068656164 -6572207468617420646f206e6f74206861>-2.713 F -.15<7665>-.2 G .97 -<616e206174207369676e202899409a29206166746572206265696e67207265>122 -232.8 R .97 -<7772697474656e2062792072756c657365742074687265652077696c6c206861>-.25 F -1.27 -.15<76652074>-.2 H .97 -<6865209940646f6d61696e9a20636c617573652066726f6d>.15 F -<7468652073656e64657220656e>122 244.8 Q -.15<7665>-.4 G -<6c6f70652061646472657373207461636b>.15 E<6564206f6e2e>-.1 E -<5468697320616c6c6f>5 E -<7773206d61696c20776974682068656164657273206f662074686520666f726d3a>-.25 -E<46726f6d3a20757365726140686f737461>162 261 Q -.8<546f>162 273 S 2.5 -<3a75>.8 G<7365726240686f7374622c207573657263>-2.5 E<746f206265207265> -122 289.2 Q<7772697474656e2061733a>-.25 E -<46726f6d3a20757365726140686f737461>162 305.4 Q -.8<546f>162 317.4 S 2.5 -<3a75>.8 G<7365726240686f7374622c20757365726340686f737461>-2.5 E -<6175746f6d61746963616c6c79>122 333.6 Q 5<2e48>-.65 G -.25<6f77>-5 G --2.15 -.25<65762065>.25 H .8 -.4<722c2069>.25 H 2.5<7464>.4 G -<6f65736e27>-2.5 E 2.5<7472>-.18 G<65616c6c792077>-2.5 E -<6f726b2072656c6961626c79>-.1 E<2e>-.65 E 15<6444>102 349.8 S 2.56<6f6e> --15 G .06<6f7420696e636c75646520616e676c6520627261636b>-2.56 F .06<6574 -732061726f756e6420726f7574652d616464726573732073796e74617820616464726573 -7365732e>-.1 F .06<546869732069732075736566756c206f6e206d61696c657273> -5.06 F .187<746861742061726520676f696e6720746f20706173732061646472657373 -657320746f2061207368656c6c2074686174206d6967687420696e746572707265742061 -6e676c6520627261636b>122 361.8 R .188 -<65747320617320492f4f207265646972656374696f6e2e>-.1 F<486f>122 373.8 Q -<7765>-.25 E -.15<7665>-.25 G 1.621 -.4<722c2069>.15 H 3.321<7464>.4 G -.821<6f6573206e6f742070726f74656374206167>-3.321 F .821 -<61696e7374206f74686572207368656c6c206d657461636861726163746572732e>-.05 -F .821<5468657265666f72652c2070617373696e6720616464726573736573>5.821 F< -746f2061207368656c6c2073686f756c64206e6f7420626520636f6e7369646572656420 -7365637572652e>122 385.8 Q 5.28<44872054686973>102 402 R -<6d61696c65722077>2.5 E -<616e747320612099446174653a9a20686561646572206c696e652e>-.1 E 15.56 -<6554>102 418.2 S .173<686973206d61696c65722069732065>-15.56 F -<7870656e7369>-.15 E .473 -.15<76652074>-.25 H 2.673<6f63>.15 G .173 -<6f6e6e65637420746f2c20736f2074727920746f2061>-2.673 F -.2<766f>-.2 G -.174<696420636f6e6e656374696e67206e6f726d616c6c793b20616e>.2 F 2.674 -<796e>-.15 G .174<656365737361727920636f6e2d>-2.674 F<6e656374696f6e2077 -696c6c206f6363757220647572696e6720612071756575652072756e2e>122 430.2 Q -<53656520616c736f206f7074696f6e>5 E F0<486f6c64457870656e7369>2.5 E -.1 -<7665>-.1 G F1<2e>.1 E 13.89<4545>102 446.4 S -<7363617065206c696e6573206265>-13.89 E -<67696e6e696e672077697468209946726f6d>-.15 E 2.5<9a69>5 G 2.5<6e74>-2.5 -G<6865206d6573736167652077697468206120603e27207369676e2e>-2.5 E 16.67 -<6654>102 462.6 S .19<6865206d61696c65722077>-16.67 F .19<616e74732061> --.1 F F02.69 E F2<6672>2.69 E<6f6d>-.45 E F1 .19<8d61672c2062>2.69 -F .19<7574206f6e6c7920696620746869732069732061206e657477>-.2 F .19 -<6f726b20666f7277>-.1 F .19 -<617264206f7065726174696f6e2028692e652e2c20746865206d61696c6572>-.1 F -<77696c6c206769>122 474.6 Q .3 -.15<76652061>-.25 H 2.5<6e65>.15 G -<72726f72206966207468652065>-2.5 E -.15<7865>-.15 G -<637574696e67207573657220646f6573206e6f74206861>.15 E .3 -.15<76652073> --.2 H<70656369616c207065726d697373696f6e73292e>.15 E 6.94 -<46872054686973>102 490.8 R<6d61696c65722077>2.5 E -<616e74732061209946726f6d3a9a20686561646572206c696e652e>-.1 E 15<674e> -102 507 S<6f726d616c6c79>-15 E<2c>-.65 E F2<73656e646d61696c>4.892 E F1 -2.393<73656e647320696e7465726e616c6c792067656e65726174656420656d61696c20 -28652e672e2c206572726f72206d6573736167657329207573696e6720746865206e756c -6c>4.892 F 1.327<72657475726e206164647265737320617320726571756972656420 -62792052464320313132332e>122 519 R<486f>6.327 E<7765>-.25 E -.15<7665> --.25 G 2.127 -.4<722c2073>.15 H 1.327<6f6d65206d61696c65727320646f6e27> -.4 F 3.827<7461>-.18 G 1.327<63636570742061206e756c6c2072657475726e> --3.827 F 3.31<616464726573732e204966>122 531 R<6e6563657373617279>3.31 E -3.31<2c79>-.65 G .81<6f752063616e2073657420746865>-3.31 F F0<67>3.311 E -F1 .811<8d616720746f20707265>3.311 F -.15<7665>-.25 G<6e74>.15 E F2 -<73656e646d61696c>3.311 E F1 .811<66726f6d206f6265>3.311 F .811 -<79696e6720746865207374616e64617264733b>-.15 F 1.57<6572726f72206d657373 -616765732077696c6c2062652073656e742061732066726f6d20746865204d41494c4552 -2d44>122 543 R 1.57<41454d4f4e202861637475616c6c79>-.4 F 4.07<2c74>-.65 -G 1.57<68652076>-4.07 F 1.57<616c7565206f6620746865>-.25 F F0<246e>4.07 -E F1<6d6163726f292e>122 555 Q 15<6855>102 571.2 S 1.006 -<7070657220636173652073686f756c642062652070726573657276>-15 F 1.007<6564 -20696e20686f7374206e616d6573202874686520244020706f7274696f6e206f66207468 -65206d61696c657220747269706c6574207265736f6c76>-.15 F<6564>-.15 E -<66726f6d2072756c6573657420302920666f722074686973206d61696c6572>122 -583.2 Q<2e>-.55 E 17.22<6944>102 599.4 S 2.5<6f55>-17.22 G -<736572204461746162617365207265>-2.5 E<77726974696e67206f6e20656e>-.25 E --.15<7665>-.4 G<6c6f70652073656e64657220616464726573732e>.15 E 16.67 -<4954>102 615.6 S .54<686973208d6167206973206465707265636174656420616e64 -2077696c6c2062652072656d6f>-16.67 F -.15<7665>-.15 G 3.039<6466>.15 G -.539<726f6d2061206675747572652076>-3.039 F 3.039 -<657273696f6e2e2054686973>-.15 F .539 -<6d61696c65722077696c6c20626520737065616b2d>3.039 F .161 -<696e6720534d545020746f20616e6f74686572>122 627.6 R F2<73656e646d61696c> -2.662 E F1 2.662<8a61>2.662 G 2.662<7373>-2.662 G .162<7563682069742063 -616e20757365207370656369616c2070726f746f636f6c2066656174757265732e> --2.662 F .162<54686973208d61672073686f756c64>5.162 F -<6e6f7420626520757365642065>122 639.6 Q<786365707420666f7220646562>-.15 -E<756767696e6720707572706f73657320626563617573652069742075736573>-.2 E -F0<56455242>2.5 E F1<617320534d545020636f6d6d616e642e>2.5 E 17.22<6a44> -102 655.8 S 2.5<6f55>-17.22 G<736572204461746162617365207265>-2.5 E<7772 -6974696e67206f6e20726563697069656e74732061732077656c6c2061732073656e6465 -72732e>-.25 E 15<6b4e>102 672 S 1.03<6f726d616c6c79207768656e>-15 F F2 -<73656e646d61696c>3.53 E F1 1.03 -<636f6e6e6563747320746f206120686f73742076696120534d5450>3.53 F 3.529 -<2c69>-1.11 G 3.529<7463>-3.529 G 1.029<6865636b7320746f206d616b>-3.529 -F 3.529<6573>-.1 G 1.029<757265207468617420746869732069736e27>-3.529 F -<74>-.18 E .562<6163636964656e746c79207468652073616d6520686f7374206e616d -65206173206d696768742068617070656e206966>122 684 R F2<73656e646d61696c> -3.062 E F1 .562 -<6973206d6973636f6e8c6775726564206f722069662061206c6f6e672d6861756c> -3.062 F<6e657477>122 696 Q 1.074<6f726b20696e74657266>-.1 F 1.074 -<6163652069732073657420696e206c6f6f706261636b206d6f64652e>-.1 F 1.073<54 -686973208d61672064697361626c657320746865206c6f6f706261636b20636865636b2e> -6.074 F 1.073<49742073686f756c64>6.073 F -<6f6e6c79206265207573656420756e6465722076>122 708 Q -<65727920756e757375616c2063697263756d7374616e6365732e>-.15 E 0 Cg EP -%%Page: 57 53 +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-17)195.86 E/F1 10/Times-Roman@0 SF .554(after the)117 96 R 3.054 +<798c>-.15 G .554(nished a queue run.)-3.054 F .554(Another adv)5.554 F +.554(antage of persistent queue runners is that only one)-.25 F .379 +(process belonging to a w)117 108 R .379(orkgroup \(a w)-.1 F .38 +(orkgroup is a set of queue groups\) collects the data for a)-.1 F .489 +(queue run and then multiple queue runner may go ahead using that data.) +117 120 R .488(This can signi\214cantly)5.488 F .861(reduce the disk I/\ +O necessary to read the queue \214les compared to starting multiple que\ +ue run-)117 132 R .55(ners directly)117 144 R 5.55(.T)-.65 G .55 +(heir disadv)-5.55 F .55(antage is that a ne)-.25 F 3.049(wq)-.25 G .549 +(ueue run is only started after all queue runners)-3.049 F 1.043 +(belonging to a group \214nished their tasks.)117 156 R 1.044 +(In case one of the queue runners tries deli)6.043 F -.15(ve)-.25 G +1.044(ry to a).15 F(slo)117 168 Q 3.283(wr)-.25 G .783 +(ecipient site at the end of a queue run, the ne)-3.283 F .782 +(xt queue run may be substantially delayed.)-.15 F .741 +(In general this should be smoothed out due to the distrib)117 180 R +.741(ution of those slo)-.2 F 3.242(wj)-.25 G .742(obs, ho)-3.242 F(we) +-.25 E -.15(ve)-.25 G 1.542 -.4(r, f).15 H(or).4 E .142(sites with smal\ +l number of queue entries this might introduce noticeable delays.)117 +192 R .141(In general, per)5.141 F(-)-.2 E +(sistent queue runners are only useful for sites with big queues.)117 +204 Q F0 2.5(2.3.3. Manual)102 228 R(Inter)2.5 E -.1(ve)-.1 G(ntion).1 E +F1 1.049 +(Under normal conditions the mail queue will be processed transparently) +142 244.2 R 6.049(.H)-.65 G -.25(ow)-6.049 G -2.15 -.25(ev e).25 H 1.85 +-.4(r, y).25 H(ou).4 E .152(may \214nd that manual interv)117 256.2 R +.151(ention is sometimes necessary)-.15 F 5.151(.F)-.65 G .151(or e) +-5.301 F .151(xample, if a major host is do)-.15 F(wn)-.25 E .103 +(for a period of time the queue may become clogged.)117 268.2 R +(Although)5.103 E/F2 10/Times-Italic@0 SF(sendmail)2.604 E F1 .104 +(ought to reco)2.604 F -.15(ve)-.15 G 2.604(rg).15 G(race-)-2.604 E .249 +(fully when the host comes up, you may \214nd performance unacceptably \ +bad in the meantime.)117 280.2 R(In)5.248 E .538(that case you w)117 +292.2 R .538 +(ant to check the content of the queue and manipulate it as e)-.1 F .539 +(xplained in the ne)-.15 F(xt)-.15 E(tw)117 304.2 Q 2.5(os)-.1 G +(ections.)-2.5 E F0 2.5(2.3.4. Printing)102 328.2 R(the queue)2.5 E F1 +.862(The contents of the queue\(s\) can be printed using the)142 344.4 R +F2(mailq)3.361 E F1 .861(command \(or by specifying)3.361 F(the)117 +356.4 Q F0(\255bp)2.5 E F1(\215ag to)2.5 E F2(sendmail)2.5 E F1(\):)A +(mailq)157 372.6 Q 1.673(This will produce a listing of the queue id') +117 388.8 R 1.673(s, the size of the message, the date the message)-.55 +F .528(entered the queue, and the sender and recipients.)117 400.8 R +.527(If shared memory support is compiled in, the)5.527 F(\215ag)117 +412.8 Q F0(\255bP)3.014 E F1 .514 +(can be used to print the number of entries in the queue\(s\), pro)3.014 +F .515(vided a process updates)-.15 F .541(the data.)117 424.8 R(Ho) +5.541 E(we)-.25 E -.15(ve)-.25 G 1.341 -.4(r, a).15 H 3.041(se).4 G .541 +(xplained earlier)-3.191 F 3.041(,t)-.4 G .54 +(he output might be slightly wrong, since access to the)-3.041 F 1.43 +(shared memory is not lock)117 436.8 R 3.931(ed. F)-.1 F 1.431(or e)-.15 +F 1.431(xample, `)-.15 F(`unkno)-.74 E 1.431(wn number of entries')-.25 +F 3.931('m)-.74 G 1.431(ight be sho)-3.931 F(wn.)-.25 E(The internal co\ +unters are updated after each queue run to the correct v)117 448.8 Q +(alue ag)-.25 E(ain.)-.05 E F0 2.5(2.3.5. F)102 472.8 R(or)-.25 E +(cing the queue)-.18 E F2(Sendmail)142 489 Q F1 .353 +(should run the queue automatically at interv)2.853 F 2.852(als. When) +-.25 F .352(using multiple queues, a)2.852 F .276 +(separate process will by def)117 501 R .276 +(ault be created to run each of the queues unless the queue run is ini-) +-.1 F .614(tiated by a user with the v)117 513 R .613(erbose \215ag.) +-.15 F .613(The algorithm is to read and sort the queue, and then to) +5.613 F .159(attempt to process all jobs in order)117 525 R 5.159(.W) +-.55 G .159(hen it attempts to run the job,)-5.159 F F2(sendmail)2.659 E +F1 .159(\214rst checks to see)2.659 F(if the job is lock)117 537 Q 2.5 +(ed. If)-.1 F(so, it ignores the job)2.5 E(.)-.4 E .338 +(There is no attempt to insure that only one queue processor e)142 553.2 +R .338(xists at an)-.15 F 2.838(yt)-.15 G .338(ime, since there)-2.838 F +.094(is no guarantee that a job cannot tak)117 565.2 R 2.595(ef)-.1 G +(ore)-2.595 E -.15(ve)-.25 G 2.595(rt).15 G 2.595(op)-2.595 G .095 +(rocess \(ho)-2.595 F(we)-.25 E -.15(ve)-.25 G -.4(r,).15 G F2(sendmail) +2.995 E F1 .095(does include heuris-)2.595 F 1.086(tics to try to abort\ + jobs that are taking absurd amounts of time; technically)117 577.2 R +3.586(,t)-.65 G 1.086(his violates RFC)-3.586 F .461(821, b)117 589.2 R +.461(ut is blessed by RFC 1123\).)-.2 F .461 +(Due to the locking algorithm, it is impossible for one job to)5.461 F +1.087(freeze the entire queue.)117 601.2 R(Ho)6.086 E(we)-.25 E -.15(ve) +-.25 G 1.886 -.4(r, a).15 H 3.586(nu).4 G(ncooperati)-3.586 E 1.386 -.15 +(ve r)-.25 H 1.086(ecipient host or a program recipient that).15 F(ne) +117 613.2 Q -.15(ve)-.25 G 3.35(rr).15 G .85(eturns can accumulate man) +-3.35 F 3.351(yp)-.15 G .851(rocesses in your system.)-3.351 F +(Unfortunately)5.851 E 3.351(,t)-.65 G .851(here is no com-)-3.351 F +(pletely general w)117 625.2 Q(ay to solv)-.1 E 2.5(et)-.15 G(his.)-2.5 +E .082(In some cases, you may \214nd that a major host going do)142 +641.4 R .082(wn for a couple of days may create)-.25 F 2.924(ap)117 +653.4 S(rohibiti)-2.924 E -.15(ve)-.25 G .424(ly lar).15 F .424 +(ge queue.)-.18 F .424(This will result in)5.424 F F2(sendmail)2.924 E +F1 .425(spending an inordinate amount of time)2.924 F 1.085 +(sorting the queue.)117 665.4 R 1.085(This situation can be \214x)6.085 +F 1.084(ed by mo)-.15 F 1.084(ving the queue to a temporary place and) +-.15 F .022(creating a ne)117 677.4 R 2.522(wq)-.25 G 2.522(ueue. The) +-2.522 F .022(old queue can be run later when the of)2.522 F .023 +(fending host returns to service.)-.25 F 1.6 -.8(To d)142 693.6 T 2.5 +(ot).8 G(his, it is acceptable to mo)-2.5 E .3 -.15(ve t)-.15 H +(he entire queue directory:).15 E 0 Cg EP +%%Page: 18 14 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3537>195.86 E -/F1 10/Times-Roman@0 SF 12.78<4b43>102 96 S -<757272656e746c7920756e696d706c656d656e7465642e>-12.78 E<526573657276>5 -E<656420666f72206368756e6b696e672e>-.15 E 17.22<6c54>102 112.2 S<686973 -206d61696c6572206973206c6f63616c2028692e652e2c208c6e616c2064656c69> --17.22 E -.15<7665>-.25 G<72792077696c6c20626520706572666f726d6564292e> -.15 E 13.89<4c4c>102 128.4 S .598<696d697420746865206c696e65206c656e6774 -68732061732073706563698c656420696e20524643203832312e>-13.89 F .598<5468 -69732064657072656361746564206f7074696f6e2073686f756c64206265207265706c61 -636564206279>5.598 F<746865>122 140.4 Q F0<4c3d>2.5 E F1 -<6d61696c206465636c61726174696f6e2e>2.5 E -.15<466f>5 G 2.5<7268>.15 G -<6973746f72696320726561736f6e732c20746865>-2.5 E F0<4c>2.5 E F1 -<8d616720616c736f207365747320746865>2.5 E F0<37>2.5 E F1<8d61672e>2.5 E -12.22<6d54>102 156.6 S .464<686973206d61696c65722063616e2073656e6420746f -206d756c7469706c65207573657273206f6e207468652073616d6520686f737420696e20 -6f6e65207472616e73616374696f6e2e>-12.22 F .463<5768656e2061>5.463 F F0 -<2475>2.963 E F1<6d6163726f>2.963 E .731<6f636375727320696e20746865>122 -168.6 R/F2 10/Times-Italic@0 SF<6172>3.231 E<6776>-.37 E F1 .732<706172 -74206f6620746865206d61696c65722064658c6e6974696f6e2c2074686174208c656c64 -2077696c6c206265207265706561746564206173206e656365737361727920666f722061 -6c6c>3.231 F .674<7175616c696679696e672075736572732e>122 180.6 R -<52656d6f>5.674 E .674<76696e672074686973208d61672063616e20646566656174 -206475706c69636174652073757072657373696f6e206f6e20612072656d6f7465207369 -74652061732065616368>-.15 F<726563697069656e742069732073656e7420696e2061 -207365706172617465207472616e73616374696f6e2e>122 192.6 Q 3.61 -<4d872054686973>102 208.8 R<6d61696c65722077>2.5 E -<616e7473206120994d6573736167652d49643a9a20686561646572206c696e652e>-.1 -E 15<6e44>102 225 S 2.5<6f6e>-15 G<6f7420696e73657274206120554e49582d73 -74796c65209946726f6d9a206c696e65206f6e207468652066726f6e74206f6620746865 -206d6573736167652e>-2.5 E 15<6f41>102 241.2 S -.1<6c7761>-15 G .816 -<79732072756e20617320746865206f>.1 F .816 -<776e6572206f662074686520726563697069656e74206d61696c626f782e>-.25 F -<4e6f726d616c6c79>5.816 E F2<73656e646d61696c>3.316 E F1 .816 -<72756e73206173207468652073656e64657220666f72>3.316 F .198<6c6f63616c6c -792067656e657261746564206d61696c206f7220617320996461656d6f6e9a2028616374 -75616c6c79>122 253.2 R 2.698<2c74>-.65 G .198 -<686520757365722073706563698c656420696e20746865>-2.698 F F0<75>2.698 E -F1 .198<6f7074696f6e29207768656e2064656c69>2.698 F<762d>-.25 E 1.337 -<6572696e67206e657477>122 265.2 R 1.337<6f726b206d61696c2e>-.1 F 1.338 -<546865206e6f726d616c2062656861>6.338 F 1.338<76696f72206973207265717569 -726564206279206d6f7374206c6f63616c206d61696c6572732c2077686963682077696c -6c206e6f74>-.2 F<616c6c6f>122 277.2 Q 2.521<7774>-.25 G .021<686520656e> --2.521 F -.15<7665>-.4 G .021<6c6f70652073656e64657220616464726573732074 -6f2062652073657420756e6c65737320746865206d61696c65722069732072756e6e696e -67206173206461656d6f6e2e>.15 F .02<54686973208d6167206973>5.02 F -<69676e6f72656420696620746865>122 289.2 Q F0<53>2.5 E F1 -<8d6167206973207365742e>2.5 E 15<7055>102 305.4 S .497 -<73652074686520726f7574652d61646472207374796c65207265>-15 F -.15<7665> --.25 G .498<7273652d7061746820696e2074686520534d545020994d41494c204652> -.15 F .498<4f4d3a9a20636f6d6d616e6420726174686572207468616e206a757374> --.4 F .205<7468652072657475726e20616464726573733b20616c74686f7567682074 -68697320697320726571756972656420696e20524643203832312073656374696f6e2033 -2e312c206d616e>122 317.4 R 2.705<7968>-.15 G .205 -<6f73747320646f206e6f742070726f63657373>-2.705 F<7265>122 329.4 Q -.15 -<7665>-.25 G<7273652d70617468732070726f7065726c79>.15 E 5<2e52>-.65 G --2.15 -.25<65762065>-5 H<7273652d706174687320617265206f66>.25 E -<8c6369616c6c7920646973636f7572616765642062792052464320313132332e>-.25 E -6.94<50872054686973>102 345.6 R<6d61696c65722077>2.5 E -<616e74732061209952657475726e2d50>-.1 E<6174683a9a206c696e652e>-.15 E 15 -<7157>102 361.8 S .068 -<68656e20616e20616464726573732074686174207265736f6c76>-15 F .069 -<657320746f2074686973206d61696c65722069732076>-.15 F .069<6572698c656420 -28534d5450205652465920636f6d6d616e64292c2067656e657261746520323530>-.15 -F -<726573706f6e73657320696e7374656164206f662032353220726573706f6e7365732e> -122 373.8 Q<546869732077696c6c20696d706c79207468617420746865206164647265 -7373206973206c6f63616c2e>5 E 16.67<7253>102 390 S<616d65206173>-16.67 E -F0<66>2.5 E F1 2.5<2c62>C<75742073656e64732061>-2.7 E F02.5 E F1 -<8d61672e>2.5 E 13.33<524f>102 406.2 S .67<70656e20534d545020636f6e6e65 -6374696f6e732066726f6d206120997365637572659a20706f72742e>-13.33 F .669 -<53656375726520706f727473206172656e27>5.669 F 3.169<7428>-.18 G .669 -<7365637572652c2074686174206973292065>-3.169 F .669<7863657074206f6e> --.15 F .639<554e4958206d616368696e65732c20736f20697420697320756e636c6561 -7220746861742074686973206164647320616e>122 418.2 R<797468696e672e>-.15 E -F2<73656e646d61696c>5.639 E F1 .64 -<6d7573742062652072756e6e696e6720617320726f6f7420746f>3.14 F -<62652061626c6520746f207573652074686973208d61672e>122 430.2 Q 16.11 -<7353>102 446.4 S -<747269702071756f7465206368617261637465727320282220616e64205c29206f66> --16.11 E 2.5<666f>-.25 G 2.5<6674>-2.5 G<68652061646472657373206265666f -72652063616c6c696e6720746865206d61696c6572>-2.5 E<2e>-.55 E 14.44<5344> -102 462.6 S<6f6e27>-14.44 E 3.332<7472>-.18 G .832<65736574207468652075 -7365726964206265666f72652063616c6c696e6720746865206d61696c6572>-3.332 F -5.831<2e54>-.55 G .831<6869732077>-5.831 F .831 -<6f756c64206265207573656420696e20612073656375726520656e>-.1 F -<7669726f6e6d656e74>-.4 E<7768657265>122 474.6 Q F2<73656e646d61696c> -3.317 E F1 .817<72616e20617320726f6f742e>3.317 F .817 -<5468697320636f756c64206265207573656420746f2061>5.817 F -.2<766f>-.2 G -.817<696420666f72>.2 F .817<676564206164647265737365732e>-.18 F .817 -<496620746865>5.817 F F0<553d>3.317 E F1 .818<8c656c64206973>3.317 F<61 -6c736f2073706563698c65642c2074686973208d61672063617573657320746865206566> -122 486.6 Q<6665637469>-.25 E .3 -.15<76652075>-.25 H -<73657220696420746f2062652073657420746f20746861742075736572>.15 E<2e> --.55 E 15<7555>102 502.8 S .726 -<7070657220636173652073686f756c642062652070726573657276>-15 F .725 -<656420696e2075736572206e616d657320666f722074686973206d61696c6572>-.15 F -5.725<2e53>-.55 G .725<74616e646172647320726571756972652070726573657276> --5.725 F<6174696f6e>-.25 E .748<6f66206361736520696e20746865206c6f63616c -2070617274206f66206164647265737365732c2065>122 514.8 R .748<786365707420 -666f722074686f7365206164647265737320666f7220776869636820796f757220737973 -74656d2061636365707473>-.15 F<726573706f6e736962696c697479>122 526.8 Q -5.151<2e52>-.65 G .151<464320323134322070726f>-5.151 F .151<766964657320 -61206c6f6e67206c697374206f66206164647265737365732077686963682073686f756c -64206265206361736520696e73656e73697469>-.15 F -.15<7665>-.25 G 5.15 -<2e49>.15 G<66>-5.15 E .359<796f75207573652074686973208d61672c20796f7520 -6d61792062652076696f6c6174696e672052464320323134322e>122 538.8 R .36 -<4e6f7465207468617420706f73746d617374657220697320616c>5.359 F -.1<7761> --.1 G .36<797320747265617465642061732061>.1 F -<6361736520696e73656e73697469>122 550.8 Q .3 -.15<76652061>-.25 H -<646472657373207265>.15 E -.05<6761>-.15 G -<72646c657373206f662074686973208d61672e>.05 E 12.78<5554>102 567 S -<686973206d61696c65722077>-12.78 E<616e747320555543502d7374796c65209946 -726f6d9a206c696e65732077697468207468652075676c79209972656d6f74652066726f -6d203c686f73743e9a206f6e2074686520656e642e>-.1 E 12.78<7754>102 583.2 S -.607<68652075736572206d757374206861>-12.78 F .907 -.15<766520612076>-.2 -H .606 -<616c6964206163636f756e74206f6e2074686973206d616368696e652c20692e652e2c> --.1 F F2 -.1<6765>3.106 G<7470776e616d>.1 E F1 .606 -<6d75737420737563636565642e>3.106 F .606<4966206e6f742c20746865>5.606 F -1.233<6d61696c20697320626f756e6365642e>122 595.2 R 1.233 -<53656520616c736f20746865>6.233 F F0<4d61696c426f784461746162617365> -3.733 E F1 3.733<6f7074696f6e2e2054686973>3.733 F 1.233 -<697320726571756972656420746f2067657420992e666f7277>3.733 F<6172649a>-.1 -E<6361706162696c697479>122 607.2 Q<2e>-.65 E 10.56<5749>102 623.4 S<676e -6f7265206c6f6e67207465726d20686f73742073746174757320696e666f726d6174696f -6e20287365652053656374696f6e202250657273697374656e7420486f73742053746174 -757320496e666f726d6174696f6e22292e>-10.56 E 7.5<78872054686973>102 639.6 -R<6d61696c65722077>2.5 E -<616e74732061209946756c6c2d4e616d653a9a20686561646572206c696e652e>-.1 E -12.78<5854>102 655.8 S .512<686973206d61696c65722077>-12.78 F .512<616e -747320746f20757365207468652068696464656e20646f7420616c676f726974686d2061 -732073706563698c656420696e20524643203832313b206261736963616c6c79>-.1 F -3.011<2c61>-.65 G .811 -.15<6e79206c>-3.011 H<696e65>.15 E<6265>122 -667.8 Q .796<67696e6e696e672077697468206120646f742077696c6c206861>-.15 F -1.096 -.15<76652061>-.2 H 3.296<6e65>.15 G .797<7874726120646f7420707265 -70656e6465642028746f20626520737472697070656420617420746865206f7468657220 -656e64292e>-3.446 F<54686973>5.797 E<696e73757265732074686174206c696e65 -7320696e20746865206d65737361676520636f6e7461696e696e67206120646f74207769 -6c6c206e6f74207465726d696e61746520746865206d657373616765207072656d617475 -72656c79>122 679.8 Q<2e>-.65 E 15.56<7a52>102 696 S .965 -<756e204c6f63616c204d61696c2054>-15.56 F .965 -<72616e736665722050726f746f636f6c20284c4d545029206265747765656e>-.35 F -F2<73656e646d61696c>3.465 E F1 .965 -<616e6420746865206c6f63616c206d61696c6572>3.465 F 5.965<2e54>-.55 G .965 -<6869732069732061>-5.965 F -.25<7661>122 708 S .167<7269616e74206f6e2053 -4d54502064658c6e656420696e2052464320323033332074686174206973207370656369 -8c63616c6c792064657369676e656420666f722064656c69>.25 F -.15<7665>-.25 G -.167<727920746f2061206c6f63616c206d61696c2d>.15 F<626f782e>122 720 Q 0 -Cg EP -%%Page: 58 54 +/F0 10/Times-Bold@0 SF 193.36(SMM:08-18 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF(cd /v)157 +96 Q(ar/spool)-.25 E(mv mqueue omqueue; mkdir mqueue; chmod 0700 mqueue) +157 108 Q -1.1(Yo)117 124.2 S 2.709(us)1.1 G .209(hould then kill the e) +-2.709 F .209(xisting daemon \(since it will still be processing in the\ + old queue direc-)-.15 F(tory\) and create a ne)117 136.2 Q 2.5(wd)-.25 +G(aemon.)-2.5 E 1.6 -.8(To r)142 152.4 T +(un the old mail queue, issue the follo).8 E(wing command:)-.25 E +(/usr/sbin/sendmail \255C /etc/mail/queue.cf \255q)157 168.6 Q(The)117 +184.8 Q F03.312 E F1 .813 +(\215ag speci\214es an alternate con\214guration \214le)3.312 F F0 +(queue.cf)3.313 E F1 .813(which should refer to the mo)3.313 F -.15(ve) +-.15 G(d).15 E(queue directory)117 196.8 Q 2.5(OQ)157 213 S +(ueueDirectory=/v)-2.5 E(ar/spool/omqueue)-.25 E .649(and the)117 229.2 +R F03.149 E F1 .649(\215ag says to just run e)3.149 F -.15(ve)-.25 +G .648(ry job in the queue.).15 F -1.1(Yo)5.648 G 3.148(uc)1.1 G .648 +(an also specify the mo)-3.148 F -.15(ve)-.15 G 3.148(dq).15 G(ueue) +-3.148 E(directory on the command line)117 241.2 Q +(/usr/sbin/sendmail \255oQ/v)157 257.4 Q(ar/spool/omqueue \255q)-.25 E +-.2(bu)117 273.6 S 3.235(tt).2 G .735(his requires that you do not ha) +-3.235 F 1.036 -.15(ve q)-.2 H .736 +(ueue groups in the con\214guration \214le, because those are).15 F +1.071(not subdirectories of the mo)117 285.6 R -.15(ve)-.15 G 3.571(dd) +.15 G(irectory)-3.571 E 6.071(.S)-.65 G 1.071(ee the section about `) +-6.071 F 1.07(`Queue Group Declaration')-.74 F(')-.74 E .011 +(for details; you most lik)117 297.6 R .011(ely need a dif)-.1 F .012 +(ferent con\214guration \214le to correctly deal with this problem.)-.25 +F(Ho)117 309.6 Q(we)-.25 E -.15(ve)-.25 G 1.818 -.4(r, a p).15 H 1.018 +(roper con\214guration of queue groups should a).4 F -.2(vo)-.2 G 1.017 +(id \214lling up queue directories, so).2 F .367(you shouldn')117 321.6 +R 2.867(tr)-.18 G .367(un into this problem.)-2.867 F .367(If you ha) +5.367 F .668 -.15(ve a t)-.2 H(endenc).15 E 2.868(yt)-.15 G -2.1 -.25 +(ow a)-2.868 H .368(rd v).25 F -.1(oy)-.2 G .368 +(eurism, you can use the).1 F F0117 333.6 Q F1(\215ag to w)2.5 E +(atch what is going on.)-.1 E +(When the queue is \214nally emptied, you can remo)142 349.8 Q .3 -.15 +(ve t)-.15 H(he directory:).15 E(rmdir /v)157 366 Q(ar/spool/omqueue) +-.25 E F0 2.5(2.3.6. Quarantined)102 394.2 R(Queue Items)2.5 E F1 1.183 +(It is possible to "quarantine" mail messages, otherwise kno)142 410.4 R +1.182(wn as en)-.25 F -.15(ve)-.4 G 3.682(lopes. En).15 F -.15(ve)-.4 G +(lopes).15 E .097(\(queue \214les\) are stored b)117 422.4 R .097 +(ut not considered for deli)-.2 F -.15(ve)-.25 G .098 +(ry or display unless the "quarantine" state of).15 F 1.237(the en)117 +434.4 R -.15(ve)-.4 G 1.236(lope is undone or deli).15 F -.15(ve)-.25 G +1.236(ry or display of quarantined items is requested.).15 F +(Quarantined)6.236 E 1.07(messages are tagged by using a dif)117 446.4 R +1.07(ferent name for the queue \214le, 'hf)-.25 F 3.57('i).55 G 1.07 +(nstead of 'qf)-3.57 F 1.07(', and by).55 F +(adding the quarantine reason to the queue \214le.)117 458.4 Q(Deli)142 +474.6 Q -.15(ve)-.25 G .323 +(ry or display of quarantined items can be requested using the).15 F F0 +(\255qQ)2.823 E F1 .322(\215ag to)2.823 F/F2 10/Times-Italic@0 SF +(sendmail)2.822 E F1(or)117 486.6 Q F2(mailq)4.277 E F1 6.777(.A)C +(dditionally)-6.777 E 4.277(,m)-.65 G 1.778 +(essages already in the queue can be quarantined or unquarantined)-4.277 +F(using the ne)117 498.6 Q(w)-.25 E F02.5 E F1 +(\215ag to sendmail.)2.5 E -.15(Fo)5 G 2.5(re).15 G(xample,)-2.65 E +(sendmail -Qreason -q[!][I|R|S][matchstring])157 514.8 Q .875(Quarantin\ +es the normal queue items matching the criteria speci\214ed by the)117 +531 R F0(-q[!][I|R|S][match-)3.374 E(string])117 543 Q F1 +(using the reason gi)2.5 E -.15(ve)-.25 G 2.5(no).15 G 2.5(nt)-2.5 G(he) +-2.5 E F02.5 E F1 2.5(\215ag. Lik)2.5 F -.25(ew)-.1 G(ise,).25 E +(sendmail -qQ -Q[reason] -q[!][I|R|S|Q][matchstring])157 559.2 Q 1.164(\ +Change the quarantine reason for the quarantined items matching the cri\ +teria speci\214ed by the)117 575.4 R F0(-q[!][I|R|S|Q][matchstring])117 +587.4 Q F1(using the reason gi)2.5 E -.15(ve)-.25 G 2.5(no).15 G 2.5(nt) +-2.5 G(he)-2.5 E F02.5 E F1 2.5(\215ag. If)2.5 F +(there is no reason,)2.5 E .757(unquarantine the matching items and mak) +119.5 599.4 R 3.257(et)-.1 G .757(hem normal queue items.)-3.257 F .757 +(Note that the)5.757 F F0(\255qQ)3.257 E F1(\215ag)3.257 E(tells sendma\ +il to operate on quarantined items instead of normal items.)117 611.4 Q +F0 2.5(2.4. Disk)87 635.4 R(Based Connection Inf)2.5 E(ormation)-.25 E +F2(Sendmail)127 651.6 Q F1 .596(stores a lar)3.096 F .597 +(ge amount of information about each remote system it has connected to) +-.18 F .003(in memory)102 663.6 R 2.503(.I)-.65 G 2.503(ti)-2.503 G +2.503(sp)-2.503 G .002(ossible to preserv)-2.503 F 2.502(es)-.15 G .002 +(ome of this information on disk as well, by using the)-2.502 F F0 +(HostSta-)2.502 E(tusDir)102 675.6 Q(ectory)-.18 E F1 .229 +(option, so that it may be shared between se)2.729 F -.15(ve)-.25 G .229 +(ral in).15 F -.2(vo)-.4 G .23(cations of).2 F F2(sendmail)2.73 E F1 +5.23(.T)C .23(his allo)-5.23 F(ws)-.25 E .831(mail to be queued immedia\ +tely or skipped during a queue run if there has been a recent f)102 +687.6 R .831(ailure in)-.1 F .371(connecting to a remote machine.)102 +699.6 R .371 +(Note: information about a remote system is stored in a \214le whose) +5.371 F .694(pathname consists of the components of the hostname in re) +102 711.6 R -.15(ve)-.25 G .693(rse order).15 F 5.693(.F)-.55 G .693 +(or e)-5.843 F .693(xample, the informa-)-.15 F 1.102(tion for)102 723.6 +R F0(host.example.com)3.602 E F1 1.102(is stored in)3.602 F F0 +(com./example./host)3.602 E F1 6.103(.F)C 1.103(or top-le)-6.253 F -.15 +(ve)-.25 G 3.603(ld).15 G 1.103(omains lik)-3.603 F(e)-.1 E F0(com)3.603 +E F1(this)3.603 E 0 Cg EP +%%Page: 19 15 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d35382053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF 13.89<5a41>102 96 S<70706c79204469616c44656c6179 -20286966207365742920746f2074686973206d61696c6572>-13.89 E<2e>-.55 E 15 -<3044>102 112.2 S<6f6e27>-15 E 3.607<746c>-.18 G 1.106<6f6f6b207570204d -58207265636f72647320666f7220686f7374732073656e742076696120534d54502f4c4d -5450>-3.607 F 6.106<2e44>-1.11 G 3.606<6f6e>-6.106 G 1.106 -<6f74206170706c79>-3.606 F F0 -.25<4661>3.606 G -<6c6c6261636b4d58686f7374>.25 E F1<656974686572>122 124.2 Q<2e>-.55 E 15 -<3144>102 140.4 S<6f6e27>-15 E 2.5<7473>-.18 G<656e64206e756c6c20636861 -726163746572732028275c30272920746f2074686973206d61696c6572>-2.5 E<2e> --.55 E 15<3244>102 156.6 S<6f6e27>-15 E 3.032<7475>-.18 G .532 -<73652045534d54502065>-3.032 F -.15<7665>-.25 G 3.032<6e69>.15 G 3.032 -<666f>-3.032 G -.25<6666>-3.032 G .532 -<657265643b20746869732069732075736566756c20666f722062726f6b>.25 F .533 -<656e2073797374656d732074686174206f66>-.1 F .533<6665722045534d54502062> --.25 F .533<75742066>-.2 F<61696c>-.1 E -<6f6e2045484c4f2028776974686f7574207265636f>122 168.6 Q -.15<7665>-.15 G -<72696e67207768656e2048454c4f206973207472696564206e65>.15 E<7874292e> --.15 E 15<3345>102 184.8 S .002 -<7874656e6420746865206c697374206f66206368617261637465727320636f6e>-15 F --.15<7665>-.4 G .001 -<7274656420746f203d5858206e6f746174696f6e207768656e20636f6e>.15 F -.15 -<7665>-.4 G .001 -<7274696e6720746f2051756f7465642d5072696e7461626c6520746f>.15 F .977 -<696e636c7564652074686f7365207468617420646f6e27>122 196.8 R 3.478<746d> --.18 G .978<617020636c65616e6c79206265747765656e20415343494920616e642045 -42434449432e>-3.478 F .978<55736566756c20696620796f75206861>5.978 F -1.278 -.15<76652049>-.2 H<424d>.15 E -<6d61696e6672616d6573206f6e20736974652e>122 208.8 Q 15<3549>102 225 S -2.717<666e>-15 G 2.717<6f61>-2.717 G .217<6c69617365732061726520666f756e -6420666f72207468697320616464726573732c2070617373207468652061646472657373 -207468726f7567682072756c65736574203520666f7220706f737369626c6520616c7465 -726e617465>-2.717 F 2.5<7265736f6c7574696f6e2e2054686973>122 237 R -<697320696e74656e64656420746f20666f7277>2.5 E -<61726420746865206d61696c20746f20616e20616c7465726e6174652064656c69>-.1 -E -.15<7665>-.25 G<72792073706f742e>.15 E 15<3653>102 253.2 S -<74726970206865616465727320746f207365>-15 E -.15<7665>-.25 G 2.5<6e62> -.15 G<6974732e>-2.5 E 15<3753>102 269.4 S 1.14 -<7472697020616c6c206f757470757420746f207365>-15 F -.15<7665>-.25 G 3.64 -<6e62>.15 G 3.64<6974732e2054686973>-3.64 F 1.14<69732074686520646566> -3.64 F 1.141<61756c7420696620746865>-.1 F F0<4c>3.641 E F1 1.141 -<8d6167206973207365742e>3.641 F 1.141 -<4e6f7465207468617420636c656172696e672074686973>6.141 F .295 -<6f7074696f6e206973206e6f7420737566>122 281.4 R .295<8c6369656e7420746f -206765742066756c6c20656967687420626974206461746120706173736564207468726f -756768>-.25 F/F2 10/Times-Italic@0 SF<73656e646d61696c>2.795 E F1 5.295 -<2e49>C 2.795<6674>-5.295 G<6865>-2.795 E F0<37>2.795 E F1 .295 -<6f7074696f6e206973207365742c>2.795 F .716 -<7468697320697320657373656e7469616c6c7920616c>122 293.4 R -.1<7761>-.1 G -.717<7973207365742c2073696e63652074686520656967687468206269742077>.1 F -.717<6173207374726970706564206f6e20696e7075742e>-.1 F .717 -<4e6f746520746861742074686973206f7074696f6e>5.717 F<77696c6c206f6e6c7920 -696d70616374206d657373616765732074686174206469646e27>122 305.4 Q 2.5 -<7468>-.18 G -2.25 -.2<61762065>-2.5 H<38>2.7 E/F3 10/Symbol SFA F1 -2.5<3762>C<6974204d494d4520636f6e>-2.5 E -.15<7665>-.4 G -<7273696f6e7320706572666f726d65642e>.15 E 15<3849>102 321.6 S 3.783 -<6673>-15 G 1.283<65742c2069742069732061636365707461626c6520746f2073656e -6420656967687420626974206461746120746f2074686973206d61696c65723b20746865 -20757375616c20617474656d707420746f20646f2038>-3.783 F F3A F1 3.782 -<3762>C<6974>-3.782 E<4d494d4520636f6e>122 333.6 Q -.15<7665>-.4 G -<7273696f6e732077696c6c2062652062797061737365642e>.15 E 15<3949>102 -349.8 S 2.704<6673>-15 G .204<65742c20646f>-2.704 F F2<6c696d69746564> -2.704 E F1<37>2.704 E F3A F1 2.704<3862>C .204 -<6974204d494d4520636f6e>-2.704 F -.15<7665>-.4 G 2.704 -<7273696f6e732e205468657365>.15 F<636f6e>2.704 E -.15<7665>-.4 G .205 -<7273696f6e7320617265206c696d6974656420746f207465>.15 F .205 -<78742f706c61696e20646174612e>-.15 F 17.22<3a43>102 366 S .982 -<6865636b2061646472657373657320746f2073656520696620746865>-17.22 F 3.482 -<7962>-.15 G -.15<6567>-3.482 G .982 -<696e20993a696e636c7564653a9a3b20696620746865>.15 F 3.482<7964>-.15 G -.982<6f2c20636f6e>-3.482 F -.15<7665>-.4 G .982 -<7274207468656d20746f2074686520992a696e636c7564652a9a>.15 F -<6d61696c6572>122 378 Q<2e>-.55 E 18<7c43>102 394.2 S -<6865636b2061646472657373657320746f2073656520696620746865>-18 E 2.5 -<7962>-.15 G -.15<6567>-2.5 G -<696e2077697468206120607c273b20696620746865>.15 E 2.5<7964>-.15 G -<6f2c20636f6e>-2.5 E -.15<7665>-.4 G -<7274207468656d20746f20746865209970726f679a206d61696c6572>.15 E<2e>-.55 -E 17.22<2f43>102 410.4 S -<6865636b2061646472657373657320746f2073656520696620746865>-17.22 E 2.5 -<7962>-.15 G -.15<6567>-2.5 G -<696e2077697468206120602f273b20696620746865>.15 E 2.5<7964>-.15 G -<6f2c20636f6e>-2.5 E -.15<7665>-.4 G -<7274207468656d20746f2074686520992a8c6c652a9a206d61696c6572>.15 E<2e> --.55 E 10.79<404c>102 426.6 S<6f6f6b2075702061646472657373657320696e2074 -686520757365722064617461626173652e>-10.79 E 11.67<2544>102 442.8 S 3.868 -<6f6e>-11.67 G 1.368<6f7420617474656d70742064656c69>-3.868 F -.15<7665> --.25 G 1.369<7279206f6e20696e697469616c2072656365697074206f662061206d65 -7373616765206f72206f6e2071756575652072756e7320756e6c65737320746865207175 -65756564>.15 F<6d6573736167652069732073656c6563746564207573696e67206f6e -65206f6620746865202d71492f2d71522f2d71532071756575652072756e206d6f64698c -657273206f7220616e204554524e20726571756573742e>122 454.8 Q 16.67<2144> -102 471 S 1.29 -<697361626c6520616e204d48206861636b20746861742064726f707320616e2065> --16.67 F 1.289<78706c696369742046726f6d3a206865616465722069662069742069 -73207468652073616d6520617320776861742073656e646d61696c>-.15 F -.1<776f> -122 483 S<756c642067656e65726174652e>.1 E .267 -<436f6e8c6775726174696f6e208c6c6573207072696f7220746f206c65>127 499.2 R --.15<7665>-.25 G 2.768<6c3661>.15 G .268<7373756d65207468652060>-2.768 F --1.11<4127>-.8 G 2.768<2c60>1.11 G .268<77272c206035272c20603a272c20607c -272c20602f272c20616e6420604027206f7074696f6e73206f6e20746865>-2.768 F -<6d61696c6572206e616d656420996c6f63616c9a2e>102 511.2 Q .306<546865206d -61696c6572207769746820746865207370656369616c206e616d6520996572726f729a20 -63616e206265207573656420746f2067656e657261746520612075736572206572726f72> -127 527.4 R 5.305<2e54>-.55 G .305<686520286f7074696f6e616c29>-5.305 F -.323<686f7374208c656c6420697320616e2065>102 539.4 R .323<78697420737461 -74757320746f2062652072657475726e65642c20616e64207468652075736572208c656c -642069732061206d65737361676520746f206265207072696e7465642e>-.15 F .324 -<5468652065>5.324 F .324<786974207374612d>-.15 F .891 -<747573206d6179206265206e756d65726963206f72206f6e65206f66207468652076> -102 551.4 R .891<616c75657320555341>-.25 F .891 -<47452c204e4f555345522c204e4f484f5354>-.4 F 3.39<2c55>-.74 G -.35<4e41> --3.39 G -1.35<5641>-1 G .89<494c41424c452c20534f4654>1.35 F<2d>-.92 E --1.2<5741>102 563.4 S 1.141<52452c2054454d5046>1.2 F 1.141 -<41494c2c205052>-.74 F -1.88 -.4<4f54204f>-.4 H 1.141<434f4c2c206f722043 -4f4e46494720746f2072657475726e2074686520636f72726573706f6e64696e67204558 -5f2065>.4 F 1.142<78697420636f64652c206f7220616e>-.15 F .288<656e68616e -636564206572726f7220636f64652061732064657363726962656420696e205246432031 -3839332c>102 575.4 R F2 .288 -<456e68616e636564204d61696c2053797374656d2053746174757320436f6465732e> -2.788 F F1 -.15<466f>5.287 G 2.787<7265>.15 G<78616d706c652c>-2.937 E -<74686520656e7472793a>102 587.4 Q -<24236572726f72202440204e4f484f535420243a20486f737420756e6b6e6f>142 -603.6 Q<776e20696e207468697320646f6d61696e>-.25 E .145<6f6e207468652052 -4853206f6620612072756c652077696c6c206361757365207468652073706563698c6564 -206572726f7220746f2062652067656e65726174656420616e64207468652099486f7374 -20756e6b6e6f>102 619.8 R .146<776e9a2065>-.25 F .146<786974207374612d> --.15 F .491<74757320746f2062652072657475726e656420696620746865204c485320 -6d6174636865732e>102 631.8 R .491<54686973206d61696c6572206973206f6e6c79 -2066756e6374696f6e616c20696e2072756c657365747320302c20352c206f72206f6e65 -206f6620746865>5.491 F 1.81<636865636b5f2a2072756c65736574732e>102 643.8 -R 1.81<54686520686f7374208c656c642063616e20616c736f20636f6e7461696e2074 -6865207370656369616c20746f6b>6.81 F<656e>-.1 E F0<71756172616e74696e65> -4.31 E F1 1.81<776869636820696e73747275637473>4.31 F<73656e646d61696c20 -746f2071756172616e74696e65207468652063757272656e74206d6573736167652e>102 -655.8 Q .257<546865206d61696c6572207769746820746865207370656369616c206e -616d652099646973636172649a2063617573657320616e>127 672 R 2.756<796d>-.15 -G .256<61696c2073656e7420746f20697420746f206265206469736361726465642062> --2.756 F .256<7574206f74682d>-.2 F 1.313<657277697365207472656174656420 -61732074686f7567682069742077657265207375636365737366756c6c792064656c69> -102 684 R -.15<7665>-.25 G 3.813<7265642e2054686973>.15 F 1.314 -<6d61696c65722063616e6e6f74206265207573656420696e2072756c6573657420302c> -3.813 F<6f6e6c7920696e207468652076>102 696 Q -<6172696f7573206164647265737320636865636b696e672072756c65736574732e>-.25 -E .468<546865206d61696c6572206e616d656420996c6f63616c9a>127 712.2 R F2 -<6d757374>2.968 E F1 .468<62652064658c6e656420696e2065>2.968 F -.15 -<7665>-.25 G .468<727920636f6e8c6775726174696f6e208c6c652e>.15 F .468 -<54686973206973207573656420746f2064656c69>5.468 F -.15<7665>-.25 G<72> -.15 E .25<6c6f63616c206d61696c2c20616e6420697320747265617465642073706563 -69616c6c7920696e207365>102 724.2 R -.15<7665>-.25 G .25<72616c2077>.15 F -2.75<6179732e204164646974696f6e616c6c79>-.1 F 2.75<2c74>-.65 G .25 -<68726565206f74686572206d61696c657273206e616d6564209970726f679a2c>-2.75 -F 0 Cg EP -%%Page: 59 55 +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-19)195.86 E/F1 10/Times-Roman@0 SF 1.382(can create a lar)102 96 +R 1.381(ge number of subdirectories which on some \214lesystems can e) +-.18 F 1.381(xhaust some limits.)-.15 F(Moreo)102 108 Q -.15(ve)-.15 G +2.432 -.4(r, t).15 H 1.632(he performance of lookups in directory with \ +thousands of entries can be f).4 F 1.633(airly slo)-.1 F(w)-.25 E +(depending on the \214lesystem implementation.)102 120 Q 1.439 +(Additionally enabling)127 136.2 R F0(SingleThr)3.939 E(eadDeli)-.18 E +-.1(ve)-.1 G(ry).1 E F1 1.439(has the added ef)3.939 F 1.439 +(fect of single-threading mail)-.25 F(deli)102 148.2 Q -.15(ve)-.25 G +1.61(ry to a destination.).15 F 1.611 +(This can be quite helpful if the remote machine is running an SMTP)6.61 +F(serv)102 160.2 Q 1.011(er that is easily o)-.15 F -.15(ve)-.15 G 1.011 +(rloaded or cannot accept more than a single connection at a time, b).15 +F 1.01(ut can)-.2 F .458 +(cause some messages to be punted to a future queue run.)102 172.2 R +.458(It also applies to)5.458 F/F2 10/Times-Italic@0 SF(all)2.958 E F1 +.458(hosts, so setting this)2.958 F .282(because you ha)102 184.2 R .582 +-.15(ve o)-.2 H .281(ne machine on site that runs some softw).15 F .281 +(are that is easily o)-.1 F -.15(ve)-.15 G .281(rrun can cause mail).15 +F .315(to other hosts to be slo)102 196.2 R .315(wed do)-.25 F 2.815 +(wn. If)-.25 F .315(this option is set, you probably w)2.815 F .315 +(ant to set the)-.1 F F0(MinQueueAge)2.815 E F1 .872 +(option as well and run the queue f)102 208.2 R .871 +(airly frequently; this w)-.1 F .871 +(ay jobs that are skipped because another)-.1 F F2(sendmail)102 220.2 Q +F1 .363(is talking to the same host will be tried ag)2.863 F .364 +(ain quickly rather than being delayed for a long)-.05 F(time.)102 232.2 +Q 1.099 +(The disk based host information is stored in a subdirectory of the)127 +248.4 R F0(mqueue)3.598 E F1 1.098(directory called)3.598 F F0 +(.hoststat)102 262.4 Q/F3 7/Times-Roman@0 SF(7)-4 I F1 6.749(.R)4 K(emo) +-6.749 E 1.749(ving this directory and its subdirectories has an ef)-.15 +F 1.75(fect similar to the)-.25 F F2(pur)4.25 E -.1(ge)-.37 G(stat).1 E +F1 1.215(command and is completely safe.)102 274.4 R(Ho)6.215 E(we)-.25 +E -.15(ve)-.25 G -.4(r,).15 G F2(pur)4.115 E -.1(ge)-.37 G(stat).1 E F1 +1.215(only remo)3.715 F -.15(ve)-.15 G 3.715(se).15 G 1.215(xpired \(T) +-3.865 F(imeout.hoststatus\))-.35 E 3.539(data. The)102 286.4 R 1.039 +(information in these directories can be perused with the)3.539 F F2 +(hoststat)3.54 E F1 1.04(command, which will)3.54 F .065(indicate the h\ +ost name, the last access, and the status of that access.)102 298.4 R +.064(An asterisk in the left most col-)5.065 F(umn indicates that a)102 +310.4 Q F2(sendmail)2.5 E F1(process currently has the host lock)2.5 E +(ed for mail deli)-.1 E -.15(ve)-.25 G(ry).15 E(.)-.65 E .53 +(The disk based connection information is treated the same w)127 326.6 R +.53(ay as memory based connection)-.1 F .536 +(information for the purpose of timeouts.)102 338.6 R .536(By def)5.536 +F .536(ault, information about host f)-.1 F .536(ailures is v)-.1 F .536 +(alid for 30)-.25 F 2.5(minutes. This)102 350.6 R +(can be adjusted with the)2.5 E F0 -.18(Ti)2.5 G(meout.hoststatus).18 E +F1(option.)2.5 E 1.51 +(The connection information stored on disk may be e)127 366.8 R 1.51 +(xpired at an)-.15 F 4.01(yt)-.15 G 1.51(ime with the)-4.01 F F2(pur) +4.01 E -.1(ge)-.37 G(stat).1 E F1 2.093(command or by in)102 378.8 R -.2 +(vo)-.4 G 2.092(king sendmail with the).2 F F0(\255bH)4.592 E F1 4.592 +(switch. The)4.592 F 2.092(connection information may be)4.592 F(vie)102 +390.8 Q(wed with the)-.25 E F2(hoststat)2.5 E F1(command or by in)2.5 E +-.2(vo)-.4 G(king sendmail with the).2 E F0(\255bh)2.5 E F1(switch.)2.5 +E F0 2.5(2.5. The)87 414.8 R(Ser)2.5 E(vice Switch)-.1 E F1 1.416(The i\ +mplementation of certain system services such as host and user name loo\ +kup is con-)127 431 R 1.322(trolled by the service switch.)102 443 R +1.321(If the host operating system supports such a switch, and sendmail) +6.322 F(kno)102 455 Q .383(ws about it,)-.25 F F2(sendmail)2.883 E F1 +.383(will use the nati)2.883 F .683 -.15(ve ve)-.25 H 2.883 +(rsion. Ultrix,).15 F .384(Solaris, and DEC OSF/1 are e)2.883 F(xamples) +-.15 E(of such systems)102 469 Q F3(8)-4 I F1(.)4 I .88(If the underlyi\ +ng operating system does not support a service switch \(e.g., SunOS 4.X\ +, HP-)127 485.2 R .212(UX, BSD\) then)102 497.2 R F2(sendmail)2.712 E F1 +.212(will pro)2.712 F .212(vide a stub implementation.)-.15 F(The)5.211 +E F0(Ser)2.711 E(viceSwitchFile)-.1 E F1 .211(option points)2.711 F .937 +(to the name of a \214le that has the service de\214nitions.)102 509.2 R +.937(Each line has the name of a service and the)5.937 F +(possible implementations of that service.)102 521.2 Q -.15(Fo)5 G 2.5 +(re).15 G(xample, the \214le:)-2.65 E 12.94(hosts dns)142 537.4 R +(\214les nis)2.5 E 6.84(aliases \214les)142 549.4 R(nis)2.5 E .329 +(will ask)102 565.6 R F2(sendmail)2.829 E F1 .328 +(to look for hosts in the Domain Name System \214rst.)2.829 F .328 +(If the requested host name is)5.328 F .379 +(not found, it tries local \214les, and if that f)102 577.6 R .379 +(ails it tries NIS.)-.1 F(Similarly)5.379 E 2.879(,w)-.65 G .379 +(hen looking for aliases it will)-2.879 F +(try the local \214les \214rst follo)102 589.6 Q(wed by NIS.)-.25 E .494 +(Notice: since)127 605.8 R F2(sendmail)2.994 E F1 .493 +(must access MX records for correct operation, it will use DNS if it is) +2.993 F(con\214gured in the)102 617.8 Q F0(Ser)2.5 E(viceSwitchFile)-.1 +E F1 2.5(\214le. Hence)2.5 F(an entry lik)2.5 E(e)-.1 E 12.94 +(hosts \214les)142 634 R(dns)2.5 E(will not a)102 650.2 Q -.2(vo)-.2 G +(id DNS lookups e).2 E -.15(ve)-.25 G 2.5(ni).15 G 2.5(fah)-2.5 G +(ost can be found in /etc/hosts.)-2.5 E .32 LW 76 659.8 72 659.8 DL 80 +659.8 76 659.8 DL 84 659.8 80 659.8 DL 88 659.8 84 659.8 DL 92 659.8 88 +659.8 DL 96 659.8 92 659.8 DL 100 659.8 96 659.8 DL 104 659.8 100 659.8 +DL 108 659.8 104 659.8 DL 112 659.8 108 659.8 DL 116 659.8 112 659.8 DL +120 659.8 116 659.8 DL 124 659.8 120 659.8 DL 128 659.8 124 659.8 DL 132 +659.8 128 659.8 DL 136 659.8 132 659.8 DL 140 659.8 136 659.8 DL 144 +659.8 140 659.8 DL 148 659.8 144 659.8 DL 152 659.8 148 659.8 DL 156 +659.8 152 659.8 DL 160 659.8 156 659.8 DL 164 659.8 160 659.8 DL 168 +659.8 164 659.8 DL 172 659.8 168 659.8 DL 176 659.8 172 659.8 DL 180 +659.8 176 659.8 DL 184 659.8 180 659.8 DL 188 659.8 184 659.8 DL 192 +659.8 188 659.8 DL 196 659.8 192 659.8 DL 200 659.8 196 659.8 DL 204 +659.8 200 659.8 DL 208 659.8 204 659.8 DL 212 659.8 208 659.8 DL 216 +659.8 212 659.8 DL/F4 5/Times-Roman@0 SF(7)93.6 670.2 Q/F5 8 +/Times-Roman@0 SF(This is the usual v)3.2 I(alue of the)-.2 E/F6 8 +/Times-Bold@0 SF(HostStatusDir)2 E(ectory)-.144 E F5 +(option; it can, of course, go an)2 E(ywhere you lik)-.12 E 2(ei)-.08 G +2(ny)-2 G(our \214lesystem.)-2 E F4(8)93.6 683.8 Q F5 .108 +(HP-UX 10 has service switch support, b)3.2 J .108 +(ut since the APIs are apparently not a)-.16 F -.2(va)-.16 G .107 +(ilable in the libraries).2 F/F7 8/Times-Italic@0 SF(sendmail)2.107 E F5 +.107(does not use the)2.107 F(nati)72 696.6 Q .24 -.12(ve s)-.2 H +(ervice switch in this release.).12 E 0 Cg EP +%%Page: 20 16 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3539>195.86 E -/F1 10/Times-Roman@0 SF .942<992a8c6c652a9a2c20616e6420992a696e636c7564 -652a9a206d61792062652064658c6e656420746f2074756e65207468652064656c69>102 -96 R -.15<7665>-.25 G .942<7279206f66206d6573736167657320746f2070726f67 -72616d732c208c6c65732c20616e64>.15 F -<3a696e636c7564653a206c69737473207265737065637469>102 108 Q -.15<7665> --.25 G<6c79>.15 E 5<2e54>-.65 G<6865>-5 E 2.5<7964>-.15 G<6566>-2.5 E -<61756c7420746f3a>-.1 E<4d70726f672c20503d2f62696e2f73682c20463d6c736f44 -71392c20543d444e532f5246433832322f582d556e69782c20413d736820ad63202475> -142 124.2 Q<4d2a8c6c652a2c20503d5b46494c455d2c20463d6c7344464d50456f7571 -392c20543d444e532f5246433832322f582d556e69782c20413d46494c45202475>142 -136.2 Q<4d2a696e636c7564652a2c20503d2f6465>142 148.2 Q -<762f6e756c6c2c20463d73752c20413d494e434c554445202475>-.25 E .466<427569 -6c74696e20706174686e616d657320617265205b46494c455d20616e64205b4950435d2c -2074686520666f726d6572206973207573656420666f722064656c69>127 168.6 R --.15<7665>-.25 G .467 -<727920746f208c6c65732c20746865206c617474657220666f72>.15 F<64656c69>102 -180.6 Q -.15<7665>-.25 G .12 -<72792076696120696e74657270726f6365737320636f6d6d756e69636174696f6e2e> -.15 F -.15<466f>5.12 G 2.62<726d>.15 G .12<61696c6572732074686174207573 -65205b4950435d20617320706174686e616d6520746865206172>-2.62 F .12 -<67756d656e742076>-.18 F<65632d>-.15 E .761<746f722028413d29206d75737420 -7374617274207769746820544350206f722046494c4520666f722064656c69>102 192.6 -R -.15<7665>-.25 G .761 -<727920766961206120544350206f72206120556e697820646f6d61696e20736f636b> -.15 F 3.261<65742e204966>-.1 F .761<544350206973>3.261 F .11 -<757365642c20746865207365636f6e64206172>102 204.6 R .109<67756d656e7420 -6d75737420626520746865206e616d65206f662074686520686f737420746f20636f6e74 -6163742e>-.18 F .109<4f7074696f6e616c6c792061207468697264206172>5.109 F -.109<67756d656e742063616e>-.18 F .575 -<6265207573656420746f2073706563696679206120706f72742c2074686520646566> -102 216.6 R .576<61756c7420697320736d74702028706f7274203235292e>-.1 F -.576<49662046494c4520697320757365642c20746865207365636f6e64206172>5.576 -F .576<67756d656e74206d757374>-.18 F -<626520746865206e616d65206f662074686520556e697820646f6d61696e20736f636b> -102 228.6 Q<65742e>-.1 E .669<496620746865206172>127 244.8 R .669 -<67756d656e742076>-.18 F .669 -<6563746f7220646f6573206e6f7420636f6e7461696e202475207468656e>-.15 F/F2 -10/Times-Italic@0 SF<73656e646d61696c>3.169 E F1 .668 -<77696c6c20737065616b20534d545020286f72204c4d545020696620746865>3.169 F< -6d61696c6572208d6167207a2069732073706563698c65642920746f20746865206d6169 -6c6572>102 256.8 Q<2e>-.55 E<4966206e6f20456f6c208c656c642069732064658c -6e65642c207468656e2074686520646566>127 273 Q<61756c7420697320225c725c6e -2220666f7220534d5450206d61696c65727320616e6420225c6e22206f66206f74686572 -732e>-.1 E .615<5468652053656e64657220616e6420526563697069656e74207265> -127 289.2 R .615<77726974696e672073657473206d61792065697468657220626520 -612073696d706c652072756c65736574206964206f72206d6179206265207477>-.25 F -3.116<6f69>-.1 G<6473>-3.116 E .576<736570617261746564206279206120736c61 -73683b20696620736f2c20746865208c727374207265>102 301.2 R .575 -<77726974696e6720736574206973206170706c69656420746f20656e>-.25 F -.15 -<7665>-.4 G .575 -<6c6f70652061646472657373657320616e6420746865207365636f6e64206973>.15 F -<6170706c69656420746f20686561646572732e>102 313.2 Q -<53657474696e6720616e>5 E 2.5<7976>-.15 G<616c756520746f207a65726f206469 -7361626c657320636f72726573706f6e64696e67206d61696c6572>-2.75 E -<2d73706563698c63207265>-.2 E<77726974696e672e>-.25 E .196<546865204469 -726563746f72792069732061637475616c6c79206120636f6c6f6e2d7365706172617465 -642070617468206f66206469726563746f7269657320746f20747279>127 329.4 R -5.197<2e46>-.65 G .197<6f722065>-5.347 F .197 -<78616d706c652c207468652064658c6e692d>-.15 F .104 -<74696f6e2099443d247a3a2f9a208c72737420747269657320746f2065>102 341.4 R --.15<7865>-.15 G .104<6375746520696e2074686520726563697069656e7427>.15 F -2.604<7368>-.55 G .104 -<6f6d65206469726563746f72793b2069662074686174206973206e6f742061>-2.604 F --.25<7661>-.2 G .103<696c61626c652c20697420747269657320746f>.25 F -.15 -<657865>102 353.4 S .816 -<6375746520696e2074686520726f6f74206f6620746865208c6c6573797374656d2e> -.15 F .816<5468697320697320696e74656e64656420746f2062652075736564206f6e -6c79206f6e20746865209970726f679a206d61696c6572>5.816 F 3.317<2c73>-.4 G -<696e6365>-3.317 E .009<736f6d65207368656c6c73202873756368206173>102 -365.4 R F2<637368>2.509 E F1 2.509<2972>C .009<656675736520746f2065> --2.509 F -.15<7865>-.15 G .009<6375746520696620746865>.15 F 2.509<7963> --.15 G .009 -<616e6e6f742072656164207468652063757272656e74206469726563746f7279>-2.509 -F 5.008<2e53>-.65 G .008<696e636520746865207175657565>-5.008 F<64697265 -63746f7279206973206e6f74206e6f726d616c6c79207265616461626c6520627920756e -707269>102 377.4 Q<76696c65>-.25 E<676564207573657273>-.15 E F2<637368> -2.5 E F1<7363726970747320617320726563697069656e74732063616e2066>2.5 E -<61696c2e>-.1 E 1.862 -<546865205573657269642073706563698c65732074686520646566>127 393.6 R -1.863 -<61756c74207573657220616e642067726f757020696420746f2072756e2061732c206f> --.1 F -.15<7665>-.15 G 1.863<72726964696e6720746865>.15 F F0 -<44656661756c7455736572>4.363 E F1 .098<6f7074696f6e2028712e76>102 405.6 -R 2.598<2e292e204966>-.65 F<746865>2.598 E F0<53>2.598 E F1 .098<6d6169 -6c6572208d616720697320616c736f2073706563698c65642c2074686973207573657220 -616e642067726f75702077696c6c2062652073657420617320746865206566>2.598 F -<6665637469>-.25 E .398 -.15<76652075>-.25 H<6964>.15 E .693 -<616e642067696420666f72207468652070726f636573732e>102 417.6 R .694 -<54686973206d6179206265206769>5.693 F -.15<7665>-.25 G 3.194<6e61>.15 G -<73>-3.194 E F2<757365723a6772>3.194 E<6f7570>-.45 E F1 .694<746f207365 -7420626f746820746865207573657220616e642067726f75702069643b20656974686572> -3.194 F .127<6d617920626520616e20696e7465>102 429.6 R .127 -<676572206f7220612073796d626f6c6963206e616d6520746f206265206c6f6f6b>-.15 -F .127<656420757020696e20746865>-.1 F F2<706173737764>2.627 E F1<616e64> -2.627 E F2<6772>2.627 E<6f7570>-.45 E F1 .126 -<8c6c6573207265737065637469>2.626 F -.15<7665>-.25 G<6c79>.15 E 5.126 -<2e49>-.65 G<66>-5.126 E .782<6f6e6c7920612073796d626f6c6963207573657220 -6e616d652069732073706563698c65642c207468652067726f757020696420696e207468 -65>102 441.6 R F2<706173737764>3.282 E F1 .782 -<8c6c6520666f7220746861742075736572206973207573656420617320746865>3.282 -F<67726f75702069642e>102 453.6 Q .545 -<5468652043686172736574208c656c642069732075736564207768656e20636f6e>127 -469.8 R -.15<7665>-.4 G .545<7274696e672061206d65737361676520746f204d49 -4d453b20746869732069732074686520636861726163746572207365742075736564>.15 -F .465<696e2074686520436f6e74656e742d54>102 481.8 R .465 -<7970653a20686561646572>-.8 F 5.465<2e49>-.55 G 2.965<6674>-5.465 G .465 -<686973206973206e6f74207365742c20746865>-2.965 F F0 -<44656661756c7443686172736574>2.966 E F1 .466 -<6f7074696f6e20697320757365642c20616e642069662074686174206973206e6f74> -2.966 F .258<7365742c207468652076>102 493.8 R .258 -<616c75652099756e6b6e6f>-.25 F .258<776e2d386269749a20697320757365642e> --.25 F F0 -1.2<5741>5.257 G<524e494e473a>1.2 E F1 .257 -<74686973208c656c64206170706c69657320746f207468652073656e64657227>2.757 -F 2.757<736d>-.55 G<61696c6572>-2.757 E 2.757<2c6e>-.4 G .257 -<6f7420746865>-2.757 F<726563697069656e7427>102 505.8 Q 2.701<736d>-.55 -G<61696c6572>-2.701 E 5.201<2e46>-.55 G .201<6f722065>-5.351 F .201 -<78616d706c652c2069662074686520656e>-.15 F -.15<7665>-.4 G .202<6c6f7065 -2073656e6465722061646472657373206c6973747320616e2061646472657373206f6e20 -746865206c6f63616c206e657477>.15 F<6f726b>-.1 E .48 -<616e642074686520726563697069656e74206973206f6e20616e2065>102 517.8 R -.48<787465726e616c206e657477>-.15 F .48<6f726b2c207468652063686172616374 -6572207365742077696c6c206265207365742066726f6d2074686520436861727365743d -208c656c6420666f72>-.1 F<746865206c6f63616c206e657477>102 529.8 Q -<6f726b206d61696c6572>-.1 E 2.5<2c6e>-.4 G -<6f742074686174206f66207468652065>-2.5 E<787465726e616c206e657477>-.15 E -<6f726b206d61696c6572>-.1 E<2e>-.55 E .794<5468652054>127 546 R .795<79 -70653d208c656c64207365747320746865207479706520696e666f726d6174696f6e2075 -73656420696e204d494d45206572726f72206d657373616765732061732064658c6e6564 -20627920524643>-.8 F 2.805<313839342e204974>102 558 R .305 -<69732061637475616c6c792074687265652076>2.805 F .305 -<616c7565732073657061726174656420627920736c61736865733a20746865204d54> --.25 F .305<412d747970652028746861742069732c2074686520646573637269707469 -6f6e206f6620686f>-.93 F<77>-.25 E .083<686f73747320617265206e616d656429 -2c20746865206164647265737320747970652028746865206465736372697074696f6e20 -6f6620652d6d61696c20616464726573736573292c20616e642074686520646961676e6f -7374696320747970652028746865>102 570 R .143<6465736372697074696f6e206f66 -206572726f7220646961676e6f7374696320636f646573292e>102 582 R .143 -<45616368206f66207468657365206d7573742062652061207265>5.143 F .142 -<67697374657265642076>-.15 F .142<616c7565206f72206265>-.25 F .142 -<67696e2077697468209958ad9a2e>-.15 F<54686520646566>102 594 Q -<61756c742069732099646e732f7266633832322f736d74709a2e>-.1 E 1.175<546865 -206d3d208c656c642073706563698c657320746865206d6178696d756d206e756d626572 -206f66206d6573736167657320746f20617474656d707420746f2064656c69>127 610.2 -R -.15<7665>-.25 G 3.675<726f>.15 G 3.675<6e6173>-3.675 G<696e676c65> --3.675 E<534d5450206f72204c4d545020636f6e6e656374696f6e2e>102 622.2 Q -<54686520646566>5 E<61756c7420697320696e8c6e6974652e>-.1 E 1.545<546865 -20723d208c656c642073706563698c657320746865206d6178696d756d206e756d626572 -206f6620726563697069656e747320746f20617474656d707420746f2064656c69>127 -638.4 R -.15<7665>-.25 G 4.045<7269>.15 G 4.045<6e6173>-4.045 G -<696e676c65>-4.045 E<656e>102 650.4 Q -.15<7665>-.4 G 2.5 -<6c6f70652e204974>.15 F<646566>2.5 E<61756c747320746f203130302e>-.1 E -1.052<546865202f3d208c656c642073706563698c65732061206e65>127 666.6 R -3.552<7772>-.25 G 1.052 -<6f6f74206469726563746f727920666f7220746865206d61696c6572>-3.552 F 6.052 -<2e54>-.55 G 1.052<68652070617468206973206d6163726f2065>-6.052 F 1.052 -<7870616e64656420616e64>-.15 F .512<7468656e2070617373656420746f20746865 -20996368726f6f749a2073797374656d2063616c6c2e>102 678.6 R .512<5468652072 -6f6f74206469726563746f7279206973206368616e676564206265666f72652074686520 -4469726563746f7279208c656c64206973>5.512 F -<636f6e73756c746564206f722074686520756964206973206368616e6765642e>102 -690.6 Q .56<5468652057>127 706.8 R .56<6169743d208c656c642073706563698c -657320746865206d6178696d756d2074696d6520746f2077>-.8 F .561<61697420666f -7220746865206d61696c657220746f2072657475726e2061667465722073656e64696e67 -20616c6c>-.1 F<6461746120746f2069742e>102 718.8 Q -<54686973206170706c69657320746f206d61696c6572732074686174206861>5 E .3 --.15<76652062>-.2 H<65656e20666f726b>.15 E<6564206279>-.1 E F2 -<73656e646d61696c>2.5 E F1<2e>A 0 Cg EP -%%Page: 60 56 +/F0 10/Times-Bold@0 SF 193.36(SMM:08-20 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 1.269 +(Service switches are not completely inte)127 96 R 3.769(grated. F)-.15 +F 1.269(or e)-.15 F 1.269(xample, despite the f)-.15 F 1.27 +(act that the host)-.1 F .294(entry listed in the abo)102 108 R .594 +-.15(ve ex)-.15 H .293 +(ample speci\214es to look in NIS, on SunOS this w).15 F(on')-.1 E 2.793 +(th)-.18 G .293(appen because the)-2.793 F(system implementation of)102 +120 Q/F2 10/Times-Italic@0 SF -.1(ge)2.5 G(thostbyname).1 E F1 +(\(3\) doesn')1.666 E 2.5(tu)-.18 G(nderstand this.)-2.5 E F0 2.5 +(2.6. The)87 144 R(Alias Database)2.5 E F1 2.074(After recipient addres\ +ses are read from the SMTP connection or command line the)127 160.2 R +4.574(ya)-.15 G(re)-4.574 E .6(parsed by ruleset 0, which must resolv) +102 172.2 R 3.1(et)-.15 G 3.099(oa{)-3.1 G F2(mailer)-3.099 E F1(,)A F2 +(host)3.099 E F1(,)A F2(addr)3.099 E(ess)-.37 E F1 3.099(}t)C 3.099 +(riple. If)-3.099 F .599(the \215ags selected by)3.099 F(the)102 184.2 Q +F2(mailer)3.099 E F1 .599(include the)3.099 F F0(A)3.099 E F1 .599 +(\(aliasable\) \215ag, the)3.099 F F2(addr)3.099 E(ess)-.37 E F1 .6 +(part of the triple is look)3.099 F .6(ed up as the k)-.1 F .9 -.15 +(ey \()-.1 H(i.e.,).15 E 1.046 +(the left hand side\) in the alias database.)102 196.2 R 1.045 +(If there is a match, the address is deleted from the send)6.045 F .776 +(queue and all addresses on the right hand side of the alias are added \ +in place of the alias that w)102 208.2 R(as)-.1 E 2.683(found. This)102 +220.2 R .183(is a recursi)2.683 F .483 -.15(ve o)-.25 H .183(peration, \ +so aliases found in the right hand side of the alias are similarly).15 F +-.15(ex)102 232.2 S(panded.).15 E 3.718(The alias database e)127 248.4 R +3.718(xists in tw)-.15 F 6.218(of)-.1 G 6.218(orms. One)-6.218 F 3.718 +(is a te)6.218 F 3.718(xt form, maintained in the \214le)-.15 F F2 +(/etc/mail/aliases.)102 260.4 Q F1(The aliases are of the form)5 E +(name: name1, name2, ...)142 276.6 Q +(Only local names may be aliased; e.g.,)102 292.8 Q(eric@prep.ai.MIT)142 +309 Q(.EDU: eric@CS.Berk)-.74 E(ele)-.1 E -.65(y.)-.15 G(EDU).65 E 1.088 +(will not ha)102 327.2 R 1.388 -.15(ve t)-.2 H 1.088(he desired ef).15 F +1.088(fect \(e)-.25 F 1.088(xcept on prep.ai.MIT)-.15 F 1.088 +(.EDU, and the)-.74 F 3.588(yp)-.15 G 1.088(robably don')-3.588 F 3.587 +(tw)-.18 G 1.087(ant me\))-3.687 F/F3 7/Times-Roman@0 SF(9)-4 I F1(.)4 I +.986(Aliases may be continued by starting an)102 339.2 R 3.486(yc)-.15 G +.986(ontinuation lines with a space or a tab or by putting a)-3.486 F +.776(backslash directly before the ne)102 351.2 R 3.276(wline. Blank) +-.25 F .776(lines and lines be)3.276 F .776 +(ginning with a sharp sign \(\231#\232\) are)-.15 F(comments.)102 363.2 +Q .65(The second form is processed by the)127 381.4 R F2(ndbm)3.15 E F1 +(\(3\))1.666 E F3(10)-4 I F1 .65(or the Berk)3.15 4 N(ele)-.1 E 3.15(yD) +-.15 G 3.15(Bl)-3.15 G(ibrary)-3.15 E 5.651(.T)-.65 G .651 +(his form is in)-5.651 F .794(the \214le)102 393.4 R F2 +(/etc/mail/aliases.db)3.294 E F1 .794(\(if using NEWDB\) or)3.294 F F2 +(/etc/mail/aliases.dir)3.294 E F1(and)3.294 E F2(/etc/mail/aliases.pa) +3.294 E(g)-.1 E F1(\(if)3.294 E 1.126(using NDBM\).)102 405.4 R 1.126 +(This is the form that)6.126 F F2(sendmail)3.627 E F1 1.127 +(actually uses to resolv)3.627 F 3.627(ea)-.15 G 3.627(liases. This) +-3.627 F 1.127(technique is)3.627 F(used to impro)102 417.4 Q .3 -.15 +(ve p)-.15 H(erformance.).15 E +(The control of search order is actually set by the service switch.)127 +433.6 Q(Essentially)5 E 2.5(,t)-.65 G(he entry)-2.5 E 2.5(OA)142 449.8 S +(liasFile=switch:aliases)-2.5 E .927(is al)102 466 R -.1(wa)-.1 G .927(\ +ys added as the \214rst alias entry; also, the \214rst alias \214le nam\ +e without a class \(e.g., without).1 F .268(\231nis:\232 on the front\)\ + will be used as the name of the \214le for a `)102 478 R(`\214les')-.74 +E 2.769('e)-.74 G .269(ntry in the aliases switch.)-2.769 F -.15(Fo) +5.269 G(r).15 E -.15(ex)102 490 S +(ample, if the con\214guration \214le contains).15 E 2.5(OA)142 506.2 S +(liasFile=/etc/mail/aliases)-2.5 E(and the service switch contains)102 +522.4 Q 6.84(aliases nis)142 538.6 R(\214les nisplus)2.5 E 1.164(then a\ +liases will \214rst be searched in the NIS database, then in /etc/mail/\ +aliases, then in the NIS+)102 554.8 R(database.)102 566.8 Q -1.1(Yo)127 +583 S 2.5(uc)1.1 G(an also use)-2.5 E/F4 9/Times-Roman@0 SF(NIS)2.5 E F1 +(-based alias \214les.)A -.15(Fo)5 G 2.5(re).15 G +(xample, the speci\214cation:)-2.65 E 2.5(OA)142 599.2 S +(liasFile=/etc/mail/aliases)-2.5 E 2.5(OA)142 611.2 S +(liasFile=nis:mail.aliases@my)-2.5 E(.nis.domain)-.65 E .143(will \214r\ +st search the /etc/mail/aliases \214le and then the map named \231mail.\ +aliases\232 in \231my)102 627.4 R(.nis.domain\232.)-.65 E -.8(Wa)102 +639.4 S .59(rning: if you b).8 F .59(uild your o)-.2 F(wn)-.25 E F4(NIS) +3.09 E F1 .589(-based alias \214les, be sure to pro)B .589(vide the)-.15 +F F03.089 E F1 .589(\215ag to)3.089 F F2(mak)3.089 E(edbm)-.1 E F1 +(\(8\))A .159(to map upper case letters in the k)102 651.4 R -.15(ey)-.1 +G 2.659(st).15 G 2.659(ol)-2.659 G -.25(ow)-2.659 G .159 +(er case; otherwise, aliases with upper case letters in their).25 F +(names w)102 663.4 Q(on')-.1 E 2.5(tm)-.18 G(atch incoming addresses.) +-2.5 E .32 LW 76 673 72 673 DL 80 673 76 673 DL 84 673 80 673 DL 88 673 +84 673 DL 92 673 88 673 DL 96 673 92 673 DL 100 673 96 673 DL 104 673 +100 673 DL 108 673 104 673 DL 112 673 108 673 DL 116 673 112 673 DL 120 +673 116 673 DL 124 673 120 673 DL 128 673 124 673 DL 132 673 128 673 DL +136 673 132 673 DL 140 673 136 673 DL 144 673 140 673 DL 148 673 144 673 +DL 152 673 148 673 DL 156 673 152 673 DL 160 673 156 673 DL 164 673 160 +673 DL 168 673 164 673 DL 172 673 168 673 DL 176 673 172 673 DL 180 673 +176 673 DL 184 673 180 673 DL 188 673 184 673 DL 192 673 188 673 DL 196 +673 192 673 DL 200 673 196 673 DL 204 673 200 673 DL 208 673 204 673 DL +212 673 208 673 DL 216 673 212 673 DL/F5 5/Times-Roman@0 SF(9)93.6 683.4 +Q/F6 8/Times-Roman@0 SF(Actually)3.2 I 2(,a)-.52 G .24 -.12(ny m)-2 H +(ailer that has the `).12 E 1.776 -.888(A' m)-.64 H(ailer \215ag set wi\ +ll permit aliasing; this is normally limited to the local mailer).888 E +(.)-.44 E F5(10)93.6 697 Q F6(The)3.2 I/F7 8/Times-Italic@0 SF(gdbm)2 E +F6(package does not w)2 E(ork.)-.08 E 0 Cg EP +%%Page: 21 17 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d36302053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF 1.164<546865205175657565>127 96 R 1.164 -<67726f75703d208c656c642073706563698c65732074686520646566>-.15 F 1.164 -<61756c742071756575652067726f757020696e207768696368207265636569>-.1 F --.15<7665>-.25 G 3.664<646d>.15 G 1.163<61696c2073686f756c64206265> --3.664 F 2.848<7175657565642e2054686973>102 108 R .348<63616e206265206f> -2.848 F -.15<7665>-.15 G .349 -<7272696464656e206279206f74686572206d65616e732061732065>.15 F .349 -<78706c61696e656420696e2073656374696f6e2060>-.15 F .349 -<6051756575652047726f75707320616e64205175657565>-.74 F -<4469726563746f7269657327>102 120 Q<272e>-.74 E F0 2.5<352e352e2048>87 -144 R 2.5<8a44>2.5 G<658c6e6520486561646572>-2.5 E F1 1.136 -<54686520666f726d6174206f662074686520686561646572206c696e65732074686174> -127 160.2 R/F2 10/Times-Italic@0 SF<73656e646d61696c>3.636 E F1 1.135<69 -6e736572747320696e746f20746865206d657373616765206172652064658c6e65642062 -7920746865>3.636 F F0<48>3.635 E F1 2.5<6c696e652e20546865>102 172.2 R< -73796e746178206f662074686973206c696e65206973206f6e65206f662074686520666f -6c6c6f>2.5 E<77696e673a>-.25 E F0<48>142 188.4 Q F2<686e616d65>A F0<3a>A -F2<6874656d706c617465>2.5 E F0<48>142 208.8 Q F1<5b>A F0<3f>A F2<6d8d61> -A<6773>-.1 E F0<3f5d>A F2<686e616d65>A F0<3a>A F2<6874656d706c617465>2.5 -E F0<48>142 229.2 Q F1<5b>A F0<3f24>A F2<7b6d616372>A<6f7d>-.45 E F0 -<3f5d>A F2<686e616d65>A F0<3a>A F2<6874656d706c617465>2.5 E F1 1.058<43 -6f6e74696e756174696f6e206c696e657320696e20746869732073706563206172652072 -658d6563746564206469726563746c7920696e746f20746865206f7574676f696e67206d -6573736167652e>102 245.4 R<546865>6.058 E F2<6874656d706c617465>3.558 E -F1<6973>3.558 E<6d6163726f2d65>102 257.4 Q 1.12<7870616e646564206265666f -726520696e73657274696f6e20696e746f20746865206d6573736167652e>-.15 F 1.12 -<496620746865>6.12 F F2<6d8d61>3.62 E<6773>-.1 E F1 1.12 -<28737572726f756e646564206279207175657374696f6e206d61726b7329>3.62 F -.161<6172652073706563698c65642c206174206c65617374206f6e65206f6620746865 -2073706563698c6564208d616773206d7573742062652073746174656420696e20746865 -206d61696c65722064658c6e6974696f6e20666f72207468697320686561646572>102 -269.4 R .858<746f206265206175746f6d61746963616c6c79206f75747075742e>102 -281.4 R .858<49662061>5.858 F F2<247b6d616372>3.358 E<6f7d>-.45 E F1 -.858<28737572726f756e646564206279207175657374696f6e206d61726b7329206973 -2073706563698c65642c2074686520686561646572>3.358 F 1.264<77696c6c206265 -206175746f6d61746963616c6c79206f757470757420696620746865206d6163726f2069 -73207365742e>102 293.4 R 1.264 -<546865206d6163726f206d617920626520736574207573696e6720616e>6.264 F -3.764<796f>-.15 G 3.764<6674>-3.764 G 1.264<6865206e6f726d616c>-3.764 F -.233<6d6574686f64732c20696e636c7564696e67207573696e6720746865>102 305.4 -R F0<6d616372>2.733 E<6f>-.18 E F1 .232 -<73746f72616765206d617020696e20612072756c657365742e>2.732 F .232<496620 -6f6e65206f66207468657365206865616465727320697320696e2074686520696e707574> -5.232 F .124 -<69742069732072658d656374656420746f20746865206f7574707574207265>102 -317.4 R -.05<6761>-.15 G .124 -<72646c657373206f66207468657365208d616773206f72206d6163726f732e>.05 F -.125<4e6f746963653a2049662061>5.125 F F2<247b6d616372>2.625 E<6f7d>-.45 -E F1 .125<6973207573656420746f207365742061>2.625 F<686561646572>102 -329.4 Q 4.309<2c74>-.4 G 1.809<68656e2069742069732075736566756c20746f20 -6164642074686174206d6163726f20746f20636c617373>-4.309 F F2<243d7b706572> -4.308 E<73697374656e744d616372>-.1 E<6f737d>-.45 E F1 1.808 -<776869636820636f6e7369737473206f6620746865>4.308 F -<6d6163726f7320746861742073686f756c64206265207361>102 341.4 Q -.15<7665> --.2 G 2.5<6461>.15 G<63726f73732071756575652072756e732e>-2.5 E -<536f6d652068656164657273206861>127 357.6 Q .3 -.15<76652073>-.2 H<7065 -6369616c2073656d616e7469637320746861742077696c6c206265206465736372696265 -64206c61746572>.15 E<2e>-.55 E 2.71<4173>127 373.8 S .21 -<65636f6e646172792073796e74617820616c6c6f>-2.71 F .21<77732076>-.25 F -.211<616c69646174696f6e206f66206865616465727320617320746865>-.25 F 2.711 -<7961>-.15 G .211<7265206265696e6720726561642e>-2.711 F 1.811 -.8 -<546f2065>5.211 H .211<6e61626c652076>.8 F<616c69646174696f6e2c>-.25 E -<7573653a>102 385.8 Q F0<48>142 402 Q F2<486561646572>A F0 2.5<3a24>C -<3e>-2.5 E F2<52756c65736574>A F0<48>142 414 Q F2<486561646572>A F0 2.5 -<3a24>C<3e2b>-2.5 E F2<52756c65736574>A F1 .265 -<54686520696e64696361746564>102 430.2 R F2<52756c65736574>2.765 E F1 -.265<69732063616c6c656420666f72207468652073706563698c6564>2.765 F F2 -<486561646572>2.765 E F1 2.765<2c61>C .265<6e642063616e2072657475726e> --2.765 F F0<2423657272>2.765 E<6f72>-.18 E F1 .265 -<746f2072656a656374206f722071756172616e2d>2.765 F 1.304 -<74696e6520746865206d657373616765206f72>102 442.2 R F0 -<242364697363617264>3.804 E F1 1.304<746f206469736361726420746865206d65 -737361676520286173207769746820746865206f74686572>3.804 F F0 -<636865636b5f>3.804 E F1 3.804<2a72>C 3.804<756c6573657473292e20546865> --3.804 F 3.176<72756c65736574207265636569>102 454.2 R -.15<7665>-.25 G -5.676<7374>.15 G 3.176 -<686520686561646572208c656c642d626f6479206173206172>-5.676 F 3.175<6775 -6d656e742c20692e652e2c206e6f742074686520686561646572208c656c642d6e616d65 -3b2073656520616c736f>-.18 F .629 -<247b6864725f6e616d657d20616e6420247b637572724865616465727d2e>102 466.2 -R .629<5468652068656164657220697320747265617465642061732061207374727563 -7475726564208c656c642c20746861742069732c207465>5.629 F .63 -<787420696e20706172656e2d>-.15 F .337<7468657365732069732064656c65746564 -206265666f72652070726f63657373696e672c20756e6c65737320746865207365636f6e -6420666f726d>102 478.2 R F0<243e2b>2.837 E F1 .337<697320757365642e> -2.837 F .337<4e6f74653a206f6e6c79206f6e652072756c657365742063616e>5.337 -F<6265206173736f63696174656420776974682061206865616465723b>102 490.2 Q -F2<73656e646d61696c>2.5 E F1<77696c6c2073696c656e746c792069676e6f726520 -6d756c7469706c6520656e74726965732e>2.5 E -.15<466f>127 506.4 S 2.5<7265> -.15 G<78616d706c652c2074686520636f6e8c6775726174696f6e206c696e65733a> --2.65 E<484d6573736167652d49643a20243e436865636b4d6573736167654964>142 -522.6 Q<53436865636b4d6573736167654964>142 546.6 Q<523c20242b204020242b> -142 558.6 Q 11.06<3e24>5 G 2.5<404f>-11.06 G<4b>-2.5 E 52.83 -<52242a2024236572726f72>142 570.6 R<243a20496c6c65>2.5 E -.05<6761>-.15 -G 2.5<6c4d>.05 G<6573736167652d496420686561646572>-2.5 E -.1<776f>102 -586.8 S<756c642072656675736520616e>.1 E 2.5<796d>-.15 G<6573736167652074 -686174206861642061204d6573736167652d49643a20686561646572206f6620616e> --2.5 E 2.5<796f>-.15 G 2.5<6674>-2.5 G<686520666f6c6c6f>-2.5 E -<77696e6720666f726d733a>-.25 E<4d6573736167652d49643a203c3e>142 603 Q -<4d6573736167652d49643a20736f6d65207465>142 615 Q<7874>-.15 E -<4d6573736167652d49643a203c6c65>142 627 Q -.05<6761>-.15 G 2.5<6c74>.05 -G -.15<6578>-2.5 G<7440646f6d61696e3e2065>.15 E<787472612063727564>-.15 -E 3.068<4164>102 643.2 S<6566>-3.068 E .569<61756c742072756c657365742074 -6861742069732063616c6c656420666f72206865616465727320776869636820646f6e27> --.1 F 3.069<7468>-.18 G -2.25 -.2<61762065>-3.069 H 3.069<6173>3.269 G -.569 -<706563698c632072756c657365742064658c6e656420666f72207468656d2063616e> --3.069 F<62652073706563698c65642062793a>102 655.2 Q F0<48>142 671.4 Q F2 -<2a>A F0 2.5<3a24>C<3e>-2.5 E F2<52756c65736574>A F1<6f72>102 687.6 Q F0 -<48>142 703.8 Q F2<2a>A F0 2.5<3a24>C<3e2b>-2.5 E F2<52756c65736574>A 0 -Cg EP -%%Page: 61 57 +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-21)195.86 E/F1 10/Times-Roman@0 SF +(Additional \215ags can be added after the colon e)127 96 Q(xactly lik) +-.15 E 2.5(ea)-.1 G F0(K)A F1(line \212 for e)2.5 E(xample:)-.15 E 2.5 +(OA)142 112.2 S(liasFile=nis:\255N mail.aliases@my)-2.5 E(.nis.domain) +-.65 E(will search the appropriate NIS map and al)102 128.4 Q -.1(wa)-.1 +G(ys include null bytes in the k).1 E -.15(ey)-.1 G 5(.A)-.5 G(lso:)-5 E +2.5(OA)142 144.6 S(liasFile=nis:\255f mail.aliases@my)-2.5 E +(.nis.domain)-.65 E(will pre)102 160.8 Q -.15(ve)-.25 G +(nt sendmail from do).15 E(wncasing the k)-.25 E .3 -.15(ey b)-.1 H +(efore the alias lookup.).15 E F0 2.5(2.6.1. Reb)102 184.8 R +(uilding the alias database)-.2 E F1(The)142 201 Q/F2 10/Times-Italic@0 +SF(hash)3.08 E F1(or)3.08 E F2(dbm)3.08 E F1 -.15(ve)3.08 G .579 +(rsion of the database may be reb).15 F .579(uilt e)-.2 F .579 +(xplicitly by e)-.15 F -.15(xe)-.15 G .579(cuting the com-).15 F(mand) +117 213 Q(ne)157 229.2 Q -.1(wa)-.25 G(liases).1 E(This is equi)117 +245.4 Q -.25(va)-.25 G(lent to gi).25 E(ving)-.25 E F2(sendmail)2.5 E F1 +(the)2.5 E F0(\255bi)2.5 E F1(\215ag:)2.5 E(/usr/sbin/sendmail \255bi) +157 261.6 Q 1.77(If you ha)142 282 R 2.07 -.15(ve m)-.2 H 1.77 +(ultiple aliases databases speci\214ed, the).15 F F0(\255bi)4.27 E F1 +1.77(\215ag reb)4.27 F 1.77(uilds all the database)-.2 F +(types it understands \(for e)117 294 Q(xample, it can reb)-.15 E +(uild NDBM databases b)-.2 E(ut not NIS databases\).)-.2 E F0 2.5 +(2.6.2. P)102 318 R(otential pr)-.2 E(oblems)-.18 E F1 1.131 +(There are a number of problems that can occur with the alias database.) +142 334.2 R(The)6.13 E 3.63(ya)-.15 G 1.13(ll result)-3.63 F 1.103 +(from a)117 346.2 R F2(sendmail)3.603 E F1 1.103 +(process accessing the DBM v)3.603 F 1.103 +(ersion while it is only partially b)-.15 F 3.604(uilt. This)-.2 F(can) +3.604 E 1.249(happen under tw)117 358.2 R 3.749(oc)-.1 G 1.248(ircumsta\ +nces: One process accesses the database while another process is)-3.749 +F(reb)117 370.2 Q .518(uilding it, or the process reb)-.2 F .518 +(uilding the database dies \(due to being killed or a system crash\))-.2 +F(before completing the reb)117 382.2 Q(uild.)-.2 E .401 +(Sendmail has three techniques to try to relie)142 398.4 R .701 -.15 +(ve t)-.25 H .401(hese problems.).15 F .4(First, it ignores interrupts) +5.401 F .045(while reb)117 410.4 R .045(uilding the database; this a)-.2 +F -.2(vo)-.2 G .045(ids the problem of someone aborting the process lea) +.2 F .045(ving a)-.2 F .177(partially reb)117 422.4 R .177 +(uilt database.)-.2 F .177 +(Second, it locks the database source \214le during the reb)5.177 F .176 +(uild \212 b)-.2 F .176(ut that)-.2 F .812(may not w)117 434.4 R .812 +(ork o)-.1 F -.15(ve)-.15 G 3.312(rN).15 G .812 +(FS or if the \214le is unwritable.)-3.312 F .813 +(Third, at the end of the reb)5.813 F .813(uild it adds an)-.2 F +(alias of the form)117 446.4 Q(@: @)157 462.6 Q .336 +(\(which is not normally le)117 478.8 R -.05(ga)-.15 G 2.836 +(l\). Before).05 F F2(sendmail)2.836 E F1 .336 +(will access the database, it checks to insure that)2.836 F +(this entry e)117 492.8 Q(xists)-.15 E/F3 7/Times-Roman@0 SF(11)-4 I F1 +(.)4 I F0 2.5(2.6.3. List)102 516.8 R -.1(ow)2.5 G(ners).1 E F1 .4 +(If an error occurs on sending to a certain address, say \231)142 533 R +F2(x)A F1<9a2c>A F2(sendmail)2.901 E F1 .401(will look for an alias) +2.901 F .418(of the form \231o)117 545 R(wner)-.25 E(-)-.2 E F2(x)A F1 +2.918<9a74>C 2.918(or)-2.918 G(ecei)-2.918 E .718 -.15(ve t)-.25 H .418 +(he errors.).15 F .417 +(This is typically useful for a mailing list where the)5.418 F 1.116 +(submitter of the list has no control o)117 557 R -.15(ve)-.15 G 3.617 +(rt).15 G 1.117 +(he maintenance of the list itself; in this case the list)-3.617 F +(maintainer w)117 569 Q(ould be the o)-.1 E(wner of the list.)-.25 E +-.15(Fo)5 G 2.5(re).15 G(xample:)-2.65 E +(unix-wizards: eric@ucbarpa, wnj@monet, nosuchuser)157 585.2 Q(,)-.4 E +(sam@matisse)193 597.2 Q -.25(ow)157 609.2 S(ner).25 E +(-unix-wizards: unix-wizards-request)-.2 E +(unix-wizards-request: eric@ucbarpa)157 621.2 Q -.1(wo)117 637.4 S .689 +(uld cause \231eric@ucbarpa\232 to get the error that will occur when s\ +omeone sends to unix-wiz-).1 F +(ards due to the inclusion of \231nosuchuser\232 on the list.)117 649.4 +Q .958(List o)142 665.6 R .958(wners also cause the en)-.25 F -.15(ve) +-.4 G .959(lope sender address to be modi\214ed.).15 F .959 +(The contents of the)5.959 F -.25(ow)117 677.6 S .429 +(ner alias are used if the).25 F 2.929(yp)-.15 G .429 +(oint to a single user)-2.929 F 2.928(,o)-.4 G .428 +(therwise the name of the alias itself is used.)-2.928 F .32 LW 76 687.2 +72 687.2 DL 80 687.2 76 687.2 DL 84 687.2 80 687.2 DL 88 687.2 84 687.2 +DL 92 687.2 88 687.2 DL 96 687.2 92 687.2 DL 100 687.2 96 687.2 DL 104 +687.2 100 687.2 DL 108 687.2 104 687.2 DL 112 687.2 108 687.2 DL 116 +687.2 112 687.2 DL 120 687.2 116 687.2 DL 124 687.2 120 687.2 DL 128 +687.2 124 687.2 DL 132 687.2 128 687.2 DL 136 687.2 132 687.2 DL 140 +687.2 136 687.2 DL 144 687.2 140 687.2 DL 148 687.2 144 687.2 DL 152 +687.2 148 687.2 DL 156 687.2 152 687.2 DL 160 687.2 156 687.2 DL 164 +687.2 160 687.2 DL 168 687.2 164 687.2 DL 172 687.2 168 687.2 DL 176 +687.2 172 687.2 DL 180 687.2 176 687.2 DL 184 687.2 180 687.2 DL 188 +687.2 184 687.2 DL 192 687.2 188 687.2 DL 196 687.2 192 687.2 DL 200 +687.2 196 687.2 DL 204 687.2 200 687.2 DL 208 687.2 204 687.2 DL 212 +687.2 208 687.2 DL 216 687.2 212 687.2 DL/F4 5/Times-Roman@0 SF(11)93.6 +697.6 Q/F5 8/Times-Roman@0 SF(The)3.2 I/F6 8/Times-Bold@0 SF(AliasW)2 E +(ait)-.52 E F5 +(option is required in the con\214guration for this action to occur)2 E +4(.T)-.44 G(his should normally be speci\214ed.)-4 E 0 Cg EP +%%Page: 22 18 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3631>195.86 E -2.5<352e362e204f>87 96 R 2.5<8a53>2.5 G<6574204f7074696f6e>-2.5 E/F1 10 -/Times-Roman@0 SF .963<5468657265206172652061206e756d626572206f6620676c -6f62616c206f7074696f6e7320746861742063616e206265207365742066726f6d206120 -636f6e8c6775726174696f6e208c6c652e>127 112.2 R .962 -<4f7074696f6e7320617265>5.962 F .86 -<726570726573656e7465642062792066756c6c2077>102 124.2 R .86<6f7264733b20 -736f6d652061726520616c736f20726570726573656e7461626c652061732073696e676c -65206368617261637465727320666f72206261636b20636f6d7061746962696c697479> --.1 F<2e>-.65 E<5468652073796e746178206f662074686973206c696e652069733a> -102 136.2 Q F0<4f>142 152.4 Q/F2 10/Times-Italic@0 SF<6f7074696f6e>7.5 E -F0<3d>A F2<76616c7565>A F1 .563<546869732073657473206f7074696f6e>102 -168.6 R F2<6f7074696f6e>3.062 E F1 .562<746f206265>3.062 F F2 -<76616c7565>3.062 E F1 5.562<2e4e>C .562<6f74652074686174207468657265> --5.562 F F2<6d757374>3.062 E F1 .562<6265206120737061636520626574776565 -6e20746865206c657474657220604f2720616e6420746865>3.062 F -<6e616d65206f6620746865206f7074696f6e2e>102 180.6 Q -<416e206f6c6465722076>5 E<657273696f6e2069733a>-.15 E F0<4f>142 196.8 Q -F2 1.666<6f76>C<616c7565>-1.666 E F1 .13 -<776865726520746865206f7074696f6e>102 213 R F2<6f>2.63 E F1 .13 -<697320612073696e676c6520636861726163746572>2.63 F 5.13<2e44>-.55 G .13 -<6570656e64696e67206f6e20746865206f7074696f6e2c>-5.13 F F2<76616c7565> -2.63 E F1 .13<6d6179206265206120737472696e672c20616e20696e7465>2.63 F -<676572>-.15 E<2c>-.4 E 2.5<6162>102 225 S -<6f6f6c65616e202877697468206c65>-2.5 E -.05<6761>-.15 G 2.5<6c76>.05 G< -616c7565732099749a2c2099549a2c2099669a2c206f722099469a3b2074686520646566> --2.75 E<61756c74206973205452>-.1 E -<5545292c206f7220612074696d6520696e74657276>-.4 E<616c2e>-.25 E 1.164<41 -6c6c208c6c656e616d6573207573656420696e206f7074696f6e732073686f756c642062 -65206162736f6c7574652070617468732c20692e652e2c207374617274696e6720776974 -6820272f272e>127 241.2 R<52656c617469>6.164 E 1.464 -.15<7665208c>-.25 H -<6c652d>.15 E<6e616d6573206d6f7374206c696b>102 253.2 Q<656c792063617573 -652073757270726973657320647572696e67206f7065726174696f6e2028756e6c657373 -206f7468657277697365206e6f746564292e>-.1 E<546865206f7074696f6e73207375 -70706f7274656420287769746820746865206f6c642c206f6e6520636861726163746572 -206e616d657320696e20627261636b>127 269.4 Q<65747329206172653a>-.1 E -<416c69617346696c653d>102 285.6 Q F2<737065632c20737065632c202e2e2e>A F1 -.182 -<5b415d205370656369667920706f737369626c6520616c696173208c6c652873292e> -174 297.6 R<45616368>5.182 E F2<73706563>2.682 E F1 .183 -<73686f756c6420626520696e2074686520666f726d61742060>2.682 F<60>-.74 E F2 -<636c617373>A F0<3a>A F2<696e666f>2.683 E F1 -.74<2727>C<7768657265>174 -309.6 Q F2<636c617373>3.031 E F0<3a>A F1 .531 -<6973206f7074696f6e616c20616e6420646566>3.031 F .531 -<61756c747320746f2060>-.1 F<60696d706c6963697427>-.74 E 3.031 -<272e204e6f7465>-.74 F<74686174>3.031 E F2<696e666f>3.031 E F1 .53 -<697320726571756972656420666f72>3.03 F<616c6c>174 321.6 Q F2<636c617373> -3.524 E F1 1.024<65732065>B 1.024<786365707420996c6461709a2e>-.15 F -.15 -<466f>6.024 G 3.524<7274>.15 G 1.024 -<686520996c6461709a20636c6173732c206966>-3.524 F F2<696e666f>3.524 E F1 -1.025<6973206e6f742073706563698c65642c206120646566>3.524 F<61756c74>-.1 -E F2<696e666f>174 333.6 Q F1 -.25<7661>2.5 G -<6c7565206973207573656420617320666f6c6c6f>.25 E<77733a>-.25 E -214 349.8 Q -<41416c6961734f626a65637429>-.93 E<2873656e646d61696c4d54>226.5 361.8 Q -<41416c6961734e616d653d616c696173657329>-.93 E -<287c2873656e646d61696c4d54>226.5 373.8 Q -.4<4143>-.93 G -<6c75737465723d247b73656e646d61696c4d54>.4 E -.4<4143>-.93 G -<6c75737465727d29>.4 E<2873656e646d61696c4d54>231.5 385.8 Q -<41486f73743d246a2929>-.93 E<2873656e646d61696c4d54>226.5 397.8 Q<414b> --.93 E -.15<6579>-.25 G<3d25302929>.15 E214 -409.8 Q<41416c69617356>-.93 E<616c7565>-1.11 E 2.305 -<446570656e64696e67206f6e20686f>174 426 R<77>-.25 E F2<73656e646d61696c> -4.805 E F1 2.305<697320636f6d70696c65642c2076>4.805 F 2.305 -<616c696420636c6173736573206172652099696d706c696369749a2028736561726368> --.25 F 1.207<7468726f756768206120636f6d70696c65642d696e206c697374206f66 -20616c696173208c6c652074797065732c20666f72206261636b20636f6d706174696269 -6c697479292c2099686173689a20286966>174 438 R/F3 9/Times-Roman@0 SF -<4e45574442>174 450 Q F1 .496 -<69732073706563698c6564292c209962747265659a20286966>2.996 F F3 -<4e45574442>2.996 E F1 .496 -<69732073706563698c6564292c209964626d9a20286966>2.996 F F3<4e44424d> -2.996 E F1 .496<69732073706563692d>2.996 F .201<8c6564292c2099737461629a -2028696e7465726e616c2073796d626f6c207461626c65208a206e6f74206e6f726d616c -6c79207573656420756e6c65737320796f75206861>174 462 R .501 -.15<7665206e> --.2 H 2.701<6f6f>.15 G<74686572>-2.701 E 2.786<6461746162617365206c6f6f -6b7570292c209973657175656e63659a202875736520612073657175656e6365206f6620 -6d61707320707265>174 474 R 2.785<76696f75736c79206465636c61726564292c> --.25 F .638<996c6461709a20286966>174 486 R F3<4c44>3.138 E<41504d4150> --.36 E F1 .638<69732073706563698c6564292c206f7220996e69739a20286966> -3.138 F F3<4e4953>3.139 E F1 .639<69732073706563698c6564292e>3.139 F -.639<49662061206c697374206f66>5.639 F F2<73706563>3.139 E F1<73>A -<6172652070726f>174 498 Q<76696465642c>-.15 E F2<73656e646d61696c>2.5 E -F1<7365617263686573207468656d20696e206f72646572>2.5 E<2e>-.55 E -<416c69617357>102 514.2 Q<6169743d>-.8 E F2<74696d656f7574>A F1 .141 -<5b615d204966207365742c2077>174 526.2 R .141<61697420757020746f>-.1 F F2 -<74696d656f7574>2.641 E F1 .141<28756e69747320646566>2.641 F .14<61756c -7420746f206d696e757465732920666f7220616e2099403a409a20656e74727920746f20 -65>-.1 F<78697374>-.15 E .517<696e2074686520616c696173206461746162617365 -206265666f7265207374617274696e672075702e>174 538.2 R .517 -<496620697420646f6573206e6f742061707065617220696e20746865>5.517 F F2 -<74696d656f7574>3.018 E F1<696e746572>3.018 E<2d>-.2 E -.25<7661>174 -550.2 S 2.5<6c69>.25 G<7373756520612077>-2.5 E<61726e696e672e>-.1 E -<416c6c6f>102 566.4 Q<77426f67757348454c4f>-.25 E 1.104 -<5b6e6f2073686f7274206e616d655d204966207365742c20616c6c6f>174 578.4 R -3.604<7748>-.25 G 1.104 -<454c4f20534d545020636f6d6d616e6473207468617420646f6e27>-3.604 F 3.604 -<7469>-.18 G 1.103<6e636c756465206120686f7374>-3.604 F 2.881 -<6e616d652e2053657474696e67>174 590.4 R .382<746869732076696f6c61746573 -2052464320313132332073656374696f6e20352e322e352c2062>2.881 F .382 -<7574206973206e656365737361727920746f20696e7465726f706572>-.2 F<2d>-.2 E -.061<6174652077697468207365>174 602.4 R -.15<7665>-.25 G .061 -<72616c20534d545020636c69656e74732e>.15 F .061 -<496620746865726520697320612076>5.061 F .06 -<616c75652c206974206973207374696c6c20636865636b>-.25 F .06 -<656420666f72206c65>-.1 F<676974696d6163>-.15 E -.65<792e>-.15 G -<417574684d6178426974733d>102 618.6 Q F2<4e>A F1 .697<5b6e6f2073686f7274 -206e616d655d204c696d697420746865206d6178696d756d20656e6372797074696f6e20 -737472656e67746820666f7220746865207365637572697479206c6179657220696e> -5.24 F 1.318<534d54502041>174 630.6 R 1.318 -<55544820285341534c292e20446566>-.55 F 1.317 -<61756c7420697320657373656e7469616c6c7920756e6c696d697465642e>-.1 F -1.317<5468697320616c6c6f>6.317 F 1.317<777320746f207475726e206f66>-.25 F -<66>-.25 E .377 -<6164646974696f6e616c20656e6372797074696f6e20696e205341534c206966205354> -174 642.6 R<4152>-.93 E .377<54544c5320697320616c726561647920656e637279 -7074696e672074686520636f6d6d756e692d>-.6 F .179 -<636174696f6e2c2062656361757365207468652065>174 654.6 R .179 -<78697374696e6720656e6372797074696f6e20737472656e6774682069732074616b> --.15 F .179<656e20696e746f206163636f756e74207768656e2063686f6f732d>-.1 F -.997<696e6720616e20616c676f726974686d20666f7220746865207365637572697479 -206c61796572>174 666.6 R 5.998<2e46>-.55 G .998<6f722065>-6.148 F .998 -<78616d706c652c206966205354>-.15 F<4152>-.93 E .998 -<54544c53206973207573656420616e64>-.6 F .437<7468652073796d6d6574726963 -2063697068657220697320334445532c207468656e2074686520746865206b>174 678.6 -R -.15<6579>-.1 G .437<6c656e6774682028696e206269747329206973203136382e> -.15 F .437<48656e6365207365742d>5.437 F<74696e67>174 690.6 Q F0 -.5 -<4175>2.5 G<74684d617842697473>.5 E F1 -<746f203136382077696c6c2064697361626c6520616e>2.5 E 2.5<7965>-.15 G -<6e6372797074696f6e20696e205341534c2e>-2.5 E -1.05 -<417574684d656368616e69736d73205b6e6f>102 706.8 R 2.672<73686f7274206e61 -6d655d204c697374206f662061757468656e7469636174696f6e206d656368616e69736d -7320666f722041>5.172 F 2.672<5554482028736570617261746564206279>-.55 F -2.853<737061636573292e20546865>174 718.8 R<616476>2.853 E .353<65727469 -736564206c697374206f662061757468656e7469636174696f6e206d656368616e69736d -732077696c6c2062652074686520696e74657273656374696f6e>-.15 F 0 Cg EP -%%Page: 62 58 +/F0 10/Times-Bold@0 SF 193.36(SMM:08-22 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF -.15(Fo) +117 96 S 3.454(rt).15 G .954(his reason, and to obe)-3.454 F 3.454(yI) +-.15 G .954(nternet con)-3.454 F -.15(ve)-.4 G .954(ntions, the \231o) +.15 F(wner)-.25 E .955(-\232 address normally points at the)-.2 F .504(\ +\231-request\232 address; this causes messages to go out with the typic\ +al Internet con)117 108 R -.15(ve)-.4 G .503(ntion of using).15 F -.74 +(``)117 120 S/F2 10/Times-Italic@0 SF(list).74 E F1(-request')A 2.5('a) +-.74 G 2.5(st)-2.5 G(he return address.)-2.5 E F0 2.5(2.7. User)87 144 R +(Inf)2.5 E(ormation Database)-.25 E F1 3.635(This option is deprecated,\ + use virtusertable and genericstable instead as e)127 160.2 R 3.636 +(xplained in)-.15 F F2(cf/README)102 172.2 Q F1 5.06(.I)C 2.56(fy)-5.06 +G .06(ou ha)-2.56 F .36 -.15(ve a ve)-.2 H .06(rsion of).15 F F2 +(sendmail)2.56 E F1 .06 +(with the user information database compiled in, and)2.56 F .764(you ha) +102 184.2 R 1.064 -.15(ve s)-.2 H .764 +(peci\214ed one or more databases using the).15 F F0(U)3.264 E F1 .764 +(option, the databases will be searched for a)3.264 F F2(user)102 196.2 +Q F1(:maildrop entry)A 5(.I)-.65 G 2.5(ff)-5 G +(ound, the mail will be sent to the speci\214ed address.)-2.5 E F0 2.5 +(2.8. P)87 220.2 R(er)-.2 E(-User F)-.37 E(orwarding \(.f)-.25 E +(orward Files\))-.25 E F1 .121(As an alternati)127 236.4 R .421 -.15 +(ve t)-.25 H 2.621(ot).15 G .121(he alias database, an)-2.621 F 2.621 +(yu)-.15 G .12(ser may put a \214le with the name \231.forw)-2.621 F .12 +(ard\232 in his)-.1 F .205(or her home directory)102 248.4 R 5.205(.I) +-.65 G 2.705(ft)-5.205 G .205(his \214le e)-2.705 F(xists,)-.15 E F2 +(sendmail)2.705 E F1 .205 +(redirects mail for that user to the list of addresses)2.705 F .665 +(listed in the .forw)102 260.4 R .665(ard \214le.)-.1 F .665 +(Note that aliases are fully e)5.665 F .664(xpanded before forw)-.15 F +.664(ard \214les are referenced.)-.1 F -.15(Fo)102 272.4 S 2.5(re).15 G +(xample, if the home directory for user \231mckusick\232 has a .forw) +-2.65 E(ard \214le with contents:)-.1 E(mckusick@ernie)142 288.6 Q +(kirk@calder)142 300.6 Q(then an)102 316.8 Q 2.5(ym)-.15 G(ail arri)-2.5 +E(ving for \231mckusick\232 will be redirected to the speci\214ed accou\ +nts.)-.25 E(Actually)127 333 Q 3.374(,t)-.65 G .874(he con\214guration \ +\214le de\214nes a sequence of \214lenames to check.)-3.374 F .875 +(By def)5.875 F .875(ault, this is)-.1 F .517(the user')102 345 R 3.017 +(s.)-.55 G(forw)-3.017 E .517(ard \214le, b)-.1 F .517 +(ut can be de\214ned to be more generally using the)-.2 F F0 -.25(Fo) +3.017 G(rwardP).25 E(ath)-.1 E F1 3.016(option. If)3.016 F .182 +(you change this, you will ha)102 357 R .482 -.15(ve t)-.2 H 2.682(oi) +.15 G .182(nform your user base of the change; .forw)-2.682 F .183 +(ard is pretty well incor)-.1 F(-)-.2 E(porated into the collecti)102 +369 Q .3 -.15(ve s)-.25 H(ubconscious.).15 E F0 2.5(2.9. Special)87 393 +R(Header Lines)2.5 E F1(Se)127 409.2 Q -.15(ve)-.25 G 1.898 +(ral header lines ha).15 F 2.197 -.15(ve s)-.2 H 1.897 +(pecial interpretations de\214ned by the con\214guration \214le.).15 F +(Others)6.897 E(ha)102 421.2 Q 1.205 -.15(ve i)-.2 H .905 +(nterpretations b).15 F .905(uilt into)-.2 F F2(sendmail)3.405 E F1 .906 +(that cannot be changed without changing the code.)3.405 F(These)5.906 E +-.2(bu)102 433.2 S(ilt-ins are described here.).2 E F0 2.5(2.9.1. Err) +102 457.2 R(ors-T)-.18 E(o:)-.92 E F1 .22(If errors occur an)142 473.4 R +.22(ywhere during processing, this header will cause error messages to \ +go to)-.15 F(the listed addresses.)117 485.4 Q +(This is intended for mailing lists.)5 E .384(The Errors-T)142 501.6 R +.384(o: header w)-.8 F .384 +(as created in the bad old days when UUCP didn')-.1 F 2.885(tu)-.18 G +.385(nderstand the)-2.885 F .89(distinction between an en)117 513.6 R +-.15(ve)-.4 G .89(lope and a header; this w).15 F .889(as a hack to pro) +-.1 F .889(vide what should no)-.15 F 3.389(wb)-.25 G(e)-3.389 E .809 +(passed as the en)117 525.6 R -.15(ve)-.4 G .809(lope sender address.) +.15 F .809(It should go a)5.809 F -.1(wa)-.15 G 4.609 -.65(y. I).1 H +3.31(ti).65 G 3.31(so)-3.31 G .81(nly used if the)-3.31 F F0(UseErr)3.31 +E(orsT)-.18 E(o)-.92 E F1(option is set.)117 537.6 Q(The Errors-T)142 +553.8 Q(o: header is of)-.8 E(\214cially deprecated and will go a)-.25 E +-.1(wa)-.15 G 2.5(yi).1 G 2.5(naf)-2.5 G(uture release.)-2.5 E F0 2.5 +(2.9.2. A)102 577.8 R(ppar)-.25 E(ently-T)-.18 E(o:)-.92 E F1 .045 +(RFC 822 requires at least one recipient \214eld \(T)142 594 R .045 +(o:, Cc:, or Bcc: line\) in e)-.8 F -.15(ve)-.25 G .044(ry message.).15 +F .044(If a)5.044 F .562 +(message comes in with no recipients listed in the message then)117 606 +R F2(sendmail)3.062 E F1 .562(will adjust the header)3.062 F .085 +(based on the \231NoRecipientAction\232 option.)117 618 R .085 +(One of the possible actions is to add an \231)5.085 F(Apparently-)-.8 E +-.8(To)117 630 S(:\232 header line for an).8 E 2.5(yr)-.15 G +(ecipients it is a)-2.5 E -.1(wa)-.15 G(re of.).1 E .91 +(The Apparently-T)142 646.2 R .911 +(o: header is non-standard and is both deprecated and strongly discour) +-.8 F(-)-.2 E(aged.)117 658.2 Q F0 2.5(2.9.3. Pr)102 682.2 R(ecedence) +-.18 E F1 .425(The Precedence: header can be used as a crude control of\ + message priority)142 698.4 R 5.424(.I)-.65 G 2.924(tt)-5.424 G .424 +(weaks the)-2.924 F .181(sort order in the queue and can be con\214gure\ +d to change the message timeout v)117 710.4 R 2.682(alues. The)-.25 F +(prece-)2.682 E .235(dence of a message also controls ho)117 722.4 R +2.734(wd)-.25 G(eli)-2.734 E -.15(ve)-.25 G .234 +(ry status noti\214cations \(DSNs\) are processed for that).15 F 0 Cg EP +%%Page: 23 19 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d36322053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF .271 -<6f662074686973206c69737420616e6420746865206c697374206f662061>174 96 R --.25<7661>-.2 G .272<696c61626c65206d656368616e69736d732061732064657465 -726d696e656420627920746865204379727573205341534c>.25 F<6c696272617279> -174 108 Q 6.167<2e49>-.65 G 3.667<6653>-6.167 G -.93<5441>-3.667 G -.6 -<5254>.93 G 1.167<544c532069732061637469>.6 F -.15<7665>-.25 G 3.667 -<2c45>.15 G<585445524e>-3.667 E 1.167 -<414c2077696c6c20626520616464656420746f2074686973206c6973742e>-.35 F -1.166<496e2074686174>6.167 F<636173652c207468652076>174 120 Q<616c756520 -6f66207b636572745f7375626a6563747d20697320757365642061732061757468656e74 -69636174696f6e2069642e>-.25 E 17.83<417574684f7074696f6e73205b6e6f>102 -136.2 R .836<73686f7274206e616d655d204c697374206f66206f7074696f6e732066 -6f7220534d54502041>3.335 F .836 -<55544820636f6e73697374696e67206f662073696e676c652063686172616374657273> --.55 F<7769746820696e74657276>174 148.2 Q -<656e696e67207768697465207370616365206f7220636f6d6d61732e>-.15 E 12.78 -<4155>214 164.4 S<7365207468652041>-12.78 E -<5554483d20706172616d6574657220666f7220746865204d41494c204652>-.55 E -<4f4d>-.4 E<636f6d6d616e64206f6e6c79207768656e2061757468656e746963617469 -6f6e207375636365656465642e>234 176.4 Q -<546869732063616e206265207573656420617320612077>234 188.4 Q -<6f726b61726f756e6420666f722062726f6b>-.1 E<656e>-.1 E<4d54>234 200.4 Q< -4173207468617420646f206e6f7420696d706c656d656e7420524643203235353420636f -72726563746c79>-.93 E<2e>-.65 E 15.56<6170>214 212.4 S -<726f74656374696f6e2066726f6d2061637469>-15.56 E .3 -.15<76652028>-.25 H -<6e6f6e2d64696374696f6e617279292061747461636b73>.15 E -<647572696e672061757468656e7469636174696f6e2065>234 224.4 Q -<786368616e67652e>-.15 E 15.56<6372>214 236.4 S<657175697265206d65636861 -6e69736d73207768696368207061737320636c69656e742063726564656e7469616c732c> --15.56 E<616e6420616c6c6f>234 248.4 Q 2.5<776d>-.25 G<656368616e69736d73 -2077686963682063616e20706173732063726564656e7469616c73>-2.5 E -<746f20646f20736f2e>234 260.4 Q 15<6464>214 272.4 S<6f6e27>-15 E 2.5 -<7470>-.18 G<65726d6974206d656368616e69736d73207375736365707469626c6520 -746f207061737369>-2.5 E -.15<7665>-.25 G -<64696374696f6e6172792061747461636b2e>234 284.4 Q 16.67<6672>214 296.4 S -<65717569726520666f7277>-16.67 E<61726420736563726563>-.1 E 2.5<7962> --.15 G<65747765656e2073657373696f6e73>-2.5 E -<28627265616b696e67206f6e652077>234 308.4 Q<6f6e27>-.1 E 2.5<7468>-.18 G -<656c7020627265616b206e65>-2.5 E<7874292e>-.15 E 12.22<6d72>214 320.4 S -<657175697265206d656368616e69736d732077686963682070726f>-12.22 E -<76696465206d757475616c2061757468656e7469636174696f6e>-.15 E -<286f6e6c792061>234 332.4 Q -.25<7661>-.2 G<696c61626c65206966207573696e -67204379727573205341534c207632206f72206c61746572292e>.25 E 15<7064>214 -344.4 S<6f6e27>-15 E 2.5<7470>-.18 G<65726d6974206d656368616e69736d7320 -7375736365707469626c6520746f2073696d706c65>-2.5 E<7061737369>234 356.4 Q -.3 -.15<76652061>-.25 H<747461636b2028652e672e2c20504c41494e2c204c4f4749 -4e292c20756e6c6573732061>.15 E -<7365637572697479206c617965722069732061637469>234 368.4 Q -.15<7665>-.25 -G<2e>.15 E 15<7964>214 380.4 S<6f6e27>-15 E 2.5<7470>-.18 G -<65726d6974206d656368616e69736d73207468617420616c6c6f>-2.5 E 2.5<7761> --.25 G<6e6f6e>-2.5 E<796d6f7573206c6f67696e2e>-.15 E<546865208c72737420 -6f7074696f6e206170706c69657320746f2073656e646d61696c206173206120636c6965 -6e742c20746865206f746865727320746f20612073657276>174 396.6 Q<6572>-.15 E -5<2e45>-.55 G<78616d706c653a>-5 E 2.5<4f41>214 412.8 S -<7574684f7074696f6e733d702c79>-2.5 E -.1<776f>174 429 S 1.347 -<756c6420646973616c6c6f>.1 F 3.847<7741>-.25 G 1.347 -<4e4f4e594d4f55532061732041>-3.847 F 1.347 -<555448206d656368616e69736d20616e642077>-.55 F 1.346<6f756c6420616c6c6f> --.1 F 3.846<7750>-.25 G<4c41494e>-3.846 E 1.788<616e64204c4f47494e206f6e -6c792069662061207365637572697479206c617965722028652e672e2c2070726f>174 -441 R 1.789<7669646564206279205354>-.15 F<4152>-.93 E 1.789 -<54544c532920697320616c7265616479>-.6 F<61637469>174 453 Q -.15<7665> --.25 G 5.364<2e54>.15 G .364 -<6865206f7074696f6e73202761272c202763272c2027>-5.364 F .364 -<64272c202766>-.5 F .364<272c202770272c20616e64202779272072656665722074 -6f2070726f70657274696573206f66207468652073656c6563746564>.55 F 1.089 -<5341534c206d656368616e69736d732e>174 465 R 1.089<4578706c616e6174696f6e -73206f662074686573652070726f706572746965732063616e20626520666f756e642069 -6e20746865204379727573>6.089 F<5341534c20646f63756d656e746174696f6e2e> -174 477 Q 23.39<417574685265616c6d205b6e6f>102 493.2 R 2.502<73686f7274 -206e616d655d205468652061757468656e7469636174696f6e207265616c6d2074686174 -2069732070617373656420746f20746865204379727573205341534c>5.003 F -<6c696272617279>174 505.2 Q 5<2e49>-.65 G 2.5<666e>-5 G 2.5<6f72>-2.5 G -<65616c6d2069732073706563698c65642c>-2.5 E F0<246a>2.5 E F1 -<697320757365642e>2.5 E<53656520616c736f204b4e4f>5 E<574e42>-.35 E -<5547532e>-.1 E<426164526370745468726f74746c653d>102 521.4 Q/F2 10 -/Times-Italic@0 SF<4e>A F1 1.194<5b6e6f2073686f7274206e616d655d20496620 -73657420616e64207468652073706563698c6564206e756d626572206f66207265636970 -69656e747320696e20612073696e676c6520534d5450>174 533.4 R .596 -<7472616e73616374696f6e206861>174 545.4 R .896 -.15<76652062>-.2 H .595< -65656e2072656a65637465642c20736c65657020666f72206f6e65207365636f6e642061 -6674657220656163682073756273657175656e742052435054>.15 F -<636f6d6d616e6420696e2074686174207472616e73616374696f6e2e>174 557.4 Q -<426c616e6b5375623d>102 573.6 Q F2<63>A F1 1.255<5b425d2053657420746865 -20626c616e6b20737562737469747574696f6e2063686172616374657220746f>22.47 F -F2<63>3.755 E F1 6.255<2e55>C 1.255 -<6e71756f7465642073706163657320696e2061646472657373657320617265>-6.255 F -<7265706c61636564206279207468697320636861726163746572>174 585.6 Q 5 -<2e44>-.55 G<6566>-5 E<61756c747320746f2073706163652028692e652e2c206e6f -206368616e6765206973206d616465292e>-.1 E<4341>102 601.8 Q<4365727450>-.4 -E 21.16<617468205b6e6f>-.15 F .897<73686f7274206e616d655d2050>3.397 F -.897<61746820746f206469726563746f727920776974682063657274698c6361746573 -206f66204341732e>-.15 F .896<54686973206469726563746f72792064697265632d> -5.896 F 1.234<746f7279206d75737420636f6e7461696e207468652068617368657320 -6f6620656163682043412063657274698c63617465206173208c6c656e616d657320286f -72206173206c696e6b7320746f>174 613.8 R<7468656d292e>174 625.8 Q<4341>102 -642 Q 23.23<4365727446696c65205b6e6f>-.4 F 1.439<73686f7274206e616d655d -2046696c6520636f6e7461696e696e67206f6e65206f72206d6f72652043412063657274 -698c63617465733b207365652073656374696f6e2061626f7574>3.94 F<5354>174 654 -Q<4152>-.93 E<54544c5320666f72206d6f726520696e666f726d6174696f6e2e>-.6 E -<4365727446696e6765727072696e74416c676f726974686d>102 670.2 Q 1.949<5370 -656369667920746865208c6e6765727072696e7420616c676f726974686d202864696765 -73742920746f2075736520666f72207468652070726573656e74656420636572742e>174 -682.2 R 1.95<496620746865>6.95 F .854<6f7074696f6e206973206e6f7420736574 -2c206d6435206973207573656420616e6420746865206d6163726f20636f6e7461696e73 -207468652063657274208c6e6765727072696e742e>174 694.2 R .854 -<496620746865>5.854 F .676<6f7074696f6e2069732065>174 706.2 R .676<7870 -6c696369746c79207365742c207468652073706563698c656420616c676f726974686d20 -28652e672e2c207368613129206973207573656420616e6420746865206d6163726f> --.15 F F0<247b636572745f66707d>174 718.2 Q F1 -<636f6e7461696e73207468652063657274208c6e6765727072696e742e>2.5 E 0 Cg +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-23)195.86 E/F1 10/Times-Roman@0 SF(message.)117 96 Q F0 2.5 +(2.10. IDENT)87 120 R(Pr)2.5 E(otocol Support)-.18 E/F2 10 +/Times-Italic@0 SF(Sendmail)127 136.2 Q F1 .745 +(supports the IDENT protocol as de\214ned in RFC 1413.)3.245 F .746 +(Note that the RFC states a)5.745 F 1.361(client should w)102 148.2 R +1.361(ait at least 30 seconds for a response.)-.1 F 1.36(The def)6.361 F +1.36(ault T)-.1 F 1.36(imeout.ident is 5 seconds as)-.35 F(man)102 160.2 +Q 3.024(ys)-.15 G .524(ites ha)-3.024 F .824 -.15(ve a)-.2 H .524 +(dopted the practice of dropping IDENT queries.).15 F .524 +(This has lead to delays process-)5.524 F .452(ing mail.)102 172.2 R +.452(Although this enhances identi\214cation of the author of an email \ +message by doing a `)5.452 F(`call)-.74 E(back')102 184.2 Q 3.627('t) +-.74 G 3.627(ot)-3.627 G 1.127(he originating system to include the o) +-3.627 F 1.128(wner of a particular TCP connection in the audit)-.25 F +.164(trail it is in no sense perfect; a determined for)102 196.2 R .164 +(ger can easily spoof the IDENT protocol.)-.18 F .164(The follo)5.164 F +(w-)-.25 E(ing description is e)102 208.2 Q(xcerpted from RFC 1413:)-.15 +E 2.5(6. Security)127 224.4 R(Considerations)2.5 E .005 +(The information returned by this protocol is at most as trustw)127 +240.6 R(orth)-.1 E 2.506(ya)-.05 G 2.506(st)-2.506 G .006(he host pro) +-2.506 F .006(viding it OR)-.15 F .274(the or)127 252.6 R -.05(ga)-.18 G +.274(nization operating the host.).05 F -.15(Fo)5.274 G 2.774(re).15 G +.273(xample, a PC in an open lab has fe)-2.924 F 2.773(wi)-.25 G 2.773 +(fa)-2.773 G .573 -.15(ny c)-2.773 H(ontrols).15 E .986(on it to pre)127 +264.6 R -.15(ve)-.25 G .986(nt a user from ha).15 F .986 +(ving this protocol return an)-.2 F 3.486(yi)-.15 G .987 +(denti\214er the user w)-3.486 F 3.487(ants. Lik)-.1 F(e-)-.1 E 1.441(w\ +ise, if the host has been compromised the information returned may be c\ +ompletely erro-)127 276.6 R(neous and misleading.)127 288.6 Q .521(The \ +Identi\214cation Protocol is not intended as an authorization or access\ + control protocol.)127 304.8 R(At)5.521 E 1.037(best, it pro)127 316.8 R +1.037(vides some additional auditing information with respect to TCP co\ +nnections.)-.15 F(At)6.036 E -.1(wo)127 328.8 S(rst, it can pro).1 E +(vide misleading, incorrect, or maliciously incorrect information.)-.15 +E 1.006(The use of the information returned by this protocol for other \ +than auditing is strongly dis-)127 345 R 2.697(couraged. Speci\214cally) +127 357 R 2.697(,u)-.65 G .197 +(sing Identi\214cation Protocol information to mak)-2.697 F 2.697(ea)-.1 +G .197(ccess control deci-)-2.697 F .514(sions - either as the primary \ +method \(i.e., no other checks\) or as an adjunct to other methods)127 +369 R(may result in a weak)127 381 Q(ening of normal host security)-.1 E +(.)-.65 E 1.779(An Identi\214cation serv)127 397.2 R 1.778(er may re) +-.15 F -.15(ve)-.25 G 1.778 +(al information about users, entities, objects or processes).15 F .336 +(which might normally be considered pri)127 409.2 R -.25(va)-.25 G 2.836 +(te. An).25 F .337(Identi\214cation serv)2.836 F .337(er pro)-.15 F .337 +(vides service which)-.15 F .806 +(is a rough analog of the CallerID services pro)127 421.2 R .806 +(vided by some phone companies and man)-.15 F 3.306(yo)-.15 G(f)-3.306 E +1.397(the same pri)127 433.2 R -.25(va)-.25 G 1.697 -.15(cy c).25 H +1.397(onsiderations and ar).15 F 1.398 +(guments that apply to the CallerID service apply to)-.18 F 3.546 +(Identi\214cation. If)127 445.2 R 1.046(you w)3.546 F(ouldn')-.1 E 3.546 +(tr)-.18 G 1.045(un a "\214nger" serv)-3.546 F 1.045(er due to pri)-.15 +F -.25(va)-.25 G 1.345 -.15(cy c).25 H 1.045(onsiderations you may).15 F +(not w)127 457.2 Q(ant to run this protocol.)-.1 E .376 +(In some cases your system may not w)102 473.4 R .377 +(ork properly with IDENT support due to a b)-.1 F .377(ug in the TCP/IP) +-.2 F 3.675(implementation. The)102 485.4 R 1.175(symptoms will be that\ + for some hosts the SMTP connection will be closed)3.675 F .565 +(almost immediately)102 497.4 R 5.565(.I)-.65 G 3.065(ft)-5.565 G .565 +(his is true or if you do not w)-3.065 F .565(ant to use IDENT)-.1 F +3.066(,y)-.74 G .566(ou should set the IDENT)-3.066 F +(timeout to zero; this will disable the IDENT protocol.)102 509.4 Q F0 +2.5(3. ARGUMENTS)72 533.4 R F1 .018(The complete list of ar)112 549.6 R +.018(guments to)-.18 F F2(sendmail)2.517 E F1 .017 +(is described in detail in Appendix A.)2.517 F .017(Some important)5.017 +F(ar)87 561.6 Q(guments are described here.)-.18 E F0 2.5(3.1. Queue)87 +585.6 R(Inter)2.5 E -.1(va)-.1 G(l).1 E F1 .455(The amount of time betw\ +een forking a process to run through the queue is de\214ned by the)127 +601.8 R F02.956 E F1 2.676(\215ag. If)102 613.8 R .176 +(you run with deli)2.676 F -.15(ve)-.25 G .176(ry mode set to).15 F F0 +(i)2.676 E F1(or)2.676 E F0(b)2.675 E F1 .175(this can be relati)2.675 F +-.15(ve)-.25 G .175(ly lar).15 F .175(ge, since it will only be rel-) +-.18 F -.25(eva)102 625.8 S .206(nt when a host that w).25 F .206(as do) +-.1 F .206(wn comes back up.)-.25 F .207(If you run in)5.206 F F0(q) +2.707 E F1 .207(mode it should be relati)2.707 F -.15(ve)-.25 G .207 +(ly short,).15 F 1.039(since it de\214nes the maximum amount of time th\ +at a message may sit in the queue.)102 637.8 R 1.038(\(See also the) +6.039 F(MinQueueAge option.\))102 649.8 Q 1.335 +(RFC 1123 section 5.3.1.1 says that this v)127 666 R 1.336 +(alue should be at least 30 minutes \(although that)-.25 F +(probably doesn')102 678 Q 2.5(tm)-.18 G(ak)-2.5 E 2.5(es)-.1 G +(ense if you use `)-2.5 E(`queue-only')-.74 E 2.5('m)-.74 G(ode\).)-2.5 +E .365(Notice: the meaning of the interv)127 694.2 R .364 +(al time depends on whether normal queue runners or persis-)-.25 F .207 +(tent queue runners are used.)102 706.2 R -.15(Fo)5.208 G 2.708(rt).15 G +.208(he former)-2.708 F 2.708(,i)-.4 G 2.708(ti)-2.708 G 2.708(st)-2.708 +G .208(he time between subsequent starts of a queue run.)-2.708 F -.15 +(Fo)102 718.2 S 3.35(rt).15 G .85(he latter)-3.35 F 3.35(,i)-.4 G 3.35 +(ti)-3.35 G 3.35(st)-3.35 G .85(he time sendmail w)-3.35 F .849 +(aits after a persistent queue runner has \214nished its w)-.1 F .849 +(ork to)-.1 F 0 Cg EP +%%Page: 24 20 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 193.36(SMM:08-24 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF .41 +(start the ne)102 96 R .41(xt one.)-.15 F .411 +(Hence for persistent queue runners this interv)5.41 F .411 +(al should be v)-.25 F .411(ery lo)-.15 F 1.711 -.65(w, t)-.25 H .411 +(ypically no).65 F(more than tw)102 108 Q 2.5(om)-.1 G(inutes.)-2.5 E F0 +2.5(3.2. Daemon)87 132 R(Mode)2.5 E F1 .085(If you allo)127 148.2 R +2.585(wi)-.25 G .085(ncoming mail o)-2.585 F -.15(ve)-.15 G 2.585(ra).15 +G 2.585(nI)-2.585 G .085(PC connection, you should ha)-2.585 F .384 -.15 +(ve a d)-.2 H .084(aemon running.).15 F(This)5.084 E .069 +(should be set by your)102 160.2 R/F2 10/Times-Italic@0 SF(/etc/r)2.569 +E(c)-.37 E F1 .069(\214le using the)2.569 F F0(\255bd)2.569 E F1 2.57 +(\215ag. The)2.569 F F0(\255bd)2.57 E F1 .07(\215ag and the)2.57 F F0 +2.57 E F1 .07(\215ag may be combined)2.57 F(in one call:)102 172.2 +Q(/usr/sbin/sendmail \255bd \255q30m)142 188.4 Q 1.141(An alternati)127 +208.8 R 1.441 -.15(ve a)-.25 H 1.141(pproach is to in).15 F -.2(vo)-.4 G +1.341 -.1(ke s).2 H 1.141(endmail from).1 F F2(inetd)3.641 E F1 1.141 +(\(8\) \(use the)B F0(\255bs)3.64 E F1 1.14(\255Am \215ags to ask)2.5 F +1.339(sendmail to speak SMTP on its standard input and output and to ru\ +n as MT)102 220.8 R 3.84(A\). This)-.93 F -.1(wo)3.84 G 1.34(rks and).1 +F(allo)102 232.8 Q .323(ws you to wrap)-.25 F F2(sendmail)2.823 E F1 +.323(in a TCP wrapper program, b)2.823 F .323(ut may be a bit slo)-.2 F +.322(wer since the con\214gu-)-.25 F .345 +(ration \214le has to be re-read on e)102 244.8 R -.15(ve)-.25 G .346 +(ry message that comes in.).15 F .346 +(If you do this, you still need to ha)5.346 F .646 -.15(ve a)-.2 H F2 +(sendmail)102 256.8 Q F1(running to \215ush the queue:)2.5 E +(/usr/sbin/sendmail \255q30m)142 273 Q F0 2.5(3.3. F)87 301.2 R(or)-.25 +E(cing the Queue)-.18 E F1 .04(In some cases you may \214nd that the qu\ +eue has gotten clogged for some reason.)127 317.4 R -1.1(Yo)5.04 G 2.54 +(uc)1.1 G .04(an force)-2.54 F 3.184(aq)102 329.4 S .684 +(ueue run using the)-3.184 F F03.184 E F1 .684(\215ag \(with no v) +3.184 F 3.184(alue\). It)-.25 F .684(is entertaining to use the)3.184 F +F03.185 E F1 .685(\215ag \(v)3.185 F .685(erbose\) when)-.15 F +(this is done to w)102 341.4 Q(atch what happens:)-.1 E +(/usr/sbin/sendmail \255q \255v)142 357.6 Q -1.1(Yo)127 378 S 3(uc)1.1 G +.499 +(an also limit the jobs to those with a particular queue identi\214er)-3 +F 2.999(,r)-.4 G .499(ecipient, sender)-2.999 F 2.999(,q)-.4 G(uar) +-2.999 E(-)-.2 E 2.097 +(antine reason, or queue group using one of the queue modi\214ers.)102 +390 R -.15(Fo)7.097 G 4.597(re).15 G 2.097(xample, \231\255qRberk)-4.747 +F(ele)-.1 E<799a>-.15 E 1.364(restricts the queue run to jobs that ha) +102 402 R 1.664 -.15(ve t)-.2 H 1.364(he string \231berk).15 F(ele)-.1 E +1.364(y\232 some)-.15 F 1.363(where in one of the recipient)-.25 F 2.842 +(addresses. Similarly)102 414 R 2.842<2c99>-.65 G .342(\255qSstring\232\ + limits the run to particular senders, \231\255qIstring\232 limits it t\ +o partic-)-2.842 F .408(ular queue identi\214ers, and \231\255qQstring\ +\232 limits it to particular quarantined reasons and only operated)102 +426 R 1.748(on quarantined queue items, and \231\255qGstring\232 limits\ + it to a particular queue group.)102 438 R 1.748(The named)6.748 F .389 +(queue group will be run e)102 450 R -.15(ve)-.25 G 2.889(ni).15 G 2.888 +(fi)-2.889 G 2.888(ti)-2.888 G 2.888(ss)-2.888 G .388(et to ha)-2.888 F +.688 -.15(ve 0 r)-.2 H 2.888(unners. Y).15 F .388(ou may also place an) +-1.1 F F0(!)2.888 E F1 .388(before the)5.388 F F0(I)2.888 E F1(or)2.888 +E F0(R)102 462 Q F1(or)3.052 E F0(S)3.052 E F1(or)3.052 E F0(Q)3.052 E +F1 .552(to indicate that jobs are limited to not including a particular\ + queue identi\214er)3.052 F 3.053(,r)-.4 G(ecipient)-3.053 E .252 +(or sender)102 474 R 5.252(.F)-.55 G .252(or e)-5.402 F .252(xample, \ +\231\255q!Rseattle\232 limits the queue run to jobs that do not ha)-.15 +F .551 -.15(ve t)-.2 H .251(he string \231seat-).15 F .296(tle\232 some) +102 486 R .297(where in one of the recipient addresses.)-.25 F .297 +(Should you need to terminate the queue jobs cur)5.297 F(-)-.2 E +(rently acti)102 498 Q .3 -.15(ve t)-.25 H(hen a SIGTERM to the parent \ +of the process \(or processes\) will cleanly stop the jobs.).15 E F0 2.5 +(3.4. Deb)87 522 R(ugging)-.2 E F1 .256(There are a f)127 538.2 R .256 +(airly lar)-.1 F .256(ge number of deb)-.18 F .256(ug \215ags b)-.2 F +.256(uilt into)-.2 F F2(sendmail)2.756 E F1 5.256(.E)C .256(ach deb) +-5.256 F .256(ug \215ag has a cat-)-.2 F -.15(eg)102 550.2 S .501 +(ory and a le).15 F -.15(ve)-.25 G 3.002(l. Higher).15 F(le)3.002 E -.15 +(ve)-.25 G .502(ls increase the le).15 F -.15(ve)-.25 G 3.002(lo).15 G +3.002(fd)-3.002 G(eb)-3.002 E .502(ugging acti)-.2 F .502 +(vity; in most cases, this means)-.25 F .138 +(to print out more information.)102 562.2 R .138(The con)5.138 F -.15 +(ve)-.4 G .138(ntion is that le).15 F -.15(ve)-.25 G .137 +(ls greater than nine are \231absurd,).15 F 2.637<9a69>-.7 G .137 +(.e., the)-2.637 F(y)-.15 E .869 +(print out so much information that you w)102 574.2 R(ouldn')-.1 E 3.369 +(tn)-.18 G .869(ormally w)-3.369 F .87(ant to see them e)-.1 F .87 +(xcept for deb)-.15 F(ugging)-.2 E(that particular piece of code.)102 +586.2 Q -1.1(Yo)127 602.4 S 2.866(us)1.1 G(hould)-2.866 E F0(ne)2.866 E +-.1(ve)-.15 G(r).1 E F1 .366(run a production sendmail serv)2.866 F .366 +(er in deb)-.15 F .366(ug mode.)-.2 F(Man)5.366 E 2.866(yo)-.15 G 2.866 +(ft)-2.866 G .366(he deb)-2.866 F .366(ug \215ags)-.2 F .907 +(will result in deb)102 614.4 R .907(ug output being sent o)-.2 F -.15 +(ve)-.15 G 3.407(rt).15 G .907(he SMTP channel unless the option)-3.407 +F F03.407 E F1 .907(is used.)3.407 F(This)5.908 E 1.225 +(will confuse man)102 626.4 R 3.725(ym)-.15 G 1.225(ail programs.)-3.725 +F(Ho)6.225 E(we)-.25 E -.15(ve)-.25 G 2.025 -.4(r, f).15 H 1.225 +(or testing purposes, it can be useful when sending).4 F +(mail manually via telnet to the port you are using while deb)102 638.4 +Q(ugging.)-.2 E 2.753(Ad)127 654.6 S(eb)-2.753 E .253(ug cate)-.2 F .254 +(gory is either an inte)-.15 F(ger)-.15 E 2.754(,l)-.4 G(ik)-2.754 E +2.754(e4)-.1 G .254(2, or a name, lik)-2.754 F 2.754(eA)-.1 G 2.754 +(NSI. Y)-2.754 F .254(ou can specify a range)-1.1 F .929(of numeric deb) +102 666.6 R .928(ug cate)-.2 F .928(gories using the syntax 17-42.)-.15 +F -1.1(Yo)5.928 G 3.428(uc)1.1 G .928(an specify a set of named deb) +-3.428 F .928(ug cate-)-.2 F .483(gories using a glob pattern lik)102 +678.6 R 2.984<6599>-.1 G 2.984(sm_trace_*\232. At)-2.984 F .484 +(present, only \231*\232 and \231?\232)2.984 F .484 +(are supported in these)5.484 F(glob patterns.)102 690.6 Q(Deb)127 706.8 +Q(ug \215ags are set using the)-.2 E F02.5 E F1 +(option; the syntax is:)2.5 E 0 Cg EP +%%Page: 25 21 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-25)195.86 E/F1 10/Times-Roman@0 SF(deb)142 96 Q(ug-\215ag:)-.2 E +F036.78 E F1(deb)2.5 E(ug-list)-.2 E(deb)142 108 Q 37.05 +(ug-list: deb)-.2 F(ug-option [ , deb)-.2 E(ug-option ]*)-.2 E(deb)142 +120 Q 23.72(ug-option: deb)-.2 F(ug-cate)-.2 E(gories [ . deb)-.15 E +(ug-le)-.2 E -.15(ve)-.25 G 2.5(l]).15 G(deb)142 132 Q(ug-cate)-.2 E +8.89(gories: inte)-.15 F(ger | inte)-.15 E(ger \255 inte)-.15 E +(ger | cate)-.15 E(gory-pattern)-.15 E(cate)142 144 Q 11.47 +(gory-pattern: [a-zA-Z_*?][a-zA-Z0-9_*?]*)-.15 F(deb)142 156 Q(ug-le)-.2 +E -.15(ve)-.25 G 30.24(l: inte).15 F(ger)-.15 E +(where spaces are for reading ease only)102 172.2 Q 5(.F)-.65 G(or e) +-5.15 E(xample,)-.15 E 58.99(\255d12 Set)142 188.4 R(cate)2.5 E +(gory 12 to le)-.15 E -.15(ve)-.25 G 2.5(l1).15 G 51.49(\255d12.3 Set) +142 200.4 R(cate)2.5 E(gory 12 to le)-.15 E -.15(ve)-.25 G 2.5(l3).15 G +48.35(\255d3\25517 Set)142 212.4 R(cate)2.5 E(gories 3 through 17 to le) +-.15 E -.15(ve)-.25 G 2.5(l1).15 G 40.85(\255d3\25517.4 Set)142 224.4 R +(cate)2.5 E(gories 3 through 17 to le)-.15 E -.15(ve)-.25 G 2.5(l4).15 G +45.66(\255dANSI Set)142 236.4 R(cate)2.5 E(gory ANSI to le)-.15 E -.15 +(ve)-.25 G 2.5(l1).15 G 15.39(\255dsm_trace_*.3 Set)142 248.4 R +(all named cate)2.5 E(gories matching sm_trace_* to le)-.15 E -.15(ve) +-.25 G 2.5(l3).15 G -.15(Fo)102 264.6 S 3.284(rac).15 G .783 +(omplete list of the a)-3.284 F -.25(va)-.2 G .783(ilable deb).25 F .783 +(ug \215ags you will ha)-.2 F 1.083 -.15(ve t)-.2 H 3.283(ol).15 G .783 +(ook at the code and the)-3.283 F/F2 10/Times-Italic@0 SF(TRA)3.283 E +(CE-)-.3 E(FLA)102 276.6 Q(GS)-.35 E F1 1.062 +(\214le in the sendmail distrib)3.561 F 1.062(ution \(the)-.2 F 3.562 +(ya)-.15 G 1.062(re too dynamic to k)-3.562 F 1.062 +(eep this document up to date\).)-.1 F -.15(Fo)102 288.6 S 2.5(ral).15 G +(ist of named deb)-2.5 E(ug cate)-.2 E(gories in the sendmail binary) +-.15 E 2.5(,u)-.65 G(se)-2.5 E(ident /usr/sbin/sendmail | grep Deb)142 +304.8 Q(ug)-.2 E F0 2.5(3.5. Changing)87 333 R(the V)2.5 E +(alues of Options)-.92 E F1(Options can be o)127 349.2 Q -.15(ve)-.15 G +(rridden using the).15 E F02.5 E F1(or)2.5 E F02.5 E F1 +(command line \215ags.)2.5 E -.15(Fo)5 G 2.5(re).15 G(xample,)-2.65 E +(/usr/sbin/sendmail \255oT2m)142 365.4 Q .021(sets the)102 381.6 R F0(T) +2.521 E F1 .021(\(timeout\) option to tw)2.521 F 2.521(om)-.1 G .021 +(inutes for this run only; the equi)-2.521 F -.25(va)-.25 G .02 +(lent line using the long option).25 F(name is)102 393.6 Q +(/usr/sbin/sendmail -O)142 409.8 Q -.35(Ti)-.4 G(meout.queuereturn=2m) +.35 E .72(Some options ha)127 430.2 R 1.02 -.15(ve s)-.2 H .72 +(ecurity implications.).15 F .72(Sendmail allo)5.72 F .72 +(ws you to set these, b)-.25 F .72(ut relinquishes)-.2 F(its set-user) +102 444.2 Q(-ID or set-group-ID permissions thereafter)-.2 E/F3 7 +/Times-Roman@0 SF(12)-4 I F1(.)4 I F0 2.5(3.6. T)87 468.2 R +(rying a Differ)-.74 E(ent Con\214guration File)-.18 E F1(An alternati) +127 484.4 Q .3 -.15(ve c)-.25 H +(on\214guration \214le can be speci\214ed using the).15 E F02.5 E +F1(\215ag; for e)2.5 E(xample,)-.15 E +(/usr/sbin/sendmail \255Ctest.cf \255oQ/tmp/mqueue)142 500.6 Q .68 +(uses the con\214guration \214le)102 516.8 R F2(test.cf)3.18 E F1 .68 +(instead of the def)3.18 F(ault)-.1 E F2(/etc/mail/sendmail.cf)3.18 E(.) +-.15 E F1 .68(If the)5.68 F F03.18 E F1 .68(\215ag has no)3.18 F +-.25(va)102 528.8 S(lue it def).25 E(aults to)-.1 E F2(sendmail.cf)2.5 E +F1(in the current directory)2.5 E(.)-.65 E F2(Sendmail)127 545 Q F1(gi) +2.571 E -.15(ve)-.25 G 2.571(su).15 G 2.571(ps)-2.571 G(et-user)-2.571 E +.071(-ID root permissions \(if it has been installed set-user)-.2 F .07 +(-ID root\) when)-.2 F .779(you use this \215ag, so it is common to use\ + a publicly writable directory \(such as /tmp\) as the queue)102 557 R +(directory \(QueueDirectory or Q option\) while testing.)102 569 Q F0 +2.5(3.7. Logging)87 593 R -.74(Tr)2.5 G(af\214c).74 E F1(Man)127 609.2 Q +3.255(yS)-.15 G .754 +(MTP implementations do not fully implement the protocol.)-3.255 F -.15 +(Fo)5.754 G 3.254(re).15 G .754(xample, some per)-3.404 F(-)-.2 E 1.178 +(sonal computer based SMTPs do not understand continuation lines in rep\ +ly codes.)102 621.2 R 1.178(These can be)6.178 F -.15(ve)102 633.2 S .13 +(ry hard to trace.).15 F .13 +(If you suspect such a problem, you can set traf)5.13 F .13 +(\214c logging using the)-.25 F F02.63 E F1 2.63(\215ag. F)2.63 F +(or)-.15 E -.15(ex)102 645.2 S(ample,).15 E .32 LW 76 669.2 72 669.2 DL +80 669.2 76 669.2 DL 84 669.2 80 669.2 DL 88 669.2 84 669.2 DL 92 669.2 +88 669.2 DL 96 669.2 92 669.2 DL 100 669.2 96 669.2 DL 104 669.2 100 +669.2 DL 108 669.2 104 669.2 DL 112 669.2 108 669.2 DL 116 669.2 112 +669.2 DL 120 669.2 116 669.2 DL 124 669.2 120 669.2 DL 128 669.2 124 +669.2 DL 132 669.2 128 669.2 DL 136 669.2 132 669.2 DL 140 669.2 136 +669.2 DL 144 669.2 140 669.2 DL 148 669.2 144 669.2 DL 152 669.2 148 +669.2 DL 156 669.2 152 669.2 DL 160 669.2 156 669.2 DL 164 669.2 160 +669.2 DL 168 669.2 164 669.2 DL 172 669.2 168 669.2 DL 176 669.2 172 +669.2 DL 180 669.2 176 669.2 DL 184 669.2 180 669.2 DL 188 669.2 184 +669.2 DL 192 669.2 188 669.2 DL 196 669.2 192 669.2 DL 200 669.2 196 +669.2 DL 204 669.2 200 669.2 DL 208 669.2 204 669.2 DL 212 669.2 208 +669.2 DL 216 669.2 212 669.2 DL/F4 5/Times-Roman@0 SF(12)93.6 679.6 Q/F5 +8/Times-Roman@0 SF .497(That is, it sets its ef)3.2 J(fecti)-.2 E .737 +-.12(ve u)-.2 H .497(id to the real uid; thus, if you are e).12 F -.12 +(xe)-.12 G .497(cuting as root, as from root').12 F 2.497(sc)-.44 G .497 +(rontab \214le or during system)-2.497 F +(startup the root permissions will still be honored.)72 692.4 Q 0 Cg EP +%%Page: 26 22 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 193.36(SMM:08-26 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF +(/usr/sbin/sendmail \255X /tmp/traf)142 96 Q(\214c \255bd)-.25 E +(will log all traf)102 112.2 Q(\214c in the \214le)-.25 E/F2 10 +/Times-Italic@0 SF(/tmp/tr)2.5 E(af)-.15 E<8c63>-.18 E F1(.)A .997 +(This logs a lot of data v)127 128.4 R .997(ery quickly and should)-.15 +F F0(NEVER)3.497 E F1 .998(be used during normal operations.)3.498 F +.963(After starting up such a daemon, force the errant implementation t\ +o send a message to your host.)102 140.4 R .608(All message traf)102 +152.4 R .608(\214c in and out of)-.25 F F2(sendmail)3.109 E F1 3.109(,i) +C .609(ncluding the incoming SMTP traf)-3.109 F .609 +(\214c, will be logged in)-.25 F(this \214le.)102 164.4 Q F0 2.5(3.8. T) +87 188.4 R(esting Con\214guration Files)-.92 E F1 .644(When you b)127 +204.6 R .644(uild a con\214guration table, you can do a certain amount \ +of testing using the \231test)-.2 F(mode\232 of)102 216.6 Q F2(sendmail) +2.5 E F1 5(.F)C(or e)-5.15 E(xample, you could in)-.15 E -.2(vo)-.4 G +-.1(ke).2 G F2(sendmail)2.6 E F1(as:)2.5 E(sendmail \255bt \255Ctest.cf) +142 232.8 Q .447(which w)102 249 R .447(ould read the con\214guration \ +\214le \231test.cf\232 and enter test mode.)-.1 F .448 +(In this mode, you enter lines)5.448 F(of the form:)102 261 Q +(rwset address)142 277.2 Q(where)102 293.4 Q F2(rwset)3.007 E F1 .507 +(is the re)3.007 F .507(writing set you w)-.25 F .507(ant to use and)-.1 +F F2(addr)3.006 E(ess)-.37 E F1 .506(is an address to apply the set to.) +3.006 F -.7(Te)5.506 G(st).7 E .793(mode sho)102 305.4 R .794 +(ws you the steps it tak)-.25 F .794(es as it proceeds, \214nally sho) +-.1 F .794(wing you the address it ends up with.)-.25 F -1.1(Yo)102 +317.4 S 3.332(um)1.1 G .832(ay use a comma separated list of rwsets for\ + sequential application of rules to an input.)-3.332 F -.15(Fo)5.831 G +(r).15 E -.15(ex)102 329.4 S(ample:).15 E(3,1,21,4 monet:bollard)142 +345.6 Q .622 +(\214rst applies ruleset three to the input \231monet:bollard.)102 361.8 +R 5.622<9a52>-.7 G .622(uleset one is then applied to the output of) +-5.622 F(ruleset three, follo)102 373.8 Q +(wed similarly by rulesets twenty-one and four)-.25 E(.)-.55 E 1.084(If\ + you need more detail, you can also use the \231\255d21\232 \215ag to t\ +urn on more deb)127 390 R 3.584(ugging. F)-.2 F(or)-.15 E -.15(ex)102 +402 S(ample,).15 E(sendmail \255bt \255d21.99)142 418.2 Q .689 +(turns on an incredible amount of information; a single w)102 434.4 R +.689(ord address is probably going to print out)-.1 F(se)102 446.4 Q +-.15(ve)-.25 G(ral pages w).15 E(orth of information.)-.1 E -1.1(Yo)127 +462.6 S 2.575(us)1.1 G .075(hould be w)-2.575 F .075 +(arned that internally)-.1 F(,)-.65 E F2(sendmail)2.575 E F1 .075 +(applies ruleset 3 to all addresses.)2.575 F .074(In test mode)5.074 F +(you will ha)102 474.6 Q .3 -.15(ve t)-.2 H 2.5(od).15 G 2.5(ot)-2.5 G +(hat manually)-2.5 E 5(.F)-.65 G(or e)-5.15 E(xample, older v)-.15 E +(ersions allo)-.15 E(wed you to use)-.25 E 2.5(0b)142 490.8 S +(ruce@broadcast.son)-2.5 E -.65(y.)-.15 G(com).65 E(This v)102 507 Q +(ersion requires that you use:)-.15 E(3,0 bruce@broadcast.son)142 523.2 +Q -.65(y.)-.15 G(com).65 E(As of v)127 543.6 Q +(ersion 8.7, some other syntax)-.15 E(es are a)-.15 E -.25(va)-.2 G +(ilable in test mode:).25 E -.834(.D x v)102 559.8 R 30.038 +(alue de\214nes)-.25 F(macro)2.952 E F2(x)2.952 E F1 .452(to ha)2.952 F +.752 -.15(ve t)-.2 H .452(he indicated).15 F F2(value)2.952 E F1 5.452 +(.T)C .453(his is useful when deb)-5.452 F .453(ugging rules)-.2 F +(that use the)174 571.8 Q F0($&)2.5 E F2(x)A F1(syntax.)2.5 E -.834 +(.C c v)102 588 R 31.148(alue adds)-.25 F(the indicated)2.5 E F2(value) +2.5 E F1(to class)2.5 E F2(c)2.5 E F1(.)A -.834(=S ruleset)102 604.2 R +(dumps the contents of the indicated ruleset.)32.474 E -.834(\255d deb) +102 620.4 R 11.854(ug-spec is)-.2 F(equi)2.5 E -.25(va)-.25 G +(lent to the command-line \215ag.).25 E -1.11(Ve)102 636.6 S +(rsion 8.9 introduced more features:)1.11 E 67.56(?s)102 652.8 S(ho) +-67.56 E(ws a help message.)-.25 E 54.97(=M display)102 669 R(the kno) +2.5 E(wn mailers.)-.25 E 56.72($m print)102 685.2 R(the v)2.5 E +(alue of macro m.)-.25 E 54.42($=c print)102 701.4 R +(the contents of class c.)2.5 E 0 Cg EP +%%Page: 27 23 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-27)195.86 E/F1 10/Times-Roman@0 SF(/mx host)102 96 Q +(returns the MX records for `host'.)37.27 E(/parse address)102 112.2 Q +(parse address, returning the v)15.63 E(alue of)-.25 E/F2 10 +/Times-Italic@0 SF(cr)2.5 E(ac)-.15 E(kaddr)-.2 E F1 2.5(,a)C +(nd the parsed address.)-2.5 E(/try mailer addr)102 128.4 Q(re)9.79 E +(write address into the form it will ha)-.25 E .3 -.15(ve w)-.2 H +(hen presented to the indicated mailer).15 E(.)-.55 E +(/try\215ags \215ags)102 144.6 Q 1.006(set \215ags used by parsing.) +17.83 F 1.005(The \215ags can be `H' for Header or `E' for En)6.006 F +-.15(ve)-.4 G(lope,).15 E .62(and `S' for Sender or `R' for Recipient.) +174 156.6 R .62(These can be combined, `HR' sets \215ags)5.62 F +(for header recipients.)174 168.6 Q(/canon hostname)102 184.8 Q +(try to canonify hostname.)4.51 E(/map mapname k)102 201 Q -.15(ey)-.1 G +(look up `k)174 213 Q -.15(ey)-.1 G 2.5('i).15 G 2.5(nt)-2.5 G +(he indicated `mapname'.)-2.5 E 51.16(/quit quit)102 229.2 R +(address test mode.)2.5 E F0 2.5(3.9. P)87 245.4 R +(ersistent Host Status Inf)-.2 E(ormation)-.25 E F1(When)127 261.6 Q F0 +(HostStatusDir)2.57 E(ectory)-.18 E F1 .069 +(is enabled, information about the status of hosts is maintained on)2.57 +F .248(disk and can thus be shared between dif)102 273.6 R .249 +(ferent instantiations of)-.25 F F2(sendmail)2.749 E F1 5.249(.T)C .249 +(he status of the last con-)-5.249 F +(nection with each remote host may be vie)102 285.6 Q +(wed with the command:)-.25 E(sendmail \255bh)142 301.8 Q +(This information may be \215ushed with the command:)102 318 Q +(sendmail \255bH)142 334.2 Q 1.535(Flushing the information pre)102 +350.4 R -.15(ve)-.25 G 1.535(nts ne).15 F(w)-.25 E F2(sendmail)4.035 E +F1 1.535(processes from loading it, b)4.035 F 1.534(ut does not pre)-.2 +F -.15(ve)-.25 G(nt).15 E -.15(ex)102 362.4 S +(isting processes from using the status information that the).15 E 2.5 +(ya)-.15 G(lready ha)-2.5 E -.15(ve)-.2 G(.).15 E F0 2.5(4. TUNING)72 +386.4 R F1 1.922 +(There are a number of con\214guration parameters you may w)112 402.6 R +1.922(ant to change, depending on the)-.1 F .367 +(requirements of your site.)87 414.6 R .366 +(Most of these are set using an option in the con\214guration \214le.) +5.367 F -.15(Fo)5.366 G 2.866(re).15 G(xample,)-3.016 E +(the line \231O T)87 426.6 Q +(imeout.queuereturn=5d\232 sets option \231T)-.35 E +(imeout.queuereturn\232 to the v)-.35 E(alue \2315d\232 \(\214v)-.25 E +2.5(ed)-.15 G(ays\).)-2.5 E .735(Most of these options ha)112 442.8 R +1.035 -.15(ve a)-.2 H .735(ppropriate def).15 F .735 +(aults for most sites.)-.1 F(Ho)5.735 E(we)-.25 E -.15(ve)-.25 G 1.535 +-.4(r, s).15 H .735(ites ha).4 F .735(ving v)-.2 F .735(ery high)-.15 F +.046(mail loads may \214nd the)87 454.8 R 2.546(yn)-.15 G .046 +(eed to tune them as appropriate for their mail load.)-2.546 F .045 +(In particular)5.045 F 2.545(,s)-.4 G .045(ites e)-2.545 F(xperi-)-.15 E +1.087(encing a lar)87 466.8 R 1.087(ge number of small messages, man) +-.18 F 3.587(yo)-.15 G 3.588(fw)-3.587 G 1.088(hich are deli)-3.588 F +-.15(ve)-.25 G 1.088(red to man).15 F 3.588(yr)-.15 G 1.088 +(ecipients, may \214nd)-3.588 F(that the)87 478.8 Q 2.5(yn)-.15 G +(eed to adjust the parameters dealing with queue priorities.)-2.5 E .524 +(All v)112 495 R .524(ersions of)-.15 F F2(sendmail)3.024 E F1 .524 +(prior to 8.7 had single character option names.)3.024 F .523 +(As of 8.7, options ha)5.524 F -.15(ve)-.2 G 1.215 +(long \(multi-character names\).)87 507 R 1.216 +(Although old short names are still accepted, most ne)6.215 F 3.716(wo) +-.25 G 1.216(ptions do not)-3.716 F(ha)87 519 Q .3 -.15(ve s)-.2 H +(hort equi).15 E -.25(va)-.25 G(lents.).25 E .802 +(This section only describes the options you are most lik)112 535.2 R +.802(ely to w)-.1 F .801(ant to tweak; read section 5 for)-.1 F +(more details.)87 547.2 Q F0 2.5(4.1. T)87 571.2 R(imeouts)-.18 E F1 +.582(All time interv)127 587.4 R .583 +(als are set using a scaled syntax.)-.25 F -.15(Fo)5.583 G 3.083(re).15 +G .583(xample, \23110m\232 represents ten minutes,)-3.233 F +(whereas \2312h30m\232 represents tw)102 599.4 Q 2.5(oa)-.1 G +(nd a half hours.)-2.5 E(The full set of scales is:)5 E 16.11(ss)142 +615.6 S(econds)-16.11 E 12.22(mm)142 627.6 S(inutes)-12.22 E 15(hh)142 +639.6 S(ours)-15 E 15(dd)142 651.6 S(ays)-15 E 12.78(ww)142 663.6 S +(eeks)-12.78 E F0 2.5(4.1.1. Queue)102 691.8 R(inter)2.5 E -.1(va)-.1 G +(l).1 E F1 .18(The ar)142 708 R .18(gument to the)-.18 F F02.68 E +F1 .18(\215ag speci\214es ho)2.68 F 2.68(wo)-.25 G .18 +(ften a sub-daemon will run the queue.)-2.68 F .18(This is)5.18 F .792 +(typically set to between \214fteen minutes and one hour)117 720 R 5.793 +(.I)-.55 G 3.293(fn)-5.793 G .793 +(ot set, or set to zero, the queue will)-3.293 F 0 Cg EP +%%Page: 28 24 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 193.36(SMM:08-28 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF .048 +(not be run automatically)117 96 R 5.048(.R)-.65 G .048 +(FC 1123 section 5.3.1.1 recommends that this be at least 30 minutes.) +-5.048 F .5(Should you need to terminate the queue jobs currently acti) +117 108 R .801 -.15(ve t)-.25 H .501(hen a SIGTERM to the parent of).15 +F(the process \(or processes\) will cleanly stop the jobs.)117 120 Q F0 +2.5(4.1.2. Read)102 144 R(timeouts)2.5 E F1 -.35(Ti)142 160.2 S .298 +(meouts all ha).35 F .598 -.15(ve o)-.2 H .297(ption names \231T).15 F +(imeout.)-.35 E/F2 10/Times-Italic@0 SF(suboption)A F1 2.797(\232. Most) +B .297(of these control SMTP oper)2.797 F(-)-.2 E 3.898(ations. The)117 +172.2 R(recognized)3.898 E F2(suboption)3.898 E F1 1.398(s, their def)B +1.398(ault v)-.1 F 1.398(alues, and the minimum v)-.25 F 1.399 +(alues allo)-.25 F 1.399(wed by)-.25 F +(RFC 2821 section 4.5.3.2 \(or RFC 1123 section 5.3.2\) are:)117 184.2 Q +38.4(connect The)117 200.4 R .161(time to w)2.661 F .161 +(ait for an SMTP connection to open \(the)-.1 F F2(connect)2.66 E F1 .16 +(\(2\) system call\))B 1.153([0, unspeci\214ed].)189 212.4 R 1.153 +(If zero, uses the k)6.153 F 1.153(ernel def)-.1 F 3.653(ault. In)-.1 F +1.153(no case can this option)3.653 F -.15(ex)189 224.4 S .519 +(tend the timeout longer than the k).15 F .518(ernel pro)-.1 F .518 +(vides, b)-.15 F .518(ut it can shorten it.)-.2 F(This)5.518 E .579 +(is to get around k)189 236.4 R .579(ernels that pro)-.1 F .579 +(vide an absurdly long connection timeout \(90)-.15 F +(minutes in one case\).)189 248.4 Q 35.62(iconnect The)117 264.6 R .311 +(same as)2.811 F F2(connect,)2.811 E F1 -.15(ex)2.811 G .311 +(cept it applies only to the initial attempt to connect to).15 F 2.75 +(ah)189 276.6 S .25(ost for a gi)-2.75 F -.15(ve)-.25 G 2.75(nm).15 G +.25(essage [0, unspeci\214ed].)-2.75 F .25 +(The concept is that this should be)5.25 F -.15(ve)189 288.6 S .767 +(ry short \(a fe).15 F 3.267(ws)-.25 G .767 +(econds\); hosts that are well connected and responsi)-3.267 F 1.066 +-.15(ve w)-.25 H(ill).15 E .026(thus be serviced immediately)189 300.6 R +5.026(.H)-.65 G .026(osts that are slo)-5.026 F 2.526(ww)-.25 G .026 +(ill not hold up other deli)-2.526 F(v-)-.25 E +(eries in the initial deli)189 312.6 Q -.15(ve)-.25 G(ry attempt.).15 E +33.96(aconnect [0,)117 328.8 R 1.708(unspeci\214ed] The o)4.208 F -.15 +(ve)-.15 G 1.707(rall timeout w).15 F 1.707 +(aiting for all connection for a single)-.1 F(deli)189 340.8 Q -.15(ve) +-.25 G .152(ry attempt to succeed.).15 F .152(If 0, no o)5.152 F -.15 +(ve)-.15 G .152(rall limit is applied.).15 F .153(This can be used)5.152 +F .521(to restrict the total amount of time trying to connect to a long\ + list of host that)189 352.8 R .514 +(could accept an e-mail for the recipient.)189 364.8 R .514 +(This timeout does not apply to)5.514 F F0 -.25(Fa)3.014 G(ll-).25 E +(backMXhost)189 376.8 Q F1 2.678(,i)C .177(.e., if the time is e)-2.678 +F .177(xhausted, the)-.15 F F0 -.25(Fa)2.677 G(llbackMXhost).25 E F1 +.177(is tried ne)2.677 F(xt.)-.15 E 46.16(initial The)117 393 R -.1(wa) +2.5 G(it for the initial 220 greeting message [5m, 5m].).1 E 52.28 +(helo The)117 409.2 R -.1(wa)4.226 G 1.727 +(it for a reply from a HELO or EHLO command [5m, unspeci\214ed].).1 F .1 +(This may require a host name lookup, so \214v)189 421.2 R 2.6(em)-.15 G +.1(inutes is probably a reasonable)-2.6 F(minimum.)189 433.2 Q 46.72 +(mail\207 The)117 449.4 R -.1(wa)2.5 G +(it for a reply from a MAIL command [10m, 5m].).1 E 48.95(rcpt\207 The) +117 465.6 R -.1(wa)3.481 G .981 +(it for a reply from a RCPT command [1h, 5m].).1 F .982 +(This should be long)5.982 F 1.556 +(because it could be pointing at a list that tak)189 477.6 R 1.556 +(es a long time to e)-.1 F 1.556(xpand \(see)-.15 F(belo)189 489.6 Q +(w\).)-.25 E 34.5(datainit\207 The)117 505.8 R -.1(wa)2.5 G +(it for a reply from a D).1 E -1.21 -1.11(AT A)-.4 H(command [5m, 2m].) +3.61 E 20.62(datablock\207\210 The)117 522 R -.1(wa)2.696 G .196 +(it for reading a data block \(that is, the body of the message\).).1 F +.196([1h, 3m].)5.196 F .621(This should be long because it also applies\ + to programs piping input to)189 534 R F2(send-)3.12 E(mail)189 546 Q F1 +(which ha)2.5 E .3 -.15(ve n)-.2 H 2.5(og).15 G(uarantee of promptness.) +-2.5 E 30.06(data\214nal\207 The)117 562.2 R -.1(wa)2.806 G .306 +(it for a reply from the dot terminating a message.).1 F .306 +([1h, 10m].)5.306 F .306(If this is)5.306 F .884 +(shorter than the time actually needed for the recei)189 574.2 R -.15 +(ve)-.25 G 3.383(rt).15 G 3.383(od)-3.383 G(eli)-3.383 E -.15(ve)-.25 G +3.383(rt).15 G .883(he message,)-3.383 F(duplicates will be generated.) +189 586.2 Q(This is discussed in RFC 1047.)5 E 55.06(rset The)117 602.4 +R -.1(wa)2.5 G(it for a reply from a RSET command [5m, unspeci\214ed].) +.1 E 53.94(quit The)117 618.6 R -.1(wa)2.5 G(it for a reply from a Q).1 +E(UIT command [2m, unspeci\214ed].)-.1 E 50.61(misc The)117 634.8 R -.1 +(wa)2.76 G .261(it for a reply from miscellaneous \(b).1 F .261 +(ut short\) commands such as NOOP)-.2 F +(\(no-operation\) and VERB \(go into v)189 646.8 Q(erbose mode\).)-.15 E +([2m, unspeci\214ed].)5 E 20.06(command\207\210 In)117 663 R(serv)2.5 E +(er SMTP)-.15 E 2.5(,t)-1.11 G(he time to w)-2.5 E +(ait for another command.)-.1 E([1h, 5m].)5 E 44.5(ident\210 The)117 +681.2 R(timeout w)2.5 E(aiting for a reply to an IDENT query [5s)-.1 E +/F3 7/Times-Roman@0 SF(13)-4 I F1 2.5(,u)4 K(nspeci\214ed].)-2.5 E .32 +LW 76 690.8 72 690.8 DL 80 690.8 76 690.8 DL 84 690.8 80 690.8 DL 88 +690.8 84 690.8 DL 92 690.8 88 690.8 DL 96 690.8 92 690.8 DL 100 690.8 96 +690.8 DL 104 690.8 100 690.8 DL 108 690.8 104 690.8 DL 112 690.8 108 +690.8 DL 116 690.8 112 690.8 DL 120 690.8 116 690.8 DL 124 690.8 120 +690.8 DL 128 690.8 124 690.8 DL 132 690.8 128 690.8 DL 136 690.8 132 +690.8 DL 140 690.8 136 690.8 DL 144 690.8 140 690.8 DL 148 690.8 144 +690.8 DL 152 690.8 148 690.8 DL 156 690.8 152 690.8 DL 160 690.8 156 +690.8 DL 164 690.8 160 690.8 DL 168 690.8 164 690.8 DL 172 690.8 168 +690.8 DL 176 690.8 172 690.8 DL 180 690.8 176 690.8 DL 184 690.8 180 +690.8 DL 188 690.8 184 690.8 DL 192 690.8 188 690.8 DL 196 690.8 192 +690.8 DL 200 690.8 196 690.8 DL 204 690.8 200 690.8 DL 208 690.8 204 +690.8 DL 212 690.8 208 690.8 DL 216 690.8 212 690.8 DL/F4 5 +/Times-Roman@0 SF(13)93.6 701.2 Q/F5 8/Times-Roman@0 SF +(On some systems the def)3.2 I(ault is zero to turn the protocol of)-.08 +E 2(fe)-.2 G(ntirely)-2 E(.)-.52 E 0 Cg EP +%%Page: 29 25 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-29)195.86 E/F1 10/Times-Roman@0 SF 53.94(lhlo The)117 96 R -.1 +(wa)2.5 G(it for a reply to an LMTP LHLO command [2m, unspeci\214ed].).1 +E 52.28(auth The)117 112.2 R(timeout for a reply in an SMTP A)2.5 E +(UTH dialogue [10m, unspeci\214ed].)-.55 E 42.83(starttls The)117 128.4 +R .141(timeout for a reply to an SMTP ST)2.641 F(AR)-.93 E .14 +(TTLS command and the TLS hand-)-.6 F(shak)189 140.4 Q 2.5(e[)-.1 G +(1h, unspeci\214ed].)-2.5 E 32.28(\214leopen\210 The)117 156.6 R +(timeout for opening .forw)2.5 E(ard and :include: \214les [60s, none].) +-.1 E 36.17(control\210 The)117 172.8 R .241 +(timeout for a complete control sock)2.74 F .241 +(et transaction to complete [2m, none].)-.1 F 25.05(hoststatus\210 Ho) +117 189 R 4.142(wl)-.25 G 1.642 +(ong status information about a host \(e.g., host do)-4.142 F 1.641 +(wn\) will be cached)-.25 F +(before it is considered stale [30m, unspeci\214ed].)189 201 Q(resolv) +117 217.2 Q(er)-.15 E 3.28(.retrans\210 The)-.55 F(resolv)4.274 E(er') +-.15 E 4.274(sr)-.55 G 1.774(etransmission time interv)-4.274 F 1.775 +(al \(in seconds\) [v)-.25 F 4.275(aries]. Sets)-.25 F(both)4.275 E/F2 +10/Times-Italic@0 SF -.55(Ti)189 229.2 S(meout.r).55 E(esolver)-.37 E +(.r)-1.11 E(etr)-.37 E(ans.\214r)-.15 E(st)-.1 E F1(and)2.5 E F2 -.55 +(Ti)2.5 G(meout.r).55 E(esolver)-.37 E(.r)-1.11 E(etr)-.37 E(ans.normal) +-.15 E F1(.)A(resolv)117 245.4 Q(er)-.15 E(.retrans.\214rst\210)-.55 E +.318(The resolv)189 257.4 R(er')-.15 E 2.818(sr)-.55 G .318 +(etransmission time interv)-2.818 F .317 +(al \(in seconds\) for the \214rst attempt to)-.25 F(deli)189 269.4 Q +-.15(ve)-.25 G 2.5(ram).15 G(essage [v)-2.5 E(aries].)-.25 E(resolv)117 +285.6 Q(er)-.15 E(.retrans.normal\210)-.55 E 3.554(The resolv)189 297.6 +R(er')-.15 E 6.054(sr)-.55 G 3.554(etransmission time interv)-6.054 F +3.555(al \(in seconds\) for all resolv)-.25 F(er)-.15 E(lookups e)189 +309.6 Q(xcept the \214rst deli)-.15 E -.15(ve)-.25 G(ry attempt [v).15 E +(aries].)-.25 E(resolv)117 325.8 Q(er)-.15 E 11.61(.retry\210 The)-.55 F +3.838(number of times to retransmit a resolv)6.339 F 3.838(er query)-.15 +F 8.838(.S)-.65 G 3.838(ets both)-8.838 F F2 -.55(Ti)6.338 G(me-).55 E +(out.r)189 337.8 Q(esolver)-.37 E(.r)-1.11 E(etry)-.37 E(.\214r)-.55 E +(st)-.1 E F1(and)2.5 E F2 -.55(Ti)2.5 G(meout.r).55 E(esolver)-.37 E(.r) +-1.11 E(etry)-.37 E(.normal)-.55 E F1([v)2.5 E(aries].)-.25 E(resolv)117 +354 Q(er)-.15 E(.retry)-.55 E(.\214rst\210)-.65 E 1.66 +(The number of times to retransmit a resolv)189 366 R 1.66 +(er query for the \214rst attempt to)-.15 F(deli)189 378 Q -.15(ve)-.25 +G 2.5(ram).15 G(essage [v)-2.5 E(aries].)-.25 E(resolv)117 394.2 Q(er) +-.15 E(.retry)-.55 E(.normal\210)-.65 E +(The number of times to retransmit a resolv)189 406.2 Q +(er query for all resolv)-.15 E(er lookups)-.15 E -.15(ex)191.5 418.2 S +(cept the \214rst deli).15 E -.15(ve)-.25 G(ry attempt [v).15 E(aries].) +-.25 E -.15(Fo)117 434.4 S 4.609(rc).15 G 2.109 +(ompatibility with old con\214guration \214les, if no)-4.609 F F2 +(suboption)4.608 E F1 2.108(is speci\214ed, all the timeouts)4.608 F +(mark)117 446.4 Q .059 +(ed with a dagger \(\207\) are set to the indicated v)-.1 F 2.559 +(alue. All)-.25 F -.2(bu)2.559 G 2.559(tt).2 G .059(hose mark)-2.559 F +.059(ed with a double dag-)-.1 F(ger \(\210\) apply to client SMTP)117 +458.4 Q(.)-1.11 E -.15(Fo)142 474.6 S 2.5(re).15 G(xample, the lines:) +-2.65 E 2.5(OT)157 490.8 S(imeout.command=25m)-2.85 E 2.5(OT)157 502.8 S +(imeout.datablock=3h)-2.85 E .344(sets the serv)117 519 R .344(er SMTP \ +command timeout to 25 minutes and the input data block timeout to three) +-.15 F(hours.)117 531 Q F0 2.5(4.1.3. Message)102 555 R(timeouts)2.5 E +F1 .463(After sitting in the queue for a fe)142 571.2 R 2.964(wd)-.25 G +.464(ays, an undeli)-2.964 F -.15(ve)-.25 G .464 +(rable message will time out.).15 F .464(This is)5.464 F .165 +(to insure that at least the sender is a)117 583.2 R -.1(wa)-.15 G .165 +(re of the inability to send a message.).1 F .164(The timeout is typi-) +5.164 F .56(cally set to \214v)117 595.2 R 3.06(ed)-.15 G 3.06(ays. It) +-3.06 F .56(is sometimes considered con)3.06 F -.15(ve)-.4 G .56 +(nient to also send a w).15 F .56(arning message if)-.1 F .236 +(the message is in the queue longer than a fe)117 607.2 R 2.736(wh)-.25 +G .236(ours \(assuming you normally ha)-2.736 F .536 -.15(ve g)-.2 H +.236(ood connec-).15 F(ti)117 619.2 Q 2.073 +(vity; if your messages normally took se)-.25 F -.15(ve)-.25 G 2.073 +(ral hours to send you w).15 F(ouldn')-.1 E 4.574(tw)-.18 G 2.074 +(ant to do this)-4.674 F .794(because it w)117 631.2 R(ouldn')-.1 E +3.294(tb)-.18 G 3.294(ea)-3.294 G 3.294(nu)-3.294 G .794(nusual e)-3.294 +F -.15(ve)-.25 G 3.294(nt\). These).15 F .794 +(timeouts are set using the)3.294 F F0 -.18(Ti)3.293 G(meout.queuer).18 +E(e-)-.18 E(tur)117 643.2 Q(n)-.15 E F1(and)3.075 E F0 -.18(Ti)3.075 G +(meout.queuewar).18 E(n)-.15 E F1 .576 +(options in the con\214guration \214le \(pre)3.076 F .576 +(viously both were set using)-.25 F(the)117 655.2 Q F0(T)2.5 E F1 +(option\).)2.5 E 1.368(If the message is submitted using the)142 671.4 R +/F3 9/Times-Roman@0 SF(NO)3.867 E 1.617(TIFY SMTP)-.36 F F1 -.15(ex) +3.867 G 1.367(tension, w).15 F 1.367(arning messages will)-.1 F .888 +(only be sent if)117 683.4 R F3(NO)3.388 E(TIFY=DELA)-.36 E(Y)-.945 E F1 +.888(is speci\214ed.)3.388 F .888(The queuereturn and queue)5.888 F -.1 +(wa)-.25 G .888(rn timeouts can be).1 F .67(further quali\214ed with a \ +tag based on the Precedence: \214eld in the message; the)117 695.4 R +3.169(ym)-.15 G .669(ust be one of)-3.169 F(\231ur)117 707.4 Q .938 +(gent\232 \(indicating a positi)-.18 F 1.238 -.15(ve n)-.25 H .938 +(on-zero precedence\), \231normal\232 \(indicating a zero precedence\),) +.15 F 14.022(or \231non-ur)117 719.4 R 14.022(gent\232 \(indicating ne) +-.18 F -.05(ga)-.15 G(ti).05 E 14.321 -.15(ve p)-.25 H 16.521 +(recedences\). F).15 F 14.021(or e)-.15 F 14.021(xample, setting)-.15 F +0 Cg EP +%%Page: 30 26 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 193.36(SMM:08-30 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF<9954>117 +96 Q(imeout.queue)-.35 E -.1(wa)-.25 G(rn.ur).1 E .183 +(gent=1h\232 sets the w)-.18 F .184(arning timeout for ur)-.1 F .184 +(gent messages only to one hour)-.18 F(.)-.55 E .015(The def)117 108 R +.015(ault if no precedence is indicated is to set the timeout for all p\ +recedences.)-.1 F .014(If the message)5.014 F 3.288(has a normal \(def) +117 120 R 3.288(ault\) precedence and it is a deli)-.1 F -.15(ve)-.25 G +3.289(ry status noti\214cation \(DSN\),).15 F F0 -.18(Ti)5.789 G(me-).18 +E(out.queuer)117 132 Q(etur)-.18 E(n.dsn)-.15 E F1(and)2.751 E F0 -.18 +(Ti)2.751 G(meout.queuewar).18 E(n.dsn)-.15 E F1 .251(can be used to gi) +2.751 F .551 -.15(ve a)-.25 H 2.751(na).15 G(lternati)-2.751 E .551 -.15 +(ve w)-.25 H .25(arn and).05 F 2.027(return time for DSNs.)117 144 R +2.027(The v)7.027 F 2.027(alue "no)-.25 F 2.027(w" can be used for -O T) +-.25 F 2.028(imeout.queuereturn to return)-.35 F .901(entries immediate\ +ly during a queue run, e.g., to bounce messages independent of their ti\ +me in)117 156 R(the queue.)117 168 Q .28 +(Since these options are global, and since you cannot kno)142 184.2 R(w) +-.25 E/F2 10/Times-Italic@0 SF 2.78(ap)2.78 G(riori)-2.78 E F1(ho)2.78 E +2.78(wl)-.25 G .28(ong another host)-2.78 F .476 +(outside your domain will be do)117 196.2 R .475(wn, a \214v)-.25 F +2.975(ed)-.15 G .475(ay timeout is recommended.)-2.975 F .475(This allo) +5.475 F .475(ws a recipient)-.25 F 1.579(to \214x the problem e)117 +208.2 R -.15(ve)-.25 G 4.079(ni).15 G 4.079(fi)-4.079 G 4.079(to)-4.079 +G 1.579(ccurs at the be)-4.079 F 1.58(ginning of a long week)-.15 F 4.08 +(end. RFC)-.1 F 1.58(1123 section)4.08 F +(5.3.1.1 says that this parameter should be `)117 220.2 Q +(`at least 4\2555 days')-.74 E('.)-.74 E(The)142 236.4 Q F0 -.18(Ti) +2.923 G(meout.queuewar).18 E(n)-.15 E F1 -.25(va)2.923 G .423 +(lue can be piggyback).25 F .422(ed on the)-.1 F F0(T)2.922 E F1 .422 +(option by indicating a time)2.922 F .845(after which a w)117 248.4 R +.845(arning message should be sent; the tw)-.1 F 3.346(ot)-.1 G .846 +(imeouts are separated by a slash.)-3.346 F -.15(Fo)5.846 G(r).15 E -.15 +(ex)117 260.4 S(ample, the line).15 E -.4(OT)157 276.6 S(5d/4h).4 E .972 +(causes email to f)117 292.8 R .971(ail after \214v)-.1 F 3.471(ed)-.15 +G .971(ays, b)-3.471 F .971(ut a w)-.2 F .971 +(arning message will be sent after four hours.)-.1 F(This)5.971 E +(should be lar)117 304.8 Q(ge enough that the message will ha)-.18 E .3 +-.15(ve b)-.2 H(een tried se).15 E -.15(ve)-.25 G(ral times.).15 E F0 +2.5(4.2. F)87 328.8 R(orking During Queue Runs)-.25 E F1 .848 +(By setting the)127 345 R F0 -.25(Fo)3.348 G(rkEachJ).25 E(ob)-.15 E F1 +(\()3.348 E F0(Y)A F1 3.348(\)o)C(ption,)-3.348 E F2(sendmail)3.348 E F1 +.849(will fork before each indi)3.348 F .849(vidual message)-.25 F .486 +(while running the queue.)102 357 R .486(This option w)5.486 F .486 +(as used with earlier releases to pre)-.1 F -.15(ve)-.25 G(nt).15 E F2 +(sendmail)2.986 E F1 .486(from con-)2.986 F 1.562(suming lar)102 369 R +1.562(ge amounts of memory)-.18 F 6.562(.I)-.65 G 4.062(ts)-6.562 G +1.562(hould no longer be necessary with)-4.062 F F2(sendmail)4.062 E F1 +4.062(8.12. If)4.062 F(the)4.062 E F0 -.25(Fo)102 381 S(rkEachJ).25 E +(ob)-.15 E F1 .246(option is not set,)2.746 F F2(sendmail)2.746 E F1 +.245(will k)2.745 F .245(eep track of hosts that are do)-.1 F .245 +(wn during a queue run,)-.25 F(which can impro)102 393 Q .3 -.15(ve p) +-.15 H(erformance dramatically).15 E(.)-.65 E(If the)127 409.2 Q F0 -.25 +(Fo)2.5 G(rkEachJ).25 E(ob)-.15 E F1(option is set,)2.5 E F2(sendmail) +2.5 E F1(cannot use connection caching.)2.5 E F0 2.5(4.3. Queue)87 433.2 +R(Priorities)2.5 E F1(Ev)127 449.4 Q 1.128(ery message is assigned a pr\ +iority when it is \214rst instantiated, consisting of the message)-.15 F +.286(size \(in bytes\) of)102 461.4 R .286(fset by the message class \(\ +which is determined from the Precedence: header\) times)-.25 F .342 +(the \231w)102 473.4 R .342(ork class f)-.1 F .343 +(actor\232 and the number of recipients times the \231w)-.1 F .343 +(ork recipient f)-.1 F(actor)-.1 E 4.243 -.7(.\232 T)-.55 H .343 +(he priority).7 F .073(is used to order the queue.)102 485.4 R .073(Hig\ +her numbers for the priority mean that the message will be processed) +5.073 F(later when running the queue.)102 497.4 Q .328 +(The message size is included so that lar)127 513.6 R .329 +(ge messages are penalized relati)-.18 F .629 -.15(ve t)-.25 H 2.829(os) +.15 G .329(mall messages.)-2.829 F .285(The message class allo)102 525.6 +R .285(ws users to send \231high priority\232 messages by including a \ +\231Precedence:\232 \214eld)-.25 F .007(in their message; the v)102 +537.6 R .007(alue of this \214eld is look)-.25 F .008(ed up in the)-.1 F +F0(P)2.508 E F1 .008(lines of the con\214guration \214le.)2.508 F .008 +(Since the)5.008 F 1.967(number of recipients af)102 549.6 R 1.967(fect\ +s the amount of load a message presents to the system, this is also)-.25 +F(included into the priority)102 561.6 Q(.)-.65 E .53 +(The recipient and class f)127 577.8 R .53 +(actors can be set in the con\214guration \214le using the)-.1 F F0 +(RecipientF)3.03 E(actor)-.25 E F1(\()102 589.8 Q F0(y)A F1 3.443(\)a)C +(nd)-3.443 E F0(ClassF)3.443 E(actor)-.25 E F1(\()3.442 E F0(z)A F1 +3.442(\)o)C .942(ptions respecti)-3.442 F -.15(ve)-.25 G(ly).15 E 5.942 +(.T)-.65 G(he)-5.942 E 3.442(yd)-.15 G(ef)-3.442 E .942 +(ault to 30000 \(for the recipient f)-.1 F .942(actor\) and)-.1 F +(1800 \(for the class f)102 601.8 Q 2.5(actor\). The)-.1 F +(initial priority is:)2.5 E F2(pri)168.495 619.8 Q/F3 10/Symbol SF(=) +3.16 E F2(msgsize)3.18 E F3(-)2.38 E F1(\()2.2 E F2(class).2 E F3 +2.47 E F0(ClassFactor\))2.2 E F3(+)2.2 E F1(\()2.2 E F2(nrcpt).36 E F3 +2.88 E F0(RecipientFactor\))2.2 E F1(\(Remember)102 637.8 Q 3.328 +(,h)-.4 G .828(igher v)-3.328 F .828(alues for this parameter actually \ +mean that the job will be treated with lo)-.25 F(wer)-.25 E(priority)102 +649.8 Q(.\))-.65 E 1.519(The priority of a job can also be adjusted eac\ +h time it is processed \(that is, each time an)127 666 R .235 +(attempt is made to deli)102 678 R -.15(ve)-.25 G 2.736(ri).15 G .236 +(t\) using the \231w)-2.736 F .236(ork time f)-.1 F(actor)-.1 E 1.636 +-.7(,\232 s)-.4 H .236(et by the).7 F F0(RetryF)2.736 E(actor)-.25 E F1 +(\()2.736 E F0(Z)A F1 2.736(\)o)C 2.736(ption. This)-2.736 F .367 +(is added to the priority)102 690 R 2.867(,s)-.65 G 2.867(oi)-2.867 G +2.867(tn)-2.867 G .366 +(ormally decreases the precedence of the job, on the grounds that jobs) +-2.867 F .137(that ha)102 702 R .437 -.15(ve f)-.2 H .137(ailed man).05 +F 2.637(yt)-.15 G .137(imes will tend to f)-2.637 F .137(ail ag)-.1 F +.137(ain in the future.)-.05 F(The)5.137 E F0(RetryF)2.637 E(actor)-.25 +E F1 .137(option def)2.637 F .138(aults to)-.1 F(90000.)102 714 Q 0 Cg EP -%%Page: 63 59 +%%Page: 31 27 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3633>195.86 E -/F1 10/Times-Roman@0 SF 26.72<4369706865724c6973742053706563696679>102 -96 R<636970686572206c69737420666f72205354>2.5 E<4152>-.93 E 2.5 -<54544c532e20536565>-.6 F/F2 10/Times-Italic@0 SF<636970686572>2.5 E<73> --.1 E F1<28312920666f7220706f737369626c652076>A<616c7565732e>-.25 E -14.51<436865636b416c6961736573205b6e5d>102 112.2 R -1.11<5661>2.5 G -<6c69646174652074686520524853206f6620616c6961736573207768656e20726562> -1.11 E<75696c64696e672074686520616c6961732064617461626173652e>-.2 E -<436865636b706f696e74496e74657276>102 128.4 Q<616c3d>-.25 E F2<4e>A F1 -1.297<5b435d20436865636b706f696e7473207468652071756575652065>174 140.4 R --.15<7665>-.25 G<7279>.15 E F2<4e>3.797 E F1<28646566>3.797 E 1.297 -<61756c7420313029206164647265737365732073656e742e>-.1 F 1.296 -<496620796f75722073797374656d>6.296 F .746 -<6372617368657320647572696e672064656c69>174 152.4 R -.15<7665>-.25 G -.746<727920746f2061206c6172>.15 F .746 -<6765206c6973742c207468697320707265>-.18 F -.15<7665>-.25 G .746 -<6e74732072657472616e736d697373696f6e20746f20616e>.15 F 3.247<7962>-.15 -G .747<757420746865>-3.447 F<6c617374>174 164.4 Q F2<4e>2.5 E F1 -<726563697069656e74732e>2.5 E<436c61737346>102 180.6 Q<6163746f723d>-.15 -E F2<66616374>A F1 1.625<5b7a5d2054686520696e64696361746564>4.29 F F2 -<66616374>4.124 E F1 1.624<6f72206973206d756c7469706c696564206279207468 -65206d65737361676520636c617373202864657465726d696e656420627920746865>B -.718<507265636564656e63653a208c656c6420696e2074686520757365722068656164 -657220616e6420746865>174 192.6 R F0<50>3.219 E F1 .719 -<6c696e657320696e2074686520636f6e8c6775726174696f6e208c6c652920616e64> -3.219 F 2.638<737562747261637465642066726f6d20746865207072696f72697479> -174 204.6 R 7.637<2e54>-.65 G 2.637<6875732c206d657373616765732077697468 -206120686967686572205072696f726974793a2077696c6c206265>-7.637 F -.1 -<6661>174 216.6 S -.2<766f>-.1 G 2.5<7265642e20446566>.2 F -<61756c747320746f20313830302e>-.1 E 12.27 -<436c69656e744365727446696c65205b6e6f>102 232.8 R .708<73686f7274206e61 -6d655d2046696c6520636f6e7461696e696e67207468652063657274698c63617465206f -662074686520636c69656e742c20692e652e2c20746869732063657274698c6361746520 -6973>3.208 F<75736564207768656e>174 244.8 Q F2<73656e646d61696c>2.5 E F1 -<6163747320617320636c69656e742028666f72205354>2.5 E<4152>-.93 E -<54544c53292e>-.6 E<436c69656e744b>102 261 Q -.15<6579>-.25 G 13.23 -<46696c65205b6e6f>.15 F .714 -<73686f7274206e616d655d2046696c6520636f6e7461696e696e672074686520707269> -3.215 F -.25<7661>-.25 G .714<7465206b>.25 F 1.014 -.15<65792062>-.1 H -.714<656c6f6e67696e6720746f2074686520636c69656e742063657274698c63617465> -.15 F<28666f72205354>174 273 Q<4152>-.93 E<54544c53206966>-.6 E F2 -<73656e646d61696c>2.5 E F1<72756e7320617320636c69656e74292e>2.5 E -<436c69656e74506f72744f7074696f6e733d>102 289.2 Q F2<6f7074696f6e73>A F1 -.355<5b4f5d2053657420636c69656e7420534d5450206f7074696f6e732e>174 301.2 -R .355<546865206f7074696f6e7320617265>5.355 F F2 -.1<6b65>2.855 G -<793d76616c7565>-.2 E F1 .355 -<70616972732073657061726174656420627920636f6d2d>2.855 F 2.5 -<6d61732e204b6e6f>174 313.2 R<776e206b>-.25 E -.15<6579>-.1 G 2.5<7361> -.15 G<72653a>-2.5 E 52.83<506f7274204e616d652f6e756d626572>214 329.4 R -<6f6620736f7572636520706f727420666f7220636f6e6e656374696f6e2028646566> -2.5 E<61756c747320746f20616e>-.1 E 2.5<7966>-.15 G<72656520706f727429> --2.5 E 48.95<416464722041646472657373>214 341.4 R<6d61736b2028646566>2.5 -E<61756c747320494e>-.1 E<414444525f414e5929>-.35 E -.15<4661>214 353.4 S -41.31<6d696c792041646472657373>.15 F -.1<6661>2.5 G<6d696c792028646566> -.1 E<61756c747320746f20494e455429>-.1 E 21.72 -<536e6442756653697a652053697a65>214 365.4 R<6f66205443502073656e642062> -2.5 E<7566>-.2 E<666572>-.25 E 21.17<52637642756653697a652053697a65>214 -377.4 R<6f6620544350207265636569>2.5 E .3 -.15<76652062>-.25 H<7566>-.05 -E<666572>-.25 E 34.5<4d6f64698c6572204f7074696f6e73>214 389.4 R -<288d6167732920666f722074686520636c69656e74>2.5 E<546865>174 405.6 Q F2 -<41646472>3.257 E F1 .756<657373206d61736b206d61792062652061206e756d6572 -6963206164647265737320696e204950763420646f74206e6f746174696f6e206f722049 -50763620636f6c6f6e>B 1.148<6e6f746174696f6e206f722061206e657477>174 -417.6 R 1.148<6f726b206e616d652e>-.1 F 1.149 -<4e6f746520746861742069662061206e657477>6.148 F 1.149 -<6f726b206e616d652069732073706563698c65642c206f6e6c7920746865>-.1 F .383 -<8c72737420495020616464726573732072657475726e656420666f722069742077696c -6c20626520757365642e>174 429.6 R .383 -<54686973206d617920636175736520696e64657465726d696e6174652062656861> -5.383 F<762d>-.2 E 1.485<696f7220666f72206e657477>174 441.6 R 1.485 -<6f726b206e616d65732074686174207265736f6c76>-.1 F 3.985<6574>-.15 G -3.985<6f6d>-3.985 G 1.485<756c7469706c65206164647265737365732e>-3.985 F -1.485<5468657265666f72652c20757365206f6620616e>6.485 F -<61646472657373206973207265636f6d6d656e6465642e>174 453.6 Q F2 -<4d6f64698c6572>5 E F1<63616e2062652074686520666f6c6c6f>2.5 E -<77696e67206368617261637465723a>-.25 E 67<6875>214 469.8 S -<7365206e616d65206f6620696e74657266>-67 E -<61636520666f722048454c4f20636f6d6d616e64>-.1 E 64.78<4164>214 481.8 S -<6f6e27>-64.78 E 2.5<7475>-.18 G<73652041>-2.5 E -<555448207768656e2073656e64696e6720652d6d61696c>-.55 E 66.44<5364>214 -493.8 S<6f6e27>-66.44 E 2.5<7475>-.18 G<7365205354>-2.5 E<4152>-.93 E -<54544c53207768656e2073656e64696e6720652d6d61696c>-.6 E .764<49662060> -174 510 R<606827>-.74 E 3.264<2769>-.74 G 3.264<7373>-3.264 G .763<6574 -2c20746865206e616d6520636f72726573706f6e64696e6720746f20746865206f757467 -6f696e6720696e74657266>-3.264 F .763 -<6163652061646472657373202877686574686572>-.1 F .431<63686f73656e207669 -612074686520436f6e6e656374696f6e20706172616d65746572206f7220746865206465 -66>174 522 R .431 -<61756c7429206973207573656420666f72207468652048454c4f2f45484c4f>-.1 F -3.618<636f6d6d616e642e20486f>174 534 R<7765>-.25 E -.15<7665>-.25 G -1.918 -.4<722c2074>.15 H 1.118<6865206e616d65206d757374206e6f7420737461 -7274207769746820612073717561726520627261636b>.4 F 1.117 -<657420616e64206974206d757374>-.1 F 1.841 -<636f6e7461696e206174206c65617374206f6e6520646f742e>174 546 R 1.842<5468 -697320697320612073696d706c652074657374207768657468657220746865206e616d65 -206973206e6f7420616e204950>6.842 F .713 -<616464726573732028696e2073717561726520627261636b>174 558 R .713 -<657473292062>-.1 F .713<75742061207175616c698c656420686f73746e616d652e> --.2 F .712<4e6f74652074686174206d756c7469706c6520436c69656e742d>5.713 F -.343<506f72744f7074696f6e732073657474696e67732061726520616c6c6f>174 570 -R .343<77656420696e206f7264657220746f206769>-.25 F .643 -.15<76652073> --.25 H .344<657474696e677320666f7220656163682070726f746f636f6c2066>.15 F -<616d696c79>-.1 E .316<28652e672e2c206f6e6520666f722046>174 582 R .316 -<616d696c793d696e657420616e64206f6e6520666f722046>-.15 F 2.816 -<616d696c793d696e657436292e2041>-.15 F .315 -<7265737472696374696f6e20706c61636564206f6e206f6e65>2.816 F -.1<6661>174 -594 S<6d696c79206f6e6c79206166>.1 E<6665637473206f7574676f696e6720636f6e -6e656374696f6e73206f6e207468617420706172746963756c61722066>-.25 E -<616d696c79>-.1 E<2e>-.65 E<436c69656e7453534c4f7074696f6e73>102 610.2 Q -3.495<4173>174 622.2 S .996<70616365206f7220636f6d6d61207365706172617465 -64206c697374206f662053534c2072656c61746564206f7074696f6e7320666f72207468 -6520636c69656e7420736964652e>-3.495 F<536565>5.996 E F2 -<53534c5f4354585f7365745f6f7074696f6e73>174 634.2 Q F1 .961 -<28332920666f722061206c6973743b207468652061>B -.25<7661>-.2 G .961 -<696c61626c652076>.25 F .961 -<616c75657320646570656e64206f6e20746865204f70656e53534c>-.25 F -.15 -<7665>174 646.2 S 5.628<7273696f6e206167>.15 F 5.628 -<61696e7374207768696368>-.05 F F2<73656e646d61696c>8.129 E F1 5.629 -<697320636f6d70696c65642e>8.129 F 5.629<427920646566>10.629 F -<61756c742c>-.1 E F2<53534c5f4f505f414c4c>8.129 E 3.91<53534c5f4f505f4e -4f5f53534c76322053534c5f4f505f4e4f5f5449434b4554202d53534c5f4f505f544c53 -4558545f50>174 658.2 R<414444494e47>-.9 E F1<617265>6.41 E .646 -<75736564202869662074686f7365206f7074696f6e73206172652061>174 670.2 R --.25<7661>-.2 G 3.146<696c61626c65292e204f7074696f6e73>.25 F .646 -<63616e20626520636c65617265642062792070726563656564696e67207468656d> -3.146 F<776974682061206d696e7573207369676e2e>174 682.2 Q<49742069732061 -6c736f20706f737369626c6520746f2073706563696679206e756d65726963616c2076>5 -E<616c7565732c20652e672e2c>-.25 E F0<2d307830303130>2.5 E F1<2e>A 3.95 -<436f6c6f6e4f6b496e41646472205b6e6f>102 698.4 R 4.679<73686f7274206e616d -655d204966207365742c20636f6c6f6e73206172652061636365707461626c6520696e20 -652d6d61696c206164647265737365732028652e672e2c>7.18 F 3.54 -<99686f73743a757365729a292e204966>174 710.4 R 1.04 -<6e6f74207365742c20636f6c6f6e7320696e64696361746520746865206265>3.54 F -1.04<67696e6e696e67206f66206120524643203832322067726f757020636f6e2d>-.15 -F 1.988<73747275637420289967726f75706e616d653a206d656d626572312c206d656d -626572322c202e2e2e206d656d6265724e3b9a292e>174 722.4 R 1.987 -<446f75626c656420636f6c6f6e7320617265>6.987 F 0 Cg EP -%%Page: 64 60 +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-31)195.86 E 2.5(4.4. Load)87 96 R(Limiting)2.5 E/F1 10 +/Times-Italic@0 SF(Sendmail)127 112.2 Q/F2 10/Times-Roman@0 SF .102 +(can be ask)2.602 F .101(ed to queue \(b)-.1 F .101(ut not deli)-.2 F +-.15(ve)-.25 G .101(r\) mail if the system load a).15 F -.15(ve)-.2 G +.101(rage gets too high).15 F .483(using the)102 124.2 R F0(QueueLA) +2.983 E F2(\()2.983 E F0(x)A F2 2.983(\)o)C 2.983(ption. When)-2.983 F +.483(the load a)2.983 F -.15(ve)-.2 G .483(rage e).15 F .483 +(xceeds the v)-.15 F .484(alue of the)-.25 F F0(QueueLA)2.984 E F2 +(option,)2.984 E .532(the deli)102 136.2 R -.15(ve)-.25 G .532 +(ry mode is set to).15 F F0(q)3.032 E F2 .532(\(queue only\) if the) +3.032 F F0(QueueF)3.032 E(actor)-.25 E F2(\()3.032 E F0(q)A F2 3.032 +(\)o)C .531(ption di)-3.032 F .531(vided by the dif)-.25 F(ference)-.25 +E .01(in the current load a)102 148.2 R -.15(ve)-.2 G .01(rage and the) +.15 F F0(QueueLA)2.51 E F2 .01 +(option plus one is less than the priority of the message)2.51 F 2.5 +<8a74>102 160.2 S(hat is, the message is queued if)-2.5 E(f:)-.25 E F1 +(pri)251.425 183.61 Q F2(>)3.16 E F0(QueueFactor)15.315 -7 M F1(LA) +-66.835 14 M/F3 10/Symbol SF(-)2.23 E F0(QueueLA)2.2 E F3(+)2.2 E F2(1) +2.2 E .4 LW 354.625 181.01 275.895 181.01 DL(The)102 206.87 Q F0(QueueF) +2.616 E(actor)-.25 E F2 .116(option def)2.616 F .116 +(aults to 600000, so each point of load a)-.1 F -.15(ve)-.2 G .116 +(rage is w).15 F .116(orth 600000 priority)-.1 F +(points \(as described abo)102 218.87 Q -.15(ve)-.15 G(\).).15 E -.15 +(Fo)127 235.07 S 3.893(rd).15 G 1.393(rastic cases, the)-3.893 F F0 +(RefuseLA)3.893 E F2(\()3.893 E F0(X)A F2 3.893(\)o)C 1.394 +(ption de\214nes a load a)-3.893 F -.15(ve)-.2 G 1.394(rage at which).15 +F F1(sendmail)3.894 E F2(will)3.894 E .433(refuse to accept netw)102 +247.07 R .432(ork connections.)-.1 F .432 +(Locally generated mail, i.e., mail which is not submitted via)5.432 F +.317(SMTP \(including incoming UUCP mail\), is still accepted.)102 +259.07 R .318(Notice that the MSP submits mail to the)5.317 F(MT)102 +271.07 Q 3.214(Av)-.93 G .714(ia SMTP)-3.214 F 3.214(,a)-1.11 G .713 +(nd hence mail will be queued in the client queue in such a case.)-3.214 +F .713(Therefore it is)5.713 F +(necessary to run the client mail queue periodically)102 283.07 Q(.)-.65 +E F0 2.5(4.5. Resour)87 307.07 R(ce Limits)-.18 E F1(Sendmail)127 323.27 +Q F2 1.039(has se)3.539 F -.15(ve)-.25 G 1.039 +(ral parameters to control resource usage.).15 F 1.039 +(Besides those mentioned in the)6.039 F(pre)102 335.27 Q 8.476 +(vious section, there are at least)-.25 F F0(MaxDaemonChildr)10.975 E +(en)-.18 E F2(,)A F0(ConnectionRateThr)10.975 E(ottle)-.18 E F2(,)A F0 +(MaxQueueChildr)102 347.27 Q(en)-.18 E F2 3.889(,a)C(nd)-3.889 E F0 +(MaxRunnersP)3.889 E(erQueue)-.2 E F2 6.389(.T)C 1.389(he latter tw) +-6.389 F 3.889(ol)-.1 G 1.389(imit the number of)-3.889 F F1(sendmail) +3.889 E F2 1.315(processes that operate on the queue.)102 359.27 R 1.315 +(These are discussed in the section `)6.315 F 1.315 +(`Queue Group Declara-)-.74 F(tion')102 371.27 Q 2.712('. The)-.74 F +.212(former tw)2.712 F 2.712(oc)-.1 G .212 +(an be used to limit the number of incoming connections.)-2.712 F .212 +(Their appropriate)5.212 F -.25(va)102 383.27 S .062 +(lues depend on the host operating system and the hardw).25 F .062 +(are, e.g., amount of memory)-.1 F 5.062(.I)-.65 G 2.561(nm)-5.062 G(an) +-2.561 E 2.561(ys)-.15 G(it-)-2.561 E 1.082 +(uations it might be useful to set limits to pre)102 395.27 R -.15(ve) +-.25 G 1.082(nt to ha).15 F 1.382 -.15(ve t)-.2 H 1.082(oo man).15 F(y) +-.15 E F1(sendmail)3.582 E F2 1.082(processes, ho)3.582 F(we)-.25 E -.15 +(ve)-.25 G -.4(r,).15 G .652(these limits can be ab)102 407.27 R .652 +(used to mount a denial of service attack.)-.2 F -.15(Fo)5.652 G 3.152 +(re).15 G .652(xample, if)-3.302 F F0(MaxDaemonChil-)3.152 E(dr)102 +419.27 Q(en=10)-.18 E F2 .9(then an attack)3.4 F .901 +(er needs to open only 10 SMTP sessions to the serv)-.1 F(er)-.15 E +3.401(,l)-.4 G(ea)-3.401 E 1.201 -.15(ve t)-.2 H .901(hem idle for).15 F +.591(most of the time, and no more connections will be accepted.)102 +431.27 R .591(If this option is set then the timeouts)5.591 F 1.187 +(used in a SMTP session should be lo)102 443.27 R 1.187 +(wered from their def)-.25 F 1.187(ault v)-.1 F 1.187 +(alues to their minimum v)-.25 F 1.187(alues as)-.25 F +(speci\214ed in RFC 2821 and listed in section 4.1.2.)102 455.27 Q F0 +2.5(4.6. Measur)87 479.27 R(es against Denial of Ser)-.18 E +(vice Attacks)-.1 E F1(Sendmail)127 495.47 Q F2 1.674(has some b)4.174 F +1.674(uilt-in measures ag)-.2 F 1.673 +(ainst simple denial of service \(DoS\) attacks.)-.05 F(The)6.673 E .913 +(SMTP serv)102 507.47 R .913(er by def)-.15 F .913(ault slo)-.1 F .913 +(ws do)-.25 F .913(wn if too man)-.25 F 3.413(yb)-.15 G .913 +(ad commands are issued or if some commands)-3.413 F .034 +(are repeated too often within a session.)102 519.47 R .033 +(Details can be found in the source \214le)5.033 F F0(sendmail/sr)2.533 +E(vrsmtp.c)-.1 E F2 2.169(by looking for the macro de\214nitions of)102 +531.47 R F0(MAXB)4.669 E(ADCOMMANDS)-.3 E F2(,)A F0(MAXNOOPCOMMANDS) +4.669 E F2(,)A F0(MAXHELOCOMMANDS)102 543.47 Q F2(,)A F0 +(MAXVRFYCOMMANDS)4.414 E F2 4.414(,a)C(nd)-4.414 E F0(MAXETRNCOMMANDS) +4.414 E F2 6.914(.I)C 4.414(fa)-6.914 G(n)-4.414 E .462 +(SMTP command is issued more often than the corresponding)102 555.47 R +F0(MAXcmdCOMMANDS)2.962 E F2 -.25(va)2.962 G .462(lue, then).25 F .217 +(the response is delayed e)102 567.47 R(xponentially)-.15 E 2.717(,s) +-.65 G .216(tarting with a sleep time of one second, up to a maximum of) +-2.717 F 1.687(four minutes \(as de\214ned by)102 579.47 R F0 +(MAXTIMEOUT)4.187 E F2 4.187(\). If)B 1.687(the option)4.187 F F0 +(MaxDaemonChildr)4.187 E(en)-.18 E F2 1.687(is set to a)4.187 F -.25(va) +102 591.47 S .735(lue greater than zero, then this could mak).25 F 3.235 +(eaD)-.1 G .735(oS attack e)-3.235 F -.15(ve)-.25 G 3.235(nw).15 G .734 +(orse since it k)-3.335 F .734(eeps a connection)-.1 F .867 +(open longer than necessary)102 603.47 R 5.867(.T)-.65 G .867 +(herefore a connection is terminated with a 421 SMTP reply code if) +-5.867 F .57(the number of commands e)102 615.47 R .57 +(xceeds the limit by a f)-.15 F .57(actor of tw)-.1 F 3.07(oa)-.1 G(nd) +-3.07 E F0(MAXB)3.07 E(ADCOMMANDS)-.3 E F2 .57(is set)3.07 F(to a v)102 +627.47 Q(alue greater than zero \(the def)-.25 E(ault is 25\).)-.1 E F0 +2.5(4.7. Deli)87 651.47 R -.1(ve)-.1 G(ry Mode).1 E F2 .253 +(There are a number of deli)127 667.67 R -.15(ve)-.25 G .253 +(ry modes that).15 F F1(sendmail)2.753 E F2 .254 +(can operate in, set by the)2.753 F F0(Deli)2.754 E -.1(ve)-.1 G(ryMode) +.1 E F2(\()102 679.67 Q F0(d)A F2 3.599(\)c)C 1.099 +(on\214guration option.)-3.599 F 1.099(These modes specify ho)6.099 F +3.598(wq)-.25 G 1.098(uickly mail will be deli)-3.598 F -.15(ve)-.25 G +3.598(red. Le).15 F -.05(ga)-.15 G 3.598(lm).05 G(odes)-3.598 E(are:)102 +691.67 Q 0 Cg EP +%%Page: 32 28 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d36342053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF<616c>174 96 Q -.1<7761>-.1 G 2.215<797320616363 -65707461626c652028996e6f64656e616d653a3a757365729a2920616e642070726f7065 -7220726f7574652d61646472206e657374696e6720697320756e646572>.1 F<2d>-.2 E -1.037<73746f6f642028993c4072656c61793a7573657240686f73743e9a292e>174 108 -R 1.037<467572746865726d6f72652c2074686973206f7074696f6e20646566>6.037 F -1.036<61756c7473206f6e2069662074686520636f6e2d>-.1 F .853 -<8c6775726174696f6e2076>174 120 R .853<657273696f6e206c65>-.15 F -.15 -<7665>-.25 G 3.353<6c69>.15 G 3.353<736c>-3.353 G .853<657373207468616e -20362028666f72206261636b20636f6d7061746962696c697479292e>-3.353 F<486f> -5.854 E<7765>-.25 E -.15<7665>-.25 G 1.654 -.4<722c2069>.15 H 3.354 -<746d>.4 G<757374>-3.354 E<6265206f66>174 132 Q 2.5<6666>-.25 G -<6f722066756c6c20636f6d7061746962696c697479207769746820524643203832322e> --2.5 E<436f6e6e656374696f6e436163686553697a653d>102 148.2 Q/F2 10 -/Times-Italic@0 SF<4e>A F1 .242<5b6b5d20546865206d6178696d756d206e756d62 -6572206f66206f70656e20636f6e6e656374696f6e7320746861742077696c6c20626520 -63616368656420617420612074696d652e>174 160.2 R<546865>5.242 E<646566>174 -172.2 Q .385<61756c74206973206f6e652e>-.1 F .386<546869732064656c617973 -20636c6f73696e67207468652063757272656e7420636f6e6e656374696f6e20756e7469 -6c20656974686572207468697320696e>5.386 F -.2<766f>-.4 G<63612d>.2 E -1.192<74696f6e206f66>174 184.2 R F2<73656e646d61696c>3.692 E F1 1.191<6e -6565647320746f20636f6e6e65637420746f20616e6f7468657220686f7374206f722069 -74207465726d696e617465732e>3.692 F 1.191<53657474696e6720697420746f> -6.191 F 2.046<7a65726f20646566>174 196.2 R 2.046 -<61756c747320746f20746865206f6c642062656861>-.1 F<76696f72>-.2 E 4.546 -<2c74>-.4 G 2.047<6861742069732c20636f6e6e656374696f6e732061726520636c6f -73656420696d6d6564696174656c79>-4.546 F<2e>-.65 E .266<53696e6365207468 -697320636f6e73756d6573208c6c652064657363726970746f72732c2074686520636f6e -6e656374696f6e2063616368652073686f756c64206265206b>174 208.2 R .265 -<65707420736d616c6c3a2034>-.1 F -<69732070726f6261626c7920612070726163746963616c206d6178696d756d2e>174 -220.2 Q<436f6e6e656374696f6e436163686554>102 236.4 Q<696d656f75743d>-.35 -E F2<74696d656f7574>A F1 .708<5b4b5d20546865206d6178696d756d20616d6f756e -74206f662074696d6520612063616368656420636f6e6e656374696f6e2077696c6c2062 -65207065726d697474656420746f2069646c65>174 248.4 R 1.083 -<776974686f75742061637469>174 260.4 R<76697479>-.25 E 6.083<2e49>-.65 G -3.583<6674>-6.083 G 1.083<6869732074696d652069732065>-3.583 F 1.082<7863 -65656465642c2074686520636f6e6e656374696f6e20697320696d6d6564696174656c79 -20636c6f7365642e>-.15 F .417<546869732076>174 272.4 R .418<616c75652073 -686f756c6420626520736d616c6c20286f6e20746865206f72646572206f662074656e20 -6d696e75746573292e>-.25 F<4265666f7265>5.418 E F2<73656e646d61696c>2.918 -E F1 .418<757365732061>2.918 F .508 -<63616368656420636f6e6e656374696f6e2c20697420616c>174 284.4 R -.1<7761> --.1 G .507<79732073656e64732061205253455420636f6d6d616e6420746f20636865 -636b2074686520636f6e6e656374696f6e3b206966>.1 F .401<746869732066>174 -296.4 R .401 -<61696c732c2069742072656f70656e732074686520636f6e6e656374696f6e2e>-.1 F -.401<54686973206b>5.401 F .402<6565707320796f757220656e642066726f6d2066> --.1 F .402<61696c696e6720696620746865206f74686572>-.1 F 1.545 -<656e642074696d6573206f75742e>174 308.4 R 1.545<54686520706f696e74206f66 -2074686973206f7074696f6e20697320746f206265206120676f6f64206e657477>6.545 -F 1.544<6f726b206e65696768626f7220616e64>-.1 F -.2<61766f>174 320.4 S -<6964207573696e672075702065>.2 E<786365737369>-.15 E .3 -.15<76652072> --.25 H<65736f7572636573206f6e20746865206f7468657220656e642e>.15 E -<54686520646566>5 E<61756c74206973208c76>-.1 E 2.5<656d>-.15 G -<696e757465732e>-2.5 E<436f6e6e6563744f6e6c7954>102 336.6 Q<6f3d>-.8 E -F2<61646472>A<657373>-.37 E F1 .861<5b6e6f2073686f7274206e616d655d205468 -69732063616e206265207573656420746f206f>174 348.6 R -.15<7665>-.15 G .862 -<72726964652074686520636f6e6e656374696f6e20616464726573732028666f722074 -657374696e67>.15 F<707572706f736573292e>174 360.6 Q -<436f6e6e656374696f6e526174655468726f74746c653d>102 376.8 Q F2<4e>A F1 -.212 -<5b6e6f2073686f7274206e616d655d2049662073657420746f206120706f73697469> -174 388.8 R .511 -.15<76652076>-.25 H .211<616c75652c20616c6c6f>-.1 F -2.711<776e>-.25 G 2.711<6f6d>-2.711 G .211<6f7265207468616e>-2.711 F F2 -<4e>2.711 E F1 .211<696e636f6d696e6720636f6e6e65632d>2.711 F .132<74696f -6e7320696e2061206f6e65207365636f6e6420706572696f6420706572206461656d6f6e -2e>174 400.8 R .132<5468697320697320696e74656e64656420746f208d617474656e -206f7574207065616b7320616e64>5.132 F<616c6c6f>174 412.8 Q 2.5<7774>-.25 -G<6865206c6f61642061>-2.5 E -.15<7665>-.2 G -<7261676520636865636b696e6720746f2063757420696e2e>.15 E<446566>5 E -<61756c747320746f207a65726f20286e6f206c696d697473292e>-.1 E -<436f6e6e656374696f6e5261746557>102 429 Q<696e646f>-.4 E<7753697a653d> --.25 E F2<4e>A F1 .459<5b6e6f2073686f7274206e616d655d2044658c6e65207468 -65206c656e677468206f662074686520696e74657276>174 441 R .458 -<616c20666f7220776869636820746865206e756d626572206f6620696e636f6d2d>-.25 -F<696e6720636f6e6e656374696f6e73206973206d61696e7461696e65642e>174 453 Q -<54686520646566>5 E<61756c74206973203630207365636f6e64732e>-.1 E -<436f6e74726f6c536f636b>102 469.2 Q<65744e616d653d>-.1 E F2<6e616d65>A -F1 .476<5b6e6f2073686f7274206e616d655d204e616d65206f662074686520636f6e74 -726f6c20736f636b>174 481.2 R .477 -<657420666f72206461656d6f6e206d616e6167656d656e742e>-.1 F 2.977<4172> -5.477 G<756e6e696e67>-2.977 E F2<73656e646d61696c>174 493.2 Q F1 1.225< -6461656d6f6e2063616e20626520636f6e74726f6c6c6564207468726f75676820746869 -73206e616d656420736f636b>3.725 F 3.725<65742e2041>-.1 F -.25<7661>-.74 G -1.225<696c61626c6520636f6d2d>.25 F 2.926<6d616e6473206172653a>174 505.2 -R F2 2.926<68656c702c206d737461742c2072>5.426 F 2.926 -<6573746172742c2073687574646f776e2c>-.37 F F1<616e64>5.426 E F2 -<7374617475732e>5.426 E F1<546865>7.926 E F2<737461747573>5.426 E F1 -<636f6d6d616e64>5.426 E .46<72657475726e73207468652063757272656e74206e75 -6d626572206f66206461656d6f6e206368696c6472656e2c20746865206d6178696d756d -206e756d626572206f66206461656d6f6e>174 517.2 R .449<6368696c6472656e2c20 -7468652066726565206469736b2073706163652028696e20626c6f636b7329206f662074 -6865207175657565206469726563746f7279>174 529.2 R 2.95<2c61>-.65 G .45 -<6e6420746865206c6f61642061>-2.95 F -.15<7665>-.2 G -.2<722d>.15 G .883 -<616765206f6620746865206d616368696e652065>174 541.2 R .883 -<787072657373656420617320616e20696e7465>-.15 F<676572>-.15 E 5.883<2e49> --.55 G 3.383<666e>-5.883 G .882 -<6f74207365742c206e6f20636f6e74726f6c20736f636b>-3.383 F .882 -<65742077696c6c206265>-.1 F -.2<6176>174 553.2 S 5.029 -<61696c61626c652e20536f6c61726973>-.05 F 2.529 -<616e64207072652d342e34425344206b>5.029 F 2.529<65726e656c20757365727320 -73686f756c642073656520746865206e6f746520696e2073656e642d>-.1 F -<6d61696c2f524541444d45202e>174 565.2 Q<43524c46696c653d>102 581.4 Q F2 -<6e616d65>A F1 .483<5b6e6f2073686f7274206e616d655d204e616d65206f66208c6c -65207468617420636f6e7461696e732063657274698c63617465207265>9.69 F -.2 -<766f>-.25 G .482<636174696f6e207374617475732c2075736566756c20666f72>.2 -F .792<582e35303976332061757468656e7469636174696f6e2e>174 593.4 R .792< -43524c20636865636b696e67207265717569726573206174206c65617374204f70656e53 -534c2076>5.792 F .793<657273696f6e20302e392e372e>-.15 F -<4e6f74653a20696620612043524c46696c652069732073706563698c65642062>174 -605.4 Q<757420746865208c6c6520697320756e757361626c652c205354>-.2 E<4152> --.93 E<54544c532069732064697361626c65642e>-.6 E<444850>102 621.6 Q 10.78 -<6172616d65746572732054686973>-.15 F -<6f7074696f6e206170706c69657320746f207468652073657276>2.5 E -<65722073696465206f6e6c79>-.15 E 5<2e50>-.65 G<6f737369626c652076>-5 E -<616c756573206172653a>-.25 E 139<3575>214 637.8 S -<736520707265636f6d70757465642035313220626974207072696d652e>-139 E 139 -<3167>214 649.8 S<656e6572617465203130323420626974207072696d65>-139 E -139<3267>214 661.8 S<656e6572617465203230343820626974207072696d652e>-139 -E 141.22<6975>214 673.8 S<736520696e636c7564656420707265636f6d7075746564 -203230343820626974207072696d652028646566>-141.22 E<61756c74292e>-.1 E -122.06<6e6f6e6520646f>214 685.8 R<6e6f742075736520446966>2.5 E -<8c652d48656c6c6d616e2e>-.25 E 95.38<2f706174682f746f2f8c6c65206c6f6164> -214 697.8 R<7072696d652066726f6d208c6c652e>2.5 E .63<54686973206973206f -6e6c79207265717569726564206966206120636970686572737569746520636f6e746169 -6e696e67204453412f444820697320757365642e>174 714 R .63<54686520646566> -5.63 F .63<61756c74206973>-.1 F 0 Cg EP -%%Page: 65 61 +/F0 10/Times-Bold@0 SF 193.36(SMM:08-32 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 17.22(id) +142 96 S(eli)-17.22 E -.15(ve)-.25 G 2.5(ri).15 G(nteracti)-2.5 E -.15 +(ve)-.25 G(ly \(synchronously\)).15 E 15(bd)142 108 S(eli)-15 E -.15(ve) +-.25 G 2.5(ri).15 G 2.5(nb)-2.5 G(ackground \(asynchronously\))-2.5 E 15 +(qq)142 120 S(ueue only \(don')-15 E 2.5(td)-.18 G(eli)-2.5 E -.15(ve) +-.25 G(r\)).15 E 15(dd)142 132 S(efer deli)-15 E -.15(ve)-.25 G +(ry attempts \(don').15 E 2.5(td)-.18 G(eli)-2.5 E -.15(ve)-.25 G(r\)) +.15 E 1.273(There are tradeof)102 148.2 R 3.773(fs. Mode)-.25 F 1.273 +(\231i\232 gi)3.773 F -.15(ve)-.25 G 3.773(st).15 G 1.273 +(he sender the quick)-3.773 F 1.273(est feedback, b)-.1 F 1.274 +(ut may slo)-.2 F 3.774(wd)-.25 G -.25(ow)-3.774 G 3.774(ns).25 G(ome) +-3.774 E .799(mailers and is hardly e)102 160.2 R -.15(ve)-.25 G 3.299 +(rn).15 G(ecessary)-3.299 E 5.799(.M)-.65 G .799(ode \231b\232 deli) +-5.799 F -.15(ve)-.25 G .799(rs promptly b).15 F .798(ut can cause lar) +-.2 F .798(ge numbers of)-.18 F .223(processes if you ha)102 172.2 R +.524 -.15(ve a m)-.2 H .224(ailer that tak).15 F .224 +(es a long time to deli)-.1 F -.15(ve)-.25 G 2.724(ram).15 G 2.724 +(essage. Mode)-2.724 F .224(\231q\232 minimizes the)2.724 F .597 +(load on your machine, b)102 184.2 R .597(ut means that deli)-.2 F -.15 +(ve)-.25 G .596(ry may be delayed for up to the queue interv).15 F 3.096 +(al. Mode)-.25 F .36(\231d\232 is identical to mode \231q\232 e)102 +196.2 R .36(xcept that it also pre)-.15 F -.15(ve)-.25 G .36 +(nts lookups in maps including the).15 F F0(-D)2.86 E F1 .36 +(\215ag from)2.86 F -.1(wo)102 208.2 S 2.076 +(rking during the initial queue phase; it is intended for `).1 F 2.075 +(`dial on demand')-.74 F 4.575('s)-.74 G 2.075(ites where DNS)-4.575 F +.318(lookups might cost real mone)102 220.2 R 4.118 -.65(y. S)-.15 H +.319(ome simple error messages \(e.g., host unkno).65 F .319 +(wn during the SMTP)-.25 F(protocol\) will be delayed using this mode.) +102 232.2 Q(Mode \231b\232 is the usual def)5 E(ault.)-.1 E .052(If you\ + run in mode \231q\232 \(queue only\), \231d\232 \(defer\), or \231b\ +\232 \(deli)127 248.4 R -.15(ve)-.25 G 2.552(ri).15 G 2.552(nb)-2.552 G +(ackground\))-2.552 E/F2 10/Times-Italic@0 SF(sendmail)2.551 E F1(will) +2.551 E 1.391(not e)102 260.4 R 1.392(xpand aliases and follo)-.15 F +3.892(w.)-.25 G(forw)-3.892 E 1.392 +(ard \214les upon initial receipt of the mail.)-.1 F 1.392 +(This speeds up the)6.392 F(response to RCPT commands.)102 272.4 Q +(Mode \231i\232 should not be used by the SMTP serv)5 E(er)-.15 E(.)-.55 +E F0 2.5(4.8. Log)87 296.4 R(Le)2.5 E -.1(ve)-.15 G(l).1 E F1 1.041 +(The le)127 312.6 R -.15(ve)-.25 G 3.541(lo).15 G 3.541(fl)-3.541 G +1.041(ogging can be set for)-3.541 F F2(sendmail)3.541 E F1 6.041(.T)C +1.041(he def)-6.041 F 1.04(ault using a standard con\214guration is)-.1 +F(le)102 324.6 Q -.15(ve)-.25 G 2.622(l9).15 G 5.122(.T)-2.622 G .122 +(he le)-5.122 F -.15(ve)-.25 G .122(ls are approximately as follo).15 F +.122(ws \(some log types are using dif)-.25 F .122(ferent le)-.25 F -.15 +(ve)-.25 G 2.622(ld).15 G(epending)-2.622 E(on v)102 336.6 Q(arious f) +-.25 E(actors\):)-.1 E 31(0M)102 352.8 S(inimal logging.)-31 E 31(1S)102 +369 S(erious system f)-31 E(ailures and potential security problems.)-.1 +E 31(2L)102 385.2 S(ost communications \(netw)-31 E +(ork problems\) and protocol f)-.1 E(ailures.)-.1 E 31(3O)102 401.4 S +1.238(ther serious f)-31 F 1.238 +(ailures, malformed addresses, transient forw)-.1 F 1.237 +(ard/include errors, connection)-.1 F(timeouts.)138 413.4 Q 31(4M)102 +429.6 S(inor f)-31 E(ailures, out of date alias databases, connection r\ +ejections via check_ rulesets.)-.1 E 31(5M)102 445.8 S +(essage collection statistics.)-31 E 31(6C)102 462 S +(reation of error messages, VRFY and EXPN commands.)-31 E 31(7D)102 +478.2 S(eli)-31 E -.15(ve)-.25 G(ry f).15 E +(ailures \(host or user unkno)-.1 E(wn, etc.\).)-.25 E 31(8S)102 494.4 S +(uccessful deli)-31 E -.15(ve)-.25 G(ries and alias database reb).15 E +(uilds.)-.2 E 31(9M)102 510.6 S +(essages being deferred \(due to a host being do)-31 E(wn, etc.\).)-.25 +E 23.5(10 Database)102 526.8 R -.15(ex)2.5 G(pansion \(alias, forw).15 E +(ard, and userdb lookups\) and authentication information.)-.1 E 23.5 +(11 NIS)102 543 R(errors and end of job processing.)2.5 E 23.5(12 Logs) +102 559.2 R(all SMTP connections.)2.5 E 23.5(13 Log)102 575.4 R(bad use\ +r shells, \214les with improper permissions, and other questionable sit\ +uations.)2.5 E 23.5(14 Logs)102 591.6 R(refused connections.)2.5 E 23.5 +(15 Log)102 607.8 R(all incoming SMTP commands.)2.5 E 23.5(20 Logs)102 +624 R .603(attempts to run lock)3.102 F .603(ed queue \214les.)-.1 F +.603(These are not errors, b)5.603 F .603(ut can be useful to note if) +-.2 F(your queue appears to be clogged.)138 636 Q 23.5(30 Lost)102 652.2 +R(locks \(only if using lockf instead of \215ock\).)2.5 E(Additionally) +102 668.4 Q 2.717(,v)-.65 G .217(alues abo)-2.967 F .516 -.15(ve 6)-.15 +H 2.716(4a).15 G .216(re reserv)-2.716 F .216(ed for e)-.15 F .216 +(xtremely v)-.15 F .216(erbose deb)-.15 F .216(ugging output.)-.2 F .216 +(No normal site)5.216 F -.1(wo)102 680.4 S(uld e).1 E -.15(ve)-.25 G 2.5 +(rs).15 G(et these.)-2.5 E 0 Cg EP +%%Page: 33 29 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3635>195.86 E -/F1 10/Times-Roman@0 SF -.74<6060>174 96 S<6927>.74 E 3.406<2777>-.74 G -.907<686963682073656c65637473206120707265636f6d70757465642c208c78>-3.406 -F .907<6564203230343820626974207072696d652e>-.15 F .907<49662060>5.907 F -<603527>-.74 E 3.407<2769>-.74 G 3.407<7373>-3.407 G .907 -<656c65637465642c207468656e>-3.407 F .409 -<707265636f6d70757465642c208c78>174 108 R .409 -<6564207072696d65732061726520757365642e>-.15 F .408<4e6f74653a2074686973 -206f7074696f6e2073686f756c64206e6f7420626520757365642028756e6c657373> -5.408 F .274<6e656365737361727920666f7220636f6d7061746962696c6974792077 -697468206f6c6420696d706c656d656e746174696f6e73292e>174 120 R .275 -<49662060>5.275 F<603127>-.74 E 2.775<276f>-.74 G 2.775<7260>-2.775 G -<603227>-3.515 E 2.775<2769>-.74 G 2.775<7373>-2.775 G<656c65637465642c> --2.775 E 1.238<7468656e207072696d652076>174 132 R 1.238 -<616c7565732061726520636f6d707574656420647572696e6720737461727475702e> --.25 F 1.237<4e6f74653a2074686973206f7065726174696f6e2063616e2074616b> -6.237 F 3.737<6561>-.1 G 1.648 -<7369676e698c63616e7420616d6f756e74206f662074696d65206f6e206120736c6f> -174 144 R 4.148<776d>-.25 G 1.649<616368696e6520287365>-4.148 F -.15 -<7665>-.25 G 1.649<72616c207365636f6e6473292c2062>.15 F 1.649 -<7574206974206973206f6e6c79>-.2 F 1.858 -<646f6e65206f6e636520617420737461727475702e>174 156 R 1.857<49662060> -6.857 F<606e6f6e6527>-.74 E 4.357<2769>-.74 G 4.357<7373>-4.357 G 1.857< -656c65637465642c207468656e20544c532063697068657273756974657320636f6e7461 -696e696e67>-4.357 F .797<4453412f44482063616e6e6f7420626520757365642e> -174 168 R .797<49662061208c6c65206e616d652069732073706563698c6564202877 -68696368206d75737420626520616e206162736f6c757465>5.797 F .45<7061746829 -2c207468656e20746865207072696d65732061726520726561642066726f6d2069742e> -174 180 R .449<4974206973207265636f6d6d656e64656420746f2067656e65726174 -6520737563682061208c6c65>5.449 F<7573696e67206120636f6d6d616e64206c696b> -174 192 Q 2.5<6574>-.1 G<6869733a>-2.5 E<6f70656e73736c206468706172616d -202d6f7574202f6574632f6d61696c2f6468706172616d732e70656d2032303438>358 -208.2 Q .054<496620746865208c6c65206973206e6f74207265616461626c65206f72 -20636f6e7461696e7320756e757361626c6520646174612c2074686520646566>174 -224.4 R .054<61756c742060>-.1 F<606927>-.74 E 2.554<2769>-.74 G 2.554 -<7375>-2.554 G .054<73656420696e73746561642e>-2.554 F -<4461656d6f6e506f72744f7074696f6e733d>102 240.6 Q/F2 10/Times-Italic@0 -SF<6f7074696f6e73>A F1 .364<5b4f5d205365742073657276>174 252.6 R .364 -<657220534d5450206f7074696f6e732e>-.15 F .364 -<4561636820696e7374616e6365206f66>5.364 F F0<4461656d6f6e50>2.863 E -<6f72744f7074696f6e73>-.2 E F1 .363<6c6561647320746f20616e>2.863 F -<6164646974696f6e616c20696e636f6d696e6720736f636b>174 264.6 Q 2.5 -<65742e20546865>-.1 F<6f7074696f6e7320617265>2.5 E F2 -.1<6b65>2.5 G -<793d76616c7565>-.2 E F1 2.5<70616972732e204b6e6f>2.5 F<776e206b>-.25 E --.15<6579>-.1 G 2.5<7361>.15 G<72653a>-2.5 E 45.62<4e616d652055736572> -214 280.8 R -<2d64658c6e61626c65206e616d6520666f7220746865206461656d6f6e2028646566> --.2 E<61756c747320746f20224461656d6f6e232229>-.1 E 52.83 -<506f7274204e616d652f6e756d626572>214 292.8 R -<6f66206c697374656e696e6720706f72742028646566>2.5 E -<61756c747320746f2022736d74702229>-.1 E 48.95<416464722041646472657373> -214 304.8 R<6d61736b2028646566>2.5 E<61756c747320494e>-.1 E -<414444525f414e5929>-.35 E -.15<4661>214 316.8 S 41.31 -<6d696c792041646472657373>.15 F -.1<6661>2.5 G<6d696c792028646566>.1 E -<61756c747320746f20494e455429>-.1 E 3.94 -<496e7075744d61696c46696c74657273204c697374>214 328.8 R -<6f6620696e707574206d61696c208c6c7465727320666f7220746865206461656d6f6e> -2.5 E 44.5<4c697374656e2053697a65>214 340.8 R -<6f66206c697374656e2071756575652028646566>2.5 E -<61756c747320746f20313029>-.1 E 34.5<4d6f64698c6572204f7074696f6e73>214 -352.8 R<288d6167732920666f7220746865206461656d6f6e>2.5 E 21.72 -<536e6442756653697a652053697a65>214 364.8 R<6f66205443502073656e642062> -2.5 E<7566>-.2 E<666572>-.25 E 21.17<52637642756653697a652053697a65>214 -376.8 R<6f6620544350207265636569>2.5 E .3 -.15<76652062>-.25 H<7566>-.05 -E<666572>-.25 E 36.73<6368696c6472656e206d6178696d756d>214 388.8 R -<6e756d626572206f66206368696c6472656e20706572206461656d6f6e2c20736565> -2.5 E F0<4d61784461656d6f6e4368696c6472>2.5 E<656e>-.18 E F1<2e>A -<44656c69>214 400.8 Q -.15<7665>-.25 G 11.58<72794d6f64652044656c69>.15 -F -.15<7665>-.25 G<7279206d6f646520706572206461656d6f6e2c20736565>.15 E -F0<44656c69>2.5 E -.1<7665>-.1 G<72794d6f6465>.1 E F1<2e>A 31.74 -<7265667573654c41205265667573654c41>214 412.8 R<706572206461656d6f6e>2.5 -E 34.51<64656c61794c412044656c61794c41>214 424.8 R<706572206461656d6f6e> -2.5 E 32.29<71756575654c412051756575654c41>214 436.8 R -<706572206461656d6f6e>2.5 E<546865>174 453 Q F2<4e616d65>2.68 E F1 -.1 -<6b65>2.68 G 2.68<7969>-.05 G 2.68<7375>-2.68 G .181 -<73656420666f72206572726f72206d6573736167657320616e64206c6f6767696e672e> --2.68 F<546865>5.181 E F2<41646472>2.681 E F1 .181 -<657373206d61736b206d6179206265>B 2.59<616e>174 465 S .089<756d65726963 -206164647265737320696e204950763420646f74206e6f746174696f6e206f7220495076 -3620636f6c6f6e206e6f746174696f6e2c206f722061206e657477>-2.59 F .089 -<6f726b206e616d652c>-.1 F .341 -<6f722061207061746820746f2061206c6f63616c20736f636b>174 477 R 2.841 -<65742e204e6f7465>-.1 F .341<746861742069662061206e657477>2.841 F .341 -<6f726b206e616d652069732073706563698c65642c206f6e6c7920746865208c727374> --.1 F .085<495020616464726573732072657475726e656420666f722069742077696c -6c20626520757365642e>174 489 R .084 -<54686973206d617920636175736520696e64657465726d696e6174652062656861> -5.085 F .084<76696f7220666f72>-.2 F<6e657477>174 501 Q .327 -<6f726b206e616d65732074686174207265736f6c76>-.1 F 2.827<6574>-.15 G -2.827<6f6d>-2.827 G .327<756c7469706c65206164647265737365732e>-2.827 F -.328<5468657265666f72652c20757365206f6620616e2061646472657373206973> -5.328 F 2.92<7265636f6d6d656e6465642e20546865>174 513 R F2 -.75<4661> -2.92 G<6d696c79>.75 E F1 -.1<6b65>2.92 G 2.92<7964>-.05 G<6566>-2.92 E -.42<61756c747320746f20494e4554202849507634292e>-.1 F .42 -<495076362075736572732077686f207769736820746f>5.42 F 1.611<616c736f2061 -6363657074204950763620636f6e6e656374696f6e732073686f756c6420616464206164 -646974696f6e616c2046>174 525 R<616d696c793d696e657436>-.15 E F0 -<4461656d6f6e50>4.112 E<6f72>-.2 E<2d>-.37 E<744f7074696f6e73>174 537 Q -F1 2.889<6c696e65732e2046>2.89 F .389<6f722061206c6f63616c20736f636b> --.15 F .389<65742c207573652046>-.1 F .389 -<616d696c793d6c6f63616c206f722046>-.15 F 2.889 -<616d696c793d756e69782e20546865>-.15 F F2<496e7075742d>2.889 E -<4d61696c46>174 549 Q<696c746572>-.45 E<73>-.1 E F1 -.1<6b65>3.34 G 3.34 -<796f>-.05 G -.15<7665>-3.49 G .84<7272696465732074686520646566>.15 F -.84<61756c74206c697374206f6620696e707574206d61696c208c6c74657273206c6973 -74656420696e20746865>-.1 F F0<496e7075742d>3.34 E -<4d61696c46696c74657273>174 561 Q F1 2.955<6f7074696f6e2e204966>2.955 F -.455<6d756c7469706c6520696e707574206d61696c208c6c7465727320617265207265 -7175697265642c20746865>2.955 F 2.955<796d>-.15 G .455 -<75737420626520736570612d>-2.955 F 2.064 -<72617465642062792073656d69636f6c6f6e7320286e6f7420636f6d6d6173292e>174 -573 R F2<4d6f64698c6572>7.064 E F1 2.065 -<63616e20626520612073657175656e63652028776974686f757420616e>4.565 F<79> --.15 E<64656c696d697465727329206f662074686520666f6c6c6f>174 585 Q -<77696e6720636861726163746572733a>-.25 E 0 Cg EP -%%Page: 66 62 +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-33)195.86 E 2.5(4.9. File)87 96 R(Modes)2.5 E/F1 10 +/Times-Roman@0 SF .264 +(The modes used for \214les depend on what functionality you w)127 112.2 +R .264(ant and the le)-.1 F -.15(ve)-.25 G 2.764(lo).15 G 2.764(fs) +-2.764 G .264(ecurity you)-2.764 F 2.561(require. In)102 124.2 R(man) +2.561 E 2.561(yc)-.15 G(ases)-2.561 E/F2 10/Times-Italic@0 SF(sendmail) +2.561 E F1 .06 +(does careful checking of the modes of \214les and directories to a) +2.561 F -.2(vo)-.2 G(id).2 E 1.335(accidental compromise; if you w)102 +136.2 R 1.336(ant to mak)-.1 F 3.836(ei)-.1 G 3.836(tp)-3.836 G 1.336 +(ossible to ha)-3.836 F 1.636 -.15(ve g)-.2 H 1.336 +(roup-writable support \214les you).15 F(may need to use the)102 148.2 Q +F0(DontBlameSendmail)2.5 E F1(option to turn of)2.5 E 2.5(fs)-.25 G +(ome of these checks.)-2.5 E F0 2.5(4.9.1. T)102 172.2 R 2.5(os)-.92 G +(uid or not to suid?)-2.5 E F2(Sendmail)142 188.4 Q F1 .163 +(is no longer installed set-user)2.663 F .163(-ID to root.)-.2 F .162 +(sendmail/SECURITY e)5.163 F .162(xplains ho)-.15 F 2.662(wt)-.25 G(o) +-2.662 E .559(con\214gure and install)117 200.4 R F2(sendmail)3.059 E F1 +.559(without set-user)3.059 F .559(-ID to root b)-.2 F .56 +(ut set-group-ID which is the def)-.2 F(ault)-.1 E +(con\214guration starting with 8.12.)117 212.4 Q 1.286 +(The daemon usually runs as root, unless other measures are tak)142 +228.6 R 3.785(en. At)-.1 F 1.285(the point where)3.785 F F2(sendmail)117 +240.6 Q F1 .494(is about to)2.994 F F2 -.2(ex)2.994 G(ec).2 E F1 .494 +(\(2\) a mailer)1.666 F 2.995(,i)-.4 G 2.995(tc)-2.995 G .495 +(hecks to see if the userid is zero \(root\); if so, it resets)-2.995 F +.334(the userid and groupid to a def)117 252.6 R .333(ault \(set by the) +-.1 F F0(U=)2.833 E F1 .333 +(equate in the mailer line; if that is not set, the)2.833 F F0 +(DefaultUser)117 264.6 Q F1 .121(option is used\).)2.621 F .122 +(This can be o)5.121 F -.15(ve)-.15 G .122(rridden by setting the).15 F +F0(S)2.622 E F1 .122(\215ag to the mailer for mail-)2.622 F .804 +(ers that are trusted and must be called as root.)117 276.6 R(Ho)5.804 E +(we)-.25 E -.15(ve)-.25 G 1.604 -.4(r, t).15 H .804 +(his will cause mail processing to be).4 F(accounted \(using)117 288.6 Q +F2(sa)2.5 E F1 +(\(8\)\) to root rather than to the user sending the mail.)1.666 E 3.557 +(Am)142 304.8 S 1.057(iddle ground is to set the)-3.557 F F0(RunAsUser) +3.557 E F1 3.557(option. This)3.557 F(causes)3.557 E F2(sendmail)3.557 E +F1 1.058(to become the)3.557 F .392(indicated user as soon as it has do\ +ne the startup that requires root pri)117 316.8 R(vile)-.25 E .392 +(ges \(primarily)-.15 F 2.892(,o)-.65 G(pening)-2.892 E(the)117 328.8 Q +/F3 9/Times-Roman@0 SF(SMTP)3.741 E F1(sock)3.741 E 3.741(et\). If)-.1 F +1.241(you use)3.741 F F0(RunAsUser)3.741 E F1 3.741(,t)C 1.241 +(he queue directory \(normally)-3.741 F F2(/var/spool/mqueue)3.742 E F1 +(\))A 1.315(should be o)117 340.8 R 1.315(wned by that user)-.25 F 3.815 +(,a)-.4 G 1.315(nd all \214les and databases \(including user)-3.815 F +F2(.forwar)3.814 E(d)-.37 E F1 1.314(\214les, alias)3.814 F .256 +(\214les, :include: \214les, and e)117 352.8 R .256 +(xternal databases\) must be readable by that user)-.15 F 5.257(.A)-.55 +G .257(lso, since sendmail)-5.257 F .836 +(will not be able to change its uid, deli)117 364.8 R -.15(ve)-.25 G +.836(ry to programs or \214les will be mark).15 F .836 +(ed as unsafe, e.g.,)-.1 F(undeli)117 376.8 Q -.15(ve)-.25 G .814 +(rable, in).15 F F2(.forwar)3.314 E(d)-.37 E F1 3.314(,a)C .814 +(liases, and :include: \214les.)-3.314 F .814(Administrators can o)5.814 +F -.15(ve)-.15 G .815(rride this by set-).15 F .7(ting the)117 388.8 R +F0(DontBlameSendmail)3.2 E F1 .7(option to the setting)3.2 F F0 +(NonRootSafeAddr)3.2 E F1(.)A F0(RunAsUser)5.7 E F1 .7(is proba-)3.2 F +1.186(bly best suited for \214re)117 400.8 R -.1(wa)-.25 G 1.186 +(ll con\214gurations that don').1 F 3.686(th)-.18 G -2.25 -.2(av e) +-3.686 H(re)3.886 E 1.186(gular user logins.)-.15 F 1.186 +(If the option is)6.186 F 1.443 +(used on a system which performs local deli)117 412.8 R -.15(ve)-.25 G +(ry).15 E 3.943(,t)-.65 G 1.443(hen the local deli)-3.943 F -.15(ve)-.25 +G 1.442(ry agent must ha).15 F 1.742 -.15(ve t)-.2 H(he).15 E .974 +(proper permissions \(i.e., usually set-user)117 424.8 R .975 +(-ID root\) since it will be in)-.2 F -.2(vo)-.4 G -.1(ke).2 G 3.475(db) +.1 G 3.475(yt)-3.475 G(he)-3.475 E F0(RunAsUser)3.475 E F1(,)A +(not by root.)117 436.8 Q F0 2.5(4.9.2. T)102 460.8 R(ur)-.92 E +(ning off security checks)-.15 E F2(Sendmail)142 477 Q F1 .648(is v) +3.148 F .648 +(ery particular about the modes of \214les that it reads or writes.)-.15 +F -.15(Fo)5.648 G 3.148(re).15 G(xample,)-3.298 E .25(by def)117 489 R +.251(ault it will refuse to read most \214les that are group writable o\ +n the grounds that the)-.1 F 2.751(ym)-.15 G(ight)-2.751 E(ha)117 501 Q +1.216 -.15(ve b)-.2 H .916 +(een tampered with by someone other than the o).15 F .916 +(wner; it will e)-.25 F -.15(ve)-.25 G 3.416(nr).15 G .916 +(efuse to read \214les in)-3.416 F 1.456(group writable directories.)117 +513 R 1.456(Also, sendmail will refuse to create a ne)6.456 F 3.957(wa) +-.25 G 1.457(liases database in an)-3.957 F .032(unsafe directory)117 +525 R 5.032(.Y)-.65 G .031(ou can get around this by manually creating \ +the database \214le as a trusted user)-6.132 F +(ahead of time and then reb)117 537 Q(uilding the aliases database with) +-.2 E F0(newaliases)2.5 E F1(.)A .437(If you are)142 553.2 R F2(quite) +2.937 E F1 .437(sure that your con\214guration is safe and you w)2.937 F +(ant)-.1 E F2(sendmail)2.938 E F1 .438(to a)2.938 F -.2(vo)-.2 G .438 +(id these).2 F 1.187(security checks, you can turn of)117 565.2 R 3.687 +(fc)-.25 G 1.187(ertain checks using the)-3.687 F F0(DontBlameSendmail) +3.686 E F1 3.686(option. This)3.686 F 1.389(option tak)117 577.2 R 1.389 +(es one or more names that disable checks.)-.1 F 1.39 +(In the descriptions that follo)6.389 F 2.69 -.65(w, \231)-.25 H(unsafe) +.65 E(directory\232 means a directory that is writable by an)117 589.2 Q +(yone other than the o)-.15 E(wner)-.25 E 5(.T)-.55 G(he v)-5 E +(alues are:)-.25 E 15.73(Safe No)117 605.4 R(special handling.)2.5 E +(AssumeSafeCho)117 621.6 Q(wn)-.25 E .413(Assume that the)153 633.6 R F2 +-.15(ch)2.913 G(own).15 E F1 .413(system call is restricted to root.) +2.913 F .413(Since some v)5.413 F .412(ersions of UNIX)-.15 F .865 +(permit re)153 645.6 R .865(gular users to gi)-.15 F 1.166 -.15(ve aw) +-.25 H .866(ay their \214les to other users on some \214lesystems,).05 F +F2(send-)3.366 E(mail)153 657.6 Q F1 .457(often cannot assume that a gi) +2.957 F -.15(ve)-.25 G 2.956<6e8c>.15 G .456(le w)-2.956 F .456 +(as created by the o)-.1 F(wner)-.25 E 2.956(,p)-.4 G .456 +(articularly when)-2.956 F 1.474(it is in a writable directory)153 669.6 +R 6.475(.Y)-.65 G 1.475(ou can set this \215ag if you kno)-7.575 F 3.975 +(wt)-.25 G 1.475(hat \214le gi)-3.975 F -.15(ve)-.25 G -2.3 -.15(aw a) +.15 H 3.975(yi).15 G(s)-3.975 E(restricted on your system.)153 681.6 Q +(ClassFileInUnsafeDirP)117 697.8 Q(ath)-.15 E .494 +(When reading class \214les \(using the)153 709.8 R F0(F)2.993 E F1 .493 +(line in the con\214guration \214le\), allo)2.993 F 2.993<778c>-.25 G +.493(les that are)-2.993 F(in unsafe directories.)153 721.8 Q 0 Cg EP +%%Page: 34 30 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d36362053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF 67.56<6161>214 96 S -.1<6c7761>-67.56 G -<797320726571756972652061757468656e7469636174696f6e>.1 E 67<6262>214 108 -S<696e6420746f20696e74657266>-67 E<616365207468726f75676820776869636820 -6d61696c20686173206265656e207265636569>-.1 E -.15<7665>-.25 G<64>.15 E -67.56<6370>214 120 S -<6572666f726d20686f73746e616d652063616e6f6e698c636174696f6e20282e636629> --67.56 E 68.67<6672>214 132 S<6571756972652066756c6c79207175616c698c6564 -20686f73746e616d6520282e636629>-68.67 E 68.11<7352>214 144 S -<756e20736d7470732028534d5450206f>-68.11 E -.15<7665>-.15 G 2.5<7253>.15 -G<534c2920696e7374656164206f6620736d7470>-2.5 E 67<7561>214 156 S -<6c6c6f>-67 E 2.5<7775>-.25 G -<6e7175616c698c65642061646472657373657320282e636629>-2.5 E 64.78<4164> -214 168 S<697361626c652041>-64.78 E<55544820286f>-.55 E -.15<7665>-.15 G -<72726964657320276127206d6f64698c657229>.15 E 65.33<4364>214 180 S -<6f6e27>-65.33 E 2.5<7470>-.18 G -<6572666f726d20686f73746e616d652063616e6f6e698c636174696f6e>-2.5 E 65.89 -<4564>214 192 S<6973616c6c6f>-65.89 E 2.5<7745>-.25 G -<54524e202873656520524643203234373629>-2.5 E 64.78<4f6f>214 204 S -<7074696f6e616c3b206966206f70656e696e672074686520736f636b>-64.78 E -<65742066>-.1 E<61696c732069676e6f7265206974>-.1 E 66.44<5364>214 216 S -<6f6e27>-66.44 E 2.5<746f>-.18 G -.25<6666>-2.5 G<6572205354>.25 E<4152> --.93 E<54544c53>-.6 E 2.413<546861742069732c206f6e652077>174 232.2 R -2.412<617920746f20737065636966792061206d657373616765207375626d697373696f -6e206167656e7420284d534129207468617420616c>-.1 F -.1<7761>-.1 G<7973>.1 -E<72657175697265732061757468656e7469636174696f6e2069733a>174 244.2 Q 2.5 -<4f44>214 260.4 S<61656d6f6e506f72744f7074696f6e733d4e616d653d4d53412c20 -506f72743d3538372c204d3d4561>-2.5 E .243 -<546865206d6f64698c657273207468617420617265206d61726b>174 276.6 R .244 -<656420776974682022282e63662922206861>-.1 F .544 -.15<7665206f>-.2 H -.244<6e6c79206566>.15 F .244 -<6665637420696e20746865207374616e6461726420636f6e8c672d>-.25 F .16 -<75726174696f6e208c6c652c20696e20776869636820746865>174 288.6 R 2.66 -<7961>-.15 G .16<72652061>-2.66 F -.25<7661>-.2 G .16 -<696c61626c6520766961>.25 F F0<247b6461656d6f6e5f8d6167737d>2.66 E F1 -5.16<2e4e>C .16<6f746963653a20446f>-5.16 F F0<6e6f74>2.66 E F1<757365> -2.66 E .46<7468652060>174 300.6 R<606127>-.74 E 2.96<276d>-.74 G .46 -<6f64698c6572206f6e2061207075626c69632061636365737369626c65204d54>-2.96 -F 2.961<4121204974>-.93 F .461 -<73686f756c64206f6e6c79206265207573656420666f722061204d5341>2.961 F -2.553<7468617420697320616363657373656420627920617574686f72697a6564207573 -65727320666f7220696e697469616c206d61696c207375626d697373696f6e2e>174 -312.6 R 2.552<5573657273206d757374>7.552 F 1.141<61757468656e7469636174 -6520746f207573652061204d5341207768696368206861732074686973206f7074696f6e -207475726e6564206f6e2e>174 324.6 R 1.141<546865208d6167732060>6.141 F -<606327>-.74 E 3.641<2761>-.74 G<6e64>-3.641 E -.74<6060>174 336.6 S -<4327>.74 E 3.786<2763>-.74 G 1.286<616e206368616e67652074686520646566> --3.786 F 1.285<61756c7420666f7220686f73746e616d652063616e6f6e698c636174 -696f6e20696e20746865>-.1 F/F2 10/Times-Italic@0 SF -<73656e646d61696c2e6366>3.785 E F1<8c6c652e>3.785 E .764 -<536565207468652072656c65>174 348.6 R -.25<7661>-.25 G .765 -<6e7420646f63756d656e746174696f6e20666f72>.25 F/F3 9/Times-Roman@0 SF -<464541>3.265 E<54555245286e6f63616e6f6e69667929>-.999 E F1 5.765<2e54>C -.765<6865206d6f64698c65722060>-5.765 F -1.95<60662027>-.74 F 3.265<2764> --.74 G<69732d>-3.265 E<616c6c6f>174 360.6 Q .795 -<777320616464726573736573206f662074686520666f726d>-.25 F F0 -<7573657240686f7374>3.295 E F1 .794<756e6c65737320746865>3.295 F 3.294 -<7961>-.15 G .794<7265207375626d6974746564206469726563746c79>-3.294 F -5.794<2e54>-.65 G<6865>-5.794 E 2.127<8d61672060>174 372.6 R<607527>-.74 -E 4.627<2761>-.74 G<6c6c6f>-4.627 E 2.127<777320756e7175616c698c65642073 -656e646572206164647265737365732c20692e652e2c2074686f736520776974686f7574 -2040686f73742e>-.25 F -.74<6060>7.127 G<6227>.74 E<27>-.74 E 2.791<666f -726365732073656e646d61696c20746f2062696e6420746f2074686520696e74657266> -174 384.6 R 2.791<616365207468726f7567682077686963682074686520652d6d6169 -6c20686173206265656e>-.1 F<7265636569>174 396.6 Q -.15<7665>-.25 G 4.369 -<6466>.15 G 1.869 -<6f7220746865206f7574676f696e6720636f6e6e656374696f6e2e>-4.369 F F0 -1.2 -<5741>6.869 G<524e494e473a>1.2 E F1 1.869<5573652060>4.369 F<606227>-.74 -E 4.369<276f>-.74 G 1.869<6e6c79206966206f7574676f696e67>-4.369 F .517< -6d61696c2063616e20626520726f75746564207468726f7567682074686520696e636f6d -696e6720636f6e6e656374696f6e27>174 408.6 R 3.017<7369>-.55 G<6e74657266> --3.017 E .517<61636520746f206974732064657374696e6174696f6e2e>-.1 F .119< -4e6f20617474656d7074206973206d61646520746f2063617463682070726f626c656d73 -2064756520746f2061206d6973636f6e8c6775726174696f6e206f662074686973207061 -72616d65746572>174 420.6 R<2c>-.4 E 1.177<757365206974206f6e6c7920666f72 -207669727475616c20686f7374696e672077686572652065616368207669727475616c20 -696e74657266>174 432.6 R 1.177<6163652063616e20636f6e6e65637420746f2065> --.1 F -.15<7665>-.25 G<7279>.15 E 2.001 -<706f737369626c65206c6f636174696f6e2e>174 444.6 R 2.001 -<546869732077696c6c20616c736f206f>7.001 F -.15<7665>-.15 G 2.001 -<727269646520706f737369626c652073657474696e677320766961>.15 F F0 -<436c69656e7450>4.502 E<6f72744f702d>-.2 E<74696f6e732e>174 456.6 Q F1 -<4e6f74652c>5.487 E F2<73656e646d61696c>2.987 E F1 .487 -<77696c6c206c697374656e206f6e2061206e65>2.987 F 2.986<7773>-.25 G -<6f636b>-2.986 E .486 -<657420666f722065616368206f63637572656e6365206f6620746865>-.1 F F0 -<4461652d>2.986 E<6d6f6e50>174 468.6 Q<6f72744f7074696f6e73>-.2 E F1 -.838<6f7074696f6e20696e206120636f6e8c6775726174696f6e208c6c652e>3.338 F -.838<546865206d6f64698c65722060>5.838 F<604f27>-.74 E 3.338<2763>-.74 G -.838<61757365732073656e642d>-3.338 F 1.418 -<6d61696c20746f2069676e6f7265206120736f636b>174 480.6 R 1.417 -<65742069662069742063616e27>-.1 F 3.917<7462>-.18 G 3.917<656f>-3.917 G -3.917<70656e65642e2054686973>-3.917 F 1.417<6170706c69657320746f2066> -3.917 F 1.417<61696c757265732066726f6d20746865>-.1 F<736f636b>174 492.6 -Q<657428322920616e642062696e642832292063616c6c732e>-.1 E<446566>102 -508.8 Q 2.95<61756c7441757468496e666f205b6e6f>-.1 F .181<73686f7274206e -616d655d2046696c656e616d65207468617420636f6e7461696e7320646566>2.681 F -.181<61756c742061757468656e7469636174696f6e20696e666f726d6174696f6e2066 -6f72206f75742d>-.1 F 1.738<676f696e6720636f6e6e656374696f6e732e20546869 -73208c6c65206d75737420636f6e7461696e2074686520757365722069642c2074686520 -617574686f72697a6174696f6e2069642c20746865>174 520.8 R<7061737377>174 -532.8 Q 1.561<6f72642028706c61696e207465>-.1 F 1.562<7874292c2074686520 -7265616c6d20616e6420746865206c697374206f66206d656368616e69736d7320746f20 -757365206f6e207365706172617465>-.15 F .288<6c696e657320616e64206d757374 -206265207265616461626c6520627920726f6f7420286f72207468652074727573746564 -207573657229206f6e6c79>174 544.8 R 5.287<2e49>-.65 G 2.787<666e>-5.287 G -2.787<6f72>-2.787 G .287<65616c6d2069732073706563692d>-2.787 F<8c65642c> -174 556.8 Q F0<246a>3.704 E F1 1.204<697320757365642e>3.704 F 1.205<4966 -206e6f206d656368616e69736d73206172652073706563698c65642c20746865206c6973 -74206769>6.204 F -.15<7665>-.25 G 3.705<6e62>.15 G<79>-3.705 E F0 -.5 -<4175>3.705 G<74684d656368612d>.5 E<6e69736d73>174 568.8 Q F1 1.372 -<697320757365642e>3.872 F 1.372<4e6f746963653a2074686973206f7074696f6e20 -6973206465707265636174656420616e642077696c6c2062652072656d6f>6.372 F --.15<7665>-.15 G 3.871<6469>.15 G 3.871<6e66>-3.871 G<7574757265>-3.871 -E -.15<7665>174 580.8 S 3.41<7273696f6e732e204d6f72656f>.15 F -.15<7665> --.15 G 1.71 -.4<722c2069>.15 H 3.41<7464>.4 G<6f65736e27>-3.41 E 3.41 -<7477>-.18 G .911 -<6f726b20666f7220746865204d53502073696e63652069742063616e27>-3.51 F -3.411<7472>-.18 G .911<65616420746865208c6c652028746865>-3.411 F .014 -<8c6c65206d757374206e6f742062652067726f75702f77>174 592.8 R .014 -<6f726c642d7265616461626c65206f7468657277697365>-.1 F F2 -<73656e646d61696c>2.514 E F1 .014<77696c6c20636f6d706c61696e292e>2.514 F -.014<55736520746865>5.014 F 1.2 -<61757468696e666f2072756c6573657420696e73746561642077686963682070726f> -174 604.8 R 1.2<7669646573206d6f726520636f6e74726f6c206f>-.15 F -.15 -<7665>-.15 G 3.7<7274>.15 G 1.2 -<6865207573616765206f66207468652064617461>-3.7 F<616e>174 616.8 Q<7977> --.15 E<6179>-.1 E<2e>-.65 E<446566>102 633 Q<61756c74436861725365743d> --.1 E F2 -.15<6368>C<6172>.15 E<736574>-.1 E F1 .161<5b6e6f2073686f7274 -206e616d655d205768656e2061206d65737361676520746861742068617320382d626974 -20636861726163746572732062>174 645 R .16 -<7574206973206e6f7420696e204d494d4520666f72>-.2 F<2d>-.2 E .494 -<6d617420697320636f6e>174 657 R -.15<7665>-.4 G .495<7274656420746f204d -494d452028736565207468652045696768744269744d6f6465206f7074696f6e29206120 -63686172616374657220736574206d757374206265>.15 F .488 -<696e636c7564656420696e2074686520436f6e74656e742d54>174 669 R .488 -<7970653a20686561646572>-.8 F 5.488<2e54>-.55 G .487<686973206368617261 -6374657220736574206973206e6f726d616c6c79207365742066726f6d20746865> --5.488 F .133<436861727365743d208c656c64206f6620746865206d61696c65722064 -657363726970746f72>174 681 R 5.133<2e49>-.55 G 2.633<6674>-5.133 G .133 -<686174206973206e6f74207365742c207468652076>-2.633 F .133 -<616c7565206f662074686973206f7074696f6e206973>-.25 F 2.5 -<757365642e204966>174 693 R -<74686973206f7074696f6e206973206e6f74207365742c207468652076>2.5 E -<616c75652099756e6b6e6f>-.25 E<776e2d386269749a20697320757365642e>-.25 E -<4461746146696c65427566>102 709.2 Q<66657253697a653d>-.25 E F2<746872>A -<6573686f6c64>-.37 E F1 .012 -<5b6e6f2073686f7274206e616d655d2053657420746865>174 721.2 R F2<746872> -2.512 E<6573686f6c64>-.37 E F1 2.512<2c69>C 2.512<6e62>-2.512 G .011<79 -7465732c206265666f72652061206d656d6f72792d626173656420717565756520646174 -61208c6c65>-2.512 F 0 Cg EP -%%Page: 67 63 +/F0 10/Times-Bold@0 SF 193.36(SMM:08-34 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF(DontW)117 +96 Q(arnF)-.8 E(orw)-.15 E(ardFileInUnsafeDirP)-.1 E(ath)-.15 E(Pre)153 +108 Q -.15(ve)-.25 G(nt logging of unsafe directory path w).15 E +(arnings for non-e)-.1 E(xistent forw)-.15 E(ard \214les.)-.1 E +(ErrorHeaderInUnsafeDirP)117 124.2 Q(ath)-.15 E(Allo)153 136.2 Q 2.5(wt) +-.25 G(he \214le named in the)-2.5 E F0(Err)2.5 E(orHeader)-.18 E F1 +(option to be in an unsafe directory)2.5 E(.)-.65 E(FileDeli)117 152.4 Q +-.15(ve)-.25 G(ryT).15 E(oHardLink)-.8 E(Allo)153 164.4 Q 2.5(wd)-.25 G +(eli)-2.5 E -.15(ve)-.25 G(ry to \214les that are hard links.).15 E +(FileDeli)117 180.6 Q -.15(ve)-.25 G(ryT).15 E(oSymLink)-.8 E(Allo)153 +192.6 Q 2.5(wd)-.25 G(eli)-2.5 E -.15(ve)-.25 G +(ry to \214les that are symbolic links.).15 E -.15(Fo)117 208.8 S(rw).15 +E(ardFileInGroupWritableDirP)-.1 E(ath)-.15 E(Allo)153 220.8 Q(w)-.25 E +/F2 10/Times-Italic@0 SF(.forwar)2.5 E(d)-.37 E F1 +(\214les in group writable directories.)2.5 E -.15(Fo)117 237 S(rw).15 E +(ardFileInUnsafeDirP)-.1 E(ath)-.15 E(Allo)153 249 Q(w)-.25 E F2 +(.forwar)2.5 E(d)-.37 E F1(\214les in unsafe directories.)2.5 E -.15(Fo) +117 265.2 S(rw).15 E(ardFileInUnsafeDirP)-.1 E(athSafe)-.15 E(Allo)153 +277.2 Q 2.612(wa)-.25 G F2(.forwar)A(d)-.37 E F1 .112(\214le that is in\ + an unsafe directory to include references to program and)2.612 F +(\214les.)153 289.2 Q(GroupReadableK)117 305.4 Q -.15(ey)-.25 G(File).15 +E(Accept a group-readable k)153 317.4 Q .3 -.15(ey \214)-.1 H(le for ST) +.15 E(AR)-.93 E(TTLS.)-.6 E(GroupReadableSASLDBFile)117 333.6 Q +(Accept a group-readable Cyrus SASL passw)153 345.6 Q(ord \214le.)-.1 E +(GroupReadableDef)117 361.8 Q(aultAuthInfoFile)-.1 E +(Accept a group-readable Def)153 373.8 Q(aultAuthInfo \214le for SASL.) +-.1 E(GroupWritableAliasFile)117 390 Q(Allo)153 402 Q 2.5(wg)-.25 G +(roup-writable alias \214les.)-2.5 E(GroupWritableDirP)117 418.2 Q +(athSafe)-.15 E .224(Change the de\214nition of \231unsafe directory\ +\232 to consider group-writable directories to be)153 430.2 R 2.5 +(safe. W)153 442.2 R(orld-writable directories are al)-.8 E -.1(wa)-.1 G +(ys unsafe.).1 E(GroupWritableF)117 458.4 Q(orw)-.15 E(ardFile)-.1 E +(Allo)153 470.4 Q 2.5(wg)-.25 G(roup writable)-2.5 E F2(.forwar)2.5 E(d) +-.37 E F1(\214les.)2.5 E(GroupWritableF)117 486.6 Q(orw)-.15 E +(ardFileSafe)-.1 E(Accept group-writable)153 498.6 Q F2(.forwar)2.5 E(d) +-.37 E F1(\214les as safe for program and \214le deli)2.5 E -.15(ve)-.25 +G(ry).15 E(.)-.65 E(GroupWritableIncludeFile)117 514.8 Q(Allo)153 526.8 +Q 2.5(wg)-.25 G(roup writable)-2.5 E F2(:include:)2.5 E F1(\214les.)2.5 +E(GroupWritableIncludeFileSafe)117 543 Q(Accept group-writable)153 555 Q +F2(:include:)2.5 E F1(\214les as safe for program and \214le deli)2.5 E +-.15(ve)-.25 G(ry).15 E(.)-.65 E(GroupWritableSASLDBFile)117 571.2 Q +(Accept a group-writable Cyrus SASL passw)153 583.2 Q(ord \214le.)-.1 E +(HelpFileInUnsafeDirP)117 599.4 Q(ath)-.15 E(Allo)153 611.4 Q 2.5(wt) +-.25 G(he \214le named in the)-2.5 E F0(HelpFile)2.5 E F1 +(option to be in an unsafe directory)2.5 E(.)-.65 E +(IncludeFileInGroupWritableDirP)117 627.6 Q(ath)-.15 E(Allo)153 639.6 Q +(w)-.25 E F2(:include:)2.5 E F1(\214les in group writable directories.) +2.5 E(IncludeFileInUnsafeDirP)117 655.8 Q(ath)-.15 E(Allo)153 667.8 Q(w) +-.25 E F2(:include:)2.5 E F1(\214les in unsafe directories.)2.5 E +(IncludeFileInUnsafeDirP)117 684 Q(athSafe)-.15 E(Allo)153 696 Q 3.705 +(wa)-.25 G F2(:include:)A F1 1.206 +(\214le that is in an unsafe directory to include references to program) +3.705 F(and \214les.)153 708 Q 0 Cg EP +%%Page: 35 31 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3637>195.86 E -/F1 10/Times-Roman@0 SF<6265636f6d6573206469736b2d62617365642e>174 96 Q -<54686520646566>5 E<61756c7420697320343039362062797465732e>-.1 E -<446561644c657474657244726f703d>102 112.2 Q/F2 10/Times-Italic@0 SF -<8c6c65>A F1 .535<5b6e6f2073686f7274206e616d655d2044658c6e65732074686520 -6c6f636174696f6e206f66207468652073797374656d2d7769646520646561642e6c6574 -746572208c6c652c20666f726d65726c79>174 124.2 R .744 -<68617264636f64656420746f202f7573722f746d702f646561642e6c6574746572>174 -136.2 R 5.744<2e49>-.55 G 3.244<6674>-5.744 G .744 -<686973206f7074696f6e206973206e6f7420736574202874686520646566>-3.244 F -.743<61756c74292c2073656e646d61696c>-.1 F 1.464 -<77696c6c206e6f7420617474656d707420746f207361>174 148.2 R 1.764 -.15 -<76652074>-.2 H 3.964<6f6173>.15 G 1.464 -<797374656d2d7769646520646561642e6c6574746572208c6c6520696e207468652065> --3.964 F -.15<7665>-.25 G 1.465<6e742069742063616e6e6f74>.15 F .575<626f -756e636520746865206d61696c20746f207468652075736572206f7220706f73746d6173 -746572>174 160.2 R 5.575<2e49>-.55 G .575<6e73746561642c2069742077696c6c -2072656e616d6520746865207166208c6c65206173206974>-5.575 F<68617320696e20 -7468652070617374207768656e2074686520646561642e6c6574746572208c6c6520636f -756c64206e6f74206265206f70656e65642e>174 172.2 Q<446566>102 188.4 Q -<61756c74557365723d>-.1 E F2<757365723a6772>A<6f7570>-.45 E F1 .013 -<5b755d205365742074686520646566>174 200.4 R .013 -<61756c742075736572696420666f72206d61696c65727320746f>-.1 F F2 -<757365723a6772>2.513 E<6f7570>-.45 E F1 5.013<2e49>C<66>-5.013 E F2 -<6772>2.513 E<6f7570>-.45 E F1 .014<6973206f6d697474656420616e64>2.514 F -F2<75736572>2.514 E F1<6973>2.514 E 4.307<6175>174 212.4 S 1.807<736572 -206e616d6520286173206f70706f73656420746f2061206e756d65726963207573657220 -6964292074686520646566>-4.307 F 1.806 -<61756c742067726f7570206c697374656420696e20746865>-.1 F 1.153<2f6574632f -706173737764208c6c6520666f7220746861742075736572206973207573656420617320 -74686520646566>174 224.4 R 1.153<61756c742067726f75702e>-.1 F<426f7468> -6.153 E F2<75736572>3.653 E F1<616e64>3.653 E F2<6772>3.653 E<6f7570> --.45 E F1 1.153<6d6179206265206e756d657269632e>174 236.4 R 1.152 -<4d61696c65727320776974686f757420746865>6.152 F F2<53>3.652 E F1 1.152< -8d616720696e20746865206d61696c65722064658c6e6974696f6e2077696c6c2072756e -206173>3.652 F .142<746869732075736572>174 250.4 R 5.142<2e44>-.55 G -<6566>-5.142 E .142<61756c747320746f20313a312e>-.1 F .142<5468652076> -5.142 F .142<616c75652063616e20616c736f206265206769>-.25 F -.15<7665> --.25 G 2.642<6e61>.15 G 2.642<736173>-2.642 G .142 -<796d626f6c69632075736572206e616d652e>-2.642 F/F3 7/Times-Roman@0 SF -<3139>-4 I F1<44656c61794c413d>102 266.6 Q F2<4c41>A F1 .996<5b6e6f2073 -686f7274206e616d655d205768656e207468652073797374656d206c6f61642061>17.48 -F -.15<7665>-.2 G .996<726167652065>.15 F<786365656473>-.15 E F2<4c41> -3.496 E F1<2c>A F2<73656e646d61696c>3.496 E F1 .995 -<77696c6c20736c656570>3.495 F<666f72206f6e65207365636f6e64206f6e206d6f73 -7420534d545020636f6d6d616e647320616e64206265666f726520616363657074696e67 -20636f6e6e656374696f6e732e>174 278.6 Q<44656c69>102 294.8 Q -.15<7665> --.25 G<7242794d696e3d>.15 E F2<74696d65>A F1 .202 -<5b305d20536574206d696e696d756d2074696d6520666f722044656c69>174 306.8 R --.15<7665>-.25 G 2.702<7242>.15 G 2.702<7953>-2.702 G .202 -<4d5450205365727669636520457874656e73696f6e20285246432032383532292e> --2.702 F .203<496620302c>5.203 F .487<6e6f2074696d65206973206c6973746564 -2c206966206c657373207468616e20302c207468652065>174 318.8 R .487 -<7874656e73696f6e206973206e6f74206f66>-.15 F .486 -<66657265642c2069662067726561746572207468616e20302c206974206973>-.25 F< -6c6973746564206173206d696e696d756d2074696d6520666f72207468652045484c4f20 -6b>174 330.8 Q -.15<6579>-.1 G -.1<776f>.15 G<72642044454c495645524259> -.1 E<2e>-1.29 E<44656c69>102 347 Q -.15<7665>-.25 G<72794d6f64653d>.15 E -F2<78>A F1<5b645d2044656c69>4 E -.15<7665>-.25 G 2.5<7269>.15 G 2.5 -<6e6d>-2.5 G<6f6465>-2.5 E F2<78>2.5 E F1 5<2e4c>C -2.25 -.15<65672061> --5 H 2.5<6c6d>.15 G<6f646573206172653a>-2.5 E 17.22<6944>214 363.2 S -<656c69>-17.22 E -.15<7665>-.25 G 2.5<7269>.15 G<6e74657261637469>-2.5 E --.15<7665>-.25 G<6c79202873796e6368726f6e6f75736c7929>.15 E 15<6244>214 -375.2 S<656c69>-15 E -.15<7665>-.25 G 2.5<7269>.15 G 2.5<6e62>-2.5 G -<61636b67726f756e6420286173796e6368726f6e6f75736c7929>-2.5 E 15<714a>214 -387.2 S<75737420717565756520746865206d657373616765202864656c69>-15 E --.15<7665>-.25 G 2.5<7264>.15 G<7572696e672071756575652072756e29>-2.5 E -15<6444>214 399.2 S<656665722064656c69>-15 E -.15<7665>-.25 G -<727920616e6420616c6c206d6170206c6f6f6b757073202864656c69>.15 E -.15 -<7665>-.25 G 2.5<7264>.15 G<7572696e672071756575652072756e29>-2.5 E -<446566>174 415.4 Q .711<61756c747320746f2060>-.1 F<606227>-.74 E 3.211 -<2769>-.74 G 3.211<666e>-3.211 G 3.211<6f6f>-3.211 G .711 -<7074696f6e2069732073706563698c65642c2060>-3.211 F<606927>-.74 E 3.211 -<2769>-.74 G 3.211<6669>-3.211 G 3.211<7469>-3.211 G 3.211<7373>-3.211 G -.712<706563698c65642062>-3.211 F .712<7574206769>-.2 F -.15<7665>-.25 G -3.212<6e6e>.15 G 3.212<6f61>-3.212 G -.18<7267>-3.212 G<752d>.18 E .094 -<6d656e742028692e652e2c2060>174 427.4 R<604f6427>-.74 E 2.594<2769>-.74 -G 2.594<7365>-2.594 G<717569>-2.594 E -.25<7661>-.25 G .094 -<6c656e7420746f2060>.25 F<604f646927>-.74 E 2.594<27292e20546865>-.74 F -F02.594 E F1 .094 -<636f6d6d616e64206c696e65208d61672073657473207468697320746f>2.594 F F0 -<69>2.594 E F1<2e>A 1.526 -<4e6f74653a20666f7220696e7465726e616c20726561736f6e732c2060>174 439.4 R -<606927>-.74 E 4.026<2764>-.74 G 1.526<6f6573206e6f742077>-4.026 F 1.527 -<6f726b2069662061206d696c74657220697320656e61626c6564207768696368206361 -6e>-.1 F<72656a656374206f722064656c65746520726563697069656e74732e>174 -451.4 Q<496e2074686174206361736520746865206d6f64652077696c6c206265206368 -616e67656420746f2060>5 E<606227>-.74 E<272e>-.74 E<4469616c44656c61793d> -102 467.6 Q F2<736c65657074696d65>A F1 .799 -<5b6e6f2073686f7274206e616d655d204469616c2d6f6e2d64656d616e64206e657477> -174 479.6 R .798<6f726b20636f6e6e656374696f6e732063616e207365652074696d -656f757473206966206120636f6e2d>-.1 F .665<6e656374696f6e206973206f70656e -6564206265666f7265207468652063616c6c206973207365742075702e>174 491.6 R -.665<496620746869732069732073657420746f20616e20696e74657276>5.665 F .665 -<616c20616e64206120636f6e2d>-.25 F .743<6e656374696f6e2074696d6573206f75 -74206f6e20746865208c72737420636f6e6e656374696f6e206265696e6720617474656d -70746564>174 503.6 R F2<73656e646d61696c>3.242 E F1 .742 -<77696c6c20736c65657020666f72>3.242 F .31 -<7468697320616d6f756e74206f662074696d6520616e6420747279206167>174 515.6 -R 2.81<61696e2e2054686973>-.05 F .31<73686f756c64206769>2.81 F .61 -.15 -<76652079>-.25 H .31 -<6f75722073797374656d2074696d6520746f2065737461626c697368>.15 F 1.543 -<74686520636f6e6e656374696f6e20746f20796f757220736572766963652070726f> -174 527.6 R<7669646572>-.15 E 6.543<2e55>-.55 G 1.543<6e69747320646566> --6.543 F 1.542<61756c7420746f207365636f6e64732c20736f20994469616c44652d> --.1 F 1.798<6c61793d359a20757365732061208c76>174 539.6 R 4.298<6573>-.15 -G 1.798<65636f6e642064656c6179>-4.298 F 6.798<2e44>-.65 G<6566>-6.798 E -1.799<61756c747320746f207a65726f20286e6f207265747279292e>-.1 F 1.799 -<546869732064656c6179206f6e6c79>6.799 F -<6170706c69657320746f206d61696c657273207768696368206861>174 551.6 Q .3 --.15<76652074>-.2 H<6865205a208d6167207365742e>.15 E -<4469726563745375626d697373696f6e4d6f64698c6572733d>102 567.8 Q F2 -<6d6f64698c6572>A<73>-.1 E F1<44658c6e6573>174 579.8 Q F0 -<247b6461656d6f6e5f8d6167737d>5.084 E F1 2.583<666f72206469726563742028 -636f6d6d616e64206c696e6529207375626d697373696f6e732e>5.084 F 2.583 -<4966206e6f74207365742c>7.583 F F0<247b6461656d6f6e5f8d6167737d>174 -591.8 Q F1 1.416 -<6973206569746865722022434320662220696620746865206f7074696f6e>3.916 F F0 -3.916 E F1 1.417 -<69732075736564206f72202263207522206f74686572776973652e>3.917 F<4e6f7465 -2074686174206f6e6c79207468652074686520224343222c202263222c202266222c2061 -6e6420227522208d6167732061726520636865636b>174 603.8 Q<65642e>-.1 E -<446f6e74426c616d6553656e646d61696c3d>102 620 Q F2 -<6f7074696f6e2c6f7074696f6e2c2e2e2e>A F1 .065 -<5b6e6f2073686f7274206e616d655d20496e206f7264657220746f2061>174 632 R --.2<766f>-.2 G .064<696420706f737369626c6520637261636b696e6720617474656d -707473206361757365642062792077>.2 F .064<6f726c642d20616e64>-.1 F .254< -67726f75702d7772697461626c65208c6c657320616e64206469726563746f726965732c> -174 644 R F2<73656e646d61696c>2.754 E F1 .255 -<646f657320706172616e6f696420636865636b696e67207768656e206f70656e2d> -2.754 F .298<696e67206d6f7374206f662069747320737570706f7274208c6c65732e> -174 656 R .297<496620666f7220736f6d6520726561736f6e20796f75206162736f6c -7574656c79206d7573742072756e20776974682c20666f72>5.297 F -.15<6578>174 -668 S .176<616d706c652c20612067726f75702d7772697461626c65>.15 F F2 -<2f657463>2.677 E F1<6469726563746f7279>2.677 E 2.677<2c74>-.65 G .177 -<68656e20796f752077696c6c206861>-2.677 F .477 -.15<76652074>-.2 H 2.677 -<6f74>.15 G .177<75726e206f66>-2.677 F 2.677<6674>-.25 G .177 -<68697320636865636b2d>-2.677 F .794<696e67202861742074686520636f7374206f -66206d616b696e6720796f75722073797374656d206d6f72652076756c6e657261626c65 -20746f2061747461636b292e>174 680 R .793<54686520706f737369626c65>5.793 F -.32 LW 76 689.6 72 689.6 DL 80 689.6 76 689.6 DL 84 689.6 80 689.6 DL 88 -689.6 84 689.6 DL 92 689.6 88 689.6 DL 96 689.6 92 689.6 DL 100 689.6 96 -689.6 DL 104 689.6 100 689.6 DL 108 689.6 104 689.6 DL 112 689.6 108 -689.6 DL 116 689.6 112 689.6 DL 120 689.6 116 689.6 DL 124 689.6 120 -689.6 DL 128 689.6 124 689.6 DL 132 689.6 128 689.6 DL 136 689.6 132 -689.6 DL 140 689.6 136 689.6 DL 144 689.6 140 689.6 DL 148 689.6 144 -689.6 DL 152 689.6 148 689.6 DL 156 689.6 152 689.6 DL 160 689.6 156 -689.6 DL 164 689.6 160 689.6 DL 168 689.6 164 689.6 DL 172 689.6 168 -689.6 DL 176 689.6 172 689.6 DL 180 689.6 176 689.6 DL 184 689.6 180 -689.6 DL 188 689.6 184 689.6 DL 192 689.6 188 689.6 DL 196 689.6 192 -689.6 DL 200 689.6 196 689.6 DL 204 689.6 200 689.6 DL 208 689.6 204 -689.6 DL 212 689.6 208 689.6 DL 216 689.6 212 689.6 DL/F4 5 -/Times-Roman@0 SF<3139>93.6 700 Q/F5 8/Times-Roman@0 SF<546865206f6c64> -3.2 I/F6 8/Times-Bold@0 SF<67>2 E F5 -<6f7074696f6e20686173206265656e20636f6d62696e656420696e746f20746865>2 E -F6<44656661756c7455736572>2 E F5<6f7074696f6e2e>2 E 0 Cg EP -%%Page: 68 64 +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-35)195.86 E/F1 10/Times-Roman@0 SF(Insuf)117 96 Q +(\214cientEntrop)-.25 E(y)-.1 E -.35(Tr)153 108 S 3.213(yt).35 G 3.213 +(ou)-3.213 G .713(se ST)-3.213 F(AR)-.93 E .713(TTLS e)-.6 F -.15(ve) +-.25 G 3.213(ni).15 G 3.213(ft)-3.213 G .713 +(he PRNG for OpenSSL is not properly seeded despite)-3.213 F +(the security problems.)153 120 Q(Link)117 136.2 Q +(edAliasFileInWritableDir)-.1 E(Allo)153 148.2 Q 2.5(wa)-.25 G 2.5(na) +-2.5 G(lias \214le that is a link in a writable directory)-2.5 E(.)-.65 +E(Link)117 164.4 Q(edClassFileInWritableDir)-.1 E(Allo)153 176.4 Q 2.5 +(wc)-.25 G(lass \214les that are links in writable directories.)-2.5 E +(Link)117 192.6 Q(edF)-.1 E(orw)-.15 E(ardFileInWritableDir)-.1 E(Allo) +153 204.6 Q(w)-.25 E/F2 10/Times-Italic@0 SF(.forwar)2.5 E(d)-.37 E F1 +(\214les that are links in writable directories.)2.5 E(Link)117 220.8 Q +(edIncludeFileInWritableDir)-.1 E(Allo)153 232.8 Q(w)-.25 E F2 +(:include:)2.5 E F1(\214les that are links in writable directories.)2.5 +E(Link)117 249 Q(edMapInWritableDir)-.1 E(Allo)153 261 Q 2.684(wm)-.25 G +.184(ap \214les that are links in writable directories.)-2.684 F .185 +(This includes alias database \214les.)5.185 F(Link)117 277.2 Q +(edServiceSwitchFileInWritableDir)-.1 E(Allo)153 289.2 Q 2.5(wt)-.25 G +(he service switch \214le to be a link e)-2.5 E -.15(ve)-.25 G 2.5(ni) +.15 G 2.5(ft)-2.5 G(he directory is writable.)-2.5 E(MapInUnsafeDirP)117 +305.4 Q(ath)-.15 E(Allo)153 317.4 Q 2.97(wm)-.25 G .47(aps \(e.g.,)-2.97 +F F2(hash)2.97 E F1(,)A F2(btr)2.97 E(ee)-.37 E F1 2.97(,a)C(nd)-2.97 E +F2(dbm)2.97 E F1 .47(\214les\) in unsafe directories.)2.97 F .47 +(This includes alias)5.47 F(database \214les.)153 329.4 Q +(NonRootSafeAddr)117 345.6 Q .484(Do not mark \214le and program deli) +153 357.6 R -.15(ve)-.25 G .485 +(ries as unsafe if sendmail is not running with root).15 F(pri)153 369.6 +Q(vile)-.25 E(ges.)-.15 E(RunProgramInUnsafeDirP)117 385.8 Q(ath)-.15 E +(Run programs that are in writable directories without logging a w)153 +397.8 Q(arning.)-.1 E(RunWritableProgram)117 414 Q +(Run programs that are group- or w)153 426 Q +(orld-writable without logging a w)-.1 E(arning.)-.1 E -.35(Tr)117 442.2 +S(ustStick).35 E(yBit)-.15 E(Allo)153 454.2 Q 3.406(wg)-.25 G .906 +(roup or w)-3.406 F .905(orld writable directories if the stick)-.1 F +3.405(yb)-.15 G .905(it is set on the directory)-3.405 F 5.905(.D)-.65 G +(o)-5.905 E(not set this on systems which do not honor the stick)153 +466.2 Q 2.5(yb)-.15 G(it on directories.)-2.5 E -.8(Wo)117 482.4 S +(rldWritableAliasFile).8 E(Accept w)153 494.4 Q +(orld-writable alias \214les.)-.1 E -.8(Wo)117 510.6 S(rldWritableF).8 E +(orw)-.15 E(ard\214le)-.1 E(Allo)153 522.6 Q 2.5(ww)-.25 G +(orld writable)-2.6 E F2(.forwar)2.5 E(d)-.37 E F1(\214les.)2.5 E -.8 +(Wo)117 538.8 S(rldWritableInclude\214le).8 E(Allo)153 550.8 Q 2.5(ww) +-.25 G(orld writable)-2.6 E F2(:include:)2.5 E F1(\214les.)2.5 E +(WriteMapT)117 567 Q(oHardLink)-.8 E(Allo)153 579 Q 2.5(ww)-.25 G +(rites to maps that are hard links.)-2.5 E(WriteMapT)117 595.2 Q +(oSymLink)-.8 E(Allo)153 607.2 Q 2.5(ww)-.25 G +(rites to maps that are symbolic links.)-2.5 E(WriteStatsT)117 623.4 Q +(oHardLink)-.8 E(Allo)153 635.4 Q 2.5(wt)-.25 G +(he status \214le to be a hard link.)-2.5 E(WriteStatsT)117 651.6 Q +(oSymLink)-.8 E(Allo)153 663.6 Q 2.5(wt)-.25 G +(he status \214le to be a symbolic link.)-2.5 E F0 2.5(4.10. Connection) +87 687.6 R(Caching)2.5 E F1 .642(When processing the queue,)127 703.8 R +F2(sendmail)3.142 E F1 .642(will try to k)3.142 F .642(eep the last fe) +-.1 F 3.142(wo)-.25 G .642(pen connections open to)-3.142 F -.2(avo)102 +715.8 S(id startup and shutdo).2 E(wn costs.)-.25 E +(This only applies to IPC and LPC connections.)5 E 0 Cg EP +%%Page: 36 32 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d36382053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF<6172>174 96 Q 1.394<67756d656e7473206861>-.18 F -1.694 -.15<76652062>-.2 H 1.394 -<65656e20646573637269626564206561726c696572>.15 F 6.394<2e54>-.55 G -1.395<68652064657461696c73206f66207468657365208d616773206172652064657363 -7269626564>-6.394 F<61626f>174 108 Q -.15<7665>-.15 G<2e>.15 E F0 -<557365206f662074686973206f7074696f6e206973206e6f742072>5 E -<65636f6d6d656e6465642e>-.18 E F1<446f6e74457870616e64436e616d6573>102 -124.2 Q .559<5b6e6f2073686f7274206e616d655d20546865207374616e6461726473 -20736179207468617420616c6c20686f737420616464726573736573207573656420696e -2061206d61696c206d657373616765>174 136.2 R 1.407 -<6d7573742062652066756c6c792063616e6f6e6963616c2e>174 148.2 R -.15<466f> -6.407 G 3.907<7265>.15 G 1.407<78616d706c652c20696620796f757220686f7374 -206973206e616d6564209943727566742e46>-4.057 F<6f6f2e4f52479a>-.15 E -1.462<616e6420616c736f2068617320616e20616c696173206f662099465450>174 -160.2 R<2e46>-1.11 E 1.462<6f6f2e4f52479a2c2074686520666f726d6572206e61 -6d65206d757374206265207573656420617420616c6c>-.15 F 2.63 -<74696d65732e2054686973>174 172.2 R .131<697320656e666f7263656420647572 -696e6720686f7374206e616d652063616e6f6e698c636174696f6e2028245b202e2e2e20 -245d206c6f6f6b757073292e>2.63 F .131<49662074686973>5.131 F .662<6f7074 -696f6e206973207365742c207468652070726f746f636f6c73206172652069676e6f7265 -6420616e6420746865209977726f6e679a207468696e6720697320646f6e652e>174 -184.2 R<486f>5.661 E<7765>-.25 E -.15<7665>-.25 G -.4<722c>.15 G .871 -<7468652049455446206973206d6f>174 196.2 R .871<76696e6720746f>-.15 F -.1 -<7761>-.25 G .872<7264206368616e67696e672074686973207374616e646172642c20 -736f207468652062656861>.1 F .872<76696f72206d6179206265636f6d65>-.2 F -3.01<61636365707461626c652e20506c65617365>174 208.2 R .509 -<6e6f7465207468617420686f73747320646f>3.01 F .509 -<776e73747265616d206d6179207374696c6c207265>-.25 F .509 -<777269746520746865206164647265737320746f206265>-.25 F -<74686520747275652063616e6f6e6963616c206e616d6520686f>174 220.2 Q<7765> --.25 E -.15<7665>-.25 G -.55<722e>.15 G 6.17 -<446f6e74496e697447726f757073205b6e6f>102 236.4 R .25 -<73686f7274206e616d655d204966207365742c>2.75 F/F2 10/Times-Italic@0 SF -<73656e646d61696c>2.75 E F1 .25<77696c6c2061>2.75 F -.2<766f>-.2 G .25 -<6964207573696e672074686520696e697467726f7570732833292063616c6c2e>.2 F -.25<496620796f7520617265>5.25 F .583<72756e6e696e67204e49532c2074686973 -2063617573657320612073657175656e7469616c207363616e206f66207468652067726f -7570732e62796e616d65206d61702c2077686963682063616e>174 248.4 R .435 -<636175736520796f7572204e49532073657276>174 260.4 R .435 -<657220746f206265206261646c79206f>-.15 F -.15<7665>-.15 G .435 -<726c6f6164656420696e2061206c6172>.15 F .436<676520646f6d61696e2e>-.18 F -.436<54686520636f7374206f662074686973>5.436 F .697<69732074686174207468 -65206f6e6c792067726f757020666f756e6420666f722075736572732077696c6c206265 -207468656972207072696d6172792067726f75702028746865206f6e6520696e20746865> -174 272.4 R<7061737377>174 284.4 Q 1.189 -<6f7264208c6c65292c2077686963682077696c6c206d616b>-.1 F 3.689<658c>-.1 G -1.189<6c6520616363657373207065726d697373696f6e7320736f6d65>-3.689 F -1.189<77686174206d6f726520726573747269632d>-.25 F<7469>174 296.4 Q -.15 -<7665>-.25 G 5<2e48>.15 G<6173206e6f206566>-5 E -<66656374206f6e2073797374656d73207468617420646f6e27>-.25 E 2.5<7468>-.18 -G -2.25 -.2<61762065>-2.5 H<67726f7570206c697374732e>2.7 E -<446f6e7450726f6265496e74657266>102 312.6 Q<61636573>-.1 E 1.713 -<5b6e6f2073686f7274206e616d655d>174 324.6 R F2<53656e646d61696c>4.213 E -F1 1.712<6e6f726d616c6c79208c6e647320746865206e616d6573206f6620616c6c20 -696e74657266>4.213 F 1.712<616365732061637469>-.1 F 2.012 -.15<7665206f> --.25 H<6e>.15 E 1.103<796f7572206d616368696e65207768656e2069742073746172 -747320757020616e642061646473207468656972206e616d6520746f20746865>174 -336.6 R F0<243d77>3.603 E F1 1.103<636c617373206f66206b6e6f>3.603 F -<776e>-.25 E 1.836<686f737420616c69617365732e>174 348.6 R 1.836 -<496620796f75206861>6.836 F 2.136 -.15<76652061206c>-.2 H<6172>.15 E -1.836<6765206e756d626572206f66207669727475616c20696e74657266>-.18 F -1.835<61636573206f7220696620796f757220444e53>-.1 F<696e>174 360.6 Q -.15 -<7665>-.4 G .958<727365206c6f6f6b7570732061726520736c6f>.15 F 3.458 -<7774>-.25 G .958<6869732063616e2062652074696d6520636f6e73756d696e672e> --3.458 F .959<54686973206f7074696f6e207475726e73206f66>5.959 F 3.459 -<6674>-.25 G<686174>-3.459 E 2.974<70726f62696e672e20486f>174 372.6 R -<7765>-.25 E -.15<7665>-.25 G 1.274 -.4<722c2079>.15 H .474<6f752077696c -6c206e65656420746f206265206365727461696e20746f20696e636c75646520616c6c20 -76>.4 F .473<617269616e74206e616d657320696e20746865>-.25 F F0<243d77>174 -384.6 Q F1 1.868 -<636c61737320627920736f6d65206f74686572206d656368616e69736d2e>4.368 F -1.868<49662073657420746f>6.868 F F0<6c6f6f706261636b>4.368 E F1 4.369 -<2c6c>C 1.869<6f6f706261636b20696e74657266>-4.369 F<61636573>-.1 E -<28652e672e2c206c6f30292077696c6c206e6f742062652070726f6265642e>174 -396.6 Q -1.61<446f6e745072756e65526f75746573205b525d>102 412.8 R -<4e6f726d616c6c79>3.905 E<2c>-.65 E F2<73656e646d61696c>3.905 E F1 1.405 -<747269657320746f20656c696d696e61746520616e>3.905 F 3.905<7975>-.15 G -1.405<6e6e65636573736172792065>-3.905 F 1.405 -<78706c6963697420726f75746573207768656e>-.15 F .154<73656e64696e6720616e -206572726f72206d657373616765202861732064697363757373656420696e2052464320 -3131323320a720352e322e36292e>174 424.8 R -.15<466f>5.155 G 2.655<7265> -.15 G .155<78616d706c652c207768656e>-2.805 F -<73656e64696e6720616e206572726f72206d65737361676520746f>174 436.8 Q -<3c406b6e6f>214 453 Q<776e312c406b6e6f>-.25 E<776e322c406b6e6f>-.25 E -<776e333a7573657240756e6b6e6f>-.25 E<776e3e>-.25 E F2<73656e646d61696c> -174 469.2 Q F1 1.155<77696c6c207374726970206f66>3.655 F 3.655<6674>-.25 -G 1.155<68652099406b6e6f>-3.655 F<776e312c406b6e6f>-.25 E 1.155 -<776e329a20696e206f7264657220746f206d616b>-.25 F 3.655<6574>-.1 G 1.155 -<686520726f757465206173>-3.655 F .812 -<64697265637420617320706f737369626c652e>174 481.2 R<486f>5.812 E<7765> --.25 E -.15<7665>-.25 G 1.612 -.4<722c2069>.15 H 3.312<6674>.4 G<6865> --3.312 E F0<52>3.313 E F1 .813<6f7074696f6e206973207365742c207468697320 -77696c6c2062652064697361626c65642c20616e6420746865>3.313 F .01<6d61696c -2077696c6c2062652073656e7420746f20746865208c727374206164647265737320696e -2074686520726f7574652c2065>174 493.2 R -.15<7665>-.25 G 2.509<6e69>.15 G -2.509<666c>-2.509 G .009<617465722061646472657373657320617265206b6e6f> --2.509 F<776e2e>-.25 E<54686973206d61792062652075736566756c20696620796f -75206172652063617567687420626568696e642061208c7265>174 505.2 Q -.1<7761> --.25 G<6c6c2e>.1 E<446f75626c65426f756e6365416464726573733d>102 521.4 Q -F2<657272>A<6f72>-.45 E<2d61646472>-.2 E<657373>-.37 E F1 .504<5b6e6f20 -73686f7274206e616d655d20496620616e206572726f72206f6363757273207768656e20 -73656e64696e6720616e206572726f72206d6573736167652c2073656e64207468652065 -72726f72>174 533.4 R 1.999<7265706f727420287465726d656420612099646f7562 -6c6520626f756e63659a206265636175736520697420697320616e206572726f72209962 -6f756e63659a2074686174206f6363757273>174 545.4 R .053<7768656e2074727969 -6e6720746f2073656e6420616e6f74686572206572726f722099626f756e63659a292074 -6f2074686520696e6469636174656420616464726573732e>174 557.4 R .054 -<5468652061646472657373>5.054 F .475<6973206d6163726f2065>174 569.4 R -.474<7870616e646564206174207468652074696d65206f662064656c69>-.15 F -.15 -<7665>-.25 G<7279>.15 E 5.474<2e49>-.65 G 2.974<666e>-5.474 G .474 -<6f74207365742c20646566>-2.974 F .474 -<61756c747320746f2099706f73746d61737465729a2e>-.1 F<4966>5.474 E<736574 -20746f20616e20656d70747920737472696e672c20646f75626c6520626f756e63657320 -6172652064726f707065642e>174 581.4 Q<45696768744269744d6f64653d>102 -597.6 Q F2<616374696f6e>A F1 1.955 -<5b385d205365742068616e646c696e67206f662065696768742d62697420646174612e> -174 609.6 R 1.955<546865726520617265207477>6.955 F 4.456<6f6b>-.1 G -1.956<696e6473206f662065696768742d62697420646174613a2074686174>-4.456 F -3.335<6465636c617265642061732073756368207573696e6720746865>174 621.6 R -F0<424f44>5.834 E<593d384249544d494d45>-.4 E F1 3.334 -<45534d5450206465636c61726174696f6e206f7220746865>5.834 F F0 -174 633.6 Q F1 .948<636f6d6d616e64206c696e65208d61 -672c20616e6420756e6465636c6172656420382d62697420646174612c20746861742069 -732c20696e7075742074686174>3.448 F 1.18 -<6a7573742068617070656e7320746f20626520656967687420626974732e>174 645.6 -R 1.18<546865726520617265207468726565206261736963206f7065726174696f6e73 -20746861742063616e2068617070656e3a>6.18 F .995<756e6465636c617265642038 -2d62697420646174612063616e206265206175746f6d61746963616c6c7920636f6e>174 -657.6 R -.15<7665>-.4 G .996 -<7274656420746f20384249544d494d452c20756e6465636c61726564>.15 F .887<38 -2d62697420646174612063616e206265207061737365642061732d697320776974686f75 -7420636f6e>174 669.6 R -.15<7665>-.4 G .887 -<7273696f6e20746f204d494d45202860>.15 F .887<606a7573742073656e64203827> --.74 F .886<27292c20616e64>-.74 F 1.794 -<6465636c6172656420382d62697420646174612063616e20626520636f6e>174 681.6 -R -.15<7665>-.4 G 1.794<7274656420746f20372d6269747320666f72207472616e73 -6d697373696f6e20746f2061206e6f6e2d38424954>.15 F<2d>-.92 E -<4d494d45206d61696c6572>174 693.6 Q 5<2e54>-.55 G -<686520706f737369626c65>-5 E F2<616374696f6e>2.5 E F1 2.5<7361>C<72653a> +/F0 10/Times-Bold@0 SF 193.36(SMM:08-36 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF .286 +(When trying to open a connection the cache is \214rst searched.)127 96 +R .286(If an open connection is found,)5.286 F 1.033 +(it is probed to see if it is still acti)102 108 R 1.333 -.15(ve b)-.25 +H 3.533(ys).15 G 1.033(ending a)-3.533 F/F2 9/Times-Roman@0 SF(RSET) +3.533 E F1 3.534(command. It)3.534 F 1.034(is not an error if this f) +3.534 F(ails;)-.1 E(instead, the connection is closed and reopened.)102 +120 Q -1 -.8(Tw o)127 136.2 T .408 +(parameters control the connection cache.)3.708 F(The)5.408 E F0 +(ConnectionCacheSize)2.908 E F1(\()2.908 E F0(k)A F1 2.908(\)o)C .408 +(ption de\214nes)-2.908 F .145 +(the number of simultaneous open connections that will be permitted.)102 +148.2 R .145(If it is set to zero, connections)5.145 F .213 +(will be closed as quickly as possible.)102 160.2 R .212(The def)5.212 F +.212(ault is one.)-.1 F .212(This should be set as appropriate for your) +5.212 F .629 +(system size; it will limit the amount of system resources that)102 +172.2 R/F3 10/Times-Italic@0 SF(sendmail)3.13 E F1 .63 +(will use during queue runs.)3.13 F(Ne)102 184.2 Q -.15(ve)-.25 G 2.5 +(rs).15 G(et this higher than 4.)-2.5 E(The)127 200.4 Q F0 +(ConnectionCacheT)2.741 E(imeout)-.18 E F1(\()2.741 E F0(K)A F1 2.741 +(\)o)C .241(ption speci\214es the maximum time that an)-2.741 F 2.741 +(yc)-.15 G .24(ached con-)-2.741 F .899 +(nection will be permitted to idle.)102 212.4 R .899 +(When the idle time e)5.899 F .9(xceeds this v)-.15 F .9 +(alue the connection is closed.)-.25 F .34 +(This number should be small \(under ten minutes\) to pre)102 224.4 R +-.15(ve)-.25 G .34(nt you from grabbing too man).15 F 2.84(yr)-.15 G +(esources)-2.84 E(from other hosts.)102 236.4 Q(The def)5 E +(ault is \214v)-.1 E 2.5(em)-.15 G(inutes.)-2.5 E F0 2.5(4.11. Name)87 +260.4 R(Ser)2.5 E -.1(ve)-.1 G 2.5(rA).1 G(ccess)-2.5 E F1 .103 +(Control of host address lookups is set by the)127 276.6 R F0(hosts) +2.604 E F1 .104(service entry in your service switch \214le.)2.604 F(If) +5.104 E .99(you are on a system that has b)102 288.6 R .99 +(uilt-in service switch support \(e.g., Ultrix, Solaris, or DEC OSF/1\)) +-.2 F .335(then your system is probably con\214gured properly already) +102 300.6 R 5.335(.O)-.65 G(therwise,)-5.335 E F3(sendmail)2.836 E F1 +.336(will consult the \214le)2.836 F F0(/etc/mail/ser)102 312.6 Q +(vice.switch)-.1 E F1 4.902(,w)C 2.402(hich should be created.)-4.902 F +F3(Sendmail)7.402 E F1 2.402(only uses tw)4.902 F 4.902(oe)-.1 G +(ntries:)-4.902 E F0(hosts)4.901 E F1(and)4.901 E F0(aliases)102 324.6 Q +F1 2.745(,a)C .246 +(lthough system routines may use other services \(notably the)-2.745 F +F0(passwd)2.746 E F1 .246(service for user name)2.746 F(lookups by)102 +336.6 Q F3 -.1(ge)2.5 G(tpwname).1 E F1(\).)A(Ho)127 352.8 Q(we)-.25 E +-.15(ve)-.25 G 1.511 -.4(r, s).15 H .711 +(ome systems \(such as SunOS 4.X\) will do DNS lookups re).4 F -.05(ga) +-.15 G .71(rdless of the setting).05 F 1.028 +(of the service switch entry)102 364.8 R 6.028(.I)-.65 G 3.529(np)-6.028 +G(articular)-3.529 E 3.529(,t)-.4 G 1.029(he system routine)-3.529 F F3 +-.1(ge)3.529 G(thostbyname).1 E F1 1.029(\(3\) is used to look up)B +1.869(host names, and man)102 376.8 R 4.369(yv)-.15 G 1.869(endor v) +-4.519 F 1.869 +(ersions try some combination of DNS, NIS, and \214le lookup in)-.15 F +1.73(/etc/hosts without consulting a service switch.)102 388.8 R F3 +(Sendmail)6.731 E F1(mak)4.231 E 1.731(es no attempt to w)-.1 F 1.731 +(ork around this)-.1 F .368(problem, and the DNS lookup will be done an) +102 400.8 R(yw)-.15 E(ay)-.1 E 5.368(.I)-.65 G 2.868(fy)-5.368 G .367 +(ou do not ha)-2.868 F .667 -.15(ve a n)-.2 H(ameserv).15 E .367 +(er con\214gured at)-.15 F .464(all, such as at a UUCP-only site,)102 +412.8 R F3(sendmail)2.964 E F1 .464 +(will get a \231connection refused\232 message when it tries to)2.964 F +.424(connect to the name serv)102 424.8 R(er)-.15 E 5.424(.I)-.55 G +2.924(ft)-5.424 G(he)-2.924 E F0(hosts)2.924 E F1 .423 +(switch entry has the service \231dns\232 listed some)2.924 F .423 +(where in the)-.25 F(list,)102 436.8 Q F3(sendmail)3.312 E F1 .813 +(will interpret this to mean a temporary f)3.313 F .813 +(ailure and will queue the mail for later pro-)-.1 F +(cessing; otherwise, it ignores the name serv)102 448.8 Q(er data.)-.15 +E .673(The same technique is used to decide whether to do MX lookups.) +127 465 R .672(If you w)5.672 F .672(ant MX support,)-.1 F(you)102 477 Q +F3(must)2.5 E F1(ha)2.5 E .3 -.15(ve \231)-.2 H +(dns\232 listed as a service in the).15 E F0(hosts)2.5 E F1 +(switch entry)2.5 E(.)-.65 E(The)127 493.2 Q F0(Resolv)3.869 E +(erOptions)-.1 E F1(\()3.869 E F0(I)A F1 3.869(\)o)C 1.369(ption allo) +-3.869 F 1.369(ws you to tweak name serv)-.25 F 1.369(er options.)-.15 F +1.37(The command)6.37 F .892(line tak)102 505.2 R .892 +(es a series of \215ags as documented in)-.1 F F3 -.37(re)3.392 G +(solver).37 E F1 .892(\(3\) \(with the leading \231RES_\232 deleted\).)B +(Each)5.892 E(can be preceded by an optional `+' or `)102 517.2 Q/F4 10 +/Symbol SF(-)A F1 2.5('. F)B(or e)-.15 E(xample, the line)-.15 E 2.5(OR) +142 533.4 S(esolv)-2.5 E(erOptions=+AA)-.15 E(ONL)-.55 E(Y)-1 E F4(-)2.5 +E F1(DNSRCH)A .861(turns on the AA)102 549.6 R(ONL)-.55 E 3.361(Y\()-1 G +.861(accept authoritati)-3.361 F 1.161 -.15(ve a)-.25 H .861 +(nswers only\) and turns of).15 F 3.362(ft)-.25 G .862 +(he DNSRCH \(search the)-3.362 F 2.039(domain path\) options.)102 561.6 +R 2.039(Most resolv)7.039 F 2.039(er libraries def)-.15 F 2.039 +(ault DNSRCH, DEFN)-.1 F 2.039(AMES, and RECURSE)-.35 F .393 +(\215ags on and all others of)102 573.6 R 2.894(f. If)-.25 F .394 +(NETINET6 is enabled, most libraries def)2.894 F .394 +(ault to USE_INET6 as well.)-.1 F -1.1(Yo)102 585.6 S 3.749(uc)1.1 G +1.249(an also include \231HasW)-3.749 F 1.248 +(ildcardMX\232 to specify that there is a wildcard MX record matching) +-.4 F .224(your domain; this turns of)102 597.6 R 2.724(fM)-.25 G 2.724 +(Xm)-2.724 G .224 +(atching when canonifying names, which can lead to inappropriate)-2.724 +F 5.249(canoni\214cations. Use)102 609.6 R<9957>5.249 E(orkAroundBrok) +-.8 E 2.749(enAAAA\232 when f)-.1 F 2.749(aced with a brok)-.1 F 2.749 +(en nameserv)-.1 F 2.748(er that)-.15 F .564(returns SER)102 621.6 R(VF) +-.8 E .564(AIL \(a temporary f)-.74 F .565 +(ailure\) on T_AAAA \(IPv6\) lookups during hostname canoni\214ca-)-.1 F +2.5(tion. Notice:)102 633.6 R +(it might be necessary to apply the same \(or similar\) options to)2.5 E +F3(submit.cf)2.5 E F1(too.)2.5 E -1.11(Ve)127 649.8 S 1.733(rsion le) +1.11 F -.15(ve)-.25 G 4.233(l1c).15 G 1.733 +(on\214gurations \(see the section about `)-4.233 F 1.732 +(`Con\214guration V)-.74 F 1.732(ersion Le)-1.11 F -.15(ve)-.25 G(l').15 +E 1.732('\) turn)-.74 F .842(DNSRCH and DEFN)102 661.8 R .842(AMES of) +-.35 F 3.342(fw)-.25 G .842(hen doing deli)-3.342 F -.15(ve)-.25 G .842 +(ry lookups, b).15 F .842(ut lea)-.2 F 1.143 -.15(ve t)-.2 H .843 +(hem on e).15 F -.15(ve)-.25 G .843(rywhere else.).15 F -1.11(Ve)102 +673.8 S 1.043(rsion 8 of)1.11 F F3(sendmail)3.543 E F1 1.043(ignores th\ +em when doing canoni\214cation lookups \(that is, when using $[ ...) +3.543 F .391($]\), and al)102 685.8 R -.1(wa)-.1 G .391 +(ys does the search.).1 F .392(If you don')5.391 F 2.892(tw)-.18 G .392 +(ant to do automatic name e)-2.992 F .392(xtension, don')-.15 F 2.892 +(tc)-.18 G .392(all $[ ...)-2.892 F($].)102 697.8 Q 0 Cg EP +%%Page: 37 33 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-37)195.86 E/F1 10/Times-Roman@0 SF .486 +(The search rules for $[ ... $] are some)127 96 R .485(what dif)-.25 F +.485(ferent than usual.)-.25 F .485(If the name being look)5.485 F .485 +(ed up)-.1 F .109(has at least one dot, it al)102 108 R -.1(wa)-.1 G +.109(ys tries the unmodi\214ed name \214rst.).1 F .11(If that f)5.11 F +.11(ails, it tries the reduced search)-.1 F .124 +(path, and lastly tries the unmodi\214ed name \(b)102 120 R .124 +(ut only for names without a dot, since names with a dot)-.2 F(ha)102 +132 Q .788 -.15(ve a)-.2 H .488(lready been tried\).).15 F .488 +(This allo)5.488 F .489(ws names such as `)-.25 F(`utc.CS')-.74 E 2.989 +('t)-.74 G 2.989(om)-2.989 G .489(atch the site in Czechoslo)-2.989 F +-.25(va)-.15 G(kia).25 E 1.588 +(rather than the site in your local Computer Science department.)102 144 +R 1.587(It also prefers A and CN)6.587 F(AME)-.35 E .512(records o)102 +156 R -.15(ve)-.15 G 3.012(rM).15 G 3.012(Xr)-3.012 G .512 +(ecords \212 that is, if it \214nds an MX record it mak)-3.012 F .513 +(es note of it, b)-.1 F .513(ut k)-.2 F .513(eeps looking.)-.1 F 1.542 +(This w)102 168 R(ay)-.1 E 4.042(,i)-.65 G 4.042(fy)-4.042 G 1.541 +(ou ha)-4.042 F 1.841 -.15(ve a w)-.2 H 1.541 +(ildcard MX record matching your domain, it will not assume that all).15 +F(names match.)102 180 Q 3.453 -.8(To c)127 196.2 T 1.853 +(ompletely turn of).8 F 4.353(fa)-.25 G 1.853(ll name serv)-4.353 F +1.853(er access on systems without service switch support)-.15 F .942 +(\(such as SunOS 4.X\) you will ha)102 208.2 R 1.242 -.15(ve t)-.2 H +3.441(or).15 G .941(ecompile with \255DN)-3.441 F .941 +(AMED_BIND=0 and remo)-.35 F 1.241 -.15(ve \255)-.15 H(lresolv).15 E +(from the list of libraries to be searched when linking.)102 220.2 Q F0 +2.5(4.12. Mo)87 244.2 R(ving the P)-.1 E(er)-.2 E(-User F)-.37 E +(orward Files)-.25 E F1 .772(Some sites mount each user')127 260.4 R +3.272(sh)-.55 G .772(ome directory from a local disk on their w)-3.272 F +.772(orkstation, so that)-.1 F .615(local access is f)102 272.4 R 3.114 +(ast. Ho)-.1 F(we)-.25 E -.15(ve)-.25 G 1.414 -.4(r, t).15 H .614 +(he result is that .forw).4 F .614 +(ard \214le lookups from a central mail serv)-.1 F .614(er are)-.15 F +(slo)102 284.4 Q 5.534 -.65(w. I)-.25 H 4.234(ns).65 G 1.734 +(ome cases, mail can e)-4.234 F -.15(ve)-.25 G 4.234(nb).15 G 4.234(ed) +-4.234 G(eli)-4.234 E -.15(ve)-.25 G 1.734 +(red on machines inappropriately because of a \214le).15 F(serv)102 +296.4 Q(er being do)-.15 E 2.5(wn. The)-.25 F +(performance can be especially bad if you run the automounter)2.5 E(.) +-.55 E(The)127 312.6 Q F0 -.25(Fo)2.744 G(rwardP).25 E(ath)-.1 E F1(\() +2.744 E F0(J)A F1 2.743(\)o)C .243(ption allo)-2.743 F .243 +(ws you to set a path of forw)-.25 F .243(ard \214les.)-.1 F -.15(Fo) +5.243 G 2.743(re).15 G .243(xample, the con-)-2.893 F(\214g \214le line) +102 324.6 Q 2.5(OF)142 340.8 S(orw)-2.65 E(ardP)-.1 E(ath=/v)-.15 E +(ar/forw)-.25 E(ard/$u:$z/.forw)-.1 E(ard.$w)-.1 E -.1(wo)102 357 S .207 +(uld \214rst look for a \214le with the same name as the user').1 F +2.708(sl)-.55 G .208(ogin in /v)-2.708 F(ar/forw)-.25 E .208 +(ard; if that is not found)-.1 F 1.171 +(\(or is inaccessible\) the \214le `)102 369 R(`.forw)-.74 E(ard.)-.1 E +/F2 10/Times-Italic@0 SF(mac)A(hinename)-.15 E F1 2.651 -.74('' i)D +3.671(nt).74 G 1.171(he user')-3.671 F 3.671(sh)-.55 G 1.17 +(ome directory is searched.)-3.671 F(A)6.17 E(truly perv)102 381 Q +(erse site could also search by sender by using $r)-.15 E 2.5(,$)-.4 G +(s, or $f.)-2.5 E .69(If you create a directory such as /v)127 397.2 R +(ar/forw)-.25 E .69(ard, it should be mode 1777 \(that is, the stick)-.1 +F 3.19(yb)-.15 G(it)-3.19 E .109(should be set\).)102 409.2 R .109 +(Users should create the \214les mode 0644.)5.109 F .108 +(Note that you must use the F)5.109 F(orw)-.15 E(ardFileIn-)-.1 E +(UnsafeDirP)102 421.2 Q .392(ath and F)-.15 F(orw)-.15 E +(ardFileInUnsafeDirP)-.1 E .392(athSafe \215ags with the)-.15 F F0 +(DontBlameSendmail)2.893 E F1 .393(option to)2.893 F(allo)102 433.2 Q +3.782(wf)-.25 G(orw)-3.782 E 1.282(ard \214les in a w)-.1 F 1.281 +(orld writable directory)-.1 F 6.281(.T)-.65 G 1.281 +(his might also be used as a denial of service)-6.281 F 2.351 +(attack \(users could create forw)102 445.2 R 2.351 +(ard \214les for other users\); a better approach might be to create)-.1 +F(/v)102 457.2 Q(ar/forw)-.25 E 1.086 +(ard mode 0755 and create empty \214les for each user)-.1 F 3.586(,o)-.4 +G 1.086(wned by that user)-3.836 F 3.586(,m)-.4 G 1.086(ode 0644.)-3.586 +F(If)6.086 E(you do this, you don')102 469.2 Q 2.5(th)-.18 G -2.25 -.2 +(av e)-2.5 H(to set the DontBlameSendmail options indicated abo)2.7 E +-.15(ve)-.15 G(.).15 E F0 2.5(4.13. Fr)87 493.2 R(ee Space)-.18 E F1 +1.405(On systems that ha)127 509.4 R 1.705 -.15(ve o)-.2 H 1.405 +(ne of the system calls in the).15 F F2(statfs)3.906 E F1 1.406(\(2\) f) +B 1.406(amily \(including)-.1 F F2(statvfs)3.906 E F1(and)3.906 E F2 +(ustat)102 521.4 Q F1 .839(\), you can specify a minimum number of free\ + blocks on the queue \214lesystem using the)B F0(Min-)3.339 E(Fr)102 +533.4 Q(eeBlocks)-.18 E F1(\()2.553 E F0(b)A F1 2.553(\)o)C 2.553 +(ption. If)-2.553 F .053(there are fe)2.553 F .053 +(wer than the indicated number of blocks free on the \214lesystem)-.25 F +1.355(on which the queue is mounted the SMTP serv)102 545.4 R 1.355 +(er will reject mail with the 452 error code.)-.15 F(This)6.354 E(in)102 +557.4 Q(vites the SMTP client to try ag)-.4 E(ain later)-.05 E(.)-.55 E +(Be)127 573.6 Q -.1(wa)-.25 G .746(re of setting this option too high; \ +it can cause rejection of email when that mail w).1 F(ould)-.1 E +(be processed without dif)102 585.6 Q(\214culty)-.25 E(.)-.65 E F0 2.5 +(4.14. Maximum)87 609.6 R(Message Size)2.5 E F1 2.078 -.8(To a)127 625.8 +T -.2(vo).6 G .478(id o).2 F -.15(ve)-.15 G(r\215o).15 E .478 +(wing your system with a lar)-.25 F .478(ge message, the)-.18 F F0 +(MaxMessageSize)2.977 E F1 .477(option can be)2.977 F .692 +(set to set an absolute limit on the size of an)102 637.8 R 3.193(yo) +-.15 G .693(ne message.)-3.193 F .693(This will be adv)5.693 F .693 +(ertised in the ESMTP)-.15 F(dialogue and check)102 649.8 Q +(ed during message collection.)-.1 E F0 2.5(4.15. Pri)87 673.8 R -.1(va) +-.1 G(cy Flags).1 E F1(The)127 690 Q F0(Pri)2.96 E -.1(va)-.1 G +(cyOptions).1 E F1(\()2.96 E F0(p)A F1 2.96(\)o)C .46(ption allo)-2.96 F +.46(ws you to set certain `)-.25 F(`pri)-.74 E -.25(va)-.25 G -.15(cy) +.25 G 1.94 -.74('' \215).15 H 2.96(ags. Actually).74 F 2.96(,m)-.65 G +(an)-2.96 E 2.96(yo)-.15 G(f)-2.96 E .533(them don')102 702 R 3.033(tg) +-.18 G -2.15 -.25(iv e)-3.033 H .533(you an)3.283 F 3.034(ye)-.15 G .534 +(xtra pri)-3.184 F -.25(va)-.25 G -.15(cy).25 G 3.034(,r)-.5 G .534 +(ather just insisting that client SMTP serv)-3.034 F .534 +(ers use the HELO)-.15 F 2.87 +(command before using certain commands or adding e)102 714 R 2.87 +(xtra headers to indicate possible spoof)-.15 F 0 Cg EP +%%Page: 38 34 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 193.36(SMM:08-38 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF +(attempts.)102 96 Q .123(The option tak)127 112.2 R .124 +(es a series of \215ag names; the \214nal pri)-.1 F -.25(va)-.25 G .424 +-.15(cy i).25 H 2.624(st).15 G .124(he inclusi)-2.624 F .424 -.15(ve o) +-.25 H 2.624(ro).15 G 2.624(ft)-2.624 G .124(hose \215ags.)-2.624 F -.15 +(Fo)5.124 G(r).15 E -.15(ex)102 124.2 S(ample:).15 E 2.5(OP)142 140.4 S +(ri)-2.5 E -.25(va)-.25 G -.15(cy).25 G(Options=needmailhelo, noe).15 E +(xpn)-.15 E .928(insists that the HELO or EHLO command be used before a\ + MAIL command is accepted and dis-)102 156.6 R(ables the EXPN command.) +102 168.6 Q(The \215ags are detailed in section 5.6.)127 184.8 Q F0 2.5 +(4.16. Send)87 208.8 R(to Me T)2.5 E(oo)-.92 E F1(Be)127 225 Q 1.074 +(ginning with v)-.15 F 1.074(ersion 8.10,)-.15 F/F2 10/Times-Italic@0 SF +(sendmail)3.574 E F1 1.075(includes by def)3.574 F 1.075(ault the \(en) +-.1 F -.15(ve)-.4 G 1.075(lope\) sender in an).15 F 3.575(yl)-.15 G(ist) +-3.575 E -.15(ex)102 237 S 3.465(pansions. F).15 F .965(or e)-.15 F .964 +(xample, if \231matt\232 sends to a list that contains \231matt\232 as \ +one of the members he)-.15 F .227(will get a cop)102 249 R 2.727(yo)-.1 +G 2.727(ft)-2.727 G .227(he message.)-2.727 F .227(If the)5.227 F F0 +(MeT)2.728 E(oo)-.92 E F1 .228(option is set to)2.728 F/F3 9 +/Times-Roman@0 SF -.666(FA)2.728 G(LSE).666 E F1 .228 +(\(in the con\214guration \214le or via)2.728 F 1.023 +(the command line\), this beha)102 261 R 1.023 +(vior is changed, i.e., the \(en)-.2 F -.15(ve)-.4 G 1.022 +(lope\) sender is e).15 F 1.022(xcluded in list e)-.15 F(xpan-)-.15 E +(sions.)102 273 Q F0 2.5(5. THE)72 297 R(WHOLE SCOOP ON THE CONFIGURA) +2.5 E(TION FILE)-.95 E F1 +(This section describes the con\214guration \214le in detail.)112 313.2 +Q .648(There is one point that should be made clear immediately: the sy\ +ntax of the con\214guration \214le is)112 329.4 R 1.077 +(designed to be reasonably easy to parse, since this is done e)87 341.4 +R -.15(ve)-.25 G 1.076(ry time).15 F F2(sendmail)3.576 E F1 1.076 +(starts up, rather than)3.576 F .302(easy for a human to read or write.) +87 353.4 R .303(The con\214guration \214le should be generated via the \ +method described)5.302 F(in)87 365.4 Q F0(cf/README)3.658 E F1 3.658(,i) +C 3.658(ts)-3.658 G 1.158 +(hould not be edited directly unless someone is f)-3.658 F 1.157 +(amiliar with the internals of the)-.1 F +(syntax described here and it is not possible to achie)87 377.4 Q .3 +-.15(ve t)-.25 H(he desired result via the def).15 E(ault method.)-.1 E +.243(The con\214guration \214le is or)112 393.6 R -.05(ga)-.18 G .243 +(nized as a series of lines, each of which be).05 F .243 +(gins with a single charac-)-.15 F .102 +(ter de\214ning the semantics for the rest of the line.)87 405.6 R .102 +(Lines be)5.102 F .102(ginning with a space or a tab are continuation) +-.15 F 1.322 +(lines \(although the semantics are not well de\214ned in man)87 417.6 R +3.823(yp)-.15 G 3.823(laces\). Blank)-3.823 F 1.323(lines and lines be) +3.823 F(ginning)-.15 E(with a sharp symbol \(`#'\) are comments.)87 +429.6 Q F0 2.5(5.1. R)87 453.6 R(and S \212 Rewriting Rules)2.5 E F1 +.466(The core of address parsing are the re)127 469.8 R .466 +(writing rules.)-.25 F .465(These are an ordered production system.) +5.466 F F2(Sendmail)102 481.8 Q F1 .19(scans through the set of re)2.69 +F .19 +(writing rules looking for a match on the left hand side \(LHS\) of)-.25 +F(the rule.)102 493.8 Q(When a rule matches, the address is replaced by\ + the right hand side \(RHS\) of the rule.)5 E .922(There are se)127 510 +R -.15(ve)-.25 G .922(ral sets of re).15 F .921(writing rules.)-.25 F +.921(Some of the re)5.921 F .921(writing sets are used internally and) +-.25 F .359(must ha)102 522 R .659 -.15(ve s)-.2 H .359 +(peci\214c semantics.).15 F .359(Other re)5.359 F .359 +(writing sets do not ha)-.25 F .659 -.15(ve s)-.2 H .36 +(peci\214cally assigned semantics, and).15 F +(may be referenced by the mailer de\214nitions or by other re)102 534 Q +(writing sets.)-.25 E(The syntax of these tw)127 550.2 Q 2.5(oc)-.1 G +(ommands are:)-2.5 E F0(S)142 566.4 Q F2(n)A F1 .249 +(Sets the current ruleset being collected to)102 582.6 R F2(n)2.749 E F1 +5.249(.I)C 2.748(fy)-5.249 G .248(ou be)-2.748 F .248 +(gin a ruleset more than once it appends to the)-.15 F +(old de\214nition.)102 594.6 Q F0(R)142 610.8 Q F2(lhs rhs comments)A F1 +1.185(The \214elds must be separated by at least one tab character; the\ +re may be embedded spaces in the)102 627 R 2.595(\214elds. The)102 639 R +F2(lhs)2.595 E F1 .095(is a pattern that is applied to the input.)2.595 +F .095(If it matches, the input is re)5.095 F .094(written to the)-.25 F +F2(rhs)2.594 E F1(.)A(The)102 651 Q F2(comments)2.5 E F1(are ignored.) +2.5 E .426(Macro e)127 667.2 R .426(xpansions of the form)-.15 F F0($) +2.926 E F2(x)A F1 .427 +(are performed when the con\214guration \214le is read.)2.927 F 2.927 +(Al)5.427 G(iteral)-2.927 E F0($)102 679.2 Q F1 .609 +(can be included using)3.109 F F0($$)3.109 E F1 5.609(.E)C .609 +(xpansions of the form)-5.609 F F0($&)3.109 E F2(x)A F1 .609 +(are performed at run time using a some-)3.109 F .147 +(what less general algorithm.)102 691.2 R .148(This is intended only fo\ +r referencing internally de\214ned macros such as)5.148 F F0($h)102 +703.2 Q F1(that are changed at runtime.)2.5 E 0 Cg EP +%%Page: 39 35 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-39)195.86 E 2.5(5.1.1. The)102 96 R(left hand side)2.5 E/F1 10 +/Times-Roman@0 SF 2.771(The left hand side of re)142 112.2 R 2.771 +(writing rules contains a pattern.)-.25 F 2.77(Normal w)7.771 F 2.77 +(ords are simply)-.1 F(matched directly)117 124.2 Q 5(.M)-.65 G +(etasyntax is introduced using a dollar sign.)-5 E(The metasymbols are:) +5 E F0($*)157 140.4 Q F1(Match zero or more tok)10.14 E(ens)-.1 E F0($+) +157 152.4 Q F1(Match one or more tok)9.44 E(ens)-.1 E F0<24ad>157 164.4 +Q F1(Match e)9.44 E(xactly one tok)-.15 E(en)-.1 E F0($=)157 176.4 Q/F2 +10/Times-Italic@0 SF(x)A F1(Match an)5 E 2.5(yp)-.15 G(hrase in class) +-2.5 E F2(x)2.5 E F0($~)157 188.4 Q F2(x)A F1(Match an)7.37 E 2.5(yw) +-.15 G(ord not in class)-2.6 E F2(x)2.5 E F1 .131(If an)117 204.6 R +2.631(yo)-.15 G 2.631(ft)-2.631 G .131(hese match, the)-2.631 F 2.631 +(ya)-.15 G .132(re assigned to the symbol)-2.631 F F0($)2.632 E F2(n)A +F1 .132(for replacement on the right hand side,)2.632 F(where)117 216.6 +Q F2(n)2.5 E F1(is the inde)2.5 E 2.5(xi)-.15 G 2.5(nt)-2.5 G(he LHS.) +-2.5 E -.15(Fo)5 G 2.5(re).15 G(xample, if the LHS:)-2.65 E($\255:$+)157 +232.8 Q(is applied to the input:)117 249 Q(UCB)157 265.2 Q(ARP)-.35 E +(A:eric)-.92 E(the rule will match, and the v)117 281.4 Q +(alues passed to the RHS will be:)-.25 E 7.5($1 UCB)157 297.6 R(ARP)-.35 +E(A)-.92 E 7.5($2 eric)157 309.6 R(Additionally)142 330 Q 2.705(,t)-.65 +G .204(he LHS can include)-2.705 F F0($@)2.704 E F1 .204 +(to match zero tok)2.704 F 2.704(ens. This)-.1 F(is)2.704 E F2(not)2.704 +E F1 .204(bound to a)2.704 F F0($)2.704 E F2(n)A F1(on)2.704 E(the RHS,\ + and is normally only used when it stands alone in order to match the n\ +ull input.)117 342 Q F0 2.5(5.1.2. The)102 366 R(right hand side)2.5 E +F1 .648(When the left hand side of a re)142 382.2 R .649 +(writing rule matches, the input is deleted and replaced by)-.25 F 1.037 +(the right hand side.)117 394.2 R -.8(To)6.037 G -.1(ke).8 G 1.036 +(ns are copied directly from the RHS unless the).1 F 3.536(yb)-.15 G +-.15(eg)-3.536 G 1.036(in with a dollar).15 F 2.5(sign. Metasymbols)117 +406.2 R(are:)2.5 E F0($)157 422.4 Q F2(n)A F1 +(Substitute inde\214nite tok)40.55 E(en)-.1 E F2(n)2.5 E F1(from LHS)2.5 +E F0($[)157 434.4 Q F2(name)A F0($])A F1(Canonicalize)12.23 E F2(name) +2.5 E F0($\()157 446.4 Q F2(map k)A -.3(ey)-.1 G F0($@)2.8 E F2(ar)A +(guments)-.37 E F0($:)2.5 E F2(default)A F0($\))2.5 E F1(Generalized k) +207.55 458.4 Q -.15(ey)-.1 G(ed mapping function).15 E F0($>)157 470.4 Q +F2(n)A F1(\231Call\232 ruleset)34.85 E F2(n)2.5 E F0($#)157 482.4 Q F2 +(mailer)A F1(Resolv)14.44 E 2.5(et)-.15 G(o)-2.5 E F2(mailer)2.5 E F0 +($@)157 494.4 Q F2(host)A F1(Specify)19.58 E F2(host)2.5 E F0($:)157 +506.4 Q F2(user)A F1(Specify)25 E F2(user)2.5 E F1(The)142 526.8 Q F0($) +3.136 E F2(n)A F1 .637(syntax substitutes the corresponding v)3.136 F +.637(alue from a)-.25 F F0($+)3.137 E F1(,)A F0<24ad>3.137 E F1(,)A F0 +($*)3.137 E F1(,)A F0($=)3.137 E F1 3.137(,o)C(r)-3.137 E F0($~)3.137 E +F1 .637(match on)3.137 F(the LHS.)117 538.8 Q(It may be used an)5 E +(ywhere.)-.15 E 2.706(Ah)142 555 S .206(ost name enclosed between)-2.706 +F F0($[)2.706 E F1(and)2.706 E F0($])2.706 E F1 .206(is look)2.706 F +.205(ed up in the host database\(s\) and replaced)-.1 F 1.683 +(by the canonical name)117 569 R/F3 7/Times-Roman@0 SF(14)-4 I F1 6.683 +(.F)4 K 1.683(or e)-6.833 F 1.683 +(xample, \231$[ftp$]\232 might become \231ftp.CS.Berk)-.15 F(ele)-.1 E +-.65(y.)-.15 G 1.683(EDU\232 and).65 F 3.17 +(\231$[[128.32.130.2]$]\232 w)117 581 R 3.17(ould become \231v)-.1 F +(angogh.CS.Berk)-.25 E(ele)-.1 E -.65(y.)-.15 G(EDU.).65 E<9a>-.7 E F2 +(Sendmail)8.17 E F1 3.17(recognizes its)5.67 F +(numeric IP address without calling the name serv)117 593 Q +(er and replaces it with its canonical name.)-.15 E(The)142 609.2 Q F0 +($\()3.003 E F1(...)3.003 E F0($\))5.503 E F1 .503(syntax is a more gen\ +eral form of lookup; it uses a named map instead of an)3.003 F .81 +(implicit map.)117 621.2 R .81(If no lookup is found, the indicated)5.81 +F F2(default)3.309 E F1 .809(is inserted; if no def)3.309 F .809 +(ault is speci\214ed)-.1 F .775(and no lookup matches, the v)117 633.2 R +.776(alue is left unchanged.)-.25 F(The)5.776 E F2(ar)3.276 E(guments) +-.37 E F1 .776(are passed to the map for)3.276 F(possible use.)117 645.2 +Q(The)142 661.4 Q F0($>)2.62 E F2(n)A F1 .119(syntax causes the remaind\ +er of the line to be substituted as usual and then passed)2.62 F .586 +(as the ar)117 673.4 R .586(gument to ruleset)-.18 F F2(n)3.086 E F1 +5.586(.T)C .586(he \214nal v)-5.586 F .586(alue of ruleset)-.25 F F2(n) +3.087 E F1 .587(then becomes the substitution for this)3.087 F .32 LW 76 +683 72 683 DL 80 683 76 683 DL 84 683 80 683 DL 88 683 84 683 DL 92 683 +88 683 DL 96 683 92 683 DL 100 683 96 683 DL 104 683 100 683 DL 108 683 +104 683 DL 112 683 108 683 DL 116 683 112 683 DL 120 683 116 683 DL 124 +683 120 683 DL 128 683 124 683 DL 132 683 128 683 DL 136 683 132 683 DL +140 683 136 683 DL 144 683 140 683 DL 148 683 144 683 DL 152 683 148 683 +DL 156 683 152 683 DL 160 683 156 683 DL 164 683 160 683 DL 168 683 164 +683 DL 172 683 168 683 DL 176 683 172 683 DL 180 683 176 683 DL 184 683 +180 683 DL 188 683 184 683 DL 192 683 188 683 DL 196 683 192 683 DL 200 +683 196 683 DL 204 683 200 683 DL 208 683 204 683 DL 212 683 208 683 DL +216 683 212 683 DL/F4 5/Times-Roman@0 SF(14)93.6 693.4 Q/F5 8 +/Times-Roman@0 SF(This is actually completely equi)3.2 I -.2(va)-.2 G +(lent to $\(host).2 E/F6 8/Times-Italic@0 SF(hostname)2 E F5 2($\). In)B +(particular)2 E 2(,a)-.32 G/F7 8/Times-Bold@0 SF($:)A F5(def)2 E +(ault can be used.)-.08 E 0 Cg EP +%%Page: 40 36 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 193.36(SMM:08-40 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 3.759 +(rule. The)117 96 R F0($>)3.759 E F1 1.259(syntax e)3.759 F 1.259 +(xpands e)-.15 F -.15(ve)-.25 G 1.259 +(rything after the ruleset name to the end of the replacement).15 F .976 +(string and then passes that as the initial input to the ruleset.)117 +108 R(Recursi)5.976 E 1.277 -.15(ve c)-.25 H .977(alls are allo).15 F +3.477(wed. F)-.25 F(or)-.15 E -.15(ex)117 120 S(ample,).15 E($>0 $>3 $1) +157 136.2 Q -.15(ex)117 152.4 S(pands $1, passes that to ruleset 3, and\ + then passes the result of ruleset 3 to ruleset 0.).15 E(The)142 168.6 Q +F0($#)2.769 E F1 .268(syntax should)2.769 F/F2 10/Times-Italic@0 SF +(only)2.768 E F1 .268 +(be used in ruleset zero, a subroutine of ruleset zero, or rulesets) +2.768 F .454(that return decisions \(e.g., check_rcpt\).)117 180.6 R +.455(It causes e)5.454 F -.25(va)-.25 G .455 +(luation of the ruleset to terminate immedi-).25 F(ately)117 192.6 Q +2.565(,a)-.65 G .065(nd signals to)-2.565 F F2(sendmail)2.565 E F1 .065 +(that the address has completely resolv)2.565 F 2.565(ed. The)-.15 F +.065(complete syntax for)2.565 F(ruleset 0 is:)117 204.6 Q F0($#)157 +220.8 Q F2(mailer)A F0($@)2.5 E F2(host)A F0($:)2.5 E F2(user)A F1 .878 +(This speci\214es the {mailer)117 237 R 3.378(,h)-.4 G .879 +(ost, user} 3-tuple \(triple\) necessary to direct the mailer)-3.378 F +5.879(.N)-.55 G .879(ote: the)-5.879 F .122(third element \()117 249 R +F2(user)2.622 E F1 2.622(\)i)2.622 G 2.622(so)-2.622 G .122 +(ften also called)-2.622 F F2(addr)2.622 E(ess)-.37 E F1 2.621(part. If) +2.622 F .121(the mailer is local the host part may be)2.621 F(omitted) +117 263 Q/F3 7/Times-Roman@0 SF(15)-4 I F1 5.968(.T)4 K(he)-5.968 E F2 +(mailer)3.467 E F1 .967(must be a single w)3.467 F .967(ord, b)-.1 F +.967(ut the)-.2 F F2(host)3.467 E F1(and)3.467 E F2(user)3.467 E F1 .967 +(may be multi-part.)3.467 F .967(If the)5.967 F F2(mailer)117 275 Q F1 +1.118(is the b)3.618 F 1.119(uilt-in IPC mailer)-.2 F 3.619(,t)-.4 G(he) +-3.619 E F2(host)3.619 E F1 1.119 +(may be a colon \(or comma\) separated list of hosts.)3.619 F .208 +(Each is separately MX e)117 287 R .207 +(xpanded and the results are concatenated to mak)-.15 F 2.707(e\()-.1 G +.207(essentially\) one long)-2.707 F .587(MX list.)117 299 R .587 +(Hosts separated by a comma ha)5.587 F .887 -.15(ve t)-.2 H .588 +(he same MX preference, and for each colon sepa-).15 F 1.492 +(rated host the MX preference is increased.)117 311 R(The)6.491 E F2 +(user)3.991 E F1 1.491(is later re)3.991 F 1.491(written by the mailer) +-.25 F(-speci\214c)-.2 E(en)117 323 Q -.15(ve)-.4 G .752(lope re).15 F +.752(writing set and assigned to the)-.25 F F0($u)3.252 E F1 3.253 +(macro. As)3.252 F 3.253(as)3.253 G .753 +(pecial case, if the mailer speci\214ed)-3.253 F .146(has the)117 335 R +F0(F=@)2.646 E F1 .146 +(\215ag speci\214ed and the \214rst character of the)2.646 F F0($:)2.646 +E F1 -.25(va)2.646 G .145 +(lue is \231@\232, the \231@\232 is stripped of).25 F(f,)-.25 E(and a \ +\215ag is set in the address descriptor that causes sendmail to not do \ +ruleset 5 processing.)117 347 Q(Normally)142 363.2 Q 3.251(,ar)-.65 G +.751(ule that matches is retried, that is, the rule loops until it f) +-3.251 F 3.252(ails. A)-.1 F .752(RHS may)3.252 F 1.086 +(also be preceded by a)117 375.2 R F0($@)3.586 E F1 1.085(or a)3.585 F +F0($:)3.585 E F1 1.085(to change this beha)3.585 F(vior)-.2 E 6.085(.A) +-.55 G F0($@)-2.5 E F1 1.085(pre\214x causes the ruleset to)3.585 F 1.46 +(return with the remainder of the RHS as the v)117 387.2 R 3.96(alue. A) +-.25 F F0($:)3.96 E F1 1.46(pre\214x causes the rule to terminate)3.96 F +(immediately)117 399.2 Q 3.756(,b)-.65 G 1.256 +(ut the ruleset to continue; this can be used to a)-3.956 F -.2(vo)-.2 G +1.256(id continued application of a).2 F 2.5(rule. The)117 411.2 R +(pre\214x is stripped before continuing.)2.5 E(The)142 427.4 Q F0($@)2.5 +E F1(and)2.5 E F0($:)2.5 E F1(pre\214x)2.5 E(es may precede a)-.15 E F0 +($>)2.5 E F1(spec; for e)2.5 E(xample:)-.15 E 20.19(R$+ $:)157 443.6 R +($>7 $1)2.5 E 1.256(matches an)117 459.8 R 1.256 +(ything, passes that to ruleset se)-.15 F -.15(ve)-.25 G 1.256 +(n, and continues; the).15 F F0($:)3.756 E F1 1.256(is necessary to a) +3.756 F -.2(vo)-.2 G 1.256(id an).2 F(in\214nite loop.)117 471.8 Q 1.205 +(Substitution occurs in the order described, that is, parameters from t\ +he LHS are substi-)142 488 R .219(tuted, hostnames are canonicalized, \ +\231subroutines\232 are called, and \214nally)117 500 R F0($#)2.719 E F1 +(,)A F0($@)2.719 E F1 2.72(,a)C(nd)-2.72 E F0($:)2.72 E F1 .22(are pro-) +2.72 F(cessed.)117 512 Q F0 2.5(5.1.3. Semantics)102 536 R(of r)2.5 E +(ewriting rule sets)-.18 E F1 1.848(There are six re)142 552.2 R 1.847 +(writing sets that ha)-.25 F 2.147 -.15(ve s)-.2 H 1.847 +(peci\214c semantics.).15 F(Fi)6.847 E 2.147 -.15(ve o)-.25 H 4.347(ft) +.15 G 1.847(hese are related as)-4.347 F(depicted by \214gure 1.)117 +564.2 Q 1.029 +(Ruleset three should turn the address into \231canonical form.)142 +580.4 R 6.029<9a54>-.7 G 1.03(his form should ha)-6.029 F 1.33 -.15 +(ve t)-.2 H(he).15 E(basic syntax:)117 592.4 Q +(local-part@host-domain-spec)157 608.6 Q(Ruleset three is applied by)117 +624.8 Q F2(sendmail)2.5 E F1(before doing an)2.5 E(ything with an)-.15 E +2.5(ya)-.15 G(ddress.)-2.5 E .302 +(If no \231@\232 sign is speci\214ed, then the host-domain-spec)142 641 +R F2(may)2.801 E F1 .301(be appended \(box \231D\232 in Fig-)2.801 F +.577(ure 1\) from the sender address \(if the)117 653 R F0(C)3.077 E F1 +.577(\215ag is set in the mailer de\214nition corresponding to the)3.077 +F F2(sending)117 665 Q F1(mailer\).)2.5 E .32 LW 76 674.6 72 674.6 DL 80 +674.6 76 674.6 DL 84 674.6 80 674.6 DL 88 674.6 84 674.6 DL 92 674.6 88 +674.6 DL 96 674.6 92 674.6 DL 100 674.6 96 674.6 DL 104 674.6 100 674.6 +DL 108 674.6 104 674.6 DL 112 674.6 108 674.6 DL 116 674.6 112 674.6 DL +120 674.6 116 674.6 DL 124 674.6 120 674.6 DL 128 674.6 124 674.6 DL 132 +674.6 128 674.6 DL 136 674.6 132 674.6 DL 140 674.6 136 674.6 DL 144 +674.6 140 674.6 DL 148 674.6 144 674.6 DL 152 674.6 148 674.6 DL 156 +674.6 152 674.6 DL 160 674.6 156 674.6 DL 164 674.6 160 674.6 DL 168 +674.6 164 674.6 DL 172 674.6 168 674.6 DL 176 674.6 172 674.6 DL 180 +674.6 176 674.6 DL 184 674.6 180 674.6 DL 188 674.6 184 674.6 DL 192 +674.6 188 674.6 DL 196 674.6 192 674.6 DL 200 674.6 196 674.6 DL 204 +674.6 200 674.6 DL 208 674.6 204 674.6 DL 212 674.6 208 674.6 DL 216 +674.6 212 674.6 DL/F4 5/Times-Roman@0 SF(15)93.6 685 Q/F5 8 +/Times-Roman@0 SF -.88(Yo)3.2 K 2.725(um).88 G .725(ay w)-2.725 F .726 +(ant to use it for special \231per user\232 e)-.08 F 2.726(xtensions. F) +-.12 F .726(or e)-.12 F .726 +(xample, in the address \231jgm+foo@CMU.EDU\232; the \231+foo\232)-.12 F +(part is not part of the user name, and is passed to the local mailer f\ +or local use.)72 697.8 Q 0 Cg EP +%%Page: 41 37 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-41)195.86 E .4 LW 77 108 72 108 DL 79 108 74 108 DL 84 108 79 +108 DL 89 108 84 108 DL 94 108 89 108 DL 99 108 94 108 DL 104 108 99 108 +DL 109 108 104 108 DL 114 108 109 108 DL 119 108 114 108 DL 124 108 119 +108 DL 129 108 124 108 DL 134 108 129 108 DL 139 108 134 108 DL 144 108 +139 108 DL 149 108 144 108 DL 154 108 149 108 DL 159 108 154 108 DL 164 +108 159 108 DL 169 108 164 108 DL 174 108 169 108 DL 179 108 174 108 DL +184 108 179 108 DL 189 108 184 108 DL 194 108 189 108 DL 199 108 194 108 +DL 204 108 199 108 DL 209 108 204 108 DL 214 108 209 108 DL 219 108 214 +108 DL 224 108 219 108 DL 229 108 224 108 DL 234 108 229 108 DL 239 108 +234 108 DL 244 108 239 108 DL 249 108 244 108 DL 254 108 249 108 DL 259 +108 254 108 DL 264 108 259 108 DL 269 108 264 108 DL 274 108 269 108 DL +279 108 274 108 DL 284 108 279 108 DL 289 108 284 108 DL 294 108 289 108 +DL 299 108 294 108 DL 304 108 299 108 DL 309 108 304 108 DL 314 108 309 +108 DL 319 108 314 108 DL 324 108 319 108 DL 329 108 324 108 DL 334 108 +329 108 DL 339 108 334 108 DL 344 108 339 108 DL 349 108 344 108 DL 354 +108 349 108 DL 359 108 354 108 DL 364 108 359 108 DL 369 108 364 108 DL +374 108 369 108 DL 379 108 374 108 DL 384 108 379 108 DL 389 108 384 108 +DL 394 108 389 108 DL 399 108 394 108 DL 404 108 399 108 DL 409 108 404 +108 DL 414 108 409 108 DL 419 108 414 108 DL 424 108 419 108 DL 429 108 +424 108 DL 434 108 429 108 DL 439 108 434 108 DL 444 108 439 108 DL 449 +108 444 108 DL 454 108 449 108 DL 459 108 454 108 DL 464 108 459 108 DL +469 108 464 108 DL 474 108 469 108 DL 479 108 474 108 DL 484 108 479 108 +DL 489 108 484 108 DL 494 108 489 108 DL 499 108 494 108 DL 504 108 499 +108 DL/F1 10/Times-Roman@0 SF(addr)91.915 202.6 Q 133.2 200.4 MT -7.2 +1.8 RL 0 -3.6 RL CL 0 Fg 133.2 200.4 MT -7.2 1.8 RL 0 -3.6 RL CL .1 LW 0 +Cg ST .4 LW 126 200.4 111.6 200.4 DL 154.8 211.2 MT 0 -21.6 RL -21.6 0 +RL 0 21.6 RL CL ST(3)141.5 202.6 Q 176.4 200.4 MT -7.2 1.8 RL 0 -3.6 RL +CL 0 Fg 176.4 200.4 MT -7.2 1.8 RL 0 -3.6 RL CL .1 LW 0 Cg ST .4 LW +169.2 200.4 154.8 200.4 DL 198 211.2 MT 0 -21.6 RL -21.6 0 RL 0 21.6 RL +CL ST(D)183.59 202.6 Q 219.6 200.4 198 200.4 DL 277.2 182.4 MT -7.2 1.8 +RL 0 -3.6 RL CL 0 Fg 277.2 182.4 MT -7.2 1.8 RL 0 -3.6 RL CL .1 LW 0 Cg +ST .4 LW 270 182.4 255.6 182.4 DL 298.8 193.2 MT 0 -21.6 RL -21.6 0 RL 0 +21.6 RL CL ST(1)285.5 184.6 Q 320.4 182.4 MT -7.2 1.8 RL 0 -3.6 RL CL 0 +Fg 320.4 182.4 MT -7.2 1.8 RL 0 -3.6 RL CL .1 LW 0 Cg ST .4 LW 313.2 +182.4 298.8 182.4 DL 342 193.2 MT 0 -21.6 RL -21.6 0 RL 0 21.6 RL CL ST +(S)328.42 184.6 Q 363.6 182.4 342 182.4 DL 277.2 218.4 MT -7.2 1.8 RL 0 +-3.6 RL CL 0 Fg 277.2 218.4 MT -7.2 1.8 RL 0 -3.6 RL CL .1 LW 0 Cg ST .4 +LW 270 218.4 255.6 218.4 DL 298.8 229.2 MT 0 -21.6 RL -21.6 0 RL 0 21.6 +RL CL ST(2)285.5 220.6 Q 320.4 218.4 MT -7.2 1.8 RL 0 -3.6 RL CL 0 Fg +320.4 218.4 MT -7.2 1.8 RL 0 -3.6 RL CL .1 LW 0 Cg ST .4 LW 313.2 218.4 +298.8 218.4 DL 342 229.2 MT 0 -21.6 RL -21.6 0 RL 0 21.6 RL CL ST(R) +327.865 220.6 Q 363.6 218.4 342 218.4 DL 421.2 200.4 MT -7.2 1.8 RL 0 +-3.6 RL CL 0 Fg 421.2 200.4 MT -7.2 1.8 RL 0 -3.6 RL CL .1 LW 0 Cg ST .4 +LW 414 200.4 399.6 200.4 DL 442.8 211.2 MT 0 -21.6 RL -21.6 0 RL 0 21.6 +RL CL ST(4)429.5 202.6 Q 464.4 200.4 MT -7.2 1.8 RL 0 -3.6 RL CL 0 Fg +464.4 200.4 MT -7.2 1.8 RL 0 -3.6 RL CL .1 LW 0 Cg ST .4 LW 457.2 200.4 +442.8 200.4 DL(msg)466.865 202.6 Q 255.6 182.4 219.6 200.4 DL 255.6 +218.4 219.6 200.4 DL 399.6 200.4 363.6 182.4 DL 399.6 200.4 363.6 218.4 +DL 208.8 146.4 MT -7.2 1.8 RL 0 -3.6 RL CL 0 Fg 208.8 146.4 MT -7.2 1.8 +RL 0 -3.6 RL CL .1 LW 0 Cg ST .4 LW 201.6 146.4 187.2 146.4 DL 230.4 +157.2 MT 0 -21.6 RL -21.6 0 RL 0 21.6 RL CL ST(0)217.1 148.6 Q 252 146.4 +MT -7.2 1.8 RL 0 -3.6 RL CL 0 Fg 252 146.4 MT -7.2 1.8 RL 0 -3.6 RL CL +.1 LW 0 Cg ST .4 LW 244.8 146.4 230.4 146.4 DL(resolv)265.69 148.6 Q +(ed address)-.15 E 187.2 146.4 162 200.4 DL(Figure 1 \212 Re)216.045 +248.4 Q(writing set semantics)-.25 E 2.5(D\212s)209.35 260.4 S +(ender domain addition)-2.5 E 2.5(S\212m)209.35 272.4 S(ailer)-2.5 E +(-speci\214c sender re)-.2 E(writing)-.25 E 2.5(R\212m)209.35 284.4 S +(ailer)-2.5 E(-speci\214c recipient re)-.2 E(writing)-.25 E 77 296.4 72 +296.4 DL 79 296.4 74 296.4 DL 84 296.4 79 296.4 DL 89 296.4 84 296.4 DL +94 296.4 89 296.4 DL 99 296.4 94 296.4 DL 104 296.4 99 296.4 DL 109 +296.4 104 296.4 DL 114 296.4 109 296.4 DL 119 296.4 114 296.4 DL 124 +296.4 119 296.4 DL 129 296.4 124 296.4 DL 134 296.4 129 296.4 DL 139 +296.4 134 296.4 DL 144 296.4 139 296.4 DL 149 296.4 144 296.4 DL 154 +296.4 149 296.4 DL 159 296.4 154 296.4 DL 164 296.4 159 296.4 DL 169 +296.4 164 296.4 DL 174 296.4 169 296.4 DL 179 296.4 174 296.4 DL 184 +296.4 179 296.4 DL 189 296.4 184 296.4 DL 194 296.4 189 296.4 DL 199 +296.4 194 296.4 DL 204 296.4 199 296.4 DL 209 296.4 204 296.4 DL 214 +296.4 209 296.4 DL 219 296.4 214 296.4 DL 224 296.4 219 296.4 DL 229 +296.4 224 296.4 DL 234 296.4 229 296.4 DL 239 296.4 234 296.4 DL 244 +296.4 239 296.4 DL 249 296.4 244 296.4 DL 254 296.4 249 296.4 DL 259 +296.4 254 296.4 DL 264 296.4 259 296.4 DL 269 296.4 264 296.4 DL 274 +296.4 269 296.4 DL 279 296.4 274 296.4 DL 284 296.4 279 296.4 DL 289 +296.4 284 296.4 DL 294 296.4 289 296.4 DL 299 296.4 294 296.4 DL 304 +296.4 299 296.4 DL 309 296.4 304 296.4 DL 314 296.4 309 296.4 DL 319 +296.4 314 296.4 DL 324 296.4 319 296.4 DL 329 296.4 324 296.4 DL 334 +296.4 329 296.4 DL 339 296.4 334 296.4 DL 344 296.4 339 296.4 DL 349 +296.4 344 296.4 DL 354 296.4 349 296.4 DL 359 296.4 354 296.4 DL 364 +296.4 359 296.4 DL 369 296.4 364 296.4 DL 374 296.4 369 296.4 DL 379 +296.4 374 296.4 DL 384 296.4 379 296.4 DL 389 296.4 384 296.4 DL 394 +296.4 389 296.4 DL 399 296.4 394 296.4 DL 404 296.4 399 296.4 DL 409 +296.4 404 296.4 DL 414 296.4 409 296.4 DL 419 296.4 414 296.4 DL 424 +296.4 419 296.4 DL 429 296.4 424 296.4 DL 434 296.4 429 296.4 DL 439 +296.4 434 296.4 DL 444 296.4 439 296.4 DL 449 296.4 444 296.4 DL 454 +296.4 449 296.4 DL 459 296.4 454 296.4 DL 464 296.4 459 296.4 DL 469 +296.4 464 296.4 DL 474 296.4 469 296.4 DL 479 296.4 474 296.4 DL 484 +296.4 479 296.4 DL 489 296.4 484 296.4 DL 494 296.4 489 296.4 DL 499 +296.4 494 296.4 DL 504 296.4 499 296.4 DL 1.021(Ruleset zero is applied\ + after ruleset three to addresses that are going to actually specify)142 +332.4 R 2.818(recipients. It)117 344.4 R .318(must resolv)2.818 F 2.818 +(et)-.15 G 2.819(oa)-2.818 G/F2 10/Times-Italic@0 SF({mailer)A 2.819(,h) +-1.11 G .319(ost, addr)-2.819 F(ess})-.37 E F1 2.819(triple. The)2.819 F +F2(mailer)2.819 E F1 .319(must be de\214ned in the)2.819 F .752 +(mailer de\214nitions from the con\214guration \214le.)117 356.4 R(The) +5.751 E F2(host)3.251 E F1 .751(is de\214ned into the)3.251 F F0($h) +3.251 E F1 .751(macro for use in)3.251 F 1.202(the ar)117 368.4 R 1.202 +(gv e)-.18 F 1.203(xpansion of the speci\214ed mailer)-.15 F 6.203(.N) +-.55 G 1.203(otice: since the en)-6.203 F -.15(ve)-.4 G 1.203 +(lope sender address will be).15 F .707(used if a deli)117 380.4 R -.15 +(ve)-.25 G .706(ry status noti\214cation must be send, i.e., it may spe\ +cify a recipient, it is also run).15 F 1.548(through ruleset zero.)117 +392.4 R 1.548(If ruleset zero returns a temporary error)6.548 F F0(4xy) +4.049 E F1 1.549(then deli)4.049 F -.15(ve)-.25 G 1.549(ry is deferred.) +.15 F .064(This can be used to temporarily disable deli)117 404.4 R -.15 +(ve)-.25 G(ry).15 E 2.564(,e)-.65 G .064 +(.g., based on the time of the day or other v)-2.564 F(ary-)-.25 E +(ing parameters.)117 416.4 Q +(It should not be used to quarantine e-mails.)5 E .452 +(Rulesets one and tw)142 432.6 R 2.952(oa)-.1 G .452 +(re applied to all sender and recipient addresses respecti)-2.952 F -.15 +(ve)-.25 G(ly).15 E 5.453(.T)-.65 G(he)-5.453 E(y)-.15 E +(are applied before an)117 444.6 Q 2.5(ys)-.15 G +(peci\214cation in the mailer de\214nition.)-2.5 E(The)5 E 2.5(ym)-.15 G +(ust ne)-2.5 E -.15(ve)-.25 G 2.5(rr).15 G(esolv)-2.5 E(e.)-.15 E 1.266 +(Ruleset four is applied to all addresses in the message.)142 460.8 R +1.265(It is typically used to translate)6.265 F(internal to e)117 472.8 +Q(xternal form.)-.15 E .652(In addition, ruleset 5 is applied to all lo\ +cal addresses \(speci\214cally)142 489 R 3.153(,t)-.65 G .653 +(hose that resolv)-3.153 F 3.153(et)-.15 G 3.153(oa)-3.153 G .296 +(mailer with the `F=5' \215ag set\) that do not ha)117 501 R .596 -.15 +(ve a)-.2 H 2.796(liases. This).15 F(allo)2.796 E .296 +(ws a last minute hook for local)-.25 F(names.)117 513 Q F0 2.5 +(5.1.4. Ruleset)102 537 R(hooks)2.5 E F1 3.814(Af)142 553.2 S 1.814 -.25 +(ew e)-3.814 H 1.315(xtra rulesets are de\214ned as \231hooks\232 that \ +can be de\214ned to get special features.).1 F(The)117 565.2 Q 3.468(ya) +-.15 G .968(re all named rulesets.)-3.468 F .968 +(The \231check_*\232 forms all gi)5.968 F 1.268 -.15(ve a)-.25 H .968 +(ccept/reject status; f).15 F .967(alling of)-.1 F 3.467(ft)-.25 G(he) +-3.467 E .207(end or returning normally is an accept, and resolving to) +117 577.2 R F0($#err)2.707 E(or)-.18 E F1 .207 +(is a reject or quarantine.)2.707 F(Quar)5.207 E(-)-.2 E +(antining is chosen by specifying)117 589.2 Q F0(quarantine)2.5 E F1 +(in the second part of the mailer triplet:)2.5 E +($#error $@ quarantine $: Reason for quarantine)157 605.4 Q(Man)117 +621.6 Q 3.121(yo)-.15 G 3.121(ft)-3.121 G .621(hese can also resolv) +-3.121 F 3.121(et)-.15 G 3.121(ot)-3.121 G .621(he special mailer name) +-3.121 F F0($#discard)3.12 E F1 3.12(;t)C .62(his accepts the message) +-3.12 F .923(as though it were successful b)117 633.6 R .923 +(ut then discards it without deli)-.2 F -.15(ve)-.25 G(ry).15 E 5.924 +(.N)-.65 G .924(ote, this mailer cannot be)-5.924 F .682 +(chosen as a mailer in ruleset 0.)117 645.6 R .682 +(Note also that all \231check_*\232 rulesets ha)5.682 F .981 -.15(ve t) +-.2 H 3.181(od).15 G .681(eal with tempo-)-3.181 F .682(rary f)117 657.6 +R .682(ailures, especially for map lookups, themselv)-.1 F .682 +(es, i.e., the)-.15 F 3.182(ys)-.15 G .683 +(hould return a temporary error)-3.182 F(code or at least the)117 669.6 +Q 2.5(ys)-.15 G(hould mak)-2.5 E 2.5(eap)-.1 G +(roper decision in those cases.)-2.5 E F0 2.5(5.1.4.1. check_r)117 693.6 +R(elay)-.18 E F1(The)157 709.8 Q F2 -.15(ch)3.336 G(ec).15 E(k_r)-.2 E +(elay)-.37 E F1 .836 +(ruleset is called after a connection is accepted by the daemon.)3.336 F +.835(It is)5.835 F(not called when sendmail is started using the)132 +721.8 Q F0(\255bs)2.5 E F1 2.5(option. It)2.5 F(is passed)2.5 E 0 Cg EP +%%Page: 42 38 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 193.36(SMM:08-42 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF +(client.host.name $| client.host.address)172 96 Q(where)132 112.2 Q F0 +($|)4.016 E F1 1.517(is a metacharacter separating the tw)4.017 F 4.017 +(op)-.1 G 4.017(arts. This)-4.017 F 1.517 +(ruleset can reject connections)4.017 F .323(from v)132 124.2 R .323 +(arious locations.)-.25 F .322 +(Note that it only checks the connecting SMTP client IP address and) +5.322 F 3.463(hostname. It)132 136.2 R .963 +(does not check for third party message relaying.)3.463 F(The)5.963 E/F2 +10/Times-Italic@0 SF -.15(ch)3.463 G(ec).15 E(k_r)-.2 E(cpt)-.37 E F1 +.964(ruleset dis-)3.463 F(cussed belo)132 148.2 Q 2.5(wu)-.25 G +(sually does third party message relay checking.)-2.5 E F0 2.5 +(5.1.4.2. check_mail)117 172.2 R F1(The)157 188.4 Q F2 -.15(ch)3.723 G +(ec).15 E(k_mail)-.2 E F1 1.223 +(ruleset is passed the user name parameter of the)3.723 F/F3 9 +/Times-Roman@0 SF 1.222(SMTP MAIL)3.723 F F1(com-)3.722 E 2.5(mand. It) +132 200.4 R(can accept or reject the address.)2.5 E F0 2.5 +(5.1.4.3. check_r)117 224.4 R(cpt)-.18 E F1(The)157 240.6 Q F2 -.15(ch) +3.917 G(ec).15 E(k_r)-.2 E(cpt)-.37 E F1 1.417 +(ruleset is passed the user name parameter of the)3.917 F F3 1.418 +(SMTP RCPT)3.917 F F1(com-)3.918 E 2.5(mand. It)132 252.6 R +(can accept or reject the address.)2.5 E F0 2.5(5.1.4.4. check_data)117 +276.6 R F1(The)157 292.8 Q F2 -.15(ch)3.246 G(ec).15 E(k_data)-.2 E F1 +.746(ruleset is called after the)3.246 F F3 .746(SMTP D)3.246 F -1.089 +-.999(AT A)-.36 H F1 .745(command, its parameter is the)4.245 F +(number of recipients.)132 304.8 Q(It can accept or reject the command.) +5 E F0 2.5(5.1.4.5. check_compat)117 328.8 R F1(The)157 345 Q F2 -.15 +(ch)2.5 G(ec).15 E(k_compat)-.2 E F1(ruleset is passed)2.5 E(sender)172 +361.2 Q(-address $| recipient-address)-.2 E(where)132 377.4 Q F0($|) +3.725 E F1 1.225(is a metacharacter separating the addresses.)3.725 F +1.225(It can accept or reject mail transfer)6.225 F 2.386 +(between these tw)132 389.4 R 4.886(oa)-.1 G 2.386(ddresses much lik) +-4.886 F 4.885(et)-.1 G(he)-4.885 E F2 -.15(ch)4.885 G(ec).15 E +(kcompat\(\))-.2 E F1 4.885(function. Note:)4.885 F 2.385(while other) +4.885 F F2 -.15(ch)132 401.4 S(ec).15 E(k_*)-.2 E F1 1.99 +(rulesets are in)4.49 F -.2(vo)-.4 G -.1(ke).2 G 4.49(dd).1 G 1.99 +(uring the SMTP mail receiption stage \(i.e., in the SMTP)-4.49 F(serv) +132 413.4 Q(er\),)-.15 E F2 -.15(ch)2.5 G(ec).15 E(k_compat)-.2 E F1 +(is in)2.5 E -.2(vo)-.4 G -.1(ke).2 G 2.5(dd).1 G(uring the mail deli) +-2.5 E -.15(ve)-.25 G(ry stage.).15 E F0 2.5(5.1.4.6. check_eoh)117 +437.4 R F1(The)157 453.6 Q F2 -.15(ch)2.5 G(ec).15 E(k_eoh)-.2 E F1 +(ruleset is passed)2.5 E(number)172 469.8 Q +(-of-headers $| size-of-headers)-.2 E(where)132 486 Q F0($|)3.803 E F1 +1.303(is a metacharacter separating the numbers.)3.803 F 1.303 +(These numbers can be used for size)6.303 F .588(comparisons with the) +132 498 R F0(arith)3.088 E F1 3.088(map. The)3.088 F .588 +(ruleset is triggered after all of the headers ha)3.088 F .888 -.15 +(ve b)-.2 H(een).15 E 3.262(read. It)132 510 R .762 +(can be used to correlate information g)3.262 F .761 +(athered from those headers using the)-.05 F F0(macr)3.261 E(o)-.18 E F1 +(storage map.)132 522 Q +(One possible use is to check for a missing header)5 E 5(.F)-.55 G(or e) +-5.15 E(xample:)-.15 E 0 Cg EP +%%Page: 43 39 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-43)195.86 E/F1 10/Times-Roman@0 SF(Kstorage macro)172 96 Q +(HMessage-Id: $>CheckMessageId)172 108 Q(SCheckMessageId)172 132 Q 2.5 +(#R)172 144 S(ecord the presence of the header)-2.5 E 88.83(R$* $:)172 +156 R($\(storage {MessageIdCheck} $@ OK $\) $1)2.5 E(R< $+ @ $+ >)172 +168 Q($@ OK)49.56 E 88.83(R$* $#error)172 180 R($: 553 Header Error)2.5 +E(Scheck_eoh)172 204 Q 2.5(#C)172 216 S(heck the macro)-2.5 E 88.83 +(R$* $:)172 228 R 2.5(<$)2.5 G(&{MessageIdCheck} >)-2.5 E 2.5(#C)172 240 +S(lear the macro for the ne)-2.5 E(xt message)-.15 E 88.83(R$* $:)172 +252 R($\(storage {MessageIdCheck} $\) $1)2.5 E 2.5(#H)172 264 S +(as a Message-Id: header)-2.5 E(R< $+ >)172 276 Q($@ OK)74.41 E 2.5(#A) +172 288 S(llo)-2.5 E 2.5(wm)-.25 G(issing Message-Id: from local mail) +-2.5 E 88.83(R$* $:)172 300 R 2.5(<$)2.5 G(&{client_name} >)-2.5 E(R< >) +172 312 Q($@ OK)87.55 E(R< $=w >)172 324 Q($@ OK)67.19 E 2.5(#O)172 336 +S(therwise, reject the mail)-2.5 E 88.83(R$* $#error)172 348 R +($: 553 Header Error)2.5 E -.25(Ke)132 364.2 S .459(ep in mind the Mess\ +age-Id: header is not a required header and is not a guaranteed spam).25 +F(indicator)132 376.2 Q 5(.T)-.55 G(his ruleset is an e)-5 E +(xample and should probably not be used in production.)-.15 E F0 2.5 +(5.1.4.7. check_eom)117 400.2 R F1(The)157 416.4 Q/F2 10/Times-Italic@0 +SF -.15(ch)3.219 G(ec).15 E(k_eom)-.2 E F1 .719(ruleset is called after\ + the end of a message, its parameter is the mes-)3.219 F(sage size.)132 +428.4 Q(It can accept or reject the message.)5 E F0 2.5 +(5.1.4.8. check_etr)117 452.4 R(n)-.15 E F1(The)157 468.6 Q F2 -.15(ch) +3.384 G(ec).15 E(k_etrn)-.2 E F1 .885 +(ruleset is passed the parameter of the)3.384 F/F3 9/Times-Roman@0 SF +.885(SMTP ETRN)3.385 F F1 3.385(command. It)3.385 F(can)3.385 E +(accept or reject the command.)132 480.6 Q F0 2.5(5.1.4.9. check_expn) +117 504.6 R F1(The)157 520.8 Q F2 -.15(ch)3.615 G(ec).15 E(k_e)-.2 E +(xpn)-.2 E F1 1.115(ruleset is passed the user name parameter of the) +3.615 F F3 1.114(SMTP EXPN)3.615 F F1(com-)3.614 E 2.5(mand. It)132 +532.8 R(can accept or reject the address.)2.5 E F0 2.5 +(5.1.4.10. check_vrfy)117 556.8 R F1(The)157 573 Q F2 -.15(ch)3.816 G +(ec).15 E(k_vrfy)-.2 E F1 1.317 +(ruleset is passed the user name parameter of the)3.816 F F3 1.317 +(SMTP VRFY)3.817 F F1(com-)3.817 E 2.5(mand. It)132 585 R +(can accept or reject the command.)2.5 E F0 2.5(5.1.4.11. trust_auth)117 +609 R F1(The)157 625.2 Q F2(trust_auth)3.045 E F1 .545 +(ruleset is passed the A)3.045 F .545(UTH= parameter of the)-.55 F F3 +.544(SMTP MAIL)3.044 F F1(command.)3.044 E .635 +(It is used to determine whether this v)132 637.2 R .636 +(alue should be trusted. In order to mak)-.25 F 3.136(et)-.1 G .636 +(his decision,)-3.136 F .154(the ruleset may mak)132 649.2 R 2.654(eu) +-.1 G .154(se of the v)-2.654 F(arious)-.25 E F0(${auth_*})2.654 E F1 +2.654(macros. If)2.654 F .153(the ruleset does resolv)2.654 F 2.653(et) +-.15 G 2.653(ot)-2.653 G(he)-2.653 E .018(\231error\232 mailer the A)132 +661.2 R .019 +(UTH= parameter is not trusted and hence not passed on to the ne)-.55 F +.019(xt relay)-.15 F(.)-.65 E F0 2.5(5.1.4.12. tls_client)117 685.2 R F1 +(The)157 701.4 Q F2(tls_client)2.947 E F1 .447 +(ruleset is called when sendmail acts as serv)2.947 F(er)-.15 E 2.947 +(,a)-.4 G .447(fter a ST)-2.947 F(AR)-.93 E .446(TTLS com-)-.6 F 1.045 +(mand has been issued, and from)132 713.4 R F2 -.15(ch)3.545 G(ec).15 E +(k_mail.)-.2 E F1 1.045(The parameter is the v)6.045 F 1.045(alue of) +-.25 F F0(${v)3.545 E(erify})-.1 E F1(and)3.545 E(ST)132 725.4 Q(AR)-.93 +E 1.704(TTLS or MAIL, respecti)-.6 F -.15(ve)-.25 G(ly).15 E 6.704(.I) +-.65 G 4.204(ft)-6.704 G 1.704(he ruleset does resolv)-4.204 F 4.204(et) +-.15 G 4.204(ot)-4.204 G 1.704(he \231error\232 mailer)-4.204 F 4.203 +(,t)-.4 G(he)-4.203 E 0 Cg EP +%%Page: 44 40 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 193.36(SMM:08-44 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF +(appropriate error code is returned to the client.)132 96 Q F0 2.5 +(5.1.4.13. tls_ser)117 120 R -.1(ve)-.1 G(r).1 E F1(The)157 136.2 Q/F2 +10/Times-Italic@0 SF(tls_server)3.053 E F1 .554 +(ruleset is called when sendmail acts as client after a ST)3.053 F(AR) +-.93 E .554(TTLS com-)-.6 F .05(mand \(should\) ha)132 148.2 R .35 -.15 +(ve b)-.2 H .05(een issued.).15 F .049(The parameter is the v)5.05 F +.049(alue of)-.25 F F0(${v)2.549 E(erify})-.1 E F1 5.049(.I)C 2.549(ft) +-5.049 G .049(he ruleset does)-2.549 F(resolv)132 160.2 Q 2.514(et)-.15 +G 2.514(ot)-2.514 G .014(he \231error\232 mailer)-2.514 F 2.514(,t)-.4 G +.014(he connection is aborted \(treated as non-deli)-2.514 F -.15(ve) +-.25 G .015(rable with a per).15 F(-)-.2 E(manent or temporary error\).) +132 172.2 Q F0 2.5(5.1.4.14. tls_r)117 196.2 R(cpt)-.18 E F1(The)157 +212.4 Q F2(tls_r)4.075 E(cpt)-.37 E F1 1.574 +(ruleset is called each time before a RCPT T)4.075 F 4.074(Oc)-.18 G +1.574(ommand is sent.)-4.074 F(The)6.574 E .102 +(parameter is the current recipient.)132 224.4 R .102 +(If the ruleset does resolv)5.102 F 2.602(et)-.15 G 2.602(ot)-2.602 G +.102(he \231error\232 mailer)-2.602 F 2.602(,t)-.4 G .102(he RCPT)-2.602 +F 2.749 -.18(TO c)132 236.4 T 2.388 +(ommand is suppressed \(treated as non-deli).18 F -.15(ve)-.25 G 2.388 +(rable with a permanent or temporary).15 F 3.027(error\). This)132 248.4 +R .527(ruleset allo)3.027 F .528(ws to require encryption or v)-.25 F +.528(eri\214cation of the recipient')-.15 F 3.028(sM)-.55 G 2.388 -.93 +(TA e)-3.028 H -.15(ve).68 G(n).15 E .468(if the mail is someho)132 +260.4 R 2.968(wr)-.25 G .468(edirected to another host.)-2.968 F -.15 +(Fo)5.468 G 2.968(re).15 G .468(xample, sending mail to)-3.118 F F2(luk) +2.967 E(e@end-)-.1 E(mail.or)132 272.4 Q(g)-.37 E F1 1.929 +(may get redirected to a host named)4.429 F F2(death.star)4.429 E F1 +1.93(and hence the tls_serv)4.429 F 1.93(er ruleset)-.15 F -.1(wo)132 +284.4 S(n').1 E 3.003(ta)-.18 G(pply)-3.003 E 5.503(.B)-.65 G 3.003(yi) +-5.503 G .502(ntroducing per recipient restrictions such attacks \(e.g.\ +, via DNS spoo\214ng\))-3.003 F(can be made impossible.)132 296.4 Q(See) +5 E F2(cf/README)2.5 E F1(ho)2.5 E 2.5(wt)-.25 G +(his ruleset can be used.)-2.5 E F0 2.5(5.1.4.15. sr)117 320.4 R +(v_featur)-.1 E(es)-.18 E F1(The)157 336.6 Q F2(srv_featur)2.75 E(es) +-.37 E F1 .25(ruleset is called with the connecting client')2.75 F 2.75 +(sh)-.55 G .25(ost name when a client)-2.75 F 1.512 +(connects to sendmail.)132 348.6 R 1.512(This ruleset should return) +6.512 F F0($#)4.011 E F1(follo)4.011 E 1.511 +(wed by a list of options \(single)-.25 F 2.16 +(characters delimited by white space\).)132 360.6 R 2.16 +(If the return v)7.16 F 2.16(alue starts with an)-.25 F 2.16 +(ything else it is)-.15 F .267(silently ignored.)132 372.6 R .267 +(Generally upper case characters turn of)5.267 F 2.767(faf)-.25 G .267 +(eature while lo)-2.767 F .267(wer case charac-)-.25 F .049 +(ters turn it on.)132 384.6 R .049(Option `S' causes the serv)5.049 F +.049(er not to of)-.15 F .05(fer ST)-.25 F(AR)-.93 E .05 +(TTLS, which is useful to inter)-.6 F(-)-.2 E .23(act with MT)132 396.6 +R(As/MU)-.93 E .229(As that ha)-.4 F .529 -.15(ve b)-.2 H(rok).15 E .229 +(en ST)-.1 F(AR)-.93 E .229(TTLS implementations by simply not of)-.6 F +(fering)-.25 E 3.362(it. `V')132 408.6 R .862(turns of)3.362 F 3.362(ft) +-.25 G .863 +(he request for a client certi\214cate during the TLS handshak)-3.362 F +3.363(e. Options)-.1 F -.8(`A)3.363 G(')-.31 E 2.036 +(and `P' suppress SMTP A)132 420.6 R 2.036(UTH and PIPELINING, respecti) +-.55 F -.15(ve)-.25 G(ly).15 E 7.036(.`)-.65 G 2.036(c' is the equi) +-7.036 F -.25(va)-.25 G 2.035(lent to).25 F .229 +(AuthOptions=p, i.e., it doesn')132 432.6 R 2.729(tp)-.18 G .229 +(ermit mechanisms susceptible to simple passi)-2.729 F .529 -.15(ve a) +-.25 H .23(ttack \(e.g.,).15 F .93 +(PLAIN, LOGIN\), unless a security layer is acti)132 444.6 R -.15(ve) +-.25 G 5.93(.O).15 G .93(ption `l' requires SMTP A)-5.93 F .93 +(UTH for a)-.55 F 5.03(connection. Options)132 456.6 R 2.531 +('B', 'D', 'E', and 'X' suppress SMTP VERB, DSN, ETRN, and)5.03 F +(EXPN, respecti)132 468.6 Q -.15(ve)-.25 G(ly).15 E(.)-.65 E 0 Cg EP +%%Page: 45 41 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-45)195.86 E/F1 10/Times-Roman@0 SF 37.78(AD)172 96 S 2.5(on) +-37.78 G(ot of)-2.5 E(fer A)-.25 E(UTH)-.55 E 40.56(aO)172 108 S -.25 +(ff)-40.56 G(er A).25 E(UTH \(def)-.55 E(ault\))-.1 E 38.33(BD)172 120 S +2.5(on)-38.33 G(ot of)-2.5 E(fer VERB)-.25 E 40(bO)172 132 S -.25(ff)-40 +G(er VERB \(def).25 E(ault\))-.1 E 38.33(CD)172 144 S 2.5(on)-38.33 G +(ot require security layer for)-2.5 E(plainte)217 156 Q(xt A)-.15 E +(UTH \(def)-.55 E(ault\))-.1 E 40.56(cR)172 168 S +(equire security layer for plainte)-40.56 E(xt A)-.15 E(UTH)-.55 E 37.78 +(DD)172 180 S 2.5(on)-37.78 G(ot of)-2.5 E(fer DSN)-.25 E 40(dO)172 192 +S -.25(ff)-40 G(er DSN \(def).25 E(ault\))-.1 E 38.89(ED)172 204 S 2.5 +(on)-38.89 G(ot of)-2.5 E(fer ETRN)-.25 E 40.56(eO)172 216 S -.25(ff) +-40.56 G(er ETRN \(def).25 E(ault\))-.1 E 38.89(LD)172 228 S 2.5(on) +-38.89 G(ot require A)-2.5 E(UTH \(def)-.55 E(ault\))-.1 E 42.22(lR)172 +240 S(equire A)-42.22 E(UTH)-.55 E 39.44(PD)172 252 S 2.5(on)-39.44 G +(ot of)-2.5 E(fer PIPELINING)-.25 E 40(pO)172 264 S -.25(ff)-40 G +(er PIPELINING \(def).25 E(ault\))-.1 E 39.44(SD)172 276 S 2.5(on)-39.44 +G(ot of)-2.5 E(fer ST)-.25 E(AR)-.93 E(TTLS)-.6 E 41.11(sO)172 288 S +-.25(ff)-41.11 G(er ST).25 E(AR)-.93 E(TTLS \(def)-.6 E(ault\))-.1 E +37.78(VD)172 300 S 2.5(on)-37.78 G(ot request a client certi\214cate) +-2.5 E 40(vR)172 312 S(equest a client certi\214cate \(def)-40 E(ault\)) +-.1 E 37.78(XD)172 324 S 2.5(on)-37.78 G(ot of)-2.5 E(fer EXPN)-.25 E 40 +(xO)172 336 S -.25(ff)-40 G(er EXPN \(def).25 E(ault\))-.1 E .205 +(Note: the entries mark)132 352.2 R .205(ed as `)-.1 F(`\(def)-.74 E +(ault\)')-.1 E 2.705('m)-.74 G .204 +(ay require that some con\214guration has been made,)-2.705 F .406 +(e.g., SMTP A)132 364.2 R .407(UTH is only a)-.55 F -.25(va)-.2 G .407 +(ilable if properly con\214gured.).25 F(Moreo)5.407 E -.15(ve)-.15 G +1.207 -.4(r, m).15 H(an).4 E 2.907(yo)-.15 G .407(ptions can be)-2.907 F +.054(changed on a global basis via other settings as e)132 376.2 R .054 +(xplained in this document, e.g., via Daemon-)-.15 F(PortOptions.)132 +388.2 Q .88(The ruleset may return `$#temp' to indicate that there is a\ + temporary problem deter)157 404.4 R(-)-.2 E 1.623 +(mining the correct features, e.g., if a map is una)132 416.4 R -.25(va) +-.2 G 4.123(ilable. In).25 F 1.622(that case, the SMTP serv)4.122 F(er) +-.15 E(issues a temporary f)132 428.4 Q +(ailure and does not accept email.)-.1 E F0 2.5(5.1.4.16. try_tls)117 +452.4 R F1(The)157 468.6 Q/F2 10/Times-Italic@0 SF(try_tls)3.563 E F1 +1.063(ruleset is called when sendmail connects to another MT)3.563 F +3.563(A. If)-.93 F 1.064(the ruleset)3.563 F 1.153(does resolv)132 480.6 +R 3.653(et)-.15 G 3.653(ot)-3.653 G 1.153(he \231error\232 mailer)-3.653 +F 3.653(,s)-.4 G 1.153(endmail does not try ST)-3.653 F(AR)-.93 E 1.152 +(TTLS e)-.6 F -.15(ve)-.25 G 3.652(ni).15 G 3.652(fi)-3.652 G 3.652(ti) +-3.652 G 3.652(so)-3.652 G -.25(ff)-3.652 G(ered.).25 E +(This is useful to deal with ST)132 492.6 Q(AR)-.93 E +(TTLS interoperability issues by simply not using it.)-.6 E F0 2.5 +(5.1.4.17. tls_sr)117 516.6 R(v_featur)-.1 E(es and tls_clt_featur)-.18 +E(es)-.18 E F1(The)157 532.8 Q F2(tls_clt_featur)2.871 E(es)-.37 E F1 +.372(ruleset is called when sendmail connects to another MT)2.871 F +2.872(Aa)-.93 G .372(nd the)-2.872 F F2(tls_srv_featur)132 544.8 Q(es) +-.37 E F1 .436(ruleset is called when a client connects to)2.936 F F2 +(sendmail)2.935 E F1 5.435(.T)C .435(he ar)-5.435 F .435 +(guments for the)-.18 F 1.872(rulesets are the host name and IP address\ + of the other side separated by)132 556.8 R F0($|)4.372 E F1 1.872 +(\(which is a)4.372 F 3.593(metacharacter\). The)132 568.8 R 3.593(ys) +-.15 G 1.093(hould return a list of)-3.593 F F2 -.1(ke)3.592 G(y=value) +-.2 E F1 1.092(pairs separated by semicolons; the)3.592 F .552 +(list can be empty if no options should be applied to the connection.) +132 580.8 R -1.27 -.74(Av a)5.553 H .553(ilable k).74 F -.15(ey)-.1 G +3.053(sa).15 G .553(re and)-3.053 F(their allo)132 592.8 Q(wed v)-.25 E +(alues are:)-.25 E(Options)132 609 Q 3.977(Ac)146.4 621 S 1.477 +(omma separated list of SSL related options.)-3.977 F(See)6.476 E F2 +(ServerSSLOptions)3.976 E F1(and)3.976 E F2(ClientSS-)3.976 E(LOptions) +146.4 633 Q F1 2.519(for details, as well as)5.019 F F2(SSL_set_options) +5.019 E F1 2.519(\(3\) and note this w)B 2.52(arning: Options)-.1 F +(already set before are not cleared!)146.4 645 Q(CipherList)132 661.2 Q +.222(Specify cipher list for ST)146.4 673.2 R(AR)-.93 E .222 +(TTLS \(does not apply to TLSv1.3\), see)-.6 F F2(cipher)2.721 E(s)-.1 E +F1 .221(\(1\) for possi-)B(ble v)146.4 685.2 Q 2.5(alues. This)-.25 F +-.15(ove)2.5 G(rrides the global).15 E F2(CipherList)2.5 E F1 +(for the session.)2.5 E(CertFile)132 701.4 Q +(File containing a certi\214cate.)146.4 713.4 Q 0 Cg EP +%%Page: 46 42 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 193.36(SMM:08-46 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF -2.15 +-.25(Ke y)132 96 T(File).25 E(File containing the pri)146.4 108 Q -.25 +(va)-.25 G(te k).25 E .3 -.15(ey f)-.1 H(or the certi\214cate.).15 E +(Flags)132 124.2 Q(Currently the only v)146.4 136.2 Q(alid \215ags are) +-.25 E/F2 10/Times-Italic@0 SF(R)146.4 148.2 Q F1 1.828 +(to require a CRL for each encountered certi\214cate during v)4.328 F +1.829(eri\214cation \(by def)-.15 F 1.829(ault a)-.1 F +(missing CRL is ignored\),)146.4 160.2 Q F2(c)146.4 172.2 Q F1(and)3.33 +E F2(C)3.33 E F1 .829(which basically clears/sets the option)3.329 F F2 +(TLSF)3.329 E(allbac)-.75 E(ktoClear)-.2 E F1 .829 +(for just this session,)3.329 F(respecti)146.4 184.2 Q -.15(ve)-.25 G +(ly).15 E(,)-.65 E F2(d)146.4 196.2 Q F1(to turn of)2.5 E 2.5(fD)-.25 G +.001(ANE which is ob)-2.9 F .001(viously only v)-.15 F .001(alid for) +-.25 F F2(tls_clt_featur)2.501 E(es)-.37 E F1 .001(and requires D)2.501 +F(ANE)-.4 E .705(to be compiled in.)146.4 208.2 R .704 +(This might be needed in case of a miscon\214guration, e.g., specifying) +5.705 F(in)146.4 220.2 Q -.25(va)-.4 G(lid TLSA RRs.).25 E(Example:)132 +236.4 Q(Stls_srv_features)172 252.6 Q(R$* $| 10.$+)172 264.6 Q +($: cipherlist=HIGH)56.19 E(Notes:)132 285 Q .402 +(Errors in these features \(e.g., unkno)157 301.2 R .402(wn k)-.25 F +-.15(ey)-.1 G 2.902(so).15 G 2.902(ri)-2.902 G -1.95 -.4(nv a)-2.902 H +.402(lid v).4 F .402(alues\) are logged and the cur)-.25 F(-)-.2 E 2.362 +(rent session is aborted to a)132 313.2 R -.2(vo)-.2 G 2.362 +(id using ST).2 F(AR)-.93 E 2.361(TTLS with features that should ha)-.6 +F 2.661 -.15(ve b)-.2 H(een).15 E(changed.)132 325.2 Q(The k)157 341.4 Q +-.15(ey)-.1 G 2.5(sa).15 G(re case-insensiti)-2.5 E -.15(ve)-.25 G(.).15 +E(Both)157 357.6 Q F2(CertF)2.5 E(ile)-.45 E F1(and)2.5 E F2 -2.1 -.35 +(Ke y)2.5 H -.45(Fi).35 G(le).45 E F1 +(must be speci\214ed together; specifying only one is an error)2.5 E(.) +-.55 E F0 2.5(5.1.4.18. authinf)117 381.6 R(o)-.25 E F1(The)157 397.8 Q +F2(authinfo)3.049 E F1 .549 +(ruleset is called when sendmail tries to authenticate to another MT) +3.049 F 3.05(A. It)-.93 F .844(should return)132 409.8 R F0($#)3.344 E +F1(follo)3.344 E .844(wed by a list of tok)-.25 F .843 +(ens that are used for SMTP A)-.1 F 3.343(UTH. If)-.55 F .843 +(the return)3.343 F -.25(va)132 421.8 S 1.303(lue starts with an).25 F +1.304(ything else it is silently ignored.)-.15 F 1.304(Each tok)6.304 F +1.304(en is a tagged string of the)-.1 F +(form: "TDstring" \(including the quotes\), where)132 433.8 Q 38.89(TT) +172 450 S(ag which describes the item)-39.69 E 37.78(DD)172 462 S +(elimiter: ':' simple te)-37.78 E(xt follo)-.15 E(ws)-.25 E +('=' string is base64 encoded)217 474 Q 19.72(string V)172 486 R +(alue of the item)-1.11 E -1.11(Va)132 502.2 S(lid v)1.11 E +(alues for the tag are:)-.25 E 37.78(Uu)172 518.4 S +(ser \(authorization\) id)-37.78 E 41.67(Ia)172 530.4 S +(uthentication id)-41.67 E 39.44(Pp)172 542.4 S(assw)-39.44 E(ord)-.1 E +38.33(Rr)172 554.4 S(ealm)-38.33 E 36.11(Ml)172 566.4 S +(ist of mechanisms delimited by spaces)-36.11 E .324 +(If this ruleset is de\214ned, the option)132 582.6 R F0(DefaultA)2.823 +E(uthInf)-.5 E(o)-.25 E F1 .323(is ignored \(e)2.823 F -.15(ve)-.25 G +2.823(ni).15 G 2.823(ft)-2.823 G .323(he ruleset does not)-2.823 F +(return a `)132 594.6 Q(`useful')-.74 E 2.5('r)-.74 G(esult\).)-2.5 E F0 +2.5(5.1.4.19. queuegr)117 618.6 R(oup)-.18 E F1(The)157 634.8 Q F2 +(queue)3.918 E(gr)-.4 E(oup)-.45 E F1 1.419 +(ruleset is used to map a recipient address to a queue group name.)3.918 +F .434(The input for the ruleset is the recipient address \(i.e., the a\ +ddress part of the resolv)132 646.8 R .434(ed triple\))-.15 F 1.306 +(The ruleset should return)132 658.8 R F0($#)3.807 E F1(follo)3.807 E +1.307(wed by the name of a queue group.)-.25 F 1.307(If the return v) +6.307 F(alue)-.25 E 1.241(starts with an)132 670.8 R 1.241 +(ything else it is silently ignored.)-.15 F 1.241 +(See the section about `)6.241 F 1.24(`Queue Groups and)-.74 F +(Queue Directories')132 682.8 Q 2.5('f)-.74 G(or further information.) -2.5 E 0 Cg EP -%%Page: 69 65 +%%Page: 47 43 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3639>195.86 E -/F1 10/Times-Roman@0 SF 11.11<7352>219 96 S -<656a65637420756e6465636c6172656420382d6269742064617461202860>-11.11 E -<6073747269637427>-.74 E<2729>-.74 E 7.22<6d43>219 108 S<6f6e>-7.22 E --.15<7665>-.4 G -<727420756e6465636c6172656420382d626974206461746120746f204d494d45202860> -.15 E<606d696d6527>-.74 E<2729>-.74 E 10<7050>219 120 S -<61737320756e6465636c6172656420382d6269742064617461202860>-10.15 E -<607061737327>-.74 E<2729>-.74 E 2.228<496e20616c6c2063617365732070726f -7065726c79206465636c6172656420384249544d494d4520646174612077696c6c206265 -20636f6e>174 136.2 R -.15<7665>-.4 G 2.227 -<7274656420746f2037424954206173>.15 F<6e65656465642e>174 148.2 Q -<4572726f724865616465723d>102 164.4 Q/F2 10/Times-Italic@0 SF -<8c6c652d6f72>A<2d6d65737361>-.2 E -.1<6765>-.1 G F1 .486<5b455d20507265 -70656e64206572726f72206d6573736167657320776974682074686520696e6469636174 -6564206d6573736167652e>174 176.4 R .486<4966206974206265>5.486 F .487 -<67696e732077697468206120736c6173682c>-.15 F .246<697420697320617373756d -656420746f2062652074686520706174686e616d65206f662061208c6c6520636f6e7461 -696e696e672061206d65737361676520287468697320697320746865207265636f6d2d> -174 188.4 R .86<6d656e6465642073657474696e67292e>174 200.4 R .86 -<4f74686572776973652c2069742069732061206c69746572616c206d6573736167652e> -5.86 F .86<546865206572726f72208c6c65206d6967687420636f6e7461696e>5.86 F -1.116<746865206e616d652c20656d61696c20616464726573732c20616e642f6f722070 -686f6e65206e756d626572206f662061206c6f63616c20706f73746d6173746572207768 -6f20636f756c64>174 212.4 R<70726f>174 224.4 Q .826 -<7669646520617373697374616e636520746f20656e642075736572732e>-.15 F .827< -496620746865206f7074696f6e206973206d697373696e67206f72206e756c6c2c206f72 -206966206974206e616d65732061>5.827 F -<8c6c6520776869636820646f6573206e6f742065>174 236.4 Q<78697374206f722077 -68696368206973206e6f74207265616461626c652c206e6f206d65737361676520697320 -7072696e7465642e>-.15 E<4572726f724d6f64653d>102 252.6 Q F2<78>A F1 -<5b655d20446973706f7365206f66206572726f7273207573696e67206d6f6465>17.49 -E F2<78>2.5 E F1 5<2e54>C<68652076>-5 E<616c75657320666f72>-.25 E F2<78> -2.5 E F1<6172653a>2.5 E 15<7050>214 268.8 S -<72696e74206572726f72206d657373616765732028646566>-15 E<61756c7429>-.1 E -15<714e>214 280.8 S 2.5<6f6d>-15 G<657373616765732c206a757374206769>-2.5 -E .3 -.15<7665206578>-.25 H<697420737461747573>.15 E 12.22<6d4d>214 -292.8 S<61696c206261636b206572726f7273>-12.22 E 12.78<7757>214 304.8 S< -72697465206261636b206572726f727320286d61696c2069662075736572206e6f74206c -6f6767656420696e29>-12.78 E 15.56<654d>214 316.8 S<61696c206261636b2065 -72726f727320287768656e206170706c696361626c652920616e64206769>-15.56 E .3 --.15<7665207a>-.25 H<65726f2065>.15 E<786974207374617420616c>-.15 E -.1 -<7761>-.1 G<7973>.1 E 1.314<4e6f7465207468617420746865206c617374206d6f64 -652c2099659a2c20697320666f72204265726b6e6574206572726f722070726f63657373 -696e6720616e642073686f756c64206e6f74206265>174 333 R 1.323 -<7573656420696e206e6f726d616c2063697263756d7374616e6365732e>174 345 R -1.323<4e6f74652c20746f6f2c2074686174206d6f64652099719a2c206f6e6c79206170 -706c69657320746f206572726f7273>6.323 F<7265636f676e697a6564206265666f72 -652073656e646d61696c20666f726b7320666f72206261636b67726f756e642064656c69> -174 357 Q -.15<7665>-.25 G<7279>.15 E<2e>-.65 E -.15<4661>102 373.2 S -<6c6c6261636b4d58686f73743d>.15 E F2<66616c6c626163>A<6b686f7374>-.2 E -F1 .797<5b565d2049662073706563698c65642c20746865>174 385.2 R F2 -<66616c6c626163>3.297 E<6b686f7374>-.2 E F1 .797<61637473206c696b>3.297 -F 3.296<656176>-.1 G .796<657279206c6f>-3.446 F 3.296<7770>-.25 G .796 -<72696f72697479204d58206f6e2065>-3.296 F -.15<7665>-.25 G .796 -<727920686f73742e>.15 F 1.537 -<4d58207265636f7264732077696c6c206265206c6f6f6b>174 397.2 R 1.537<656420 -757020666f72207468697320686f73742c20756e6c65737320746865206e616d65206973 -20737572726f756e646564206279>-.1 F .017<73717561726520627261636b>174 -409.2 R 2.517<6574732e2054686973>-.1 F .017<697320696e74656e64656420746f -2062652075736564206279207369746573207769746820706f6f72206e657477>2.517 F -.016<6f726b20636f6e6e65637469>-.1 F<762d>-.25 E<697479>174 421.2 Q 6.706 -<2e4d>-.65 G 1.706<657373616765732077686963682061726520756e64656c69> --6.706 F -.15<7665>-.25 G 1.706 -<7261626c652064756520746f2074656d706f7261727920616464726573732066>.15 F -1.706<61696c757265732028652e672e2c>-.1 F<444e532066>174 433.2 Q -<61696c7572652920616c736f20676f20746f207468652046>-.1 E -<616c6c6261636b4d58686f73742e>-.15 E -.15<4661>102 449.4 S -<6c6c4261636b536d617274486f73743d>.15 E F2<686f73746e616d65>A F1 1.656 -<49662073706563698c65642c20746865>174 461.4 R F2 -.75<4661>4.156 G -<6c6c426163>.75 E<6b536d617274486f7374>-.2 E F1 1.656 -<77696c6c206265207573656420696e2061206c6173742d6469746368206566>4.156 F -1.655<666f727420666f722065616368>-.25 F 3.212<686f73742e2054686973>174 -473.4 R .712<697320696e74656e64656420746f206265207573656420627920736974 -65732077697468202266>3.212 F<616b>-.1 E 3.212<6569>-.1 G .712 -<6e7465726e616c20444e53222c20652e672e2c206120636f6d2d>-3.212 F<70616e> -174 485.4 Q 3.19<7977>-.15 G .69 -<686f736520444e532061636375726174656c792072658d65637473207468652077> --3.19 F .69<6f726c6420696e73696465207468617420636f6d70616e>-.1 F<7927> --.15 E 3.19<7364>-.55 G .69<6f6d61696e2062>-3.19 F<7574>-.2 E -<6e6f74206f7574736964652e>174 497.4 Q -.15<4661>102 513.6 S 34.08 -<737453706c6974205b6e6f>.15 F 1.572 -<73686f7274206e616d655d2049662073657420746f20612076>4.071 F 1.572 -<616c75652067726561746572207468616e207a65726f202874686520646566>-.25 F -1.572<61756c74206973206f6e65292c206974207375702d>-.1 F .977<707265737365 -7320746865204d58206c6f6f6b757073206f6e20616464726573736573207768656e2074 -6865>174 525.6 R 3.477<7961>-.15 G .977 -<726520696e697469616c6c7920736f727465642c20692e652e2c20666f7220746865> --3.477 F 1.03<8c7273742064656c69>174 537.6 R -.15<7665>-.25 G 1.031 -<727920617474656d70742e>.15 F 1.031 -<5468697320757375616c6c7920726573756c747320696e2066>6.031 F 1.031 -<617374657220656e>-.1 F -.15<7665>-.4 G 1.031 -<6c6f70652073706c697474696e6720756e6c65737320746865>.15 F .423 -<4d58207265636f726473206172652072656164696c792061>174 549.6 R -.25<7661> --.2 G .423<696c61626c6520696e2061206c6f63616c20444e532063616368652e>.25 -F 2.023 -.8<546f2065>5.423 H .423 -<6e666f72636520696e697469616c20736f7274696e67>.8 F .337 -<6261736564206f6e204d58207265636f72647320736574>174 561.6 R F0 -.25 -<4661>2.838 G<737453706c6974>.25 E F1 .338<746f207a65726f2e>2.838 F .338 -<496620746865206d61696c206973207375626d6974746564206469726563746c792066 -726f6d>5.338 F 1.079 -<74686520636f6d6d616e64206c696e652c207468656e207468652076>174 573.6 R -1.078<616c756520616c736f206c696d69747320746865206e756d626572206f66207072 -6f63657373657320746f2064656c69>-.25 F -.15<7665>-.25 G<72>.15 E .293 -<74686520656e>174 585.6 R -.15<7665>-.4 G .293 -<6c6f7065733b206966206d6f726520656e>.15 F -.15<7665>-.4 G .293 -<6c6f70657320617265206372656174656420746865>.15 F 2.794<7961>-.15 G .294 -<7265206f6e6c792071756575656420757020616e64206d757374206265>-2.794 F -<74616b>174 597.6 Q .692 -<656e2063617265206f6620627920612071756575652072756e2e>-.1 F .691 -<53696e63652074686520646566>5.691 F .691 -<61756c74207375626d697373696f6e206d6574686f642069732076696120534d5450> --.1 F 1.284<286569746865722066726f6d2061204d55>174 609.6 R 3.784<416f> --.4 G 3.784<7276>-3.784 G 1.284<696120746865204d5350292c207468652076> --3.784 F 1.284<616c7565206f66>-.25 F F0 -.25<4661>3.784 G -<737453706c6974>.25 E F1 1.284<69732073656c646f6d207573656420746f>3.784 -F<6c696d697420746865206e756d626572206f662070726f63657373657320746f206465 -6c69>174 621.6 Q -.15<7665>-.25 G 2.5<7274>.15 G<686520656e>-2.5 E -.15 -<7665>-.4 G<6c6f7065732e>.15 E -.15<466f>102 637.8 S 16.88 -<726b456163684a6f62205b595d>.15 F<4966207365742c2064656c69>2.5 E -.15 -<7665>-.25 G 2.5<7265>.15 G<616368206a6f6220746861742069732072756e206672 -6f6d2074686520717565756520696e20612073657061726174652070726f636573732e> --2.5 E -.15<466f>102 654 S<7277>.15 E<61726450>-.1 E<6174683d>-.15 E F2 -<70617468>A F1 1.512<5b4a5d2053657420746865207061746820666f722073656172 -6368696e6720666f7220757365727327202e666f7277>174 666 R 1.511 -<617264208c6c65732e>-.1 F 1.511<54686520646566>6.511 F 1.511 -<61756c742069732099247a2f2e666f72>-.1 F<2d>-.2 E -.1<7761>174 678 S -5.799<72649a2e20536f6d65>.1 F 3.299<736974657320746861742075736520746865 -206175746f6d6f756e746572206d61792070726566657220746f206368616e6765207468 -697320746f>5.799 F<992f76>174 690 Q<61722f666f7277>-.25 E 1.696<6172642f -24759a20746f207365617263682061208c6c652077697468207468652073616d65206e61 -6d6520617320746865207573657220696e20612073797374656d>-.1 F -<6469726563746f7279>174 702 Q 5.487<2e49>-.65 G 2.987<7463>-5.487 G .488 -<616e20616c736f2062652073657420746f20612073657175656e6365206f6620706174 -68732073657061726174656420627920636f6c6f6e733b>-2.987 F F2 -<73656e646d61696c>2.988 E F1 4.218<73746f707320617420746865208c72737420 -8c6c652069742063616e207375636365737366756c6c7920616e6420736166656c79206f -70656e2e>174 714 R -.15<466f>9.217 G 6.717<7265>.15 G<78616d706c652c> --6.867 E 0 Cg EP -%%Page: 70 66 +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-47)195.86 E 2.5(5.1.4.20. gr)117 96 R(eet_pause)-.18 E/F1 10 +/Times-Roman@0 SF(The)157 112.2 Q/F2 10/Times-Italic@0 SF(gr)2.792 E +(eet_pause)-.37 E F1 .292 +(ruleset is used to specify the amount of time to pause before sending) +2.792 F 1.226(the initial SMTP 220 greeting.)132 124.2 R 1.226(If an) +6.226 F 3.726(yt)-.15 G(raf)-3.726 E 1.226(\214c is recei)-.25 F -.15 +(ve)-.25 G 3.726(dd).15 G 1.226(uring that pause, an SMTP 554)-3.726 F +.295(rejection response is gi)132 136.2 R -.15(ve)-.25 G 2.795(ni).15 G +.295(nstead of the 220 greeting and all SMTP commands are rejected) +-2.795 F 1.489(during that connection.)132 148.2 R 1.488 +(This helps protect sites from open proxies and SMTP slammers.)6.489 F +.521(The ruleset should return)132 160.2 R F0($#)3.021 E F1(follo)3.021 +E .522(wed by the number of milliseconds \(thousandths of a sec-)-.25 F +.729(ond\) to pause.)132 172.2 R .729(If the return v)5.729 F .728 +(alue starts with an)-.25 F .728(ything else or is not a number)-.15 F +3.228(,i)-.4 G 3.228(ti)-3.228 G 3.228(ss)-3.228 G(ilently)-3.228 E +3.767(ignored. Note:)132 184.2 R 1.268(this ruleset is not in)3.767 F +-.2(vo)-.4 G -.1(ke).2 G 3.768(d\().1 G 1.268 +(and hence the feature is disabled\) when smtps)-3.768 F 1.224(\(SMTP o) +132 196.2 R -.15(ve)-.15 G 3.724(rS).15 G 1.224(SL\) is used, i.e., the) +-3.724 F F2(s)3.724 E F1 1.224(modi\214er is set for the daemon via) +3.724 F F0(DaemonP)3.724 E(ortOp-)-.2 E(tions)132 208.2 Q F1 2.5(,b)C +(ecause in this case the SSL handshak)-2.5 E 2.5(ei)-.1 G 2.5(sp)-2.5 G +(erformed before the greeting is sent.)-2.5 E F0 2.5(5.1.5. IPC)102 +232.2 R(mailers)2.5 E F1 1.332 +(Some special processing occurs if the ruleset zero resolv)142 248.4 R +1.333(es to an IPC mailer \(that is, a)-.15 F 1.179 +(mailer that has \231[IPC]\232 listed as the P)117 260.4 R 1.179 +(ath in the)-.15 F F0(M)3.679 E F1 1.179(con\214guration line.)3.679 F +1.178(The host name passed)6.178 F 1.178(after \231$@\232 has MX e)117 +272.4 R 1.178(xpansion performed if not deli)-.15 F -.15(ve)-.25 G 1.178 +(ring via a named sock).15 F 1.178(et; this looks the)-.1 F +(name up in DNS to \214nd alternate deli)117 284.4 Q -.15(ve)-.25 G +(ry sites.).15 E .442(The host name can also be pro)142 300.6 R .442 +(vided as a dotted quad or an IPv6 address in square brack-)-.15 F +(ets; for e)117 312.6 Q(xample:)-.15 E([128.32.149.78])157 328.8 Q(or) +117 345 Q([IPv6:2002:c0a8:51d2::23f4])157 361.2 Q +(This causes direct con)117 377.4 Q -.15(ve)-.4 G +(rsion of the numeric v).15 E(alue to an IP host address.)-.25 E .708(T\ +he host name passed in after the \231$@\232 may also be a colon or comm\ +a separated list of)142 393.6 R 3.428(hosts. Each)117 405.6 R .928 +(is separately MX e)3.428 F .928 +(xpanded and the results are concatenated to mak)-.15 F 3.427(e\()-.1 G +(essentially\))-3.427 E 1.281(one long MX list.)117 417.6 R 1.281 +(Hosts separated by a comma ha)6.281 F 1.581 -.15(ve t)-.2 H 1.282 +(he same MX preference, and for each).15 F 1.136 +(colon separated host the MX preference is increased.)117 429.6 R 1.136 +(The intent here is to create \231f)6.136 F(ak)-.1 E 1.136(e\232 MX)-.1 +F(records that are not published in DNS for pri)117 441.6 Q -.25(va)-.25 +G(te internal netw).25 E(orks.)-.1 E +(As a \214nal special case, the host name can be passed in as a te)142 +457.8 Q(xt string in square brack)-.15 E(ets:)-.1 E([ucb)157 474 Q -.25 +(va)-.15 G(x.berk).25 E(ele)-.1 E -.65(y.)-.15 G(edu]).65 E .312 +(This form a)117 490.2 R -.2(vo)-.2 G .312(ids the MX mapping.).2 F F0 +(N.B.:)5.312 E F2 .313(This is intended only for situations wher)2.812 F +2.813(ey)-.37 G .313(ou have a)-2.813 F .338(network \214r)117 502.2 R +-.15(ew)-.37 G .337(all or other host that will do special pr).15 F .337 +(ocessing for all your mail, so that your MX)-.45 F -.37(re)117 514.2 S +(cor).37 E 3.958(dp)-.37 G 1.458(oints to a gate)-3.958 F 1.458(way mac) +-.15 F 1.458(hine; this mac)-.15 F 1.459(hine could then do dir)-.15 F +1.459(ect delivery to mac)-.37 F(hines)-.15 E .09 +(within your local domain.)117 526.2 R .09(Use of this featur)5.09 F +2.59(ed)-.37 G(ir)-2.59 E .09 +(ectly violates RFC 1123 section 5.3.5: it should)-.37 F +(not be used lightly)117 538.2 Q(.)-.55 E F0 2.5(5.2. D)87 562.2 R 2.5 +<8a44>2.5 G(e\214ne Macr)-2.5 E(o)-.18 E F1 .88 +(Macros are named with a single character or with a w)127 578.4 R .881 +(ord in {braces}.)-.1 F .881(The names `)5.881 F(`x')-.74 E 3.381('a) +-.74 G(nd)-3.381 E -.74(``)102 590.4 S({x}').74 E 4.35('d)-.74 G 1.85 +(enote the same macro for e)-4.35 F -.15(ve)-.25 G 1.849 +(ry single character `).15 F(`x')-.74 E 4.349('. Single)-.74 F 1.849 +(character names may be)4.349 F .172 +(selected from the entire ASCII set, b)102 602.4 R .172(ut user)-.2 F +.173(-de\214ned macros should be selected from the set of upper)-.2 F +.032(case letters only)102 614.4 R 5.032(.L)-.65 G -.25(ow)-5.032 G .031 +(er case letters and special symbols are used internally).25 F 5.031(.L) +-.65 G .031(ong names be)-5.031 F(ginning)-.15 E .326(with a lo)102 +626.4 R .326(wer case letter or a punctuation character are reserv)-.25 +F .327(ed for use by sendmail, so user)-.15 F(-de\214ned)-.2 E +(long macro names should be)102 638.4 Q(gin with an upper case letter) +-.15 E(.)-.55 E(The syntax for macro de\214nitions is:)127 654.6 Q F0(D) +142 670.8 Q F2 1.666(xv)C(al)-1.666 E F1(where)102 687 Q F2(x)3.069 E F1 +.569(is the name of the macro \(which may be a single character or a w) +3.069 F .568(ord in braces\) and)-.1 F F2(val)3.068 E F1(is)3.068 E .478 +(the v)102 699 R .478(alue it should ha)-.25 F -.15(ve)-.2 G 5.478(.T) +.15 G .478(here should be no spaces gi)-5.478 F -.15(ve)-.25 G 2.978(nt) +.15 G .479(hat do not actually belong in the macro)-2.978 F -.25(va)102 +711 S(lue.).25 E 0 Cg EP +%%Page: 48 44 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d37302053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF<992f76>174 96 Q<61722f666f7277>-.25 E -<6172642f24753a247a2f2e666f7277>-.1 E .681 -<6172649a2077696c6c20736561726368208c72737420696e202f76>-.1 F -<61722f666f7277>-.25 E<6172642f>-.1 E/F2 10/Times-Italic@0 SF -<757365726e616d65>A F1 .682<616e64207468656e>3.182 F<696e>174 108 Q F2 -<7e757365726e616d65>2.5 E F1<2f2e666f7277>A<617264202862>-.1 E -<7574206f6e6c7920696620746865208c727374208c6c6520646f6573206e6f742065> --.2 E<78697374292e>-.15 E<48656c6f4e616d653d>102 124.2 Q F2<6e616d65>A -F1<5b6e6f2073686f7274206e616d655d2053657420746865206e616d6520746f206265 -207573656420666f722048454c4f2f45484c4f2028696e7374656164206f6620246a292e> -1.38 E<486f6c64457870656e7369>102 140.4 Q 8.54 -.15<7665205b>-.25 H -1.394<635d20496620616e206f7574676f696e67206d61696c6572206973206d61726b> -.15 F 1.393<6564206173206265696e672065>-.1 F<7870656e7369>-.15 E -.15 -<7665>-.25 G 3.893<2c64>.15 G<6f6e27>-3.893 E 3.893<7463>-.18 G 1.393 -<6f6e6e65637420696d6d6564692d>-3.893 F<6174656c79>174 152.4 Q<2e>-.65 E -<486f73747346696c653d>102 168.6 Q F2<70617468>A F1 .026<5b6e6f2073686f72 -74206e616d655d20546865207061746820746f2074686520686f73747320646174616261 -73652c206e6f726d616c6c7920992f6574632f686f7374739a2e>10.24 F .026 -<54686973206f7074696f6e>5.026 F 1.417<6973206f6e6c7920636f6e73756c746564 -207768656e2073656e646d61696c2069732063616e6f6e696679696e6720616464726573 -7365732c20616e64207468656e206f6e6c79207768656e>174 180.6 R .783<998c6c65 -739a20697320696e207468652099686f7374739a20736572766963652073776974636820 -656e747279>174 192.6 R 5.784<2e49>-.65 G 3.284<6e70>-5.784 G -<6172746963756c6172>-3.284 E 3.284<2c74>-.4 G .784<686973208c6c65206973> --3.284 F F2<6e65>3.284 E<766572>-.15 E F1<75736564>3.284 E .202<7768656e -206c6f6f6b696e6720757020686f7374206164647265737365733b207468617420697320 -756e6465722074686520636f6e74726f6c206f66207468652073797374656d>174 204.6 -R F2 -.1<6765>2.702 G<74686f737462792d>.1 E<6e616d65>174 216.6 Q F1 -<28332920726f7574696e652e>A<486f73745374617475734469726563746f72793d>102 -232.8 Q F2<70617468>A F1 .43<5b6e6f2073686f7274206e616d655d20546865206c -6f636174696f6e206f6620746865206c6f6e67207465726d20686f737420737461747573 -20696e666f726d6174696f6e2e>174 244.8 R .43<5768656e207365742c>5.43 F -1.39<696e666f726d6174696f6e2061626f75742074686520737461747573206f662068 -6f7374732028652e672e2c20686f737420646f>174 256.8 R 1.39 -<776e206f72206e6f7420616363657074696e6720636f6e6e65632d>-.25 F .162 -<74696f6e73292077696c6c20626520736861726564206265747765656e20616c6c>174 -268.8 R F2<73656e646d61696c>2.663 E F1 .163 -<70726f6365737365733b206e6f726d616c6c79>2.663 F 2.663<2c74>-.65 G .163 -<68697320696e666f726d6174696f6e206973>-2.663 F .123<6f6e6c792068656c6420 -77697468696e20612073696e676c652071756575652072756e2e>174 280.8 R .123<54 -686973206f7074696f6e207265717569726573206120636f6e6e656374696f6e20636163 -6865206f66206174>5.123 F .688<6c65617374203120746f2066756e6374696f6e2e> -174 292.8 R .688<496620746865206f7074696f6e206265>5.688 F .688<67696e73 -20776974682061206c656164696e6720602f272c20697420697320616e206162736f6c75 -746520706174682d>-.15 F .617 -<6e616d653b206f74686572776973652c2069742069732072656c617469>174 304.8 R -.917 -.15<76652074>-.25 H 3.117<6f74>.15 G .617 -<6865206d61696c207175657565206469726563746f7279>-3.117 F 5.617<2e41>-.65 -G .617<7375676765737465642076>-2.5 F .616<616c756520666f72>-.25 F .558< -7369746573206465736972696e672070657273697374656e7420686f7374207374617475 -7320697320992e686f7374737461749a2028692e652e2c2061207375626469726563746f -7279206f6620746865207175657565>174 316.8 R<6469726563746f7279292e>174 -328.8 Q 24.51<49676e6f7265446f7473205b695d>102 345 R 1.172 -<49676e6f726520646f747320696e20696e636f6d696e67206d657373616765732e> -3.672 F 1.172<5468697320697320616c>6.172 F -.1<7761>-.1 G 1.171 -<79732064697361626c65642028746861742069732c20646f747320617265>.1 F<616c> -174 357 Q -.1<7761>-.1 G<797320616363657074656429207768656e207265616469 -6e6720534d5450206d61696c2e>.1 E<496e7075744d61696c46696c746572733d>102 -373.2 Q F2<6e616d65>A<2c6e616d65>-.1 E<2c2e2e2e>-.1 E F1 3.621<4163>174 -385.2 S 1.122<6f6d6d6120736570617261746564206c697374206f66208c6c74657273 -2077686963682064657465726d696e6573207768696368208c6c74657273202873656520 -746865202258208a>-3.621 F 1.768<4d61696c2046696c74657220284d696c74657229 -2044658c6e6974696f6e73222073656374696f6e2920616e642074686520696e>174 -397.2 R -.2<766f>-.4 G 1.768 -<636174696f6e2073657175656e63652061726520636f6e2d>.2 F .367 -<74616374656420666f7220696e636f6d696e6720534d5450206d657373616765732e> -174 409.2 R .367<4966206e6f6e6520617265207365742c206e6f208c6c7465727320 -77696c6c20626520636f6e7461637465642e>5.367 F<4c44>102 425.4 Q -<4150446566>-.4 E<61756c74537065633d>-.1 E F2<73706563>A F1 2.058 -<5b6e6f2073686f7274206e616d655d2053657473206120646566>174 437.4 R 2.057 -<61756c74206d61702073706563698c636174696f6e20666f72204c44>-.1 F 2.057 -<4150206d6170732e>-.4 F 2.057<5468652076>7.057 F<616c7565>-.25 E .673 -<73686f756c64206f6e6c7920636f6e7461696e204c44>174 449.4 R .674<41502073 -706563698c632073657474696e6773207375636820617320992d6820686f7374202d7020 -706f7274202d642062696e64444e9a2e>-.4 F .501<5468652073657474696e67732077 -696c6c206265207573656420666f7220616c6c204c44>174 461.4 R .501 -<4150206d61707320756e6c6573732074686520696e6469>-.4 F .5 -<76696475616c206d61702073706563698c63612d>-.25 F 1.5<74696f6e206f>174 -473.4 R -.15<7665>-.15 G 1.5<72726964657320612073657474696e672e>.15 F -1.5 -<54686973206f7074696f6e2073686f756c6420626520736574206265666f726520616e> -6.5 F 4<794c>-.15 G -.4<4441>-4 G 4<506d>.4 G 1.5<61707320617265>-4 F -<64658c6e65642e>174 485.4 Q<4c6f674c65>102 501.6 Q -.15<7665>-.25 G -<6c3d>.15 E F2<6e>A F1<5b4c5d2053657420746865206c6f67206c65>22.88 E -.15 -<7665>-.25 G 2.5<6c74>.15 G<6f>-2.5 E F2<6e>2.5 E F1 5<2e44>C<6566>-5 E -<61756c747320746f20392e>-.1 E<4d>102 517.8 Q F2 1.666<7876>C<616c7565> --1.666 E F1 .255<5b6e6f206c6f6e672076>35.344 F .255 -<657273696f6e5d2053657420746865206d6163726f>-.15 F F2<78>2.755 E F1 -<746f>2.755 E F2<76616c7565>2.755 E F1 5.255<2e54>C .255<68697320697320 -696e74656e646564206f6e6c7920666f72207573652066726f6d20746865>-5.255 F -<636f6d6d616e64206c696e652e>174 529.8 Q<546865>5 E F02.5 E F1 -<8d6167206973207072656665727265642e>2.5 E -1.04 -<4d61696c626f784461746162617365205b6e6f>102 546 R 2.967 -<73686f7274206e616d655d2054>5.467 F 2.967<797065206f66206c6f6f6b75702074 -6f208c6e6420696e666f726d6174696f6e2061626f7574206c6f63616c206d61696c626f -78>-.8 F<65732c>-.15 E<646566>174 558 Q .145<61756c747320746f2060>-.1 F -<60707727>-.74 E 2.645<2777>-.74 G .145<686963682075736573>-2.645 F F2 --.1<6765>2.645 G<7470776e616d>.1 E F1 5.145<2e4f>C .145<7468657220747970 -65732063616e20626520696e74726f647563656420627920616464696e67>-5.145 F<74 -68656d20746f2074686520736f7572636520636f64652c20736565206c6962736d2f6d62 -6462>174 570 Q<2e6320666f722064657461696c732e>-.4 E 33.94 -<5573654d5350205b6e6f>102 586.2 R .163<73686f7274206e616d655d2055736520 -6173206d61696c207375626d697373696f6e2070726f6772616d2c20692e652e2c20616c -6c6f>2.663 F 2.664<7767>-.25 G .164 -<726f7570207772697461626c65207175657565>-2.664 F .954<8c6c65732069662074 -68652067726f7570206973207468652073616d652061732074686174206f662061207365 -742d67726f75702d49442073656e646d61696c2062696e617279>174 598.2 R 5.954 -<2e53>-.65 G .954<656520746865>-5.954 F<8c6c65>174 610.2 Q F0 -<73656e646d61696c2f5345435552495459>2.5 E F1 -<696e207468652064697374726962>2.5 E<7574696f6e2074617262616c6c2e>-.2 E -11.17<4d617463684745434f53205b475d>102 626.4 R<416c6c6f>3.333 E 3.333 -<7766>-.25 G .833 -<757a7a79206d61746368696e67206f6e20746865204745434f53208c656c642e>-3.333 -F .834 -<49662074686973208d6167206973207365742c20616e642074686520757375616c> -5.833 F .868<75736572206e616d65206c6f6f6b7570732066>174 638.4 R .867<61 -696c2028746861742069732c207468657265206973206e6f20616c696173207769746820 -74686973206e616d6520616e642061>-.1 F F2 -.1<6765>3.367 G<7470776e616d>.1 -E F1 -.1<6661>174 650.4 S 1.155 -<696c73292c2073657175656e7469616c6c792073656172636820746865207061737377> -.1 F 1.155<6f7264208c6c6520666f722061206d61746368696e6720656e7472792069 -6e20746865204745434f53>-.1 F 3.696<8c656c642e2054686973>174 662.4 R -1.196<616c736f2072657175697265732074686174204d41>3.696 F 1.196<54434847 -45434f53206265207475726e6564206f6e20647572696e6720636f6d70696c6174696f6e -2e>-1.11 F -<54686973206f7074696f6e206973206e6f74207265636f6d6d656e6465642e>174 -674.4 Q<4d6178416c696173526563757273696f6e3d>102 690.6 Q F2<4e>A F1<5b6e -6f2073686f7274206e616d655d20546865206d6178696d756d206465707468206f662061 -6c69617320726563757273696f6e2028646566>174 702.6 Q<61756c743a203130292e> --.1 E 0 Cg EP -%%Page: 71 67 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3731>195.86 E -/F1 10/Times-Roman@0 SF<4d61784461656d6f6e4368696c6472656e3d>102 96 Q/F2 -10/Times-Italic@0 SF<4e>A F1 .539 -<5b6e6f2073686f7274206e616d655d204966207365742c>174 108 R F2 -<73656e646d61696c>3.039 E F1 .539<77696c6c2072656675736520636f6e6e656374 -696f6e73207768656e20697420686173206d6f7265207468616e>3.039 F F2<4e>3.04 -E F1 .886<6368696c6472656e2070726f63657373696e6720696e636f6d696e67206d61 -696c206f72206175746f6d617469632071756575652072756e732e>174 120 R .885 -<5468697320646f6573206e6f74206c696d6974>5.885 F .812 -<746865206e756d626572206f66206f7574676f696e6720636f6e6e656374696f6e732e> -174 132 R .812<49662074686520646566>5.812 F<61756c74>-.1 E F0<44656c69> -3.313 E -.1<7665>-.1 G<72794d6f6465>.1 E F1<286261636b67726f756e6429> -3.313 E 3.135<697320757365642c207468656e>174 144 R F2<73656e646d61696c> -5.635 E F1 3.134<6d61792063726561746520616e20616c6d6f737420756e6c696d69 -746564206e756d626572206f66206368696c6472656e>5.635 F .294<28646570656e64 -696e67206f6e20746865206e756d626572206f66207472616e73616374696f6e7320616e -64207468652072656c617469>174 156 R .594 -.15<766520657865>-.25 H .295 -<637574696f6e2074696d6573206f66206d61696c>.15 F 1.236 -<72656365697074696f6e20616e64206d61696c2064656c69>174 168 R -.15<7665> --.25 G 3.736<7279292e204966>.15 F 1.236<746865206c696d69742073686f756c64 -20626520656e666f726365642c207468656e2061>3.736 F F0<44656c69>3.735 E -.1 -<7665>-.1 G<72792d>.1 E<4d6f6465>174 180 Q F1 1.483 -<6f74686572207468616e206261636b67726f756e64206d75737420626520757365642e> -3.983 F 1.484<4966206e6f74207365742c207468657265206973206e6f206c696d6974 -20746f20746865>6.483 F<6e756d626572206f66206368696c6472656e202d2d207468 -61742069732c207468652073797374656d206c6f61642061>174 192 Q -.15<7665>-.2 -G<7261676520636f6e74726f6c7320746869732e>.15 E -<4d6178486561646572734c656e6774683d>102 208.2 Q F2<4e>A F1 .17<5b6e6f20 -73686f7274206e616d655d20546865206d6178696d756d206c656e677468206f66207468 -652073756d206f6620616c6c20686561646572732e>174 220.2 R .17 -<546869732063616e2062652075736564>5.17 F<746f20707265>174 232.2 Q -.15 -<7665>-.25 G -<6e7420612064656e69616c206f6620736572766963652061747461636b2e>.15 E -<54686520646566>5 E<61756c74206973206e6f206c696d69742e>-.1 E -<4d6178486f70436f756e743d>102 248.4 Q F2<4e>A F1 1.237 -<5b685d20546865206d6178696d756d20686f7020636f756e742e>174 260.4 R 1.237 -<4d657373616765732074686174206861>6.237 F 1.538 -.15<76652062>-.2 H -1.238<65656e2070726f636573736564206d6f7265207468616e>.15 F F2<4e>3.738 E -F1<74696d65732061726520617373756d656420746f20626520696e2061206c6f6f7020 -616e64206172652072656a65637465642e>174 272.4 Q<446566>5 E -<61756c747320746f2032352e>-.1 E<4d61784d65737361676553697a653d>102 288.6 -Q F2<4e>A F1 2.563<5b6e6f2073686f7274206e616d655d2053706563696679207468 -65206d6178696d756d206d6573736167652073697a6520746f20626520616476>174 -300.6 R 2.562<6572746973656420696e20746865>-.15 F 1.022 -<45534d54502045484c4f20726573706f6e73652e>174 312.6 R 1.022 -<4d65737361676573206c6172>6.022 F 1.022 -<676572207468616e20746869732077696c6c2062652072656a65637465642e>-.18 F -1.023<49662073657420746f2061>6.023 F -.25<7661>174 324.6 S .834 -<6c75652067726561746572207468616e207a65726f2c20746861742076>.25 F .834< -616c75652077696c6c206265206c697374656420696e207468652053495a452072657370 -6f6e73652c206f7468657277697365>-.25 F<53495a4520697320616476>174 336.6 Q -<6572746973656420696e207468652045534d54502045484c4f20726573706f6e736520 -776974686f7574206120706172616d65746572>-.15 E<2e>-.55 E -<4d61784d696d654865616465724c656e6774683d>102 352.8 Q F2<4e5b2f4d5d>A F1 -.343<5b6e6f2073686f7274206e616d655d205365747320746865206d6178696d756d20 -6c656e677468206f66206365727461696e204d494d4520686561646572208c656c642076> -174 364.8 R .344<616c75657320746f>-.25 F F2<4e>174 376.8 Q F1 3.619 -<636861726163746572732e205468657365>3.619 F 1.118<4d494d4520686561646572 -208c656c6473206172652064657465726d696e6564206279206265696e672061206d656d -626572206f66>3.619 F .895<636c617373207b636865636b4d494d4554>174 388.8 R --.15<6578>-.7 G .895<74486561646572737d2c2077686963682063757272656e746c -7920636f6e7461696e73206f6e6c79207468652068656164657220436f6e2d>.15 F -2.559<74656e742d4465736372697074696f6e2e2046>174 400.8 R .059 -<6f7220736f6d65206f6620746865736520686561646572732077686963682074616b> --.15 F 2.559<6570>-.1 G .059 -<6172616d65746572732c20746865206d6178696d756d>-2.559 F .101 -<6c656e677468206f66206561636820706172616d657465722069732073657420746f> -174 412.8 R F2<4d>2.602 E F1 .102<69662073706563698c65642e>2.602 F<4966> -5.102 E F2<2f4d>2.602 E F1 .102 -<6973206e6f742073706563698c65642c206f6e652068616c66206f66>2.602 F F2<4e> -174 424.8 Q F1 1.776<77696c6c20626520757365642e>4.276 F 1.776 -<427920646566>6.776 F 1.775<61756c742c2074686573652076>-.1 F 1.775 -<616c75657320617265203230343820616e6420313032342c207265737065637469>-.25 -F -.15<7665>-.25 G<6c79>.15 E 6.775<2e54>-.65 G<6f>-7.575 E<616c6c6f>174 -436.8 Q 2.5<7761>-.25 G .3 -.15<6e79206c>-2.5 H<656e6774682c20612076>.15 -E<616c7565206f6620302063616e2062652073706563698c65642e>-.25 E -<4d61784e4f4f50436f6d6d616e64733d>102 453 Q F2<4e>A F1<4f76>174 465 Q -2.103<6572726964652074686520646566>-.15 F 2.103<61756c74206f66>-.1 F F0 -<4d41584e4f4f50434f4d4d414e4453>4.603 E F1 2.104 -<666f7220746865206e756d626572206f66>4.603 F F2<7573656c657373>4.604 E F1 -<636f6d6d616e64732c207365652053656374696f6e20224d65617375726573206167> -174 477 Q -<61696e73742044656e69616c206f6620536572766963652041747461636b73222e>-.05 -E<4d617851756575654368696c6472656e3d>102 493.2 Q F2<4e>A F1 .304<5b6e6f -2073686f7274206e616d655d205768656e207365742c2074686973206c696d6974732074 -6865206e756d626572206f6620636f6e63757272656e742071756575652072756e6e6572 -2070726f2d>174 505.2 R .201<63657373657320746f>174 517.2 R F2<4e2e>2.701 -E F1 .202<546869732068656c707320746f20636f6e74726f6c2074686520616d6f756e -74206f662073797374656d207265736f75726365732075736564207768656e2070726f2d> -5.201 F 1.255<63657373696e67207468652071756575652e>174 529.2 R 1.255<57 -68656e20746865726520617265206d756c7469706c652071756575652067726f75707320 -64658c6e656420616e642074686520746f74616c>6.255 F 1.2<6e756d626572206f66 -2071756575652072756e6e65727320666f722074686573652071756575652067726f7570 -732077>174 541.2 R 1.2<6f756c642065>-.1 F<7863656564>-.15 E F2 -<4d617851756575654368696c2d>3.7 E<6472>174 553.2 Q<656e>-.37 E F1 .472< -7468656e207468652071756575652067726f7570732077696c6c206e6f7420616c6c2072 -756e20636f6e63757272656e746c79>2.973 F 2.972<2e54>-.65 G .472 -<6861742069732c20736f6d6520706f7274696f6e206f66>-2.972 F .871<7468652071 -756575652067726f7570732077696c6c2072756e20636f6e63757272656e746c79207375 -63682074686174>174 565.2 R F2<4d617851756575654368696c6472>3.371 E<656e> --.37 E F1 .871<77696c6c206e6f74206265>3.371 F -.15<6578>174 577.2 S -1.893<6365656465642c207768696c65207468652072656d61696e696e67207175657565 -2067726f7570732077696c6c2062652072756e206c617465722028696e20726f756e6420 -726f62696e>.15 F 1.3<6f72646572292e2053656520616c736f>174 589.2 R F2 -<4d617852756e6e6572>3.8 E<7350>-.1 E<65725175657565>-.8 E F1 1.3 -<616e64207468652073656374696f6e>3.8 F F0 1.3<5175657565204772>3.8 F 1.3 -<6f7570204465636c6172612d>-.18 F<74696f6e>174 601.2 Q F1 5.757<2e4e>C -<6f746963653a>-5.757 E F2<73656e646d61696c>3.257 E F1 .757 -<646f6573206e6f7420636f756e7420696e6469>3.257 F .757 -<76696475616c2071756575652072756e6e6572732c2062>-.25 F .756 -<7574206f6e6c792073657473206f66>-.2 F 1.451 -<70726f636573736573207468617420616374206f6e20612077>174 613.2 R 3.951 -<6f726b67726f75702e2048656e6365>-.1 F 1.451 -<7468652061637475616c206e756d626572206f662071756575652072756e6e657273> -3.951 F 1.414<6d6179206265206c6f>174 625.2 R 1.414 -<776572207468616e20746865206c696d697420696d706f736564206279>-.25 F F2 -<4d617851756575654368696c6472>3.914 E<656e>-.37 E F1 6.414<2e54>C 1.414 -<6869732064697363726570616e63>-6.414 F<79>-.15 E 1.423 -<63616e206265206c6172>174 637.2 R 1.424 -<676520696620736f6d652071756575652072756e6e657273206861>-.18 F 1.724 --.15<76652074>-.2 H 3.924<6f77>.15 G 1.424<61697420666f72206120736c6f> --4.024 F 3.924<7773>-.25 G<657276>-3.924 E 1.424 -<657220616e642069662073686f7274>-.15 F<696e74657276>174 649.2 Q -<616c732061726520757365642e>-.25 E<4d6178517565756552756e53697a653d>102 -665.4 Q F2<4e>A F1 .677<5b6e6f2073686f7274206e616d655d20546865206d617869 -6d756d206e756d626572206f66206a6f627320746861742077696c6c2062652070726f63 -657373656420696e20612073696e676c65>174 677.4 R .501 -<71756575652072756e2e>174 689.4 R .501<4966206e6f74207365742c2074686572 -65206973206e6f206c696d6974206f6e207468652073697a652e>5.501 F .501 -<496620796f75206861>5.501 F .802 -.15<7665207665>-.2 H .502 -<7279206c6172>.15 F .502<676520717565756573>-.18 F .445<6f7220612076>174 -701.4 R .445<6572792073686f72742071756575652072756e20696e74657276>-.15 F -.445<616c207468697320636f756c6420626520756e737461626c652e>-.25 F<486f> -5.445 E<7765>-.25 E -.15<7665>-.25 G 1.245 -.4<722c2073>.15 H .445 -<696e636520746865208c727374>.4 F F2<4e>174 713.4 Q F1 1.115<6a6f62732069 -6e207175657565206469726563746f7279206f72646572206172652072756e2028726174 -686572207468616e20746865>3.615 F F2<4e>3.615 E F1 1.115 -<68696768657374207072696f72697479206a6f627329>3.615 F .136<746869732073 -686f756c6420626520736574206173206869676820617320706f737369626c6520746f20 -61>174 725.4 R -.2<766f>-.2 G .136 -<696420996c6f73696e679a206a6f627320746861742068617070656e20746f2066>.2 F -.136<616c6c206c617465>-.1 F 0 Cg EP -%%Page: 72 68 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d37322053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF 2.325 -<696e20746865207175657565206469726563746f7279>174 96 R 7.326<2e4e>-.65 G -2.326<6f74653a2074686973206f7074696f6e20616c736f207265737472696374732074 -6865206e756d626572206f6620656e7472696573>-7.326 F 1.443 -<7072696e746564206279>174 108 R/F2 10/Times-Italic@0 SF<6d61696c71>3.943 -E F1 6.443<2e54>C 1.443<6861742069732c206966>-6.443 F F2 -<4d6178517565756552756e53697a65>3.943 E F1 1.443 -<69732073657420746f20612076>3.943 F<616c7565>-.25 E F0<4e>3.943 E F1 -<6c6172>3.942 E 1.442<676572207468616e>-.18 F -<7a65726f2c207468656e206f6e6c79>174 120 Q F0<4e>2.5 E F1<656e7472696573 -20617265207072696e746564207065722071756575652067726f75702e>2.5 E -<4d6178526563697069656e74735065724d6573736167653d>102 136.2 Q F2<4e>A F1 -1.672<5b6e6f2073686f7274206e616d655d20546865206d6178696d756d206e756d6265 -72206f6620726563697069656e747320746861742077696c6c2062652061636365707465 -6420706572>174 148.2 R 1.459 -<6d65737361676520696e20616e20534d5450207472616e73616374696f6e2e>174 -160.2 R 1.458<4e6f74653a2073657474696e67207468697320746f6f206c6f>6.458 F -3.958<7763>-.25 G 1.458<616e20696e746572666572652077697468>-3.958 F .048 -<73656e64696e67206d61696c2066726f6d204d55>174 172.2 R .048<417320746861 -742075736520534d545020666f7220696e697469616c207375626d697373696f6e2e>-.4 -F .049<4966206e6f74207365742c207468657265206973>5.049 F<6e6f206c696d6974 -206f6e20746865206e756d626572206f6620726563697069656e74732070657220656e> -174 184.2 Q -.15<7665>-.4 G<6c6f70652e>.15 E -<4d617852756e6e65727350657251756575653d>102 200.4 Q F2<4e>A F1 2.004 -<5b6e6f2073686f7274206e616d655d205468697320736574732074686520646566>174 -212.4 R 2.003<61756c74206d6178696d756d206e756d626572206f6620717565756520 -72756e6e65727320666f72>-.1 F 1.161<71756575652067726f7570732e>174 224.4 -R 1.161<557020746f>6.161 F F2<4e>3.661 E F1 1.161 -<71756575652072756e6e6572732077696c6c2077>3.661 F 1.162 -<6f726b20696e20706172616c6c656c206f6e20612071756575652067726f757027>-.1 -F<73>-.55 E 3.466<6d657373616765732e2054686973>174 236.4 R .965<69732075 -736566756c207768657265207468652070726f63657373696e67206f662061206d657373 -61676520696e20746865207175657565206d69676874>3.466 F .945<64656c61792074 -68652070726f63657373696e67206f662073756273657175656e74206d65737361676573 -2e205375636820612064656c6179206d61792062652074686520726573756c74206f66> -174 248.4 R .116<6e6f6e2d6572726f6e656f757320736974756174696f6e73207375 -63682061732061206c6f>174 260.4 R 2.616<7762>-.25 G .116 -<616e64776964746820636f6e6e656374696f6e2e>-2.616 F .116 -<4d6179206265206f>5.116 F -.15<7665>-.15 G<7272696464656e>.15 E .644<6f -6e2061207065722071756575652067726f75702062617369732062792073657474696e67 -20746865>174 272.4 R F2<52756e6e6572>3.144 E<73>-.1 E F1 .645 -<6f7074696f6e3b20736565207468652073656374696f6e>3.144 F F0<5175657565> -3.145 E<4772>174 284.4 Q<6f7570204465636c61726174696f6e>-.18 E F1 5 -<2e54>C<686520646566>-5 E -<61756c742069732031207768656e206e6f74207365742e>-.1 E<4d6554>102 300.6 Q -40.86<6f6f205b6d5d>-.8 F .367<53656e6420746f206d6520746f6f2c2065>2.867 F --.15<7665>-.25 G 2.867<6e69>.15 G 2.867<664961>-2.867 G 2.867<6d69> --2.867 G 2.867<6e61>-2.867 G 2.867<6e61>-2.867 G .367<6c6961732065> --2.867 F 2.867<7870616e73696f6e2e2054686973>-.15 F .366 -<6f7074696f6e2069732064657072656361746564>2.867 F -<616e642077696c6c2062652072656d6f>174 312.6 Q -.15<7665>-.15 G 2.5<6466> -.15 G<726f6d2061206675747572652076>-2.5 E<657273696f6e2e>-.15 E 44.5 -<4d696c746572205b6e6f>102 328.8 R .777 -<73686f7274206e616d655d2054686973206f7074696f6e20686173207365>3.277 F --.15<7665>-.25 G .778<72616c2073756228737562296f7074696f6e732e>.15 F -.778<546865206e616d6573206f6620746865207375622d>5.778 F 1.135 -<6f7074696f6e73206172652073657061726174656420627920646f74732e>174 340.8 -R 1.135<417420746865208c727374206c65>6.135 F -.15<7665>-.25 G 3.634 -<6c74>.15 G 1.134<686520666f6c6c6f>-3.634 F 1.134 -<77696e67206f7074696f6e73206172652061>-.25 F -.25<7661>-.2 G<696c2d>.25 -E<61626c653a>174 352.8 Q<4c6f674c65>214 369 Q -.15<7665>-.25 G 15<6c4c> -.15 G<6f67206c65>-15 E -.15<7665>-.25 G 2.5<6c66>.15 G -<6f7220696e707574206d61696c208c6c74657220616374696f6e732c20646566>-2.5 E -<61756c747320746f204c6f674c65>-.1 E -.15<7665>-.25 G<6c2e>.15 E 22.1 -<6d6163726f732053706563698c6573>214 381 R<6c697374206f66206d6163726f2074 -6f207472616e736d697420746f208c6c746572732e>2.5 E -<536565206c6973742062656c6f>267.48 393 Q -.65<772e>-.25 G 2.458 -<5468652060>174 409.2 R<606d6163726f7327>-.74 E 4.958<276f>-.74 G 2.458 -<7074696f6e206861732074686520666f6c6c6f>-4.958 F 2.458<77696e6720737562 -6f7074696f6e73207768696368207370656369667920746865206c697374206f66>-.25 -F<6d6163726f20746f207472616e736d697420746f206d696c7465727320616674657220 -61206365727461696e2065>174 421.2 Q -.15<7665>-.25 G -<6e74206f636375727265642e>.15 E 14.88<636f6e6e656374204166746572>214 -437.4 R<73657373696f6e20636f6e6e656374696f6e207374617274>2.5 E 28.76 -<68656c6f204166746572>214 449.4 R<45484c4f2f48454c4f20636f6d6d616e64>2.5 -E<656e>214 461.4 Q 12.5<7666726f6d204166746572>-.4 F -<4d41494c2046726f6d20636f6d6d616e64>2.5 E<656e>214 473.4 Q 16.39 -<7672637074204166746572>-.4 F<524350542054>2.5 E 2.5<6f63>-.8 G -<6f6d6d616e64>-2.5 E 29.32<64617461204166746572>214 485.4 R -.4<4441>2.5 -G 1.86 -.93<54412063>-.71 H<6f6d6d616e642e>.93 E 31.54 -<656f68204166746572>214 497.4 R -.4<4441>2.5 G 1.86 -.93<54412063>-.71 H -<6f6d6d616e6420616e6420686561646572>.93 E 28.76<656f6d204166746572>214 -509.4 R -.4<4441>2.5 G 1.86 -.93<54412063>-.71 H -<6f6d6d616e6420616e64207465726d696e6174696e672060>.93 E<602e>-.74 E -.74 -<2727>-.7 G<427920646566>174 525.6 Q -<61756c7420746865206c69737473206f66206d6163726f732061726520656d707479> --.1 E 5<2e45>-.65 G<78616d706c653a>-5 E 2.5<4f4d>214 541.8 S<696c746572> --2.5 E<2e4c6f674c65>-.55 E -.15<7665>-.25 G<6c3d3132>.15 E 2.5<4f4d>214 -553.8 S<696c746572>-2.5 E -<2e6d6163726f732e636f6e6e6563743d6a2c205f2c207b6461656d6f6e5f6e616d657d> --.55 E<4d696e46726565426c6f636b733d>102 574.2 Q F2<4e>A F1 1.539 -<5b625d20496e73697374206f6e206174206c65617374>174 586.2 R F2<4e>4.039 E -F1 1.538<626c6f636b732066726565206f6e20746865208c6c6573797374656d207468 -617420686f6c647320746865207175657565208c6c6573>4.039 F .845 -<6265666f726520616363657074696e6720656d61696c2076696120534d5450>174 -598.2 R 5.846<2e49>-1.11 G 3.346<6674>-5.846 G .846 -<6865726520697320696e737566>-3.346 F .846<8c6369656e74207370616365>-.25 -F F2<73656e646d61696c>3.346 E F1<6769>3.346 E -.15<7665>-.25 G 3.346 -<7361>.15 G -<34353220726573706f6e736520746f20746865204d41494c20636f6d6d616e642e>174 -610.2 Q<5468697320696e>5 E -<7669746573207468652073656e64657220746f20747279206167>-.4 E -<61696e206c61746572>-.05 E<2e>-.55 E<4d617851756575654167653d>102 626.4 -Q F2 -.1<616765>C F1 .346<5b6e6f2073686f7274206e616d655d2049662074686973 -2069732073657420746f20612076>174 638.4 R .345<616c7565206772656174657220 -7468616e207a65726f2c20656e747269657320696e207468652071756575652077696c6c> --.25 F 1.094<6265207265747269656420647572696e6720612071756575652072756e -206f6e6c792069662074686520696e6469>174 650.4 R 1.095 -<76696475616c2072657472792074696d6520686173206265656e2072656163686564> --.25 F 1.476 -<776869636820697320646f75626c656420666f72206561636820617474656d70742e> -174 662.4 R 1.476<546865206d6178696d756d2072657472792074696d65206973206c -696d6974656420627920746865>6.476 F<73706563698c65642076>174 674.4 Q -<616c75652e>-.25 E<4d696e51756575654167653d>102 690.6 Q F2 -.1<616765>C -F1 .886<5b6e6f2073686f7274206e616d655d20446f6e27>174 702.6 R 3.386<7470> --.18 G .886<726f6365737320616e>-3.386 F 3.386<7971>-.15 G .886 -<7565756564206a6f62732074686174206861>-3.386 F 1.187 -.15<76652062>-.2 H -.887<65656e20696e20746865207175657565206c657373>.15 F 4.765 -<7468616e2074686520696e646963617465642074696d6520696e74657276>174 714.6 -R 7.265<616c2e2054686973>-.25 F 4.765 -<697320696e74656e64656420746f20616c6c6f>7.265 F 7.265<7779>-.25 G 4.765 -<6f7520746f20676574>-7.265 F 0 Cg EP -%%Page: 73 69 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3733>195.86 E -/F1 10/Times-Roman@0 SF<726573706f6e7369>174 96 Q -.15<7665>-.25 G 1.141 -<6e6573732062792070726f63657373696e67207468652071756575652066>.15 F -1.141<6169726c79206672657175656e746c7920776974686f757420746872617368696e -6720796f7572>-.1 F .286 -<73797374656d20627920747279696e67206a6f627320746f6f206f6674656e2e>174 -108 R .286<54686520646566>5.286 F .286 -<61756c7420756e69747320617265206d696e757465732e>-.1 F .286 -<4e6f74653a2054686973206f7074696f6e>5.286 F 6.763<69732069676e6f72656420 -666f722071756575652072756e7320746861742073656c65637420612073756273657420 -6f66207468652071756575652c20692e652e2c>174 120 R -<99ad715b215d5b497c527c537c515d5b737472696e675d9a>174 132 Q -<4d75737451756f746543686172733d>102 148.2 Q/F2 10/Times-Italic@0 SF<73>A -F1 1.253<5b6e6f2073686f7274206e616d655d205365747320746865206c697374206f -6620636861726163746572732074686174206d7573742062652071756f74656420696620 -7573656420696e20612066756c6c>174 160.2 R 1.217<6e616d652074686174206973 -20696e20746865207068726173652070617274206f6620612060>174 172.2 R 1.217 -<60706872617365203c616464726573733e27>-.74 F 3.717<2773>-.74 G 3.717 -<796e7461782e20546865>-3.717 F<646566>3.718 E 1.218<61756c74206973>-.1 F --.74<6060>174 184.2 S.74 E -.74<2727>-.7 G 5<2e54>.74 G -<686520636861726163746572732060>-5 E<60402c3b3a5c28295b5d27>-.74 E 2.5 -<2761>-.74 G<726520616c>-2.5 E -.1<7761>-.1 G -<797320616464656420746f2074686973206c6973742e>.1 E 7.85 -<4e696365517565756552756e205b6e6f>102 200.4 R 2.156<73686f7274206e616d65 -5d20546865207072696f72697479206f662071756575652072756e6e65727320286e6963 -65283329292e>4.656 F 2.156<546869732076>7.156 F 2.155 -<616c7565206d757374206265>-.25 F -<67726561746572206f7220657175616c207a65726f2e>174 212.4 Q -<4e6f526563697069656e74416374696f6e>102 228.6 Q .554 -<5b6e6f2073686f7274206e616d655d2054686520616374696f6e20746f2074616b>174 -240.6 R 3.055<6577>-.1 G .555<68656e20796f75207265636569>-3.055 F .855 --.15<76652061206d>-.25 H .555<657373616765207468617420686173206e6f2076> -.15 F<616c6964>-.25 E .625<726563697069656e742068656164657273202854>174 -252.6 R .625 -<6f3a2c2043633a2c204263633a2c206f72204170706172656e746c792d54>-.8 F .625 -<6f3a208a20746865206c61737420696e636c7564656420666f72206261636b>-.8 F -.108<636f6d7061746962696c6974792077697468206f6c64>174 264.6 R F2 -<73656e646d61696c>2.608 E F1 2.608<73292e204974>B .108<63616e206265> -2.608 F F0<4e6f6e65>2.608 E F1 .109 -<746f207061737320746865206d657373616765206f6e20756e6d6f642d>2.609 F .297 -<698c65642c2077686963682076696f6c61746573207468652070726f746f636f6c2c> -174 276.6 R F0<4164642d54>2.796 E<6f>-.92 E F1 .296 -<746f2061646420612054>2.796 F .296<6f3a20686561646572207769746820616e> --.8 F 2.796<7972>-.15 G<6563697069656e7473>-2.796 E 1.638 -<69742063616e208c6e6420696e2074686520656e>174 288.6 R -.15<7665>-.4 G -1.638<6c6f706520287768696368206d696768742065>.15 F 1.638 -<78706f7365204263633a20726563697069656e7473292c>-.15 F F0<4164642d41> -4.139 E<70706172>-.25 E<2d>-.37 E<656e746c792d54>174 300.6 Q<6f>-.92 E -F1 .338<746f2061646420616e204170706172656e746c792d54>2.838 F .337<6f3a20 -686561646572202874686973206973206f6e6c7920666f72206261636b2d636f6d706174 -6962696c69747920616e64>-.8 F .841<6973206f66>174 312.6 R .841 -<8c6369616c6c792064657072656361746564292c>-.25 F F0<4164642d54>3.341 E -<6f2d556e646973636c6f736564>-.92 E F1 .841 -<746f20616464206120686561646572209954>3.341 F .842 -<6f3a20756e646973636c6f7365642d>-.8 F .398 -<726563697069656e74733a3b9a20746f206d616b>174 324.6 R 2.898<6574>-.1 G -.397<686520686561646572206c65>-2.898 F -.05<6761>-.15 G 2.897<6c77>.05 G -.397<6974686f757420646973636c6f73696e6720616e>-2.897 F .397 -<797468696e672c206f72>-.15 F F0<4164642d426363>2.897 E F1<746f>2.897 E -<61646420616e20656d707479204263633a20686561646572>174 336.6 Q<2e>-.55 E -1.18<4f6c645374796c6548656164657273205b6f5d>102 352.8 R 1.713<417373756d -652074686174207468652068656164657273206d617920626520696e206f6c6420666f72 -6d61742c20692e652e2c207370616365732064656c696d6974206e616d65732e>4.213 F -1.069<546869732061637475616c6c79207475726e73206f6e20616e20616461707469> -174 364.8 R 1.368 -.15<76652061>-.25 H 1.068 -<6c676f726974686d3a20696620616e>.15 F 3.568<7972>-.15 G 1.068 -<6563697069656e74206164647265737320636f6e7461696e732061>-3.568 F 1.681 -<636f6d6d612c20706172656e7468657369732c206f7220616e676c6520627261636b> -174 376.8 R 1.681<65742c2069742077696c6c20626520617373756d65642074686174 -20636f6d6d617320616c7265616479>-.1 F -.15<6578>174 388.8 S 2.825 -<6973742e204966>.15 F .325<74686973208d6167206973206e6f74206f6e2c206f6e -6c7920636f6d6d61732064656c696d6974206e616d65732e>2.825 F .325 -<486561646572732061726520616c>5.325 F -.1<7761>-.1 G .325 -<7973206f75742d>.1 F -<707574207769746820636f6d6d6173206265747765656e20746865206e616d65732e> -174 400.8 Q<446566>5 E<61756c747320746f206f66>-.1 E<662e>-.25 E -<4f70657261746f7243686172733d>102 417 Q F2 -.15<6368>C<61726c697374>.15 -E F1 1.438<5b246f206d6163726f5d20546865206c697374206f662063686172616374 -65727320746861742061726520636f6e7369646572656420746f20626520996f70657261 -746f72739a2c20746861742069732c>174 429 R .82 -<6368617261637465727320746861742064656c696d697420746f6b>174 441 R 3.32 -<656e732e20416c6c>-.1 F .82 -<6f70657261746f7220636861726163746572732061726520746f6b>3.32 F .82 -<656e73206279207468656d73656c76>-.1 F<65733b>-.15 E .078<73657175656e63 -6573206f66206e6f6e2d6f70657261746f7220636861726163746572732061726520616c -736f20746f6b>174 453 R 2.578<656e732e205768697465>-.1 F .078 -<73706163652063686172616374657273207365702d>2.578 F .27 -<617261746520746f6b>174 465 R .27<656e732062>-.1 F .269 -<757420617265206e6f7420746f6b>-.2 F .269<656e73207468656d73656c76>-.1 F -.269<6573208a20666f722065>-.15 F .269<78616d706c652c2099>-.15 F .269 -<4141412e4242429a20686173207468726565>-.8 F<746f6b>174 477 Q .433 -<656e732c2062>-.1 F .433<75742099>-.2 F .433 -<414141204242429a20686173207477>-.8 F 2.933<6f2e204966>-.1 F .433 -<6e6f74207365742c204f70657261746f72436861727320646566>2.933 F .433 -<61756c747320746f20992e>-.1 F 1.666<3a405b5d>1.666 G<9a3b>-1.666 E -<6164646974696f6e616c6c79>174 489 Q 3.566<2c74>-.65 G 1.066 -<68652063686172616374657273209928>-3.566 F 1.666<293c3e2c3b>1.666 G -3.566<9a61>-1.666 G 1.066<726520616c>-3.566 F -.1<7761>-.1 G 1.065 -<7973206f70657261746f72732e>.1 F 1.065 -<4e6f74652074686174204f70657261746f72>6.065 F<2d>-.2 E<4368617273206d75 -73742062652073657420696e2074686520636f6e8c6775726174696f6e208c6c65206265 -666f726520616e>174 501 Q 2.5<7972>-.15 G<756c65736574732e>-2.5 E -<50696446696c653d>102 517.2 Q F2<8c6c656e616d65>A F1 1.3<5b6e6f2073686f -7274206e616d655d2046696c656e616d65206f662074686520706964208c6c652e>3.58 -F<28646566>6.3 E 1.3<61756c74206973205f50>-.1 F -1.11<4154>-.92 G -<485f53454e444d41494c504944292e>1.11 E<546865>174 529.2 Q F2 -<8c6c656e616d65>2.832 E F1 .332<6973206d6163726f2d65>2.832 F .332<787061 -6e646564206265666f7265206974206973206f70656e65642c20616e6420756e6c696e6b> --.15 F .331<6564207768656e>-.1 F F2<73656e646d61696c>2.831 E F1 -.15 -<6578>174 541.2 S<6974732e>.15 E<506f73746d6173746572436f70>102 557.4 Q -<793d>-.1 E F2<706f73746d6173746572>A F1 .003<5b505d204966207365742c2063 -6f70696573206f66206572726f72206d657373616765732077696c6c2062652073656e74 -20746f20746865206e616d6564>174 569.4 R F2<706f73746d6173746572>2.504 E -F1 5.004<2e4f>C .004<6e6c7920746865>-5.004 F .687 -<686561646572206f66207468652066>174 581.4 R .687 -<61696c6564206d6573736167652069732073656e742e>-.1 F .687<4572726f727320 -726573756c74696e672066726f6d206d6573736167657320776974682061206e65>5.687 -F<672d>-.15 E<617469>174 593.4 Q 1.83 -.15<76652070>-.25 H 1.53 -<7265636564656e63652077696c6c206e6f742062652073656e742e>.15 F 1.531<5369 -6e6365206d6f7374206572726f72732061726520757365722070726f626c656d732c2074 -686973206973>6.531 F .453 -<70726f6261626c79206e6f74206120676f6f642069646561206f6e206c6172>174 -605.4 R .453<67652073697465732c20616e64206172>-.18 F .453 -<677561626c7920636f6e7461696e7320616c6c20736f727473206f6620707269>-.18 F --.25<7661>-.25 G -.15<6379>.25 G .1<76696f6c6174696f6e732c2062>174 617.4 -R .101<7574206974207365656d7320746f20626520706f70756c617220776974682063 -65727461696e206f7065726174696e672073797374656d732076>-.2 F 2.601 -<656e646f72732e20546865>-.15 F 1.919 -<61646472657373206973206d6163726f2065>174 629.4 R 1.918 -<7870616e646564206174207468652074696d65206f662064656c69>-.15 F -.15 -<7665>-.25 G<7279>.15 E 6.918<2e44>-.65 G<6566>-6.918 E 1.918 -<61756c747320746f206e6f20706f73746d6173746572>-.1 F<636f706965732e>174 -641.4 Q<507269>102 657.6 Q -.25<7661>-.25 G -.15<6379>.25 G -<4f7074696f6e733d>.15 E F2<6f70742c6f70742c2e2e2e>1.666 E F1 1.191 -<5b705d205365742074686520707269>174 669.6 R -.25<7661>-.25 G -.15<6379> -.25 G F2<6f7074>3.841 E F1 3.691<696f6e732e2060>B<60507269>-.74 E -.25 -<7661>-.25 G -.15<6379>.25 G 2.671 -.74<27272069>.15 H 3.692<7372>.74 G -1.192<65616c6c792061206d69736e6f6d65723b206d616e>-3.692 F 3.692<796f> --.15 G 3.692<6674>-3.692 G 1.192<6865736520617265>-3.692 F .929 -<6a75737420612077>174 681.6 R .928<6179206f6620696e73697374696e67206f6e -207374726963746572206164686572656e636520746f2074686520534d54502070726f74 -6f636f6c2e>-.1 F<546865>5.928 E F2<6f7074>3.428 E F1<696f6e73>A -<63616e2062652073656c65637465642066726f6d3a>174 693.6 Q 0 Cg EP -%%Page: 74 70 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d37342053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF 56.37<7075626c696320416c6c6f>214 96 R 2.5<776f> --.25 G<70656e20616363657373>-2.5 E 27.49 -<6e6565646d61696c68656c6f20496e73697374>214 108 R -<6f6e2048454c4f206f722045484c4f20636f6d6d616e64206265666f7265204d41494c> -2.5 E<6e65656465>214 120 Q 25.98<78706e68656c6f20496e73697374>-.15 F -<6f6e2048454c4f206f722045484c4f20636f6d6d616e64206265666f7265204558504e> -2.5 E<6e6f65>214 132 Q 52.08<78706e20446973616c6c6f>-.15 F 2.5<7745>-.25 -G<58504e20656e746972656c79>-2.5 E 2.5<2c69>-.65 G<6d706c696573206e6f> --2.5 E -.15<7665>-.15 G<7262>.15 E<2e>-.4 E 28.61 -<6e6565647672667968656c6f20496e73697374>214 144 R -<6f6e2048454c4f206f722045484c4f20636f6d6d616e64206265666f72652056524659> -2.5 E<6e6f>214 156 Q 54.86<7672667920446973616c6c6f>-.15 F 2.5<7756>-.25 -G<52465920656e746972656c79>-2.5 E 55.82<6e6f6574726e20446973616c6c6f>214 -168 R 2.5<7745>-.25 G<54524e20656e746972656c79>-2.5 E<6e6f>214 180 Q --.15<7665>-.15 G 53.9<726220446973616c6c6f>.15 F 2.5<7756>-.25 G -<45524220656e746972656c79>-2.5 E 30.82 -<72657374726963746d61696c71205265737472696374>214 192 R -<6d61696c7120636f6d6d616e64>2.5 E 35.27 -<72657374726963747172756e205265737472696374>214 204 R -2.5 E<726573747269637465>214 216 -Q 24.87<7870616e64205265737472696374>-.15 F2.5 E 2.5<7661>-.15 G -<6e6420ad7620636f6d6d616e64206c696e65208d616773>-2.5 E 40.27 -<6e6f726563656970747320446f6e27>214 230 R 2.5<7472>-.18 G -<657475726e20737563636573732044534e73>-2.5 E/F2 7/Times-Roman@0 SF<3230> --4 I F1 27.49<6e6f626f647972657475726e20446f6e27>214 242 R 2.5<7472>-.18 -G<657475726e2074686520626f6479206f662061206d6573736167652077697468204453 -4e73>-2.5 E<676f61>214 254 Q -.1<7761>-.15 G 53.02<7944>.1 G -<6973616c6c6f>-53.02 E 2.5<7765>-.25 G -<7373656e7469616c6c7920616c6c20534d5450207374617475732071756572696573> --2.5 E<6175746877>214 266 Q 27.59<61726e696e677320507574>-.1 F -<582d41757468656e7469636174696f6e2d57>2.5 E -<61726e696e673a206865616465727320696e206d65737361676573>-.8 E -<616e64206c6f672077>297.87 278 Q<61726e696e6773>-.1 E 12.5 -<6e6f61637475616c726563697069656e7420446f6e27>214 290 R 2.5<7470>-.18 G -<757420582d41637475616c2d526563697069656e74206c696e657320696e2044534e73> --2.5 E<7768696368207265>297.87 302 Q -.15<7665>-.25 G<616c20746865206163 -7475616c206163636f756e74207468617420616464726573736573206d617020746f2e> -.15 E 2.976<5468652099676f61>174 318.2 R -.1<7761>-.15 G 2.976 -<799a2070736575646f2d8d6167207365747320616c6c208d6167732065>.1 F 2.977< -786365707420996e6f72656365697074739a2c209972657374726963746d61696c719a2c> --.15 F 4.558<9972657374726963747172756e9a2c2099726573747269637465>174 -330.2 R 4.557<7870616e649a2c20996e6f6574726e9a2c20616e6420996e6f626f6479 -72657475726e9a2e>-.15 F 4.557<4966206d61696c71206973>9.557 F 1.842<7265 -73747269637465642c206f6e6c792070656f706c6520696e207468652073616d65206772 -6f757020617320746865207175657565206469726563746f72792063616e207072696e74 -20746865>174 342.2 R 2.545<71756575652e204966>174 354.2 R .044<71756575 -652072756e732061726520726573747269637465642c206f6e6c7920726f6f7420616e64 -20746865206f>2.545 F .044 -<776e6572206f6620746865207175657565206469726563746f7279>-.25 F 1.299 -<63616e2072756e207468652071756575652e>174 366.2 R 1.299 -<5468652099726573747269637465>6.299 F 1.299 -<7870616e649a2070736575646f2d8d616720696e73747275637473>-.15 F/F3 10 -/Times-Italic@0 SF<73656e646d61696c>3.799 E F1 1.299<746f2064726f70> -3.799 F<707269>174 378.2 Q<76696c65>-.25 E 1.608 -<676573207768656e20746865>-.15 F F04.108 E<76>-.15 E F1 1.608 -<6f7074696f6e206973206769>4.108 F -.15<7665>-.25 G 4.108<6e62>.15 G -4.108<7975>-4.108 G 1.608 -<736572732077686f20617265206e65697468657220726f6f74206e6f7220746865> --4.108 F -.35<5472>174 390.2 S 1.33 -<75737465645573657220736f2075736572732063616e6e6f74207265616420707269> -.35 F -.25<7661>-.25 G 1.33<746520616c69617365732c20666f7277>.25 F 1.33 -<617264732c206f72203a696e636c7564653a208c6c65732e>-.1 F<4974>6.33 E .634 -<77696c6c206164642074686520994e6f6e526f6f7453616665416464729a20746f2074 -68652099446f6e74426c616d6553656e646d61696c9a206f7074696f6e20746f20707265> -174 402.2 R -.15<7665>-.25 G<6e74>.15 E .436 -<6d69736c656164696e6720756e7361666520616464726573732077>174 414.2 R -2.936<61726e696e67732e204974>-.1 F .436<616c736f206f>2.936 F -.15<7665> --.15 G .436<72726964657320746865>.15 F F02.936 E F1<2876>2.936 E -.436<6572626f73652920636f6d6d616e64>-.15 F 1.293 -<6c696e65206f7074696f6e20746f20707265>174 426.2 R -.15<7665>-.25 G 1.292 -<6e7420696e666f726d6174696f6e206c65616b6167652e>.15 F 1.292 -<41757468656e7469636174696f6e2057>6.292 F 1.292 -<61726e696e6773206164642077>-.8 F<61726e2d>-.1 E .183 -<696e67732061626f75742076>174 438.2 R .183<6172696f757320636f6e64697469 -6f6e732074686174206d617920696e64696361746520617474656d70747320746f207370 -6f6f6620746865206d61696c2073797374656d2c>-.25 F<73756368206173207573696e -672061206e6f6e2d7374616e64617264207175657565206469726563746f7279>174 -450.2 Q<2e>-.65 E<50726f6365737354>102 466.4 Q<69746c655072658c783d>-.35 -E F3<737472696e67>A F1 1.196<5b6e6f2073686f7274206e616d655d205072658c78 -207468652070726f63657373207469746c652073686f>174 478.4 R 1.195 -<776e206f6e2027707327206c697374696e67732077697468>-.25 F F3 -<737472696e67>3.695 E F1 6.195<2e54>C<6865>-6.195 E F3<737472696e67>174 -490.4 Q F1<77696c6c206265206d6163726f2070726f6365737365642e>2.5 E -<51756575654469726563746f72793d>102 506.6 Q F3<646972>A F1 .583 -<5b515d205468652051756575654469726563746f7279206f7074696f6e2073657276> -174 518.6 R .584<6573207477>-.15 F 3.084<6f70>-.1 G 3.084 -<7572706f7365732e2046697273742c>-3.084 F .584 -<69742073706563698c6573207468652064697265632d>3.084 F .483<746f7279206f -7220736574206f66206469726563746f72696573207468617420636f6d70726973652074 -686520646566>174 530.6 R .482<61756c742071756575652067726f75702e>-.1 F -.482<5365636f6e642c2069742073706563692d>5.482 F .104<8c6573207468652064 -69726563746f727920442077686963682069732074686520616e636573746f72206f6620 -616c6c207175657565206469726563746f726965732c20616e642077686963682073656e -642d>174 542.6 R .721 -<6d61696c2075736573206173206974732063757272656e742077>174 554.6 R .721 -<6f726b696e67206469726563746f7279>-.1 F 5.721<2e57>-.65 G .721 -<68656e2073656e646d61696c2064756d707320636f72652c206974206c6561>-5.721 F --.15<7665>-.2 G<73>.15 E 2.872<69747320636f7265208c6c657320696e20442e> -174 566.6 R 2.873<546865726520617265207477>7.872 F 5.373<6f63>-.1 G -5.373<617365732e204966>-5.373 F F3<646972>5.373 E F1 2.873 -<656e6473207769746820616e20617374657269736b202865>5.373 F<672c>-.15 E F3 -<2f7661722f73706f6f6c2f6d71756575652f71642a>174 578.6 Q F1 .253<292c2074 -68656e20616c6c206f6620746865206469726563746f72696573206f722073796d626f6c -6963206c696e6b7320746f206469726563746f72696573>B<6265>174 590.6 Q .432 -<67696e6e696e672077697468206071642720696e>-.15 F F3 -<2f7661722f73706f6f6c2f6d7175657565>2.932 E F1 .433<77696c6c206265207573 -6564206173207175657565206469726563746f72696573206f6620746865>2.932 F -<646566>174 602.6 Q .276<61756c742071756575652067726f75702c20616e64>-.1 -F F3<2f7661722f73706f6f6c2f6d7175657565>2.776 E F1 .275 -<77696c6c2062652075736564206173207468652077>2.776 F .275 -<6f726b696e67206469726563746f7279>-.1 F 2.82<442e204f74686572776973652c> -174 614.6 R F3<646972>2.82 E F1 .32 -<6d757374206e616d652061206469726563746f72792028757375616c6c79>2.82 F F3 -<2f7661722f73706f6f6c2f6d7175657565>2.82 E F1 .32<293a2074686520646566>B -<61756c74>-.1 E .545<71756575652067726f757020636f6e7369737473206f662074 -68652073696e676c65207175657565206469726563746f7279>174 626.6 R F3 -<646972>3.045 E F1 3.045<2c61>C .545<6e64207468652077>-3.045 F .545 -<6f726b696e67206469726563746f7279>-.1 F 2.5<4469>174 638.6 S 2.5<7373> --2.5 G<657420746f>-2.5 E F3<646972>2.5 E F1 5.001<2e54>C 2.501<6f64> --5.801 G .001<658c6e65206164646974696f6e616c2067726f757073206f6620717565 -7565206469726563746f726965732c207573652074686520636f6e8c677572612d> --2.501 F .746<74696f6e208c6c652060512720636f6d6d616e642e>174 650.6 R -.746<446f206e6f74206368616e676520746865207175657565206469726563746f7279 -20737472756374757265207768696c652073656e642d>5.746 F -<6d61696c2069732072756e6e696e672e>174 662.6 Q .32 LW 76 678.8 72 678.8 +/F0 10/Times-Bold@0 SF 193.36(SMM:08-48 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF .494 +(Macros are interpolated using the construct)127 96 R F0($)2.994 E/F2 10 +/Times-Italic@0 SF(x)A F1 2.994(,w)C(here)-2.994 E F2(x)2.994 E F1 .494 +(is the name of the macro to be inter)2.994 F(-)-.2 E 2.932 +(polated. This)102 108 R .432 +(interpolation is done when the con\214guration \214le is read, e)2.932 +F .433(xcept in)-.15 F F0(M)2.933 E F1 2.933(lines. The)2.933 F(spe-) +2.933 E(cial construct)102 120 Q F0($&)2.5 E F2(x)A F1(can be used in) +2.5 E F0(R)2.5 E F1(lines to get deferred interpolation.)2.5 E +(Conditionals can be speci\214ed using the syntax:)127 136.2 Q($?x te) +142 152.4 Q(xt1 $| te)-.15 E(xt2 $.)-.15 E 1.562(This interpolates)102 +168.6 R F2(te)4.062 E(xt1)-.2 E F1 1.562(if the macro)4.062 F F0($x) +4.062 E F1 1.562(is set and non-null, and)4.062 F F2(te)4.062 E(xt2)-.2 +E F1 4.062(otherwise. The)4.062 F 1.561(\231else\232 \()4.061 F F0($|)A +F1(\))A(clause may be omitted.)102 180.6 Q 1.302(The follo)127 196.8 R +1.302(wing macros are de\214ned and/or used internally by)-.25 F F2 +(sendmail)3.803 E F1 1.303(for interpolation into)3.803 F(ar)102 210.8 Q +(gv')-.18 E 2.793(sf)-.55 G .293(or mailers or for other conte)-2.793 F +2.793(xts. The)-.15 F .293(ones mark)2.793 F .292 +(ed \207 are information passed into sendmail)-.1 F/F3 7/Times-Roman@0 +SF(16)-4 I F1(,)4 I .035(the ones mark)102 222.8 R .036(ed \210 are inf\ +ormation passed both in and out of sendmail, and the unmark)-.1 F .036 +(ed macros are)-.1 F(passed out of sendmail b)102 234.8 Q +(ut are not otherwise used internally)-.2 E 5(.T)-.65 G +(hese macros are:)-5 E 13.06($a The)102 251 R +(origination date in RFC 822 format.)2.5 E(This is e)5 E +(xtracted from the Date: line.)-.15 E 12.5($b The)102 267.2 R +(current date in RFC 822 format.)2.5 E 13.06($c The)102 283.4 R .003 +(hop count.)2.503 F .003(This is a count of the number of Recei)5.003 F +-.15(ve)-.25 G .002(d: lines plus the v).15 F .002(alue of the)-.25 F F0 +2.502 E F1(com-)2.502 E(mand line \215ag.)127 295.4 Q 12.5($d The) +102 311.6 R(current date in UNIX \(ctime\) format.)2.5 E 8.06 +($e\207 \(Obsolete;)102 327.8 R 1.814 +(use SmtpGreetingMessage option instead.\))4.314 F 1.814 +(The SMTP entry message.)6.814 F 1.814(This is)6.814 F .632 +(printed out when SMTP starts up.)127 339.8 R .631(The \214rst w)5.631 F +.631(ord must be the)-.1 F F0($j)3.131 E F1 .631 +(macro as speci\214ed by RFC)3.131 F 2.97(821. Def)127 351.8 R .47 +(aults to \231$j Sendmail $v ready at $b\232.)-.1 F .47 +(Commonly rede\214ned to include the con\214gu-)5.47 F(ration v)127 +363.8 Q(ersion number)-.15 E 2.5(,e)-.4 G +(.g., \231$j Sendmail $v/$Z ready at $b\232)-2.5 E 14.17($f The)102 380 +R(en)2.5 E -.15(ve)-.4 G(lope sender \(from\) address.).15 E 12.5 +($g The)102 396.2 R .018(sender address relati)2.518 F .318 -.15(ve t) +-.25 H 2.518(ot).15 G .018(he recipient.)-2.518 F -.15(Fo)5.018 G 2.518 +(re).15 G .017(xample, if)-2.668 F F0($f)2.517 E F1 .017 +(is \231foo\232,)2.517 F F0($g)2.517 E F1 .017 +(will be \231host!foo\232,)2.517 F(\231foo@host.domain\232, or whate)127 +408.2 Q -.15(ve)-.25 G 2.5(ri).15 G 2.5(sa)-2.5 G +(ppropriate for the recei)-2.5 E(ving mailer)-.25 E(.)-.55 E 12.5 +($h The)102 424.4 R(recipient host.)2.5 E +(This is set in ruleset 0 from the $@ \214eld of a parsed address.)5 E +14.72($i The)102 440.6 R(queue id, e.g., \231f344MXxp018717\232.)2.5 E +9.72($j\210 The)102 456.8 R(\231of)2.746 E .247 +(\214cial\232 domain name for this site.)-.25 F .247 +(This is fully quali\214ed if the full quali\214cation can be)5.247 F +3.094(found. It)127 468.8 R F2(must)3.094 E F1 .593(be rede\214ned to b\ +e the fully quali\214ed domain name if your system is not con-)3.094 F +(\214gured so that information can \214nd it automatically)127 480.8 Q +(.)-.65 E 12.5($k The)102 497 R +(UUCP node name \(from the uname system call\).)2.5 E 9.72 +($l\207 \(Obsolete;)102 513.2 R 1.281 +(use UnixFromLine option instead.\))3.781 F 1.282 +(The format of the UNIX from line.)6.282 F(Unless)6.282 E 1.41(you ha) +127 525.2 R 1.71 -.15(ve c)-.2 H 1.409 +(hanged the UNIX mailbox format, you should not change the def).15 F +1.409(ault, which is)-.1 F(\231From $g $d\232.)127 537.2 Q 9.72($m The) +102 553.4 R .718(domain part of the)3.218 F F2 -.1(ge)3.218 G(thostname) +.1 E F1 .718(return v)3.218 F 3.219(alue. Under)-.25 F .719 +(normal circumstances,)3.219 F F0($j)3.219 E F1 .719(is equi)3.219 F(v-) +-.25 E(alent to)127 565.4 Q F0($w)2.5 E(.$m)-.7 E F1(.)A 7.5($n\207 The) +102 581.6 R(name of the daemon \(for error messages\).)2.5 E(Def)5 E +(aults to \231MAILER-D)-.1 E(AEMON\232.)-.4 E 7.5($o\207 \(Obsolete:)102 +597.8 R .651(use OperatorChars option instead.\))3.151 F .651 +(The set of \231operators\232 in addresses.)5.651 F 3.15(Al)5.65 G .65 +(ist of)-3.15 F .581(characters which will be considered tok)127 609.8 R +.582(ens and which will separate tok)-.1 F .582(ens when doing pars-)-.1 +F 3.278(ing. F)127 621.8 R .778(or e)-.15 F .778 +(xample, if \231@\232 were in the)-.15 F F0($o)3.278 E F1 .777 +(macro, then the input \231a@b\232 w)3.278 F .777(ould be scanned as)-.1 +F .627(three tok)127 633.8 R .627(ens: \231a,)-.1 F 3.127<9a99>-.7 G(@,) +-3.127 E 3.127<9a61>-.7 G .627(nd \231b)-3.127 F 4.527 -.7(.\232 D)-.4 H +(ef).7 E .628 +(aults to \231.:@[]\232, which is the minimum set necessary to)-.1 F +.856(do RFC 822 parsing; a richer set of operators is \231.:%@!/[]\232,\ + which adds support for UUCP)127 645.8 R(,)-1.11 E +(the %-hack, and X.400 addresses.)127 657.8 Q .32 LW 76 678.8 72 678.8 DL 80 678.8 76 678.8 DL 84 678.8 80 678.8 DL 88 678.8 84 678.8 DL 92 678.8 88 678.8 DL 96 678.8 92 678.8 DL 100 678.8 96 678.8 DL 104 678.8 100 678.8 DL 108 678.8 104 678.8 DL 112 678.8 108 678.8 DL 116 678.8 112 @@ -9600,5212 +4220,6118 @@ DL 80 678.8 76 678.8 DL 84 678.8 80 678.8 DL 88 678.8 84 678.8 DL 92 678.8 DL 180 678.8 176 678.8 DL 184 678.8 180 678.8 DL 188 678.8 184 678.8 DL 192 678.8 188 678.8 DL 196 678.8 192 678.8 DL 200 678.8 196 678.8 DL 204 678.8 200 678.8 DL 208 678.8 204 678.8 DL 212 678.8 208 -678.8 DL 216 678.8 212 678.8 DL/F4 5/Times-Roman@0 SF<3230>93.6 689.2 Q -/F5 8/Times-Roman@0 SF<4e2e422e3a20746865>3.2 I/F6 8/Times-Bold@0 SF -<6e6f72>2 E<65636569707473>-.144 E F5<8d6167207475726e73206f66>2 E 2 -<6673>-.2 G<7570706f727420666f72205246432031383931202844656c69>-2 E -.12 -<7665>-.2 G<727920537461747573204e6f74698c636174696f6e292e>.12 E 0 Cg EP +678.8 DL 216 678.8 212 678.8 DL/F4 5/Times-Roman@0 SF(16)93.6 689.2 Q/F5 +8/Times-Roman@0 SF(As of v)3.2 I(ersion 8.6, all of these macros ha)-.12 +E .24 -.12(ve r)-.16 H(easonable def).12 E 2(aults. Pre)-.08 F(vious v) +-.2 E(ersions required that the)-.12 E 2(yb)-.12 G 2(ed)-2 G(e\214ned.) +-2 E 0 Cg EP +%%Page: 49 45 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-49)195.86 E/F1 10/Times-Roman@0 SF 12.5($p Sendmail')102 96 R +2.5(sp)-.55 G(rocess id.)-2.5 E 7.5($q\207 Def)102 112.2 R .403 +(ault format of sender address.)-.1 F(The)5.403 E F0($q)2.903 E F1 .403 +(macro speci\214es ho)2.903 F 2.903(wa)-.25 G 2.904(na)-2.903 G .404 +(ddress should appear in a)-2.904 F 1.181(message when it is def)127 +124.2 R 3.681(aulted. Def)-.1 F 1.181(aults to \231<$g>\232.)-.1 F 1.18 +(It is commonly rede\214ned to be \231$?x$x)6.181 F(<$g>$|$g$.)127 136.2 +Q 5<9a6f>-.7 G 2.5<7299>-5 G($g$?x \($x\)$.)-2.5 E +(\232, corresponding to the follo)-.7 E(wing tw)-.25 E 2.5(of)-.1 G +(ormats:)-2.5 E(Eric Allman ).65 E(eric@CS.Berk)167 164.4 Q(ele)-.1 E -.65(y.)-.15 G +(EDU \(Eric Allman\)).65 E/F2 10/Times-Italic@0 SF(Sendmail)127 180.6 Q +F1(properly quotes names that ha)2.5 E .3 -.15(ve s)-.2 H +(pecial characters if the \214rst form is used.).15 E 14.17($r Protocol) +102 196.8 R .976(used to recei)3.476 F 1.276 -.15(ve t)-.25 H .976 +(he message.).15 F .976(Set from the)5.976 F F03.476 E F1 .977 +(command line \215ag or by the SMTP)3.476 F(serv)127 208.8 Q(er code.) +-.15 E 13.61($s Sender')102 225 R 3.947(sh)-.55 G 1.447(ost name.)-3.947 +F 1.447(Set from the)6.447 F F03.947 E F1 1.447 +(command line \215ag or by the SMTP serv)3.947 F 1.446(er code \(in)-.15 +F(which case it is set to the EHLO/HELO parameter\).)127 237 Q 14.72 +($t A)102 253.2 R 1.607(numeric representation of the current time in t\ +he format YYYYMMDDHHmm \(4 digit)4.106 F .576(year 1900-9999, 2 digit m\ +onth 01-12, 2 digit day 01-31, 2 digit hours 00-23, 2 digit minutes)127 +265.2 R(00-59\).)127 277.2 Q 12.5($u The)102 293.4 R(recipient user)2.5 +E(.)-.55 E 12.5($v The)102 309.6 R -.15(ve)2.5 G(rsion number of the).15 +E F2(sendmail)2.5 E F1(binary)2.5 E(.)-.65 E 5.28($w\210 The)102 325.8 R +(hostname of this site.)2.5 E(This is the root name of this host \(b)5 E +(ut see belo)-.2 E 2.5(wf)-.25 G(or ca)-2.5 E -.15(ve)-.2 G(ats\).).15 E +12.5($x The)102 342 R(full name of the sender)2.5 E(.)-.55 E 13.06 +($z The)102 358.2 R(home directory of the recipient.)2.5 E 12.5($_ The) +102 374.4 R -.25(va)2.5 G(lidated sender address.).25 E(See also)5 E F0 +(${client_r)2.5 E(esolv)-.18 E(e})-.1 E F1(.)A(${addr_type})102 390.6 Q +.802(The type of the address which is currently being re)127 402.6 R +3.303(written. This)-.25 F .803(macro contains up to three)3.303 F .393 +(characters, the \214rst is either `e' or `h' for en)127 414.6 R -.15 +(ve)-.4 G .392(lope/header address, the second is a space, and).15 F +(the third is either `s' or `r' for sender/recipient address.)127 426.6 +Q(${alg_bits})102 442.8 Q .242(The maximum k)127 454.8 R -.15(ey)-.1 G +.243(length \(in bits\) of the symmetric encryption algorithm used for \ +a TLS con-).15 F 2.823(nection. This)127 466.8 R .322 +(may be less than the ef)2.823 F(fecti)-.25 E .622 -.15(ve k)-.25 H -.15 +(ey).05 G .322(length, which is stored in).15 F F0(${cipher_bits})2.822 +E F1 2.822(,f)C(or)-2.822 E -.74(``)127 478.8 S -.15(ex).74 G +(port controlled').15 E 2.5('a)-.74 G(lgorithms.)-2.5 E(${auth_authen}) +102 495 Q 1.222(The client')127 507 R 3.722(sa)-.55 G 1.223(uthenticati\ +on credentials as determined by authentication \(only set if success-) +-3.722 F 2.728(ful\). The)127 519 R .227(format depends on the mechanis\ +m used, it might be just `user', or `user@realm', or)2.728 F +(something similar \(SMTP A)127 531 Q(UTH only\).)-.55 E(${auth_author}) +102 547.2 Q 1.301(The authorization identity)127 559.2 R 3.801(,i)-.65 G +1.301(.e. the A)-3.801 F 1.301(UTH= parameter of the)-.55 F/F3 9 +/Times-Roman@0 SF 1.302(SMTP MAIL)3.801 F F1 1.302(command if sup-)3.802 +F(plied.)127 571.2 Q(${auth_type})102 587.4 Q +(The mechanism used for SMTP authentication \(only set if successful\).) +127 599.4 Q(${auth_ssf})102 615.6 Q .321(The k)127 627.6 R -.15(ey)-.1 G +.321(length \(in bits\) of the symmetric encryption algorithm used for \ +the security layer of a).15 F(SASL mechanism.)127 639.6 Q(${bodytype}) +102 655.8 Q +(The message body type \(7BIT or 8BITMIME\), as determined from the en) +127 667.8 Q -.15(ve)-.4 G(lope.).15 E(${cert_fp})102 684 Q 2.288 +(The \214ngerprint of the presented certi\214cate \(ST)127 696 R(AR)-.93 +E 2.288(TTLS only\).)-.6 F 2.289(Note: this macro is only)7.288 F .017 +(de\214ned if the option)127 708 R F0(CertFinger)2.517 E(printAlgorithm) +-.1 E F1 .016(is set, in which case the speci\214ed \214ngerprint)2.517 +F 1.076(algorithm is used.)127 720 R 1.077(The v)6.077 F 1.077 +(alid algorithms depend on the OpenSSL v)-.25 F 1.077(ersion, b)-.15 F +1.077(ut usually md5,)-.2 F 0 Cg EP +%%Page: 50 46 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 193.36(SMM:08-50 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF +(sha1, and sha256 are a)127 96 Q -.25(va)-.2 G 2.5(ilable. See).25 F +(openssl dgst -h)167 112.2 Q(for a list.)127 128.4 Q(${cert_issuer})102 +144.6 Q .709(The DN \(distinguished name\) of the CA \(certi\214cate au\ +thority\) that signed the presented cer)127 156.6 R(-)-.2 E +(ti\214cate \(the cert issuer\) \(ST)127 168.6 Q(AR)-.93 E(TTLS only\).) +-.6 E(${cert_md5})102 184.8 Q 2.134 +(The MD5 hash of the presented certi\214cate \(ST)127 196.8 R(AR)-.93 E +2.134(TTLS only\).)-.6 F 2.134(Note: this macro is only)7.134 F +(de\214ned if the option)127 208.8 Q F0(CertFinger)2.5 E(printAlgorithm) +-.1 E F1(is not set.)2.5 E(${cert_subject})102 225 Q +(The DN of the presented certi\214cate \(called the cert subject\) \(ST) +127 237 Q(AR)-.93 E(TTLS only\).)-.6 E(${cipher})102 253.2 Q .228(The c\ +ipher suite used for the connection, e.g., EDH-DSS-DES-CBC3-SHA, EDH-RS\ +A-DES-)127 265.2 R(CBC-SHA, DES-CBC-MD5, DES-CBC3-SHA \(ST)127 277.2 Q +(AR)-.93 E(TTLS only\).)-.6 E(${cipher_bits})102 293.4 Q .687(The ef)127 +305.4 R(fecti)-.25 E .987 -.15(ve k)-.25 H -.15(ey).05 G .688(length \(\ +in bits\) of the symmetric encryption algorithm used for a TLS con-).15 +F(nection.)127 317.4 Q(${client_addr})102 333.6 Q 2.302 +(The IP address of the SMTP client.)127 345.6 R 2.302 +(IPv6 addresses are tagged with "IPv6:" before the)7.302 F 2.5 +(address. De\214ned)127 357.6 R(in the SMTP serv)2.5 E(er only)-.15 E(.) +-.65 E(${client_connections})102 373.8 Q +(The number of open connections in the SMTP serv)127 385.8 Q +(er for the client IP address.)-.15 E(${client_\215ags})102 402 Q 1.524 +(The \215ags speci\214ed by the Modi\214er= part of)127 414 R F0 +(ClientP)4.024 E(ortOptions)-.2 E F1 1.525(where \215ags are separated) +4.024 F 1.133 +(from each other by spaces and upper case \215ags are doubled.)127 426 R +1.132(That is, Modi\214er=hA will be)6.132 F(represented as "h AA" in) +127 438 Q F0(${client_\215ags})2.5 E F1 2.5(,w)C +(hich is required for testing the \215ags in rulesets.)-2.5 E +(${client_name})102 454.2 Q .24(The host name of the SMTP client.)127 +466.2 R .241(This may be the client')5.24 F 2.741(sb)-.55 G(rack)-2.741 +E .241(eted IP address in the form)-.1 F 3.322([n)127 478.2 S .821(nn.n\ +nn.nnn.nnn ] for IPv4 and [ IPv6:nnnn:...:nnnn ] for IPv6 if the client\ +')-3.322 F 3.321(sI)-.55 G 3.321(Pa)-3.321 G .821(ddress is)-3.321 F .21 +(not resolv)127 490.2 R .21(able, or if it is resolv)-.25 F .21(able b) +-.25 F .21(ut the IP address of the resolv)-.2 F .21(ed hostname doesn') +-.15 F 2.71(tm)-.18 G(atch)-2.71 E(the original IP address.)127 502.2 Q +(De\214ned in the SMTP serv)5 E(er only)-.15 E 5(.S)-.65 G(ee also)-5 E +F0(${client_r)2.5 E(esolv)-.18 E(e})-.1 E F1(.)A(${client_port})102 +518.4 Q(The port number of the SMTP client.)127 530.4 Q +(De\214ned in the SMTP serv)5 E(er only)-.15 E(.)-.65 E(${client_ptr}) +102 546.6 Q 3.634 +(The result of the PTR lookup for the client IP address.)127 558.6 R +3.633(Note: this is the same as)8.634 F F0(${client_name})127 570.6 Q F1 +(if and only if)2.5 E F0(${client_r)2.5 E(esolv)-.18 E(e})-.1 E F1 +(is OK.)2.5 E(De\214ned in the SMTP serv)5 E(er only)-.15 E(.)-.65 E +(${client_rate})102 586.8 Q .266 +(The number of incoming connections for the client IP address o)127 +598.8 R -.15(ve)-.15 G 2.766(rt).15 G .266(he time interv)-2.766 F .266 +(al speci\214ed)-.25 F(by ConnectionRateW)127 610.8 Q(indo)-.4 E(wSize.) +-.25 E(${client_resolv)102 627 Q(e})-.15 E +(Holds the result of the resolv)127 639 Q 2.5(ec)-.15 G(all for)-2.5 E +F0(${client_name})2.5 E F1 5(.P)C(ossible v)-5 E(alues are:)-.25 E 33.06 +(OK resolv)167 655.2 R(ed successfully)-.15 E -.74(FA)167 667.2 S 26.02 +(IL permanent).74 F(lookup f)2.5 E(ailure)-.1 E 7.5(FORGED forw)167 +679.2 R(ard lookup doesn')-.1 E 2.5(tm)-.18 G(atch re)-2.5 E -.15(ve) +-.25 G(rse lookup).15 E 20.83(TEMP temporary)167 691.2 R(lookup f)2.5 E +(ailure)-.1 E .208(De\214ned in the SMTP serv)127 707.4 R .208(er only) +-.15 F(.)-.65 E/F2 10/Times-Italic@0 SF(sendmail)5.208 E F1 .208 +(performs a hostname lookup on the IP address of)2.708 F .561 +(the connecting client.)127 719.4 R(Ne)5.561 E .561 +(xt the IP addresses of that hostname are look)-.15 F .561(ed up.)-.1 F +.562(If the client IP)5.562 F 0 Cg EP +%%Page: 51 47 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-51)195.86 E/F1 10/Times-Roman@0 SF .782 +(address does not appear in that list, then the hostname is maybe for) +127 96 R 3.282(ged. This)-.18 F .781(is re\215ected as)3.282 F(the v)127 +108 Q(alue FORGED for)-.25 E F0(${client_r)2.5 E(esolv)-.18 E(e})-.1 E +F1(and it also sho)2.5 E(ws up in)-.25 E F0($_)2.5 E F1 +(as "\(may be for)2.5 E(ged\)".)-.18 E(${cn_issuer})102 124.2 Q .874(Th\ +e CN \(common name\) of the CA that signed the presented certi\214cate \ +\(ST)127 136.2 R(AR)-.93 E .874(TTLS only\).)-.6 F .376 +(Note: if the CN cannot be e)127 148.2 R .376 +(xtracted properly it will be replaced by one of these strings based) +-.15 F(on the encountered error:)127 160.2 Q 8.62 +(BadCerti\214cateContainsNUL CN)167 176.4 R(contains a NUL character)2.5 +E(BadCerti\214cateT)167 188.4 Q 28.31(ooLong CN)-.8 F(is too long)2.5 E +(BadCerti\214cateUnkno)167 200.4 Q 25.54(wn CN)-.25 F(could not be e)2.5 +E(xtracted)-.15 E +(In the last case, some other \(unspeci\214c\) error occurred.)127 216.6 +Q(${cn_subject})102 232.8 Q 1.251 +(The CN \(common name\) of the presented certi\214cate \(ST)127 244.8 R +(AR)-.93 E 1.251(TTLS only\).)-.6 F(See)6.251 E F0(${cn_issuer})3.751 E +F1(for possible replacements.)127 256.8 Q(${currHeader})102 273 Q .164 +(Header v)127 285 R .164(alue as quoted string \(possibly truncated to) +-.25 F F0(MAXN)2.664 E(AME)-.2 E F1 2.664(\). This)B .163 +(macro is only a)2.664 F -.25(va)-.2 G(il-).25 E +(able in header check rulesets.)127 297 Q(${daemon_addr})102 313.2 Q +(The IP address the daemon is listening on for connections.)127 325.2 Q +(${daemon_f)102 341.4 Q(amily})-.1 E .355(The netw)127 353.4 R .355 +(ork f)-.1 F .356(amily if the daemon is accepting netw)-.1 F .356 +(ork connections.)-.1 F .356(Possible v)5.356 F .356(alues include)-.25 +F(\231inet\232, \231inet6\232, \231iso\232, \231ns\232, \231x.25\232)127 +365.4 Q(${daemon_\215ags})102 381.6 Q .103 +(The \215ags for the daemon as speci\214ed by the Modi\214er= part of) +127 393.6 R F0(DaemonP)2.603 E(ortOptions)-.2 E F1(whereby)2.603 E .548 +(the \215ags are separated from each other by spaces, and upper case \ +\215ags are doubled.)127 405.6 R .549(That is,)5.549 F .37 +(Modi\214er=Ea will be represented as "EE a" in)127 417.6 R F0 +(${daemon_\215ags})2.87 E F1 2.87(,w)C .37(hich is required for testing) +-2.87 F(the \215ags in rulesets.)127 429.6 Q(${daemon_info})102 445.8 Q +4.763(Some information about a daemon as a te)127 457.8 R 4.764 +(xt string.)-.15 F -.15(Fo)9.764 G 7.264(re).15 G 4.764 +(xample, \231SMTP+queue-)-7.414 F(ing@00:30:00\232.)127 469.8 Q +(${daemon_name})102 486 Q .734(The name of the daemon from)127 498 R F0 +(DaemonP)3.234 E(ortOptions)-.2 E F1 .734(Name= suboption.)3.234 F .734 +(If this suboption is)5.734 F +(not set, "Daemon#", where # is the daemon number)127 510 Q 2.5(,i)-.4 G +2.5(su)-2.5 G(sed.)-2.5 E(${daemon_port})102 526.2 Q 1.459 +(The port the daemon is accepting connection on.)127 538.2 R(Unless) +6.459 E F0(DaemonP)3.959 E(ortOptions)-.2 E F1 1.46(is set, this)3.959 F +(will most lik)127 550.2 Q(ely be \23125\232.)-.1 E(${deli)102 566.4 Q +-.15(ve)-.25 G(ryMode}).15 E .806(The current deli)127 578.4 R -.15(ve) +-.25 G .806(ry mode sendmail is using.).15 F .806 +(It is initially set to the v)5.806 F .805(alue of the)-.25 F F0(Deli) +3.305 E -.1(ve)-.1 G(ry-).1 E(Mode)127 590.4 Q F1(option.)2.5 E(${en)102 +606.6 Q(vid})-.4 E(The en)127 618.6 Q -.15(ve)-.4 G +(lope id parameter \(ENVID=\) passed to sendmail as part of the en).15 E +-.15(ve)-.4 G(lope.).15 E(${hdrlen})102 634.8 Q .339 +(The length of the header v)127 646.8 R .339 +(alue which is stored in ${currHeader} \(before possible truncation\).) +-.25 F(If this v)127 658.8 Q(alue is greater than or equal to)-.25 E F0 +(MAXN)2.5 E(AME)-.2 E F1(the header has been truncated.)2.5 E +(${hdr_name})102 675 Q .167(The name of the header \214eld for which th\ +e current header check ruleset has been called.)127 687 R(This)5.166 E +.831(is useful for a def)127 699 R .832(ault header check ruleset to ge\ +t the name of the header; the macro is only)-.1 F -.2(av)127 711 S +(ailable in header check rulesets.)-.05 E 0 Cg EP +%%Page: 52 48 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 193.36(SMM:08-52 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF +(${if_addr})102 96 Q 1.194(The IP address of the interf)127 108 R 1.194 +(ace of an incoming connection unless it is in the loopback net.)-.1 F +(IPv6 addresses are tagged with "IPv6:" before the address.)127 120 Q +(${if_addr_out})102 136.2 Q 1.332(The IP address of the interf)127 148.2 +R 1.333(ace of an outgoing connection unless it is in the loopback net.) +-.1 F(IPv6 addresses are tagged with "IPv6:" before the address.)127 +160.2 Q(${if_f)102 176.4 Q(amily})-.1 E(The IP f)127 188.4 Q +(amily of the interf)-.1 E +(ace of an incoming connection unless it is in the loopback net.)-.1 E +(${if_f)102 204.6 Q(amily_out})-.1 E(The IP f)127 216.6 Q +(amily of the interf)-.1 E +(ace of an outgoing connection unless it is in the loopback net.)-.1 E +(${if_name})102 232.8 Q 1.086(The hostname associated with the interf) +127 244.8 R 1.086(ace of an incoming connection.)-.1 F 1.086 +(This macro can be)6.086 F(used for SmtpGreetingMessage and HRecei)127 +256.8 Q -.15(ve)-.25 G 2.5(df).15 G(or virtual hosting.)-2.5 E -.15(Fo)5 +G 2.5(re).15 G(xample:)-2.65 E 2.5(OS)167 273 S +(mtpGreetingMessage=$?{if_name}${if_name}$|$j$. MT)-2.5 E(A)-.93 E +(${if_name_out})102 293.4 Q(The name of the interf)127 305.4 Q +(ace of an outgoing connection.)-.1 E(${load_a)102 321.6 Q(vg})-.2 E +(The current load a)127 333.6 Q -.15(ve)-.2 G(rage.).15 E(${mail_addr}) +102 349.8 Q 1.239(The address part of the resolv)127 361.8 R 1.239 +(ed triple of the address gi)-.15 F -.15(ve)-.25 G 3.739(nf).15 G 1.239 +(or the)-3.739 F/F2 9/Times-Roman@0 SF 1.24(SMTP MAIL)3.739 F F1 +(command.)3.74 E(De\214ned in the SMTP serv)127 373.8 Q(er only)-.15 E +(.)-.65 E(${mail_host})102 390 Q .146(The host from the resolv)127 402 R +.146(ed triple of the address gi)-.15 F -.15(ve)-.25 G 2.646(nf).15 G +.146(or the)-2.646 F F2 .145(SMTP MAIL)2.646 F F1 2.645 +(command. De\214ned)2.645 F(in the SMTP serv)127 414 Q(er only)-.15 E(.) +-.65 E(${mail_mailer})102 430.2 Q 2.14(The mailer from the resolv)127 +442.2 R 2.14(ed triple of the address gi)-.15 F -.15(ve)-.25 G 4.641(nf) +.15 G 2.141(or the)-4.641 F F2 2.141(SMTP MAIL)4.641 F F1(command.)4.641 +E(De\214ned in the SMTP serv)127 454.2 Q(er only)-.15 E(.)-.65 E +(${msg_id})102 470.4 Q(The v)127 482.4 Q(alue of the Message-Id: header) +-.25 E(.)-.55 E(${msg_size})102 498.6 Q 1.033(The v)127 510.6 R 1.033 +(alue of the SIZE= parameter)-.25 F 3.533(,i)-.4 G 1.032 +(.e., usually the size of the message \(in an ESMTP dia-)-3.533 F 1.252 +(logue\), before the message has been collected, thereafter the message\ + size as computed by)127 522.6 R/F3 10/Times-Italic@0 SF(sendmail)127 +534.6 Q F1(\(and can be used in check_compat\).)2.5 E(${nbadrcpts})102 +550.8 Q(The number of bad recipients for a single message.)127 562.8 Q +(${nrcpts})102 579 Q .049(The number of v)127 591 R .049 +(alidated recipients for a single message.)-.25 F .048 +(Note: since recipient v)5.048 F .048(alidation hap-)-.25 F .472 +(pens after)127 603 R F3 -.15(ch)2.973 G(ec).15 E(k_r)-.2 E(cpt)-.37 E +F1 .473(has been called, the v)2.973 F .473 +(alue in this ruleset is one less than what might be)-.25 F -.15(ex)127 +615 S(pected.).15 E(${ntries})102 631.2 Q(The number of deli)127 643.2 Q +-.15(ve)-.25 G(ry attempts.).15 E(${opMode})102 659.4 Q +(The current operation mode \(from the)127 671.4 Q F02.5 E F1 +(\215ag\).)2.5 E(${quarantine})102 687.6 Q +(The quarantine reason for the en)127 699.6 Q -.15(ve)-.4 G +(lope, if it is quarantined.).15 E 0 Cg EP +%%Page: 53 49 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-53)195.86 E/F1 10/Times-Roman@0 SF(${queue_interv)102 96 Q(al}) +-.25 E .362(The queue run interv)127 108 R .362(al gi)-.25 F -.15(ve) +-.25 G 2.862(nb).15 G 2.862(yt)-2.862 G(he)-2.862 E F02.861 E F1 +2.861(\215ag. F)2.861 F .361(or e)-.15 F(xample,)-.15 E F0(\255q30m) +2.861 E F1 -.1(wo)2.861 G .361(uld set).1 F F0(${queue_inter)2.861 E(-) +-.37 E -.1(va)127 120 S(l}).1 E F1(to \23100:30:00\232.)2.5 E +(${rcpt_addr})102 136.2 Q 1.271(The address part of the resolv)127 148.2 +R 1.272(ed triple of the address gi)-.15 F -.15(ve)-.25 G 3.772(nf).15 G +1.272(or the)-3.772 F/F2 9/Times-Roman@0 SF 1.272(SMTP RCPT)3.772 F F1 +(command.)3.772 E(De\214ned in the SMTP serv)127 160.2 Q +(er only after a RCPT command.)-.15 E(${rcpt_host})102 176.4 Q .179 +(The host from the resolv)127 188.4 R .178(ed triple of the address gi) +-.15 F -.15(ve)-.25 G 2.678(nf).15 G .178(or the)-2.678 F F2 .178 +(SMTP RCPT)2.678 F F1 2.678(command. De\214ned)2.678 F(in the SMTP serv) +127 200.4 Q(er only after a RCPT command.)-.15 E(${rcpt_mailer})102 +216.6 Q 2.175(The mailer from the resolv)127 228.6 R 2.175 +(ed triple of the address gi)-.15 F -.15(ve)-.25 G 4.675(nf).15 G 2.175 +(or the)-4.675 F F2 2.176(SMTP RCPT)4.676 F F1(command.)4.676 E +(De\214ned in the SMTP serv)127 240.6 Q(er only after a RCPT command.) +-.15 E(${serv)102 256.8 Q(er_addr})-.15 E .515(The address of the serv) +127 268.8 R .514(er of the current outgoing SMTP connection.)-.15 F -.15 +(Fo)5.514 G 3.014(rL).15 G .514(MTP deli)-3.014 F -.15(ve)-.25 G .514 +(ry the).15 F(macro is set to the name of the mailer)127 280.8 Q(.)-.55 +E(${serv)102 297 Q(er_name})-.15 E(The name of the serv)127 309 Q +(er of the current outgoing SMTP or LMTP connection.)-.15 E(${time})102 +325.2 Q .006(The output of the)127 337.2 R/F3 10/Times-Italic@0 SF(time) +2.506 E F1 .007(\(3\) function, i.e., the number of seconds since 0 hou\ +rs, 0 minutes, 0 sec-)B(onds, January 1, 1970, Coordinated Uni)127 349.2 +Q -.15(ve)-.25 G(rsal T).15 E(ime \(UTC\).)-.35 E(${tls_v)102 365.4 Q +(ersion})-.15 E .85(The TLS/SSL v)127 377.4 R .849(ersion used for the \ +connection, e.g., TLSv1.2, TLSv1; de\214ned after ST)-.15 F(AR)-.93 E +-.92(T-)-.6 G(TLS has been used.)127 389.4 Q(${total_rate})102 405.6 Q +1.373(The total number of incoming connections o)127 417.6 R -.15(ve) +-.15 G 3.873(rt).15 G 1.373(he time interv)-3.873 F 1.374 +(al speci\214ed by Connection-)-.25 F(RateW)127 429.6 Q(indo)-.4 E +(wSize.)-.25 E(${v)102 445.8 Q(erify})-.15 E 1.141(The result of the v) +127 457.8 R 1.141 +(eri\214cation of the presented cert; only de\214ned after ST)-.15 F(AR) +-.93 E 1.14(TTLS has been)-.6 F(used \(or attempted\).)127 469.8 Q +(Possible v)5 E(alues are:)-.25 E 48.06(OK v)167 486 R +(eri\214cation succeeded.)-.15 E 48.06(NO no)167 498 R(cert presented.) +2.5 E(NO)167 510 Q 44.85(Tn)-.4 G 2.5(oc)-44.85 G(ert requested.)-2.5 E +-.74(FA)167 522 S 41.02(IL cert).74 F(presented b)2.5 E +(ut could not be v)-.2 E(eri\214ed,)-.15 E +(e.g., the signing CA is missing.)232 534 Q 34.73(NONE ST)167 546 R(AR) +-.93 E(TTLS has not been performed.)-.6 E 29.72(CLEAR ST)167 558 R(AR) +-.93 E(TTLS has been disabled internally for a clear te)-.6 E(xt deli) +-.15 E -.15(ve)-.25 G(ry attempt.).15 E 35.83(TEMP temporary)167 570 R +(error occurred.)2.5 E(PR)167 582 Q -1.88 -.4(OT O)-.4 H 10.7(COL some) +.4 F(protocol error occurred)2.5 E(at the ESMTP le)232 594 Q -.15(ve) +-.25 G 2.5(l\().15 G(not TLS\).)-2.5 E(SOFTW)167 606 Q 9.81(ARE ST)-1.2 +F(AR)-.93 E(TTLS handshak)-.6 E 2.5(ef)-.1 G(ailed,)-2.6 E(which is a f) +232 618 Q(atal error for this session,)-.1 E(the e-mail will be queued.) +232 630 Q .749(There are three types of dates that can be used.)127 +650.4 R(The)5.749 E F0($a)3.249 E F1(and)3.249 E F0($b)3.249 E F1 .749 +(macros are in RFC 822 for)3.249 F(-)-.2 E(mat;)102 662.4 Q F0($a)3.214 +E F1 .714(is the time as e)3.214 F .713 +(xtracted from the \231Date:\232 line of the message \(if there w)-.15 F +.713(as one\), and)-.1 F F0($b)3.213 E F1(is)3.213 E .056 +(the current date and time \(used for postmarks\).)102 674.4 R .057 +(If no \231Date:\232 line is found in the incoming message,)5.056 F F0 +($a)102 686.4 Q F1 .305(is set to the current time also.)2.805 F(The) +5.305 E F0($d)2.805 E F1 .304(macro is equi)2.805 F -.25(va)-.25 G .304 +(lent to the).25 F F0($b)2.804 E F1 .304(macro in UNIX \(ctime\) for) +2.804 F(-)-.2 E(mat.)102 698.4 Q 0 Cg EP +%%Page: 54 50 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 193.36(SMM:08-54 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF .238 +(The macros)127 96 R F0($w)2.738 E F1(,)A F0($j)2.738 E F1 2.738(,a)C +(nd)-2.738 E F0($m)2.738 E F1 .238 +(are set to the identity of this host.)2.738 F/F2 10/Times-Italic@0 SF +(Sendmail)5.239 E F1 .239(tries to \214nd the fully)2.739 F .335(quali\ +\214ed name of the host if at all possible; it does this by calling)102 +108 R F2 -.1(ge)2.834 G(thostname).1 E F1 .334(\(2\) to get the current) +B .457(hostname and then passing that to)102 120 R F2 -.1(ge)2.957 G +(thostbyname).1 E F1 .457 +(\(3\) which is supposed to return the canonical v)B(er)-.15 E(-)-.2 E +.279(sion of that host name.)102 134 R/F3 7/Times-Roman@0 SF(17)-4 I F1 +.279(Assuming this is successful,)2.779 4 N F0($j)2.778 E F1 .278 +(is set to the fully quali\214ed name and)2.778 F F0($m)2.778 E F1(is) +2.778 E .706(set to the domain part of the name \(e)102 146 R -.15(ve) +-.25 G .706(rything after the \214rst dot\).).15 F(The)5.706 E F0($w) +3.206 E F1 .706(macro is set to the \214rst)3.206 F -.1(wo)102 158 S +.359(rd \(e).1 F -.15(ve)-.25 G .358 +(rything before the \214rst dot\) if you ha).15 F .658 -.15(ve a l)-.2 H +-2.15 -.25(ev e).15 H 2.858(l5o).25 G 2.858(rh)-2.858 G .358 +(igher con\214guration \214le; otherwise, it)-2.858 F .404 +(is set to the same v)102 170 R .405(alue as)-.25 F F0($j)2.905 E F1 +5.405(.I)C 2.905(ft)-5.405 G .405 +(he canoni\214cation is not successful, it is imperati)-2.905 F .705 +-.15(ve t)-.25 H .405(hat the con\214g).15 F(\214le set)102 184 Q F0($j) +2.5 E F1(to the fully quali\214ed domain name)2.5 E F3(18)-4 I F1(.)4 I +(The)127 200.2 Q F0($f)2.833 E F1 .333(macro is the id of the sender as\ + originally determined; when mailing to a speci\214c host)2.833 F(the) +102 212.2 Q F0($g)3.224 E F1 .724 +(macro is set to the address of the sender)3.224 F F2 -.37(re)3.225 G +.725(lative to the r).37 F(ecipient.)-.37 E F1 -.15(Fo)5.725 G 3.225(re) +.15 G .725(xample, if I send to)-3.375 F(\231bollard@matisse.CS.Berk)102 +224.2 Q(ele)-.1 E -.65(y.)-.15 G .425(EDU\232 from the machine \231v).65 +F(angogh.CS.Berk)-.25 E(ele)-.1 E -.65(y.)-.15 G .424(EDU\232 the).65 F +F0($f)2.924 E F1(macro)2.924 E(will be \231eric\232 and the)102 236.2 Q +F0($g)2.5 E F1(macro will be \231eric@v)2.5 E(angogh.CS.Berk)-.25 E(ele) +-.1 E -.65(y.)-.15 G(EDU.).65 E<9a>-.7 E(The)127 252.4 Q F0($x)2.562 E +F1 .062(macro is set to the full name of the sender)2.562 F 5.062(.T) +-.55 G .062(his can be determined in se)-5.062 F -.15(ve)-.25 G .063 +(ral w).15 F 2.563(ays. It)-.1 F .63(can be passed as \215ag to)102 +264.4 R F2(sendmail)3.13 E F1 5.629(.I)C 3.129(tc)-5.629 G .629 +(an be de\214ned in the)-3.129 F/F4 9/Times-Roman@0 SF -.315(NA)3.129 G +(ME).315 E F1(en)3.129 E .629(vironment v)-.4 F 3.129(ariable. The)-.25 +F(third)3.129 E .948(choice is the v)102 276.4 R .948 +(alue of the \231Full-Name:\232 line in the header if it e)-.25 F .949 +(xists, and the fourth choice is the)-.15 F .526 +(comment \214eld of a \231From:\232 line.)102 288.4 R .526 +(If all of these f)5.526 F .526 +(ail, and if the message is being originated locally)-.1 F(,)-.65 E +(the full name is look)102 300.4 Q(ed up in the)-.1 E F2(/etc/passwd)2.5 +E F1(\214le.)2.5 E 1.32(When sending, the)127 316.6 R F0($h)3.82 E F1(,) +A F0($u)3.82 E F1 3.82(,a)C(nd)-3.82 E F0($z)3.82 E F1 1.321 +(macros get set to the host, user)3.82 F 3.821(,a)-.4 G 1.321 +(nd home directory \(if)-3.821 F .517(local\) of the recipient.)102 +328.6 R .517(The \214rst tw)5.517 F 3.016(oa)-.1 G .516(re set from the) +-3.016 F F0($@)3.016 E F1(and)3.016 E F0($:)3.016 E F1 .516 +(part of the re)3.016 F .516(writing rules, respec-)-.25 F(ti)102 340.6 +Q -.15(ve)-.25 G(ly).15 E(.)-.65 E(The)127 356.8 Q F0($p)3.806 E F1(and) +3.806 E F0($t)3.806 E F1 1.306(macros are used to create unique strings\ + \(e.g., for the \231Message-Id:\232 \214eld\).)3.806 F(The)102 368.8 Q +F0($i)3.252 E F1 .751(macro is set to the queue id on this host; if put\ + into the timestamp line it can be e)3.252 F(xtremely)-.15 E .164 +(useful for tracking messages.)102 380.8 R(The)5.164 E F0($v)2.664 E F1 +.164(macro is set to be the v)2.664 F .165(ersion number of)-.15 F F2 +(sendmail)2.665 E F1 2.665(;t)C .165(his is nor)-2.665 F(-)-.2 E +(mally put in timestamps and has been pro)102 392.8 Q -.15(ve)-.15 G 2.5 +(ne).15 G(xtremely useful for deb)-2.65 E(ugging.)-.2 E(The)127 409 Q F0 +($c)3.548 E F1 1.048(\214eld is set to the \231hop count,)3.548 F 3.548 +<9a69>-.7 G 1.048(.e., the number of times this message has been pro-) +-3.548 F 2.856(cessed. This)102 421 R .356(can be determined by the) +2.856 F F02.856 E F1 .357 +(\215ag on the command line or by counting the timestamps)2.856 F +(in the message.)102 433 Q(The)127 449.2 Q F0($r)2.833 E F1(and)2.833 E +F0($s)2.833 E F1 .333 +(\214elds are set to the protocol used to communicate with)2.833 F F2 +(sendmail)2.833 E F1 .333(and the send-)2.833 F .194(ing hostname.)102 +461.2 R(The)5.194 E 2.694(yc)-.15 G .194(an be set together using the) +-2.694 F F02.694 E F1 .194 +(command line \215ag or separately using the)2.694 F F02.695 E F1 +(or)102 473.2 Q F0(\255oM)2.5 E F1(\215ags.)2.5 E(The)127 489.4 Q F0($_) +2.967 E F1 .467(is set to a v)2.967 F .467(alidated sender host name.) +-.25 F .466(If the sender is running an RFC 1413 compli-)5.467 F .384 +(ant IDENT serv)102 501.4 R .384(er and the recei)-.15 F -.15(ve)-.25 G +2.884(rh).15 G .384 +(as the IDENT protocol turned on, it will include the user name)-2.884 F +(on that host.)102 513.4 Q(The)127 529.6 Q F0(${client_name})5.98 E F1 +(,)A F0(${client_addr})5.98 E F1 5.98(,a)C(nd)-5.98 E F0(${client_port}) +5.98 E F1 3.48(macros are set to the name,)5.98 F .786 +(address, and port number of the SMTP client who is in)102 541.6 R -.2 +(vo)-.4 G(king).2 E F2(sendmail)3.286 E F1 .786(as a serv)3.286 F(er) +-.15 E 5.786(.T)-.55 G .786(hese can be)-5.786 F(used in the)102 553.6 Q +F2 -.15(ch)2.5 G(ec).15 E(k_*)-.2 E F1(rulesets \(using the)2.5 E F0($&) +2.5 E F1(deferred e)2.5 E -.25(va)-.25 G(luation form, of course!\).).25 +E F0 2.5(5.3. C)87 577.6 R(and F \212 De\214ne Classes)2.5 E F1 .66(Cla\ +sses of phrases may be de\214ned to match on the left hand side of re) +127 593.8 R .659(writing rules, where a)-.25 F .464(\231phrase\232 is a\ + sequence of characters that does not contain space characters.)102 +605.8 R -.15(Fo)5.465 G 2.965(re).15 G .465(xample a class of)-3.115 F +.654(all local names for this site might be created so that attempts to\ + send to oneself can be eliminated.)102 617.8 R .041(These can either b\ +e de\214ned directly in the con\214guration \214le or read in from anot\ +her \214le.)102 629.8 R .041(Classes are)5.041 F .649 +(named as a single letter or a w)102 641.8 R .649(ord in {braces}.)-.1 F +.649(Class names be)5.649 F .649(ginning with lo)-.15 F .648 +(wer case letters and)-.25 F .638(special characters are reserv)102 +653.8 R .638(ed for system use.)-.15 F .639 +(Classes de\214ned in con\214g \214les may be gi)5.639 F -.15(ve)-.25 G +3.139(nn).15 G(ames)-3.139 E 1.05 +(from the set of upper case letters for short names or be)102 665.8 R +1.05(ginning with an upper case letter for long)-.15 F .32 LW 76 675.4 +72 675.4 DL 80 675.4 76 675.4 DL 84 675.4 80 675.4 DL 88 675.4 84 675.4 +DL 92 675.4 88 675.4 DL 96 675.4 92 675.4 DL 100 675.4 96 675.4 DL 104 +675.4 100 675.4 DL 108 675.4 104 675.4 DL 112 675.4 108 675.4 DL 116 +675.4 112 675.4 DL 120 675.4 116 675.4 DL 124 675.4 120 675.4 DL 128 +675.4 124 675.4 DL 132 675.4 128 675.4 DL 136 675.4 132 675.4 DL 140 +675.4 136 675.4 DL 144 675.4 140 675.4 DL 148 675.4 144 675.4 DL 152 +675.4 148 675.4 DL 156 675.4 152 675.4 DL 160 675.4 156 675.4 DL 164 +675.4 160 675.4 DL 168 675.4 164 675.4 DL 172 675.4 168 675.4 DL 176 +675.4 172 675.4 DL 180 675.4 176 675.4 DL 184 675.4 180 675.4 DL 188 +675.4 184 675.4 DL 192 675.4 188 675.4 DL 196 675.4 192 675.4 DL 200 +675.4 196 675.4 DL 204 675.4 200 675.4 DL 208 675.4 204 675.4 DL 212 +675.4 208 675.4 DL 216 675.4 212 675.4 DL/F5 5/Times-Roman@0 SF(17)93.6 +685.8 Q/F6 8/Times-Roman@0 SF -.12(Fo)3.2 K 2(re).12 G +(xample, on some systems)-2.12 E/F7 8/Times-Italic@0 SF -.08(ge)2 G +(thostname).08 E F6(might return \231foo\232 which w)2 E +(ould be mapped to \231foo.bar)-.08 E(.com\232 by)-.44 E F7 -.08(ge)2 G +(thostbyname).08 E F6(.)A F5(18)93.6 699.4 Q F6(Older v)3.2 I +(ersions of sendmail didn')-.12 E 2(tp)-.144 G(re-de\214ne)-2 E/F8 8 +/Times-Bold@0 SF($j)2 E F6(at all, so up until 8.6, con\214g \214les)2 E +F7(always)2 E F6(had to de\214ne)2 E F8($j)2 E F6(.)A 0 Cg EP +%%Page: 55 51 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-55)195.86 E/F1 10/Times-Roman@0 SF(names.)102 96 Q +(The syntax is:)127 112.2 Q F0(C)142 128.4 Q/F2 10/Times-Italic@0 SF +1.666(cp)C(hr)-1.666 E(ase1 phr)-.15 E(ase2...)-.15 E F0(F)142 140.4 Q +F2 1.666<638c>C(le)-1.666 E F0(F)142 152.4 Q F2 1.666(c|)C(pr)-1.666 E +-.1(og)-.45 G -.15(ra).1 G(m).15 E F0(F)142 164.4 Q F2 1.666(c[)C(mapk) +-1.666 E -.3(ey)-.1 G(]@mapclass:mapspec).3 E F1 .035 +(The \214rst form de\214nes the class)102 180.6 R F2(c)2.535 E F1 .035 +(to match an)2.535 F 2.535(yo)-.15 G 2.535(ft)-2.535 G .035(he named w) +-2.535 F 2.535(ords. If)-.1 F F2(phr)2.536 E(ase1)-.15 E F1(or)2.536 E +F2(phr)2.536 E(ase2)-.15 E F1 .036(is another)2.536 F .747(class, e.g.,) +102 192.6 R F2($=S)3.247 E F1 3.247(,t)C .747(he contents of class) +-3.247 F F2(S)3.246 E F1 .746(are added to class)3.246 F F2(c)3.246 E F1 +5.746(.I)C 3.246(ti)-5.746 G 3.246(sp)-3.246 G .746 +(ermissible to split them among)-3.246 F(multiple lines; for e)102 204.6 +Q(xample, the tw)-.15 E 2.5(of)-.1 G(orms:)-2.5 E(CHmonet ucbmonet)142 +220.8 Q(and)102 237 Q(CHmonet)142 253.2 Q(CHucbmonet)142 265.2 Q 1.015 +(are equi)102 281.4 R -.25(va)-.25 G 3.515(lent. The).25 F -.74(``)3.516 +G(F').74 E 3.516('f)-.74 G 1.016(orms read the elements of the class) +-3.516 F F2(c)3.516 E F1 1.016(from the named)3.516 F F2(\214le)3.516 E +F1(,)A F2(pr)3.516 E -.1(og)-.45 G -.15(ra).1 G(m).15 E F1 3.516(,o)C(r) +-3.516 E F2 .162(map speci\214cation)102 293.4 R F1 5.162(.E)C .161 +(ach element should be listed on a separate line.)-5.162 F 1.761 -.8 +(To s)5.161 H .161(pecify an optional \214le, use).8 F -.74(``)102 305.4 +S(\255o').74 E 2.5('b)-.74 G +(etween the class name and the \214le name, e.g.,)-2.5 E +(Fc \255o /path/to/\214le)142 321.6 Q .396(If the \214le can')102 337.8 +R 2.896(tb)-.18 G 2.896(eu)-2.896 G(sed,)-2.896 E F2(sendmail)2.896 E F1 +.396(will not complain b)2.896 F .396(ut silently ignore it.)-.2 F .396 +(The map form should be)5.396 F .364(an optional map k)102 349.8 R -.15 +(ey)-.1 G 2.864(,a)-.5 G 2.864(na)-2.864 G 2.864(ts)-2.864 G .363 +(ign, and a map class follo)-2.864 F .363 +(wed by the speci\214cation for that map.)-.25 F(Exam-)5.363 E +(ples include:)102 361.8 Q(F{V)142 378 Q(irtHosts}@ldap:\255k \(&\(obje\ +ctClass=virtHosts\)\(host=*\)\) \255v host)-.6 E +(F{MyClass}foo@hash:/etc/mail/classes)142 390 Q .95 +(will \214ll the class)102 406.2 R F0($={V)3.45 E(irtHosts})-.37 E F1 +.951(from an LD)3.45 F .951(AP map lookup and)-.4 F F0($={MyClass})3.451 +E F1 .951(from a hash data-)3.451 F .017(base map lookup of the)102 +418.2 R F0 -.25(fo)2.517 G(o).25 E F1 5.017(.T)C .017(here is also a b) +-5.017 F .016(uilt-in schema that can be accessed by only specifying:) +-.2 F(F{)142 434.4 Q F2(ClassName)A F1(}@LD)A(AP)-.4 E +(This will tell sendmail to use the def)102 450.6 Q(ault schema:)-.1 E +(\255k \(&\(objectClass=sendmailMT)142 466.8 Q -.4(AC)-.93 G(lass\)).4 E +(\(sendmailMT)154.5 478.8 Q -.4(AC)-.93 G(lassName=).4 E F2(ClassName)A +F1(\))A(\(|\(sendmailMT)154.5 490.8 Q -.4(AC)-.93 G(luster=${sendmailMT) +.4 E -.4(AC)-.93 G(luster}\)).4 E(\(sendmailMT)159.5 502.8 Q +(AHost=$j\)\)\))-.93 E(\255v sendmailMT)142 514.8 Q -.4(AC)-.93 G(lassV) +.4 E(alue)-1.11 E +(Note that the lookup is only done when sendmail is initially started.) +102 531 Q 1.339(Elements of classes can be accessed in rules using)127 +547.2 R F0($=)3.839 E F1(or)3.839 E F0($~)3.839 E F1 6.339(.T)C(he) +-6.339 E F0($~)3.839 E F1 1.339(\(match entries not in)3.839 F +(class\) only matches a single w)102 559.2 Q(ord; multi-w)-.1 E +(ord entries in the class are ignored in this conte)-.1 E(xt.)-.15 E +(Some classes ha)127 575.4 Q .3 -.15(ve i)-.2 H(nternal meaning to).15 E +F2(sendmail)2.5 E F1(:)A 18.42($=e contains)102 591.6 R .562 +(the Content-T)3.062 F(ransfer)-.35 E .562(-Encodings that can be 8)-.2 +F/F3 10/Symbol SFA F1 3.062(7b)C .562(it encoded.)-3.062 F .561 +(It is prede\214ned to)5.561 F +(contain \2317bit\232, \2318bit\232, and \231binary\232.)138 603.6 Q +17.86($=k set)102 619.8 R(to be the same as)2.5 E F0($k)2.5 E F1 2.5(,t) +C(hat is, the UUCP node name.)-2.5 E 15.08($=m set)102 636 R +(to the set of domains by which this host is kno)2.5 E +(wn, initially just)-.25 E F0($m)2.5 E F1(.)A 17.86($=n can)102 652.2 R +.58(be set to the set of MIME body types that can ne)3.08 F -.15(ve)-.25 +G 3.081(rb).15 G 3.081(ee)-3.081 G .581(ight to se)-3.081 F -.15(ve)-.25 +G 3.081(nb).15 G .581(it encoded.)-3.081 F(It)5.581 E(def)138 664.2 Q +1.81(aults to \231multipart/signed\232.)-.1 F 1.81 +(Message types \231message/*\232 and \231multipart/*\232 are ne)6.81 F +-.15(ve)-.25 G(r).15 E 1.853(encoded directly)138 676.2 R 6.853(.M)-.65 +G 1.853(ultipart messages are al)-6.853 F -.1(wa)-.1 G 1.853 +(ys handled recursi).1 F -.15(ve)-.25 G(ly).15 E 6.853(.T)-.65 G 1.853 +(he handling of)-6.853 F(message/* messages are controlled by class)138 +688.2 Q F0($=s)2.5 E F1(.)A 17.86($=q A)102 704.4 R .712 +(set of Content-T)3.212 F .712(ypes that will ne)-.8 F -.15(ve)-.25 G +3.212(rb).15 G 3.212(ee)-3.212 G .712(ncoded as base64 \(if the)-3.212 F +3.212(yh)-.15 G -2.25 -.2(av e)-3.212 H .711(to be encoded,)3.412 F(the) +138 716.4 Q 3.357(yw)-.15 G .858(ill be encoded as quoted-printable\).) +-3.357 F .858(It can ha)5.858 F 1.158 -.15(ve p)-.2 H .858 +(rimary types \(e.g., \231te).15 F .858(xt\232\) or full)-.15 F 0 Cg EP +%%Page: 56 52 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 193.36(SMM:08-56 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF +(types \(such as \231te)138 96 Q(xt/plain\232\).)-.15 E 18.97 +($=s contains)102 112.2 R .648 +(the set of subtypes of message that can be treated recursi)3.148 F -.15 +(ve)-.25 G(ly).15 E 5.648(.B)-.65 G 3.148(yd)-5.648 G(ef)-3.148 E .648 +(ault it con-)-.1 F .969(tains only \231rfc822\232.)138 124.2 R .969 +(Other \231message/*\232 types cannot be 8)5.969 F/F2 10/Symbol SFA +F1 3.469(7b)C .969(it encoded.)-3.469 F .97(If a message)5.97 F 1.045 +(containing eight bit data is sent to a se)138 136.2 R -.15(ve)-.25 G +3.545(nb).15 G 1.045(it host, and that message cannot be encoded)-3.545 +F(into se)138 148.2 Q -.15(ve)-.25 G 2.5(nb).15 G +(its, it will be stripped to 7 bits.)-2.5 E 20.08($=t set)102 164.4 R +.372(to the set of trusted users by the)2.872 F F0(T)2.872 E F1 .372 +(con\214guration line.)2.872 F .372(If you w)5.372 F .373 +(ant to read trusted users)-.1 F(from a \214le, use)138 176.4 Q F0(Ft) +2.5 E/F3 10/Times-Italic@0 SF(/\214le/name)A F1(.)A 15.64($=w set)102 +192.6 R .513(to be the set of all names this host is kno)3.013 F .513 +(wn by)-.25 F 5.513(.T)-.65 G .513(his can be used to match local host-) +-5.513 F(names.)138 204.6 Q($={persistentMacros})102 220.8 Q 1.712 +(set to the macros that should be sa)138 232.8 R -.15(ve)-.2 G 4.212(da) +.15 G 1.712(cross queue runs.)-4.212 F 1.712(Care should be tak)6.712 F +1.712(en when)-.1 F(adding macro names to this class.)138 244.8 Q F3 +(Sendmail)127 261 Q F1 .183(can be compiled to allo)2.683 F 2.683(wa) +-.25 G F3(scanf)-.001 E F1 .182(\(3\) string on the)B F0(F)2.682 E F1 +2.682(line. This)2.682 F .182(lets you do simplistic)2.682 F .554 +(parsing of te)102 273 R .554(xt \214les.)-.15 F -.15(Fo)5.554 G 3.054 +(re).15 G .554(xample, to read all the user names in your system)-3.204 +F F3(/etc/passwd)3.055 E F1 .555(\214le into a)3.055 F(class, use)102 +285 Q(FL/etc/passwd %[^:])142 301.2 Q(which reads e)102 317.4 Q -.15(ve) +-.25 G(ry line up to the \214rst colon.).15 E F0 2.5(5.4. M)87 341.4 R +2.5<8a44>2.5 G(e\214ne Mailer)-2.5 E F1(Programs and interf)127 357.6 Q +(aces to mailers are de\214ned in this line.)-.1 E(The format is:)5 E F0 +(M)142 373.8 Q F3(name)A F1 2.5(,{)C F3(\214eld)-2.5 E F1(=)A F3(value)A +F1(}*)1.666 E(where)102 390 Q F3(name)4.244 E F1 1.744(is the name of t\ +he mailer \(used internally only\) and the \231\214eld=name\232 pairs d\ +e\214ne)4.244 F(attrib)102 402 Q(utes of the mailer)-.2 E 5(.F)-.55 G +(ields are:)-5 E -.15(Pa)142 418.2 S 51.87(th The).15 F +(pathname of the mailer)2.5 E 47.83(Flags Special)142 430.2 R +(\215ags for this mailer)2.5 E 41.73(Sender Re)142 442.2 R +(writing set\(s\) for sender addresses)-.25 E 31.17(Recipient Re)142 +454.2 R(writing set\(s\) for recipient addresses)-.25 E 30.62 +(recipients Maximum)142 466.2 R(number of recipients per connection)2.5 +E(Ar)142 478.2 Q 49.13(gv An)-.18 F(ar)2.5 E(gument v)-.18 E +(ector to pass to this mailer)-.15 E 55.61(Eol The)142 490.2 R +(end-of-line string for this mailer)2.5 E 35.62(Maxsize The)142 502.2 R +(maximum message length to this mailer)2.5 E 14.51(maxmessages The)142 +514.2 R(maximum message deli)2.5 E -.15(ve)-.25 G(ries per connection) +.15 E 32.27(Linelimit The)142 526.2 R +(maximum line length in the message body)2.5 E 31.18(Directory The)142 +538.2 R -.1(wo)2.5 G(rking directory for the mailer).1 E 42.84 +(Userid The)142 550.2 R(def)2.5 E(ault user and group id to run as)-.1 E +50.62(Nice The)142 562.2 R(nice\(2\) increment for the mailer)2.5 E +38.95(Charset The)142 574.2 R(def)2.5 E +(ault character set for 8-bit characters)-.1 E -.8(Ty)142 586.2 S 49.75 +(pe T).8 F(ype information for DSN diagnostics)-.8 E -.8(Wa)142 598.2 S +50.86(it The).8 F(maximum time to w)2.5 E(ait for the mailer)-.1 E +(Queue)142 610.2 Q 20.22(group The)-.15 F(def)2.5 E +(ault queue group for the mailer)-.1 E 69.22(/T)142 622.2 S +(he root directory for the mailer)-69.22 E +(Only the \214rst character of the \214eld name is check)102 638.4 Q +(ed \(it')-.1 E 2.5(sc)-.55 G(ase-sensiti)-2.5 E -.15(ve)-.25 G(\).).15 +E .396(The follo)127 654.6 R .396 +(wing \215ags may be set in the mailer description.)-.25 F(An)5.396 E +2.896(yo)-.15 G .397(ther \215ags may be used freely)-2.896 F .075(to c\ +onditionally assign headers to messages destined for particular mailers\ +.)102 666.6 R .075(Flags mark)5.075 F .075(ed with \207 are)-.1 F 1.192 +(not interpreted by the)102 678.6 R F3(sendmail)3.692 E F1 1.193 +(binary; these are the con)3.692 F -.15(ve)-.4 G 1.193 +(ntionally used to correlate to the \215ags).15 F .738(portion of the) +102 690.6 R F0(H)3.238 E F1 3.237(line. Flags)3.238 F(mark)3.237 E .737 +(ed with \210 apply to the mailers for the sender address rather than) +-.1 F(the usual recipient mailers.)102 702.6 Q 0 Cg EP +%%Page: 57 53 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-57)195.86 E/F1 10/Times-Roman@0 SF 15.56(aR)102 96 S .987(un Ex\ +tended SMTP \(ESMTP\) protocol \(de\214ned in RFCs 1869, 1652, and 1870\ +\).)-15.56 F .987(This \215ag)5.987 F(def)122 108 Q +(aults on if the SMTP greeting message includes the w)-.1 E +(ord \231ESMTP\232.)-.1 E 12.78(AL)102 124.2 S .852 +(ook up the user \(address\) part of the resolv)-12.78 F .852 +(ed mailer triple, in the alias database.)-.15 F(Normally)5.852 E +(this is only set for local mailers.)122 136.2 Q 15(bF)102 152.4 S .456 +(orce a blank line on the end of a message.)-15.15 F .456 +(This is intended to w)5.456 F .456(ork around some stupid v)-.1 F(er) +-.15 E(-)-.2 E .362(sions of /bin/mail that require a blank line, b)122 +164.4 R .362(ut do not pro)-.2 F .362(vide it themselv)-.15 F 2.861 +(es. It)-.15 F -.1(wo)2.861 G .361(uld not nor).1 F(-)-.2 E +(mally be used on netw)122 176.4 Q(ork mail.)-.1 E 13.33(BS)102 192.6 S +.142(trip leading backslashes \(\\\) of)-13.33 F 2.643(fo)-.25 G 2.643 +(ft)-2.643 G .143 +(he address; this is a subset of the functionality of the)-2.643 F F0(s) +2.643 E F1(\215ag.)2.643 E 15.56(cD)102 208.8 S 2.663(on)-15.56 G .163 +(ot include comments in addresses.)-2.663 F .163 +(This should only be used if you ha)5.163 F .463 -.15(ve t)-.2 H 2.663 +(ow).15 G .163(ork around a)-2.763 F 1.846 +(remote mailer that gets confused by comments.)122 220.8 R 1.846 +(This strips addresses of the form \231Phrase)6.846 F +(
\232 or \231address \(Comment\)\232 do)122 232.8 Q +(wn to just \231address\232.)-.25 E 5.83(C\210 If)102 249 R .214 +(mail is)2.714 F/F2 10/Times-Italic@0 SF -.37(re)2.714 G(ceived).37 E F1 +.213(from a mailer with this \215ag set, an)2.713 F 2.713(ya)-.15 G .213 +(ddresses in the header that do not ha)-2.713 F -.15(ve)-.2 G .97 +(an at sign \(\231@\232\) after being re)122 261 R .97 +(written by ruleset three will ha)-.25 F 1.27 -.15(ve t)-.2 H .97 +(he \231@domain\232 clause from).15 F(the sender en)122 273 Q -.15(ve) +-.4 G(lope address tack).15 E(ed on.)-.1 E(This allo)5 E +(ws mail with headers of the form:)-.25 E(From: usera@hosta)162 289.2 Q +-.8(To)162 301.2 S 2.5(:u).8 G(serb@hostb, userc)-2.5 E(to be re)122 +317.4 Q(written as:)-.25 E(From: usera@hosta)162 333.6 Q -.8(To)162 +345.6 S 2.5(:u).8 G(serb@hostb, userc@hosta)-2.5 E(automatically)122 +361.8 Q 5(.H)-.65 G -.25(ow)-5 G -2.15 -.25(ev e).25 H .8 -.4(r, i).25 H +2.5(td).4 G(oesn')-2.5 E 2.5(tr)-.18 G(eally w)-2.5 E(ork reliably)-.1 E +(.)-.65 E 15(dD)102 378 S 2.56(on)-15 G .06(ot include angle brack)-2.56 +F .06(ets around route-address syntax addresses.)-.1 F .06 +(This is useful on mailers)5.06 F .187(that are going to pass addresses\ + to a shell that might interpret angle brack)122 390 R .188 +(ets as I/O redirection.)-.1 F(Ho)122 402 Q(we)-.25 E -.15(ve)-.25 G +1.621 -.4(r, i).15 H 3.321(td).4 G .821(oes not protect ag)-3.321 F .821 +(ainst other shell metacharacters.)-.05 F .821 +(Therefore, passing addresses)5.821 F +(to a shell should not be considered secure.)122 414 Q 5.28(D\207 This) +102 430.2 R(mailer w)2.5 E(ants a \231Date:\232 header line.)-.1 E 15.56 +(eT)102 446.4 S .173(his mailer is e)-15.56 F(xpensi)-.15 E .473 -.15 +(ve t)-.25 H 2.673(oc).15 G .173(onnect to, so try to a)-2.673 F -.2(vo) +-.2 G .174(id connecting normally; an).2 F 2.674(yn)-.15 G .174 +(ecessary con-)-2.674 F(nection will occur during a queue run.)122 458.4 +Q(See also option)5 E F0(HoldExpensi)2.5 E -.1(ve)-.1 G F1(.).1 E 13.89 +(EE)102 474.6 S(scape lines be)-13.89 E(ginning with \231From)-.15 E 2.5 +<9a69>5 G 2.5(nt)-2.5 G(he message with a `>' sign.)-2.5 E 16.67(fT)102 +490.8 S .19(he mailer w)-16.67 F .19(ants a)-.1 F F02.69 E F2(fr) +2.69 E(om)-.45 E F1 .19(\215ag, b)2.69 F .19(ut only if this is a netw) +-.2 F .19(ork forw)-.1 F .19(ard operation \(i.e., the mailer)-.1 F +(will gi)122 502.8 Q .3 -.15(ve a)-.25 H 2.5(ne).15 G(rror if the e)-2.5 +E -.15(xe)-.15 G(cuting user does not ha).15 E .3 -.15(ve s)-.2 H +(pecial permissions\).).15 E 6.94(F\207 This)102 519 R(mailer w)2.5 E +(ants a \231From:\232 header line.)-.1 E 15(gN)102 535.2 S(ormally)-15 E +(,)-.65 E F2(sendmail)4.892 E F1 2.393(sends internally generated email\ + \(e.g., error messages\) using the null)4.892 F 1.327 +(return address as required by RFC 1123.)122 547.2 R(Ho)6.327 E(we)-.25 +E -.15(ve)-.25 G 2.127 -.4(r, s).15 H 1.327(ome mailers don').4 F 3.827 +(ta)-.18 G 1.327(ccept a null return)-3.827 F 3.31(address. If)122 559.2 +R(necessary)3.31 E 3.31(,y)-.65 G .81(ou can set the)-3.31 F F0(g)3.311 +E F1 .811(\215ag to pre)3.311 F -.15(ve)-.25 G(nt).15 E F2(sendmail) +3.311 E F1 .811(from obe)3.311 F .811(ying the standards;)-.15 F 1.57 +(error messages will be sent as from the MAILER-D)122 571.2 R 1.57 +(AEMON \(actually)-.4 F 4.07(,t)-.65 G 1.57(he v)-4.07 F 1.57 +(alue of the)-.25 F F0($n)4.07 E F1(macro\).)122 583.2 Q 15(hU)102 599.4 +S 1.006(pper case should be preserv)-15 F 1.007 +(ed in host names \(the $@ portion of the mailer triplet resolv)-.15 F +(ed)-.15 E(from ruleset 0\) for this mailer)122 611.4 Q(.)-.55 E 17.22 +(iD)102 627.6 S 2.5(oU)-17.22 G(ser Database re)-2.5 E(writing on en) +-.25 E -.15(ve)-.4 G(lope sender address.).15 E 16.67(IT)102 643.8 S .54 +(his \215ag is deprecated and will be remo)-16.67 F -.15(ve)-.15 G 3.039 +(df).15 G .539(rom a future v)-3.039 F 3.039(ersion. This)-.15 F .539 +(mailer will be speak-)3.039 F .161(ing SMTP to another)122 655.8 R F2 +(sendmail)2.662 E F1 2.662<8a61>2.662 G 2.662(ss)-2.662 G .162 +(uch it can use special protocol features.)-2.662 F .162 +(This \215ag should)5.162 F(not be used e)122 667.8 Q(xcept for deb)-.15 +E(ugging purposes because it uses)-.2 E F0(VERB)2.5 E F1 +(as SMTP command.)2.5 E 17.22(jD)102 684 S 2.5(oU)-17.22 G +(ser Database re)-2.5 E(writing on recipients as well as senders.)-.25 E +15(kN)102 700.2 S 1.03(ormally when)-15 F F2(sendmail)3.53 E F1 1.03 +(connects to a host via SMTP)3.53 F 3.529(,i)-1.11 G 3.529(tc)-3.529 G +1.029(hecks to mak)-3.529 F 3.529(es)-.1 G 1.029(ure that this isn') +-3.529 F(t)-.18 E .08 +(accidentally the same host name as might happen if)122 712.2 R F2 +(sendmail)2.581 E F1 .081(is miscon\214gured or if a long-haul)2.581 F +(netw)122 724.2 Q 1.074(ork interf)-.1 F 1.074 +(ace is set in loopback mode.)-.1 F 1.073 +(This \215ag disables the loopback check.)6.074 F 1.073(It should)6.073 +F 0 Cg EP +%%Page: 58 54 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 193.36(SMM:08-58 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF +(only be used under v)122 96 Q(ery unusual circumstances.)-.15 E 12.78 +(KC)102 112.2 S(urrently unimplemented.)-12.78 E(Reserv)5 E +(ed for chunking.)-.15 E 17.22(lT)102 128.4 S +(his mailer is local \(i.e., \214nal deli)-17.22 E -.15(ve)-.25 G +(ry will be performed\).).15 E 13.89(LL)102 144.6 S .598 +(imit the line lengths as speci\214ed in RFC 821.)-13.89 F .598 +(This deprecated option should be replaced by)5.598 F(the)122 156.6 Q F0 +(L=)2.5 E F1(mail declaration.)2.5 E -.15(Fo)5 G 2.5(rh).15 G +(istoric reasons, the)-2.5 E F0(L)2.5 E F1(\215ag also sets the)2.5 E F0 +(7)2.5 E F1(\215ag.)2.5 E 12.22(mT)102 172.8 S .464(his mailer can send\ + to multiple users on the same host in one transaction.)-12.22 F .463 +(When a)5.463 F F0($u)2.963 E F1(macro)2.963 E .731(occurs in the)122 +184.8 R/F2 10/Times-Italic@0 SF(ar)3.231 E(gv)-.37 E F1 .732(part of th\ +e mailer de\214nition, that \214eld will be repeated as necessary for a\ +ll)3.231 F .317(qualifying users.)122 196.8 R(Remo)5.317 E .316(ving th\ +is \215ag can defeat duplicate suppression on a remote site as each)-.15 +F(recipient is sent in a separate transaction.)122 208.8 Q 3.61 +(M\207 This)102 225 R(mailer w)2.5 E +(ants a \231Message-Id:\232 header line.)-.1 E 15(nD)102 241.2 S 2.5(on) +-15 G +(ot insert a UNIX-style \231From\232 line on the front of the message.) +-2.5 E 15(oA)102 257.4 S -.1(lwa)-15 G .816(ys run as the o).1 F .816 +(wner of the recipient mailbox.)-.25 F(Normally)5.816 E F2(sendmail) +3.316 E F1 .816(runs as the sender for)3.316 F .198 +(locally generated mail or as \231daemon\232 \(actually)122 269.4 R +2.698(,t)-.65 G .198(he user speci\214ed in the)-2.698 F F0(u)2.698 E F1 +.198(option\) when deli)2.698 F(v-)-.25 E 1.337(ering netw)122 281.4 R +1.337(ork mail.)-.1 F 1.338(The normal beha)6.338 F 1.338 +(vior is required by most local mailers, which will not)-.2 F(allo)122 +293.4 Q 2.521(wt)-.25 G .021(he en)-2.521 F -.15(ve)-.4 G .021 +(lope sender address to be set unless the mailer is running as daemon.) +.15 F .02(This \215ag is)5.02 F(ignored if the)122 305.4 Q F0(S)2.5 E F1 +(\215ag is set.)2.5 E 15(pU)102 321.6 S .497(se the route-addr style re) +-15 F -.15(ve)-.25 G .498(rse-path in the SMTP \231MAIL FR).15 F .498 +(OM:\232 command rather than just)-.4 F .205(the return address; althou\ +gh this is required in RFC 821 section 3.1, man)122 333.6 R 2.705(yh) +-.15 G .205(osts do not process)-2.705 F(re)122 345.6 Q -.15(ve)-.25 G +(rse-paths properly).15 E 5(.R)-.65 G -2.15 -.25(ev e)-5 H +(rse-paths are of).25 E(\214cially discouraged by RFC 1123.)-.25 E 6.94 +(P\207 This)102 361.8 R(mailer w)2.5 E(ants a \231Return-P)-.1 E +(ath:\232 line.)-.15 E 15(qW)102 378 S .068(hen an address that resolv) +-15 F .069(es to this mailer is v)-.15 F .069 +(eri\214ed \(SMTP VRFY command\), generate 250)-.15 F +(responses instead of 252 responses.)122 390 Q +(This will imply that the address is local.)5 E 16.67(rS)102 406.2 S +(ame as)-16.67 E F0(f)2.5 E F1 2.5(,b)C(ut sends a)-2.7 E F02.5 E +F1(\215ag.)2.5 E 13.33(RO)102 422.4 S .67 +(pen SMTP connections from a \231secure\232 port.)-13.33 F .669 +(Secure ports aren')5.669 F 3.169(t\()-.18 G .669(secure, that is\) e) +-3.169 F .669(xcept on)-.15 F .639 +(UNIX machines, so it is unclear that this adds an)122 434.4 R(ything.) +-.15 E F2(sendmail)5.639 E F1 .64(must be running as root to)3.14 F +(be able to use this \215ag.)122 446.4 Q 16.11(sS)102 462.6 S +(trip quote characters \(" and \\\) of)-16.11 E 2.5(fo)-.25 G 2.5(ft) +-2.5 G(he address before calling the mailer)-2.5 E(.)-.55 E 14.44(SD)102 +478.8 S(on')-14.44 E 3.332(tr)-.18 G .832 +(eset the userid before calling the mailer)-3.332 F 5.831(.T)-.55 G .831 +(his w)-5.831 F .831(ould be used in a secure en)-.1 F(vironment)-.4 E +(where)122 490.8 Q F2(sendmail)3.317 E F1 .817(ran as root.)3.317 F .817 +(This could be used to a)5.817 F -.2(vo)-.2 G .817(id for).2 F .817 +(ged addresses.)-.18 F .817(If the)5.817 F F0(U=)3.317 E F1 .818 +(\214eld is)3.317 F(also speci\214ed, this \215ag causes the ef)122 +502.8 Q(fecti)-.25 E .3 -.15(ve u)-.25 H(ser id to be set to that user) +.15 E(.)-.55 E 15(uU)102 519 S .726(pper case should be preserv)-15 F +.725(ed in user names for this mailer)-.15 F 5.725(.S)-.55 G .725 +(tandards require preserv)-5.725 F(ation)-.25 E .748 +(of case in the local part of addresses, e)122 531 R .748 +(xcept for those address for which your system accepts)-.15 F +(responsibility)122 543 Q 5.151(.R)-.65 G .151(FC 2142 pro)-5.151 F .151 +(vides a long list of addresses which should be case insensiti)-.15 F +-.15(ve)-.25 G 5.15(.I).15 G(f)-5.15 E .359 +(you use this \215ag, you may be violating RFC 2142.)122 555 R .36 +(Note that postmaster is al)5.359 F -.1(wa)-.1 G .36(ys treated as a).1 +F(case insensiti)122 567 Q .3 -.15(ve a)-.25 H(ddress re).15 E -.05(ga) +-.15 G(rdless of this \215ag.).05 E 12.78(UT)102 583.2 S(his mailer w) +-12.78 E(ants UUCP-style \231From\232 lines with the ugly \231remote fr\ +om \232 on the end.)-.1 E 12.78(wT)102 599.4 S .607 +(he user must ha)-12.78 F .907 -.15(ve a v)-.2 H .606 +(alid account on this machine, i.e.,)-.1 F F2 -.1(ge)3.106 G(tpwnam).1 E +F1 .606(must succeed.)3.106 F .606(If not, the)5.606 F 1.233 +(mail is bounced.)122 611.4 R 1.233(See also the)6.233 F F0 +(MailBoxDatabase)3.733 E F1 3.733(option. This)3.733 F 1.233 +(is required to get \231.forw)3.733 F(ard\232)-.1 E(capability)122 623.4 +Q(.)-.65 E 10.56(WI)102 639.6 S(gnore long term host status information\ + \(see Section "Persistent Host Status Information"\).)-10.56 E 7.5 +(x\207 This)102 655.8 R(mailer w)2.5 E +(ants a \231Full-Name:\232 header line.)-.1 E 12.78(XT)102 672 S .512 +(his mailer w)-12.78 F .512(ants to use the hidden dot algorithm as spe\ +ci\214ed in RFC 821; basically)-.1 F 3.011(,a)-.65 G .811 -.15(ny l) +-3.011 H(ine).15 E(be)122 684 Q .796(ginning with a dot will ha)-.15 F +1.096 -.15(ve a)-.2 H 3.296(ne).15 G .797 +(xtra dot prepended \(to be stripped at the other end\).)-3.446 F(This) +5.797 E(insures that lines in the message containing a dot will not ter\ +minate the message prematurely)122 696 Q(.)-.65 E 15.56(zR)102 712.2 S +.965(un Local Mail T)-15.56 F .965(ransfer Protocol \(LMTP\) between) +-.35 F F2(sendmail)3.465 E F1 .965(and the local mailer)3.465 F 5.965 +(.T)-.55 G .965(his is a)-5.965 F -.25(va)122 724.2 S 1.752(riant on SM\ +TP de\214ned in RFC 2033 that is speci\214cally designed for deli).25 F +-.15(ve)-.25 G 1.752(ry to a local).15 F 0 Cg EP +%%Page: 59 55 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-59)195.86 E/F1 10/Times-Roman@0 SF(mailbox.)122 96 Q 13.89(ZA) +102 112.2 S(pply DialDelay \(if set\) to this mailer)-13.89 E(.)-.55 E +15(0D)102 128.4 S(on')-15 E 3.607(tl)-.18 G 1.106 +(ook up MX records for hosts sent via SMTP/LMTP)-3.607 F 6.106(.D)-1.11 +G 3.606(on)-6.106 G 1.106(ot apply)-3.606 F F0 -.25(Fa)3.606 G +(llbackMXhost).25 E F1(either)122 140.4 Q(.)-.55 E 15(1D)102 156.6 S +(on')-15 E 2.5(ts)-.18 G(end null characters \('\\0'\) to this mailer) +-2.5 E(.)-.55 E 15(2D)102 172.8 S(on')-15 E 3.032(tu)-.18 G .532 +(se ESMTP e)-3.032 F -.15(ve)-.25 G 3.032(ni).15 G 3.032(fo)-3.032 G +-.25(ff)-3.032 G .532(ered; this is useful for brok).25 F .533 +(en systems that of)-.1 F .533(fer ESMTP b)-.25 F .533(ut f)-.2 F(ail) +-.1 E(on EHLO \(without reco)122 184.8 Q -.15(ve)-.15 G +(ring when HELO is tried ne).15 E(xt\).)-.15 E 15(3E)102 201 S .002 +(xtend the list of characters con)-15 F -.15(ve)-.4 G .001 +(rted to =XX notation when con).15 F -.15(ve)-.4 G .001 +(rting to Quoted-Printable to).15 F .977(include those that don')122 213 +R 3.478(tm)-.18 G .978(ap cleanly between ASCII and EBCDIC.)-3.478 F +.978(Useful if you ha)5.978 F 1.278 -.15(ve I)-.2 H(BM).15 E +(mainframes on site.)122 225 Q 15(5I)102 241.2 S 2.717(fn)-15 G 2.717 +(oa)-2.717 G .217(liases are found for this address, pass the address t\ +hrough ruleset 5 for possible alternate)-2.717 F 2.5(resolution. This) +122 253.2 R(is intended to forw)2.5 E(ard the mail to an alternate deli) +-.1 E -.15(ve)-.25 G(ry spot.).15 E 15(6S)102 269.4 S +(trip headers to se)-15 E -.15(ve)-.25 G 2.5(nb).15 G(its.)-2.5 E 15(7S) +102 285.6 S 1.14(trip all output to se)-15 F -.15(ve)-.25 G 3.64(nb).15 +G 3.64(its. This)-3.64 F 1.14(is the def)3.64 F 1.141(ault if the)-.1 F +F0(L)3.641 E F1 1.141(\215ag is set.)3.641 F 1.141 +(Note that clearing this)6.141 F .295(option is not suf)122 297.6 R .295 +(\214cient to get full eight bit data passed through)-.25 F/F2 10 +/Times-Italic@0 SF(sendmail)2.795 E F1 5.295(.I)C 2.795(ft)-5.295 G(he) +-2.795 E F0(7)2.795 E F1 .295(option is set,)2.795 F .716 +(this is essentially al)122 309.6 R -.1(wa)-.1 G .717 +(ys set, since the eighth bit w).1 F .717(as stripped on input.)-.1 F +.717(Note that this option)5.717 F(will only impact messages that didn') +122 321.6 Q 2.5(th)-.18 G -2.25 -.2(av e)-2.5 H(8)2.7 E/F3 10/Symbol SF +A F1 2.5(7b)C(it MIME con)-2.5 E -.15(ve)-.4 G(rsions performed.).15 +E 15(8I)102 337.8 S 3.783(fs)-15 G 1.283(et, it is acceptable to send e\ +ight bit data to this mailer; the usual attempt to do 8)-3.783 F F3A +F1 3.782(7b)C(it)-3.782 E(MIME con)122 349.8 Q -.15(ve)-.4 G +(rsions will be bypassed.).15 E 15(9I)102 366 S 2.704(fs)-15 G .204 +(et, do)-2.704 F F2(limited)2.704 E F1(7)2.704 E F3A F1 2.704(8b)C +.204(it MIME con)-2.704 F -.15(ve)-.4 G 2.704(rsions. These).15 F(con) +2.704 E -.15(ve)-.4 G .205(rsions are limited to te).15 F .205 +(xt/plain data.)-.15 F 17.22(:C)102 382.2 S .982 +(heck addresses to see if the)-17.22 F 3.482(yb)-.15 G -.15(eg)-3.482 G +.982(in \231:include:\232; if the).15 F 3.482(yd)-.15 G .982(o, con) +-3.482 F -.15(ve)-.4 G .982(rt them to the \231*include*\232).15 F +(mailer)122 394.2 Q(.)-.55 E 18(|C)102 410.4 S +(heck addresses to see if the)-18 E 2.5(yb)-.15 G -.15(eg)-2.5 G +(in with a `|'; if the).15 E 2.5(yd)-.15 G(o, con)-2.5 E -.15(ve)-.4 G +(rt them to the \231prog\232 mailer).15 E(.)-.55 E 17.22(/C)102 426.6 S +(heck addresses to see if the)-17.22 E 2.5(yb)-.15 G -.15(eg)-2.5 G +(in with a `/'; if the).15 E 2.5(yd)-.15 G(o, con)-2.5 E -.15(ve)-.4 G +(rt them to the \231*\214le*\232 mailer).15 E(.)-.55 E 10.79(@L)102 +442.8 S(ook up addresses in the user database.)-10.79 E 11.67(%D)102 459 +S 3.868(on)-11.67 G 1.368(ot attempt deli)-3.868 F -.15(ve)-.25 G 1.369 +(ry on initial receipt of a message or on queue runs unless the queued) +.15 F(message is selected using one of the -qI/-qR/-qS queue run modi\ +\214ers or an ETRN request.)122 471 Q 16.67(!D)102 487.2 S 1.29 +(isable an MH hack that drops an e)-16.67 F 1.289 +(xplicit From: header if it is the same as what sendmail)-.15 F -.1(wo) +122 499.2 S(uld generate.).1 E .267(Con\214guration \214les prior to le) +127 515.4 R -.15(ve)-.25 G 2.768(l6a).15 G .268(ssume the `)-2.768 F +-1.11(A')-.8 G 2.768(,`)1.11 G .268 +(w', `5', `:', `|', `/', and `@' options on the)-2.768 F +(mailer named \231local\232.)102 527.4 Q .306(The mailer with the speci\ +al name \231error\232 can be used to generate a user error)127 543.6 R +5.305(.T)-.55 G .305(he \(optional\))-5.305 F .323(host \214eld is an e) +102 555.6 R .323(xit status to be returned, and the user \214eld is a m\ +essage to be printed.)-.15 F .324(The e)5.324 F .324(xit sta-)-.15 F +.891(tus may be numeric or one of the v)102 567.6 R .891(alues USA)-.25 +F .891(GE, NOUSER, NOHOST)-.4 F 3.39(,U)-.74 G -.35(NA)-3.39 G -1.35(VA) +-1 G .89(ILABLE, SOFT)1.35 F(-)-.92 E -1.2(WA)102 579.6 S 1.141 +(RE, TEMPF)1.2 F 1.141(AIL, PR)-.74 F -1.88 -.4(OT O)-.4 H 1.141 +(COL, or CONFIG to return the corresponding EX_ e).4 F 1.142 +(xit code, or an)-.15 F .288 +(enhanced error code as described in RFC 1893,)102 591.6 R F2 .288 +(Enhanced Mail System Status Codes.)2.788 F F1 -.15(Fo)5.287 G 2.787(re) +.15 G(xample,)-2.937 E(the entry:)102 603.6 Q +($#error $@ NOHOST $: Host unkno)142 619.8 Q(wn in this domain)-.25 E +.145(on the RHS of a rule will cause the speci\214ed error to be genera\ +ted and the \231Host unkno)102 636 R .146(wn\232 e)-.25 F .146(xit sta-) +-.15 F .491(tus to be returned if the LHS matches.)102 648 R .491 +(This mailer is only functional in rulesets 0, 5, or one of the)5.491 F +1.81(check_* rulesets.)102 660 R 1.81 +(The host \214eld can also contain the special tok)6.81 F(en)-.1 E F0 +(quarantine)4.31 E F1 1.81(which instructs)4.31 F +(sendmail to quarantine the current message.)102 672 Q .257 +(The mailer with the special name \231discard\232 causes an)127 688.2 R +2.756(ym)-.15 G .256(ail sent to it to be discarded b)-2.756 F .256 +(ut oth-)-.2 F 1.313(erwise treated as though it were successfully deli) +102 700.2 R -.15(ve)-.25 G 3.813(red. This).15 F 1.314 +(mailer cannot be used in ruleset 0,)3.813 F(only in the v)102 712.2 Q +(arious address checking rulesets.)-.25 E 0 Cg EP +%%Page: 60 56 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 193.36(SMM:08-60 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF .468 +(The mailer named \231local\232)127 96 R/F2 10/Times-Italic@0 SF(must) +2.968 E F1 .468(be de\214ned in e)2.968 F -.15(ve)-.25 G .468 +(ry con\214guration \214le.).15 F .468(This is used to deli)5.468 F -.15 +(ve)-.25 G(r).15 E .25(local mail, and is treated specially in se)102 +108 R -.15(ve)-.25 G .25(ral w).15 F 2.75(ays. Additionally)-.1 F 2.75 +(,t)-.65 G .25(hree other mailers named \231prog\232,)-2.75 F .942(\231\ +*\214le*\232, and \231*include*\232 may be de\214ned to tune the deli) +102 120 R -.15(ve)-.25 G .942(ry of messages to programs, \214les, and) +.15 F(:include: lists respecti)102 132 Q -.15(ve)-.25 G(ly).15 E 5(.T) +-.65 G(he)-5 E 2.5(yd)-.15 G(ef)-2.5 E(ault to:)-.1 E +(Mprog, P=/bin/sh, F=lsoDq9, T=DNS/RFC822/X-Unix, A=sh \255c $u)142 +148.2 Q +(M*\214le*, P=[FILE], F=lsDFMPEouq9, T=DNS/RFC822/X-Unix, A=FILE $u)142 +160.2 Q(M*include*, P=/de)142 172.2 Q(v/null, F=su, A=INCLUDE $u)-.25 E +.466 +(Builtin pathnames are [FILE] and [IPC], the former is used for deli)127 +192.6 R -.15(ve)-.25 G .467(ry to \214les, the latter for).15 F(deli)102 +204.6 Q -.15(ve)-.25 G .12(ry via interprocess communication.).15 F -.15 +(Fo)5.12 G 2.62(rm).15 G .12(ailers that use [IPC] as pathname the ar) +-2.62 F .12(gument v)-.18 F(ec-)-.15 E .761 +(tor \(A=\) must start with TCP or FILE for deli)102 216.6 R -.15(ve) +-.25 G .761(ry via a TCP or a Unix domain sock).15 F 3.261(et. If)-.1 F +.761(TCP is)3.261 F .11(used, the second ar)102 228.6 R .109 +(gument must be the name of the host to contact.)-.18 F .109 +(Optionally a third ar)5.109 F .109(gument can)-.18 F .575 +(be used to specify a port, the def)102 240.6 R .576 +(ault is smtp \(port 25\).)-.1 F .576(If FILE is used, the second ar) +5.576 F .576(gument must)-.18 F(be the name of the Unix domain sock)102 +252.6 Q(et.)-.1 E .669(If the ar)127 268.8 R .669(gument v)-.18 F .669 +(ector does not contain $u then)-.15 F F2(sendmail)3.169 E F1 .668 +(will speak SMTP \(or LMTP if the)3.169 F +(mailer \215ag z is speci\214ed\) to the mailer)102 280.8 Q(.)-.55 E +(If no Eol \214eld is de\214ned, then the def)127 297 Q +(ault is "\\r\\n" for SMTP mailers and "\\n" of others.)-.1 E .615 +(The Sender and Recipient re)127 313.2 R .615 +(writing sets may either be a simple ruleset id or may be tw)-.25 F +3.116(oi)-.1 G(ds)-3.116 E .576 +(separated by a slash; if so, the \214rst re)102 325.2 R .575 +(writing set is applied to en)-.25 F -.15(ve)-.4 G .575 +(lope addresses and the second is).15 F(applied to headers.)102 337.2 Q +(Setting an)5 E 2.5(yv)-.15 G +(alue to zero disables corresponding mailer)-2.75 E(-speci\214c re)-.2 E +(writing.)-.25 E .196 +(The Directory is actually a colon-separated path of directories to try) +127 353.4 R 5.197(.F)-.65 G .197(or e)-5.347 F .197 +(xample, the de\214ni-)-.15 F .104 +(tion \231D=$z:/\232 \214rst tries to e)102 365.4 R -.15(xe)-.15 G .104 +(cute in the recipient').15 F 2.604(sh)-.55 G .104 +(ome directory; if that is not a)-2.604 F -.25(va)-.2 G .103 +(ilable, it tries to).25 F -.15(exe)102 377.4 S .816 +(cute in the root of the \214lesystem.).15 F .816 +(This is intended to be used only on the \231prog\232 mailer)5.816 F +3.317(,s)-.4 G(ince)-3.317 E .009(some shells \(such as)102 389.4 R F2 +(csh)2.509 E F1 2.509(\)r)C .009(efuse to e)-2.509 F -.15(xe)-.15 G .009 +(cute if the).15 F 2.509(yc)-.15 G .009 +(annot read the current directory)-2.509 F 5.008(.S)-.65 G .008 +(ince the queue)-5.008 F(directory is not normally readable by unpri)102 +401.4 Q(vile)-.25 E(ged users)-.15 E F2(csh)2.5 E F1 +(scripts as recipients can f)2.5 E(ail.)-.1 E 1.862 +(The Userid speci\214es the def)127 417.6 R 1.863 +(ault user and group id to run as, o)-.1 F -.15(ve)-.15 G 1.863 +(rriding the).15 F F0(DefaultUser)4.363 E F1 .098(option \(q.v)102 429.6 +R 2.598(.\). If)-.65 F(the)2.598 E F0(S)2.598 E F1 .098(mailer \215ag i\ +s also speci\214ed, this user and group will be set as the ef)2.598 F +(fecti)-.25 E .398 -.15(ve u)-.25 H(id).15 E .693 +(and gid for the process.)102 441.6 R .694(This may be gi)5.693 F -.15 +(ve)-.25 G 3.194(na).15 G(s)-3.194 E F2(user:gr)3.194 E(oup)-.45 E F1 +.694(to set both the user and group id; either)3.194 F .127 +(may be an inte)102 453.6 R .127(ger or a symbolic name to be look)-.15 +F .127(ed up in the)-.1 F F2(passwd)2.627 E F1(and)2.627 E F2(gr)2.627 E +(oup)-.45 E F1 .126(\214les respecti)2.626 F -.15(ve)-.25 G(ly).15 E +5.126(.I)-.65 G(f)-5.126 E .782 +(only a symbolic user name is speci\214ed, the group id in the)102 465.6 +R F2(passwd)3.282 E F1 .782(\214le for that user is used as the)3.282 F +(group id.)102 477.6 Q .545(The Charset \214eld is used when con)127 +493.8 R -.15(ve)-.4 G .545 +(rting a message to MIME; this is the character set used).15 F .465 +(in the Content-T)102 505.8 R .465(ype: header)-.8 F 5.465(.I)-.55 G +2.965(ft)-5.465 G .465(his is not set, the)-2.965 F F0(DefaultCharset) +2.966 E F1 .466(option is used, and if that is not)2.966 F .258 +(set, the v)102 517.8 R .258(alue \231unkno)-.25 F .258 +(wn-8bit\232 is used.)-.25 F F0 -1.2(WA)5.257 G(RNING:)1.2 E F1 .257 +(this \214eld applies to the sender')2.757 F 2.757(sm)-.55 G(ailer) +-2.757 E 2.757(,n)-.4 G .257(ot the)-2.757 F(recipient')102 529.8 Q +2.701(sm)-.55 G(ailer)-2.701 E 5.201(.F)-.55 G .201(or e)-5.351 F .201 +(xample, if the en)-.15 F -.15(ve)-.4 G .202 +(lope sender address lists an address on the local netw).15 F(ork)-.1 E +.48(and the recipient is on an e)102 541.8 R .48(xternal netw)-.15 F .48 +(ork, the character set will be set from the Charset= \214eld for)-.1 F +(the local netw)102 553.8 Q(ork mailer)-.1 E 2.5(,n)-.4 G +(ot that of the e)-2.5 E(xternal netw)-.15 E(ork mailer)-.1 E(.)-.55 E +.794(The T)127 570 R .795(ype= \214eld sets the type information used i\ +n MIME error messages as de\214ned by RFC)-.8 F 2.805(1894. It)102 582 R +.305(is actually three v)2.805 F .305 +(alues separated by slashes: the MT)-.25 F .305 +(A-type \(that is, the description of ho)-.93 F(w)-.25 E .083(hosts are\ + named\), the address type \(the description of e-mail addresses\), and\ + the diagnostic type \(the)102 594 R .143 +(description of error diagnostic codes\).)102 606 R .143 +(Each of these must be a re)5.143 F .142(gistered v)-.15 F .142 +(alue or be)-.25 F .142(gin with \231X\255\232.)-.15 F(The def)102 618 Q +(ault is \231dns/rfc822/smtp\232.)-.1 E 1.175(The m= \214eld speci\214e\ +s the maximum number of messages to attempt to deli)127 634.2 R -.15(ve) +-.25 G 3.675(ro).15 G 3.675(nas)-3.675 G(ingle)-3.675 E +(SMTP or LMTP connection.)102 646.2 Q(The def)5 E(ault is in\214nite.) +-.1 E 1.545(The r= \214eld speci\214es the maximum number of recipients\ + to attempt to deli)127 662.4 R -.15(ve)-.25 G 4.045(ri).15 G 4.045(nas) +-4.045 G(ingle)-4.045 E(en)102 674.4 Q -.15(ve)-.4 G 2.5(lope. It).15 F +(def)2.5 E(aults to 100.)-.1 E 1.052(The /= \214eld speci\214es a ne)127 +690.6 R 3.552(wr)-.25 G 1.052(oot directory for the mailer)-3.552 F +6.052(.T)-.55 G 1.052(he path is macro e)-6.052 F 1.052(xpanded and)-.15 +F .512(then passed to the \231chroot\232 system call.)102 702.6 R .512 +(The root directory is changed before the Directory \214eld is)5.512 F +(consulted or the uid is changed.)102 714.6 Q 0 Cg EP +%%Page: 61 57 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-61)195.86 E/F1 10/Times-Roman@0 SF .56(The W)127 96 R .56 +(ait= \214eld speci\214es the maximum time to w)-.8 F .561 +(ait for the mailer to return after sending all)-.1 F(data to it.)102 +108 Q(This applies to mailers that ha)5 E .3 -.15(ve b)-.2 H(een fork) +.15 E(ed by)-.1 E/F2 10/Times-Italic@0 SF(sendmail)2.5 E F1(.)A 1.164 +(The Queue)127 124.2 R 1.164(group= \214eld speci\214es the def)-.15 F +1.164(ault queue group in which recei)-.1 F -.15(ve)-.25 G 3.664(dm).15 +G 1.163(ail should be)-3.664 F 2.848(queued. This)102 136.2 R .348 +(can be o)2.848 F -.15(ve)-.15 G .349(rridden by other means as e).15 F +.349(xplained in section `)-.15 F .349(`Queue Groups and Queue)-.74 F +(Directories')102 148.2 Q('.)-.74 E F0 2.5(5.5. H)87 172.2 R 2.5<8a44> +2.5 G(e\214ne Header)-2.5 E F1 1.136 +(The format of the header lines that)127 188.4 R F2(sendmail)3.636 E F1 +1.135(inserts into the message are de\214ned by the)3.636 F F0(H)3.635 E +F1 2.5(line. The)102 200.4 R(syntax of this line is one of the follo)2.5 +E(wing:)-.25 E F0(H)142 216.6 Q F2(hname)A F0(:)A F2(htemplate)2.5 E F0 +(H)142 237 Q F1([)A F0(?)A F2(m\215a)A(gs)-.1 E F0(?])A F2(hname)A F0(:) +A F2(htemplate)2.5 E F0(H)142 257.4 Q F1([)A F0(?$)A F2({macr)A(o})-.45 +E F0(?])A F2(hname)A F0(:)A F2(htemplate)2.5 E F1 1.058(Continuation li\ +nes in this spec are re\215ected directly into the outgoing message.)102 +273.6 R(The)6.058 E F2(htemplate)3.558 E F1(is)3.558 E(macro-e)102 285.6 +Q 1.12(xpanded before insertion into the message.)-.15 F 1.12(If the) +6.12 F F2(m\215a)3.62 E(gs)-.1 E F1 1.12 +(\(surrounded by question marks\))3.62 F .161(are speci\214ed, at least\ + one of the speci\214ed \215ags must be stated in the mailer de\214niti\ +on for this header)102 297.6 R .858(to be automatically output.)102 +309.6 R .858(If a)5.858 F F2(${macr)3.358 E(o})-.45 E F1 .858 +(\(surrounded by question marks\) is speci\214ed, the header)3.358 F +1.264(will be automatically output if the macro is set.)102 321.6 R +1.264(The macro may be set using an)6.264 F 3.764(yo)-.15 G 3.764(ft) +-3.764 G 1.264(he normal)-3.764 F .233(methods, including using the)102 +333.6 R F0(macr)2.733 E(o)-.18 E F1 .232(storage map in a ruleset.)2.732 +F .232(If one of these headers is in the input)5.232 F .124 +(it is re\215ected to the output re)102 345.6 R -.05(ga)-.15 G .124 +(rdless of these \215ags or macros.).05 F .125(Notice: If a)5.125 F F2 +(${macr)2.625 E(o})-.45 E F1 .125(is used to set a)2.625 F(header)102 +357.6 Q 4.309(,t)-.4 G 1.809 +(hen it is useful to add that macro to class)-4.309 F F2($={per)4.308 E +(sistentMacr)-.1 E(os})-.45 E F1 1.808(which consists of the)4.308 F +(macros that should be sa)102 369.6 Q -.15(ve)-.2 G 2.5(da).15 G +(cross queue runs.)-2.5 E(Some headers ha)127 385.8 Q .3 -.15(ve s)-.2 H +(pecial semantics that will be described later).15 E(.)-.55 E 2.71(As) +127 402 S .21(econdary syntax allo)-2.71 F .21(ws v)-.25 F .211 +(alidation of headers as the)-.25 F 2.711(ya)-.15 G .211(re being read.) +-2.711 F 1.811 -.8(To e)5.211 H .211(nable v).8 F(alidation,)-.25 E +(use:)102 414 Q F0(H)142 430.2 Q F2(Header)A F0 2.5(:$)C(>)-2.5 E F2 +(Ruleset)A F0(H)142 442.2 Q F2(Header)A F0 2.5(:$)C(>+)-2.5 E F2 +(Ruleset)A F1 .265(The indicated)102 458.4 R F2(Ruleset)2.765 E F1 .265 +(is called for the speci\214ed)2.765 F F2(Header)2.765 E F1 2.765(,a)C +.265(nd can return)-2.765 F F0($#err)2.765 E(or)-.18 E F1 .265 +(to reject or quaran-)2.765 F 1.304(tine the message or)102 470.4 R F0 +($#discard)3.804 E F1 1.304(to discard the message \(as with the other) +3.804 F F0(check_)3.804 E F1 3.804(*r)C 3.804(ulesets\). The)-3.804 F +3.176(ruleset recei)102 482.4 R -.15(ve)-.25 G 5.676(st).15 G 3.176 +(he header \214eld-body as ar)-5.676 F 3.175 +(gument, i.e., not the header \214eld-name; see also)-.18 F .629 +(${hdr_name} and ${currHeader}.)102 494.4 R .629 +(The header is treated as a structured \214eld, that is, te)5.629 F .63 +(xt in paren-)-.15 F .337 +(theses is deleted before processing, unless the second form)102 506.4 R +F0($>+)2.837 E F1 .337(is used.)2.837 F .337(Note: only one ruleset can) +5.337 F(be associated with a header;)102 518.4 Q F2(sendmail)2.5 E F1 +(will silently ignore multiple entries.)2.5 E -.15(Fo)127 534.6 S 2.5 +(re).15 G(xample, the con\214guration lines:)-2.65 E +(HMessage-Id: $>CheckMessageId)142 550.8 Q(SCheckMessageId)142 574.8 Q +(R< $+ @ $+)142 586.8 Q 11.06(>$)5 G 2.5(@O)-11.06 G(K)-2.5 E 52.83 +(R$* $#error)142 598.8 R($: Ille)2.5 E -.05(ga)-.15 G 2.5(lM).05 G +(essage-Id header)-2.5 E -.1(wo)102 615 S(uld refuse an).1 E 2.5(ym)-.15 +G(essage that had a Message-Id: header of an)-2.5 E 2.5(yo)-.15 G 2.5 +(ft)-2.5 G(he follo)-2.5 E(wing forms:)-.25 E(Message-Id: <>)142 631.2 Q +(Message-Id: some te)142 643.2 Q(xt)-.15 E(Message-Id: e).15 E(xtra crud) +-.15 E 3.068(Ad)102 671.4 S(ef)-3.068 E .569 +(ault ruleset that is called for headers which don')-.1 F 3.069(th)-.18 +G -2.25 -.2(av e)-3.069 H 3.069(as)3.269 G .569 +(peci\214c ruleset de\214ned for them can)-3.069 F(be speci\214ed by:) +102 683.4 Q F0(H)142 699.6 Q F2(*)A F0 2.5(:$)C(>)-2.5 E F2(Ruleset)A F1 +(or)102 715.8 Q 0 Cg EP +%%Page: 62 58 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 193.36(SMM:08-62 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E(H)142 96 Q/F1 10/Times-Italic@0 +SF(*)A F0 2.5(:$)C(>+)-2.5 E F1(Ruleset)A F0 2.5(5.6. O)87 124.2 R 2.5 +<8a53>2.5 G(et Option)-2.5 E/F2 10/Times-Roman@0 SF .963(There are a nu\ +mber of global options that can be set from a con\214guration \214le.) +127 140.4 R .962(Options are)5.962 F .86(represented by full w)102 152.4 +R .86(ords; some are also representable as single characters for back c\ +ompatibility)-.1 F(.)-.65 E(The syntax of this line is:)102 164.4 Q F0 +(O)142 180.6 Q F1(option)7.5 E F0(=)A F1(value)A F2 .563 +(This sets option)102 196.8 R F1(option)3.062 E F2 .562(to be)3.062 F F1 +(value)3.062 E F2 5.562(.N)C .562(ote that there)-5.562 F F1(must)3.062 +E F2 .562(be a space between the letter `O' and the)3.062 F +(name of the option.)102 208.8 Q(An older v)5 E(ersion is:)-.15 E F0(O) +142 225 Q F1 1.666(ov)C(alue)-1.666 E F2 .13(where the option)102 241.2 +R F1(o)2.63 E F2 .13(is a single character)2.63 F 5.13(.D)-.55 G .13 +(epending on the option,)-5.13 F F1(value)2.63 E F2 .13 +(may be a string, an inte)2.63 F(ger)-.15 E(,)-.4 E 2.5(ab)102 253.2 S +(oolean \(with le)-2.5 E -.05(ga)-.15 G 2.5(lv).05 G +(alues \231t\232, \231T\232, \231f\232, or \231F\232; the def)-2.75 E +(ault is TR)-.1 E(UE\), or a time interv)-.4 E(al.)-.25 E 1.164(All \ +\214lenames used in options should be absolute paths, i.e., starting wi\ +th '/'.)127 269.4 R(Relati)6.164 E 1.464 -.15(ve \214)-.25 H(le-).15 E +(names most lik)102 281.4 Q +(ely cause surprises during operation \(unless otherwise noted\).)-.1 E +(The options supported \(with the old, one character names in brack)127 +297.6 Q(ets\) are:)-.1 E(AliasFile=)102 313.8 Q F1(spec, spec, ...)A F2 +.182([A] Specify possible alias \214le\(s\).)174 325.8 R(Each)5.182 E F1 +(spec)2.682 E F2 .183(should be in the format `)2.682 F(`)-.74 E F1 +(class)A F0(:)A F1(info)2.683 E F2 -.74('')C(where)174 337.8 Q F1(class) +3.031 E F0(:)A F2 .531(is optional and def)3.031 F .531(aults to `)-.1 F +(`implicit')-.74 E 3.031('. Note)-.74 F(that)3.031 E F1(info)3.031 E F2 +.53(is required for)3.03 F(all)174 349.8 Q F1(class)3.524 E F2 1.024 +(es e)B 1.024(xcept \231ldap\232.)-.15 F -.15(Fo)6.024 G 3.524(rt).15 G +1.024(he \231ldap\232 class, if)-3.524 F F1(info)3.524 E F2 1.025 +(is not speci\214ed, a def)3.524 F(ault)-.1 E F1(info)174 361.8 Q F2 +-.25(va)2.5 G(lue is used as follo).25 E(ws:)-.25 E +(\255k \(&\(objectClass=sendmailMT)214 378 Q(AAliasObject\))-.93 E +(\(sendmailMT)226.5 390 Q(AAliasName=aliases\))-.93 E(\(|\(sendmailMT) +226.5 402 Q -.4(AC)-.93 G(luster=${sendmailMT).4 E -.4(AC)-.93 G +(luster}\)).4 E(\(sendmailMT)231.5 414 Q(AHost=$j\)\))-.93 E +(\(sendmailMT)226.5 426 Q(AK)-.93 E -.15(ey)-.25 G(=%0\)\)).15 E +(\255v sendmailMT)214 438 Q(AAliasV)-.93 E(alue)-1.11 E 2.305 +(Depending on ho)174 454.2 R(w)-.25 E F1(sendmail)4.805 E F2 2.305 +(is compiled, v)4.805 F 2.305 +(alid classes are \231implicit\232 \(search)-.25 F 1.207(through a comp\ +iled-in list of alias \214le types, for back compatibility\), \231hash\ +\232 \(if)174 466.2 R/F3 9/Times-Roman@0 SF(NEWDB)174 478.2 Q F2 .496 +(is speci\214ed\), \231btree\232 \(if)2.996 F F3(NEWDB)2.996 E F2 .496 +(is speci\214ed\), \231dbm\232 \(if)2.996 F F3(NDBM)2.996 E F2 .496 +(is speci-)2.996 F 1.1(\214ed\), \231cdb\232 \(if)174 490.2 R F3(CDB)3.6 +E F2 1.101(is speci\214ed\), \231stab\232 \(internal symbol table \212 \ +not normally)3.6 F 1.079(used unless you ha)174 502.2 R 1.379 -.15(ve n) +-.2 H 3.578(oo).15 G 1.078 +(ther database lookup\), \231sequence\232 \(use a sequence of)-3.578 F +.958(maps pre)174 514.2 R .958(viously declared\), \231ldap\232 \(if) +-.25 F F3(LD)3.458 E(APMAP)-.36 E F2 .958 +(is speci\214ed\), or \231nis\232 \(if)3.458 F F3(NIS)3.459 E F2(is) +3.459 E 2.5(speci\214ed\). If)174 526.2 R 2.5(al)2.5 G(ist of)-2.5 E F1 +(spec)2.5 E F2 2.5(sa)C(re pro)-2.5 E(vided,)-.15 E F1(sendmail)2.5 E F2 +(searches them in order)2.5 E(.)-.55 E(AliasW)102 542.4 Q(ait=)-.8 E F1 +(timeout)A F2 .141([a] If set, w)174 554.4 R .141(ait up to)-.1 F F1 +(timeout)2.641 E F2 .141(\(units def)2.641 F .14 +(ault to minutes\) for an \231@:@\232 entry to e)-.1 F(xist)-.15 E .517 +(in the alias database before starting up.)174 566.4 R .517 +(If it does not appear in the)5.517 F F1(timeout)3.018 E F2(inter)3.018 +E(-)-.2 E -.25(va)174 578.4 S 2.5(li).25 G(ssue a w)-2.5 E(arning.)-.1 E +(Allo)102 594.6 Q(wBogusHELO)-.25 E 1.104([no short name] If set, allo) +174 606.6 R 3.604(wH)-.25 G 1.104(ELO SMTP commands that don')-3.604 F +3.604(ti)-.18 G 1.103(nclude a host)-3.604 F 2.881(name. Setting)174 +618.6 R .382(this violates RFC 1123 section 5.2.5, b)2.881 F .382 +(ut is necessary to interoper)-.2 F(-)-.2 E .061(ate with se)174 630.6 R +-.15(ve)-.25 G .061(ral SMTP clients.).15 F .061(If there is a v)5.061 F +.06(alue, it is still check)-.25 F .06(ed for le)-.1 F(gitimac)-.15 E +-.65(y.)-.15 G(AuthMaxBits=)102 646.8 Q F1(N)A F2 .697([no short name] \ +Limit the maximum encryption strength for the security layer in)5.24 F +1.318(SMTP A)174 658.8 R 1.318(UTH \(SASL\). Def)-.55 F 1.317 +(ault is essentially unlimited.)-.1 F 1.317(This allo)6.317 F 1.317 +(ws to turn of)-.25 F(f)-.25 E .377(additional encryption in SASL if ST) +174 670.8 R(AR)-.93 E .377(TTLS is already encrypting the communi-)-.6 F +.179(cation, because the e)174 682.8 R .179 +(xisting encryption strength is tak)-.15 F .179 +(en into account when choos-)-.1 F .997 +(ing an algorithm for the security layer)174 694.8 R 5.998(.F)-.55 G +.998(or e)-6.148 F .998(xample, if ST)-.15 F(AR)-.93 E .998 +(TTLS is used and)-.6 F .437 +(the symmetric cipher is 3DES, then the the k)174 706.8 R -.15(ey)-.1 G +.437(length \(in bits\) is 168.).15 F .437(Hence set-)5.437 F(ting)174 +718.8 Q F0 -.5(Au)2.5 G(thMaxBits).5 E F2(to 168 will disable an)2.5 E +2.5(ye)-.15 G(ncryption in SASL.)-2.5 E 0 Cg EP +%%Page: 63 59 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-63)195.86 E/F1 10/Times-Roman@0 SF -1.05(AuthMechanisms [no)102 +96 R .687(short name] List of authentication mechanisms for A)3.187 F +.688(UTH \(separated by spa-)-.55 F 3.049(ces\). The)174 108 R(adv)3.049 +E .548 +(ertised list of authentication mechanisms will be the intersection of) +-.15 F 1.125(this list and the list of a)174 120 R -.25(va)-.2 G 1.126 +(ilable mechanisms as determined by the Cyrus SASL).25 F(library)174 132 +Q 6.167(.I)-.65 G 3.667(fS)-6.167 G -.93(TA)-3.667 G -.6(RT).93 G 1.167 +(TLS is acti).6 F -.15(ve)-.25 G 3.667(,E).15 G(XTERN)-3.667 E 1.167 +(AL will be added to this list.)-.35 F 1.166(In that)6.167 F +(case, the v)174 144 Q +(alue of {cert_subject} is used as authentication id.)-.25 E 17.83 +(AuthOptions [no)102 160.2 R .836 +(short name] List of options for SMTP A)3.335 F .836 +(UTH consisting of single characters)-.55 F(with interv)174 172.2 Q +(ening white space or commas.)-.15 E 12.78(AU)214 188.4 S(se the A) +-12.78 E(UTH= parameter for the MAIL FR)-.55 E(OM)-.4 E +(command only when authentication succeeded.)234 200.4 Q +(This can be used as a w)234 212.4 Q(orkaround for brok)-.1 E(en)-.1 E +(MT)234 224.4 Q(As that do not implement RFC 2554 correctly)-.93 E(.) +-.65 E 15.56(ap)214 236.4 S(rotection from acti)-15.56 E .3 -.15(ve \() +-.25 H(non-dictionary\) attacks).15 E(during authentication e)234 248.4 +Q(xchange.)-.15 E 15.56(cr)214 260.4 S +(equire mechanisms which pass client credentials,)-15.56 E(and allo)234 +272.4 Q 2.5(wm)-.25 G(echanisms which can pass credentials)-2.5 E +(to do so.)234 284.4 Q 15(dd)214 296.4 S(on')-15 E 2.5(tp)-.18 G +(ermit mechanisms susceptible to passi)-2.5 E -.15(ve)-.25 G +(dictionary attack.)234 308.4 Q 16.67(fr)214 320.4 S(equire forw)-16.67 +E(ard secrec)-.1 E 2.5(yb)-.15 G(etween sessions)-2.5 E +(\(breaking one w)234 332.4 Q(on')-.1 E 2.5(th)-.18 G(elp break ne)-2.5 +E(xt\).)-.15 E 12.22(mr)214 344.4 S(equire mechanisms which pro)-12.22 E +(vide mutual authentication)-.15 E(\(only a)234 356.4 Q -.25(va)-.2 G +(ilable if using Cyrus SASL v2 or later\).).25 E 15(pd)214 368.4 S(on') +-15 E 2.5(tp)-.18 G(ermit mechanisms susceptible to simple)-2.5 E(passi) +234 380.4 Q .3 -.15(ve a)-.25 H(ttack \(e.g., PLAIN, LOGIN\), unless a) +.15 E(security layer is acti)234 392.4 Q -.15(ve)-.25 G(.).15 E 15(yd) +214 404.4 S(on')-15 E 2.5(tp)-.18 G(ermit mechanisms that allo)-2.5 E +2.5(wa)-.25 G(non)-2.5 E(ymous login.)-.15 E(The \214rst option applies\ + to sendmail as a client, the others to a serv)174 420.6 Q(er)-.15 E 5 +(.E)-.55 G(xample:)-5 E 2.5(OA)214 436.8 S(uthOptions=p,y)-2.5 E -.1(wo) +174 453 S 1.347(uld disallo).1 F 3.847(wA)-.25 G 1.347(NONYMOUS as A) +-3.847 F 1.347(UTH mechanism and w)-.55 F 1.346(ould allo)-.1 F 3.846 +(wP)-.25 G(LAIN)-3.846 E 1.788 +(and LOGIN only if a security layer \(e.g., pro)174 465 R 1.789 +(vided by ST)-.15 F(AR)-.93 E 1.789(TTLS\) is already)-.6 F(acti)174 477 +Q -.15(ve)-.25 G 5.364(.T).15 G .364(he options 'a', 'c', ')-5.364 F +.364(d', 'f)-.5 F .364 +(', 'p', and 'y' refer to properties of the selected).55 F 1.089 +(SASL mechanisms.)174 489 R 1.089 +(Explanations of these properties can be found in the Cyrus)6.089 F +(SASL documentation.)174 501 Q 23.39(AuthRealm [no)102 517.2 R 2.502 +(short name] The authentication realm that is passed to the Cyrus SASL) +5.003 F(library)174 529.2 Q 5(.I)-.65 G 2.5(fn)-5 G 2.5(or)-2.5 G +(ealm is speci\214ed,)-2.5 E F0($j)2.5 E F1(is used.)2.5 E(See also KNO) +5 E(WNB)-.35 E(UGS.)-.1 E(BadRcptThrottle=)102 545.4 Q/F2 10 +/Times-Italic@0 SF(N)A F1 1.194([no short name] If set and the speci\ +\214ed number of recipients in a single SMTP)174 557.4 R .596 +(transaction ha)174 569.4 R .896 -.15(ve b)-.2 H .595 +(een rejected, sleep for one second after each subsequent RCPT).15 F +(command in that transaction.)174 581.4 Q(BlankSub=)102 597.6 Q F2(c)A +F1 1.255([B] Set the blank substitution character to)22.47 F F2(c)3.755 +E F1 6.255(.U)C 1.255(nquoted spaces in addresses are)-6.255 F +(replaced by this character)174 609.6 Q 5(.D)-.55 G(ef)-5 E +(aults to space \(i.e., no change is made\).)-.1 E(CA)102 625.8 Q(CertP) +-.4 E 21.16(ath [no)-.15 F .897(short name] P)3.397 F .897 +(ath to directory with certi\214cates of CAs.)-.15 F .896 +(This directory direc-)5.896 F 1.234(tory must contain the hashes of ea\ +ch CA certi\214cate as \214lenames \(or as links to)174 637.8 R(them\).) +174 649.8 Q(CA)102 666 Q 23.23(CertFile [no)-.4 F 1.439(short name] Fil\ +e containing one or more CA certi\214cates; see section about)3.94 F(ST) +174 678 Q(AR)-.93 E(TTLS for more information.)-.6 E +(CertFingerprintAlgorithm)102 694.2 Q 1.949(Specify the \214ngerprint a\ +lgorithm \(digest\) to use for the presented cert.)174 706.2 R 1.95 +(If the)6.95 F 2.346(option is not set, md5 is used and the macro)174 +718.2 R F0(${cert_md5})4.845 E F1 2.345(contains the cert)4.845 F 0 Cg +EP +%%Page: 64 60 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 193.36(SMM:08-64 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 3.764 +(\214ngerprint. If)174 96 R 1.264(the option is e)3.764 F 1.264 +(xplicitly set, the speci\214ed algorithm \(e.g., sha1\) is)-.15 F +(used and the macro)174 108 Q F0(${cert_fp})2.5 E F1 +(contains the cert \214ngerprint.)2.5 E 26.72(CipherList Specify)102 +124.2 R 1.06(cipher list for ST)3.56 F(AR)-.93 E 1.06 +(TTLS \(does not apply to TLSv1.3\).)-.6 F(See)6.06 E/F2 10 +/Times-Italic@0 SF(cipher)3.56 E(s)-.1 E F1(\(1\))A(for possible v)174 +136.2 Q(alues.)-.25 E 14.51(CheckAliases [n])102 152.4 R -1.11(Va)2.5 G +(lidate the RHS of aliases when reb)1.11 E(uilding the alias database.) +-.2 E(CheckpointInterv)102 168.6 Q(al=)-.25 E F2(N)A F1 1.296 +([C] Checkpoints the queue e)174 180.6 R -.15(ve)-.25 G(ry).15 E F2(N) +3.797 E F1(\(def)3.797 E 1.297(ault 10\) addresses sent.)-.1 F 1.297 +(If your system)6.297 F .747(crashes during deli)174 192.6 R -.15(ve) +-.25 G .746(ry to a lar).15 F .746(ge list, this pre)-.18 F -.15(ve)-.25 +G .746(nts retransmission to an).15 F 3.246(yb)-.15 G .746(ut the)-3.446 +F(last)174 204.6 Q F2(N)2.5 E F1(recipients.)2.5 E(ClassF)102 220.8 Q +(actor=)-.15 E F2(fact)A F1 1.624([z] The indicated)4.29 F F2(fact)4.124 +E F1 1.624(or is multiplied by the message class \(determined by the)B +.719(Precedence: \214eld in the user header and the)174 232.8 R F0(P) +3.219 E F1 .718(lines in the con\214guration \214le\) and)3.218 F 2.637 +(subtracted from the priority)174 244.8 R 7.637(.T)-.65 G 2.637 +(hus, messages with a higher Priority: will be)-7.637 F -.1(fa)174 256.8 +S -.2(vo)-.1 G 2.5(red. Def).2 F(aults to 1800.)-.1 E 12.27 +(ClientCertFile [no)102 273 R .708(short name] File containing the cert\ +i\214cate of the client, i.e., this certi\214cate is)3.209 F(used when) +174 285 Q F2(sendmail)2.5 E F1(acts as client \(for ST)2.5 E(AR)-.93 E +(TTLS\).)-.6 E(ClientK)102 301.2 Q -.15(ey)-.25 G 13.23(File [no).15 F +.714(short name] File containing the pri)3.214 F -.25(va)-.25 G .714 +(te k).25 F 1.014 -.15(ey b)-.1 H .714 +(elonging to the client certi\214cate).15 F(\(for ST)174 313.2 Q(AR)-.93 +E(TTLS if)-.6 E F2(sendmail)2.5 E F1(runs as client\).)2.5 E +(ClientPortOptions=)102 329.4 Q F2(options)A F1 .355 +([O] Set client SMTP options.)174 341.4 R .355(The options are)5.355 F +F2 -.1(ke)2.855 G(y=value)-.2 E F1 .355(pairs separated by com-)2.855 F +2.5(mas. Kno)174 353.4 R(wn k)-.25 E -.15(ey)-.1 G 2.5(sa).15 G(re:)-2.5 +E 52.83(Port Name/number)214 369.6 R +(of source port for connection \(def)2.5 E(aults to an)-.1 E 2.5(yf)-.15 +G(ree port\))-2.5 E 48.95(Addr Address)214 381.6 R(mask \(def)2.5 E +(aults IN)-.1 E(ADDR_ANY\))-.35 E -.15(Fa)214 393.6 S 41.31 +(mily Address).15 F -.1(fa)2.5 G(mily \(def).1 E(aults to INET\))-.1 E +21.72(SndBufSize Size)214 405.6 R(of TCP send b)2.5 E(uf)-.2 E(fer)-.25 +E 21.17(RcvBufSize Size)214 417.6 R(of TCP recei)2.5 E .3 -.15(ve b)-.25 +H(uf)-.05 E(fer)-.25 E 34.5(Modi\214er Options)214 429.6 R +(\(\215ags\) for the client)2.5 E(The)174 445.8 Q F2(Addr)3.256 E F1 +.756 +(ess mask may be a numeric address in IPv4 dot notation or IPv6 colon)B +1.149(notation or a netw)174 457.8 R 1.149(ork name.)-.1 F 1.149 +(Note that if a netw)6.149 F 1.148(ork name is speci\214ed, only the)-.1 +F .383(\214rst IP address returned for it will be used.)174 469.8 R .383 +(This may cause indeterminate beha)5.383 F(v-)-.2 E 1.485(ior for netw) +174 481.8 R 1.485(ork names that resolv)-.1 F 3.985(et)-.15 G 3.985(om) +-3.985 G 1.485(ultiple addresses.)-3.985 F 1.485(Therefore, use of an) +6.485 F(address is recommended.)174 493.8 Q F2(Modi\214er)5 E F1 +(can be the follo)2.5 E(wing character:)-.25 E 67(hu)214 510 S +(se name of interf)-67 E(ace for HELO command)-.1 E 64.78(Ad)214 522 S +(on')-64.78 E 2.5(tu)-.18 G(se A)-2.5 E(UTH when sending e-mail)-.55 E +66.44(Sd)214 534 S(on')-66.44 E 2.5(tu)-.18 G(se ST)-2.5 E(AR)-.93 E +(TTLS when sending e-mail)-.6 E .763(If `)174 550.2 R(`h')-.74 E 3.263 +('i)-.74 G 3.263(ss)-3.263 G .763 +(et, the name corresponding to the outgoing interf)-3.263 F .764 +(ace address \(whether)-.1 F .431 +(chosen via the Connection parameter or the def)174 562.2 R .431 +(ault\) is used for the HELO/EHLO)-.1 F 3.617(command. Ho)174 574.2 R +(we)-.25 E -.15(ve)-.25 G 1.917 -.4(r, t).15 H 1.118 +(he name must not start with a square brack).4 F 1.118(et and it must) +-.1 F 1.842(contain at least one dot.)174 586.2 R 1.842 +(This is a simple test whether the name is not an IP)6.842 F .712 +(address \(in square brack)174 598.2 R .713(ets\) b)-.1 F .713 +(ut a quali\214ed hostname.)-.2 F .713(Note that multiple Client-)5.713 +F .344(PortOptions settings are allo)174 610.2 R .343 +(wed in order to gi)-.25 F .643 -.15(ve s)-.25 H .343 +(ettings for each protocol f).15 F(amily)-.1 E .315(\(e.g., one for F) +174 622.2 R .316(amily=inet and one for F)-.15 F 2.816(amily=inet6\). A) +-.15 F .316(restriction placed on one)2.816 F -.1(fa)174 634.2 S +(mily only af).1 E(fects outgoing connections on that particular f)-.25 +E(amily)-.1 E(.)-.65 E(ClientSSLOptions)102 650.4 Q 3.496(As)174 662.4 S +.996(pace or comma separated list of SSL related options for the client\ + side.)-3.496 F(See)5.995 E F2(SSL_CTX_set_options)174 674.4 Q F1 .961 +(\(3\) for a list; the a)B -.25(va)-.2 G .961(ilable v).25 F .961 +(alues depend on the OpenSSL)-.25 F -.15(ve)174 686.4 S 5.629(rsion ag) +.15 F 5.629(ainst which)-.05 F F2(sendmail)8.129 E F1 5.629 +(is compiled.)8.129 F 5.628(By def)10.629 F(ault,)-.1 E F2(SSL_OP_ALL) +8.128 E 3.91(SSL_OP_NO_SSLv2 SSL_OP_NO_TICKET -SSL_OP_TLSEXT_P)174 698.4 +R(ADDING)-.9 E F1(are)6.41 E 1.016(used \(if those options are a)174 +710.4 R -.25(va)-.2 G 3.516(ilable\). Options).25 F 1.016 +(can be cleared by preceding them)3.516 F(with a minus sign.)174 722.4 Q +(It is also possible to specify numerical v)5 E(alues, e.g.,)-.25 E F0 +(-0x0010)2.5 E F1(.)A 0 Cg EP +%%Page: 65 61 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-65)195.86 E/F1 10/Times-Roman@0 SF 3.95(ColonOkInAddr [no)102 96 +R 4.679 +(short name] If set, colons are acceptable in e-mail addresses \(e.g.,) +7.179 F 3.54(\231host:user\232\). If)174 108 R 1.04 +(not set, colons indicate the be)3.54 F 1.04 +(ginning of a RFC 822 group con-)-.15 F 1.987 +(struct \(\231groupname: member1, member2, ... memberN;\232\).)174 120 R +1.988(Doubled colons are)6.988 F(al)174 132 Q -.1(wa)-.1 G 2.215(ys acc\ +eptable \(\231nodename::user\232\) and proper route-addr nesting is und\ +er).1 F(-)-.2 E 1.036(stood \(\231<@relay:user@host>\232\).)174 144 R +1.037(Furthermore, this option def)6.036 F 1.037(aults on if the con-) +-.1 F .854(\214guration v)174 156 R .854(ersion le)-.15 F -.15(ve)-.25 G +3.354(li).15 G 3.354(sl)-3.354 G .853 +(ess than 6 \(for back compatibility\).)-3.354 F(Ho)5.853 E(we)-.25 E +-.15(ve)-.25 G 1.653 -.4(r, i).15 H 3.353(tm).4 G(ust)-3.353 E(be of)174 +168 Q 2.5(ff)-.25 G(or full compatibility with RFC 822.)-2.5 E +(ConnectionCacheSize=)102 184.2 Q/F2 10/Times-Italic@0 SF(N)A F1 .242([\ +k] The maximum number of open connections that will be cached at a time\ +.)174 196.2 R(The)5.243 E(def)174 208.2 Q .386(ault is one.)-.1 F .386 +(This delays closing the current connection until either this in)5.386 F +-.2(vo)-.4 G(ca-).2 E 1.191(tion of)174 220.2 R F2(sendmail)3.691 E F1 +1.191(needs to connect to another host or it terminates.)3.691 F 1.192 +(Setting it to)6.192 F 2.047(zero def)174 232.2 R 2.047 +(aults to the old beha)-.1 F(vior)-.2 E 4.546(,t)-.4 G 2.046 +(hat is, connections are closed immediately)-4.546 F(.)-.65 E .266(Sinc\ +e this consumes \214le descriptors, the connection cache should be k)174 +244.2 R .266(ept small: 4)-.1 F(is probably a practical maximum.)174 +256.2 Q(ConnectionCacheT)102 272.4 Q(imeout=)-.35 E F2(timeout)A F1 .708 +([K] The maximum amount of time a cached connection will be permitted t\ +o idle)174 284.4 R 1.082(without acti)174 296.4 R(vity)-.25 E 6.082(.I) +-.65 G 3.582(ft)-6.082 G 1.083(his time is e)-3.582 F 1.083 +(xceeded, the connection is immediately closed.)-.15 F .418(This v)174 +308.4 R .418(alue should be small \(on the order of ten minutes\).)-.25 +F(Before)5.418 E F2(sendmail)2.918 E F1 .417(uses a)2.917 F .507 +(cached connection, it al)174 320.4 R -.1(wa)-.1 G .508 +(ys sends a RSET command to check the connection; if).1 F .402(this f) +174 332.4 R .402(ails, it reopens the connection.)-.1 F .401(This k) +5.402 F .401(eeps your end from f)-.1 F .401(ailing if the other)-.1 F +1.544(end times out.)174 344.4 R 1.545 +(The point of this option is to be a good netw)6.544 F 1.545 +(ork neighbor and)-.1 F -.2(avo)174 356.4 S(id using up e).2 E(xcessi) +-.15 E .3 -.15(ve r)-.25 H(esources on the other end.).15 E(The def)5 E +(ault is \214v)-.1 E 2.5(em)-.15 G(inutes.)-2.5 E(ConnectOnlyT)102 372.6 +Q(o=)-.8 E F2(addr)A(ess)-.37 E F1 .862 +([no short name] This can be used to o)174 384.6 R -.15(ve)-.15 G .861 +(rride the connection address \(for testing).15 F(purposes\).)174 396.6 +Q(ConnectionRateThrottle=)102 412.8 Q F2(N)A F1 .211 +([no short name] If set to a positi)174 424.8 R .511 -.15(ve v)-.25 H +.211(alue, allo)-.1 F 2.711(wn)-.25 G 2.712(om)-2.711 G .212(ore than) +-2.712 F F2(N)2.712 E F1 .212(incoming connec-)2.712 F .132 +(tions in a one second period per daemon.)174 436.8 R .132 +(This is intended to \215atten out peaks and)5.132 F(allo)174 448.8 Q +2.5(wt)-.25 G(he load a)-2.5 E -.15(ve)-.2 G(rage checking to cut in.) +.15 E(Def)5 E(aults to zero \(no limits\).)-.1 E(ConnectionRateW)102 465 +Q(indo)-.4 E(wSize=)-.25 E F2(N)A F1 .458 +([no short name] De\214ne the length of the interv)174 477 R .459 +(al for which the number of incom-)-.25 F +(ing connections is maintained.)174 489 Q(The def)5 E +(ault is 60 seconds.)-.1 E(ControlSock)102 505.2 Q(etName=)-.1 E F2 +(name)A F1 .477([no short name] Name of the control sock)174 517.2 R +.476(et for daemon management.)-.1 F 2.976(Ar)5.476 G(unning)-2.976 E F2 +(sendmail)174 529.2 Q F1 1.225 +(daemon can be controlled through this named sock)3.725 F 3.725(et. A) +-.1 F -.25(va)-.74 G 1.225(ilable com-).25 F 2.926(mands are:)174 541.2 +R F2 2.926(help, mstat, r)5.426 F 2.926(estart, shutdown,)-.37 F F1(and) +5.426 E F2(status.)5.426 E F1(The)7.926 E F2(status)5.426 E F1(command) +5.426 E .46(returns the current number of daemon children, the maximum \ +number of daemon)174 553.2 R .449 +(children, the free disk space \(in blocks\) of the queue directory)174 +565.2 R 2.949(,a)-.65 G .449(nd the load a)-2.949 F -.15(ve)-.2 G -.2 +(r-).15 G .882(age of the machine e)174 577.2 R .883 +(xpressed as an inte)-.15 F(ger)-.15 E 5.883(.I)-.55 G 3.383(fn)-5.883 G +.883(ot set, no control sock)-3.383 F .883(et will be)-.1 F -.2(av)174 +589.2 S 5.03(ailable. Solaris)-.05 F 2.529(and pre-4.4BSD k)5.029 F +2.529(ernel users should see the note in send-)-.1 F(mail/README .)174 +601.2 Q(CRLFile=)102 617.4 Q F2(name)A F1 .482 +([no short name] Name of \214le that contains certi\214cate re)9.69 F +-.2(vo)-.25 G .483(cation status, useful for).2 F .944 +(X.509v3 authentication.)174 629.4 R .943 +(Note: if a CRLFile is speci\214ed b)5.944 F .943 +(ut the \214le is unusable,)-.2 F(ST)174 641.4 Q(AR)-.93 E +(TTLS is disabled.)-.6 E(CRLP)102 657.6 Q(ath=)-.15 E F2(name)A F1 1.848 +([no short name] Name of directory that contains hashes pointing to cer\ +ti\214cate)7.62 F(re)174 669.6 Q -.2(vo)-.25 G 1.161 +(cation status \214les.).2 F 1.161 +(Symbolic links can be generated with the follo)6.161 F 1.16(wing tw) +-.25 F(o)-.1 E(\(Bourne\) shell commands:)174 681.6 Q(C=FileName_of_CRL) +214 697.8 Q(ln -s $C `openssl crl -noout -hash < $C`.r0)214 709.8 Q 0 Cg +EP +%%Page: 66 62 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 193.36(SMM:08-66 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF(DHP)102 +96 Q 10.78(arameters This)-.15 F(option applies to the serv)2.5 E +(er side only)-.15 E 5(.P)-.65 G(ossible v)-5 E(alues are:)-.25 E 139 +(5u)214 112.2 S(se precomputed 512 bit prime.)-139 E 139(1g)214 124.2 S +(enerate 1024 bit prime)-139 E 139(2g)214 136.2 S +(enerate 2048 bit prime.)-139 E 141.22(iu)214 148.2 S +(se included precomputed 2048 bit prime \(def)-141.22 E(ault\).)-.1 E +122.06(none do)214 160.2 R(not use Dif)2.5 E(\214e-Hellman.)-.25 E 95.38 +(/path/to/\214le load)214 172.2 R(prime from \214le.)2.5 E .63 +(This is only required if a ciphersuite containing DSA/DH is used.)174 +188.4 R .63(The def)5.63 F .63(ault is)-.1 F -.74(``)174 200.4 S(i').74 +E 3.407('w)-.74 G .907(hich selects a precomputed, \214x)-3.407 F .907 +(ed 2048 bit prime.)-.15 F .907(If `)5.907 F(`5')-.74 E 3.407('i)-.74 G +3.407(ss)-3.407 G .906(elected, then)-3.407 F .408(precomputed, \214x) +174 212.4 R .408(ed primes are used.)-.15 F .409 +(Note: this option should not be used \(unless)5.408 F .275 +(necessary for compatibility with old implementations\).)174 224.4 R +.274(If `)5.275 F(`1')-.74 E 2.774('o)-.74 G 2.774(r`)-2.774 G(`2') +-3.514 E 2.774('i)-.74 G 2.774(ss)-2.774 G(elected,)-2.774 E 1.237 +(then prime v)174 236.4 R 1.237(alues are computed during startup.)-.25 +F 1.238(Note: this operation can tak)6.238 F 3.738(ea)-.1 G 1.649 +(signi\214cant amount of time on a slo)174 248.4 R 4.148(wm)-.25 G 1.648 +(achine \(se)-4.148 F -.15(ve)-.25 G 1.648(ral seconds\), b).15 F 1.648 +(ut it is only)-.2 F 1.857(done once at startup.)174 260.4 R 1.857(If `) +6.857 F(`none')-.74 E 4.357('i)-.74 G 4.357(ss)-4.357 G 1.858 +(elected, then TLS ciphersuites containing)-4.357 F .798 +(DSA/DH cannot be used.)174 272.4 R .797 +(If a \214le name is speci\214ed \(which must be an absolute)5.797 F +.449(path\), then the primes are read from it.)174 284.4 R .45 +(It is recommended to generate such a \214le)5.449 F +(using a command lik)174 296.4 Q 2.5(et)-.1 G(his:)-2.5 E +(openssl dhparam -out /etc/mail/dhparams.pem 2048)358 312.6 Q .054 +(If the \214le is not readable or contains unusable data, the def)174 +328.8 R .054(ault `)-.1 F(`i')-.74 E 2.554('i)-.74 G 2.554(su)-2.554 G +.054(sed instead.)-2.554 F(DaemonPortOptions=)102 345 Q/F2 10 +/Times-Italic@0 SF(options)A F1 .363([O] Set serv)174 357 R .363 +(er SMTP options.)-.15 F .364(Each instance of)5.364 F F0(DaemonP)2.864 +E(ortOptions)-.2 E F1 .364(leads to an)2.864 F(additional incoming sock) +174 369 Q 2.5(et. The)-.1 F(options are)2.5 E F2 -.1(ke)2.5 G(y=value) +-.2 E F1 2.5(pairs. Kno)2.5 F(wn k)-.25 E -.15(ey)-.1 G 2.5(sa).15 G +(re:)-2.5 E 45.62(Name User)214 385.2 R +(-de\214nable name for the daemon \(def)-.2 E(aults to "Daemon#"\))-.1 E +52.83(Port Name/number)214 397.2 R(of listening port \(def)2.5 E +(aults to "smtp"\))-.1 E 48.95(Addr Address)214 409.2 R(mask \(def)2.5 E +(aults IN)-.1 E(ADDR_ANY\))-.35 E -.15(Fa)214 421.2 S 41.31 +(mily Address).15 F -.1(fa)2.5 G(mily \(def).1 E(aults to INET\))-.1 E +3.94(InputMailFilters List)214 433.2 R +(of input mail \214lters for the daemon)2.5 E 44.5(Listen Size)214 445.2 +R(of listen queue \(def)2.5 E(aults to 10\))-.1 E 34.5 +(Modi\214er Options)214 457.2 R(\(\215ags\) for the daemon)2.5 E 21.72 +(SndBufSize Size)214 469.2 R(of TCP send b)2.5 E(uf)-.2 E(fer)-.25 E +21.17(RcvBufSize Size)214 481.2 R(of TCP recei)2.5 E .3 -.15(ve b)-.25 H +(uf)-.05 E(fer)-.25 E 36.73(children maximum)214 493.2 R +(number of children per daemon, see)2.5 E F0(MaxDaemonChildr)2.5 E(en) +-.18 E F1(.)A(Deli)214 505.2 Q -.15(ve)-.25 G 11.58(ryMode Deli).15 F +-.15(ve)-.25 G(ry mode per daemon, see).15 E F0(Deli)2.5 E -.1(ve)-.1 G +(ryMode).1 E F1(.)A 31.74(refuseLA RefuseLA)214 517.2 R(per daemon)2.5 E +34.51(delayLA DelayLA)214 529.2 R(per daemon)2.5 E 32.29 +(queueLA QueueLA)214 541.2 R(per daemon)2.5 E(The)174 557.4 Q F2(Name) +2.681 E F1 -.1(ke)2.681 G 2.681(yi)-.05 G 2.681(su)-2.681 G .181 +(sed for error messages and logging.)-2.681 F(The)5.181 E F2(Addr)2.68 E +F1 .18(ess mask may be)B 2.589(an)174 569.4 S .089 +(umeric address in IPv4 dot notation or IPv6 colon notation, or a netw) +-2.589 F .09(ork name,)-.1 F .342(or a path to a local sock)174 581.4 R +2.841(et. Note)-.1 F .341(that if a netw)2.841 F .341 +(ork name is speci\214ed, only the \214rst)-.1 F .084 +(IP address returned for it will be used.)174 593.4 R .085 +(This may cause indeterminate beha)5.085 F .085(vior for)-.2 F(netw)174 +605.4 Q .328(ork names that resolv)-.1 F 2.828(et)-.15 G 2.828(om)-2.828 +G .328(ultiple addresses.)-2.828 F .327(Therefore, use of an address is) +5.327 F 2.92(recommended. The)174 617.4 R F2 -.75(Fa)2.92 G(mily).75 E +F1 -.1(ke)2.92 G 2.92(yd)-.05 G(ef)-2.92 E .42(aults to INET \(IPv4\).) +-.1 F .42(IPv6 users who wish to)5.42 F 1.611 +(also accept IPv6 connections should add additional F)174 629.4 R +(amily=inet6)-.15 E F0(DaemonP)4.111 E(or)-.2 E(-)-.37 E(tOptions)174 +641.4 Q F1 2.889(lines. F)2.889 F .389(or a local sock)-.15 F .389 +(et, use F)-.1 F .389(amily=local or F)-.15 F 2.889(amily=unix. The)-.15 +F F2(Input-)2.89 E(MailF)174 653.4 Q(ilter)-.45 E(s)-.1 E F1 -.1(ke)3.34 +G 3.34(yo)-.05 G -.15(ve)-3.49 G .84(rrides the def).15 F .84 +(ault list of input mail \214lters listed in the)-.1 F F0(Input-)3.34 E +(MailFilters)174 665.4 Q F1 2.955(option. If)2.955 F .455 +(multiple input mail \214lters are required, the)2.955 F 2.955(ym)-.15 G +.455(ust be sepa-)-2.955 F 2.065(rated by semicolons \(not commas\).)174 +677.4 R F2(Modi\214er)7.065 E F1 2.064(can be a sequence \(without an) +4.565 F(y)-.15 E(delimiters\) of the follo)174 689.4 Q(wing characters:) +-.25 E 0 Cg EP +%%Page: 67 63 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-67)195.86 E/F1 10/Times-Roman@0 SF 67.56(aa)214 96 S -.1(lwa) +-67.56 G(ys require A).1 E(UTH)-.55 E 67(bb)214 108 S(ind to interf)-67 +E(ace through which mail has been recei)-.1 E -.15(ve)-.25 G(d).15 E +67.56(cp)214 120 S(erform hostname canoni\214cation \(.cf\))-67.56 E +68.67(fr)214 132 S(equire fully quali\214ed hostname \(.cf\))-68.67 E +68.11(sR)214 144 S(un smtps \(SMTP o)-68.11 E -.15(ve)-.15 G 2.5(rS).15 +G(SL\) instead of smtp)-2.5 E 67(ua)214 156 S(llo)-67 E 2.5(wu)-.25 G +(nquali\214ed addresses \(.cf\))-2.5 E 64.78(Ad)214 168 S(isable A) +-64.78 E(UTH \(o)-.55 E -.15(ve)-.15 G(rrides 'a' modi\214er\)).15 E +65.33(Cd)214 180 S(on')-65.33 E 2.5(tp)-.18 G +(erform hostname canoni\214cation)-2.5 E 65.89(Ed)214 192 S(isallo) +-65.89 E 2.5(wE)-.25 G(TRN \(see RFC 2476\))-2.5 E 64.78(Oo)214 204 S +(ptional; if opening the sock)-64.78 E(et f)-.1 E(ails ignore it)-.1 E +66.44(Sd)214 216 S(on')-66.44 E 2.5(to)-.18 G -.25(ff)-2.5 G(er ST).25 E +(AR)-.93 E(TTLS)-.6 E 2.412(That is, one w)174 232.2 R 2.413 +(ay to specify a message submission agent \(MSA\) that al)-.1 F -.1(wa) +-.1 G(ys).1 E(requires A)174 244.2 Q(UTH is:)-.55 E 2.5(OD)214 260.4 S +(aemonPortOptions=Name=MSA, Port=587, M=Ea)-2.5 E .244 +(The modi\214ers that are mark)174 276.6 R .244(ed with "\(.cf\)" ha)-.1 +F .544 -.15(ve o)-.2 H .244(nly ef).15 F .244 +(fect in the standard con\214g-)-.25 F .16(uration \214le, in which the) +174 288.6 R 2.66(ya)-.15 G .16(re a)-2.66 F -.25(va)-.2 G .16 +(ilable via).25 F F0(${daemon_\215ags})2.66 E F1 5.16(.N)C .16 +(otice: Do)-5.16 F F0(not)2.66 E F1(use)2.66 E .461(the `)174 300.6 R +(`a')-.74 E 2.961('m)-.74 G .461(odi\214er on a public accessible MT) +-2.961 F 2.961(A! It)-.93 F .46(should only be used for a MSA)2.961 F +2.553(that is accessed by authorized users for initial mail submission.) +174 312.6 R 2.553(Users must)7.553 F 1.141 +(authenticate to use a MSA which has this option turned on.)174 324.6 R +1.14(The \215ags `)6.14 F(`c')-.74 E 3.64('a)-.74 G(nd)-3.64 E -.74(``) +174 336.6 S(C').74 E 3.785('c)-.74 G 1.285(an change the def)-3.785 F +1.286(ault for hostname canoni\214cation in the)-.1 F/F2 10 +/Times-Italic@0 SF(sendmail.cf)3.786 E F1(\214le.)3.786 E .765 +(See the rele)174 348.6 R -.25(va)-.25 G .765(nt documentation for).25 F +/F3 9/Times-Roman@0 SF(FEA)3.265 E(TURE\(nocanonify\))-.999 E F1 5.765 +(.T)C .765(he modi\214er `)-5.765 F -1.95(`f ')-.74 F 3.264('d)-.74 G +(is-)-3.264 E(allo)174 360.6 Q .794(ws addresses of the form)-.25 F F0 +(user@host)3.294 E F1 .795(unless the)3.295 F 3.295(ya)-.15 G .795 +(re submitted directly)-3.295 F 5.795(.T)-.65 G(he)-5.795 E 2.127 +(\215ag `)174 372.6 R(`u')-.74 E 4.627('a)-.74 G(llo)-4.627 E 2.127 +(ws unquali\214ed sender addresses, i.e., those without @host.)-.25 F +-.74(``)7.127 G(b').74 E(')-.74 E 2.791 +(forces sendmail to bind to the interf)174 384.6 R 2.791 +(ace through which the e-mail has been)-.1 F(recei)174 396.6 Q -.15(ve) +-.25 G 4.369(df).15 G 1.869(or the outgoing connection.)-4.369 F F0 -1.2 +(WA)6.869 G(RNING:)1.2 E F1 1.869(Use `)4.369 F(`b')-.74 E 4.369('o)-.74 +G 1.869(nly if outgoing)-4.369 F .517 +(mail can be routed through the incoming connection')174 408.6 R 3.017 +(si)-.55 G(nterf)-3.017 E .518(ace to its destination.)-.1 F .119(No at\ +tempt is made to catch problems due to a miscon\214guration of this par\ +ameter)174 420.6 R(,)-.4 E 1.177 +(use it only for virtual hosting where each virtual interf)174 432.6 R +1.177(ace can connect to e)-.1 F -.15(ve)-.25 G(ry).15 E 2.002 +(possible location.)174 444.6 R 2.001(This will also o)7.001 F -.15(ve) +-.15 G 2.001(rride possible settings via).15 F F0(ClientP)4.501 E +(ortOp-)-.2 E(tions.)174 456.6 Q F1(Note,)5.248 E F2(sendmail)2.748 E F1 +.248(will listen on a ne)2.748 F 2.749(ws)-.25 G(ock)-2.749 E .249 +(et for each occurrence of the)-.1 F F0(Dae-)2.749 E(monP)174 468.6 Q +(ortOptions)-.2 E F1 .838(option in a con\214guration \214le.)3.338 F +.838(The modi\214er `)5.838 F(`O')-.74 E 3.338('c)-.74 G .838 +(auses send-)-3.338 F 1.417(mail to ignore a sock)174 480.6 R 1.417 +(et if it can')-.1 F 3.917(tb)-.18 G 3.917(eo)-3.917 G 3.917 +(pened. This)-3.917 F 1.418(applies to f)3.918 F 1.418(ailures from the) +-.1 F(sock)174 492.6 Q(et\(2\) and bind\(2\) calls.)-.1 E(Def)102 508.8 +Q 2.95(aultAuthInfo [no)-.1 F .181 +(short name] Filename that contains def)2.681 F .181 +(ault authentication information for out-)-.1 F 1.737(going connections\ +. This \214le must contain the user id, the authorization id, the)174 +520.8 R(passw)174 532.8 Q 1.562(ord \(plain te)-.1 F 1.561 +(xt\), the realm and the list of mechanisms to use on separate)-.15 F +.287(lines and must be readable by root \(or the trusted user\) only)174 +544.8 R 5.288(.I)-.65 G 2.788(fn)-5.288 G 2.788(or)-2.788 G .288 +(ealm is speci-)-2.788 F(\214ed,)174 556.8 Q F0($j)3.705 E F1 1.205 +(is used.)3.705 F 1.205(If no mechanisms are speci\214ed, the list gi) +6.205 F -.15(ve)-.25 G 3.704(nb).15 G(y)-3.704 E F0 -.5(Au)3.704 G +(thMecha-).5 E(nisms)174 568.8 Q F1 1.371(is used.)3.871 F 1.372 +(Notice: this option is deprecated and will be remo)6.371 F -.15(ve)-.15 +G 3.872(di).15 G 3.872(nf)-3.872 G(uture)-3.872 E -.15(ve)174 580.8 S +3.411(rsions. Moreo).15 F -.15(ve)-.15 G 1.711 -.4(r, i).15 H 3.411(td) +.4 G(oesn')-3.411 E 3.411(tw)-.18 G .911(ork for the MSP since it can') +-3.511 F 3.41(tr)-.18 G .91(ead the \214le \(the)-3.41 F .014 +(\214le must not be group/w)174 592.8 R .014(orld-readable otherwise)-.1 +F F2(sendmail)2.514 E F1 .014(will complain\).)2.514 F .014(Use the) +5.014 F 1.2(authinfo ruleset instead which pro)174 604.8 R 1.2 +(vides more control o)-.15 F -.15(ve)-.15 G 3.7(rt).15 G 1.2 +(he usage of the data)-3.7 F(an)174 616.8 Q(yw)-.15 E(ay)-.1 E(.)-.65 E +(Def)102 633 Q(aultCharSet=)-.1 E F2 -.15(ch)C(ar).15 E(set)-.1 E F1 .16 +([no short name] When a message that has 8-bit characters b)174 645 R +.161(ut is not in MIME for)-.2 F(-)-.2 E .495(mat is con)174 657 R -.15 +(ve)-.4 G .495 +(rted to MIME \(see the EightBitMode option\) a character set must be) +.15 F .487(included in the Content-T)174 669 R .487(ype: header)-.8 F +5.487(.T)-.55 G .488(his character set is normally set from the)-5.487 F +.133(Charset= \214eld of the mailer descriptor)174 681 R 5.133(.I)-.55 G +2.633(ft)-5.133 G .133(hat is not set, the v)-2.633 F .133 +(alue of this option is)-.25 F 2.5(used. If)174 693 R +(this option is not set, the v)2.5 E(alue \231unkno)-.25 E +(wn-8bit\232 is used.)-.25 E(DataFileBuf)102 709.2 Q(ferSize=)-.25 E F2 +(thr)A(eshold)-.37 E F1 .011([no short name] Set the)174 721.2 R F2(thr) +2.511 E(eshold)-.37 E F1 2.511(,i)C 2.512(nb)-2.511 G .012 +(ytes, before a memory-based queue data \214le)-2.512 F 0 Cg EP +%%Page: 68 64 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 193.36(SMM:08-68 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF +(becomes disk-based.)174 96 Q(The def)5 E(ault is 4096 bytes.)-.1 E +(DeadLetterDrop=)102 112.2 Q/F2 10/Times-Italic@0 SF(\214le)A F1 .535([\ +no short name] De\214nes the location of the system-wide dead.letter \ +\214le, formerly)174 124.2 R .743(hardcoded to /usr/tmp/dead.letter)174 +136.2 R 5.743(.I)-.55 G 3.243(ft)-5.743 G .744 +(his option is not set \(the def)-3.243 F .744(ault\), sendmail)-.1 F +1.465(will not attempt to sa)174 148.2 R 1.764 -.15(ve t)-.2 H 3.964 +(oas).15 G 1.464(ystem-wide dead.letter \214le in the e)-3.964 F -.15 +(ve)-.25 G 1.464(nt it cannot).15 F .575 +(bounce the mail to the user or postmaster)174 160.2 R 5.575(.I)-.55 G +.575(nstead, it will rename the qf \214le as it)-5.575 F +(has in the past when the dead.letter \214le could not be opened.)174 +172.2 Q(Def)102 188.4 Q(aultUser=)-.1 E F2(user:gr)A(oup)-.45 E F1 .014 +([u] Set the def)174 200.4 R .014(ault userid for mailers to)-.1 F F2 +(user:gr)2.513 E(oup)-.45 E F1 5.013(.I)C(f)-5.013 E F2(gr)2.513 E(oup) +-.45 E F1 .013(is omitted and)2.513 F F2(user)2.513 E F1(is)2.513 E +4.306(au)174 212.4 S 1.807 +(ser name \(as opposed to a numeric user id\) the def)-4.306 F 1.807 +(ault group listed in the)-.1 F 1.153 +(/etc/passwd \214le for that user is used as the def)174 224.4 R 1.153 +(ault group.)-.1 F(Both)6.153 E F2(user)3.653 E F1(and)3.652 E F2(gr) +3.652 E(oup)-.45 E F1 1.152(may be numeric.)174 236.4 R 1.152 +(Mailers without the)6.152 F F2(S)3.652 E F1 1.152 +(\215ag in the mailer de\214nition will run as)3.652 F .142(this user) +174 250.4 R 5.142(.D)-.55 G(ef)-5.142 E .142(aults to 1:1.)-.1 F .142 +(The v)5.142 F .142(alue can also be gi)-.25 F -.15(ve)-.25 G 2.642(na) +.15 G 2.642(sas)-2.642 G .142(ymbolic user name.)-2.642 F/F3 7 +/Times-Roman@0 SF(19)-4 I F1(DelayLA=)102 266.6 Q F2(LA)A F1 .996 +([no short name] When the system load a)17.48 F -.15(ve)-.2 G .996 +(rage e).15 F(xceeds)-.15 E F2(LA)3.496 E F1(,)A F2(sendmail)3.496 E F1 +.996(will sleep)3.496 F +(for one second on most SMTP commands and before accepting connections.) +174 278.6 Q(Deli)102 294.8 Q -.15(ve)-.25 G(rByMin=).15 E F2(time)A F1 +.203([0] Set minimum time for Deli)174 306.8 R -.15(ve)-.25 G 2.702(rB) +.15 G 2.702(yS)-2.702 G .202(MTP Service Extension \(RFC 2852\).)-2.702 +F .202(If 0,)5.202 F .486(no time is listed, if less than 0, the e)174 +318.8 R .487(xtension is not of)-.15 F .487 +(fered, if greater than 0, it is)-.25 F +(listed as minimum time for the EHLO k)174 330.8 Q -.15(ey)-.1 G -.1(wo) +.15 G(rd DELIVERBY).1 E(.)-1.29 E(Deli)102 347 Q -.15(ve)-.25 G(ryMode=) +.15 E F2(x)A F1([d] Deli)4 E -.15(ve)-.25 G 2.5(ri).15 G 2.5(nm)-2.5 G +(ode)-2.5 E F2(x)2.5 E F1 5(.L)C -2.25 -.15(eg a)-5 H 2.5(lm).15 G +(odes are:)-2.5 E 17.22(iD)214 363.2 S(eli)-17.22 E -.15(ve)-.25 G 2.5 +(ri).15 G(nteracti)-2.5 E -.15(ve)-.25 G(ly \(synchronously\)).15 E 15 +(bD)214 375.2 S(eli)-15 E -.15(ve)-.25 G 2.5(ri).15 G 2.5(nb)-2.5 G +(ackground \(asynchronously\))-2.5 E 15(qJ)214 387.2 S +(ust queue the message \(deli)-15 E -.15(ve)-.25 G 2.5(rd).15 G +(uring queue run\))-2.5 E 15(dD)214 399.2 S(efer deli)-15 E -.15(ve)-.25 +G(ry and all map lookups \(deli).15 E -.15(ve)-.25 G 2.5(rd).15 G +(uring queue run\))-2.5 E(Def)174 415.4 Q .712(aults to `)-.1 F(`b')-.74 +E 3.212('i)-.74 G 3.212(fn)-3.212 G 3.211(oo)-3.212 G .711 +(ption is speci\214ed, `)-3.211 F(`i')-.74 E 3.211('i)-.74 G 3.211(fi) +-3.211 G 3.211(ti)-3.211 G 3.211(ss)-3.211 G .711(peci\214ed b)-3.211 F +.711(ut gi)-.2 F -.15(ve)-.25 G 3.211(nn).15 G 3.211(oa)-3.211 G -.18 +(rg)-3.211 G(u-).18 E .094(ment \(i.e., `)174 427.4 R(`Od')-.74 E 2.594 +('i)-.74 G 2.594(se)-2.594 G(qui)-2.594 E -.25(va)-.25 G .094(lent to `) +.25 F(`Odi')-.74 E 2.594('\). The)-.74 F F02.594 E F1 .094 +(command line \215ag sets this to)2.594 F F0(i)2.594 E F1(.)A 1.527 +(Note: for internal reasons, `)174 439.4 R(`i')-.74 E 4.027('d)-.74 G +1.527(oes not w)-4.027 F 1.526(ork if a milter is enabled which can)-.1 +F(reject or delete recipients.)174 451.4 Q +(In that case the mode will be changed to `)5 E(`b')-.74 E('.)-.74 E +(DialDelay=)102 467.6 Q F2(sleeptime)A F1 .798 +([no short name] Dial-on-demand netw)174 479.6 R .798 +(ork connections can see timeouts if a con-)-.1 F .665 +(nection is opened before the call is set up.)174 491.6 R .665 +(If this is set to an interv)5.665 F .665(al and a con-)-.25 F .742 +(nection times out on the \214rst connection being attempted)174 503.6 R +F2(sendmail)3.243 E F1 .743(will sleep for)3.243 F .31 +(this amount of time and try ag)174 515.6 R 2.81(ain. This)-.05 F .31 +(should gi)2.81 F .61 -.15(ve y)-.25 H .31(our system time to establish) +.15 F 1.542(the connection to your service pro)174 527.6 R(vider)-.15 E +6.543(.U)-.55 G 1.543(nits def)-6.543 F 1.543 +(ault to seconds, so \231DialDe-)-.1 F 1.799(lay=5\232 uses a \214v)174 +539.6 R 4.299(es)-.15 G 1.799(econd delay)-4.299 F 6.799(.D)-.65 G(ef) +-6.799 E 1.798(aults to zero \(no retry\).)-.1 F 1.798(This delay only) +6.798 F(applies to mailers which ha)174 551.6 Q .3 -.15(ve t)-.2 H +(he Z \215ag set.).15 E(DirectSubmissionModi\214ers=)102 567.8 Q F2 +(modi\214er)A(s)-.1 E F1(De\214nes)174 579.8 Q F0(${daemon_\215ags}) +5.083 E F1 2.583(for direct \(command line\) submissions.)5.083 F 2.584 +(If not set,)7.584 F F0(${daemon_\215ags})174 591.8 Q F1 1.417 +(is either "CC f" if the option)3.917 F F03.916 E F1 1.416 +(is used or "c u" otherwise.)3.916 F +(Note that only the the "CC", "c", "f", and "u" \215ags are check)174 +603.8 Q(ed.)-.1 E(DontBlameSendmail=)102 620 Q F2(option,option,...)A F1 +.064([no short name] In order to a)174 632 R -.2(vo)-.2 G .065 +(id possible cracking attempts caused by w).2 F .065(orld- and)-.1 F +.255(group-writable \214les and directories,)174 644 R F2(sendmail)2.755 +E F1 .254(does paranoid checking when open-)2.754 F .297 +(ing most of its support \214les.)174 656 R .298 +(If for some reason you absolutely must run with, for)5.297 F -.15(ex) +174 668 S .177(ample, a group-writable).15 F F2(/etc)2.677 E F1 +(directory)2.677 E 2.677(,t)-.65 G .177(hen you will ha)-2.677 F .477 +-.15(ve t)-.2 H 2.677(ot).15 G .177(urn of)-2.677 F 2.677(ft)-.25 G .176 +(his check-)-2.677 F .794 +(ing \(at the cost of making your system more vulnerable to attack\).) +174 680 R .794(The possible)5.794 F .32 LW 76 689.6 72 689.6 DL 80 689.6 +76 689.6 DL 84 689.6 80 689.6 DL 88 689.6 84 689.6 DL 92 689.6 88 689.6 +DL 96 689.6 92 689.6 DL 100 689.6 96 689.6 DL 104 689.6 100 689.6 DL 108 +689.6 104 689.6 DL 112 689.6 108 689.6 DL 116 689.6 112 689.6 DL 120 +689.6 116 689.6 DL 124 689.6 120 689.6 DL 128 689.6 124 689.6 DL 132 +689.6 128 689.6 DL 136 689.6 132 689.6 DL 140 689.6 136 689.6 DL 144 +689.6 140 689.6 DL 148 689.6 144 689.6 DL 152 689.6 148 689.6 DL 156 +689.6 152 689.6 DL 160 689.6 156 689.6 DL 164 689.6 160 689.6 DL 168 +689.6 164 689.6 DL 172 689.6 168 689.6 DL 176 689.6 172 689.6 DL 180 +689.6 176 689.6 DL 184 689.6 180 689.6 DL 188 689.6 184 689.6 DL 192 +689.6 188 689.6 DL 196 689.6 192 689.6 DL 200 689.6 196 689.6 DL 204 +689.6 200 689.6 DL 208 689.6 204 689.6 DL 212 689.6 208 689.6 DL 216 +689.6 212 689.6 DL/F4 5/Times-Roman@0 SF(19)93.6 700 Q/F5 8 +/Times-Roman@0 SF(The old)3.2 I/F6 8/Times-Bold@0 SF(g)2 E F5 +(option has been combined into the)2 E F6(DefaultUser)2 E F5(option.)2 E +0 Cg EP +%%Page: 69 65 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-69)195.86 E/F1 10/Times-Roman@0 SF(ar)174 96 Q 1.395(guments ha) +-.18 F 1.695 -.15(ve b)-.2 H 1.395(een described earlier).15 F 6.395(.T) +-.55 G 1.394(he details of these \215ags are described)-6.395 F(abo)174 +108 Q -.15(ve)-.15 G(.).15 E F0(Use of this option is not r)5 E +(ecommended.)-.18 E F1(DontExpandCnames)102 124.2 Q .559([no short name\ +] The standards say that all host addresses used in a mail message)174 +136.2 R 1.408(must be fully canonical.)174 148.2 R -.15(Fo)6.407 G 3.907 +(re).15 G 1.407(xample, if your host is named \231Cruft.F)-4.057 F +(oo.ORG\232)-.15 E 1.462(and also has an alias of \231FTP)174 160.2 R +(.F)-1.11 E 1.462(oo.ORG\232, the former name must be used at all)-.15 F +2.631(times. This)174 172.2 R .131 +(is enforced during host name canoni\214cation \($[ ... $] lookups\).) +2.631 F .13(If this)5.13 F .661(option is set, the protocols are ignore\ +d and the \231wrong\232 thing is done.)174 184.2 R(Ho)5.662 E(we)-.25 E +-.15(ve)-.25 G -.4(r,).15 G .872(the IETF is mo)174 196.2 R .872 +(ving to)-.15 F -.1(wa)-.25 G .872 +(rd changing this standard, so the beha).1 F .871(vior may become)-.2 F +3.009(acceptable. Please)174 208.2 R .509(note that hosts do)3.009 F +.509(wnstream may still re)-.25 F .509(write the address to be)-.25 F +(the true canonical name ho)174 220.2 Q(we)-.25 E -.15(ve)-.25 G -.55 +(r.).15 G 6.17(DontInitGroups [no)102 236.4 R .25(short name] If set,) +2.75 F/F2 10/Times-Italic@0 SF(sendmail)2.75 E F1 .25(will a)2.75 F -.2 +(vo)-.2 G .25(id using the initgroups\(3\) call.).2 F .25(If you are) +5.25 F .583(running NIS, this causes a sequential scan of the groups.by\ +name map, which can)174 248.4 R .436(cause your NIS serv)174 260.4 R +.436(er to be badly o)-.15 F -.15(ve)-.15 G .435(rloaded in a lar).15 F +.435(ge domain.)-.18 F .435(The cost of this)5.435 F .697(is that the o\ +nly group found for users will be their primary group \(the one in the) +174 272.4 R(passw)174 284.4 Q 1.189(ord \214le\), which will mak)-.1 F +3.689<658c>-.1 G 1.189(le access permissions some)-3.689 F 1.189 +(what more restric-)-.25 F(ti)174 296.4 Q -.15(ve)-.25 G 5(.H).15 G +(as no ef)-5 E(fect on systems that don')-.25 E 2.5(th)-.18 G -2.25 -.2 +(av e)-2.5 H(group lists.)2.7 E(DontProbeInterf)102 312.6 Q(aces)-.1 E +1.712([no short name])174 324.6 R F2(Sendmail)4.212 E F1 1.713 +(normally \214nds the names of all interf)4.212 F 1.713(aces acti)-.1 F +2.013 -.15(ve o)-.25 H(n).15 E 1.103 +(your machine when it starts up and adds their name to the)174 336.6 R +F0($=w)3.602 E F1 1.102(class of kno)3.602 F(wn)-.25 E 1.835 +(host aliases.)174 348.6 R 1.835(If you ha)6.835 F 2.136 -.15(ve a l)-.2 +H(ar).15 E 1.836(ge number of virtual interf)-.18 F 1.836 +(aces or if your DNS)-.1 F(in)174 360.6 Q -.15(ve)-.4 G .959 +(rse lookups are slo).15 F 3.459(wt)-.25 G .959 +(his can be time consuming.)-3.459 F .958(This option turns of)5.958 F +3.458(ft)-.25 G(hat)-3.458 E 2.973(probing. Ho)174 372.6 R(we)-.25 E +-.15(ve)-.25 G 1.273 -.4(r, y).15 H .474 +(ou will need to be certain to include all v).4 F .474 +(ariant names in the)-.25 F F0($=w)174 384.6 Q F1 1.868 +(class by some other mechanism.)4.369 F 1.868(If set to)6.868 F F0 +(loopback)4.368 E F1 4.368(,l)C 1.868(oopback interf)-4.368 F(aces)-.1 E +(\(e.g., lo0\) will not be probed.)174 396.6 Q -1.61 +(DontPruneRoutes [R])102 412.8 R(Normally)3.905 E(,)-.65 E F2(sendmail) +3.905 E F1 1.405(tries to eliminate an)3.905 F 3.905(yu)-.15 G 1.405 +(nnecessary e)-3.905 F 1.405(xplicit routes when)-.15 F .155 +(sending an error message \(as discussed in RFC 1123 \247 5.2.6\).)174 +424.8 R -.15(Fo)5.154 G 2.654(re).15 G .154(xample, when)-2.804 F +(sending an error message to)174 436.8 Q(<@kno)214 453 Q(wn1,@kno)-.25 E +(wn2,@kno)-.25 E(wn3:user@unkno)-.25 E(wn>)-.25 E F2(sendmail)174 469.2 +Q F1 1.155(will strip of)3.655 F 3.655(ft)-.25 G 1.155(he \231@kno) +-3.655 F(wn1,@kno)-.25 E 1.155(wn2\232 in order to mak)-.25 F 3.655(et) +-.1 G 1.155(he route as)-3.655 F .813(direct as possible.)174 481.2 R +(Ho)5.813 E(we)-.25 E -.15(ve)-.25 G 1.613 -.4(r, i).15 H 3.313(ft).4 G +(he)-3.313 E F0(R)3.313 E F1 .812 +(option is set, this will be disabled, and the)3.313 F .009 +(mail will be sent to the \214rst address in the route, e)174 493.2 R +-.15(ve)-.25 G 2.51(ni).15 G 2.51(fl)-2.51 G .01(ater addresses are kno) +-2.51 F(wn.)-.25 E(This may be useful if you are caught behind a \214re) +174 505.2 Q -.1(wa)-.25 G(ll.).1 E(DoubleBounceAddress=)102 521.4 Q F2 +(err)A(or)-.45 E(-addr)-.2 E(ess)-.37 E F1 .504([no short name] If an e\ +rror occurs when sending an error message, send the error)174 533.4 R +1.999(report \(termed a \231double bounce\232 because it is an error \ +\231bounce\232 that occurs)174 545.4 R .053(when trying to send another\ + error \231bounce\232\) to the indicated address.)174 557.4 R .053 +(The address)5.053 F .474(is macro e)174 569.4 R .474 +(xpanded at the time of deli)-.15 F -.15(ve)-.25 G(ry).15 E 5.474(.I) +-.65 G 2.974(fn)-5.474 G .474(ot set, def)-2.974 F .475 +(aults to \231postmaster\232.)-.1 F(If)5.475 E +(set to an empty string, double bounces are dropped.)174 581.4 Q +(EightBitMode=)102 597.6 Q F2(action)A F1 1.956 +([8] Set handling of eight-bit data.)174 609.6 R 1.955(There are tw) +6.955 F 4.455(ok)-.1 G 1.955(inds of eight-bit data: that)-4.455 F 3.334 +(declared as such using the)174 621.6 R F0(BOD)5.834 E(Y=8BITMIME)-.4 E +F1 3.335(ESMTP declaration or the)5.835 F F0(\255B8BITMIME)174 633.6 Q +F1 .948 +(command line \215ag, and undeclared 8-bit data, that is, input that) +3.449 F 1.18(just happens to be eight bits.)174 645.6 R 1.18 +(There are three basic operations that can happen:)6.18 F .996 +(undeclared 8-bit data can be automatically con)174 657.6 R -.15(ve)-.4 +G .995(rted to 8BITMIME, undeclared).15 F .887 +(8-bit data can be passed as-is without con)174 669.6 R -.15(ve)-.4 G +.887(rsion to MIME \(`).15 F .887(`just send 8')-.74 F .887('\), and) +-.74 F 1.794(declared 8-bit data can be con)174 681.6 R -.15(ve)-.4 G +1.794(rted to 7-bits for transmission to a non-8BIT).15 F(-)-.92 E +(MIME mailer)174 693.6 Q 5(.T)-.55 G(he possible)-5 E F2(action)2.5 E F1 +2.5(sa)C(re:)-2.5 E 0 Cg EP +%%Page: 70 66 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 193.36(SMM:08-70 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 11.11(sR) +219 96 S(eject undeclared 8-bit data \(`)-11.11 E(`strict')-.74 E('\)) +-.74 E 7.22(mC)219 108 S(on)-7.22 E -.15(ve)-.4 G +(rt undeclared 8-bit data to MIME \(`).15 E(`mime')-.74 E('\))-.74 E 10 +(pP)219 120 S(ass undeclared 8-bit data \(`)-10.15 E(`pass')-.74 E('\)) +-.74 E 2.227(In all cases properly declared 8BITMIME data will be con) +174 136.2 R -.15(ve)-.4 G 2.228(rted to 7BIT as).15 F 2.92 +(needed. Note:)174 148.2 R .42(if an automatic con)2.92 F -.15(ve)-.4 G +.42(rsion is performed, a header with the follo).15 F(w-)-.25 E +(ing format will be added:)174 160.2 Q(X-MIME-Autocon)214 176.4 Q -.15 +(ve)-.4 G(rted: from OLD to NEW by $j id $i).15 E 2.027 +(where OLD and NEW describe the original format and the con)174 192.6 R +-.15(ve)-.4 G 2.028(rted format,).15 F(respecti)174 204.6 Q -.15(ve)-.25 +G(ly).15 E(.)-.65 E(ErrorHeader=)102 220.8 Q/F2 10/Times-Italic@0 SF +(\214le-or)A(-messa)-.2 E -.1(ge)-.1 G F1 .486 +([E] Prepend error messages with the indicated message.)174 232.8 R .486 +(If it be)5.486 F .486(gins with a slash,)-.15 F .246(it is assumed to \ +be the pathname of a \214le containing a message \(this is the recom-) +174 244.8 R .86(mended setting\).)174 256.8 R .86 +(Otherwise, it is a literal message.)5.86 F .86 +(The error \214le might contain)5.86 F 1.116(the name, email address, a\ +nd/or phone number of a local postmaster who could)174 268.8 R(pro)174 +280.8 Q .827(vide assistance to end users.)-.15 F .827 +(If the option is missing or null, or if it names a)5.827 F +(\214le which does not e)174 292.8 Q +(xist or which is not readable, no message is printed.)-.15 E +(ErrorMode=)102 309 Q F2(x)A F1([e] Dispose of errors using mode)17.49 E +F2(x)2.5 E F1 5(.T)C(he v)-5 E(alues for)-.25 E F2(x)2.5 E F1(are:)2.5 E +15(pP)214 325.2 S(rint error messages \(def)-15 E(ault\))-.1 E 15(qN)214 +337.2 S 2.5(om)-15 G(essages, just gi)-2.5 E .3 -.15(ve ex)-.25 H +(it status).15 E 12.22(mM)214 349.2 S(ail back errors)-12.22 E 12.78(wW) +214 361.2 S(rite back errors \(mail if user not logged in\))-12.78 E +15.56(eM)214 373.2 S(ail back errors \(when applicable\) and gi)-15.56 E +.3 -.15(ve z)-.25 H(ero e).15 E(xit stat al)-.15 E -.1(wa)-.1 G(ys).1 E +1.314(Note that the last mode, \231e\232, is for Berknet error processi\ +ng and should not be)174 389.4 R 1.324(used in normal circumstances.)174 +401.4 R 1.323(Note, too, that mode \231q\232, only applies to errors) +6.324 F(recognized before sendmail forks for background deli)174 413.4 Q +-.15(ve)-.25 G(ry).15 E(.)-.65 E -.15(Fa)102 429.6 S(llbackMXhost=).15 E +F2(fallbac)A(khost)-.2 E F1 .796([V] If speci\214ed, the)174 441.6 R F2 +(fallbac)3.296 E(khost)-.2 E F1 .796(acts lik)3.296 F 3.296(eav)-.1 G +.797(ery lo)-3.446 F 3.297(wp)-.25 G .797(riority MX on e)-3.297 F -.15 +(ve)-.25 G .797(ry host.).15 F 1.538(MX records will be look)174 453.6 R +1.537(ed up for this host, unless the name is surrounded by)-.1 F .016 +(square brack)174 465.6 R 2.517(ets. This)-.1 F .017 +(is intended to be used by sites with poor netw)2.517 F .017 +(ork connecti)-.1 F(v-)-.25 E(ity)174 477.6 Q 6.706(.M)-.65 G 1.706 +(essages which are undeli)-6.706 F -.15(ve)-.25 G 1.706 +(rable due to temporary address f).15 F 1.706(ailures \(e.g.,)-.1 F +(DNS f)174 489.6 Q(ailure\) also go to the F)-.1 E(allbackMXhost.)-.15 E +-.15(Fa)102 505.8 S(llBackSmartHost=).15 E F2(hostname)A F1 1.655 +(If speci\214ed, the)174 517.8 R F2 -.75(Fa)4.156 G(llBac).75 E +(kSmartHost)-.2 E F1 1.656(will be used in a last-ditch ef)4.156 F 1.656 +(fort for each)-.25 F 3.212(host. This)174 529.8 R .712 +(is intended to be used by sites with "f)3.212 F(ak)-.1 E 3.212(ei)-.1 G +.712(nternal DNS", e.g., a com-)-3.212 F(pan)174 541.8 Q 3.19(yw)-.15 G +.69(hose DNS accurately re\215ects the w)-3.19 F .69 +(orld inside that compan)-.1 F(y')-.15 E 3.19(sd)-.55 G .69(omain b) +-3.19 F(ut)-.2 E(not outside.)174 553.8 Q -.15(Fa)102 570 S 34.08 +(stSplit [no).15 F 1.572(short name] If set to a v)4.072 F 1.572 +(alue greater than zero \(the def)-.25 F 1.572(ault is one\), it sup-) +-.1 F .977(presses the MX lookups on addresses when the)174 582 R 3.477 +(ya)-.15 G .977(re initially sorted, i.e., for the)-3.477 F 1.031 +(\214rst deli)174 594 R -.15(ve)-.25 G 1.031(ry attempt.).15 F 1.031 +(This usually results in f)6.031 F 1.031(aster en)-.1 F -.15(ve)-.4 G +1.031(lope splitting unless the).15 F .423(MX records are readily a)174 +606 R -.25(va)-.2 G .423(ilable in a local DNS cache.).25 F 2.023 -.8 +(To e)5.423 H .423(nforce initial sorting).8 F .338 +(based on MX records set)174 618 R F0 -.25(Fa)2.838 G(stSplit).25 E F1 +.338(to zero.)2.838 F .338(If the mail is submitted directly from)5.338 +F 1.078(the command line, then the v)174 630 R 1.079 +(alue also limits the number of processes to deli)-.25 F -.15(ve)-.25 G +(r).15 E .294(the en)174 642 R -.15(ve)-.4 G .294(lopes; if more en).15 +F -.15(ve)-.4 G .294(lopes are created the).15 F 2.794(ya)-.15 G .293 +(re only queued up and must be)-2.794 F(tak)174 654 Q .691 +(en care of by a queue run.)-.1 F .691(Since the def)5.691 F .692 +(ault submission method is via SMTP)-.1 F 1.284(\(either from a MU)174 +666 R 3.784(Ao)-.4 G 3.784(rv)-3.784 G 1.284(ia the MSP\), the v)-3.784 +F 1.284(alue of)-.25 F F0 -.25(Fa)3.784 G(stSplit).25 E F1 1.284 +(is seldom used to)3.784 F(limit the number of processes to deli)174 678 +Q -.15(ve)-.25 G 2.5(rt).15 G(he en)-2.5 E -.15(ve)-.4 G(lopes.).15 E +-.15(Fo)102 694.2 S 16.88(rkEachJob [Y]).15 F(If set, deli)2.5 E -.15 +(ve)-.25 G 2.5(re).15 G +(ach job that is run from the queue in a separate process.)-2.5 E -.15 +(Fo)102 710.4 S(rw).15 E(ardP)-.1 E(ath=)-.15 E F2(path)A F1 4.675 +([J] Set the path for searching for users' .forw)174 722.4 R 4.675 +(ard \214les.)-.1 F 4.675(The def)9.675 F 4.675(ault is)-.1 F 0 Cg EP +%%Page: 71 67 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-71)195.86 E/F1 10/Times-Roman@0 SF(\231$z/.forw)174 96 Q 3.231 +(ard\232. Some)-.1 F .731 +(sites that use the automounter may prefer to change this to)3.231 F +(\231/v)174 108 Q(ar/forw)-.25 E 1.696(ard/$u\232 to search a \214le wi\ +th the same name as the user in a system)-.1 F(directory)174 120 Q 5.488 +(.I)-.65 G 2.988(tc)-5.488 G .488 +(an also be set to a sequence of paths separated by colons;)-2.988 F/F2 +10/Times-Italic@0 SF(sendmail)2.987 E F1 .831 +(stops at the \214rst \214le it can successfully and safely open.)174 +132 R -.15(Fo)5.831 G 3.331(re).15 G .831(xample, \231/v)-3.481 F +(ar/for)-.25 E(-)-.2 E -.1(wa)174 144 S(rd/$u:$z/.forw).1 E .277 +(ard\232 will search \214rst in /v)-.1 F(ar/forw)-.25 E(ard/)-.1 E F2 +(username)A F1 .276(and then in)2.777 F F2(~user)2.776 E(-)-.2 E(name) +174 156 Q F1(/.forw)A(ard \(b)-.1 E +(ut only if the \214rst \214le does not e)-.2 E(xist\).)-.15 E +(HeloName=)102 172.2 Q F2(name)A F1([no short name] Set the name to be \ +used for HELO/EHLO \(instead of $j\).)1.38 E(HelpFile=)102 188.4 Q F2 +(\214le)A F1 .18([H] Specify the help \214le for SMTP)19.14 F 5.18(.I) +-1.11 G 2.68(fn)-5.18 G 2.68<6f8c>-2.68 G .18 +(le name is speci\214ed, "help\214le" is used.)-2.68 F(HoldExpensi)102 +204.6 Q 8.54 -.15(ve [)-.25 H 1.394(c] If an outgoing mailer is mark).15 +F 1.393(ed as being e)-.1 F(xpensi)-.15 E -.15(ve)-.25 G 3.893(,d).15 G +(on')-3.893 E 3.893(tc)-.18 G 1.393(onnect immedi-)-3.893 F(ately)174 +216.6 Q(.)-.65 E(HostsFile=)102 232.8 Q F2(path)A F1 .026([no short nam\ +e] The path to the hosts database, normally \231/etc/hosts\232.)10.24 F +.026(This option)5.026 F 1.417(is only consulted when sendmail is canon\ +ifying addresses, and then only when)174 244.8 R .783 +(\231\214les\232 is in the \231hosts\232 service switch entry)174 256.8 +R 5.784(.I)-.65 G 3.284(np)-5.784 G(articular)-3.284 E 3.284(,t)-.4 G +.784(his \214le is)-3.284 F F2(ne)3.284 E(ver)-.15 E F1(used)3.284 E +.202(when looking up host addresses; that is under the control of the s\ +ystem)174 268.8 R F2 -.1(ge)2.702 G(thostby-).1 E(name)174 280.8 Q F1 +(\(3\) routine.)A(HostStatusDirectory=)102 297 Q F2(path)A F1 .43 +([no short name] The location of the long term host status information.) +174 309 R .43(When set,)5.43 F 1.39 +(information about the status of hosts \(e.g., host do)174 321 R 1.39 +(wn or not accepting connec-)-.25 F .162 +(tions\) will be shared between all)174 333 R F2(sendmail)2.663 E F1 +.163(processes; normally)2.663 F 2.663(,t)-.65 G .163 +(his information is)-2.663 F .123(only held within a single queue run.) +174 345 R .123(This option requires a connection cache of at)5.123 F +.688(least 1 to function.)174 357 R .688(If the option be)5.688 F .688 +(gins with a leading `/', it is an absolute path-)-.15 F .617 +(name; otherwise, it is relati)174 369 R .917 -.15(ve t)-.25 H 3.117(ot) +.15 G .617(he mail queue directory)-3.117 F 5.617(.A)-.65 G .617 +(suggested v)-2.5 F .616(alue for)-.25 F .558(sites desiring persistent\ + host status is \231.hoststat\232 \(i.e., a subdirectory of the queue) +174 381 R(directory\).)174 393 Q 24.51(IgnoreDots [i])102 409.2 R 1.172 +(Ignore dots in incoming messages.)3.672 F 1.172(This is al)6.172 F -.1 +(wa)-.1 G 1.171(ys disabled \(that is, dots are).1 F(al)174 421.2 Q -.1 +(wa)-.1 G(ys accepted\) when reading SMTP mail.).1 E(InputMailFilters=) +102 437.4 Q F2(name)A(,name)-.1 E(,...)-.1 E F1 3.621(Ac)174 449.4 S +1.122(omma separated list of \214lters which determines which \214lters\ + \(see the "X \212)-3.621 F 1.768 +(Mail Filter \(Milter\) De\214nitions" section\) and the in)174 461.4 R +-.2(vo)-.4 G 1.768(cation sequence are con-).2 F .367 +(tacted for incoming SMTP messages.)174 473.4 R .367 +(If none are set, no \214lters will be contacted.)5.367 F(LD)102 489.6 Q +(APDef)-.4 E(aultSpec=)-.1 E F2(spec)A F1 2.058 +([no short name] Sets a def)174 501.6 R 2.057 +(ault map speci\214cation for LD)-.1 F 2.057(AP maps.)-.4 F 2.057(The v) +7.057 F(alue)-.25 E .673(should only contain LD)174 513.6 R .674 +(AP speci\214c settings such as \231-h host -p port -d bindDN\232.)-.4 F +.501(The settings will be used for all LD)174 525.6 R .501 +(AP maps unless the indi)-.4 F .5(vidual map speci\214ca-)-.25 F 1.5 +(tion o)174 537.6 R -.15(ve)-.15 G 1.5(rrides a setting.).15 F 1.5 +(This option should be set before an)6.5 F 4(yL)-.15 G -.4(DA)-4 G 4(Pm) +.4 G 1.5(aps are)-4 F(de\214ned.)174 549.6 Q(LogLe)102 565.8 Q -.15(ve) +-.25 G(l=).15 E F2(n)A F1([L] Set the log le)22.88 E -.15(ve)-.25 G 2.5 +(lt).15 G(o)-2.5 E F2(n)2.5 E F1 5(.D)C(ef)-5 E(aults to 9.)-.1 E(M)102 +582 Q F2 1.666(xv)C(alue)-1.666 E F1 .255([no long v)35.344 F .255 +(ersion] Set the macro)-.15 F F2(x)2.755 E F1(to)2.755 E F2(value)2.755 +E F1 5.255(.T)C .255(his is intended only for use from the)-5.255 F +(command line.)174 594 Q(The)5 E F02.5 E F1(\215ag is preferred.) +2.5 E -1.04(MailboxDatabase [no)102 610.2 R 2.967(short name] T)5.467 F +2.967(ype of lookup to \214nd information about local mailbox)-.8 F(es,) +-.15 E(def)174 622.2 Q .145(aults to `)-.1 F(`pw')-.74 E 2.645('w)-.74 G +.145(hich uses)-2.645 F F2 -.1(ge)2.645 G(tpwnam).1 E F1 5.145(.O)C .145 +(ther types can be introduced by adding)-5.145 F +(them to the source code, see libsm/mbdb)174 634.2 Q(.c for details.)-.4 +E 33.94(UseMSP [no)102 650.4 R .163 +(short name] Use as mail submission program, i.e., allo)2.663 F 2.664 +(wg)-.25 G .164(roup writable queue)-2.664 F .954(\214les if the group \ +is the same as that of a set-group-ID sendmail binary)174 662.4 R 5.954 +(.S)-.65 G .954(ee the)-5.954 F(\214le)174 674.4 Q F0(sendmail/SECURITY) +2.5 E F1(in the distrib)2.5 E(ution tarball.)-.2 E 11.17(MatchGECOS [G]) +102 690.6 R(Allo)3.333 E 3.333(wf)-.25 G .833 +(uzzy matching on the GECOS \214eld.)-3.333 F .834 +(If this \215ag is set, and the usual)5.833 F .868(user name lookups f) +174 702.6 R .867(ail \(that is, there is no alias with this name and a) +-.1 F F2 -.1(ge)3.367 G(tpwnam).1 E F1 -.1(fa)174 714.6 S 1.155 +(ils\), sequentially search the passw).1 F 1.155 +(ord \214le for a matching entry in the GECOS)-.1 F 0 Cg EP +%%Page: 72 68 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 193.36(SMM:08-72 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 3.696 +(\214eld. This)174 96 R 1.196(also requires that MA)3.696 F 1.196 +(TCHGECOS be turned on during compilation.)-1.11 F +(This option is not recommended.)174 108 Q(MaxAliasRecursion=)102 124.2 +Q/F2 10/Times-Italic@0 SF(N)A F1 +([no short name] The maximum depth of alias recursion \(def)174 136.2 Q +(ault: 10\).)-.1 E(MaxDaemonChildren=)102 152.4 Q F2(N)A F1 .539 +([no short name] If set,)174 164.4 R F2(sendmail)3.039 E F1 .539 +(will refuse connections when it has more than)3.039 F F2(N)3.04 E F1 +.886(children processing incoming mail or automatic queue runs.)174 +176.4 R .885(This does not limit)5.885 F .812 +(the number of outgoing connections.)174 188.4 R .812(If the def)5.812 F +(ault)-.1 E F0(Deli)3.313 E -.1(ve)-.1 G(ryMode).1 E F1(\(background\)) +3.313 E 3.135(is used, then)174 200.4 R F2(sendmail)5.635 E F1 3.134 +(may create an almost unlimited number of children)5.635 F .294 +(\(depending on the number of transactions and the relati)174 212.4 R +.594 -.15(ve exe)-.25 H .295(cution times of mail).15 F 1.236 +(receiption and mail deli)174 224.4 R -.15(ve)-.25 G 3.736(ry\). If).15 +F 1.236(the limit should be enforced, then a)3.736 F F0(Deli)3.735 E -.1 +(ve)-.1 G(ry-).1 E(Mode)174 236.4 Q F1 1.483 +(other than background must be used.)3.983 F 1.484 +(If not set, there is no limit to the)6.483 F +(number of children -- that is, the system load a)174 248.4 Q -.15(ve) +-.2 G(rage controls this.).15 E(MaxHeadersLength=)102 264.6 Q F2(N)A F1 +.188([no short name] If set to a v)174 276.6 R .187 +(alue greater than zero it speci\214es the maximum length)-.25 F .637 +(of the sum of all headers.)174 288.6 R .638(This can be used to pre) +5.637 F -.15(ve)-.25 G .638(nt a denial of service attack.).15 F +(The def)174 300.6 Q(ault is 32K.)-.1 E(MaxHopCount=)102 316.8 Q F2(N)A +F1 1.238([h] The maximum hop count.)174 328.8 R 1.238(Messages that ha) +6.238 F 1.537 -.15(ve b)-.2 H 1.237(een processed more than).15 F F2(N) +3.737 E F1(times are assumed to be in a loop and are rejected.)174 340.8 +Q(Def)5 E(aults to 25.)-.1 E(MaxMessageSize=)102 357 Q F2(N)A F1 2.562 +([no short name] Specify the maximum message size to be adv)174 369 R +2.563(ertised in the)-.15 F 1.023(ESMTP EHLO response.)174 381 R 1.023 +(Messages lar)6.023 F 1.022(ger than this will be rejected.)-.18 F 1.022 +(If set to a)6.022 F -.25(va)174 393 S .834 +(lue greater than zero, that v).25 F .834 +(alue will be listed in the SIZE response, otherwise)-.25 F(SIZE is adv) +174 405 Q(ertised in the ESMTP EHLO response without a parameter)-.15 E +(.)-.55 E(MaxMimeHeaderLength=)102 421.2 Q F2(N[/M])A F1 .343([no short\ + name] Sets the maximum length of certain MIME header \214eld v)174 +433.2 R .343(alues to)-.25 F F2(N)174 445.2 Q F1 3.618 +(characters. These)3.618 F 1.118 +(MIME header \214elds are determined by being a member of)3.618 F .895 +(class {checkMIMET)174 457.2 R -.15(ex)-.7 G .895 +(tHeaders}, which currently contains only the header Con-).15 F 2.559 +(tent-Description. F)174 469.2 R .059 +(or some of these headers which tak)-.15 F 2.559(ep)-.1 G .059 +(arameters, the maximum)-2.559 F .102 +(length of each parameter is set to)174 481.2 R F2(M)2.602 E F1 .102 +(if speci\214ed.)2.602 F(If)5.102 E F2(/M)2.602 E F1 .101 +(is not speci\214ed, one half of)2.602 F F2(N)174 493.2 Q F1 1.775 +(will be used.)4.275 F 1.775(By def)6.775 F 1.775(ault, these v)-.1 F +1.776(alues are 2048 and 1024, respecti)-.25 F -.15(ve)-.25 G(ly).15 E +6.776(.T)-.65 G(o)-7.576 E(allo)174 505.2 Q 2.5(wa)-.25 G .3 -.15(ny l) +-2.5 H(ength, a v).15 E(alue of 0 can be speci\214ed.)-.25 E +(MaxNOOPCommands=)102 521.4 Q F2(N)A F1(Ov)174 533.4 Q 2.104 +(erride the def)-.15 F 2.104(ault of)-.1 F F0(MAXNOOPCOMMANDS)4.603 E F1 +2.103(for the number of)4.603 F F2(useless)4.603 E F1 +(commands, see Section "Measures ag)174 545.4 Q +(ainst Denial of Service Attacks".)-.05 E(MaxQueueChildren=)102 561.6 Q +F2(N)A F1 .304([no short name] When set, this limits the number of conc\ +urrent queue runner pro-)174 573.6 R .202(cesses to)174 585.6 R F2(N.) +2.702 E F1 .201 +(This helps to control the amount of system resources used when pro-) +5.202 F 1.255(cessing the queue.)174 597.6 R 1.255 +(When there are multiple queue groups de\214ned and the total)6.255 F +1.2(number of queue runners for these queue groups w)174 609.6 R 1.2 +(ould e)-.1 F(xceed)-.15 E F2(MaxQueueChil-)3.7 E(dr)174 621.6 Q(en)-.37 +E F1 .472(then the queue groups will not all run concurrently)2.972 F +2.972(.T)-.65 G .472(hat is, some portion of)-2.972 F .871 +(the queue groups will run concurrently such that)174 633.6 R F2 +(MaxQueueChildr)3.371 E(en)-.37 E F1 .871(will not be)3.371 F -.15(ex) +174 645.6 S 1.892(ceeded, while the remaining queue groups will be run \ +later \(in round robin).15 F 1.3(order\). See also)174 657.6 R F2 +(MaxRunner)3.8 E(sP)-.1 E(erQueue)-.8 E F1 1.3(and the section)3.8 F F0 +1.3(Queue Gr)3.8 F 1.3(oup Declara-)-.18 F(tion)174 669.6 Q F1 5.756(.N) +C(otice:)-5.756 E F2(sendmail)3.256 E F1 .757(does not count indi)3.256 +F .757(vidual queue runners, b)-.25 F .757(ut only sets of)-.2 F 1.451 +(processes that act on a w)174 681.6 R 3.951(orkgroup. Hence)-.1 F 1.451 +(the actual number of queue runners)3.951 F 1.414(may be lo)174 693.6 R +1.414(wer than the limit imposed by)-.25 F F2(MaxQueueChildr)3.914 E(en) +-.37 E F1 6.414(.T)C 1.414(his discrepanc)-6.414 F(y)-.15 E 1.424 +(can be lar)174 705.6 R 1.424(ge if some queue runners ha)-.18 F 1.724 +-.15(ve t)-.2 H 3.924(ow).15 G 1.424(ait for a slo)-4.024 F 3.923(ws) +-.25 G(erv)-3.923 E 1.423(er and if short)-.15 F(interv)174 717.6 Q +(als are used.)-.25 E 0 Cg EP +%%Page: 73 69 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-73)195.86 E/F1 10/Times-Roman@0 SF(MaxQueueRunSize=)102 96 Q/F2 +10/Times-Italic@0 SF(N)A F1 .677([no short name] The maximum number of \ +jobs that will be processed in a single)174 108 R .502(queue run.)174 +120 R .501(If not set, there is no limit on the size.)5.502 F .501 +(If you ha)5.501 F .801 -.15(ve ve)-.2 H .501(ry lar).15 F .501 +(ge queues)-.18 F .445(or a v)174 132 R .445(ery short queue run interv) +-.15 F .445(al this could be unstable.)-.25 F(Ho)5.445 E(we)-.25 E -.15 +(ve)-.25 G 1.245 -.4(r, s).15 H .445(ince the \214rst).4 F F2(N)174 144 +Q F1 1.115(jobs in queue directory order are run \(rather than the)3.615 +F F2(N)3.615 E F1 1.115(highest priority jobs\))3.615 F .136 +(this should be set as high as possible to a)174 156 R -.2(vo)-.2 G .136 +(id \231losing\232 jobs that happen to f).2 F .137(all late)-.1 F 2.326 +(in the queue directory)174 168 R 7.326(.N)-.65 G 2.326 +(ote: this option also restricts the number of entries)-7.326 F 1.442 +(printed by)174 180 R F2(mailq)3.942 E F1 6.443(.T)C 1.443(hat is, if) +-6.443 F F2(MaxQueueRunSize)3.943 E F1 1.443(is set to a v)3.943 F(alue) +-.25 E F0(N)3.943 E F1(lar)3.943 E 1.443(ger than)-.18 F +(zero, then only)174 192 Q F0(N)2.5 E F1 +(entries are printed per queue group.)2.5 E(MaxRecipientsPerMessage=)102 +208.2 Q F2(N)A F1 1.672([no short name] The maximum number of recipient\ +s that will be accepted per)174 220.2 R 1.458 +(message in an SMTP transaction.)174 232.2 R 1.458 +(Note: setting this too lo)6.458 F 3.959(wc)-.25 G 1.459 +(an interfere with)-3.959 F .049(sending mail from MU)174 244.2 R .049 +(As that use SMTP for initial submission.)-.4 F .048 +(If not set, there is)5.048 F +(no limit on the number of recipients per en)174 256.2 Q -.15(ve)-.4 G +(lope.).15 E(MaxRunnersPerQueue=)102 272.4 Q F2(N)A F1 2.003 +([no short name] This sets the def)174 284.4 R 2.004 +(ault maximum number of queue runners for)-.1 F 1.162(queue groups.)174 +296.4 R 1.162(Up to)6.162 F F2(N)3.662 E F1 1.161(queue runners will w) +3.662 F 1.161(ork in parallel on a queue group')-.1 F(s)-.55 E 3.465 +(messages. This)174 308.4 R .965 +(is useful where the processing of a message in the queue might)3.465 F +.945(delay the processing of subsequent messages. Such a delay may be t\ +he result of)174 320.4 R .116(non-erroneous situations such as a lo)174 +332.4 R 2.616(wb)-.25 G .116(andwidth connection.)-2.616 F .116 +(May be o)5.116 F -.15(ve)-.15 G(rridden).15 E .645 +(on a per queue group basis by setting the)174 344.4 R F2(Runner)3.144 E +(s)-.1 E F1 .644(option; see the section)3.144 F F0(Queue)3.144 E(Gr)174 +356.4 Q(oup Declaration)-.18 E F1 5(.T)C(he def)-5 E +(ault is 1 when not set.)-.1 E(MeT)102 372.6 Q 40.86(oo [m])-.8 F .367 +(Send to me too, e)2.866 F -.15(ve)-.25 G 2.867(ni).15 G 2.867(fIa) +-2.867 G 2.867(mi)-2.867 G 2.867(na)-2.867 G 2.867(na)-2.867 G .367 +(lias e)-2.867 F 2.867(xpansion. This)-.15 F .367(option is deprecated) +2.867 F(and will be remo)174 384.6 Q -.15(ve)-.15 G 2.5(df).15 G +(rom a future v)-2.5 E(ersion.)-.15 E 44.5(Milter [no)102 400.8 R .778 +(short name] This option has se)3.278 F -.15(ve)-.25 G .777 +(ral sub\(sub\)options.).15 F .777(The names of the sub-)5.777 F 1.134 +(options are separated by dots.)174 412.8 R 1.135(At the \214rst le) +6.134 F -.15(ve)-.25 G 3.635(lt).15 G 1.135(he follo)-3.635 F 1.135 +(wing options are a)-.25 F -.25(va)-.2 G(il-).25 E(able:)174 424.8 Q +(LogLe)214 441 Q -.15(ve)-.25 G 15(lL).15 G(og le)-15 E -.15(ve)-.25 G +2.5(lf).15 G(or input mail \214lter actions, def)-2.5 E(aults to LogLe) +-.1 E -.15(ve)-.25 G(l.).15 E 22.1(macros Speci\214es)214 453 R +(list of macro to transmit to \214lters.)2.5 E(See list belo)267.48 465 +Q -.65(w.)-.25 G 2.459(The `)174 481.2 R(`macros')-.74 E 4.959('o)-.74 G +2.458(ption has the follo)-4.959 F 2.458 +(wing suboptions which specify the list of)-.25 F +(macro to transmit to milters after a certain e)174 493.2 Q -.15(ve)-.25 +G(nt occurred.).15 E 14.88(connect After)214 509.4 R +(session connection start)2.5 E 28.76(helo After)214 521.4 R +(EHLO/HELO command)2.5 E(en)214 533.4 Q 12.5(vfrom After)-.4 F +(MAIL From command)2.5 E(en)214 545.4 Q 16.39(vrcpt After)-.4 F(RCPT T) +2.5 E 2.5(oc)-.8 G(ommand)-2.5 E 29.32(data After)214 557.4 R -.4(DA)2.5 +G 1.86 -.93(TA c)-.71 H(ommand.).93 E 31.54(eoh After)214 569.4 R -.4 +(DA)2.5 G 1.86 -.93(TA c)-.71 H(ommand and header).93 E 28.76(eom After) +214 581.4 R -.4(DA)2.5 G 1.86 -.93(TA c)-.71 H(ommand and terminating `) +.93 E(`.)-.74 E -.74('')-.7 G(By def)174 597.6 Q +(ault the lists of macros are empty)-.1 E 5(.E)-.65 G(xample:)-5 E 2.5 +(OM)214 613.8 S(ilter)-2.5 E(.LogLe)-.55 E -.15(ve)-.25 G(l=12).15 E 2.5 +(OM)214 625.8 S(ilter)-2.5 E(.macros.connect=j, _, {daemon_name})-.55 E +(MinFreeBlocks=)102 646.2 Q F2(N)A F1 1.538([b] Insist on at least)174 +658.2 R F2(N)4.038 E F1 1.539 +(blocks free on the \214lesystem that holds the queue \214les)4.039 F +.846(before accepting email via SMTP)174 670.2 R 5.846(.I)-1.11 G 3.346 +(ft)-5.846 G .846(here is insuf)-3.346 F .846(\214cient space)-.25 F F2 +(sendmail)3.346 E F1(gi)3.345 E -.15(ve)-.25 G 3.345(sa).15 G +(452 response to the MAIL command.)174 682.2 Q(This in)5 E +(vites the sender to try ag)-.4 E(ain later)-.05 E(.)-.55 E +(MaxQueueAge=)102 698.4 Q F2 -.1(age)C F1 .345 +([no short name] If this is set to a v)174 710.4 R .346 +(alue greater than zero, entries in the queue will)-.25 F 1.094 +(be retried during a queue run only if the indi)174 722.4 R 1.094 +(vidual retry time has been reached)-.25 F 0 Cg EP +%%Page: 74 70 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 193.36(SMM:08-74 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 1.476 +(which is doubled for each attempt.)174 96 R 1.476 +(The maximum retry time is limited by the)6.476 F(speci\214ed v)174 108 +Q(alue.)-.25 E(MinQueueAge=)102 124.2 Q/F2 10/Times-Italic@0 SF -.1(age) +C F1 .887([no short name] Don')174 136.2 R 3.387(tp)-.18 G .887 +(rocess an)-3.387 F 3.387(yq)-.15 G .886(ueued jobs that ha)-3.387 F +1.186 -.15(ve b)-.2 H .886(een in the queue less).15 F 1.899 +(than the indicated time interv)174 148.2 R 4.399(al. This)-.25 F 1.899 +(is intended to allo)4.399 F 4.399(wy)-.25 G 1.9(ou to get respon-) +-4.399 F(si)174 160.2 Q -.15(ve)-.25 G .665 +(ness by processing the queue f).15 F .665 +(airly frequently without thrashing your system)-.1 F 1.91 +(by trying jobs too often.)174 172.2 R 1.91(The def)6.91 F 1.91 +(ault units are minutes.)-.1 F 1.91(Note: This option is)6.91 F 8.212 +(ignored for queue runs that select a subset of the queue, i.e.,)174 +184.2 R(\231\255q[!][I|R|S|Q][string]\232)174 196.2 Q(MustQuoteChars=) +102 212.4 Q F2(s)A F1 1.252([no short name] Sets the list of characters\ + that must be quoted if used in a full)174 224.4 R 1.217 +(name that is in the phrase part of a `)174 236.4 R 1.217 +(`phrase
')-.74 F 3.717('s)-.74 G 3.717(yntax. The)-3.717 F +(def)3.717 E 1.217(ault is)-.1 F -.74(``)174 248.4 S.74 E -.74('') +-.7 G 6.605(.T).74 G 1.605(he characters `)-6.605 F(`@,;:\\\(\)[]')-.74 +E 4.106('a)-.74 G 1.606(re al)-4.106 F -.1(wa)-.1 G 1.606 +(ys added to this list.).1 F 1.606(Note: T)6.606 F 4.106(oa)-.8 G -.2 +(vo)-4.306 G(id).2 E +(potential breakage of DKIM signatures it is useful to set)174 260.4 Q +2.5(OM)214 276.6 S(ustQuoteChars=.)-2.5 E(Moreo)174 292.8 Q -.15(ve)-.15 +G .8 -.4(r, r).15 H(elax).4 E +(ed header signing should be used for DKIM signatures.)-.15 E 7.85 +(NiceQueueRun [no)102 309 R 2.156 +(short name] The priority of queue runners \(nice\(3\)\).)4.656 F 2.156 +(This v)7.156 F 2.155(alue must be)-.25 F(greater or equal zero.)174 321 +Q(NoRecipientAction)102 337.2 Q .554([no short name] The action to tak) +174 349.2 R 3.055(ew)-.1 G .555(hen you recei)-3.055 F .855 -.15(ve a m) +-.25 H .555(essage that has no v).15 F(alid)-.25 E .625 +(recipient headers \(T)174 361.2 R .625(o:, Cc:, Bcc:, or Apparently-T) +-.8 F .625(o: \212 the last included for back)-.8 F .108 +(compatibility with old)174 373.2 R F2(sendmail)2.608 E F1 2.608 +(s\). It)B .108(can be)2.608 F F0(None)2.608 E F1 .109 +(to pass the message on unmod-)2.609 F .297 +(i\214ed, which violates the protocol,)174 385.2 R F0(Add-T)2.796 E(o) +-.92 E F1 .296(to add a T)2.796 F .296(o: header with an)-.8 F 2.796(yr) +-.15 G(ecipients)-2.796 E 1.638(it can \214nd in the en)174 397.2 R -.15 +(ve)-.4 G 1.638(lope \(which might e).15 F 1.638 +(xpose Bcc: recipients\),)-.15 F F0(Add-A)4.139 E(ppar)-.25 E(-)-.37 E +(ently-T)174 409.2 Q(o)-.92 E F1 .338(to add an Apparently-T)2.838 F +.337(o: header \(this is only for back-compatibility and)-.8 F .841 +(is of)174 421.2 R .841(\214cially deprecated\),)-.25 F F0(Add-T)3.341 E +(o-Undisclosed)-.92 E F1 .841(to add a header \231T)3.341 F .842 +(o: undisclosed-)-.8 F .398(recipients:;\232 to mak)174 433.2 R 2.898 +(et)-.1 G .397(he header le)-2.898 F -.05(ga)-.15 G 2.897(lw).05 G .397 +(ithout disclosing an)-2.897 F .397(ything, or)-.15 F F0(Add-Bcc)2.897 E +F1(to)2.897 E(add an empty Bcc: header)174 445.2 Q(.)-.55 E 1.18 +(OldStyleHeaders [o])102 461.4 R 1.713(Assume that the headers may be i\ +n old format, i.e., spaces delimit names.)4.213 F 1.069 +(This actually turns on an adapti)174 473.4 R 1.368 -.15(ve a)-.25 H +1.068(lgorithm: if an).15 F 3.568(yr)-.15 G 1.068 +(ecipient address contains a)-3.568 F 1.681 +(comma, parenthesis, or angle brack)174 485.4 R 1.681 +(et, it will be assumed that commas already)-.1 F -.15(ex)174 497.4 S +2.825(ist. If).15 F .325 +(this \215ag is not on, only commas delimit names.)2.825 F .325 +(Headers are al)5.325 F -.1(wa)-.1 G .325(ys out-).1 F +(put with commas between the names.)174 509.4 Q(Def)5 E(aults to of)-.1 +E(f.)-.25 E(OperatorChars=)102 525.6 Q F2 -.15(ch)C(arlist).15 E F1 +1.438([$o macro] The list of characters that are considered to be \231o\ +perators\232, that is,)174 537.6 R .82(characters that delimit tok)174 +549.6 R 3.32(ens. All)-.1 F .82(operator characters are tok)3.32 F .82 +(ens by themselv)-.1 F(es;)-.15 E .078 +(sequences of non-operator characters are also tok)174 561.6 R 2.578 +(ens. White)-.1 F .078(space characters sep-)2.578 F .27(arate tok)174 +573.6 R .27(ens b)-.1 F .269(ut are not tok)-.2 F .269(ens themselv)-.1 +F .269(es \212 for e)-.15 F .269(xample, \231)-.15 F .269 +(AAA.BBB\232 has three)-.8 F(tok)174 585.6 Q .433(ens, b)-.1 F .433 +(ut \231)-.2 F .433(AAA BBB\232 has tw)-.8 F 2.933(o. If)-.1 F .433 +(not set, OperatorChars def)2.933 F .433(aults to \231.)-.1 F 1.666 +(:@[])1.666 G<9a3b>-1.666 E(additionally)174 597.6 Q 3.566(,t)-.65 G +1.066(he characters \231\()-3.566 F 1.666(\)<>,;)1.666 G 3.566<9a61> +-1.666 G 1.066(re al)-3.566 F -.1(wa)-.1 G 1.065(ys operators.).1 F +1.065(Note that Operator)6.065 F(-)-.2 E +(Chars must be set in the con\214guration \214le before an)174 609.6 Q +2.5(yr)-.15 G(ulesets.)-2.5 E(PidFile=)102 625.8 Q F2(\214lename)A F1 +1.3([no short name] Filename of the pid \214le.)3.58 F(\(def)6.3 E 1.3 +(ault is _P)-.1 F -1.11(AT)-.92 G(H_SENDMAILPID\).)1.11 E(The)174 637.8 +Q F2(\214lename)2.832 E F1 .332(is macro-e)2.832 F .332 +(xpanded before it is opened, and unlink)-.15 F .331(ed when)-.1 F F2 +(sendmail)2.831 E F1 -.15(ex)174 649.8 S(its.).15 E(PostmasterCop)102 +666 Q(y=)-.1 E F2(postmaster)A F1 .003 +([P] If set, copies of error messages will be sent to the named)174 678 +R F2(postmaster)2.504 E F1 5.004(.O)C .004(nly the)-5.004 F .687 +(header of the f)174 690 R .687(ailed message is sent.)-.1 F .687 +(Errors resulting from messages with a ne)5.687 F(g-)-.15 E(ati)174 702 +Q 1.83 -.15(ve p)-.25 H 1.53(recedence will not be sent.).15 F 1.531 +(Since most errors are user problems, this is)6.531 F .453 +(probably not a good idea on lar)174 714 R .453(ge sites, and ar)-.18 F +.453(guably contains all sorts of pri)-.18 F -.25(va)-.25 G -.15(cy).25 +G 0 Cg EP %%Page: 75 71 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3735>195.86 E -/F1 10/Times-Roman@0 SF<517565756546>102 96 Q<6163746f723d>-.15 E/F2 10 -/Times-Italic@0 SF<666163746f72>A F1 .613<5b715d20557365>174 108 R F2 -<666163746f72>3.113 E F1 .613<617320746865206d756c7469706c69657220696e20 -746865206d61702066756e6374696f6e20746f20646563696465207768656e20746f206a -757374207175657565>3.113 F .415 -<7570206a6f627320726174686572207468616e2072756e207468656d2e>174 120 R -.415<546869732076>5.415 F .415<616c7565206973206469>-.25 F .415 -<76696465642062792074686520646966>-.25 F .415 -<666572656e6365206265747765656e20746865>-.25 F 1.003 -<63757272656e74206c6f61642061>174 132 R -.15<7665>-.2 G 1.003 -<7261676520616e6420746865206c6f61642061>.15 F -.15<7665>-.2 G 1.004 -<72616765206c696d69742028>.15 F F0<51756575654c41>A F1 1.004 -<6f7074696f6e2920746f2064657465726d696e65>3.504 F<746865206d6178696d756d -206d657373616765207072696f7269747920746861742077696c6c2062652073656e742e> -174 144 Q<446566>5 E<61756c747320746f203630303030302e>-.1 E -<51756575654c413d>102 160.2 Q F2<4c41>A F1 1.087 -<5b785d205768656e207468652073797374656d206c6f61642061>15.26 F -.15<7665> --.2 G 1.087<726167652065>.15 F<786365656473>-.15 E F2<4c41>3.587 E F1 -1.086<616e6420746865>3.587 F F0<517565756546>3.586 E<6163746f72>-.25 E -F1<28>3.586 E F0<71>A F1 3.586<296f>C<7074696f6e>-3.586 E<6469>174 172.2 -Q 1.465<76696465642062792074686520646966>-.25 F 1.465 -<666572656e636520696e207468652063757272656e74206c6f61642061>-.25 F -.15 -<7665>-.2 G 1.465<7261676520616e6420746865>.15 F F0<51756575654c41>3.965 -E F1<6f7074696f6e>3.965 E .769<706c7573206f6e65206973206c65737320746861 -6e20746865207072696f72697479206f6620746865206d6573736167652c206a75737420 -7175657565206d657373616765732028692e652e2c20646f6e27>174 184.2 R<74>-.18 -E .247<74727920746f2073656e64207468656d292e>174 196.2 R<446566>5.247 E -.247<61756c747320746f2038206d756c7469706c69656420627920746865206e756d62 -6572206f662070726f636573736f7273206f6e6c696e65206f6e>-.1 F<746865207379 -7374656d2028696620746861742063616e2062652064657465726d696e6564292e>174 -208.2 Q<517565756546696c654d6f64653d>102 224.4 Q F2<6d6f6465>A F1 .962 -<5b6e6f2073686f7274206e616d655d20446566>174 236.4 R .962<61756c74207065 -726d697373696f6e7320666f72207175657565208c6c657320286f6374616c292e>-.1 F -.961<4966206e6f74207365742c2073656e646d61696c>5.961 F .212 -<75736573203036303020756e6c65737320697473207265616c20616e64206566>174 -248.4 R<6665637469>-.25 E .513 -.15<76652075>-.25 H .213 -<69642061726520646966>.15 F .213 -<666572656e7420696e2077686963682063617365206974207573657320303634342e> --.25 F<5175657565536f72744f726465723d>102 264.6 Q F2<616c676f726974686d> -A F1 .097<5b6e6f2073686f7274206e616d655d205365747320746865>174 276.6 R -F2<616c676f726974686d>2.597 E F1 .096 -<7573656420666f7220736f7274696e67207468652071756575652e>2.597 F .096 -<4f6e6c7920746865208c7273742063686172>5.096 F<2d>-.2 E 1.021 -<6163746572206f66207468652076>174 288.6 R 1.021 -<616c756520697320757365642e>-.25 F<4c65>6.021 E -.05<6761>-.15 G 3.521 -<6c76>.05 G 1.021<616c756573206172652099686f73749a2028746f206f7264657220 -627920746865206e616d65206f6620746865>-3.771 F 1.73<8c72737420686f737420 -6e616d65206f6620746865208c72737420726563697069656e74292c20998c6c656e616d -659a2028746f206f7264657220627920746865206e616d65206f6620746865>174 300.6 -R .283<7175657565208c6c65206e616d65292c209974696d659a2028746f206f726465 -7220627920746865207375626d697373696f6e2f6372656174696f6e2074696d65292c20 -9972616e646f6d9a2028746f>174 312.6 R .906<6f726465722072616e646f6d6c7929 -2c20996d6f64698c636174696f6e9a2028746f206f7264657220627920746865206d6f64 -698c636174696f6e2074696d65206f6620746865207166208c6c65>174 324.6 R 1.349 -<286f6c64657220656e7472696573208c72737429292c20996e6f6e659a2028746f206e -6f74206f72646572292c20616e6420997072696f726974799a2028746f206f7264657220 -6279206d657373616765>174 336.6 R 2.528<7072696f72697479292e20486f7374> -174 348.6 R .028<6f72646572696e67206d616b>2.528 F .028<6573206265747465 -7220757365206f662074686520636f6e6e656374696f6e2063616368652c2062>-.1 F -.027<7574206d61792074656e6420746f>-.2 F .322<70726f63657373206c6f>174 -360.6 R 2.822<7770>-.25 G .322<72696f72697479206d6573736167657320746861 -7420676f20746f20612073696e676c6520686f7374206f>-2.822 F -.15<7665>-.15 G -2.823<7268>.15 G .323<696768207072696f72697479206d65737361676573>-2.823 -F 1.825<7468617420676f20746f207365>174 372.6 R -.15<7665>-.25 G 1.825 -<72616c20686f7374733b2069742070726f6261626c792073686f756c646e27>.15 F -4.325<7462>-.18 G 4.324<6575>-4.325 G 1.824<736564206f6e20736c6f>-4.324 -F 4.324<776e>-.25 G<657477>-4.324 E 1.824<6f726b206c696e6b732e>-.1 F -.614<46696c656e616d6520616e64206d6f64698c636174696f6e2074696d65206f7264 -6572696e67207361>174 384.6 R -.15<7665>-.2 G 3.114<7374>.15 G .614 -<6865206f>-3.114 F -.15<7665>-.15 G .614 -<7268656164206f662072656164696e6720616c6c206f6620746865>.15 F .671<7175 -65756564206974656d73206265666f7265207374617274696e6720746865207175657565 -2072756e2e>174 396.6 R .671 -<4372656174696f6e20287375626d697373696f6e292074696d65206f72646572696e67> -5.671 F 1.854<697320616c6d6f737420616c>174 408.6 R -.1<7761>-.1 G 1.854 -<797320612062616420696465612c2073696e636520697420616c6c6f>.1 F 1.854 -<7773206c6172>-.25 F 1.854<67652c2062>-.18 F 1.854 -<756c6b206d61696c20746f20676f206f7574206265666f7265>-.2 F -<736d616c6c6572>174 420.6 Q 3.714<2c70>-.4 G 1.214 -<6572736f6e616c206d61696c2c2062>-3.714 F 1.214<7574206d6179206861>-.2 F -1.513 -.15<76652061>-.2 H 1.213 -<70706c69636162696c697479206f6e20736f6d6520686f73747320776974682076>.15 -F 1.213<6572792066>-.15 F<617374>-.1 E 2.631 -<636f6e6e656374696f6e732e2052616e646f6d>174 432.6 R .131 -<69732075736566756c206966207365>2.631 F -.15<7665>-.25 G .132<72616c2071 -756575652072756e6e6572732061726520737461727465642062792068616e6420776869 -6368>.15 F .39<74727920746f20647261696e207468652073616d6520717565756520 -73696e6365206f6464732061726520746865>174 444.6 R 2.889<7977>-.15 G .389 -<696c6c2062652077>-2.889 F .389<6f726b696e67206f6e20646966>-.1 F .389 -<666572656e74207061727473>-.25 F -<6f6620746865207175657565206174207468652073616d652074696d652e>174 456.6 -Q<5072696f72697479206f72646572696e672069732074686520646566>5 E -<61756c742e>-.1 E<517565756554>102 472.8 Q<696d656f75743d>-.35 E F2 -<74696d656f7574>A F1 .355<5b545d20412073796e6f6e>174 484.8 R .355 -<796d20666f72209954>-.15 F 2.855 -<696d656f75742e717565756572657475726e9a2e20557365>-.35 F .356 -<7468617420666f726d20696e7374656164206f6620746865209951756575652d>2.855 -F -.35<5469>174 496.8 S<6d656f75749a20666f726d2e>.35 E 32.83 -<52616e6446696c65205b6e6f>102 513 R 1.036<73686f7274206e616d655d204e616d -65206f66208c6c6520636f6e7461696e696e672072616e646f6d2064617461206f722074 -6865206e616d65206f662074686520554e4958>3.537 F<736f636b>174 525 Q 1.63 -<65742069662045474420697320757365642e>-.1 F 4.131<4128>6.631 G 1.631 -<726571756972656429207072658c78202265>-4.131 F 1.631 -<67643a22206f7220228c6c653a222073706563698c65732074686520747970652e>-.15 -F<5354>174 537 Q<4152>-.93 E 1.561<54544c532072657175697265732074686973 -208c6c656e616d652069662074686520636f6d70696c65208d6167204841535552414e44 -4f4d444556206973>-.6 F -<6e6f742073657420287365652073656e646d61696c2f524541444d45292e>174 549 Q -<5265736f6c76>102 565.2 Q<65724f7074696f6e733d>-.15 E F2<6f7074696f6e73> -A F1 .127<5b495d20536574207265736f6c76>174 577.2 R .127 -<6572206f7074696f6e732e>-.15 F -1.11<5661>5.127 G .127 -<6c7565732063616e20626520736574207573696e67>1.11 F F0<2b>2.627 E F2 -<8d61>A<67>-.1 E F1 .127<616e6420636c6561726564207573696e67>2.627 F F0 -2.628 E F2<8d61>A<67>-.1 E F1 2.628<3b74>C<6865>-2.628 E F2<8d61>174 -589.2 Q<67>-.1 E F1 5.014<7363>C 2.514<616e2062652099646562>-5.014 F -2.513<75679a2c209961616f6e6c799a2c2099757365>-.2 F 2.513<76639a2c209970 -72696d6172799a2c209969676e74639a2c2099726563757273659a2c20996465662d> --.25 F 2.688<6e616d65739a2c2099737461796f70656e9a2c20997573655f696e6574 -369a2c206f722099646e737263689a2e>174 601.2 R 2.689 -<54686520737472696e67209948617357>7.689 F<696c64636172644d589a>-.4 E -.283<28776974686f75742061>174 613.2 R F0<2b>2.783 E F1<6f72>2.783 E F0 -2.783 E F1 2.783<2963>C .283 -<616e2062652073706563698c656420746f207475726e206f66>-2.783 F 2.782<666d> --.25 G .282<61746368696e67206167>-2.782 F .282 -<61696e7374204d58207265636f726473207768656e>-.05 F .89 -<646f696e67206e616d652063616e6f6e698c636174696f6e732e>174 625.2 R .89 -<54686520737472696e67209957>5.89 F<6f726b41726f756e6442726f6b>-.8 E .89 -<656e414141419a2028776974686f75742061>-.1 F F0<2b>174 637.2 Q F1<6f72> -3.473 E F03.473 E F1 3.473<2963>C .972 -<616e2062652073706563698c656420746f2077>-3.473 F .972 -<6f726b2061726f756e6420736f6d652062726f6b>-.1 F .972 -<656e206e616d6573657276>-.1 F .972<6572732077686963682072657475726e>-.15 -F<534552>174 649.2 Q<5646>-.8 E 1.001 -<41494c2028612074656d706f726172792066>-.74 F 1.001 -<61696c75726529206f6e20545f4141414120284950763629206c6f6f6b7570732e>-.1 -F 1.001<4e6f746963653a206974206d69676874>6.001 F<6265206e65636573736172 -7920746f206170706c79207468652073616d6520286f722073696d696c617229206f7074 -696f6e7320746f>174 661.2 Q F2<7375626d69742e6366>2.5 E F1<746f6f2e>2.5 E --1.04<52657175697265734469726673796e63205b6e6f>102 677.4 R 2.782<73686f -7274206e616d655d2054686973206f7074696f6e2063616e206265207573656420746f20 -6f>5.283 F -.15<7665>-.15 G 2.782 -<72726964652074686520636f6d70696c652074696d65208d6167>.15 F F0<524551> -174 689.4 Q<55495245535f4449525f4653594e43>-.1 E F1 .871 -<61742072756e74696d652062792073657474696e6720697420746f>3.371 F/F3 9 -/Times-Roman@0 SF -.09<6661>3.372 G<6c7365>.09 E F1 5.872<2e49>C 3.372 -<6674>-5.872 G .872<686520636f6d70696c652074696d65>-3.372 F .018<8d6167 -206973206e6f74207365742c20746865206f7074696f6e2069732069676e6f7265642e> -174 701.4 R .017<546865208d6167207475726e73206f6e20737570706f727420666f -72208c6c652073797374656d732074686174>5.018 F .209 -<7265717569726520746f2063616c6c>174 713.4 R F2<6673796e632829>2.709 E F1 -.209<666f722061206469726563746f727920696620746865206d6574612d6461746120 -696e20697420686173206265656e206368616e6765642e>2.709 F<54686973>5.21 E -.075<73686f756c64206265207475726e6564206f6e206174206c6561737420666f7220 -6f6c6465722076>174 725.4 R .074<657273696f6e73206f662052656973657246533b -20697420697320656e61626c656420627920646566>-.15 F<61756c74>-.1 E 0 Cg EP +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-75)195.86 E/F1 10/Times-Roman@0 SF .1(violations, b)174 96 R +.101(ut it seems to be popular with certain operating systems v)-.2 F +2.601(endors. The)-.15 F 1.919(address is macro e)174 108 R 1.918 +(xpanded at the time of deli)-.15 F -.15(ve)-.25 G(ry).15 E 6.918(.D) +-.65 G(ef)-6.918 E 1.918(aults to no postmaster)-.1 F(copies.)174 120 Q +(Pri)102 136.2 Q -.25(va)-.25 G -.15(cy).25 G(Options=).15 E/F2 10 +/Times-Italic@0 SF(opt,opt,...)1.666 E F1 1.191([p] Set the pri)174 +148.2 R -.25(va)-.25 G -.15(cy).25 G F2(opt)3.841 E F1 3.691(ions. `)B +(`Pri)-.74 E -.25(va)-.25 G -.15(cy).25 G 2.671 -.74('' i).15 H 3.692 +(sr).74 G 1.192(eally a misnomer; man)-3.692 F 3.692(yo)-.15 G 3.692(ft) +-3.692 G 1.192(hese are)-3.692 F .929(just a w)174 160.2 R .928 +(ay of insisting on stricter adherence to the SMTP protocol.)-.1 F(The) +5.928 E F2(opt)3.428 E F1(ions)A(can be selected from:)174 172.2 Q 56.37 +(public Allo)214 188.4 R 2.5(wo)-.25 G(pen access)-2.5 E 27.49 +(needmailhelo Insist)214 200.4 R(on HELO or EHLO command before MAIL)2.5 +E(neede)214 212.4 Q 25.98(xpnhelo Insist)-.15 F +(on HELO or EHLO command before EXPN)2.5 E(noe)214 224.4 Q 52.08 +(xpn Disallo)-.15 F 2.5(wE)-.25 G(XPN entirely)-2.5 E 2.5(,i)-.65 G +(mplies no)-2.5 E -.15(ve)-.15 G(rb).15 E(.)-.4 E 28.61 +(needvrfyhelo Insist)214 236.4 R(on HELO or EHLO command before VRFY)2.5 +E(no)214 248.4 Q 54.86(vrfy Disallo)-.15 F 2.5(wV)-.25 G(RFY entirely) +-2.5 E 55.82(noetrn Disallo)214 260.4 R 2.5(wE)-.25 G(TRN entirely)-2.5 +E(no)214 272.4 Q -.15(ve)-.15 G 53.9(rb Disallo).15 F 2.5(wV)-.25 G +(ERB entirely)-2.5 E 30.82(restrictmailq Restrict)214 284.4 R +(mailq command)2.5 E 35.27(restrictqrun Restrict)214 296.4 R +(\255q command line \215ag)2.5 E(restricte)214 308.4 Q 24.87 +(xpand Restrict)-.15 F2.5 E 2.5(va)-.15 G +(nd \255v command line \215ags)-2.5 E 40.27(noreceipts Don')214 322.4 R +2.5(tr)-.18 G(eturn success DSNs)-2.5 E/F3 7/Times-Roman@0 SF(20)-4 I F1 +27.49(nobodyreturn Don')214 334.4 R 2.5(tr)-.18 G +(eturn the body of a message with DSNs)-2.5 E(goa)214 346.4 Q -.1(wa) +-.15 G 53.02(yD).1 G(isallo)-53.02 E 2.5(we)-.25 G +(ssentially all SMTP status queries)-2.5 E(authw)214 358.4 Q 27.59 +(arnings Put)-.1 F(X-Authentication-W)2.5 E(arning: headers in messages) +-.8 E(and log w)297.87 370.4 Q(arnings)-.1 E 12.5 +(noactualrecipient Don')214 382.4 R 2.5(tp)-.18 G +(ut X-Actual-Recipient lines in DSNs)-2.5 E(which re)297.87 394.4 Q -.15 +(ve)-.25 G(al the actual account that addresses map to.).15 E 2.976 +(The \231goa)174 410.6 R -.1(wa)-.15 G 2.976 +(y\232 pseudo-\215ag sets all \215ags e).1 F 2.977 +(xcept \231noreceipts\232, \231restrictmailq\232,)-.15 F 4.558 +(\231restrictqrun\232, \231restricte)174 422.6 R 4.557 +(xpand\232, \231noetrn\232, and \231nobodyreturn\232.)-.15 F 4.557 +(If mailq is)9.557 F 1.842(restricted, only people in the same group as\ + the queue directory can print the)174 434.6 R 2.545(queue. If)174 446.6 +R .044(queue runs are restricted, only root and the o)2.545 F .044 +(wner of the queue directory)-.25 F 1.299(can run the queue.)174 458.6 R +1.299(The \231restricte)6.299 F 1.299(xpand\232 pseudo-\215ag instructs) +-.15 F F2(sendmail)3.799 E F1 1.299(to drop)3.799 F(pri)174 470.6 Q +(vile)-.25 E 1.608(ges when the)-.15 F F04.108 E(v)-.15 E F1 1.608 +(option is gi)4.108 F -.15(ve)-.25 G 4.108(nb).15 G 4.108(yu)-4.108 G +1.608(sers who are neither root nor the)-4.108 F -.35(Tr)174 482.6 S +1.33(ustedUser so users cannot read pri).35 F -.25(va)-.25 G 1.33 +(te aliases, forw).25 F 1.33(ards, or :include: \214les.)-.1 F(It)6.33 E +.634(will add the \231NonRootSafeAddr\232 to the \231DontBlameSendmail\ +\232 option to pre)174 494.6 R -.15(ve)-.25 G(nt).15 E .436 +(misleading unsafe address w)174 506.6 R 2.936(arnings. It)-.1 F .436 +(also o)2.936 F -.15(ve)-.15 G .436(rrides the).15 F F02.936 E F1 +(\(v)2.936 E .436(erbose\) command)-.15 F 1.293(line option to pre)174 +518.6 R -.15(ve)-.25 G 1.292(nt information leakage.).15 F 1.292 +(Authentication W)6.292 F 1.292(arnings add w)-.8 F(arn-)-.1 E .183 +(ings about v)174 530.6 R .183 +(arious conditions that may indicate attempts to spoof the mail system,) +-.25 F(such as using a non-standard queue directory)174 542.6 Q(.)-.65 E +(ProcessT)102 558.8 Q(itlePre\214x=)-.35 E F2(string)A F1 1.196 +([no short name] Pre\214x the process title sho)174 570.8 R 1.195 +(wn on 'ps' listings with)-.25 F F2(string)3.695 E F1 6.195(.T)C(he) +-6.195 E F2(string)174 582.8 Q F1(will be macro processed.)2.5 E +(QueueDirectory=)102 599 Q F2(dir)A F1 .583 +([Q] The QueueDirectory option serv)174 611 R .584(es tw)-.15 F 3.084 +(op)-.1 G 3.084(urposes. First,)-3.084 F .584(it speci\214es the direc-) +3.084 F .483(tory or set of directories that comprise the def)174 623 R +.482(ault queue group.)-.1 F .482(Second, it speci-)5.482 F .104(\214es\ + the directory D which is the ancestor of all queue directories, and wh\ +ich send-)174 635 R .721(mail uses as its current w)174 647 R .721 +(orking directory)-.1 F 5.721(.W)-.65 G .721 +(hen sendmail dumps core, it lea)-5.721 F -.15(ve)-.2 G(s).15 E 2.872 +(its core \214les in D.)174 659 R 2.873(There are tw)7.872 F 5.373(oc) +-.1 G 5.373(ases. If)-5.373 F F2(dir)5.373 E F1 2.873 +(ends with an asterisk \(e)5.373 F(g,)-.15 E F2(/var/spool/mqueue/qd*) +174 671 Q F1 .253 +(\), then all of the directories or symbolic links to directories)B .32 +LW 76 680.6 72 680.6 DL 80 680.6 76 680.6 DL 84 680.6 80 680.6 DL 88 +680.6 84 680.6 DL 92 680.6 88 680.6 DL 96 680.6 92 680.6 DL 100 680.6 96 +680.6 DL 104 680.6 100 680.6 DL 108 680.6 104 680.6 DL 112 680.6 108 +680.6 DL 116 680.6 112 680.6 DL 120 680.6 116 680.6 DL 124 680.6 120 +680.6 DL 128 680.6 124 680.6 DL 132 680.6 128 680.6 DL 136 680.6 132 +680.6 DL 140 680.6 136 680.6 DL 144 680.6 140 680.6 DL 148 680.6 144 +680.6 DL 152 680.6 148 680.6 DL 156 680.6 152 680.6 DL 160 680.6 156 +680.6 DL 164 680.6 160 680.6 DL 168 680.6 164 680.6 DL 172 680.6 168 +680.6 DL 176 680.6 172 680.6 DL 180 680.6 176 680.6 DL 184 680.6 180 +680.6 DL 188 680.6 184 680.6 DL 192 680.6 188 680.6 DL 196 680.6 192 +680.6 DL 200 680.6 196 680.6 DL 204 680.6 200 680.6 DL 208 680.6 204 +680.6 DL 212 680.6 208 680.6 DL 216 680.6 212 680.6 DL/F4 5 +/Times-Roman@0 SF(20)93.6 691 Q/F5 8/Times-Roman@0 SF(N.B.: the)3.2 I/F6 +8/Times-Bold@0 SF(nor)2 E(eceipts)-.144 E F5(\215ag turns of)2 E 2(fs) +-.2 G(upport for RFC 1891 \(Deli)-2 E -.12(ve)-.2 G +(ry Status Noti\214cation\).).12 E 0 Cg EP %%Page: 76 72 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d37362053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF 1.45<666f72204c696e75782e>174 96 R 1.451<416363 -6f7264696e6720746f20736f6d6520696e666f726d6174696f6e2074686973208d616720 -6973206e6f74206e656564656420616e>6.45 F 1.451<796d6f726520666f72>-.15 F --.1<6b65>174 108 S<726e656c20322e342e313620616e64206e65>.1 E<776572>-.25 -E<2e>-.55 E 10.61<527274496d706c69657344736e205b525d>102 124.2 R 1.52<49 -662074686973206f7074696f6e206973207365742c2061209952657475726e2d52656365 -6970742d54>4.02 F 1.52 -<6f3a9a2068656164657220636175736573207468652072657175657374206f662061> --.8 F 1.02<44534e2c2077686963682069732073656e7420746f2074686520656e>174 -136.2 R -.15<7665>-.4 G 1.02<6c6f70652073656e64657220617320726571756972 -65642062792052464320313839312c206e6f7420746f20746865>.15 F -<61646472657373206769>174 148.2 Q -.15<7665>-.25 G 2.5<6e69>.15 G 2.5 -<6e74>-2.5 G<686520686561646572>-2.5 E<2e>-.55 E<52756e4173557365723d> -102 164.4 Q/F2 10/Times-Italic@0 SF<75736572>A F1 3.753 -<5b6e6f2073686f7274206e616d655d20546865>2.48 F F2<75736572>6.253 E F1 -3.752 -<706172616d65746572206d617920626520612075736572206e616d6520286c6f6f6b> -6.252 F 3.752<656420757020696e>-.1 F F2<2f6574632f706173737764>174 176.4 -Q F1 3.045<296f>C -5.544 3.045<7261206e>-3.045 H .546 -<756d6572696320757365722069643b2065697468657220666f726d2063616e206861> --3.045 F .846 -.15<76652099>-.2 H .546 -<3a67726f75709a20617474616368656420287768657265>.15 F .966 -<67726f75702063616e206265206e756d65726963206f722073796d626f6c6963292e> -174 188.4 R .965 -<49662073657420746f2061206e6f6e2d7a65726f20286e6f6e2d726f6f74292076> -5.965 F<616c75652c>-.25 E F2<73656e642d>3.465 E<6d61696c>174 202.4 Q F1 -.483<77696c6c206368616e676520746f207468697320757365722069642073686f7274 -6c792061667465722073746172747570>2.983 F/F3 7/Times-Roman@0 SF<3231>-4 I -F1 5.484<2e54>4 K .484<6869732061>-5.484 F -.2<766f>-.2 G .484 -<6964732061206365727461696e20636c617373>.2 F 1.844 -<6f662073656375726974792070726f626c656d732e>174 214.4 R<486f>6.844 E -<7765>-.25 E -.15<7665>-.25 G 2.644 -.4<722c2074>.15 H 1.844 -<686973206d65616e73207468617420616c6c20992e666f7277>.4 F 1.844 -<6172649a20616e6420993a696e636c7564653a9a>-.1 F 1.428<8c6c6573206d757374 -206265207265616461626c652062792074686520696e64696361746564>174 226.4 R -F2<75736572>3.928 E F1 1.428 -<616e6420616c6c208c6c657320746f206265207772697474656e206d757374206265> -3.928 F .043<7772697461626c65206279>174 238.4 R F2<75736572>2.543 E F1 -.042<416c736f2c20616c6c208c6c6520616e642070726f6772616d2064656c69>2.543 -F -.15<7665>-.25 G .042<726965732077696c6c206265206d61726b>.15 F .042 -<656420756e7361666520756e6c657373>-.1 F 2.101<746865206f7074696f6e>174 -250.4 R F0 -<446f6e74426c616d6553656e646d61696c3d4e6f6e526f6f745361666541646472> -4.601 E F1 2.101<6973207365742c20696e207768696368206361736520746865> -4.601 F<64656c69>174 262.4 Q -.15<7665>-.25 G .778 -<72792077696c6c20626520646f6e65206173>.15 F F2<75736572>3.278 E F1 5.778 -<2e49>C 3.277<7469>-5.778 G 3.277<7361>-3.277 G .777 -<6c736f20696e636f6d70617469626c65207769746820746865>-3.277 F F0 -<5361666546696c65456e>3.277 E<766972>-.4 E<6f6e2d>-.18 E<6d656e74>174 -274.4 Q F1 2.62<6f7074696f6e2e20496e>2.62 F .12<6f746865722077>2.62 F -.121<6f7264732c206974206d6179206e6f742061637475616c6c7920616464206d7563 -6820746f207365637572697479206f6e20616e2061>-.1 F -.15<7665>-.2 G -.2 -<722d>.15 G .593<6167652073797374656d2c20616e64206d617920696e2066>174 -286.4 R .592<61637420646574726163742066726f6d20736563757269747920286265 -6361757365206f74686572208c6c65207065726d697373696f6e73>-.1 F 1.579 -<6d757374206265206c6f6f73656e6564292e>174 298.4 R<486f>6.579 E<7765>-.25 -E -.15<7665>-.25 G 2.379 -.4<722c2069>.15 H 4.079<7473>.4 G 1.579 -<686f756c642062652075736566756c206f6e208c7265>-4.079 F -.1<7761>-.25 G -1.58<6c6c7320616e64206f7468657220706c61636573>.1 F -<776865726520757365727320646f6e27>174 310.4 Q 2.5<7468>-.18 G -2.25 -.2 -<61762065>-2.5 H<6163636f756e747320616e642074686520616c6961736573208c6c -652069732077656c6c20636f6e73747261696e65642e>2.7 E<526563697069656e7446> -102 326.6 Q<6163746f723d>-.15 E F2<66616374>A F1 .638 -<5b795d2054686520696e64696361746564>174 338.6 R F2<66616374>3.137 E F1 -.637<6f7220697320616464656420746f20746865207072696f72697479202874687573> -B F2<6c6f776572696e67>3.137 E F1 .637 -<746865207072696f72697479206f6620746865>3.137 F .23<6a6f622920666f722065 -61636820726563697069656e742c20692e652e2c20746869732076>174 350.6 R .231 -<616c75652070656e616c697a6573206a6f62732077697468206c6172>-.25 F .231 -<6765206e756d62657273206f66207265636970692d>-.18 F 2.5 -<656e74732e20446566>174 362.6 R<61756c747320746f2033303030302e>-.1 E -<5265667573654c413d>102 378.8 Q F2<4c41>A F1 1.012 -<5b585d205768656e207468652073797374656d206c6f61642061>13.59 F -.15<7665> --.2 G 1.012<726167652065>.15 F<786365656473>-.15 E F2<4c41>3.512 E F1 -3.512<2c72>C 1.011 -<656675736520696e636f6d696e6720534d545020636f6e6e65632d>-3.512 F 2.658 -<74696f6e732e20446566>174 390.8 R .158<61756c747320746f203132206d756c74 -69706c69656420627920746865206e756d626572206f662070726f636573736f7273206f -6e6c696e65206f6e207468652073797374656d>-.1 F -<28696620746861742063616e2062652064657465726d696e6564292e>174 402.8 Q -<52656a6563744c6f67496e74657276>102 419 Q<616c3d>-.25 E F2 -<74696d656f7574>A F1 1.628 -<5b6e6f2073686f7274206e616d655d204c6f6720696e74657276>174 431 R 1.627<61 -6c207768656e207265667573696e6720636f6e6e656374696f6e7320666f722074686973 -206c6f6e672028646566>-.25 F<61756c743a>-.1 E<3368292e>174 443 Q -<526574727946>102 459.2 Q<6163746f723d>-.15 E F2<66616374>A F1 .771 -<5b5a5d20546865>3.74 F F2<66616374>3.271 E F1 .771 -<6f7220697320616464656420746f20746865207072696f726974792065>B -.15<7665> --.25 G .772<72792074696d652061206a6f622069732070726f6365737365642e>.15 F -.772<546875732c2065616368>5.772 F .994<74696d652061206a6f62206973207072 -6f6365737365642c20697473207072696f726974792077696c6c20626520646563726561 -7365642062792074686520696e646963617465642076>174 471.2 R 3.493 -<616c75652e20496e>-.25 F 1.107<6d6f737420656e>174 483.2 R 1.107 -<7669726f6e6d656e747320746869732073686f756c6420626520706f73697469>-.4 F --.15<7665>-.25 G 3.608<2c73>.15 G 1.108 -<696e636520686f73747320746861742061726520646f>-3.608 F 1.108 -<776e2061726520616c6c20746f6f>-.25 F<6f6674656e20646f>174 495.2 Q -<776e20666f722061206c6f6e672074696d652e>-.25 E<446566>5 E -<61756c747320746f2039303030302e>-.1 E<5361666546696c65456e>102 511.4 Q -<7669726f6e6d656e743d>-.4 E F2<646972>A F1 .022<5b6e6f2073686f7274206e61 -6d655d2049662074686973206f7074696f6e206973207365742c>174 523.4 R F2 -<73656e646d61696c>2.521 E F1 .021<77696c6c20646f2061>2.521 F F2 -.15 -<6368>2.521 G -.45<726f>.15 G<6f74>.45 E F1 .021 -<2832292063616c6c20696e746f2074686520696e64692d>B<6361746564>174 535.4 Q -F2<646972>2.832 E F1 .333<6563746f7279206265666f726520646f696e6720616e>B -2.833<798c>-.15 G .333<6c65207772697465732e>-2.833 F .333<49662074686520 -8c6c65206e616d652073706563698c6564206279207468652075736572>5.333 F<6265> -174 547.4 Q .588<67696e732077697468>-.15 F F2<646972>3.088 E F1 3.087 -<2c74>C .587<686174207061727469616c2070617468206e616d652077696c6c206265 -207374726970706564206f66>-3.087 F 3.087<6662>-.25 G .587 -<65666f72652077726974696e672c20736f2028666f72>-3.087 F -.15<6578>174 -559.4 S 2.224<616d706c652920696620746865205361666546696c65456e>.15 F -2.224<7669726f6e6d656e742076>-.4 F 2.225<61726961626c652069732073657420 -746f20992f736166659a207468656e20616c6961736573206f66>-.25 F 1.557<992f73 -6166652f6c6f67732f8c6c659a20616e6420992f6c6f67732f8c6c659a2061637475616c -6c7920696e646963617465207468652073616d65208c6c652e>174 571.4 R -<4164646974696f6e616c6c79>6.556 E 4.056<2c69>-.65 G<66>-4.056 E -<74686973206f7074696f6e206973207365742c>174 583.4 Q F2<73656e646d61696c> -2.5 E F1<7265667573657320746f2064656c69>2.5 E -.15<7665>-.25 G 2.5<7274> -.15 G 2.5<6f73>-2.5 G<796d626f6c6963206c696e6b732e>-2.5 E<5361>102 599.6 -Q -.15<7665>-.2 G 10.41<46726f6d4c696e65205b665d>.15 F<5361>4.492 E -2.292 -.15<76652055>-.2 H 1.992<4e49582d7374796c65209946726f6d9a206c696e -6573206174207468652066726f6e74206f6620686561646572732e>.15 F 1.993 -<4e6f726d616c6c7920746865>6.993 F 4.493<7961>-.15 G<7265>-4.493 E -<617373756d656420726564756e64616e7420616e64206469736361726465642e>174 -611.6 Q .62<53656e644d696d654572726f7273205b6a5d>102 627.8 R .373<496620 -7365742c2073656e64206572726f72206d6573736167657320696e204d494d4520666f72 -6d6174202873656520524643203230343520616e6420524643203133343420666f72> -2.874 F 2.914<64657461696c73292e204966>174 639.8 R<64697361626c65642c> -2.914 E F2<73656e646d61696c>2.914 E F1 .415 -<77696c6c206e6f742072657475726e207468652044534e206b>2.914 F -.15<6579> --.1 G -.1<776f>.15 G .415<726420696e20726573706f6e736520746f20616e>.1 F -1.731<45484c4f20616e642077696c6c206e6f7420646f2044656c69>174 651.8 R --.15<7665>-.25 G 1.731<727920537461747573204e6f74698c636174696f6e207072 -6f63657373696e672061732064657363726962656420696e>.15 F -<52464320313839312e>174 663.8 Q .32 LW 76 678.8 72 678.8 DL 80 678.8 76 -678.8 DL 84 678.8 80 678.8 DL 88 678.8 84 678.8 DL 92 678.8 88 678.8 DL -96 678.8 92 678.8 DL 100 678.8 96 678.8 DL 104 678.8 100 678.8 DL 108 -678.8 104 678.8 DL 112 678.8 108 678.8 DL 116 678.8 112 678.8 DL 120 -678.8 116 678.8 DL 124 678.8 120 678.8 DL 128 678.8 124 678.8 DL 132 -678.8 128 678.8 DL 136 678.8 132 678.8 DL 140 678.8 136 678.8 DL 144 -678.8 140 678.8 DL 148 678.8 144 678.8 DL 152 678.8 148 678.8 DL 156 -678.8 152 678.8 DL 160 678.8 156 678.8 DL 164 678.8 160 678.8 DL 168 -678.8 164 678.8 DL 172 678.8 168 678.8 DL 176 678.8 172 678.8 DL 180 -678.8 176 678.8 DL 184 678.8 180 678.8 DL 188 678.8 184 678.8 DL 192 -678.8 188 678.8 DL 196 678.8 192 678.8 DL 200 678.8 196 678.8 DL 204 -678.8 200 678.8 DL 208 678.8 204 678.8 DL 212 678.8 208 678.8 DL 216 -678.8 212 678.8 DL/F4 5/Times-Roman@0 SF<3231>93.6 689.2 Q/F5 8 -/Times-Roman@0 SF<5768656e2072756e6e696e672061732061206461656d6f6e2c2069 -74206368616e67657320746f207468697320757365722061667465722061636365707469 -6e67206120636f6e6e656374696f6e2062>3.2 I -<7574206265666f72652072656164696e6720616e>-.16 E<79>-.12 E F3<534d5450>2 -E F5<636f6d6d616e64732e>2 E 0 Cg EP +/F0 10/Times-Bold@0 SF 193.36(SMM:08-76 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF(be)174 96 +Q .432(ginning with `qd' in)-.15 F/F2 10/Times-Italic@0 SF +(/var/spool/mqueue)2.932 E F1 .433 +(will be used as queue directories of the)2.932 F(def)174 108 Q .276 +(ault queue group, and)-.1 F F2(/var/spool/mqueue)2.776 E F1 .275 +(will be used as the w)2.776 F .275(orking directory)-.1 F 2.82 +(D. Otherwise,)174 120 R F2(dir)2.82 E F1 .32 +(must name a directory \(usually)2.82 F F2(/var/spool/mqueue)2.82 E F1 +.32(\): the def)B(ault)-.1 E .545 +(queue group consists of the single queue directory)174 132 R F2(dir) +3.045 E F1 3.045(,a)C .545(nd the w)-3.045 F .545(orking directory)-.1 F +2.5(Di)174 144 S 2.5(ss)-2.5 G(et to)-2.5 E F2(dir)2.5 E F1 5.001(.T)C +2.501(od)-5.801 G .001 +(e\214ne additional groups of queue directories, use the con\214gura-) +-2.501 F .746(tion \214le `Q' command.)174 156 R .746 +(Do not change the queue directory structure while send-)5.746 F +(mail is running.)174 168 Q(QueueF)102 184.2 Q(actor=)-.15 E F2(factor)A +F1 .613([q] Use)174 196.2 R F2(factor)3.113 E F1 .613 +(as the multiplier in the map function to decide when to just queue) +3.113 F .415(up jobs rather than run them.)174 208.2 R .415(This v)5.415 +F .415(alue is di)-.25 F .415(vided by the dif)-.25 F .415 +(ference between the)-.25 F 1.003(current load a)174 220.2 R -.15(ve)-.2 +G 1.003(rage and the load a).15 F -.15(ve)-.2 G 1.004(rage limit \().15 +F F0(QueueLA)A F1 1.004(option\) to determine)3.504 F +(the maximum message priority that will be sent.)174 232.2 Q(Def)5 E +(aults to 600000.)-.1 E(QueueLA=)102 248.4 Q F2(LA)A F1 1.087 +([x] When the system load a)15.26 F -.15(ve)-.2 G 1.087(rage e).15 F +(xceeds)-.15 E F2(LA)3.587 E F1 1.086(and the)3.587 F F0(QueueF)3.586 E +(actor)-.25 E F1(\()3.586 E F0(q)A F1 3.586(\)o)C(ption)-3.586 E(di)174 +260.4 Q 1.465(vided by the dif)-.25 F 1.465 +(ference in the current load a)-.25 F -.15(ve)-.2 G 1.465(rage and the) +.15 F F0(QueueLA)3.965 E F1(option)3.965 E .769(plus one is less than t\ +he priority of the message, just queue messages \(i.e., don')174 272.4 R +(t)-.18 E .247(try to send them\).)174 284.4 R(Def)5.247 E .247 +(aults to 8 multiplied by the number of processors online on)-.1 F +(the system \(if that can be determined\).)174 296.4 Q(QueueFileMode=) +102 312.6 Q F2(mode)A F1 .962([no short name] Def)174 324.6 R .962 +(ault permissions for queue \214les \(octal\).)-.1 F .961 +(If not set, sendmail)5.961 F .212(uses 0600 unless its real and ef)174 +336.6 R(fecti)-.25 E .513 -.15(ve u)-.25 H .213(id are dif).15 F .213 +(ferent in which case it uses 0644.)-.25 F(QueueSortOrder=)102 352.8 Q +F2(algorithm)A F1 .097([no short name] Sets the)174 364.8 R F2 +(algorithm)2.597 E F1 .096(used for sorting the queue.)2.597 F .096 +(Only the \214rst char)5.096 F(-)-.2 E 1.021(acter of the v)174 376.8 R +1.021(alue is used.)-.25 F(Le)6.021 E -.05(ga)-.15 G 3.521(lv).05 G +1.021(alues are \231host\232 \(to order by the name of the)-3.771 F 1.73 +(\214rst host name of the \214rst recipient\), \231\214lename\232 \(to \ +order by the name of the)174 388.8 R .283(queue \214le name\), \231time\ +\232 \(to order by the submission/creation time\), \231random\232 \(to) +174 400.8 R .906(order randomly\), \231modi\214cation\232 \(to order by\ + the modi\214cation time of the qf \214le)174 412.8 R 1.349(\(older ent\ +ries \214rst\)\), \231none\232 \(to not order\), and \231priority\232 \ +\(to order by message)174 424.8 R 2.528(priority\). Host)174 436.8 R +.028(ordering mak)2.528 F .028(es better use of the connection cache, b) +-.1 F .027(ut may tend to)-.2 F .322(process lo)174 448.8 R 2.822(wp) +-.25 G .322(riority messages that go to a single host o)-2.822 F -.15 +(ve)-.15 G 2.823(rh).15 G .323(igh priority messages)-2.823 F 1.825 +(that go to se)174 460.8 R -.15(ve)-.25 G 1.825 +(ral hosts; it probably shouldn').15 F 4.325(tb)-.18 G 4.324(eu)-4.325 G +1.824(sed on slo)-4.324 F 4.324(wn)-.25 G(etw)-4.324 E 1.824(ork links.) +-.1 F .614(Filename and modi\214cation time ordering sa)174 472.8 R -.15 +(ve)-.2 G 3.114(st).15 G .614(he o)-3.114 F -.15(ve)-.15 G .614 +(rhead of reading all of the).15 F .671 +(queued items before starting the queue run.)174 484.8 R .671 +(Creation \(submission\) time ordering)5.671 F 1.854(is almost al)174 +496.8 R -.1(wa)-.1 G 1.854(ys a bad idea, since it allo).1 F 1.854 +(ws lar)-.25 F 1.854(ge, b)-.18 F 1.854(ulk mail to go out before)-.2 F +(smaller)174 508.8 Q 3.714(,p)-.4 G 1.214(ersonal mail, b)-3.714 F 1.214 +(ut may ha)-.2 F 1.513 -.15(ve a)-.2 H 1.213 +(pplicability on some hosts with v).15 F 1.213(ery f)-.15 F(ast)-.1 E +2.631(connections. Random)174 520.8 R .131(is useful if se)2.631 F -.15 +(ve)-.25 G .132(ral queue runners are started by hand which).15 F .39 +(try to drain the same queue since odds are the)174 532.8 R 2.889(yw) +-.15 G .389(ill be w)-2.889 F .389(orking on dif)-.1 F .389 +(ferent parts)-.25 F(of the queue at the same time.)174 544.8 Q +(Priority ordering is the def)5 E(ault.)-.1 E(QueueT)102 561 Q(imeout=) +-.35 E F2(timeout)A F1 .355([T] A synon)174 573 R .355(ym for \231T)-.15 +F 2.855(imeout.queuereturn\232. Use)-.35 F .356 +(that form instead of the \231Queue-)2.855 F -.35(Ti)174 585 S +(meout\232 form.).35 E 32.83(RandFile [no)102 601.2 R 1.036(short name]\ + Name of \214le containing random data or the name of the UNIX)3.537 F +(sock)174 613.2 Q 1.63(et if EGD is used.)-.1 F 4.131(A\()6.631 G 1.631 +(required\) pre\214x "e)-4.131 F 1.631 +(gd:" or "\214le:" speci\214es the type.)-.15 F(ST)174 625.2 Q(AR)-.93 E +1.561 +(TTLS requires this \214lename if the compile \215ag HASURANDOMDEV is) +-.6 F(not set \(see sendmail/README\).)174 637.2 Q(Resolv)102 653.4 Q +(erOptions=)-.15 E F2(options)A F1 .127([I] Set resolv)174 665.4 R .127 +(er options.)-.15 F -1.11(Va)5.127 G .127(lues can be set using)1.11 F +F0(+)2.627 E F2<8d61>A(g)-.1 E F1 .127(and cleared using)2.627 F F0 +2.628 E F2<8d61>A(g)-.1 E F1 2.628(;t)C(he)-2.628 E F2<8d61>174 677.4 Q +(g)-.1 E F1 5.014(sc)C 2.514(an be \231deb)-5.014 F 2.513 +(ug\232, \231aaonly\232, \231use)-.2 F 2.513 +(vc\232, \231primary\232, \231igntc\232, \231recurse\232, \231def-)-.25 +F 2.688 +(names\232, \231stayopen\232, \231use_inet6\232, or \231dnsrch\232.)174 +689.4 R 2.689(The string \231HasW)7.689 F(ildcardMX\232)-.4 E .283 +(\(without a)174 701.4 R F0(+)2.783 E F1(or)2.783 E F02.783 E F1 +2.783(\)c)C .283(an be speci\214ed to turn of)-2.783 F 2.782(fm)-.25 G +.282(atching ag)-2.782 F .282(ainst MX records when)-.05 F .89 +(doing name canoni\214cations.)174 713.4 R .89(The string \231W)5.89 F +(orkAroundBrok)-.8 E .89(enAAAA\232 \(without a)-.1 F F0(+)174 725.4 Q +F1(or)3.473 E F03.473 E F1 3.473(\)c)C .972(an be speci\214ed to w) +-3.473 F .972(ork around some brok)-.1 F .972(en nameserv)-.1 F .972 +(ers which return)-.15 F 0 Cg EP %%Page: 77 73 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3737>195.86 E -/F1 10/Times-Roman@0 SF<53657276>102 96 Q 10.77 -<65724365727446696c65205b6e6f>-.15 F .581<73686f7274206e616d655d2046696c -6520636f6e7461696e696e67207468652063657274698c63617465206f66207468652073 -657276>3.08 F<6572>-.15 E 3.081<2c69>-.4 G .581 -<2e652e2c20746869732063657274698c63617465206973>-3.081 F -<75736564207768656e2073656e646d61696c20616374732061732073657276>174 108 -Q<657220287573656420666f72205354>-.15 E<4152>-.93 E<54544c53292e>-.6 E -<53657276>102 124.2 Q<65724b>-.15 E -.15<6579>-.25 G 11.73 -<46696c65205b6e6f>.15 F .543 -<73686f7274206e616d655d2046696c6520636f6e7461696e696e672074686520707269> -3.043 F -.25<7661>-.25 G .542<7465206b>.25 F .842 -.15<65792062>-.1 H -.542<656c6f6e67696e6720746f207468652073657276>.15 F .542 -<65722063657274698c63617465>-.15 F<287573656420666f72205354>174 136.2 Q -<4152>-.93 E<54544c53292e>-.6 E<53657276>102 152.4 Q -<657253534c4f7074696f6e73>-.15 E 3.348<4173>174 164.4 S .849<7061636520 -6f7220636f6d6d6120736570617261746564206c697374206f662053534c2072656c6174 -6564206f7074696f6e7320666f72207468652073657276>-3.348 F .849 -<657220736964652e>-.15 F<536565>5.849 E/F2 10/Times-Italic@0 SF -<53534c5f4354585f7365745f6f7074696f6e73>174 176.4 Q F1 .961 -<28332920666f722061206c6973743b207468652061>B -.25<7661>-.2 G .961 -<696c61626c652076>.25 F .961 -<616c75657320646570656e64206f6e20746865204f70656e53534c>-.25 F -.15 -<7665>174 188.4 S 5.628<7273696f6e206167>.15 F 5.628 -<61696e7374207768696368>-.05 F F2<73656e646d61696c>8.129 E F1 5.629 -<697320636f6d70696c65642e>8.129 F 5.629<427920646566>10.629 F -<61756c742c>-.1 E F2<53534c5f4f505f414c4c>8.129 E -<2d53534c5f4f505f544c534558545f50>174 200.4 Q<414444494e47>-.9 E F1 .938 -<6172652075736564202869662074686f7365206f7074696f6e73206172652061>3.438 -F -.25<7661>-.2 G 3.437<696c61626c65292e204f7074696f6e73>.25 F .503<6361 -6e20626520636c65617265642062792070726563656564696e67207468656d2077697468 -2061206d696e7573207369676e2e>174 212.4 R .504 -<497420697320616c736f20706f737369626c6520746f20737065632d>5.503 F -<696679206e756d65726963616c2076>174 224.4 Q<616c7565732c20652e672e2c> --.25 E F0<2d307830303130>2.5 E F1<2e>A -<5365727669636553776974636846696c653d>102 240.6 Q F2<8c6c656e616d65>A F1 -1.533<5b6e6f2073686f7274206e616d655d20496620796f757220686f7374206f706572 -6174696e672073797374656d206861732061207365727669636520737769746368206162 -737472616374696f6e>174 252.6 R .003<28652e672e2c202f6574632f6e7373776974 -63682e636f6e66206f6e20536f6c61726973206f72202f6574632f7376632e636f6e6620 -6f6e20556c7472697820616e6420444543204f53462f31292074686174>174 264.6 R -.814<736572766963652077696c6c20626520636f6e73756c74656420616e6420746869 -73206f7074696f6e2069732069676e6f7265642e>174 276.6 R .814 -<4f74686572776973652c207468697320697320746865206e616d65>5.814 F 1.082 -<6f662061208c6c6520746861742070726f>174 288.6 R 1.082<766964657320746865 -206c697374206f66206d6574686f6473207573656420746f20696d706c656d656e742070 -6172746963756c61722073657276696365732e>-.15 F 1.069<5468652073796e746178 -206973206120736572696573206f66206c696e65732c2065616368206f66207768696368 -20697320612073657175656e6365206f662077>174 300.6 R 3.569 -<6f7264732e20546865>-.1 F<8c727374>3.569 E -.1<776f>174 312.6 S 1.363 -<7264206973207468652073657276696365206e616d652c20616e6420666f6c6c6f>.1 F -1.363<77696e672077>-.25 F 1.364 -<6f7264732061726520736572766963652074797065732e>-.1 F 1.364 -<546865207365727669636573>6.364 F<74686174>174 324.6 Q F2 -<73656e646d61696c>4.11 E F1 1.61<636f6e73756c7473206469726563746c792061 -72652099616c69617365739a20616e642099686f7374732e>4.11 F 6.61<9a53>-.7 G -1.61<6572766963652074797065732063616e206265>-6.61 F 1.754<99646e739a2c20 -996e69739a2c20996e6973706c75739a2c206f7220998c6c65739a202877697468207468 -65206361>174 336.6 R -.15<7665>-.2 G 1.755 -<617420746861742074686520617070726f70726961746520737570706f7274>.15 F -.791<6d75737420626520636f6d70696c656420696e206265666f726520746865207365 -72766963652063616e206265207265666572656e636564292e>174 348.6 R .79 -<4966205365727669636553776974636846696c65>5.791 F .925 -<6973206e6f742073706563698c65642c20697420646566>174 360.6 R .925 -<61756c747320746f202f6574632f6d61696c2f736572766963652e7377697463682e> --.1 F .925<49662074686174208c6c6520646f6573206e6f742065>5.925 F -<786973742c>-.15 E<74686520646566>174 372.6 Q -<61756c74207377697463682069733a>-.1 E 54.71<616c6961736573208c6c6573>214 -388.8 R 60.81<686f73747320646e73>214 400.8 R<6e6973208c6c6573>2.5 E -<54686520646566>174 417 Q<61756c74208c6c6520697320992f6574632f6d61696c2f -736572766963652e7377697463689a2e>-.1 E<5365>102 433.2 Q -.15<7665>-.25 G -12.12<6e426974496e707574205b375d>.15 F .322 -<537472697020696e70757420746f207365>2.822 F -.15<7665>-.25 G 2.822<6e62> -.15 G .321<69747320666f7220636f6d7061746962696c6974792077697468206f6c64 -2073797374656d732e>-2.822 F .321<546869732073686f756c646e27>5.321 F -2.821<7462>-.18 G<65>-2.821 E<6e6563657373617279>174 445.2 Q<2e>-.65 E -<5368617265644d656d6f72794b>102 461.4 Q -.15<6579>-.25 G .744 -<5b6e6f2073686f7274206e616d655d204b>174 473.4 R 1.044 -.15<65792074>-.25 -H 3.244<6f75>.15 G .745<736520666f7220736861726564206d656d6f7279207365> --3.244 F .745 -<676d656e743b206966206e6f742073657420286f722030292c20736861726564>-.15 F -1.16<6d656d6f72792077696c6c206e6f7420626520757365642e>174 485.4 R 1.159 -<49662073657420746f202d31>6.16 F F2<73656e646d61696c>3.659 E F1 1.159 -<63616e2073656c6563742061206b>3.659 F 1.459 -.15<65792069>-.1 H 1.159 -<7473656c662070726f>.15 F<7669646564>-.15 E .658<7468617420616c736f>174 -497.4 R F0<53686172>3.158 E<65644d656d6f72794b>-.18 E<657946696c65>-.25 -E F1 .658<6973207365742e>3.158 F .658<526571756972657320737570706f727420 -666f7220736861726564206d656d6f727920746f>5.658 F 1.413 -<626520636f6d70696c656420696e746f>174 509.4 R F2<73656e646d61696c>3.913 -E F1 6.413<2e49>C 3.912<6674>-6.413 G 1.412 -<686973206f7074696f6e206973207365742c>-3.912 F F2<73656e646d61696c>3.912 -E F1 1.412<63616e20736861726520736f6d652064617461>3.912 F .307 -<6265747765656e20646966>174 521.4 R .307 -<666572656e7420696e7374616e6365732e>-.25 F -.15<466f>5.307 G 2.807<7265> -.15 G .308<78616d706c652c20746865206e756d626572206f6620656e747269657320 -696e20612071756575652064697265632d>-2.957 F .033 -<746f7279206f72207468652061>174 533.4 R -.25<7661>-.2 G .032 -<696c61626c6520737061636520696e2061208c6c652073797374656d2e>.25 F .032 -<5468697320616c6c6f>5.032 F .032<777320666f72206d6f7265206566>-.25 F -.032<8c6369656e742070726f6772616d>-.25 F -.15<657865>174 545.4 S .09<63 -7574696f6e2c2073696e6365206f6e6c79206f6e652070726f63657373206e6565647320 -746f2075706461746520746865206461746120696e7374656164206f6620656163682069 -6e6469>.15 F<7669642d>-.25 E<75616c2070726f636573732067>174 557.4 Q<6174 -686572696e6720746865206461746120656163682074696d652069742069732072657175 -697265642e>-.05 E<5368617265644d656d6f72794b>102 573.6 Q -.15<6579>-.25 -G<46696c65>.15 E .087<5b6e6f2073686f7274206e616d655d204966>174 585.6 R -F0<53686172>2.587 E<65644d656d6f72794b>-.18 E<6579>-.25 E F1 .086<697320 -73657420746f202d31207468656e20746865206175746f6d61746963616c6c792073656c -6563746564>2.587 F<736861726564206d656d6f7279206b>174 597.6 Q .3 -.15 -<65792077>-.1 H -<696c6c2062652073746f72656420696e207468652073706563698c6564208c6c652e> -.15 E<53696e676c654c696e6546726f6d486561646572>102 613.8 Q .958<5b6e6f20 -73686f7274206e616d655d204966207365742c2046726f6d3a206c696e65732074686174 -206861>174 625.8 R 1.259 -.15<76652065>-.2 H .959<6d626564646564206e65> -.15 F .959<776c696e65732061726520756e77726170706564>-.25 F .243 -<6f6e746f206f6e65206c696e652e>174 637.8 R .243<5468697320697320746f2067 -65742061726f756e64206120626f74636820696e204c6f747573204e6f74657320746861 -74206170706172656e746c792063616e6e6f74>5.243 F -<756e6465727374616e64206c65>174 649.8 Q -.05<6761>-.15 G -<6c6c792077726170706564205246432038323220686561646572732e>.05 E -<53696e676c6554687265616444656c69>102 666 Q -.15<7665>-.25 G<7279>.15 E -.333<5b6e6f2073686f7274206e616d655d204966207365742c206120636c69656e7420 -6d616368696e652077696c6c206e65>174 678 R -.15<7665>-.25 G 2.833<7274>.15 -G .334<727920746f206f70656e207477>-2.833 F 2.834<6f53>-.1 G .334 -<4d545020636f6e6e65632d>-2.834 F 1.712 -<74696f6e7320746f20612073696e676c652073657276>174 690 R 1.712 -<6572206d616368696e65206174207468652073616d652074696d652c2065>-.15 F --.15<7665>-.25 G 4.211<6e69>.15 G 4.211<6e64>-4.211 G<6966>-4.211 E -1.711<666572656e742070726f6365737365732e>-.25 F .952 -<546861742069732c20696620616e6f74686572>174 702 R F2<73656e646d61696c> -3.452 E F1 .952<697320616c72656164792074616c6b696e6720746f20736f6d652068 -6f73742061206e65>3.452 F<77>-.25 E F2<73656e646d61696c>3.453 E F1 -<77696c6c>3.453 E 2.388 -<6e6f74206f70656e20616e6f7468657220636f6e6e656374696f6e2e>174 714 R -2.387<546869732070726f7065727479206973206f66206d6978>7.387 F 2.387 -<65642076>-.15 F 2.387<616c75653b20616c74686f7567682074686973>-.25 F 0 -Cg EP +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-77)195.86 E/F1 10/Times-Roman@0 SF(SER)174 96 Q(VF)-.8 E 1.001 +(AIL \(a temporary f)-.74 F 1.001(ailure\) on T_AAAA \(IPv6\) lookups.) +-.1 F 1.001(Notice: it might)6.001 F +(be necessary to apply the same \(or similar\) options to)174 108 Q/F2 +10/Times-Italic@0 SF(submit.cf)2.5 E F1(too.)2.5 E -1.04 +(RequiresDirfsync [no)102 124.2 R 2.782 +(short name] This option can be used to o)5.283 F -.15(ve)-.15 G 2.782 +(rride the compile time \215ag).15 F F0(REQ)174 136.2 Q(UIRES_DIR_FSYNC) +-.1 E F1 .871(at runtime by setting it to)3.371 F/F3 9/Times-Roman@0 SF +-.09(fa)3.372 G(lse).09 E F1 5.872(.I)C 3.372(ft)-5.872 G .872 +(he compile time)-3.372 F .018 +(\215ag is not set, the option is ignored.)174 148.2 R .017 +(The \215ag turns on support for \214le systems that)5.018 F .209 +(require to call)174 160.2 R F2(fsync\(\))2.709 E F1 .209 +(for a directory if the meta-data in it has been changed.)2.709 F(This) +5.21 E .075(should be turned on at least for older v)174 172.2 R .074 +(ersions of ReiserFS; it is enabled by def)-.15 F(ault)-.1 E 1.45 +(for Linux.)174 184.2 R 1.451 +(According to some information this \215ag is not needed an)6.45 F 1.451 +(ymore for)-.15 F -.1(ke)174 196.2 S(rnel 2.4.16 and ne).1 E(wer)-.25 E +(.)-.55 E 10.61(RrtImpliesDsn [R])102 212.4 R 1.52 +(If this option is set, a \231Return-Receipt-T)4.02 F 1.52 +(o:\232 header causes the request of a)-.8 F 1.02 +(DSN, which is sent to the en)174 224.4 R -.15(ve)-.4 G 1.02 +(lope sender as required by RFC 1891, not to the).15 F(address gi)174 +236.4 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(nt)-2.5 G(he header)-2.5 E(.) +-.55 E(RunAsUser=)102 252.6 Q F2(user)A F1 3.753([no short name] The) +2.48 F F2(user)6.253 E F1 3.752(parameter may be a user name \(look) +6.252 F 3.752(ed up in)-.1 F F2(/etc/passwd)174 264.6 Q F1 3.045(\)o)C +-5.544 3.045(ra n)-3.045 H .546(umeric user id; either form can ha) +-3.045 F .846 -.15(ve \231)-.2 H .546(:group\232 attached \(where).15 F +.966(group can be numeric or symbolic\).)174 276.6 R .965 +(If set to a non-zero \(non-root\) v)5.965 F(alue,)-.25 E F2(send-)3.465 +E(mail)174 290.6 Q F1 .483 +(will change to this user id shortly after startup)2.983 F/F4 7 +/Times-Roman@0 SF(21)-4 I F1 5.484(.T)4 K .484(his a)-5.484 F -.2(vo)-.2 +G .484(ids a certain class).2 F 1.844(of security problems.)174 302.6 R +(Ho)6.844 E(we)-.25 E -.15(ve)-.25 G 2.644 -.4(r, t).15 H 1.844 +(his means that all \231.forw).4 F 1.844(ard\232 and \231:include:\232) +-.1 F 1.428(\214les must be readable by the indicated)174 314.6 R F2 +(user)3.928 E F1 1.428(and all \214les to be written must be)3.928 F +.043(writable by)174 326.6 R F2(user)2.543 E F1 .042 +(Also, all \214le and program deli)2.543 F -.15(ve)-.25 G .042 +(ries will be mark).15 F .042(ed unsafe unless)-.1 F 2.101(the option) +174 338.6 R F0(DontBlameSendmail=NonRootSafeAddr)4.601 E F1 2.101 +(is set, in which case the)4.601 F(deli)174 350.6 Q -.15(ve)-.25 G .778 +(ry will be done as).15 F F2(user)3.278 E F1 5.778(.I)C 3.277(ti)-5.778 +G 3.277(sa)-3.277 G .777(lso incompatible with the)-3.277 F F0 +(SafeFileEn)3.277 E(vir)-.4 E(on-)-.18 E(ment)174 362.6 Q F1 2.62 +(option. In)2.62 F .12(other w)2.62 F .121 +(ords, it may not actually add much to security on an a)-.1 F -.15(ve) +-.2 G -.2(r-).15 G .593(age system, and may in f)174 374.6 R .592 +(act detract from security \(because other \214le permissions)-.1 F +1.579(must be loosened\).)174 386.6 R(Ho)6.579 E(we)-.25 E -.15(ve)-.25 +G 2.379 -.4(r, i).15 H 4.079(ts).4 G 1.579(hould be useful on \214re) +-4.079 F -.1(wa)-.25 G 1.58(lls and other places).1 F(where users don') +174 398.6 Q 2.5(th)-.18 G -2.25 -.2(av e)-2.5 H +(accounts and the aliases \214le is well constrained.)2.7 E(RecipientF) +102 414.8 Q(actor=)-.15 E F2(fact)A F1 .638([y] The indicated)174 426.8 +R F2(fact)3.137 E F1 .637(or is added to the priority \(thus)B F2 +(lowering)3.137 E F1 .637(the priority of the)3.137 F .23 +(job\) for each recipient, i.e., this v)174 438.8 R .231 +(alue penalizes jobs with lar)-.25 F .231(ge numbers of recipi-)-.18 F +2.5(ents. Def)174 450.8 R(aults to 30000.)-.1 E(RefuseLA=)102 467 Q F2 +(LA)A F1 1.012([X] When the system load a)13.59 F -.15(ve)-.2 G 1.012 +(rage e).15 F(xceeds)-.15 E F2(LA)3.512 E F1 3.512(,r)C 1.011 +(efuse incoming SMTP connec-)-3.512 F 2.658(tions. Def)174 479 R .158(a\ +ults to 12 multiplied by the number of processors online on the system) +-.1 F(\(if that can be determined\).)174 491 Q(RejectLogInterv)102 507.2 +Q(al=)-.25 E F2(timeout)A F1 1.628([no short name] Log interv)174 519.2 +R 1.627(al when refusing connections for this long \(def)-.25 F(ault:) +-.1 E(3h\).)174 531.2 Q(RetryF)102 547.4 Q(actor=)-.15 E F2(fact)A F1 +.771([Z] The)3.74 F F2(fact)3.271 E F1 .771 +(or is added to the priority e)B -.15(ve)-.25 G .772 +(ry time a job is processed.).15 F .772(Thus, each)5.772 F .994(time a \ +job is processed, its priority will be decreased by the indicated v)174 +559.4 R 3.493(alue. In)-.25 F 1.107(most en)174 571.4 R 1.107 +(vironments this should be positi)-.4 F -.15(ve)-.25 G 3.608(,s).15 G +1.108(ince hosts that are do)-3.608 F 1.108(wn are all too)-.25 F +(often do)174 583.4 Q(wn for a long time.)-.25 E(Def)5 E +(aults to 90000.)-.1 E(SafeFileEn)102 599.6 Q(vironment=)-.4 E F2(dir)A +F1 .022([no short name] If this option is set,)174 611.6 R F2(sendmail) +2.521 E F1 .021(will do a)2.521 F F2 -.15(ch)2.521 G -.45(ro).15 G(ot) +.45 E F1 .021(\(2\) call into the indi-)B(cated)174 623.6 Q F2(dir)2.832 +E F1 .333(ectory before doing an)B 2.833<798c>-.15 G .333(le writes.) +-2.833 F .333(If the \214le name speci\214ed by the user)5.333 F(be)174 +635.6 Q .588(gins with)-.15 F F2(dir)3.088 E F1 3.087(,t)C .587 +(hat partial path name will be stripped of)-3.087 F 3.087(fb)-.25 G .587 +(efore writing, so \(for)-3.087 F -.15(ex)174 647.6 S 2.224 +(ample\) if the SafeFileEn).15 F 2.224(vironment v)-.4 F 2.225 +(ariable is set to \231/safe\232 then aliases of)-.25 F 1.557(\231/safe\ +/logs/\214le\232 and \231/logs/\214le\232 actually indicate the same \ +\214le.)174 659.6 R(Additionally)6.556 E 4.056(,i)-.65 G(f)-4.056 E +(this option is set,)174 671.6 Q F2(sendmail)2.5 E F1(refuses to deli) +2.5 E -.15(ve)-.25 G 2.5(rt).15 G 2.5(os)-2.5 G(ymbolic links.)-2.5 E +.32 LW 76 681.2 72 681.2 DL 80 681.2 76 681.2 DL 84 681.2 80 681.2 DL 88 +681.2 84 681.2 DL 92 681.2 88 681.2 DL 96 681.2 92 681.2 DL 100 681.2 96 +681.2 DL 104 681.2 100 681.2 DL 108 681.2 104 681.2 DL 112 681.2 108 +681.2 DL 116 681.2 112 681.2 DL 120 681.2 116 681.2 DL 124 681.2 120 +681.2 DL 128 681.2 124 681.2 DL 132 681.2 128 681.2 DL 136 681.2 132 +681.2 DL 140 681.2 136 681.2 DL 144 681.2 140 681.2 DL 148 681.2 144 +681.2 DL 152 681.2 148 681.2 DL 156 681.2 152 681.2 DL 160 681.2 156 +681.2 DL 164 681.2 160 681.2 DL 168 681.2 164 681.2 DL 172 681.2 168 +681.2 DL 176 681.2 172 681.2 DL 180 681.2 176 681.2 DL 184 681.2 180 +681.2 DL 188 681.2 184 681.2 DL 192 681.2 188 681.2 DL 196 681.2 192 +681.2 DL 200 681.2 196 681.2 DL 204 681.2 200 681.2 DL 208 681.2 204 +681.2 DL 212 681.2 208 681.2 DL 216 681.2 212 681.2 DL/F5 5 +/Times-Roman@0 SF(21)93.6 691.6 Q/F6 8/Times-Roman@0 SF(When running as\ + a daemon, it changes to this user after accepting a connection b)3.2 I +(ut before reading an)-.16 E(y)-.12 E F4(SMTP)2 E F6(commands.)2 E 0 Cg +EP %%Page: 78 74 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d37382053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF .386<7265647563657320746865206c6f6164206f6e2074 -6865206f74686572206d616368696e652c2069742063616e206361757365206d61696c20 -746f2062652064656c617965642028666f722065>174 96 R<78616d2d>-.15 E .719 -<706c652c206966206f6e65>174 108 R/F2 10/Times-Italic@0 SF -<73656e646d61696c>3.219 E F1 .719<69732064656c69>3.219 F -.15<7665>-.25 -G .718<72696e6720612068756765206d6573736167652c206f74686572>.15 F F2 -<73656e646d61696c>3.218 E F1 3.218<7377>C<6f6e27>-3.318 E 3.218<7462> --.18 G 3.218<6561>-3.218 G<626c65>-3.218 E 1.542<746f2073656e642065>174 -120 R -.15<7665>-.25 G 4.042<6e73>.15 G 1.542 -<6d616c6c206d65737361676573292e>-4.042 F 1.543<416c736f2c20697420726571 -756972657320616e6f74686572208c6c652064657363726970746f722028666f72207468 -65>6.542 F .997<6c6f636b208c6c65292070657220636f6e6e656374696f6e2c20736f -20796f75206d6179206861>174 132 R 1.296 -.15<76652074>-.2 H 3.496<6f72> -.15 G .996<656475636520746865>-3.496 F F0 -<436f6e6e656374696f6e436163686553697a65>3.496 E F1 .234 -<6f7074696f6e20746f2061>174 144 R -.2<766f>-.2 G .234 -<69642072756e6e696e67206f7574206f6620706572>.2 F .235 -<2d70726f63657373208c6c652064657363726970746f72732e>-.2 F .235 -<526571756972657320746865>5.235 F F0<486f73745374612d>2.735 E -<747573446972>174 156 Q<6563746f7279>-.18 E F1<6f7074696f6e2e>2.5 E -<536d74704772656574696e674d6573736167653d>102 172.2 Q F2<6d65737361>A --.1<6765>-.1 G F1 .345<5b2465206d6163726f5d20546865206d6573736167652070 -72696e746564207768656e2074686520534d54502073657276>174 184.2 R .344 -<6572207374617274732075702e>-.15 F<446566>5.344 E .344 -<61756c747320746f2099246a>-.1 F -<53656e646d61696c2024762072656164792061742024629a2e>174 196.2 Q 22.28 -<536f6674426f756e6365204966>102 212.4 R .092<7365742c206973737565207465 -6d706f72617279206572726f727320283478792920696e7374656164206f66207065726d -616e656e74206572726f72732028357879292e>2.592 F .093 -<546869732063616e206265>5.093 F .127 -<75736566756c20647572696e672074657374696e67206f662061206e65>174 224.4 R -2.627<7763>-.25 G .127<6f6e8c6775726174696f6e20746f2061>-2.627 F -.2 -<766f>-.2 G .126 -<6964206572726f6e656f757320626f756e63696e67206f66206d61696c732e>.2 F -<53746174757346696c653d>102 240.6 Q F2<8c6c65>A F1 .523<5b535d204c6f6720 -73756d6d617279207374617469737469637320696e20746865206e616d6564>14.13 F -F2<8c6c65>3.024 E F1 5.524<2e49>C 3.024<666e>-5.524 G 3.024<6f8c>-3.024 -G .524<6c65206e616d652069732073706563698c65642c20227374617469732d>-3.024 -F .548<746963732220697320757365642e>174 252.6 R .547<4966206e6f74207365 -742c206e6f2073756d6d617279207374617469737469637320617265207361>5.548 F --.15<7665>-.2 G 3.047<642e2054686973>.15 F .547 -<8c6c6520646f6573206e6f742067726f>3.047 F<77>-.25 E<696e2073697a652e>174 -264.6 Q<49742063616e206265207072696e746564207573696e6720746865>5 E F2 -<6d61696c7374617473>2.5 E F1<2838292070726f6772616d2e>A 28.4 -<537570657253616665205b735d>102 280.8 R .364 -<54686973206f7074696f6e2063616e2062652073657420746f2054>2.864 F .364 -<7275652c2046>-.35 F .364<616c73652c20496e74657261637469>-.15 F -.15 -<7665>-.25 G 2.864<2c6f>.15 G 2.864<7250>-2.864 G<6f73744d696c746572> --2.864 E 5.364<2e49>-.55 G 2.864<6673>-5.364 G .364<657420746f2054> --2.864 F<7275652c>-.35 E F2<73656e646d61696c>174 292.8 Q F1 .117 -<77696c6c206265207375706572>2.617 F .116 -<2d73616665207768656e2072756e6e696e67207468696e67732c20692e652e2c20616c> --.2 F -.1<7761>-.1 G .116 -<797320696e7374616e746961746520746865207175657565>.1 F .117 -<8c6c652c2065>174 304.8 R -.15<7665>-.25 G 2.617<6e69>.15 G 2.617<6679> --2.617 G .117<6f752061726520676f696e6720746f20617474656d707420696d6d6564 -696174652064656c69>-2.617 F -.15<7665>-.25 G<7279>.15 E<2e>-.65 E F2 -<53656e646d61696c>5.118 E F1<616c>2.618 E -.1<7761>-.1 G .118 -<797320696e7374616e2d>.1 F .088<74696174657320746865207175657565208c6c65 -206265666f72652072657475726e696e6720636f6e74726f6c20746f2074686520636c69 -656e7420756e64657220616e>174 316.8 R 2.587<7963>-.15 G -<697263756d7374616e6365732e>-2.587 E 1.299 -<546869732073686f756c64207265616c6c79>174 328.8 R F2<616c77617973>3.799 -E F1 1.299<62652073657420746f2054>3.799 F 3.799<7275652e20546865>-.35 F -<496e74657261637469>3.799 E 1.599 -.15<76652076>-.25 H 1.3 -<616c756520686173206265656e20696e74726f2d>-.1 F .222<647563656420696e20 -382e313220616e642063616e206265207573656420746f6765746865722077697468>174 -340.8 R F0<44656c69>2.721 E -.1<7665>-.1 G<72794d6f64653d69>.1 E F1 -5.221<2e49>C 2.721<7473>-5.221 G .221<6b69707320736f6d652073796e2d> --2.721 F 1.532 -<6368726f6e697a6174696f6e2063616c6c7320776869636820617265206566>174 -352.8 R<6665637469>-.25 E -.15<7665>-.25 G 1.533 -<6c7920646f75626c656420696e2074686520636f64652065>.15 F -.15<7865>-.15 G -1.533<637574696f6e207061746820666f72>.15 F .336<74686973206d6f64652e>174 -364.8 R .336<49662073657420746f20506f73744d696c746572>5.336 F<2c>-.4 E -F2<73656e646d61696c>2.836 E F1 .336<6465666572732073796e6368726f6e697a69 -6e6720746865207175657565208c6c6520756e74696c>2.836 F<616e>174 376.8 Q -3.787<796d>-.15 G 1.287<696c74657273206861>-3.787 F 1.587 -.15<76652073> --.2 H 1.287 -<69676e616c656420616363657074616e6365206f6620746865206d6573736167652e> -.15 F 1.288<506f73744d696c7465722069732075736566756c206f6e6c79>6.287 F -<7768656e>174 388.8 Q F2<73656e646d61696c>3.822 E F1 1.322 -<69732072756e6e696e6720617320616e20534d54502073657276>3.822 F 1.321<6572 -3b20696e20616c6c206f7468657220736974756174696f6e732069742061637473207468 -65>-.15 F<73616d652061732054>174 400.8 Q<7275652e>-.35 E 6.16 -<544c535372764f7074696f6e73205b6e6f>102 417 R .238<73686f7274206e616d65 -5d204c697374206f66206f7074696f6e7320666f7220534d5450205354>2.737 F<4152> --.93 E .238<54544c5320666f72207468652073657276>-.6 F .238 -<657220636f6e73697374696e67206f66>-.15 F .18 -<73696e676c652063686172616374657273207769746820696e74657276>174 429 R -.18<656e696e67207768697465207370616365206f7220636f6d6d61732e>-.15 F .18 -<546865208d61672060>5.18 F<605627>-.74 E 2.68<2764>-.74 G -<697361626c6573>-2.68 E .51<636c69656e742076>174 441 R .511<6572698c6361 -74696f6e2c20616e642068656e6365206974206973206e6f7420706f737369626c652074 -6f20757365206120636c69656e742063657274698c6361746520666f722072656c61792d> --.15 F 3.919<696e672e20546865>174 453 R 1.419<8d61672060>3.919 F<604327> --.74 E 3.919<2772>-.74 G<656d6f>-3.919 E -.15<7665>-.15 G 3.919<7374>.15 -G 1.419<686520726571756972656d656e7420666f722074686520544c532073657276> --3.919 F 1.418<657220746f206861>-.15 F 1.718 -.15<766520612063>-.2 H -<6572742e>.15 E .386<54686973206f6e6c792077>174 465 R .386 -<6f726b7320756e6465722076>-.1 F .386<6572792073706563698c63206369726375 -6d7374616e63657320616e642073686f756c64206f6e6c79206265207573656420696620 -746865>-.15 F<636f6e73657175656e6365732061726520756e64657273746f6f642c20 -652e672e2c20636c69656e7473206d6179206e6f742077>174 477 Q -<6f726b207769746820612073657276>-.1 E<6572207573696e6720746869732e>-.15 -E -.7<5465>102 493.2 S<6d7046696c654d6f64653d>.7 E F2<6d6f6465>A F1 .062 -<5b465d20546865208c6c65206d6f646520666f72207472616e736372697074208c6c65 -732c208c6c657320746f207768696368>174 505.2 R F2<73656e646d61696c>2.561 E -F1<64656c69>2.561 E -.15<7665>-.25 G .061<7273206469726563746c79>.15 F -2.561<2c8c>-.65 G<6c6573>-2.561 E .61<696e20746865>174 517.2 R F0 -<486f7374537461747573446972>3.11 E<6563746f7279>-.18 E F1 3.11<2c61>C -<6e64>-3.11 E F0<53746174757346696c65>3.11 E F1 5.61<2e49>C 3.11<7469> --5.61 G 3.11<7369>-3.11 G .61 -<6e74657270726574656420696e206f6374616c20627920646566>-3.11 F -<61756c742e>-.1 E<446566>174 529.2 Q<61756c747320746f20303630302e>-.1 E --.35<5469>102 545.4 S<6d656f75742e>.35 E F2<74797065>A F1<3d>A F2 -<74696d656f7574>1.666 E F1 .417<5b723b2073756273756d6573206f6c642054206f -7074696f6e2061732077656c6c5d205365742074696d656f75742076>174 557.4 R -2.917<616c7565732e2046>-.25 F .417 -<6f72206d6f726520696e666f726d6174696f6e2c20736565>-.15 F -<73656374696f6e20342e312e>174 569.4 Q -.35<5469>102 585.6 S -<6d655a6f6e65537065633d>.35 E F2<747a696e666f>A F1 .218 -<5b745d2053657420746865206c6f63616c2074696d65207a6f6e6520696e666f20746f> -174 597.6 R F2<747a696e666f>2.718 E F1 2.718<8a66>2.718 G .218<6f722065> --2.718 F .218<78616d706c652c2099505354385044549a2e>-.15 F -<41637475616c6c79>5.218 E 2.718<2c69>-.65 G<66>-2.718 E 1.346 -<74686973206973206e6f74207365742c2074686520545a20656e>174 609.6 R 1.346 -<7669726f6e6d656e742076>-.4 F 1.346<61726961626c6520697320636c6561726564 -2028736f207468652073797374656d20646566>-.25 F 1.345<61756c74206973>-.1 F -.208<75736564293b206966207365742062>174 621.6 R .208 -<7574206e756c6c2c20746865207573657227>-.2 F 2.708<7354>-.55 G 2.708 -<5a76>-2.708 G .208<61726961626c6520697320757365642c20616e64206966207365 -7420616e64206e6f6e2d6e756c6c2074686520545a>-2.958 F -.25<7661>174 633.6 -S<726961626c652069732073657420746f20746869732076>.25 E<616c75652e>-.25 E --.35<5472>102 649.8 S<7573746564557365723d>.35 E F2<75736572>A F1 3.753 -<5b6e6f2073686f7274206e616d655d20546865>.06 F F2<75736572>6.253 E F1 -3.752 -<706172616d65746572206d617920626520612075736572206e616d6520286c6f6f6b> -6.252 F 3.752<656420757020696e>-.1 F F2<2f6574632f706173737764>174 661.8 -Q F1 2.742<296f>C 2.742<72616e>-2.742 G .242 -<756d6572696320757365722069642e>-2.742 F -.35<5472>5.242 G .242 -<7573746564207573657220666f72208c6c65206f>.35 F .243 -<776e65727368697020616e64207374617274696e6720746865>-.25 F 3.78 -<6461656d6f6e2e204966>174 673.8 R 1.279<7365742c2067656e6572617465642061 -6c6961732064617461626173657320616e642074686520636f6e74726f6c20736f636b> -3.779 F 1.279<65742028696620636f6e8c677572656429>-.1 F -<77696c6c206175746f6d61746963616c6c79206265206f>174 685.8 Q -<776e656420627920746869732075736572>-.25 E<2e>-.55 E -.35<5472>102 702 S -5.96<794e756c6c4d584c697374205b775d>.35 F .114<496620746869732073797374 -656d206973207468652099626573749a2028746861742069732c206c6f>2.613 F .114 -<7765737420707265666572656e636529204d5820666f722061206769>-.25 F -.15 -<7665>-.25 G 2.614<6e68>.15 G .114<6f73742c20697473>-2.614 F 1.168<636f -6e8c6775726174696f6e2072756c65732073686f756c64206e6f726d616c6c7920646574 -656374207468697320736974756174696f6e20616e64207472656174207468617420636f -6e646974696f6e>174 714 R 0 Cg EP +/F0 10/Times-Bold@0 SF 193.36(SMM:08-78 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF(Sa)102 96 +Q -.15(ve)-.2 G 10.41(FromLine [f]).15 F(Sa)4.492 E 2.292 -.15(ve U)-.2 +H 1.992(NIX-style \231From\232 lines at the front of headers.).15 F +1.993(Normally the)6.993 F 4.493(ya)-.15 G(re)-4.493 E +(assumed redundant and discarded.)174 108 Q .62(SendMimeErrors [j])102 +124.2 R .373(If set, send error messages in MIME format \(see RFC 2045 \ +and RFC 1344 for)2.874 F 2.914(details\). If)174 136.2 R(disabled,)2.914 +E/F2 10/Times-Italic@0 SF(sendmail)2.914 E F1 .415 +(will not return the DSN k)2.914 F -.15(ey)-.1 G -.1(wo).15 G .415 +(rd in response to an).1 F 1.731(EHLO and will not do Deli)174 148.2 R +-.15(ve)-.25 G 1.731 +(ry Status Noti\214cation processing as described in).15 F(RFC 1891.)174 +160.2 Q(Serv)102 176.4 Q 10.77(erCertFile [no)-.15 F .581 +(short name] File containing the certi\214cate of the serv)3.08 F(er) +-.15 E 3.081(,i)-.4 G .581(.e., this certi\214cate is)-3.081 F +(used when sendmail acts as serv)174 188.4 Q(er \(used for ST)-.15 E(AR) +-.93 E(TTLS\).)-.6 E(Serv)102 204.6 Q(erK)-.15 E -.15(ey)-.25 G 11.73 +(File [no).15 F .543(short name] File containing the pri)3.043 F -.25 +(va)-.25 G .542(te k).25 F .842 -.15(ey b)-.1 H .542 +(elonging to the serv).15 F .542(er certi\214cate)-.15 F(\(used for ST) +174 216.6 Q(AR)-.93 E(TTLS\).)-.6 E(Serv)102 232.8 Q(erSSLOptions)-.15 E +3.348(As)174 244.8 S .849 +(pace or comma separated list of SSL related options for the serv)-3.348 +F .849(er side.)-.15 F(See)5.849 E F2(SSL_CTX_set_options)174 256.8 Q F1 +.961(\(3\) for a list; the a)B -.25(va)-.2 G .961(ilable v).25 F .961 +(alues depend on the OpenSSL)-.25 F -.15(ve)174 268.8 S 5.628(rsion ag) +.15 F 5.628(ainst which)-.05 F F2(sendmail)8.129 E F1 5.629 +(is compiled.)8.129 F 5.629(By def)10.629 F(ault,)-.1 E F2(SSL_OP_ALL) +8.129 E(-SSL_OP_TLSEXT_P)174 280.8 Q(ADDING)-.9 E F1 .938 +(are used \(if those options are a)3.438 F -.25(va)-.2 G 3.437 +(ilable\). Options).25 F .28 +(can be cleared by preceding them with a minus sign.)174 292.8 R .281 +(It is also possible to specify)5.281 F(numerical v)174 304.8 Q +(alues, e.g.,)-.25 E F0(-0x0010)2.5 E F1(.)A(ServiceSwitchFile=)102 321 +Q F2(\214lename)A F1 1.533([no short name] If your host operating syste\ +m has a service switch abstraction)174 333 R .003(\(e.g., /etc/nsswitch\ +.conf on Solaris or /etc/svc.conf on Ultrix and DEC OSF/1\) that)174 345 +R .814(service will be consulted and this option is ignored.)174 357 R +.814(Otherwise, this is the name)5.814 F 1.082(of a \214le that pro)174 +369 R 1.082 +(vides the list of methods used to implement particular services.)-.15 F +1.069(The syntax is a series of lines, each of which is a sequence of w) +174 381 R 3.569(ords. The)-.1 F(\214rst)3.569 E -.1(wo)174 393 S 1.363 +(rd is the service name, and follo).1 F 1.363(wing w)-.25 F 1.364 +(ords are service types.)-.1 F 1.364(The services)6.364 F(that)174 405 Q +F2(sendmail)4.11 E F1 1.61 +(consults directly are \231aliases\232 and \231hosts.)4.11 F 6.61<9a53> +-.7 G 1.61(ervice types can be)-6.61 F 1.754(\231dns\232, \231nis\232, \ +\231nisplus\232, or \231\214les\232 \(with the ca)174 417 R -.15(ve)-.2 +G 1.755(at that the appropriate support).15 F .791 +(must be compiled in before the service can be referenced\).)174 429 R +.79(If ServiceSwitchFile)5.791 F .925(is not speci\214ed, it def)174 441 +R .925(aults to /etc/mail/service.switch.)-.1 F .925 +(If that \214le does not e)5.925 F(xist,)-.15 E(the def)174 453 Q +(ault switch is:)-.1 E 54.71(aliases \214les)214 469.2 R 60.81 +(hosts dns)214 481.2 R(nis \214les)2.5 E(The def)174 497.4 Q +(ault \214le is \231/etc/mail/service.switch\232.)-.1 E(Se)102 513.6 Q +-.15(ve)-.25 G 12.12(nBitInput [7]).15 F .322(Strip input to se)2.822 F +-.15(ve)-.25 G 2.822(nb).15 G .321 +(its for compatibility with old systems.)-2.822 F .321(This shouldn') +5.321 F 2.821(tb)-.18 G(e)-2.821 E(necessary)174 525.6 Q(.)-.65 E +(SharedMemoryK)102 541.8 Q -.15(ey)-.25 G .744([no short name] K)174 +553.8 R 1.044 -.15(ey t)-.25 H 3.244(ou).15 G .745 +(se for shared memory se)-3.244 F .745 +(gment; if not set \(or 0\), shared)-.15 F 1.16 +(memory will not be used.)174 565.8 R 1.159(If set to -1)6.16 F F2 +(sendmail)3.659 E F1 1.159(can select a k)3.659 F 1.459 -.15(ey i)-.1 H +1.159(tself pro).15 F(vided)-.15 E .658(that also)174 577.8 R F0(Shar) +3.158 E(edMemoryK)-.18 E(eyFile)-.25 E F1 .658(is set.)3.158 F .658 +(Requires support for shared memory to)5.658 F 1.413(be compiled into) +174 589.8 R F2(sendmail)3.913 E F1 6.413(.I)C 3.912(ft)-6.413 G 1.412 +(his option is set,)-3.912 F F2(sendmail)3.912 E F1 1.412 +(can share some data)3.912 F .307(between dif)174 601.8 R .307 +(ferent instances.)-.25 F -.15(Fo)5.307 G 2.807(re).15 G .308 +(xample, the number of entries in a queue direc-)-2.957 F .033 +(tory or the a)174 613.8 R -.25(va)-.2 G .032 +(ilable space in a \214le system.).25 F .032(This allo)5.032 F .032 +(ws for more ef)-.25 F .032(\214cient program)-.25 F -.15(exe)174 625.8 +S .09(cution, since only one process needs to update the data instead o\ +f each indi).15 F(vid-)-.25 E(ual process g)174 637.8 Q +(athering the data each time it is required.)-.05 E(SharedMemoryK)102 +654 Q -.15(ey)-.25 G(File).15 E .087([no short name] If)174 666 R F0 +(Shar)2.587 E(edMemoryK)-.18 E(ey)-.25 E F1 .086 +(is set to -1 then the automatically selected)2.587 F(shared memory k) +174 678 Q .3 -.15(ey w)-.1 H(ill be stored in the speci\214ed \214le.) +.15 E(SingleLineFromHeader)102 694.2 Q .958 +([no short name] If set, From: lines that ha)174 706.2 R 1.259 -.15 +(ve e)-.2 H .959(mbedded ne).15 F .959(wlines are unwrapped)-.25 F .243 +(onto one line.)174 718.2 R .243 +(This is to get around a botch in Lotus Notes that apparently cannot) +5.243 F 0 Cg EP %%Page: 79 75 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3739>195.86 E -/F1 10/Times-Roman@0 SF .257<7370656369616c6c7920627920666f7277>174 96 R -.258<617264696e6720746865206d61696c20746f2061205555435020666565642c2074 -72656174696e67206974206173206c6f63616c2c206f72207768617465>-.1 F -.15 -<7665>-.25 G -.55<722e>.15 G<486f>174 108 Q<7765>-.25 E -.15<7665>-.25 G -1.686 -.4<722c2069>.15 H 3.386<6e73>.4 G .886 -<6f6d6520636173657320287375636820617320496e7465726e6574208c7265>-3.386 F --.1<7761>-.25 G .886<6c6c732920796f75206d61792077>.1 F .885 -<616e7420746f2074727920746f20636f6e2d>-.1 F .07<6e656374206469726563746c -7920746f207468617420686f73742061732074686f75676820697420686164206e6f204d -58207265636f72647320617420616c6c2e>174 120 R .07 -<53657474696e672074686973206f7074696f6e>5.07 F<636175736573>174 132 Q/F2 -10/Times-Italic@0 SF<73656e646d61696c>3.014 E F1 .514 -<746f2074727920746869732e>3.014 F .514<54686520646f>5.514 F .514<776e73 -6964652069732074686174206572726f727320696e20796f757220636f6e8c6775726174 -696f6e20617265>-.25 F<6c696b>174 144 Q 2.116 -<656c7920746f20626520646961676e6f7365642061732099686f737420756e6b6e6f> --.1 F 2.116<776e9a206f7220996d6573736167652074696d6564206f75749a20696e73 -74656164206f66>-.25 F -<736f6d657468696e67206d6f7265206d65616e696e6766756c2e>174 156 Q -<54686973206f7074696f6e206973206469737265636f6d6d656e6465642e>5 E -<556e697846726f6d4c696e653d>102 172.2 Q F2<6672>A<6f6d6c696e65>-.45 E F1 -.236<5b246c206d6163726f5d2044658c6e65732074686520666f726d61742075736564 -207768656e>174 184.2 R F2<73656e646d61696c>2.736 E F1 .236 -<6d75737420616464206120554e49582d7374796c652046726f6d5f>2.736 F 1.324 -<6c696e652028746861742069732c2061206c696e65206265>174 196.2 R 1.325 -<67696e6e696e67209946726f6d3c73706163653e757365729a292e>-.15 F<446566> -6.325 E 1.325<61756c747320746f209946726f6d202467>-.1 F<24649a2e>6.325 E -<446f6e27>174 208.2 Q 2.646<7463>-.18 G .146<68616e6765207468697320756e -6c65737320796f75722073797374656d2075736573206120646966>-2.646 F .146 -<666572656e7420554e4958206d61696c626f7820666f726d6174202876>-.25 F -<657279>-.15 E<756e6c696b>174 220.2 Q<656c79292e>-.1 E -<556e7361666547726f7570577269746573>102 236.4 Q .085 -<5b6e6f2073686f7274206e616d655d204966207365742028646566>174 248.4 R .085 -<61756c74292c203a696e636c7564653a20616e64202e666f7277>-.1 F .086 -<617264208c6c65732074686174206172652067726f7570207772697461626c65>-.1 F -.655<61726520636f6e736964657265642099756e736166659a2c20746861742069732c -20746865>174 260.4 R 3.155<7963>-.15 G .654<616e6e6f74207265666572656e63 -652070726f6772616d73206f72207772697465206469726563746c79>-3.155 F .536 -<746f208c6c65732e>174 272.4 R -.8<576f>5.536 G .536 -<726c64207772697461626c65203a696e636c7564653a20616e64202e666f7277>.8 F -.537<617264208c6c65732061726520616c>-.1 F -.1<7761>-.1 G .537 -<797320756e736166652e>.1 F .537<4e6f74653a20757365>5.537 F F0 -<446f6e74426c616d6553656e646d61696c>174 284.4 Q F1 -<696e73746561643b2074686973206f7074696f6e20697320646570726563617465642e> -2.5 E<557365436f6d7072657373656449507636416464726573736573>102 300.6 Q -.09<5b6e6f2073686f7274206e616d655d204966207365742c2074686520636f6d707265 -7373656420666f726d6174206f662049507636206164647265737365732c207375636820 -617320495056363a3a3a312c>174 312.6 R<77696c6c20626520757365642c20696e73 -74656164206f662074686520756e636f6d7072657373656420666f726d61742c20737563 -6820617320495076363a303a303a303a303a303a303a303a312e>174 324.6 Q -<5573654572726f727354>102 340.8 Q 21.15<6f5b>-.8 G .826 -<6c5d20496620746865726520697320616e20994572726f72732d54>-21.15 F .826 -<6f3a9a20686561646572>-.8 F 3.326<2c73>-.4 G .826<656e64206572726f72206d -6573736167657320746f2074686520616464726573736573206c6973746564>-3.326 F -3.135<74686572652e20546865>174 352.8 R 3.135<796e>-.15 G .635 -<6f726d616c6c7920676f20746f2074686520656e>-3.135 F -.15<7665>-.4 G .635 -<6c6f70652073656e646572>.15 F 5.635<2e55>-.55 G .634 -<7365206f662074686973206f7074696f6e20636175736573>-5.635 F F2 -<73656e642d>3.134 E<6d61696c>174 364.8 Q F1 -<746f2076696f6c6174652052464320313132332e>2.5 E<54686973206f7074696f6e20 -6973206469737265636f6d6d656e64656420616e6420646570726563617465642e>5 E -<557365724461746162617365537065633d>102 381 Q F2<75646273706563>A F1 -<5b555d2054686520757365722064617461626173652073706563698c636174696f6e2e> -174 393 Q -1.11<5665>102 409.2 S 37.29<72626f7365205b765d>1.11 F .56 -<52756e20696e2076>3.06 F .561<6572626f7365206d6f64652e>-.15 F .561 -<49662074686973206973207365742c>5.561 F F2<73656e646d61696c>3.061 E F1 -.561<61646a75737473206f7074696f6e73>3.061 F F0<486f6c64457870656e7369> -3.061 E -.1<7665>-.1 G F1<286f6c64>174 421.2 Q F0<63>2.636 E F1 2.636 -<2961>C<6e64>-2.636 E F0<44656c69>2.636 E -.1<7665>-.1 G<72794d6f6465>.1 -E F1<286f6c64>2.636 E F0<64>2.636 E F1 2.635<2973>C 2.635<6f74>-2.635 G -.135<68617420616c6c206d61696c2069732064656c69>-2.635 F -.15<7665>-.25 G -.135<72656420636f6d706c6574656c7920696e20612073696e2d>.15 F 1.244<676c65 -206a6f6220736f207468617420796f752063616e207365652074686520656e7469726520 -64656c69>174 433.2 R -.15<7665>-.25 G 1.244<72792070726f636573732e>.15 F -<4f7074696f6e>6.244 E F0 -1<5665>3.744 G<72626f7365>1 E F1<73686f756c64> -3.744 E F2<6e65>174 445.2 Q<766572>-.15 E F1 1.269<62652073657420696e20 -74686520636f6e8c6775726174696f6e208c6c653b20697420697320696e74656e646564 -20666f7220636f6d6d616e64206c696e6520757365206f6e6c79>3.77 F<2e>-.65 E -.435<4e6f746520746861742074686520757365206f66206f7074696f6e>174 457.2 R -F0 -1<5665>2.935 G<72626f7365>1 E F1 .435<63616e206361757365206175746865 -6e7469636174696f6e20696e666f726d6174696f6e20746f206c65616b2c>2.935 F -.015<696620796f752075736520612073656e646d61696c20636c69656e7420746f2061 -757468656e74696361746520746f20612073657276>174 469.2 R<6572>-.15 E 5.015 -<2e49>-.55 G 2.515<6674>-5.015 G .015 -<68652061757468656e7469636174696f6e206d6563682d>-2.515 F .935 -<616e69736d207573657320706c61696e207465>174 481.2 R .936 -<7874207061737377>-.15 F .936<6f726473202861732077697468204c4f47494e206f -7220504c41494e292c207468656e20746865207061737377>-.1 F<6f7264>-.1 E -1.418<636f756c6420626520636f6d70726f6d697365642e>174 493.2 R 3.017 -.8 -<546f2061>6.418 H -.2<766f>.6 G 1.417<696420746869732c20646f206e6f742069 -6e7374616c6c2073656e646d61696c207365742d75736572>.2 F 1.417 -<2d494420726f6f742c>-.2 F<616e642064697361626c6520746865>174 505.2 Q F0 -<56455242>2.5 E F1 -<534d545020636f6d6d616e6420776974682061207375697461626c65>2.5 E F0 -<507269>2.5 E -.1<7661>-.1 G<63794f7074696f6e73>.1 E F1 -<73657474696e672e>2.5 E<5873637269707446696c65427566>102 521.4 Q -<66657253697a653d>-.25 E F2<746872>A<6573686f6c64>-.37 E F1 1.1 -<5b6e6f2073686f7274206e616d655d2053657420746865>174 533.4 R F2<746872> -3.601 E<6573686f6c64>-.37 E F1 3.601<2c69>C 3.601<6e62>-3.601 G 1.101<79 -7465732c206265666f72652061206d656d6f72792d626173656420717565756520747261 -6e2d>-3.601 F -<736372697074208c6c65206265636f6d6573206469736b2d62617365642e>174 545.4 -Q<54686520646566>5 E<61756c7420697320343039362062797465732e>-.1 E .109< -416c6c206f7074696f6e732063616e2062652073706563698c6564206f6e207468652063 -6f6d6d616e64206c696e65207573696e672074686520ad4f206f7220ad6f208d61672c20 -62>102 561.6 R .108<7574206d6f73742077696c6c206361757365>-.2 F F2 -<73656e642d>2.608 E<6d61696c>102 573.6 Q F1 .663 -<746f2072656c696e717569736820697473207365742d75736572>3.163 F .663 -<2d4944207065726d697373696f6e732e>-.2 F .664<546865206f7074696f6e732074 -6861742077696c6c206e6f74206361757365207468697320617265205365>5.663 F --.15<7665>-.25 G<6e426974496e2d>.15 E 1.319<707574205b375d2c204569676874 -4269744d6f6465205b385d2c204d696e46726565426c6f636b73205b625d2c2043686563 -6b706f696e74496e74657276>102 585.6 R 1.319<616c205b435d2c2044656c69>-.25 -F -.15<7665>-.25 G 1.319<72794d6f6465205b645d2c204572726f72>.15 F<2d>-.2 -E .042<4d6f6465205b655d2c2049676e6f7265446f7473205b695d2c2053656e644d69 -6d654572726f7273205b6a5d2c204c6f674c65>102 597.6 R -.15<7665>-.25 G -2.543<6c5b>.15 G .043<4c5d2c204d6554>-2.543 F .043 -<6f6f205b6d5d2c204f6c645374796c6548656164657273205b6f5d2c205072692d>-.8 -F -.25<7661>102 609.6 S -.15<6379>.25 G .303 -<4f7074696f6e73205b705d2c20537570657253616665205b735d2c2056>.15 F .302 -<6572626f7365205b765d2c205175657565536f72744f72646572>-1.11 F 2.802 -<2c4d>-.4 G .302<696e51756575654167652c20446566>-2.802 F .302 -<61756c74436861725365742c204469616c>-.1 F<44656c6179>102 621.6 Q 7.312 -<2c4e>-.65 G 4.812 -<6f526563697069656e74416374696f6e2c20436f6c6f6e4f6b496e41646472>-7.312 F -7.312<2c4d>-.4 G 4.812<6178517565756552756e53697a652c2053696e676c654c69 -6e6546726f6d486561646572>-7.312 F 7.312<2c61>-.4 G<6e64>-7.312 E -<416c6c6f>102 633.6 Q 3.921<77426f67757348454c4f2e2041637475616c6c79> --.25 F 3.921<2c50>-.65 G<7269>-3.921 E -.25<7661>-.25 G -.15<6379>.25 G -1.421<4f7074696f6e73205b705d206769>.15 F -.15<7665>-.25 G 3.921<6e6f>.15 -G 3.921<6e74>-3.921 G 1.421 -<686520636f6d6d616e64206c696e652061726520616464656420746f2074686f7365> --3.921 F 1.697<616c72656164792073706563698c656420696e20746865>102 645.6 -R F2<73656e646d61696c2e6366>4.197 E F1 1.697 -<8c6c652c20692e652e2c20746865>4.197 F 4.197<7963>-.15 G<616e27>-4.197 E -4.197<7462>-.18 G 4.197<6572>-4.197 G 4.198<657365742e20416c736f2c> --4.197 F 4.198<4d28>4.198 G 1.698<64658c6e65206d6163726f29207768656e> --4.198 F<64658c6e696e67207468652072206f722073206d6163726f7320697320616c -736f20636f6e736964657265642099736166659a2e>102 657.6 Q F0 2.5 -<352e372e2050>87 681.6 R 2.5<8a50>2.5 G -.18<7265>-2.5 G -<636564656e63652044658c6e6974696f6e73>.18 E F1 -1.11<5661>127 697.8 S -.164<6c75657320666f72207468652099507265636564656e63653a9a208c656c64206d -61792062652064658c6e6564207573696e6720746865>1.11 F F0<50>2.664 E F1 -.164<636f6e74726f6c206c696e652e>2.664 F .163 -<5468652073796e746178206f662074686973>5.163 F<8c656c642069733a>102 709.8 -Q 0 Cg EP +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-79)195.86 E/F1 10/Times-Roman@0 SF(understand le)174 96 Q -.05 +(ga)-.15 G(lly wrapped RFC 822 headers.).05 E(SingleThreadDeli)102 112.2 +Q -.15(ve)-.25 G(ry).15 E .333 +([no short name] If set, a client machine will ne)174 124.2 R -.15(ve) +-.25 G 2.833(rt).15 G .334(ry to open tw)-2.833 F 2.834(oS)-.1 G .334 +(MTP connec-)-2.834 F 1.712(tions to a single serv)174 136.2 R 1.712 +(er machine at the same time, e)-.15 F -.15(ve)-.25 G 4.211(ni).15 G +4.211(nd)-4.211 G(if)-4.211 E 1.711(ferent processes.)-.25 F .952 +(That is, if another)174 148.2 R/F2 10/Times-Italic@0 SF(sendmail)3.452 +E F1 .952(is already talking to some host a ne)3.452 F(w)-.25 E F2 +(sendmail)3.453 E F1(will)3.453 E 2.388(not open another connection.)174 +160.2 R 2.387(This property is of mix)7.387 F 2.387(ed v)-.15 F 2.387 +(alue; although this)-.25 F .386(reduces the load on the other machine,\ + it can cause mail to be delayed \(for e)174 172.2 R(xam-)-.15 E .719 +(ple, if one)174 184.2 R F2(sendmail)3.219 E F1 .719(is deli)3.219 F +-.15(ve)-.25 G .718(ring a huge message, other).15 F F2(sendmail)3.218 E +F1 3.218(sw)C(on')-3.318 E 3.218(tb)-.18 G 3.218(ea)-3.218 G(ble)-3.218 +E 1.542(to send e)174 196.2 R -.15(ve)-.25 G 4.042(ns).15 G 1.542 +(mall messages\).)-4.042 F 1.543 +(Also, it requires another \214le descriptor \(for the)6.542 F .997 +(lock \214le\) per connection, so you may ha)174 208.2 R 1.296 -.15 +(ve t)-.2 H 3.496(or).15 G .996(educe the)-3.496 F F0 +(ConnectionCacheSize)3.496 E F1 .234(option to a)174 220.2 R -.2(vo)-.2 +G .234(id running out of per).2 F .235(-process \214le descriptors.)-.2 +F .235(Requires the)5.235 F F0(HostSta-)2.735 E(tusDir)174 232.2 Q +(ectory)-.18 E F1(option.)2.5 E(SmtpGreetingMessage=)102 248.4 Q F2 +(messa)A -.1(ge)-.1 G F1 .345 +([$e macro] The message printed when the SMTP serv)174 260.4 R .344 +(er starts up.)-.15 F(Def)5.344 E .344(aults to \231$j)-.1 F +(Sendmail $v ready at $b\232.)174 272.4 Q 22.28(SoftBounce If)102 288.6 +R .092(set, issue temporary errors \(4xy\) instead of permanent errors \ +\(5xy\).)2.592 F .093(This can be)5.093 F .127 +(useful during testing of a ne)174 300.6 R 2.627(wc)-.25 G .127 +(on\214guration to a)-2.627 F -.2(vo)-.2 G .126 +(id erroneous bouncing of mails.).2 F 23.94(SSLEngine Name)102 316.8 R +1.004(of SSL engine to use.)3.503 F 1.004(The a)6.004 F -.25(va)-.2 G +1.004(ilable v).25 F 1.004(alues depend on the OpenSSL v)-.25 F(er)-.15 +E(-)-.2 E(sion ag)174 328.8 Q(ainst which)-.05 E F2(sendmail)2.5 E F1 +(is compiled, see)2.5 E(openssl engine -v)214 345 Q +(for some information.)174 361.2 Q(SSLEngineP)102 377.4 Q 6.31(ath P) +-.15 F .632(ath to dynamic library for SSL engine.)-.15 F .631 +(This option is only useful if)5.632 F F2(SSLEngine)3.131 E F1 .484 +(is set.)174 389.4 R .484(If both are set, the engine will be loaded dy\ +namically at runtime using the)5.484 F .164 +(concatenation of the path, a slash "/", the string "lib", the v)174 +401.4 R .164(alue of)-.25 F F2(SSLEngine)2.664 E F1 2.664(,a)C(nd)-2.664 +E .874(the string ".so".)174 413.4 R .874(If only)5.874 F F2(SSLEngine) +3.374 E F1 .875(is set then the static v)3.375 F .875 +(ersion of the engine is)-.15 F(used.)174 425.4 Q(StatusFile=)102 441.6 +Q F2(\214le)A F1 .524([S] Log summary statistics in the named)14.13 F F2 +(\214le)3.024 E F1 5.524(.I)C 3.023(fn)-5.524 G 3.023<6f8c>-3.023 G .523 +(le name is speci\214ed, "statis-)-3.023 F .547(tics" is used.)174 453.6 +R .547(If not set, no summary statistics are sa)5.547 F -.15(ve)-.2 G +3.048(d. This).15 F .548(\214le does not gro)3.048 F(w)-.25 E(in size.) +174 465.6 Q(It can be printed using the)5 E F2(mailstats)2.5 E F1 +(\(8\) program.)A 28.4(SuperSafe [s])102 481.8 R .364 +(This option can be set to T)2.864 F .364(rue, F)-.35 F .364 +(alse, Interacti)-.15 F -.15(ve)-.25 G 2.864(,o).15 G 2.864(rP)-2.864 G +(ostMilter)-2.864 E 5.364(.I)-.55 G 2.864(fs)-5.364 G .364(et to T) +-2.864 F(rue,)-.35 E F2(sendmail)174 493.8 Q F1 .116(will be super)2.616 +F .116(-safe when running things, i.e., al)-.2 F -.1(wa)-.1 G .117 +(ys instantiate the queue).1 F .118(\214le, e)174 505.8 R -.15(ve)-.25 G +2.618(ni).15 G 2.618(fy)-2.618 G .118 +(ou are going to attempt immediate deli)-2.618 F -.15(ve)-.25 G(ry).15 E +(.)-.65 E F2(Sendmail)5.117 E F1(al)2.617 E -.1(wa)-.1 G .117 +(ys instan-).1 F .087(tiates the queue \214le before returning control \ +to the client under an)174 517.8 R 2.588(yc)-.15 G(ircumstances.)-2.588 +E 1.3(This should really)174 529.8 R F2(always)3.8 E F1 1.299 +(be set to T)3.799 F 3.799(rue. The)-.35 F(Interacti)3.799 E 1.599 -.15 +(ve v)-.25 H 1.299(alue has been intro-)-.1 F .221 +(duced in 8.12 and can be used together with)174 541.8 R F0(Deli)2.722 E +-.1(ve)-.1 G(ryMode=i).1 E F1 5.222(.I)C 2.722(ts)-5.222 G .222 +(kips some syn-)-2.722 F 1.533(chronization calls which are ef)174 553.8 +R(fecti)-.25 E -.15(ve)-.25 G 1.533(ly doubled in the code e).15 F -.15 +(xe)-.15 G 1.532(cution path for).15 F .335(this mode.)174 565.8 R .336 +(If set to PostMilter)5.335 F(,)-.4 E F2(sendmail)2.836 E F1 .336 +(defers synchronizing the queue \214le until)2.836 F(an)174 577.8 Q +3.788(ym)-.15 G 1.288(ilters ha)-3.788 F 1.588 -.15(ve s)-.2 H 1.287 +(ignaled acceptance of the message.).15 F 1.287 +(PostMilter is useful only)6.287 F(when)174 589.8 Q F2(sendmail)3.821 E +F1 1.321(is running as an SMTP serv)3.821 F 1.322 +(er; in all other situations it acts the)-.15 F(same as T)174 601.8 Q +(rue.)-.35 E(TLSF)102 618 Q(allbacktoClear)-.15 E .716 +([no short name] If set,)174 630 R F2(sendmail)3.216 E F1 .715 +(immediately tries an outbound connection ag)3.215 F(ain)-.05 E .61 +(without ST)174 642 R(AR)-.93 E .61(TTLS after a TLS handshak)-.6 F 3.11 +(ef)-.1 G 3.11(ailure. Note:)-3.21 F .61(this applies to all con-)3.11 F +2.677(nections e)174 654 R -.15(ve)-.25 G 5.177(ni).15 G 5.177(fT)-5.177 +G 2.676(LS speci\214c requirements are set \(see rulesets)-5.177 F F2 +(tls_r)5.176 E(cpt)-.37 E F1(and)5.176 E F2(tls_client)174 666 Q F1 +4.866(\). Hence)4.866 F 2.367 +(such requirements will cause an error on a retry without)4.866 F(ST)174 +678 Q(AR)-.93 E 3.551(TTLS. Therefore)-.6 F(the)3.551 E 3.551(ys)-.15 G +1.051(hould only trigger a temporary f)-3.551 F 1.051 +(ailure so the con-)-.1 F(nection is later on tried ag)174 690 Q(ain.) +-.05 E 6.16(TLSSrvOptions [no)102 706.2 R .238 +(short name] List of options for SMTP ST)2.737 F(AR)-.93 E .238 +(TTLS for the serv)-.6 F .238(er consisting of)-.15 F .18 +(single characters with interv)174 718.2 R .18 +(ening white space or commas.)-.15 F .18(The \215ag `)5.18 F(`V')-.74 E +2.68('d)-.74 G(isables)-2.68 E 0 Cg EP %%Page: 80 76 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d38302053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -<50>142 96 Q/F1 10/Times-Italic@0 SF<6e616d65>A F0<3d>A F1<6e756d>A/F2 -10/Times-Roman@0 SF .383<5768656e20746865>102 112.2 R F1<6e616d65>2.883 -E F2 .384<697320666f756e6420696e20612099507265636564656e63653a9a208c656c -642c20746865206d65737361676520636c6173732069732073657420746f>2.883 F F1 -<6e756d>2.884 E F2 5.384<2e48>C .384<6967686572206e756d62657273>-5.384 F -.85<6d65616e2068696768657220707265636564656e63652e>102 124.2 R .85 -<4e756d62657273206c657373207468616e207a65726f206861>5.85 F 1.15 -.15 -<76652074>-.2 H .85<6865207370656369616c2070726f706572747920746861742069 -6620616e206572726f72206f6363757273>.15 F 1.551<647572696e672070726f6365 -7373696e672074686520626f6479206f6620746865206d6573736167652077696c6c206e -6f742062652072657475726e65643b20746869732069732065>102 136.2 R 1.552 -<7870656374656420746f206265207573656420666f72>-.15 F<9962>102 148.2 Q -.462<756c6b9a206d61696c2073756368206173207468726f756768206d61696c696e67 -206c697374732e>-.2 F .461<54686520646566>5.461 F .461 -<61756c7420707265636564656e6365206973207a65726f2e>-.1 F -.15<466f>5.461 -G 2.961<7265>.15 G .461<78616d706c652c206f7572206c697374206f66>-3.111 F -<707265636564656e6365732069733a>102 160.2 Q<508c7273742d636c6173733d30> -142 176.4 Q<507370656369616c2d64656c69>142 188.4 Q -.15<7665>-.25 G -<72793d313030>.15 E<506c6973743dad3330>142 200.4 Q<5062>142 212.4 Q -<756c6b3dad3630>-.2 E<506a756e6b3dad313030>142 224.4 Q 1.058 -<50656f706c652077726974696e67206d61696c696e67206c6973742065>102 240.6 R -1.058<78706c6f646572732061726520656e636f75726167656420746f20757365209950 -7265636564656e63653a206c6973749a2e>-.15 F 1.059<4f6c6465722076>6.059 F -1.059<657273696f6e73206f66>-.15 F F1<73656e646d61696c>102 252.6 Q F2 -1.19<2877686963682064697363617264656420616c6c206572726f722072657475726e -7320666f72206e65>3.69 F -.05<6761>-.15 G<7469>.05 E 1.49 -.15<76652070> --.25 H 1.19<7265636564656e63657329206469646e27>.15 F 3.69<7472>-.18 G -1.19<65636f676e697a652074686973206e616d652c>-3.69 F<6769>102 264.6 Q -.598<76696e67206974206120646566>-.25 F .598 -<61756c7420707265636564656e6365206f66207a65726f2e>-.1 F .598 -<5468697320616c6c6f>5.598 F .598<7773206c697374206d61696e7461696e657273 -20746f20736565206572726f722072657475726e73206f6e20626f7468206f6c64>-.25 -F<616e64206e65>102 276.6 Q 2.5<7776>-.25 G<657273696f6e73206f66>-2.65 E -F1<73656e646d61696c>2.5 E F2<2e>A F0 2.5<352e382e2056>87 300.6 R 2.5 -<8a43>2.5 G<6f6e8c6775726174696f6e2056>-2.5 E<657273696f6e204c65>-1 E --.1<7665>-.15 G<6c>.1 E F2 3.182 -.8<546f2070>127 316.8 T<726f>.8 E -1.582<7669646520636f6d7061746962696c6974792077697468206f6c6420636f6e8c67 -75726174696f6e208c6c65732c20746865>-.15 F F0<56>4.081 E F2 1.581 -<6c696e6520686173206265656e20616464656420746f2064658c6e65>4.081 F 1.11 -<736f6d652076>102 328.8 R 1.11<6572792062617369632073656d616e7469637320 -6f662074686520636f6e8c6775726174696f6e208c6c652e>-.15 F 1.11<5468657365 -20617265206e6f7420696e74656e64656420746f206265206c6f6e67207465726d207375 -702d>6.11 F .034<706f7274733b20726174686572>102 340.8 R 2.533<2c74>-.4 G -<6865>-2.533 E 2.533<7964>-.15 G .033<6573637269626520636f6d706174696269 -6c6974792066656174757265732077686963682077696c6c2070726f6261626c79206265 -2072656d6f>-2.533 F -.15<7665>-.15 G 2.533<6469>.15 G 2.533<6e66>-2.533 -G .033<75747572652072656c65617365732e>-2.533 F F0<4e2e422e3a>127 357 Q -F2 .196<74686573652076>2.696 F<657273696f6e>-.15 E F1<6c65>2.696 E -<76656c73>-.15 E F2<6861>2.696 E .496 -.15<7665206e>-.2 H .196 -<6f7468696e6720746f20646f2077697468207468652076>.15 F<657273696f6e>-.15 -E F1<6e756d626572>2.696 E F2 .197<6f6e20746865208c6c65732e>2.696 F -.15 -<466f>5.197 G 2.697<7265>.15 G<78616d2d>-2.847 E -<706c652c206173206f6620746869732077726974696e672076>102 369 Q -<657273696f6e20313020636f6e8c67208c6c6573202873706563698c63616c6c79>-.15 -E 2.5<2c38>-.65 G<2e31302920757365642076>-2.5 E<657273696f6e206c65>-.15 -E -.15<7665>-.25 G 2.5<6c3963>.15 G<6f6e8c6775726174696f6e732e>-2.5 E -1.102<994f6c649a20636f6e8c6775726174696f6e208c6c6573206172652064658c6e65 -642061732076>127 385.2 R 1.102<657273696f6e206c65>-.15 F -.15<7665>-.25 -G 3.602<6c6f>.15 G 3.602<6e652e2056>-3.602 F 1.102<657273696f6e206c65> --1.11 F -.15<7665>-.25 G 3.602<6c74>.15 G 1.302 -.1<776f208c>-3.602 H -1.102<6c6573206d616b>.1 F 3.602<6574>-.1 G<6865>-3.602 E<666f6c6c6f>102 -397.2 Q<77696e67206368616e6765733a>-.25 E 12.5<28312920486f7374>107 -413.4 R .727<6e616d652063616e6f6e698c636174696f6e2028245b202e2e2e20245d -2920617070656e6473206120646f7420696620746865206e616d65206973207265636f67 -6e697a65643b2074686973206769>3.226 F -.15<7665>-.25 G 3.227<7374>.15 G -<6865>-3.227 E 1.975<636f6e8c67208c6c6520612077>133.66 425.4 R 1.974 -<6179206f66208c6e64696e67206f757420696620616e>-.1 F 1.974 -<797468696e67206d6174636865642e>-.15 F<2841637475616c6c79>6.974 E 4.474 -<2c74>-.65 G 1.974<686973206a75737420696e697469616c697a657320746865> --4.474 F .738<99686f73749a206d61702077697468207468652099ad612e>133.66 -437.4 R 5.739<9a8d>-.7 G .739 -<6167208a20796f752063616e20726573657420697420746f20616e>-5.739 F .739 -<797468696e6720796f7520707265666572206279206465636c6172696e6720746865> --.15 F<6d61702065>133.66 449.4 Q<78706c696369746c79>-.15 E<2e29>-.65 E -12.5<28322920446566>107 465.6 R .385<61756c7420686f7374206e616d652065> --.1 F .385<7874656e73696f6e20697320636f6e73697374656e74207468726f756768 -6f75742070726f63657373696e673b2076>-.15 F .384<657273696f6e206c65>-.15 F --.15<7665>-.25 G 2.884<6c6f>.15 G .384<6e6520636f6e8c67752d>-2.884 F .83 -<726174696f6e73207475726e6564206f66>133.66 477.6 R 3.33<6664>-.25 G .83 -<6f6d61696e2065>-3.33 F .83<7874656e73696f6e2028746861742069732c20616464 -696e6720746865206c6f63616c20646f6d61696e206e616d652920647572696e67206365 -727461696e>-.15 F .4<706f696e747320696e2070726f63657373696e672e>133.66 -489.6 R -1.11<5665>5.4 G .4<7273696f6e206c65>1.11 F -.15<7665>-.25 G 2.9 -<6c74>.15 G .6 -.1<776f2063>-2.9 H .4 -<6f6e8c6775726174696f6e73206172652065>.1 F .4 -<7870656374656420746f20696e636c756465206120747261696c696e6720646f74>-.15 -F<746f20696e646963617465207468617420746865206e616d6520697320616c72656164 -792063616e6f6e6963616c2e>133.66 501.6 Q 12.5<283329204c6f63616c>107 -517.8 R .072<6e616d6573207468617420617265206e6f7420616c6961736573206172 -6520706173736564207468726f7567682061206e65>2.572 F 2.572<7764>-.25 G -.072<697374696e677569736865642072756c65736574208c76>-2.572 F .072 -<653b20746869732063616e>-.15 F .14 -<6265207573656420746f20617070656e642061206c6f63616c2072656c6179>133.66 -529.8 R 5.139<2e54>-.65 G .139<6869732062656861>-5.139 F .139 -<76696f722063616e20626520707265>-.2 F -.15<7665>-.25 G .139 -<6e746564206279207265736f6c76696e6720746865206c6f63616c206e616d65>.15 F -.993<7769746820616e20696e697469616c206040272e>133.66 541.8 R .993 -<546861742069732c20736f6d657468696e672074686174207265736f6c76>5.993 F -.993<657320746f2061206c6f63616c206d61696c657220616e6420612075736572206e -616d65206f66>-.15 F .602<9976696b6b699a2077696c6c2062652070617373656420 -7468726f7567682072756c65736574208c76>133.66 553.8 R .601<652c2062>-.15 F -.601 -<757420612075736572206e616d65206f6620994076696b6b699a2077696c6c206861> --.2 F .901 -.15<76652074>-.2 H .601<686520604027>.15 F .919<737472697070 -65642c2077696c6c206e6f7420626520706173736564207468726f7567682072756c6573 -6574208c76>133.66 565.8 R .919<652c2062>-.15 F .92<75742077696c6c206f74 -686572776973652062652074726561746564207468652073616d65206173>-.2 F .63 -<746865207072696f722065>133.66 577.8 R 3.13<78616d706c652e20546865>-.15 -F -.15<6578>3.13 G .629<706563746174696f6e20697320746861742074686973206d -69676874206265207573656420746f20696d706c656d656e74206120706f6c6963>.15 F -3.129<7977>-.15 G<68657265>-3.129 E .734 -<6d61696c2073656e7420746f209976696b6b699a2077>133.66 589.8 R .734 -<61732068616e646c656420627920612063656e7472616c206875622c2062>-.1 F .734 -<7574206d61696c2073656e7420746f209976696b6b69406c6f63616c686f73749a2077> --.2 F<6173>-.1 E<64656c69>133.66 601.8 Q -.15<7665>-.25 G -<726564206469726563746c79>.15 E<2e>-.65 E -1.11<5665>127 618 S 1.383 -<7273696f6e206c65>1.11 F -.15<7665>-.25 G 3.883<6c74>.15 G 1.383 -<68726565208c6c657320616c6c6f>-3.883 F 3.882<772369>-.25 G 1.382 -<6e6974696174656420636f6d6d656e7473206f6e20616c6c206c696e65732e>-3.882 F -1.382<457863657074696f6e7320617265206261636b736c617368>6.382 F -<657363617065642023206d61726b7320616e64207468652024232073796e7461782e> -102 630 Q -1.11<5665>127 646.2 S 1.207<7273696f6e206c65>1.11 F -.15 -<7665>-.25 G 3.707<6c66>.15 G 1.207<6f757220636f6e8c6775726174696f6e7320 -61726520636f6d706c6574656c792065717569>-3.707 F -.25<7661>-.25 G 1.208 -<6c656e7420746f206c65>.25 F -.15<7665>-.25 G 3.708<6c74>.15 G 1.208 -<6872656520666f7220686973746f726963616c207265612d>-3.708 F<736f6e732e> -102 658.2 Q -1.11<5665>127 674.4 S 1.234<7273696f6e206c65>1.11 F -.15 -<7665>-.25 G 3.734<6c8c>.15 G 1.534 -.15<76652063>-3.734 H 1.234 -<6f6e8c6775726174696f6e208c6c6573206368616e67652074686520646566>.15 F -1.234<61756c742064658c6e6974696f6e206f66>-.1 F F0<2477>3.734 E F2 1.234 -<746f206265206a75737420746865208c727374>3.734 F -<636f6d706f6e656e74206f662074686520686f73746e616d652e>102 686.4 Q -1.11 -<5665>127 702.6 S 1.588<7273696f6e206c65>1.11 F -.15<7665>-.25 G 4.088 -<6c73>.15 G 1.588 -<697820636f6e8c6775726174696f6e208c6c6573206368616e6765206d616e>-4.088 F -4.088<796f>-.15 G 4.089<6674>-4.088 G 1.589<6865206c6f63616c2070726f6365 -7373696e67206f7074696f6e73202873756368206173>-4.089 F .481 -<616c696173696e6720616e64206d61746368696e6720746865206265>102 714.6 R -.481<67696e6e696e67206f6620746865206164647265737320666f7220607c27206368 -61726163746572732920746f206265206d61696c6572208d6167733b207468697320616c -6c6f>-.15 F<7773>-.25 E 0 Cg EP +/F0 10/Times-Bold@0 SF 193.36(SMM:08-80 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF .51 +(client v)174 96 R .511(eri\214cation, and hence it is not possible to \ +use a client certi\214cate for relay-)-.15 F 3.919(ing. The)174 108 R +1.419(\215ag `)3.919 F(`C')-.74 E 3.919('r)-.74 G(emo)-3.919 E -.15(ve) +-.15 G 3.919(st).15 G 1.419(he requirement for the TLS serv)-3.919 F +1.418(er to ha)-.15 F 1.718 -.15(ve a c)-.2 H(ert.).15 E .386 +(This only w)174 120 R .386(orks under v)-.1 F .386 +(ery speci\214c circumstances and should only be used if the)-.15 F +(consequences are understood, e.g., clients may not w)174 132 Q +(ork with a serv)-.1 E(er using this.)-.15 E -.7(Te)102 148.2 S +(mpFileMode=).7 E/F2 10/Times-Italic@0 SF(mode)A F1 .062 +([F] The \214le mode for transcript \214les, \214les to which)174 160.2 +R F2(sendmail)2.561 E F1(deli)2.561 E -.15(ve)-.25 G .061(rs directly) +.15 F 2.561<2c8c>-.65 G(les)-2.561 E .61(in the)174 172.2 R F0 +(HostStatusDir)3.11 E(ectory)-.18 E F1 3.11(,a)C(nd)-3.11 E F0 +(StatusFile)3.11 E F1 5.61(.I)C 3.11(ti)-5.61 G 3.11(si)-3.11 G .61 +(nterpreted in octal by def)-3.11 F(ault.)-.1 E(Def)174 184.2 Q +(aults to 0600.)-.1 E -.35(Ti)102 200.4 S(meout.).35 E F2(type)A F1(=)A +F2(timeout)1.666 E F1 .417 +([r; subsumes old T option as well] Set timeout v)174 212.4 R 2.917 +(alues. F)-.25 F .417(or more information, see)-.15 F(section 4.1.)174 +224.4 Q -.35(Ti)102 240.6 S(meZoneSpec=).35 E F2(tzinfo)A F1 .218 +([t] Set the local time zone info to)174 252.6 R F2(tzinfo)2.718 E F1 +2.718<8a66>2.718 G .218(or e)-2.718 F .218(xample, \231PST8PDT\232.)-.15 +F(Actually)5.218 E 2.718(,i)-.65 G(f)-2.718 E 1.346 +(this is not set, the TZ en)174 264.6 R 1.346(vironment v)-.4 F 1.346 +(ariable is cleared \(so the system def)-.25 F 1.345(ault is)-.1 F .208 +(used\); if set b)174 276.6 R .208(ut null, the user')-.2 F 2.708(sT) +-.55 G 2.708(Zv)-2.708 G .208 +(ariable is used, and if set and non-null the TZ)-2.958 F -.25(va)174 +288.6 S(riable is set to this v).25 E(alue.)-.25 E -.35(Tr)102 304.8 S +(ustedUser=).35 E F2(user)A F1 3.753([no short name] The).06 F F2(user) +6.253 E F1 3.752(parameter may be a user name \(look)6.252 F 3.752 +(ed up in)-.1 F F2(/etc/passwd)174 316.8 Q F1 2.742(\)o)C 2.742(ran) +-2.742 G .242(umeric user id.)-2.742 F -.35(Tr)5.242 G .242 +(usted user for \214le o).35 F .243(wnership and starting the)-.25 F +3.78(daemon. If)174 328.8 R 1.279 +(set, generated alias databases and the control sock)3.779 F 1.279 +(et \(if con\214gured\))-.1 F(will automatically be o)174 340.8 Q +(wned by this user)-.25 E(.)-.55 E -.35(Tr)102 357 S 5.96 +(yNullMXList [w]).35 F .114 +(If this system is the \231best\232 \(that is, lo)2.613 F .114 +(west preference\) MX for a gi)-.25 F -.15(ve)-.25 G 2.614(nh).15 G .114 +(ost, its)-2.614 F 1.168(con\214guration rules should normally detect t\ +his situation and treat that condition)174 369 R .257(specially by forw) +174 381 R .258 +(arding the mail to a UUCP feed, treating it as local, or whate)-.1 F +-.15(ve)-.25 G -.55(r.).15 G(Ho)174 393 Q(we)-.25 E -.15(ve)-.25 G 1.686 +-.4(r, i).15 H 3.386(ns).4 G .886(ome cases \(such as Internet \214re) +-3.386 F -.1(wa)-.25 G .886(lls\) you may w).1 F .885 +(ant to try to con-)-.1 F .07 +(nect directly to that host as though it had no MX records at all.)174 +405 R .07(Setting this option)5.07 F(causes)174 417 Q F2(sendmail)3.014 +E F1 .514(to try this.)3.014 F .514(The do)5.514 F .514 +(wnside is that errors in your con\214guration are)-.25 F(lik)174 429 Q +2.116(ely to be diagnosed as \231host unkno)-.1 F 2.116 +(wn\232 or \231message timed out\232 instead of)-.25 F +(something more meaningful.)174 441 Q(This option is disrecommended.)5 E +(UnixFromLine=)102 457.2 Q F2(fr)A(omline)-.45 E F1 .236 +([$l macro] De\214nes the format used when)174 469.2 R F2(sendmail)2.736 +E F1 .236(must add a UNIX-style From_)2.736 F 1.324 +(line \(that is, a line be)174 481.2 R 1.325 +(ginning \231Fromuser\232\).)-.15 F(Def)6.325 E 1.325 +(aults to \231From $g)-.1 F($d\232.)6.325 E(Don')174 493.2 Q 2.646(tc) +-.18 G .146(hange this unless your system uses a dif)-2.646 F .146 +(ferent UNIX mailbox format \(v)-.25 F(ery)-.15 E(unlik)174 505.2 Q +(ely\).)-.1 E(UnsafeGroupWrites)102 521.4 Q .085 +([no short name] If set \(def)174 533.4 R .085 +(ault\), :include: and .forw)-.1 F .086 +(ard \214les that are group writable)-.1 F .655 +(are considered \231unsafe\232, that is, the)174 545.4 R 3.155(yc)-.15 G +.654(annot reference programs or write directly)-3.155 F .536 +(to \214les.)174 557.4 R -.8(Wo)5.536 G .536 +(rld writable :include: and .forw).8 F .537(ard \214les are al)-.1 F -.1 +(wa)-.1 G .537(ys unsafe.).1 F .537(Note: use)5.537 F F0 +(DontBlameSendmail)174 569.4 Q F1(instead; this option is deprecated.) +2.5 E(UseCompressedIPv6Addresses)102 585.6 Q .09([no short name] If set\ +, the compressed format of IPv6 addresses, such as IPV6:::1,)174 597.6 R +(will be used, instead of the uncompressed format, such as IPv6:0:0:0:0\ +:0:0:0:1.)174 609.6 Q(UseErrorsT)102 625.8 Q 21.15(o[)-.8 G .826 +(l] If there is an \231Errors-T)-21.15 F .826(o:\232 header)-.8 F 3.326 +(,s)-.4 G .826(end error messages to the addresses listed)-3.326 F 3.135 +(there. The)174 637.8 R 3.135(yn)-.15 G .635(ormally go to the en)-3.135 +F -.15(ve)-.4 G .635(lope sender).15 F 5.635(.U)-.55 G .634 +(se of this option causes)-5.635 F F2(send-)3.134 E(mail)174 649.8 Q F1 +(to violate RFC 1123.)2.5 E +(This option is disrecommended and deprecated.)5 E(UserDatabaseSpec=)102 +666 Q F2(udbspec)A F1([U] The user database speci\214cation.)174 678 Q +-1.11(Ve)102 694.2 S 37.29(rbose [v])1.11 F .56(Run in v)3.06 F .561 +(erbose mode.)-.15 F .561(If this is set,)5.561 F F2(sendmail)3.061 E F1 +.561(adjusts options)3.061 F F0(HoldExpensi)3.061 E -.1(ve)-.1 G F1 +(\(old)174 706.2 Q F0(c)2.636 E F1 2.636(\)a)C(nd)-2.636 E F0(Deli)2.636 +E -.1(ve)-.1 G(ryMode).1 E F1(\(old)2.636 E F0(d)2.636 E F1 2.635(\)s)C +2.635(ot)-2.635 G .135(hat all mail is deli)-2.635 F -.15(ve)-.25 G .135 +(red completely in a sin-).15 F 1.244 +(gle job so that you can see the entire deli)174 718.2 R -.15(ve)-.25 G +1.244(ry process.).15 F(Option)6.244 E F0 -1(Ve)3.744 G(rbose)1 E F1 +(should)3.744 E 0 Cg EP %%Page: 81 77 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3831>195.86 E -/F1 10/Times-Roman@0 SF 1.344 -<8c6e652d677261696e656420636f6e74726f6c206f>102 96 R -.15<7665>-.15 G -3.844<7274>.15 G 1.344 -<6865207370656369616c206c6f63616c2070726f63657373696e672e>-3.844 F<4c65> -6.345 E -.15<7665>-.25 G 3.845<6c73>.15 G 1.345 -<697820636f6e8c6775726174696f6e208c6c6573206d617920616c736f20757365> --3.845 F 1.222<6c6f6e67206f7074696f6e206e616d65732e>102 108 R<546865> -6.222 E F0<436f6c6f6e4f6b496e41646472>3.722 E F1 1.222 -<6f7074696f6e2028746f20616c6c6f>3.722 F 3.721<7763>-.25 G 1.221<6f6c6f6e -7320696e20746865206c6f63616c2d70617274206f662061646472657373657329> --3.721 F<646566>102 120 Q<61756c7473>-.1 E F0<6f6e>3.44 E F1 .94 -<666f72206c6f>3.44 F .94<776572206e756d626572656420636f6e8c677572617469 -6f6e208c6c65733b2074686520636f6e8c6775726174696f6e208c6c6520726571756972 -657320736f6d65206164646974696f6e616c>-.25 F<696e74656c6c6967656e63652074 -6f2070726f7065726c792068616e646c652074686520524643203832322067726f757020 -636f6e7374727563742e>102 132 Q -1.11<5665>127 148.2 S 1.97 -<7273696f6e206c65>1.11 F -.15<7665>-.25 G 4.47<6c73>.15 G -2.15 -.25 -<65762065>-4.47 H 4.47<6e63>.25 G 1.97 -<6f6e8c6775726174696f6e208c6c65732075736564206e65>-4.47 F 4.47<776f>-.25 -G 1.97 -<7074696f6e206e616d657320746f207265706c616365206f6c64206d6163726f732028> --4.47 F F0<2465>A F1<626563616d65>102 160.2 Q F0<536d74704772>5.547 E -<656574696e674d657373616765>-.18 E F1<2c>A F0<246c>5.547 E F1 -<626563616d65>5.547 E F0<556e69784672>5.547 E<6f6d4c696e65>-.18 E F1 -5.548<2c61>C<6e64>-5.548 E F0<246f>5.548 E F1<626563616d65>5.548 E F0 -<4f70657261746f724368617273>5.548 E F1<2e>A .087 -<416c736f2c207072696f7220746f2076>102 172.2 R .087<657273696f6e207365> --.15 F -.15<7665>-.25 G .087<6e2c20746865>.15 F F0<463d71>2.587 E F1 -.087<8d616720287573652032353020696e7374656164206f6620323532207265747572 -6e2076>2.587 F .086<616c756520666f72>-.25 F/F2 9/Times-Roman@0 SF .086 -<534d54502056524659>2.586 F F1<636f6d2d>2.586 E<6d616e6473292077>102 -184.2 Q<617320617373756d65642e>-.1 E -1.11<5665>127 200.4 S -<7273696f6e206c65>1.11 E -.15<7665>-.25 G 2.5<6c65>.15 G -<6967687420636f6e8c6775726174696f6e208c6c657320616c6c6f>-2.5 E<77>-.25 E -F0<2423>2.5 E F1<6f6e20746865206c6566742068616e642073696465206f66207275 -6c65736574206c696e65732e>2.5 E -1.11<5665>127 216.6 S .422 -<7273696f6e206c65>1.11 F -.15<7665>-.25 G 2.922<6c6e>.15 G .423 -<696e6520636f6e8c6775726174696f6e208c6c657320616c6c6f>-2.922 F 2.923 -<7770>-.25 G .423 -<6172656e74686573657320696e2072756c65736574732c20692e652e20746865>-2.923 -F 2.923<7961>-.15 G .423<7265206e6f742074726561746564206173>-2.923 F -<636f6d6d656e747320616e642068656e63652072656d6f>102 228.6 Q -.15<7665> --.15 G<642e>.15 E -1.11<5665>127 244.8 S<7273696f6e206c65>1.11 E -.15 -<7665>-.25 G 2.5<6c74>.15 G -<656e20636f6e8c6775726174696f6e208c6c657320616c6c6f>-2.5 E 2.5<7771>-.25 -G<756575652067726f75702064658c6e6974696f6e732e>-2.5 E<546865>127 261 Q -F0<56>2.678 E F1 .178<6c696e65206d6179206861>2.678 F .478 -.15<76652061> --.2 H 2.677<6e6f>.15 G<7074696f6e616c>-2.677 E F0<2f>2.677 E/F3 10 -/Times-Italic@0 SF<76656e646f72>A F1 .177<746f20696e64696361746520746861 -74207468697320636f6e8c6775726174696f6e208c6c652075736573206d6f64698c6361 -2d>2.677 F .866 -<74696f6e732073706563698c6320746f206120706172746963756c61722076>102 275 -R<656e646f72>-.15 E/F4 7/Times-Roman@0 SF<3232>-4 I F1 5.866<2e59>4 K -.866<6f75206d61792075736520992f4265726b>-6.966 F<656c65>-.1 E .865 -<799a20746f20656d70686173697a652074686174207468697320636f6e8c677572612d> --.15 F<74696f6e208c6c65207573657320746865204265726b>102 287 Q<656c65>-.1 -E 2.5<7964>-.15 G<69616c656374206f66>-2.5 E F3<73656e646d61696c>2.5 E F1 -<2e>A F0 2.5<352e392e204b>87 311 R 2.5<8a4b>2.5 G -<65792046696c65204465636c61726174696f6e>-2.75 E F1<5370656369616c206d61 -70732063616e2062652064658c6e6564207573696e6720746865206c696e653a>127 -327.2 Q<4b6d61706e616d65206d6170636c617373206172>142 343.4 Q -<67756d656e7473>-.18 E<546865>102 359.6 Q F3<6d61706e616d65>2.75 E F1 -.251<6973207468652068616e646c652062792077686963682074686973206d61702069 -73207265666572656e63656420696e20746865207265>2.75 F .251 -<77726974696e672072756c65732e>-.25 F<546865>5.251 E F3<6d6170636c617373> -2.751 E F1<6973>2.751 E 1.889<746865206e616d65206f6620612074797065206f66 -206d61703b2074686573652061726520636f6d70696c656420696e20746f>102 371.6 R -F3<73656e646d61696c>4.389 E F1 6.888<2e54>C<6865>-6.888 E F3<6172>4.388 -E<67756d656e7473>-.37 E F1 1.888<61726520696e746572707265746564>4.388 F -.79<646570656e64696e67206f6e2074686520636c6173733b207479706963616c6c79> -102 383.6 R 3.29<2c74>-.65 G .791<686572652077>-3.29 F .791 -<6f756c6420626520612073696e676c65206172>-.1 F .791<67756d656e74206e616d -696e6720746865208c6c6520636f6e7461696e696e6720746865>-.18 F<6d61702e>102 -395.6 Q<4d61707320617265207265666572656e636564207573696e6720746865207379 -6e7461783a>127 411.8 Q<2428>142 428 Q F3<6d6170206b>2.5 E -.3<6579>-.1 G -F1<2440>2.8 E F3<6172>2.5 E<67756d656e7473>-.37 E F1<243a>2.5 E F3 -<64656661756c74>2.5 E F1<2429>2.5 E .641 -<776865726520656974686572206f7220626f7468206f6620746865>102 444.2 R F3 -<6172>3.141 E<67756d656e7473>-.37 E F1<6f72>3.141 E F3<64656661756c74> -3.141 E F1 .64<706f7274696f6e206d6179206265206f6d69747465642e>3.141 F -<546865>5.64 E F3 .64<2440206172>3.14 F<67756d656e7473>-.37 E F1<6d6179> -3.14 E 1.276<617070656172206d6f7265207468616e206f6e63652e>102 456.2 R -1.276<54686520696e64696361746564>6.276 F F3 -.1<6b65>3.776 G<79>-.2 E F1 -<616e64>3.776 E F3<6172>3.776 E<67756d656e7473>-.37 E F1 1.277<61726520 -70617373656420746f2074686520617070726f707269617465206d617070696e67>3.777 -F 3.253<66756e6374696f6e2e204966>102 468.2 R .753 -<69742072657475726e7320612076>3.253 F .753 -<616c75652c206974207265706c616365732074686520696e7075742e>-.25 F .753 -<496620697420646f6573206e6f742072657475726e20612076>5.753 F .753 -<616c756520616e6420746865>-.25 F F3<64656661756c74>3.253 E F1<6973>3.253 -E<73706563698c65642c20746865>102 480.2 Q F3<64656661756c74>2.5 E F1 -<7265706c616365732074686520696e7075742e>2.5 E -<4f74686572776973652c2074686520696e70757420697320756e6368616e6765642e>5 -E<546865>127 496.4 Q F3<6172>4.063 E<67756d656e7473>-.37 E F1 1.563<6172 -652070617373656420746f20746865206d617020666f7220617262697472617279207573 -652e>4.063 F 1.564 -<4d6f7374206d617020636c61737365732063616e20696e746572706f6c617465>6.564 -F .883<7468657365206172>102 508.4 R .883 -<67756d656e747320696e746f2074686569722076>-.18 F .883 -<616c756573207573696e67207468652073796e746178209925>-.25 F F3<6e>A F1 -3.382<9a28>C<7768657265>-3.382 E F3<6e>3.382 E F1 .882 -<697320612064696769742920746f20696e6469636174652074686520636f7272652d> -3.382 F<73706f6e64696e67>102 520.4 Q F3<6172>2.5 E<67756d656e74>-.37 E -F1 5<2e41>C -.18<7267>-5 G -<756d656e74209925309a20696e6469636174657320746865206461746162617365206b> -.18 E -.15<6579>-.1 G 5<2e46>-.5 G<6f722065>-5.15 E -<78616d706c652c207468652072756c65>-.15 E<5224ad202120242b>142 536.6 Q<24 -3a2024287575637020243120244020243220243a2024322040202431202e205555435020 -2429>71.72 E 1.269<4c6f6f6b73207570207468652055554350206e616d6520696e20 -612028757365722064658c6e6564292055554350206d61703b206966206e6f7420666f75 -6e64206974207475726e7320697420696e746f20992e555543509a>102 552.8 R 2.5 -<666f726d2e20546865>102 564.8 R -<6461746162617365206d6967687420636f6e7461696e207265636f726473206c696b> -2.5 E<653a>-.1 E<64656376>142 581 Q 77.43 -<61782025314025302e4445432e434f4d>-.25 F 72.19 -<72657365617263682025314025302e41>142 593 R<5454>-1.11 E<2e434f4d>-.74 E -<4e6f74652074686174>102 609.2 Q F3<64656661756c74>2.5 E F1 -<636c6175736573206e65>2.5 E -.15<7665>-.25 G 2.5<7264>.15 G 2.5<6f74> --2.5 G<686973206d617070696e672e>-2.5 E .735<5468652062>127 625.4 R .735< -75696c742d696e206d6170207769746820626f7468206e616d6520616e6420636c617373 -2099686f73749a2069732074686520686f7374206e616d652063616e6f6e6963616c697a -6174696f6e206c6f6f6b75702e>-.2 F<546875732c207468652073796e7461783a>102 -637.4 Q<2428686f7374>142 653.6 Q F3<686f73746e616d65>2.5 E F1<2429>A -<69732065717569>102 669.8 Q -.25<7661>-.25 G<6c656e7420746f3a>.25 E .32 -LW 76 679.4 72 679.4 DL 80 679.4 76 679.4 DL 84 679.4 80 679.4 DL 88 -679.4 84 679.4 DL 92 679.4 88 679.4 DL 96 679.4 92 679.4 DL 100 679.4 96 -679.4 DL 104 679.4 100 679.4 DL 108 679.4 104 679.4 DL 112 679.4 108 -679.4 DL 116 679.4 112 679.4 DL 120 679.4 116 679.4 DL 124 679.4 120 -679.4 DL 128 679.4 124 679.4 DL 132 679.4 128 679.4 DL 136 679.4 132 -679.4 DL 140 679.4 136 679.4 DL 144 679.4 140 679.4 DL 148 679.4 144 -679.4 DL 152 679.4 148 679.4 DL 156 679.4 152 679.4 DL 160 679.4 156 -679.4 DL 164 679.4 160 679.4 DL 168 679.4 164 679.4 DL 172 679.4 168 -679.4 DL 176 679.4 172 679.4 DL 180 679.4 176 679.4 DL 184 679.4 180 -679.4 DL 188 679.4 184 679.4 DL 192 679.4 188 679.4 DL 196 679.4 192 -679.4 DL 200 679.4 196 679.4 DL 204 679.4 200 679.4 DL 208 679.4 204 -679.4 DL 212 679.4 208 679.4 DL 216 679.4 212 679.4 DL/F5 5 -/Times-Roman@0 SF<3232>93.6 689.8 Q/F6 8/Times-Roman@0 SF .214 -<416e64206f6620636f757273652c2076>3.2 J .214<656e646f72732061726520656e -636f75726167656420746f20616464207468656d73656c76>-.12 F .214 -<657320746f20746865206c697374206f66207265636f676e697a65642076>-.12 F -.214<656e646f72732062792065646974696e672074686520726f7574696e65>-.12 F -/F7 8/Times-Italic@0 SF<73657476656e646f72>2.214 E F6<696e>2.214 E F7 -<636f6e66>72 702.6 Q<2e63>-.12 E F6 4<2e50>C<6c656173652073656e6420652d -6d61696c20746f2073656e646d61696c4053656e646d61696c2e4f524720746f207265> --4 E<67697374657220796f75722076>-.12 E<656e646f72206469616c6563742e>-.12 -E 0 Cg EP +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-81)195.86 E/F1 10/Times-Italic@0 SF(ne)174 96 Q(ver)-.15 E/F2 10 +/Times-Roman@0 SF 1.269(be set in the con\214guration \214le; it is int\ +ended for command line use only)3.77 F(.)-.65 E .435 +(Note that the use of option)174 108 R F0 -1(Ve)2.935 G(rbose)1 E F2 +.435(can cause authentication information to leak,)2.935 F .015 +(if you use a sendmail client to authenticate to a serv)174 120 R(er) +-.15 E 5.015(.I)-.55 G 2.515(ft)-5.015 G .015(he authentication mech-) +-2.515 F .935(anism uses plain te)174 132 R .936(xt passw)-.15 F .936 +(ords \(as with LOGIN or PLAIN\), then the passw)-.1 F(ord)-.1 E 1.418 +(could be compromised.)174 144 R 3.017 -.8(To a)6.418 H -.2(vo).6 G +1.417(id this, do not install sendmail set-user).2 F 1.417(-ID root,)-.2 +F(and disable the)174 156 Q F0(VERB)2.5 E F2 +(SMTP command with a suitable)2.5 E F0(Pri)2.5 E -.1(va)-.1 G(cyOptions) +.1 E F2(setting.)2.5 E(XscriptFileBuf)102 172.2 Q(ferSize=)-.25 E F1 +(thr)A(eshold)-.37 E F2 1.1([no short name] Set the)174 184.2 R F1(thr) +3.601 E(eshold)-.37 E F2 3.601(,i)C 3.601(nb)-3.601 G 1.101 +(ytes, before a memory-based queue tran-)-3.601 F +(script \214le becomes disk-based.)174 196.2 Q(The def)5 E +(ault is 4096 bytes.)-.1 E .109(All options can be speci\214ed on the c\ +ommand line using the \255O or \255o \215ag, b)102 212.4 R .108 +(ut most will cause)-.2 F F1(send-)2.608 E(mail)102 224.4 Q F2 .663 +(to relinquish its set-user)3.163 F .663(-ID permissions.)-.2 F .664 +(The options that will not cause this are Se)5.663 F -.15(ve)-.25 G +(nBitIn-).15 E 1.319 +(put [7], EightBitMode [8], MinFreeBlocks [b], CheckpointInterv)102 +236.4 R 1.319(al [C], Deli)-.25 F -.15(ve)-.25 G 1.319 +(ryMode [d], Error).15 F(-)-.2 E .042 +(Mode [e], IgnoreDots [i], SendMimeErrors [j], LogLe)102 248.4 R -.15 +(ve)-.25 G 2.543(l[).15 G .043(L], MeT)-2.543 F .043 +(oo [m], OldStyleHeaders [o], Pri-)-.8 F -.25(va)102 260.4 S -.15(cy).25 +G .303(Options [p], SuperSafe [s], V).15 F .302 +(erbose [v], QueueSortOrder)-1.11 F 2.802(,M)-.4 G .302(inQueueAge, Def) +-2.802 F .302(aultCharSet, Dial)-.1 F(Delay)102 272.4 Q 7.312(,N)-.65 G +4.812(oRecipientAction, ColonOkInAddr)-7.312 F 7.312(,M)-.4 G 4.812 +(axQueueRunSize, SingleLineFromHeader)-7.312 F 7.312(,a)-.4 G(nd)-7.312 +E(Allo)102 284.4 Q 3.921(wBogusHELO. Actually)-.25 F 3.921(,P)-.65 G(ri) +-3.921 E -.25(va)-.25 G -.15(cy).25 G 1.421(Options [p] gi).15 F -.15 +(ve)-.25 G 3.921(no).15 G 3.921(nt)-3.921 G 1.421 +(he command line are added to those)-3.921 F 1.697 +(already speci\214ed in the)102 296.4 R F1(sendmail.cf)4.197 E F2 1.697 +(\214le, i.e., the)4.197 F 4.197(yc)-.15 G(an')-4.197 E 4.197(tb)-.18 G +4.197(er)-4.197 G 4.198(eset. Also,)-4.197 F 4.198(M\()4.198 G 1.698 +(de\214ne macro\) when)-4.198 F +(de\214ning the r or s macros is also considered \231safe\232.)102 308.4 +Q F0 2.5(5.7. P)87 332.4 R 2.5<8a50>2.5 G -.18(re)-2.5 G +(cedence De\214nitions).18 E F2 -1.11(Va)127 348.6 S .164 +(lues for the \231Precedence:\232 \214eld may be de\214ned using the) +1.11 F F0(P)2.664 E F2 .164(control line.)2.664 F .163 +(The syntax of this)5.163 F(\214eld is:)102 360.6 Q F0(P)142 376.8 Q F1 +(name)A F0(=)A F1(num)A F2 .383(When the)102 393 R F1(name)2.883 E F2 +.384 +(is found in a \231Precedence:\232 \214eld, the message class is set to) +2.883 F F1(num)2.884 E F2 5.384(.H)C .384(igher numbers)-5.384 F .85 +(mean higher precedence.)102 405 R .85(Numbers less than zero ha)5.85 F +1.15 -.15(ve t)-.2 H .85(he special property that if an error occurs).15 +F 1.551(during processing the body of the message will not be returned;\ + this is e)102 417 R 1.552(xpected to be used for)-.15 F<9962>102 429 Q +.462(ulk\232 mail such as through mailing lists.)-.2 F .461(The def) +5.461 F .461(ault precedence is zero.)-.1 F -.15(Fo)5.461 G 2.961(re).15 +G .461(xample, our list of)-3.111 F(precedences is:)102 441 Q +(P\214rst-class=0)142 457.2 Q(Pspecial-deli)142 469.2 Q -.15(ve)-.25 G +(ry=100).15 E(Plist=\25530)142 481.2 Q(Pb)142 493.2 Q(ulk=\25560)-.2 E +(Pjunk=\255100)142 505.2 Q 1.058(People writing mailing list e)102 521.4 +R 1.058(xploders are encouraged to use \231Precedence: list\232.)-.15 F +1.059(Older v)6.059 F 1.059(ersions of)-.15 F F1(sendmail)102 533.4 Q F2 +1.19(\(which discarded all error returns for ne)3.69 F -.05(ga)-.15 G +(ti).05 E 1.49 -.15(ve p)-.25 H 1.19(recedences\) didn').15 F 3.69(tr) +-.18 G 1.19(ecognize this name,)-3.69 F(gi)102 545.4 Q .598 +(ving it a def)-.25 F .598(ault precedence of zero.)-.1 F .598 +(This allo)5.598 F .598 +(ws list maintainers to see error returns on both old)-.25 F(and ne)102 +557.4 Q 2.5(wv)-.25 G(ersions of)-2.65 E F1(sendmail)2.5 E F2(.)A F0 2.5 +(5.8. V)87 581.4 R 2.5<8a43>2.5 G(on\214guration V)-2.5 E(ersion Le)-1 E +-.1(ve)-.15 G(l).1 E F2 3.182 -.8(To p)127 597.6 T(ro).8 E 1.582 +(vide compatibility with old con\214guration \214les, the)-.15 F F0(V) +4.081 E F2 1.581(line has been added to de\214ne)4.081 F 1.11(some v)102 +609.6 R 1.11(ery basic semantics of the con\214guration \214le.)-.15 F +1.11(These are not intended to be long term sup-)6.11 F .034 +(ports; rather)102 621.6 R 2.533(,t)-.4 G(he)-2.533 E 2.533(yd)-.15 G +.033(escribe compatibility features which will probably be remo)-2.533 F +-.15(ve)-.15 G 2.533(di).15 G 2.533(nf)-2.533 G .033(uture releases.) +-2.533 F F0(N.B.:)127 637.8 Q F2 .196(these v)2.696 F(ersion)-.15 E F1 +(le)2.696 E(vels)-.15 E F2(ha)2.696 E .496 -.15(ve n)-.2 H .196 +(othing to do with the v).15 F(ersion)-.15 E F1(number)2.696 E F2 .197 +(on the \214les.)2.696 F -.15(Fo)5.197 G 2.697(re).15 G(xam-)-2.847 E +(ple, as of this writing v)102 649.8 Q +(ersion 10 con\214g \214les \(speci\214cally)-.15 E 2.5(,8)-.65 G +(.10\) used v)-2.5 E(ersion le)-.15 E -.15(ve)-.25 G 2.5(l9c).15 G +(on\214gurations.)-2.5 E 1.102 +(\231Old\232 con\214guration \214les are de\214ned as v)127 666 R 1.102 +(ersion le)-.15 F -.15(ve)-.25 G 3.602(lo).15 G 3.602(ne. V)-3.602 F +1.102(ersion le)-1.11 F -.15(ve)-.25 G 3.602(lt).15 G 1.302 -.1(wo \214) +-3.602 H 1.102(les mak).1 F 3.602(et)-.1 G(he)-3.602 E(follo)102 678 Q +(wing changes:)-.25 E 12.5(\(1\) Host)107 694.2 R .727(name canoni\214c\ +ation \($[ ... $]\) appends a dot if the name is recognized; this gi) +3.226 F -.15(ve)-.25 G 3.227(st).15 G(he)-3.227 E 1.975 +(con\214g \214le a w)133.66 706.2 R 1.974(ay of \214nding out if an)-.1 +F 1.974(ything matched.)-.15 F(\(Actually)6.974 E 4.474(,t)-.65 G 1.974 +(his just initializes the)-4.474 F .738 +(\231host\232 map with the \231\255a.)133.66 718.2 R 5.739<9a8d>-.7 G +.739(ag \212 you can reset it to an)-5.739 F .739 +(ything you prefer by declaring the)-.15 F 0 Cg EP %%Page: 82 78 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d38322053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF<245b>142 96 Q/F2 10/Times-Italic@0 SF -<686f73746e616d65>A F1<245d>A<546865726520617265206d616e>127 116.4 Q 2.5 -<7964>-.15 G<658c6e656420636c61737365732e>-2.5 E 51.72 -<64626d204461746162617365>102 132.6 R 1.623 -<6c6f6f6b757073207573696e6720746865206e64626d283329206c696272617279> -4.123 F<2e>-.65 E F2<53656e646d61696c>6.623 E F1 1.623 -<6d75737420626520636f6d70696c65642077697468>4.123 F F0<4e44424d>174 -144.6 Q F1<64658c6e65642e>2.5 E 49.51<6274726565204461746162617365>102 -160.8 R .678 -<6c6f6f6b757073207573696e672074686520627472656520696e74657266>3.178 F -.677<61636520746f20746865204265726b>-.1 F<656c65>-.1 E 3.177<7944>-.15 G -3.177<426c>-3.177 G<696272617279>-3.177 E<2e>-.65 E F2<53656e646d61696c> -5.677 E F1<6d75737420626520636f6d70696c65642077697468>174 172.8 Q F0 -<4e45574442>2.5 E F1<64658c6e65642e>2.5 E 51.17 -<68617368204461746162617365>102 189 R .828 -<6c6f6f6b757073207573696e6720746865206861736820696e74657266>3.328 F .828 -<61636520746f20746865204265726b>-.1 F<656c65>-.1 E 3.328<7944>-.15 G -3.329<426c>-3.328 G<696272617279>-3.329 E<2e>-.65 E F2<53656e646d61696c> -5.829 E F1<6d75737420626520636f6d70696c65642077697468>174 201 Q F0 -<4e45574442>2.5 E F1<64658c6e65642e>2.5 E 57.83<6e6973204e4953>102 217.2 -R<6c6f6f6b7570732e>2.5 E F2<53656e646d61696c>5 E F1 -<6d75737420626520636f6d70696c65642077697468>2.5 E F0<4e4953>2.5 E F1 -<64658c6e65642e>2.5 E 41.16<6e6973706c7573204e49532b>102 233.4 R -<6c6f6f6b7570732e>3.733 E F2<53656e646d61696c>6.233 E F1 1.233 -<6d75737420626520636f6d70696c65642077697468>3.733 F F0<4e4953504c5553> -3.733 E F1 3.733<64658c6e65642e20546865>3.733 F<6172>3.733 E<67752d>-.18 -E .495<6d656e7420697320746865206e616d65206f6620746865207461626c6520746f -2075736520666f72206c6f6f6b7570732c20616e6420746865>174 245.4 R F0 -2.995 E F1<616e64>2.995 E F02.995 E F1 .495 -<8d616773206d6179206265>2.995 F<7573656420746f2073657420746865206b>174 -257.4 Q .3 -.15<65792061>-.1 H<6e642076>.15 E -<616c756520636f6c756d6e73207265737065637469>-.25 E -.15<7665>-.25 G -<6c79>.15 E<2e>-.65 E 43.39<686573696f6420486573696f64>102 273.6 R -<6c6f6f6b7570732e>2.5 E F2<53656e646d61696c>5 E F1 -<6d75737420626520636f6d70696c65642077697468>2.5 E F0<484553494f44>2.5 E -F1<64658c6e65642e>2.5 E 52.28<6c646170204c44>102 289.8 R 1.784 -<41502058353030206469726563746f7279206c6f6f6b7570732e>-.4 F F2 -<53656e646d61696c>6.783 E F1 1.783 -<6d75737420626520636f6d70696c65642077697468>4.283 F F0<4c44>4.283 E -<41504d4150>-.35 E F1 2.965<64658c6e65642e20546865>174 301.8 R .465<6d61 -7020737570706f727473206d6f7374206f6620746865207374616e64617264206172> -2.965 F .466<67756d656e747320616e64206d6f7374206f662074686520636f6d2d> --.18 F .3<6d616e64206c696e65206172>174 313.8 R .3 -<67756d656e7473206f6620746865>-.18 F F2<6c64617073656172>2.8 E -.15 -<6368>-.37 G F1 2.8<70726f6772616d2e204e6f7465>2.95 F .3 -<746861742c20627920646566>2.8 F .3<61756c742c20696620612073696e676c65> --.1 F .628<7175657279206d617463686573206d756c7469706c652076>174 325.8 R -.628<616c7565732c206f6e6c7920746865208c7273742076>-.25 F .629 -<616c75652077696c6c2062652072657475726e656420756e6c65737320746865>-.25 F -F03.129 E F1<2876>174 337.8 Q .249 -<616c756520736570617261746f7229206d6170208d6167206973207365742e>-.25 F -.249<416c736f2c20746865>5.249 F F02.749 E F1 .248 -<6d6170208d61672077696c6c2074726561742061206d756c7469706c652076>2.749 F -<616c7565>-.25 E -<72657475726e2061732069662074686572652077657265206e6f206d6174636865732e> -174 349.8 Q 41.17<6e6574696e666f204e655854>102 366 R -<4e6574496e666f206c6f6f6b7570732e>2.5 E F2<53656e646d61696c>5 E F1 -<6d75737420626520636f6d70696c65642077697468>2.5 E F0<4e4554494e464f>2.5 -E F1<64658c6e65642e>2.5 E<7465>102 382.2 Q 54.65<78742054>-.15 F -.15 -<6578>-.7 G 2.917<748c>.15 G .417<6c65206c6f6f6b7570732e>-2.917 F .417 -<54686520666f726d6174206f6620746865207465>5.417 F .418 -<7874208c6c652069732064658c6e656420627920746865>-.15 F F02.918 E -F1<286b>2.918 E .718 -.15<6579208c>-.1 H .418<656c64206e756d2d>.15 F -<626572292c>174 394.2 Q F02.5 E F1<2876>2.5 E -<616c7565208c656c64206e756d626572292c20616e64>-.25 E F02.5 E F1 -<288c656c642064656c696d6974657229208d6167732e>2.5 E 59.5<7068205048>102 -410.4 R 1.394<7175657279206d61702e>3.894 F<436f6e74726962>6.394 E 1.394< -7574656420616e6420737570706f72746564206279204d61726b20526f74682c20726f74 -6840756975632e6564752e>-.2 F -.15<466f>6.394 G<72>.15 E .017<6d6f726520 -696e666f726d6174696f6e2c20636f6e73756c7420746865207765622073697465209968 -7474703a2f2f7777772d6465>174 422.4 R -.65<762e>-.25 G -<63697465732e756975632e6564752f73656e646d61696c2f9a2e>.65 E 55.61 -<6e7364206e7364>102 438.6 R 1.599 -<6d617020666f72204952495820362e3520616e64206c61746572>4.1 F 6.599<2e43> --.55 G<6f6e74726962>-6.599 E 1.599 -<7574656420616e6420737570706f7274656420627920426f62204d656e6465206f66> --.2 F<5347492c206d656e6465407367692e636f6d2e>174 450.6 Q 53.39 -<7374616220496e7465726e616c>102 466.8 R -<73796d626f6c207461626c65206c6f6f6b7570732e>2.5 E -<5573656420696e7465726e616c6c7920666f7220616c696173696e672e>5 E 38.38 -<696d706c69636974205265616c6c79>102 483 R .546<73686f756c64206265206361 -6c6c65642099616c6961739a208a2074686973206973207573656420746f206765742074 -686520646566>3.046 F .546<61756c74206c6f6f6b75707320666f7220616c696173> --.1 F<8c6c65732c20616e642069732074686520646566>174 495 Q<61756c74206966 -206e6f20636c6173732069732073706563698c656420666f7220616c696173208c6c6573 -2e>-.1 E 52.84<75736572204c6f6f6b73>102 511.2 R .477 -<7570207573657273207573696e67>2.977 F F2 -.1<6765>2.977 G<7470776e616d> -.1 E F1 2.977<2833292e20546865>B F02.977 E F1 .476 -<8d61672063616e206265207573656420746f207370656369667920746865206e616d65> -2.976 F .142<6f6620746865208c656c6420746f2072657475726e2028616c74686f75 -67682074686973206973206e6f726d616c6c792075736564206f6e6c7920746f20636865 -636b207468652065>174 523.2 R .142<78697374656e6365206f66>-.15 F 2.5 -<6175>174 535.2 S<736572292e>-2.5 E 52.83<686f73742043616e6f6e698c6573> -102 551.4 R .2<686f737420646f6d61696e206e616d65732e>2.7 F<4769>5.2 E --.15<7665>-.25 G 2.7<6e6168>.15 G .2 -<6f7374206e616d652069742063616c6c7320746865206e616d652073657276>-2.7 F -.2<657220746f208c6e64>-.15 F -<7468652063616e6f6e6963616c206e616d6520666f72207468617420686f73742e>174 -563.4 Q 40.61<626573746d782052657475726e73>102 579.6 R 2.478<7468652062 -657374204d58207265636f726420666f72206120686f7374206e616d65206769>4.978 F --.15<7665>-.25 G 4.979<6e61>.15 G 4.979<7374>-4.979 G 2.479<6865206b> --4.979 F -.15<6579>-.1 G 7.479<2e54>-.5 G 2.479<68652063757272656e74> --7.479 F .722<6d616368696e6520697320616c>174 591.6 R -.1<7761>-.1 G .721 -<797320707265666572726564208a20746861742069732c206966207468652063757272 -656e74206d616368696e65206973206f6e65206f662074686520686f737473>.1 F .218 -<6c69737465642061732061206c6f>174 603.6 R .219<776573742d70726566657265 -6e6365204d58207265636f72642c207468656e2069742077696c6c206265206775617261 -6e7465656420746f2062652072657475726e65642e>-.25 F .961<546869732063616e -206265207573656420746f208c6e64206f75742069662074686973206d616368696e6520 -69732074686520746172>174 615.6 R .961 -<67657420666f7220616e204d58207265636f72642c20616e64>-.18 F .313 -<6d61696c2063616e206265206163636570746564206f6e20746861742062617369732e> -174 627.6 R .313<496620746865>5.313 F F02.813 E F1 .313 -<8d6167206973206769>2.813 F -.15<7665>-.25 G .313 -<6e2c207468656e20616c6c204d58206e616d657320617265>.15 F -<72657475726e65642c2073657061726174656420627920746865206769>174 639.6 Q --.15<7665>-.25 G 2.5<6e64>.15 G<656c696d69746572>-2.5 E<2e>-.55 E 55.61 -<646e732054686973>102 655.8 R 2.248<6d617020726571756972657320746865206f -7074696f6e202d5220746f20737065636966792074686520444e53207265736f75726365 -207265636f7264207479706520746f>4.748 F 1.229 -<6c6f6f6b75702e2054686520666f6c6c6f>174 667.8 R 1.229<77696e672074797065 -732061726520737570706f727465643a20412c20414141412c2041465344422c20434e> --.25 F 1.229<414d452c204d582c>-.35 F .662<4e532c205054522c205352>174 -679.8 R 3.242 -1.29<562c2061>-.8 H .662<6e6420545854>1.29 F 5.662<2e41> --.74 G .661<6d6170206c6f6f6b75702077696c6c2072657475726e206f6e6c79206f6e -65207265636f72642e>-2.5 F .661<48656e636520666f72>5.661 F .558<736f6d65 -2074797065732c20652e672e2c204d58207265636f7264732c207468652072657475726e -2076>174 691.8 R .558<616c7565206d6967687420626520612072616e646f6d20656c -656d656e74206f6620746865>-.25 F<6c6973742064756520746f2072616e646f6d697a -696e6720696e2074686520444e53207265736f6c76>174 703.8 Q<6572>-.15 E<2e> --.55 E 0 Cg EP +/F0 10/Times-Bold@0 SF 193.36(SMM:08-82 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF(map e) +133.66 96 Q(xplicitly)-.15 E(.\))-.65 E 12.5(\(2\) Def)107 112.2 R .385 +(ault host name e)-.1 F .385 +(xtension is consistent throughout processing; v)-.15 F .384(ersion le) +-.15 F -.15(ve)-.25 G 2.884(lo).15 G .384(ne con\214gu-)-2.884 F .83 +(rations turned of)133.66 124.2 R 3.33(fd)-.25 G .83(omain e)-3.33 F .83 +(xtension \(that is, adding the local domain name\) during certain)-.15 +F .4(points in processing.)133.66 136.2 R -1.11(Ve)5.4 G .4(rsion le) +1.11 F -.15(ve)-.25 G 2.9(lt).15 G .6 -.1(wo c)-2.9 H .4 +(on\214gurations are e).1 F .4(xpected to include a trailing dot)-.15 F +(to indicate that the name is already canonical.)133.66 148.2 Q 12.5 +(\(3\) Local)107 164.4 R .072 +(names that are not aliases are passed through a ne)2.572 F 2.572(wd) +-.25 G .072(istinguished ruleset \214v)-2.572 F .072(e; this can)-.15 F +.14(be used to append a local relay)133.66 176.4 R 5.139(.T)-.65 G .139 +(his beha)-5.139 F .139(vior can be pre)-.2 F -.15(ve)-.25 G .139 +(nted by resolving the local name).15 F .993(with an initial `@'.)133.66 +188.4 R .993(That is, something that resolv)5.993 F .993 +(es to a local mailer and a user name of)-.15 F .602 +(\231vikki\232 will be passed through ruleset \214v)133.66 200.4 R .601 +(e, b)-.15 F .601(ut a user name of \231@vikki\232 will ha)-.2 F .901 +-.15(ve t)-.2 H .601(he `@').15 F .919 +(stripped, will not be passed through ruleset \214v)133.66 212.4 R .919 +(e, b)-.15 F .92(ut will otherwise be treated the same as)-.2 F .63 +(the prior e)133.66 224.4 R 3.13(xample. The)-.15 F -.15(ex)3.13 G .629 +(pectation is that this might be used to implement a polic).15 F 3.129 +(yw)-.15 G(here)-3.129 E .734(mail sent to \231vikki\232 w)133.66 236.4 +R .734(as handled by a central hub, b)-.1 F .734 +(ut mail sent to \231vikki@localhost\232 w)-.2 F(as)-.1 E(deli)133.66 +248.4 Q -.15(ve)-.25 G(red directly).15 E(.)-.65 E -1.11(Ve)127 264.6 S +1.383(rsion le)1.11 F -.15(ve)-.25 G 3.883(lt).15 G 1.383 +(hree \214les allo)-3.883 F 3.882(w#i)-.25 G 1.382 +(nitiated comments on all lines.)-3.882 F 1.382 +(Exceptions are backslash)6.382 F(escaped # marks and the $# syntax.)102 +276.6 Q -1.11(Ve)127 292.8 S 1.207(rsion le)1.11 F -.15(ve)-.25 G 3.707 +(lf).15 G 1.207(our con\214gurations are completely equi)-3.707 F -.25 +(va)-.25 G 1.208(lent to le).25 F -.15(ve)-.25 G 3.708(lt).15 G 1.208 +(hree for historical rea-)-3.708 F(sons.)102 304.8 Q -1.11(Ve)127 321 S +1.234(rsion le)1.11 F -.15(ve)-.25 G 3.734<6c8c>.15 G 1.534 -.15(ve c) +-3.734 H 1.234(on\214guration \214les change the def).15 F 1.234 +(ault de\214nition of)-.1 F F0($w)3.734 E F1 1.234 +(to be just the \214rst)3.734 F(component of the hostname.)102 333 Q +-1.11(Ve)127 349.2 S 1.588(rsion le)1.11 F -.15(ve)-.25 G 4.088(ls).15 G +1.588(ix con\214guration \214les change man)-4.088 F 4.088(yo)-.15 G +4.089(ft)-4.088 G 1.589(he local processing options \(such as)-4.089 F +.481(aliasing and matching the be)102 361.2 R .481(ginning of the addre\ +ss for `|' characters\) to be mailer \215ags; this allo)-.15 F(ws)-.25 E +1.344(\214ne-grained control o)102 373.2 R -.15(ve)-.15 G 3.844(rt).15 G +1.344(he special local processing.)-3.844 F(Le)6.345 E -.15(ve)-.25 G +3.845(ls).15 G 1.345(ix con\214guration \214les may also use)-3.845 F +1.222(long option names.)102 385.2 R(The)6.222 E F0(ColonOkInAddr)3.722 +E F1 1.222(option \(to allo)3.722 F 3.721(wc)-.25 G 1.221 +(olons in the local-part of addresses\))-3.721 F(def)102 397.2 Q(aults) +-.1 E F0(on)3.44 E F1 .94(for lo)3.44 F .94(wer numbered con\214guratio\ +n \214les; the con\214guration \214le requires some additional)-.25 F +(intelligence to properly handle the RFC 822 group construct.)102 409.2 +Q -1.11(Ve)127 425.4 S 1.97(rsion le)1.11 F -.15(ve)-.25 G 4.47(ls).15 G +-2.15 -.25(ev e)-4.47 H 4.47(nc).25 G 1.97 +(on\214guration \214les used ne)-4.47 F 4.47(wo)-.25 G 1.97 +(ption names to replace old macros \()-4.47 F F0($e)A F1(became)102 +437.4 Q F0(SmtpGr)5.547 E(eetingMessage)-.18 E F1(,)A F0($l)5.547 E F1 +(became)5.547 E F0(UnixFr)5.547 E(omLine)-.18 E F1 5.548(,a)C(nd)-5.548 +E F0($o)5.548 E F1(became)5.548 E F0(OperatorChars)5.548 E F1(.)A .087 +(Also, prior to v)102 449.4 R .087(ersion se)-.15 F -.15(ve)-.25 G .087 +(n, the).15 F F0(F=q)2.587 E F1 .087 +(\215ag \(use 250 instead of 252 return v)2.587 F .086(alue for)-.25 F +/F2 9/Times-Roman@0 SF .086(SMTP VRFY)2.586 F F1(com-)2.586 E(mands\) w) +102 461.4 Q(as assumed.)-.1 E -1.11(Ve)127 477.6 S(rsion le)1.11 E -.15 +(ve)-.25 G 2.5(le).15 G(ight con\214guration \214les allo)-2.5 E(w)-.25 +E F0($#)2.5 E F1(on the left hand side of ruleset lines.)2.5 E -1.11(Ve) +127 493.8 S .422(rsion le)1.11 F -.15(ve)-.25 G 2.922(ln).15 G .423 +(ine con\214guration \214les allo)-2.922 F 2.923(wp)-.25 G .423 +(arentheses in rulesets, i.e. the)-2.923 F 2.923(ya)-.15 G .423 +(re not treated as)-2.923 F(comments and hence remo)102 505.8 Q -.15(ve) +-.15 G(d.).15 E -1.11(Ve)127 522 S(rsion le)1.11 E -.15(ve)-.25 G 2.5 +(lt).15 G(en con\214guration \214les allo)-2.5 E 2.5(wq)-.25 G +(ueue group de\214nitions.)-2.5 E(The)127 538.2 Q F0(V)2.678 E F1 .178 +(line may ha)2.678 F .478 -.15(ve a)-.2 H 2.677(no).15 G(ptional)-2.677 +E F0(/)2.677 E/F3 10/Times-Italic@0 SF(vendor)A F1 .177 +(to indicate that this con\214guration \214le uses modi\214ca-)2.677 F +.866(tions speci\214c to a particular v)102 552.2 R(endor)-.15 E/F4 7 +/Times-Roman@0 SF(22)-4 I F1 5.866(.Y)4 K .866(ou may use \231/Berk) +-6.966 F(ele)-.1 E .865(y\232 to emphasize that this con\214gura-)-.15 F +(tion \214le uses the Berk)102 564.2 Q(ele)-.1 E 2.5(yd)-.15 G +(ialect of)-2.5 E F3(sendmail)2.5 E F1(.)A F0 2.5(5.9. K)87 588.2 R 2.5 +<8a4b>2.5 G(ey File Declaration)-2.75 E F1 +(Special maps can be de\214ned using the line:)127 604.4 Q +(Kmapname mapclass ar)142 620.6 Q(guments)-.18 E(The)102 636.8 Q F3 +(mapname)2.75 E F1 .251 +(is the handle by which this map is referenced in the re)2.75 F .251 +(writing rules.)-.25 F(The)5.251 E F3(mapclass)2.751 E F1(is)2.751 E +1.889(the name of a type of map; these are compiled in to)102 648.8 R F3 +(sendmail)4.389 E F1 6.888(.T)C(he)-6.888 E F3(ar)4.388 E(guments)-.37 E +F1 1.888(are interpreted)4.388 F .79(depending on the class; typically) +102 660.8 R 3.29(,t)-.65 G .791(here w)-3.29 F .791(ould be a single ar) +-.1 F .791(gument naming the \214le containing the)-.18 F .32 LW 76 +670.4 72 670.4 DL 80 670.4 76 670.4 DL 84 670.4 80 670.4 DL 88 670.4 84 +670.4 DL 92 670.4 88 670.4 DL 96 670.4 92 670.4 DL 100 670.4 96 670.4 DL +104 670.4 100 670.4 DL 108 670.4 104 670.4 DL 112 670.4 108 670.4 DL 116 +670.4 112 670.4 DL 120 670.4 116 670.4 DL 124 670.4 120 670.4 DL 128 +670.4 124 670.4 DL 132 670.4 128 670.4 DL 136 670.4 132 670.4 DL 140 +670.4 136 670.4 DL 144 670.4 140 670.4 DL 148 670.4 144 670.4 DL 152 +670.4 148 670.4 DL 156 670.4 152 670.4 DL 160 670.4 156 670.4 DL 164 +670.4 160 670.4 DL 168 670.4 164 670.4 DL 172 670.4 168 670.4 DL 176 +670.4 172 670.4 DL 180 670.4 176 670.4 DL 184 670.4 180 670.4 DL 188 +670.4 184 670.4 DL 192 670.4 188 670.4 DL 196 670.4 192 670.4 DL 200 +670.4 196 670.4 DL 204 670.4 200 670.4 DL 208 670.4 204 670.4 DL 212 +670.4 208 670.4 DL 216 670.4 212 670.4 DL/F5 5/Times-Roman@0 SF(22)93.6 +680.8 Q/F6 8/Times-Roman@0 SF .214(And of course, v)3.2 J .214 +(endors are encouraged to add themselv)-.12 F .214 +(es to the list of recognized v)-.12 F .214 +(endors by editing the routine)-.12 F/F7 8/Times-Italic@0 SF(setvendor) +2.214 E F6(in)2.214 E F7(conf)72 693.6 Q(.c)-.12 E F6 4(.P)C +(lease send e-mail to sendmail@Sendmail.ORG to re)-4 E(gister your v) +-.12 E(endor dialect.)-.12 E 0 Cg EP %%Page: 83 79 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3833>195.86 E -/F1 10/Times-Roman@0 SF 52.29<617270612052657475726e73>102 96 R .724 -<7468652060>3.224 F<607265>-.74 E -.15<7665>-.25 G<72736527>.15 E 3.224 -<2766>-.74 G .724<6f7220746865206769>-3.224 F -.15<7665>-.25 G 3.224 -<6e49>.15 G 3.224<5028>-3.224 G .723<49507634206f7220495076362920616464 -726573732c20692e652e2c2074686520737472696e6720666f72>-3.224 F .431 -<74686520505452206c6f6f6b75702c2062>174 108 R .431 -<757420776974686f757420747261696c696e67>-.2 F F0<6970362e6172>2.931 E -<7061>-.1 E F1<6f72>2.931 E F0<696e2d61646472>2.931 E<2e6172>-1 E<7061> --.1 E F1 5.431<2e46>C .431<6f722065>-5.581 F .431 -<78616d706c652c20746865>-.15 F<666f6c6c6f>174 120 Q -<77696e6720636f6e8c6775726174696f6e206c696e65733a>-.25 E -<4b617270612061727061>214 136.2 Q<5341727061>214 148.2 Q 88.19 -<52242b20243a>214 160.2 R<242861727061202431202429>2.5 E -.1<776f>174 -176.4 S<726b206c696b>.1 E 2.5<6574>-.1 G -<68697320696e2074657374206d6f64653a>-2.5 E<73656e646d61696c202d6274>214 -192.6 Q<414444524553532054455354204d4f4445202872756c657365742033204e4f> -214 204.6 Q 2.5<5461>-.4 G<75746f6d61746963616c6c7920696e>-2.5 E -.2 -<766f>-.4 G -.1<6b65>.2 G<6429>.1 E -<456e746572203c72756c657365743e203c616464726573733e>214 216.6 Q 2.5 -<3e41>214 228.6 S -<72706120495076363a313a323a646561643a626565663a393837363a303a303a31>-2.5 -E 35<4172706120696e7075743a>214 240.6 R<49507636203a2031203a2032203a2064 -656164203a2062656566203a2039383736203a2030203a2030203a2031>2.5 E 30 -<417270612072657475726e733a>214 252.6 R 2.5<312e302e302e302e302e302e302e -302e302e302e302e302e362e372e382e392e662e652e652e622e642e612e652e642e322e -302e302e302e312e302e302e30>2.5 G 2.5<3e41>214 264.6 S -<72706120312e322e332e34>-2.5 E 35<4172706120696e7075743a>214 276.6 R 2.5 -<312e322e332e34>2.5 G 30<417270612072657475726e733a>214 288.6 R 2.5 -<342e332e322e31>2.5 G 32.85<73657175656e636520546865>102 309 R<6172>3.35 -E .849<67756d656e7473206f6e2074686520604b27206c696e65206172652061206c69 -7374206f66206d6170733b2074686520726573756c74696e67206d617020736561726368 -657320746865>-.18 F<6172>174 321 Q .438<67756d656e74206d61707320696e206f -7264657220756e74696c206974208c6e64732061206d6174636820666f72207468652069 -6e64696361746564206b>-.18 F -.15<6579>-.1 G 5.439<2e46>-.5 G .439 -<6f722065>-5.589 F<78616d706c652c>-.15 E<696620746865206b>174 333 Q .3 --.15<65792064>-.1 H<658c6e6974696f6e2069733a>.15 E<4b6d617031202e2e2e> -214 349.2 Q<4b6d617032202e2e2e>214 361.2 Q -<4b7365716d61702073657175656e6365206d617031206d617032>214 373.2 Q .968 -<7468656e2061206c6f6f6b7570206167>174 389.4 R .968<61696e73742099736571 -6d61709a208c72737420646f65732061206c6f6f6b757020696e206d6170312e>-.05 F -.968<4966207468617420697320666f756e642c206974>5.968 F -<72657475726e7320696d6d6564696174656c79>174 401.4 Q 5<2e4f>-.65 G -<74686572776973652c207468652073616d65206b>-5 E .3 -.15<65792069>-.1 H -2.5<7375>.15 G<73656420666f72206d6170322e>-2.5 E 43.94 -<7379736c6f6720746865>102 417.6 R -.1<6b65>2.5 G 2.5<7969>-.05 G 2.5 -<736c>-2.5 G<6f6767656420766961>-2.5 E/F2 10/Times-Italic@0 SF -<7379736c6f>2.5 E<6764>-.1 E F1 2.5<2838292e20546865>1.666 F -<6c6f6f6b75702072657475726e732074686520656d70747920737472696e672e>2.5 E -43.39<737769746368204d756368>102 433.8 R<6c696b>2.8 E 2.8<6574>-.1 G .3 -<6865209973657175656e63659a206d61702065>-2.8 F .301<78636570742074686174 -20746865206f72646572206f66206d6170732069732064657465726d696e656420627920 -746865>-.15 F .392<73657276696365207377697463682e>174 445.8 R .392 -<546865206172>5.392 F .391<67756d656e7420697320746865206e616d65206f6620 -746865207365727669636520746f206265206c6f6f6b>-.18 F .391 -<65642075703b207468652076>-.1 F<616c2d>-.25 E 1.492<7565732066726f6d2074 -68652073657276696365207377697463682061726520617070656e64656420746f207468 -65206d6170206e616d6520746f20637265617465206e65>174 457.8 R 3.993<776d> --.25 G<6170>-3.993 E 2.5<6e616d65732e2046>174 469.8 R<6f722065>-.15 E -<78616d706c652c20636f6e736964657220746865206b>-.15 E .3 -.15<65792064> --.1 H<658c6e6974696f6e3a>.15 E<4b616c692073776974636820616c6961736573> -214 486 Q<746f6765746865722077697468207468652073657276696365207377697463 -6820656e7472793a>174 502.2 Q 78.84<616c6961736573206e6973>214 518.4 R -<8c6c6573>2.5 E 1.633<54686973206361757365732061207175657279206167>174 -534.6 R 1.633<61696e737420746865206d61702099616c699a20746f20736561726368 -206d617073206e616d65642099616c692e6e69739a20616e64>-.05 F -<99616c692e8c6c65739a20696e2074686174206f72646572>174 546.6 Q<2e>-.55 E -37.84<646571756f7465205374726970>102 562.8 R .96 -<646f75626c652071756f746573202822292066726f6d2061206e616d652e>3.46 F -.961<497420646f6573206e6f74207374726970206261636b736c61736865732c20616e -642077696c6c206e6f74>5.961 F .173<73747269702071756f74657320696620746865 -20726573756c74696e6720737472696e672077>174 574.8 R .172<6f756c6420636f6e -7461696e20756e7363616e6e61626c652073796e7461782028746861742069732c206261 -736963>-.1 F .386<6572726f7273206c696b>174 586.8 R 2.886<6575>-.1 G .386 -<6e62616c616e63656420616e676c6520627261636b>-2.886 F .386<6574733b206d6f -726520736f7068697374696361746564206572726f7273207375636820617320756e6b6e -6f>-.1 F<776e>-.25 E .252<686f73747320617265206e6f7420636865636b>174 -598.8 R 2.752<6564292e20546865>-.1 F .251<696e74656e7420697320666f722075 -7365207768656e20747279696e6720746f20616363657074206d61696c2066726f6d2073 -79732d>2.752 F<74656d732073756368206173204445436e6574207468617420726f75 -74696e656c792071756f7465206f64642073796e7461782073756368206173>174 610.8 -Q<2234396572733a3a7562656c6c22>214 627 Q 2.5<4174>174 643.2 S<7970696361 -6c2075736167652069732070726f6261626c7920736f6d657468696e67206c696b>-2.5 -E<653a>-.1 E 0 Cg EP +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-83)195.86 E/F1 10/Times-Roman@0 SF(map.)102 96 Q +(Maps are referenced using the syntax:)127 112.2 Q($\()142 128.4 Q/F2 10 +/Times-Italic@0 SF(map k)2.5 E -.3(ey)-.1 G F1($@)2.8 E F2(ar)2.5 E +(guments)-.37 E F1($:)2.5 E F2(default)2.5 E F1($\))2.5 E .641 +(where either or both of the)102 144.6 R F2(ar)3.141 E(guments)-.37 E F1 +(or)3.141 E F2(default)3.141 E F1 .64(portion may be omitted.)3.141 F +(The)5.64 E F2 .64($@ ar)3.14 F(guments)-.37 E F1(may)3.14 E 1.276 +(appear more than once.)102 156.6 R 1.276(The indicated)6.276 F F2 -.1 +(ke)3.776 G(y)-.2 E F1(and)3.776 E F2(ar)3.776 E(guments)-.37 E F1 1.277 +(are passed to the appropriate mapping)3.777 F 3.253(function. If)102 +168.6 R .753(it returns a v)3.253 F .753(alue, it replaces the input.) +-.25 F .753(If it does not return a v)5.753 F .753(alue and the)-.25 F +F2(default)3.253 E F1(is)3.253 E(speci\214ed, the)102 180.6 Q F2 +(default)2.5 E F1(replaces the input.)2.5 E +(Otherwise, the input is unchanged.)5 E(The)127 196.8 Q F2(ar)4.063 E +(guments)-.37 E F1 1.563(are passed to the map for arbitrary use.)4.063 +F 1.564(Most map classes can interpolate)6.564 F .883(these ar)102 208.8 +R .883(guments into their v)-.18 F .883(alues using the syntax \231%) +-.25 F F2(n)A F1 3.382<9a28>C(where)-3.382 E F2(n)3.382 E F1 .882 +(is a digit\) to indicate the corre-)3.382 F(sponding)102 220.8 Q F2(ar) +2.5 E(gument)-.37 E F1 5(.A)C -.18(rg)-5 G +(ument \231%0\232 indicates the database k).18 E -.15(ey)-.1 G 5(.F)-.5 +G(or e)-5.15 E(xample, the rule)-.15 E(R$\255 ! $+)142 237 Q +($: $\(uucp $1 $@ $2 $: $2 @ $1 . UUCP $\))71.72 E 1.269(Looks up the U\ +UCP name in a \(user de\214ned\) UUCP map; if not found it turns it int\ +o \231.UUCP\232)102 253.2 R 2.5(form. The)102 265.2 R +(database might contain records lik)2.5 E(e:)-.1 E(decv)142 281.4 Q +77.43(ax %1@%0.DEC.COM)-.25 F 72.19(research %1@%0.A)142 293.4 R(TT) +-1.11 E(.COM)-.74 E(Note that)102 309.6 Q F2(default)2.5 E F1 +(clauses ne)2.5 E -.15(ve)-.25 G 2.5(rd).15 G 2.5(ot)-2.5 G +(his mapping.)-2.5 E .735(The b)127 325.8 R .735(uilt-in map with both \ +name and class \231host\232 is the host name canonicalization lookup.) +-.2 F(Thus, the syntax:)102 337.8 Q($\(host)142 354 Q F2(hostname)2.5 E +F1($\))A(is equi)102 370.2 Q -.25(va)-.25 G(lent to:).25 E($[)142 386.4 +Q F2(hostname)A F1($])A(There are man)127 406.8 Q 2.5(yd)-.15 G +(e\214ned classes.)-2.5 E 55.06(cdb Database)102 423 R .087 +(lookups using the cdb\(3\) library)2.587 F(.)-.65 E F2(Sendmail)5.087 E +F1 .088(must be compiled with)2.587 F F0(CDB)2.588 E F1(de\214ned.)174 +435 Q 51.72(dbm Database)102 451.2 R 1.623 +(lookups using the ndbm\(3\) library)4.123 F(.)-.65 E F2(Sendmail)6.623 +E F1 1.623(must be compiled with)4.123 F F0(NDBM)174 463.2 Q F1 +(de\214ned.)2.5 E 49.51(btree Database)102 479.4 R .677 +(lookups using the btree interf)3.177 F .677(ace to the Berk)-.1 F(ele) +-.1 E 3.178(yD)-.15 G 3.178(Bl)-3.178 G(ibrary)-3.178 E(.)-.65 E F2 +(Sendmail)5.678 E F1(must be compiled with)174 491.4 Q F0(NEWDB)2.5 E F1 +(de\214ned.)2.5 E 51.17(hash Database)102 507.6 R .828 +(lookups using the hash interf)3.329 F .828(ace to the Berk)-.1 F(ele) +-.1 E 3.328(yD)-.15 G 3.328(Bl)-3.328 G(ibrary)-3.328 E(.)-.65 E F2 +(Sendmail)5.828 E F1(must be compiled with)174 519.6 Q F0(NEWDB)2.5 E F1 +(de\214ned.)2.5 E 57.83(nis NIS)102 535.8 R(lookups.)2.5 E F2(Sendmail)5 +E F1(must be compiled with)2.5 E F0(NIS)2.5 E F1(de\214ned.)2.5 E 41.16 +(nisplus NIS+)102 552 R(lookups.)3.733 E F2(Sendmail)6.233 E F1 1.233 +(must be compiled with)3.733 F F0(NISPLUS)3.733 E F1 3.733 +(de\214ned. The)3.733 F(ar)3.733 E(gu-)-.18 E .495 +(ment is the name of the table to use for lookups, and the)174 564 R F0 +2.995 E F1(and)2.995 E F02.995 E F1 .495(\215ags may be) +2.995 F(used to set the k)174 576 Q .3 -.15(ey a)-.1 H(nd v).15 E +(alue columns respecti)-.25 E -.15(ve)-.25 G(ly).15 E(.)-.65 E 43.39 +(hesiod Hesiod)102 592.2 R(lookups.)2.5 E F2(Sendmail)5 E F1 +(must be compiled with)2.5 E F0(HESIOD)2.5 E F1(de\214ned.)2.5 E 52.28 +(ldap LD)102 608.4 R 1.783(AP X500 directory lookups.)-.4 F F2(Sendmail) +6.783 E F1 1.784(must be compiled with)4.283 F F0(LD)4.284 E(APMAP)-.35 +E F1 2.966(de\214ned. The)174 620.4 R .466 +(map supports most of the standard ar)2.966 F .465 +(guments and most of the com-)-.18 F .3(mand line ar)174 632.4 R .3 +(guments of the)-.18 F F2(ldapsear)2.8 E -.15(ch)-.37 G F1 2.8 +(program. Note)2.95 F .3(that, by def)2.8 F .3(ault, if a single)-.1 F +.629(query matches multiple v)174 644.4 R .629 +(alues, only the \214rst v)-.25 F .628(alue will be returned unless the) +-.25 F F03.128 E F1(\(v)174 656.4 Q 1.22 +(alue separator\) map option is set.)-.25 F 1.22(Also, the)6.22 F F0 +3.72 E F1 1.22(map \215ag will treat a multiple)3.72 F -.25(va)174 +668.4 S(lue return as if there were no matches.).25 E 41.17 +(netinfo NeXT)102 684.6 R(NetInfo lookups.)2.5 E F2(Sendmail)5 E F1 +(must be compiled with)2.5 E F0(NETINFO)2.5 E F1(de\214ned.)2.5 E(te)102 +700.8 Q 54.65(xt T)-.15 F -.15(ex)-.7 G 2.918<748c>.15 G .418 +(le lookups.)-2.918 F .418(The format of the te)5.418 F .417 +(xt \214le is de\214ned by the)-.15 F F02.917 E F1(\(k)2.917 E +.717 -.15(ey \214)-.1 H .417(eld num-).15 F(ber\),)174 712.8 Q F0 +2.5 E F1(\(v)2.5 E(alue \214eld number\), and)-.25 E F02.5 E F1 +(\(\214eld delimiter\) options.)2.5 E 0 Cg EP %%Page: 84 80 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d38342053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF<4b646571756f746520646571756f7465>214 96 Q -<2e2e2e>214 120 Q 88.19<5224ad20243a>214 144 R -<2428646571756f7465202431202429>2.5 E<5224ad20242b>214 156 Q -<243a20243e33202431202432>77.55 E<43617265206d7573742062652074616b>174 -172.2 Q<656e20746f20707265>-.1 E -.15<7665>-.25 G<6e7420756e65>.15 E -<7870656374656420726573756c74733b20666f722065>-.15 E<78616d706c652c>-.15 -E<227c736f6d6570726f6772616d203c20696e707574203e206f757470757422>214 -188.4 Q 1.31<77696c6c206861>174 204.6 R 1.61 -.15<76652071>-.2 H 1.31 -<756f7465732073747269707065642c2062>.15 F 1.31<75742074686520726573756c -742069732070726f6261626c79206e6f74207768617420796f752068616420696e206d69 -6e642e>-.2 F -.15<466f>174 216.6 S -<7274756e6174656c792074686573652063617365732061726520726172652e>.15 E -<7265>102 232.8 Q<6765>-.15 E 50.09<7854>-.15 G .489 -<6865206d61702064658c6e6974696f6e206f6e20746865>-50.09 F F0<4b>2.989 E -F1 .489<6c696e6520636f6e7461696e732061207265>2.989 F .488 -<67756c61722065>-.15 F 2.988<787072657373696f6e2e20416e>-.15 F 2.988 -<796b>-.15 G .788 -.15<65792069>-3.088 H .488<6e707574206973>.15 F 1.454 -<636f6d706172656420746f20746861742065>174 244.8 R 1.454 -<787072657373696f6e207573696e672074686520504f534958207265>-.15 F 1.454 -<67756c61722065>-.15 F 1.454 -<787072657373696f6e7320726f7574696e6573207265>-.15 F<672d>-.15 E .291 -<636f6d7028292c207265>174 256.8 R .291<6765727228292c20616e64207265>-.15 -F<6765>-.15 E -.15<7865>-.15 G 2.791<6328292e205265666572>.15 F .291<74 -6f2074686520646f63756d656e746174696f6e20666f722074686f736520726f7574696e -657320666f72>2.791 F .355 -<6d6f726520696e666f726d6174696f6e2061626f757420746865207265>174 268.8 R -.355<67756c61722065>-.15 F .355<787072657373696f6e206d61746368696e672e> --.15 F .356<4e6f207265>5.356 F .356<77726974696e67206f6620746865206b> --.25 F -.15<6579>-.1 G .075<697320646f6e6520696620746865>174 280.8 R F0 -2.575 E F1 .075<8d616720697320757365642e>2.575 F -.4<5769>5.075 G -.075<74686f75742069742c20746865206b>.4 F .374 -.15<65792069>-.1 H 2.574 -<7364>.15 G .074<6973636172646564206f72206966>-2.574 F F02.574 E -F1 .074<696620757365642c206974206973>2.574 F .905<7375627374697475746564 -2062792074686520737562737472696e67206d6174636865732c2064656c696d69746564 -206279>174 292.8 R F0<247c>3.405 E F1 .905 -<6f722074686520737472696e672073706563698c65642077697468>3.405 F -<74686520746865>174 304.8 Q F02.5 E F1 2.5<8d61672e20546865>2.5 F -<8d6167732061>2.5 E -.25<7661>-.2 G -<696c61626c6520666f7220746865206d617020617265>.25 E 9.17<2d6e206e6f74> -214 321 R 10.84<2d662063617365>214 333 R<73656e73697469>2.5 E -.15<7665> --.25 G 9.17<2d62206261736963>214 345 R<7265>2.5 E<67756c61722065>-.15 E -<787072657373696f6e732028646566>-.15 E<61756c742069732065>-.1 E -<7874656e64656429>-.15 E 10.28<2d7320737562737472696e67>214 357 R -<6d61746368>2.5 E 9.17<2d6420736574>214 369 R -<7468652064656c696d69746572207573656420666f72202d73>2.5 E 9.73 -<2d6120617070656e64>214 381 R<737472696e6720746f206b>2.5 E -.15<6579>-.1 -G 6.39<2d6d206d61746368>214 393 R<6f6e6c79>2.5 E 2.5<2c64>-.65 G 2.5 -<6f6e>-2.5 G<6f74207265706c6163652f646973636172642076>-2.5 E<616c7565> --.25 E 6.95<2d4420706572666f726d>214 405 R -<6e6f206c6f6f6b757020696e2064656665727265642064656c69>2.5 E -.15<7665> --.25 G<7279206d6f64652e>.15 E<546865>174 421.2 Q F02.551 E F1 .051 -<8d61672063616e20696e636c75646520616e206f7074696f6e616c20706172616d6574 -65722077686963682063616e206265207573656420746f2073656c656374207468652073 -75622d>2.551 F<737472696e677320696e2074686520726573756c74206f6620746865 -206c6f6f6b75702e>174 433.2 Q -.15<466f>5 G 2.5<7265>.15 G -<78616d706c652c>-2.65 E<2d73312c332c34>214 449.4 Q .696 -<4e6f7465733a20746f206d617463682061>174 465.6 R F0<24>3.197 E F1 .697 -<696e206120737472696e672c205c2424206d75737420626520757365642e>3.197 F -.697<496620746865207061747465726e20636f6e7461696e73207370616365732c> -5.697 F<746865>174 477.6 Q 4.425<796d>-.15 G 1.924<75737420626520726570 -6c6163656420776974682074686520626c616e6b20737562737469747574696f6e206368 -61726163746572>-4.425 F 4.424<2c75>-.4 G 1.924 -<6e6c657373206974206973207370616365>-4.424 F<697473656c662e>174 489.6 Q -35.62<70726f6772616d20546865>102 505.8 R<6172>2.544 E .044 -<67756d656e7473206f6e20746865>-.18 F F0<4b>2.544 E F1 .045<6c696e652061 -72652074686520706174686e616d6520746f20612070726f6772616d20616e6420616e> -2.544 F 2.545<7969>-.15 G .045<6e697469616c20706172616d2d>-2.545 F .176 -<657465727320746f206265207061737365642e>174 517.8 R .176 -<5768656e20746865206d61702069732063616c6c65642c20746865206b>5.176 F .475 --.15<65792069>-.1 H 2.675<7361>.15 G .175 -<6464656420746f2074686520696e697469616c20706172616d652d>-2.675 F .112 -<7465727320616e64207468652070726f6772616d20697320696e>174 529.8 R -.2 -<766f>-.4 G -.1<6b65>.2 G 2.612<6461>.1 G 2.612<7374>-2.612 G .112 -<686520646566>-2.612 F .112<61756c7420757365722f67726f75702069642e>-.1 F -.112<546865208c727374206c696e65206f66207374616e2d>5.112 F .508 -<64617264206f75747075742069732072657475726e6564206173207468652076>174 -541.8 R .508<616c7565206f6620746865206c6f6f6b75702e>-.25 F .508 -<5468697320686173206d616e>5.508 F 3.007<7970>-.15 G .507 -<6f74656e7469616c20736563752d>-3.007 F 1.277<726974792070726f626c656d73 -2c20616e6420686173207465727269626c6520706572666f726d616e63653b2069742073 -686f756c642062652075736564206f6e6c79207768656e206162736f2d>174 553.8 R -<6c7574656c79206e6563657373617279>174 565.8 Q<2e>-.65 E 44.51 -<6d6163726f20536574>102 582 R .32<6f7220636c6561722061206d6163726f2076> -2.82 F 2.82<616c75652e2054>-.25 F 2.82<6f73>-.8 G .32 -<65742061206d6163726f2c2070617373207468652076>-2.82 F .32 -<616c756520617320746865208c727374206172>-.25 F .32<67756d656e7420696e> --.18 F .938<746865206d6170206c6f6f6b75702e>174 594 R 2.538 -.8<546f2063> -5.938 H .939 -<6c6561722061206d6163726f2c20646f206e6f74207061737320616e206172>.8 F -.939<67756d656e7420696e20746865206d6170206c6f6f6b75702e>-.18 F -<546865206d617020616c>174 606 Q -.1<7761>-.1 G -<79732072657475726e732074686520656d70747920737472696e672e>.1 E -<4578616d706c65206f66207479706963616c20757361676520696e636c7564653a>5 E -0 Cg EP +/F0 10/Times-Bold@0 SF 193.36(SMM:08-84 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 59.5 +(ph PH)102 96 R(query map.)2.5 E(Contrib)5 E +(uted and supported by Mark Roth, roth@uiuc.edu.)-.2 E 55.61(nsd nsd)102 +112.2 R 1.599(map for IRIX 6.5 and later)4.099 F 6.599(.C)-.55 G(ontrib) +-6.599 E 1.599(uted and supported by Bob Mende of)-.2 F +(SGI, mende@sgi.com.)174 124.2 Q 53.39(stab Internal)102 140.4 R +(symbol table lookups.)2.5 E(Used internally for aliasing.)5 E 38.38 +(implicit Sequentially)102 156.6 R .132(try a list of a)2.632 F -.25(va) +-.2 G .131(ilable map types:).25 F/F2 10/Times-Italic@0 SF(hash)2.631 E +F1(,)A F2(dbm)2.631 E F1 2.631(,a)C(nd)-2.631 E F2(cdb)2.631 E F1 5.131 +(.I)C 2.631(ti)-5.131 G 2.631(st)-2.631 G .131(he def)-2.631 F(ault)-.1 +E .206(for alias \214les if no class is speci\214ed.)174 168.6 R .207 +(If is no matching map type is found, the te)5.206 F(xt)-.15 E -.15(ve) +174 180.6 S(rsion is used for the alias \214le, b).15 E(ut other maps f) +-.2 E(ail to open.)-.1 E 52.84(user Looks)102 196.8 R .477 +(up users using)2.977 F F2 -.1(ge)2.977 G(tpwnam).1 E F1 2.977 +(\(3\). The)B F02.977 E F1 .476 +(\215ag can be used to specify the name)2.976 F .142(of the \214eld to \ +return \(although this is normally used only to check the e)174 208.8 R +.142(xistence of)-.15 F 2.5(au)174 220.8 S(ser\).)-2.5 E 52.83 +(host Canoni\214es)102 237 R .2(host domain names.)2.7 F(Gi)5.2 E -.15 +(ve)-.25 G 2.7(nah).15 G .2(ost name it calls the name serv)-2.7 F .2 +(er to \214nd)-.15 F(the canonical name for that host.)174 249 Q 40.61 +(bestmx Returns)102 265.2 R 2.478(the best MX record for a host name gi) +4.978 F -.15(ve)-.25 G 4.979(na).15 G 4.979(st)-4.979 G 2.479(he k) +-4.979 F -.15(ey)-.1 G 7.479(.T)-.5 G 2.479(he current)-7.479 F .722 +(machine is al)174 277.2 R -.1(wa)-.1 G .721 +(ys preferred \212 that is, if the current machine is one of the hosts) +.1 F .218(listed as a lo)174 289.2 R .219 +(west-preference MX record, then it will be guaranteed to be returned.) +-.25 F .961(This can be used to \214nd out if this machine is the tar) +174 301.2 R .961(get for an MX record, and)-.18 F .592 +(mail can be accepted on that basis.)174 313.2 R .592(If the)5.592 F F0 +3.092 E F1 .592(option is gi)3.092 F -.15(ve)-.25 G .592 +(n, then all MX names).15 F .361(are returned, separated by the gi)174 +325.2 R -.15(ve)-.25 G 2.861(nd).15 G(elimiter)-2.861 E 5.361(.N)-.55 G +.361(ote: the return v)-5.361 F .36(alue is determin-)-.25 F 1.698 +(istic, i.e., e)174 337.2 R -.15(ve)-.25 G 4.198(ni).15 G 4.198(fm) +-4.198 G 1.698(ultiple MX records ha)-4.198 F 1.999 -.15(ve t)-.2 H +1.699(he same preference, the).15 F 4.199(yw)-.15 G 1.699(ill be)-4.199 +F(returned in the same order)174 349.2 Q(.)-.55 E 55.61(dns This)102 +365.4 R 2.248 +(map requires the option -R to specify the DNS resource record type to) +4.748 F 3.479(lookup. The)174 377.4 R(follo)3.479 E .979 +(wing types are supported: A, AAAA, AFSDB, CN)-.25 F .979(AME, MX,)-.35 +F .107(NS, PTR, SR)174 389.4 R 2.687 -1.29(V, a)-.8 H .107(nd TXT)1.29 F +5.107(.A)-.74 G .107(map lookup will return only one record unless the) +-2.5 F F02.606 E F1(\(v)174 401.4 Q .11 +(alue separator\) option is set.)-.25 F .111 +(Hence for some types, e.g., MX records, the return)5.111 F -.25(va)174 +413.4 S 1.052(lue might be a random element of the results due to rando\ +mizing in the DNS).25 F(resolv)174 425.4 Q(er)-.15 E 2.5(,i)-.4 G 2.5 +(fo)-2.5 G(nly one element is returned.)-2.5 E 52.29(arpa Returns)102 +441.6 R .723(the `)3.223 F(`re)-.74 E -.15(ve)-.25 G(rse').15 E 3.223 +('f)-.74 G .723(or the gi)-3.223 F -.15(ve)-.25 G 3.223(nI).15 G 3.224 +(P\()-3.223 G .724(IPv4 or IPv6\) address, i.e., the string for)-3.224 F +.431(the PTR lookup, b)174 453.6 R .431(ut without trailing)-.2 F F0 +(ip6.ar)2.931 E(pa)-.1 E F1(or)2.931 E F0(in-addr)2.931 E(.ar)-1 E(pa) +-.1 E F1 5.431(.F)C .431(or e)-5.581 F .43(xample, the)-.15 F(follo)174 +465.6 Q(wing con\214guration lines:)-.25 E(Karpa arpa)214 481.8 Q(SArpa) +214 493.8 Q 88.19(R$+ $:)214 505.8 R($\(arpa $1 $\))2.5 E -.1(wo)174 522 +S(rk lik).1 E 2.5(et)-.1 G(his in test mode:)-2.5 E(sendmail -bt)214 +538.2 Q(ADDRESS TEST MODE \(ruleset 3 NO)214 550.2 Q 2.5(Ta)-.4 G +(utomatically in)-2.5 E -.2(vo)-.4 G -.1(ke).2 G(d\)).1 E +(Enter
)214 562.2 Q 2.5(>A)214 574.2 S +(rpa IPv6:1:2:dead:beef:9876:0:0:1)-2.5 E 35(Arpa input:)214 586.2 R +(IPv6 : 1 : 2 : dead : beef : 9876 : 0 : 0 : 1)2.5 E 30(Arpa returns:) +214 598.2 R 2.5 +(1.0.0.0.0.0.0.0.0.0.0.0.6.7.8.9.f.e.e.b.d.a.e.d.2.0.0.0.1.0.0.0)2.5 G +2.5(>A)214 610.2 S(rpa 1.2.3.4)-2.5 E 35(Arpa input:)214 622.2 R 2.5 +(1.2.3.4)2.5 G 30(Arpa returns:)214 634.2 R 2.5(4.3.2.1)2.5 G 32.85 +(sequence The)102 654.6 R(ar)3.349 E .849(guments on the `K' line are a\ + list of maps; the resulting map searches the)-.18 F(ar)174 666.6 Q .439 +(gument maps in order until it \214nds a match for the indicated k)-.18 +F -.15(ey)-.1 G 5.438(.F)-.5 G .438(or e)-5.588 F(xample,)-.15 E +(if the k)174 678.6 Q .3 -.15(ey d)-.1 H(e\214nition is:).15 E 0 Cg EP %%Page: 85 81 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3835>195.86 E -/F1 10/Times-Roman@0 SF<4b73746f72616765206d6163726f>214 96 Q<2e2e2e>214 -120 Q 2.5<2373>214 144 S<6574206d6163726f20247b4d794d6163726f7d20746f20 -7468652072756c65736574206d61746368>-2.5 E .19<52242b20243a>214 156 R -<242873746f72616765207b4d794d6163726f7d202440202431202429202431>2.5 E -2.5<2373>214 168 S<6574206d6163726f20247b4d794d6163726f7d20746f20616e20 -656d70747920737472696e67>-2.5 E .83<52242a20243a>214 180 R -<242873746f72616765207b4d794d6163726f7d202440202429202431>2.5 E 2.5 -<2363>214 192 S<6c656172206d6163726f20247b4d794d6163726f7d>-2.5 E .19 -<5224ad20243a>214 204 R -<242873746f72616765207b4d794d6163726f7d202429202431>2.5 E 51.17 -<617269746820506572666f726d>102 224.4 R .494 -<73696d706c652061726974686d65746963206f7065726174696f6e732e>2.994 F .494 -<546865206f7065726174696f6e206973206769>5.494 F -.15<7665>-.25 G 2.993 -<6e61>.15 G 2.993<736b>-2.993 G -.15<6579>-3.093 G 2.993<2c63>-.5 G .493 -<757272656e746c79202b2c>-2.993 F .245<2d2c202a2c202f2c20252c207c2c202620 -2862697477697365204f522c20414e44292c206c2028666f72206c657373207468616e29 -2c203d2c20616e6420722028666f722072616e646f6d2920617265207375702d>174 -236.4 R 3.21<706f727465642e20546865>174 248.4 R<7477>3.21 E 3.21<6f6f> --.1 G .71<706572616e647320617265206769>-3.21 F -.15<7665>-.25 G 3.21 -<6e61>.15 G 3.21<7361>-3.21 G -.18<7267>-3.21 G 3.21 -<756d656e74732e20546865>.18 F .71 -<6c6f6f6b75702072657475726e732074686520726573756c74>3.21 F 1.374 -<6f662074686520636f6d7075746174696f6e2c20692e652e2c>174 260.4 R/F2 9 -/Times-Roman@0 SF<5452>3.874 E<5545>-.36 E F1<6f72>3.874 E F2 -.666 -<4641>3.874 G<4c5345>.666 E F1 1.374 -<666f7220636f6d70617269736f6e732c20696e7465>3.874 F 1.374<6765722076> --.15 F 1.374<616c756573206f74686572>-.25 F<2d>-.2 E 3.212 -<776973652e20546865>174 272.4 R 3.212<726f>3.212 G .712<70657261746f7220 -72657475726e7320612070736575646f2d72616e646f6d206e756d6265722077686f7365 -2076>-3.212 F .711<616c7565206c696573206265747765656e>-.25 F .538<746865 -208c72737420616e64207365636f6e64206f706572616e64202877686963682072657175 -69726573207468617420746865208c727374206f706572616e6420697320736d616c6c65 -72207468616e>174 284.4 R 2.134<746865207365636f6e64292e>174 296.4 R -2.133<416c6c206f7074696f6e732077686963682061726520706f737369626c6520666f -72206d617073206172652069676e6f7265642e>7.134 F 4.633<4173>7.133 G -<696d706c65>-4.633 E -.15<6578>174 308.4 S<616d706c652069733a>.15 E -<4b636f6d70206172697468>214 324.6 Q<2e2e2e>214 348.6 Q -<53636865636b5f6574726e>214 372.6 Q .83<52242a20243a>214 384.6 R -<2428636f6d70206c2024402024267b6c6f61645f61>2.5 E -<76677d2024402037202429202431>-.2 E<5246>214 396.6 Q -<414c53452423206572726f72202e2e2e>-.74 E<736f636b>102 417 Q 44.05 -<657420546865>-.1 F<736f636b>3.231 E .732<6574206d6170207573657320612073 -696d706c6520726571756573742f7265706c792070726f746f636f6c206f>-.1 F -.15 -<7665>-.15 G 3.232<7254>.15 G .732<4350206f7220554e495820646f6d61696e> --3.232 F<736f636b>174 429 Q .753<65747320746f20717565727920616e2065>-.1 -F .753<787465726e616c2073657276>-.15 F<6572>-.15 E 5.753<2e42>-.55 G -.753<6f746820726571756573747320616e64207265706c69657320617265207465> --5.753 F .753<787420626173656420616e64>-.15 F<656e636f646564206173206e65 -74737472696e67732c20692e652e2c206120737472696e67202268656c6c6f2074686572 -6522206265636f6d65733a>174 441 Q<31313a68656c6c6f2074686572652c>214 -457.2 Q<4e6f74653a206e656974686572207265717565737473206e6f72207265706c69 -657320656e6420776974682043524c46>174 473.4 Q<2e>-.8 E .301<546865207265 -717565737420636f6e7369737473206f6620746865206461746162617365206d6170206e -616d6520616e6420746865206c6f6f6b7570206b>174 497.4 R .601 -.15<65792073> --.1 H .301<65706172617465642062792061>.15 F -<7370616365206368617261637465723a>174 509.4 Q -<3c6d61706e616d653e20272027203c6b>214 537.6 Q -.15<6579>-.1 G<3e>.15 E -<5468652073657276>174 565.8 Q<657220726573706f6e647320776974682061207374 -6174757320696e64696361746f7220616e642074686520726573756c742028696620616e> --.15 E<79293a>-.15 E<3c7374617475733e20272027203c726573756c743e>214 594 -Q .161<5468652073746174757320696e64696361746f722073706563698c6573207468 -6520726573756c74206f6620746865206c6f6f6b7570206f7065726174696f6e20697473 -656c6620616e64206973206f6e65206f66>174 622.2 R<74686520666f6c6c6f>174 -634.2 Q<77696e6720757070657220636173652077>-.25 E<6f7264733a>-.1 E 28.06 -<4f4b20746865>214 650.4 R -.1<6b65>2.5 G 2.5<7977>-.05 G -<617320666f756e642c20726573756c7420636f6e7461696e7320746865206c6f6f6b> --2.6 E<65642075702076>-.1 E<616c7565>-.25 E<4e4f>214 662.4 Q -<54464f554e44746865206b>-.4 E .3 -.15<65792077>-.1 H -<6173206e6f7420666f756e642c2074686520726573756c7420697320656d707479>.05 -E 15.83<54454d502061>214 674.4 R<74656d706f726172792066>2.5 E -<61696c757265206f636375726564>-.1 E -2.49<54494d454f55542061>214 686.4 R -<74696d656f7574206f636375726564206f6e207468652073657276>2.5 E -<65722073696465>-.15 E 15.27<5045524d2061>214 698.4 R -<7065726d616e656e742066>2.5 E<61696c757265206f636375726564>-.1 E 0 Cg EP +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-85)195.86 E/F1 10/Times-Roman@0 SF(Kmap1 ...)214 96 Q(Kmap2 ...) +214 108 Q(Kseqmap sequence map1 map2)214 120 Q .968(then a lookup ag)174 +136.2 R .968(ainst \231seqmap\232 \214rst does a lookup in map1.)-.05 F +.968(If that is found, it)5.968 F(returns immediately)174 148.2 Q 5(.O) +-.65 G(therwise, the same k)-5 E .3 -.15(ey i)-.1 H 2.5(su).15 G +(sed for map2.)-2.5 E 43.94(syslog the)102 164.4 R -.1(ke)2.5 G 2.5(yi) +-.05 G 2.5(sl)-2.5 G(ogged via)-2.5 E/F2 10/Times-Italic@0 SF(syslo)2.5 +E(gd)-.1 E F1 2.5(\(8\). The)1.666 F(lookup returns the empty string.) +2.5 E 43.39(switch Much)102 180.6 R(lik)2.801 E 2.801(et)-.1 G .301 +(he \231sequence\232 map e)-2.801 F .301 +(xcept that the order of maps is determined by the)-.15 F .391 +(service switch.)174 192.6 R .391(The ar)5.391 F .391 +(gument is the name of the service to be look)-.18 F .392(ed up; the v) +-.1 F(al-)-.25 E 1.492 +(ues from the service switch are appended to the map name to create ne) +174 204.6 R 3.992(wm)-.25 G(ap)-3.992 E 2.5(names. F)174 216.6 R(or e) +-.15 E(xample, consider the k)-.15 E .3 -.15(ey d)-.1 H(e\214nition:).15 +E(Kali switch aliases)214 232.8 Q +(together with the service switch entry:)174 249 Q 78.84(aliases nis)214 +265.2 R(\214les)2.5 E 1.633(This causes a query ag)174 281.4 R 1.633 +(ainst the map \231ali\232 to search maps named \231ali.nis\232 and)-.05 +F(\231ali.\214les\232 in that order)174 293.4 Q(.)-.55 E 37.84 +(dequote Strip)102 309.6 R .961(double quotes \("\) from a name.)3.461 F +.96(It does not strip backslashes, and will not)5.961 F .172 +(strip quotes if the resulting string w)174 321.6 R .173 +(ould contain unscannable syntax \(that is, basic)-.1 F .386(errors lik) +174 333.6 R 2.886(eu)-.1 G .386(nbalanced angle brack)-2.886 F .386 +(ets; more sophisticated errors such as unkno)-.1 F(wn)-.25 E .251 +(hosts are not check)174 345.6 R 2.751(ed\). The)-.1 F .251 +(intent is for use when trying to accept mail from sys-)2.751 F +(tems such as DECnet that routinely quote odd syntax such as)174 357.6 Q +("49ers::ubell")214 373.8 Q 2.5(At)174 390 S +(ypical usage is probably something lik)-2.5 E(e:)-.1 E +(Kdequote dequote)214 406.2 Q(...)214 430.2 Q 88.19(R$\255 $:)214 454.2 +R($\(dequote $1 $\))2.5 E(R$\255 $+)214 466.2 Q($: $>3 $1 $2)77.55 E +(Care must be tak)174 482.4 Q(en to pre)-.1 E -.15(ve)-.25 G(nt une).15 +E(xpected results; for e)-.15 E(xample,)-.15 E +("|someprogram < input > output")214 498.6 Q 1.31(will ha)174 514.8 R +1.61 -.15(ve q)-.2 H 1.31(uotes stripped, b).15 F 1.31 +(ut the result is probably not what you had in mind.)-.2 F -.15(Fo)174 +526.8 S(rtunately these cases are rare.).15 E(re)102 543 Q(ge)-.15 E +50.09(xT)-.15 G .488(he map de\214nition on the)-50.09 F F0(K)2.988 E F1 +.489(line contains a re)2.988 F .489(gular e)-.15 F 2.989(xpression. An) +-.15 F 2.989(yk)-.15 G .789 -.15(ey i)-3.089 H .489(nput is).15 F 1.454 +(compared to that e)174 555 R 1.454(xpression using the POSIX re)-.15 F +1.454(gular e)-.15 F 1.454(xpressions routines re)-.15 F(g-)-.15 E .29 +(comp\(\), re)174 567 R .291(gerr\(\), and re)-.15 F(ge)-.15 E -.15(xe) +-.15 G 2.791(c\(\). Refer).15 F .291 +(to the documentation for those routines for)2.791 F .356 +(more information about the re)174 579 R .356(gular e)-.15 F .355 +(xpression matching.)-.15 F .355(No re)5.355 F .355(writing of the k) +-.25 F -.15(ey)-.1 G .074(is done if the)174 591 R F02.574 E F1 +.074(\215ag is used.)2.574 F -.4(Wi)5.074 G .074(thout it, the k).4 F +.375 -.15(ey i)-.1 H 2.575(sd).15 G .075(iscarded or if)-2.575 F F0 +2.575 E F1 .075(if used, it is)2.575 F .905 +(substituted by the substring matches, delimited by)174 603 R F0($|) +3.405 E F1 .905(or the string speci\214ed with)3.405 F(the the)174 615 Q +F02.5 E F1 2.5(option. The)2.5 F(options a)2.5 E -.25(va)-.2 G +(ilable for the map are).25 E 0 Cg EP %%Page: 86 82 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d38362053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF .26 -<496e2063617365206f66206572726f727320287374617475732054454d50>174 96 R -2.76<2c54>-1.11 G .26<494d454f5554206f72205045524d292074686520726573756c -74208c656c64206d617920636f6e7461696e>-2.76 F .819<616e2065>174 108 R -.819<78706c616e61746f7279206d6573736167652e>-.15 F<486f>5.818 E<7765> --.25 E -.15<7665>-.25 G 1.618 -.4<722c2074>.15 H .818<68652065>.4 F .818 -<78706c616e61746f7279206d657373616765206973206e6f74207573656420616e>-.15 -F 3.318<7966>-.15 G<7572>-3.318 E<2d>-.2 E<74686572206279>174 120 Q/F2 -10/Times-Italic@0 SF<73656e646d61696c>2.5 E F1<2e>A -<4578616d706c65207265706c6965733a>174 144 Q<33313a4f4b207265736f6c76>214 -160.2 Q<65642e616464726573734065>-.15 E<78616d706c652e636f6d2c>-.15 E<35 -363a4f4b206572726f723a35353020352e372e31205573657220646f6573206e6f742061 -6363657074206d61696c2066726f6d2073656e646572>214 192.6 Q<2c>-.4 E -<696e2063617365206f66207375636365737366756c206c6f6f6b7570732c206f723a> -174 220.8 Q<383a4e4f>214 237 Q<54464f554e442c>-.4 E -<696e206361736520746865206b>174 265.2 Q .3 -.15<65792077>-.1 H -<6173206e6f7420666f756e642c206f723a>.05 E -<35353a54454d502074686973207465>214 281.4 Q<78742065>-.15 E -<78706c61696e7320746861742077652068616420612074656d706f726172792066>-.15 -E<61696c7572652c>-.1 E -<696e2063617365206f6620612074656d706f72617279206d6170206c6f6f6b75702066> -174 309.6 Q<61696c7572652e>-.1 E 1.186<54686520736f636b>174 333.6 R -1.186<6574206d61702075736573207468652073616d652073796e746178206173206d69 -6c7465727320287365652053656374696f6e202258208a204d61696c2046696c746572> --.1 F<284d696c746572292044658c6e6974696f6e73222920746f207370656369667920 -7468652072656d6f746520656e64706f696e742c20652e672e2c>174 345.6 Q -<4b736f636b>214 361.8 Q<6574206d79536f636b>-.1 E -<65744d617020696e65743a3132333435403132372e302e302e31>-.1 E .493 -<4966206d756c7469706c6520736f636b>174 390 R .492<6574206d6170732064658c -6e65207468652073616d652072656d6f746520656e64706f696e742c20746865>-.1 F -2.992<7977>-.15 G .492<696c6c20736861726520612073696e676c65>-2.992 F -<636f6e6e656374696f6e20746f207468697320656e64706f696e742e>174 402 Q .488 -<4d6f7374206f6620746865736520616363657074206173206172>127 418.2 R .488< -67756d656e7473207468652073616d65206f7074696f6e616c208d61677320616e642061 -208c6c656e616d6520286f722061206d61706e616d6520666f72>-.18 F .31<4e49533b -20746865208c6c656e616d652069732074686520726f6f74206f66207468652064617461 -6261736520706174682c20736f207468617420992e64629a206f7220736f6d65206f7468 -65722065>102 430.2 R .31<7874656e73696f6e20617070726f707269617465>-.15 F -<666f722074686520646174616261736520747970652077696c6c206265206164646564 -20746f20676574207468652061637475616c206461746162617365206e616d65292e>102 -442.2 Q<4b6e6f>5 E<776e208d616773206172653a>-.25 E 58.86 -102 458.4 R 1.148<746861742074686973206d617020 -6973206f7074696f6e616c208a20746861742069732c2069662069742063616e6e6f7420 -6265206f70656e65642c206e6f206572726f72206973>3.647 F -<70726f64756365642c20616e64>174 470.4 Q F2<73656e646d61696c>2.5 E F1 -<77696c6c2062656861>2.5 E .3 -.15<76652061>-.2 H 2.5<7369>.15 G 2.5 -<6674>-2.5 G<6865206d61702065>-2.5 E<7869737465642062>-.15 E<75742077> --.2 E<617320656d707479>-.1 E<2e>-.65 E102 486.6 Q .697 -<4966206e656974686572>41.28 F F03.197 E F1<6f72>3.197 E F0 -3.197 E F1 .697<6172652073706563698c65642c>3.197 F F2<73656e646d61696c> -3.197 E F1 .697<7573657320616e20616461707469>3.197 F .997 -.15<76652061> --.25 H .697<6c676f726974686d20746f20646563696465>.15 F .108<776865746865 -72206f72206e6f7420746f206c6f6f6b20666f72206e756c6c206279746573206f6e2074 -686520656e64206f66206b>174 498.6 R -.15<6579>-.1 G 2.608<732e204974>.15 -F .108<73746172747320627920747279696e6720626f74683b206966>2.608 F .82 -<6974208c6e647320616e>174 510.6 R 3.32<796b>-.15 G 1.12 -.15<65792077> --3.42 H .82<6974682061206e756c6c2062797465206974206e65>.15 F -.15<7665> --.25 G 3.319<7274>.15 G .819<72696573206167>-3.319 F .819 -<61696e20776974686f75742061206e756c6c206279746520616e642076696365>-.05 F --.15<7665>174 522.6 S 2.827<7273612e204966>.15 F F02.827 E F1 .327 -<69732073706563698c6564206974206e65>2.827 F -.15<7665>-.25 G 2.828<7274> -.15 G .328 -<7269657320776974686f75742061206e756c6c206279746520616e64206966>-2.828 F -F02.828 E F1 .328<69732073706563698c6564206974>2.828 F<6e65>174 -534.6 Q -.15<7665>-.25 G 2.886<7274>.15 G .386 -<7269657320776974682061206e756c6c20627974652e>-2.886 F .386<53657474696e -67206f6e65206f662074686573652063616e207370656564206d6174636865732062> -5.386 F .386<757420617265206e65>-.2 F -.15<7665>-.25 G<72>.15 E -<6e6563657373617279>174 546.6 Q 5.545<2e49>-.65 G 3.045<6662>-5.545 G -<6f7468>-3.045 E F03.045 E F1<616e64>3.045 E F03.045 E F1 -.545<6172652073706563698c65642c>3.045 F F2<73656e646d61696c>3.045 E F1 -.546<77696c6c206e65>3.046 F -.15<7665>-.25 G 3.046<7274>.15 G .546 -<727920616e>-3.046 F 3.046<796d>-.15 G<617463686573>-3.046 E -<617420616c6c208a20746861742069732c2065>174 558.6 Q -.15<7665>-.25 G -<72797468696e672077696c6c2061707065617220746f2066>.15 E<61696c2e>-.1 E -102 574.8 Q F2<78>A F1 1.357<417070656e642074686520737472696e67> -57.48 F F2<78>3.857 E F1 1.357 -<6f6e207375636365737366756c206d6174636865732e>3.857 F -.15<466f>6.357 G -3.857<7265>.15 G 1.356<78616d706c652c2074686520646566>-4.007 F<61756c74> --.1 E F2<686f7374>3.856 E F1<6d6170>3.856 E<617070656e6473206120646f7420 -6f6e207375636365737366756c206d6174636865732e>174 586.8 Q102 603 Q -F2<78>A F1 .02<417070656e642074686520737472696e67>55.81 F F2<78>2.52 E -F1 .021<6f6e2074656d706f726172792066>2.52 F 2.521<61696c757265732e2046> --.1 F .021<6f722065>-.15 F<78616d706c652c>-.15 E F2<78>2.521 E F1 -.1 -<776f>2.521 G .021<756c6420626520617070656e6465642069662061>.1 F .72 -<444e53206c6f6f6b75702072657475726e6564209973657276>174 615 R .72 -<65722066>-.15 F .72<61696c65649a206f7220616e204e4953206c6f6f6b75702063 -6f756c64206e6f74206c6f6361746520612073657276>-.1 F<6572>-.15 E<2e>-.55 E -<53656520616c736f20746865>174 627 Q F02.5 E F1<8d61672e>2.5 E -60.53102 643.2 R<6e6f7420666f6c6420757070657220746f206c6f> -2.5 E<7765722063617365206265666f7265206c6f6f6b696e6720757020746865206b> --.25 E -.15<6579>-.1 G<2e>-.5 E 56.08102 659.4 R .399 -<6f6e6c792028776974686f7574207265706c6163696e67207468652076>2.899 F -2.899<616c7565292e204966>-.25 F .399 -<796f75206f6e6c7920636172652061626f7574207468652065>2.899 F .4 -<78697374656e6365206f66>-.15 F 7.307<616b>174 671.4 S 5.107 -.15 -<65792061>-7.407 H 4.807<6e64206e6f74207468652076>.15 F 4.807<616c756520 -28617320796f75206d69676874207768656e20736561726368696e6720746865204e4953 -206d6170>-.25 F 1.947<99686f7374732e62796e616d659a20666f722065>174 683.4 -R 1.947<78616d706c65292c2074686973208d616720707265>-.15 F -.15<7665>-.25 -G 1.947 -<6e747320746865206d61702066726f6d20737562737469747574696e6720746865>.15 -F -.25<7661>174 695.4 S 2.85<6c75652e20486f>.25 F<7765>-.25 E -.15<7665> --.25 G 1.15 -.4<722c2054>.15 H .35<686520ad61206172>.4 F .349<67756d656e -74206973207374696c6c20617070656e646564206f6e2061206d617463682c20616e6420 -74686520646566>-.18 F .349<61756c74206973>-.1 F<7374696c6c2074616b>174 -707.4 Q<656e20696620746865206d617463682066>-.1 E<61696c732e>-.1 E 0 Cg -EP +/F0 10/Times-Bold@0 SF 193.36(SMM:08-86 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 9.17 +(-n not)214 96 R 10.84(-f case)214 108 R(sensiti)2.5 E -.15(ve)-.25 G +9.17(-b basic)214 120 R(re)2.5 E(gular e)-.15 E(xpressions \(def)-.15 E +(ault is e)-.1 E(xtended\))-.15 E 10.28(-s substring)214 132 R(match)2.5 +E 9.17(-d set)214 144 R(the delimiter string used for -s)2.5 E 9.73 +(-a append)214 156 R(string to k)2.5 E -.15(ey)-.1 G 6.39(-m match)214 +168 R(only)2.5 E 2.5(,d)-.65 G 2.5(on)-2.5 G(ot replace/discard v)-2.5 E +(alue)-.25 E 6.95(-D perform)214 180 R(no lookup in deferred deli)2.5 E +-.15(ve)-.25 G(ry mode.).15 E(The)174 196.2 Q F03.208 E F1 .709(o\ +ption can include an optional parameter which can be used to select the) +3.208 F(substrings in the result of the lookup.)174 208.2 Q -.15(Fo)5 G +2.5(re).15 G(xample,)-2.65 E(-s1,3,4)214 224.4 Q .272 +(The delimiter string speci\214ed via the)174 240.6 R F02.772 E F1 +.271(option is the sequence of characters after)2.772 F F0(d)174 252.6 Q +F1 .412(ending at the \214rst space.)2.912 F .412(Hence it isn')5.412 F +2.912(tp)-.18 G .412(ossible to specify a space as delimiter)-2.912 F(,) +-.4 E .641(so if the option is immediately follo)174 264.6 R .641 +(wed by a space the delimiter string is empty)-.25 F(,)-.65 E +(which means the substrings are joined.)174 276.6 Q .696 +(Notes: to match a)174 300.6 R F0($)3.197 E F1 .697 +(in a string, \\$$ must be used.)3.197 F .697 +(If the pattern contains spaces,)5.697 F(the)174 312.6 Q 4.425(ym)-.15 G +1.924(ust be replaced with the blank substitution character)-4.425 F +4.424(,u)-.4 G 1.924(nless it is space)-4.424 F(itself.)174 324.6 Q +35.62(program The)102 340.8 R(ar)2.544 E .044(guments on the)-.18 F F0 +(K)2.544 E F1 .045(line are the pathname to a program and an)2.544 F +2.545(yi)-.15 G .045(nitial param-)-2.545 F .176(eters to be passed.)174 +352.8 R .176(When the map is called, the k)5.176 F .475 -.15(ey i)-.1 H +2.675(sa).15 G .175(dded to the initial parame-)-2.675 F .112 +(ters and the program is in)174 364.8 R -.2(vo)-.4 G -.1(ke).2 G 2.612 +(da).1 G 2.612(st)-2.612 G .112(he def)-2.612 F .112 +(ault user/group id.)-.1 F .112(The \214rst line of stan-)5.112 F .508 +(dard output is returned as the v)174 376.8 R .508(alue of the lookup.) +-.25 F .508(This has man)5.508 F 3.007(yp)-.15 G .507(otential secu-) +-3.007 F 1.277(rity problems, and has terrible performance; it should b\ +e used only when abso-)174 388.8 R(lutely necessary)174 400.8 Q(.)-.65 E +44.51(macro Set)102 417 R .32(or clear a macro v)2.82 F 2.82(alue. T) +-.25 F 2.82(os)-.8 G .32(et a macro, pass the v)-2.82 F .32 +(alue as the \214rst ar)-.25 F .32(gument in)-.18 F .938 +(the map lookup.)174 429 R 2.538 -.8(To c)5.938 H .939 +(lear a macro, do not pass an ar).8 F .939(gument in the map lookup.) +-.18 F(The map al)174 441 Q -.1(wa)-.1 G(ys returns the empty string.).1 +E(Example of typical usage include:)5 E(Kstorage macro)214 457.2 Q(...) +214 481.2 Q 2.5(#s)214 505.2 S(et macro ${MyMacro} to the ruleset match) +-2.5 E .19(R$+ $:)214 517.2 R($\(storage {MyMacro} $@ $1 $\) $1)2.5 E +2.5(#s)214 529.2 S(et macro ${MyMacro} to an empty string)-2.5 E .83 +(R$* $:)214 541.2 R($\(storage {MyMacro} $@ $\) $1)2.5 E 2.5(#c)214 +553.2 S(lear macro ${MyMacro})-2.5 E .19(R$\255 $:)214 565.2 R +($\(storage {MyMacro} $\) $1)2.5 E 51.17(arith Perform)102 585.6 R .494 +(simple arithmetic operations.)2.994 F .494(The operation is gi)5.494 F +-.15(ve)-.25 G 2.993(na).15 G 2.993(sk)-2.993 G -.15(ey)-3.093 G 2.993 +(,c)-.5 G .493(urrently +,)-2.993 F .245(-, *, /, %, |, & \(bitwise OR,\ + AND\), l \(for less than\), =, and r \(for random\) are sup-)174 597.6 +R 3.21(ported. The)174 609.6 R(tw)3.21 E 3.21(oo)-.1 G .71 +(perands are gi)-3.21 F -.15(ve)-.25 G 3.21(na).15 G 3.21(sa)-3.21 G +-.18(rg)-3.21 G 3.21(uments. The).18 F .71(lookup returns the result) +3.21 F 1.374(of the computation, i.e.,)174 621.6 R/F2 9/Times-Roman@0 SF +(TR)3.874 E(UE)-.36 E F1(or)3.874 E F2 -.666(FA)3.874 G(LSE).666 E F1 +1.374(for comparisons, inte)3.874 F 1.374(ger v)-.15 F 1.374 +(alues other)-.25 F(-)-.2 E 3.212(wise. The)174 633.6 R 3.212(ro)3.212 G +.712(perator returns a pseudo-random number whose v)-3.212 F .711 +(alue lies between)-.25 F .538(the \214rst and second operand \(which r\ +equires that the \214rst operand is smaller than)174 645.6 R 2.134 +(the second\).)174 657.6 R 2.133 +(All options which are possible for maps are ignored.)7.134 F 4.633(As) +7.133 G(imple)-4.633 E -.15(ex)174 669.6 S(ample is:).15 E 0 Cg EP %%Page: 87 83 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3837>195.86 E -/F1 10/Times-Roman@0 SF102 96 Q/F2 10/Times-Italic@0 SF -.1<6b65>C -<79636f6c>-.2 E F1 .519<546865206b>36.22 F .819 -.15<65792063>-.1 H .519 -<6f6c756d6e206e616d652028666f72204e49532b29206f72206e756d6265722028666f -72207465>.15 F .519<7874206c6f6f6b757073292e>-.15 F -.15<466f>5.52 G -3.02<724c>.15 G -.4<4441>-3.02 G 3.02<506d>.4 G<617073>-3.02 E .973 -<7468697320697320616e204c44>174 108 R .973<4150208c6c74657220737472696e -6720696e207768696368202573206973207265706c61636564207769746820746865206c -69746572616c20636f6e74656e7473206f66>-.4 F .248 -<746865206c6f6f6b7570206b>174 120 R .548 -.15<65792061>-.1 H .248 -<6e64202530206973207265706c61636564207769746820746865204c44>.15 F .249 -<4150206573636170656420636f6e74656e7473206f6620746865206c6f6f6b7570>-.4 -F -.1<6b65>174 132 S 4.176<7961>-.05 G 1.676 -<63636f7264696e6720746f2052464320323235342e>-4.176 F 1.676 -<496620746865208d6167>6.676 F F04.176 E F1 1.676 -<697320757365642c207468656e202531207468726f75676820253920617265>4.176 F -.886<7265706c61636564207769746820746865204c44>174 144 R .887 -<4150206573636170656420636f6e74656e7473206f6620746865206172>-.4 F .887 -<67756d656e74732073706563698c656420696e20746865206d6170>-.18 F -<6c6f6f6b75702e>174 156 Q102 172.2 Q F2<76616c636f6c>A F1 1.929 -<5468652076>36.92 F 1.928<616c756520636f6c756d6e206e616d652028666f72204e -49532b29206f72206e756d6265722028666f72207465>-.25 F 1.928 -<7874206c6f6f6b757073292e>-.15 F -.15<466f>6.928 G 4.428<724c>.15 G -.4 -<4441>-4.428 G<50>.4 E .467<6d617073207468697320697320746865206e616d6520 -6f66206f6e65206f72206d6f726520617474726962>174 184.2 R .467<757465732074 -6f2062652072657475726e65643b206d756c7469706c6520617474726962>-.2 F -<75746573>-.2 E 1.217 -<63616e2062652073657061726174656420627920636f6d6d61732e>174 196.2 R -1.216<4966206e6f742073706563698c65642c20616c6c20617474726962>6.216 F -1.216<7574657320666f756e6420696e20746865206d61746368>-.2 F 1.327 -<77696c6c2062652072657475726e65642e>174 208.2 R 1.328 -<54686520617474726962>6.328 F 1.328<75746573206c69737465642063616e20616c -736f20696e636c7564652061207479706520616e64206f6e65206f72206d6f7265>-.2 F -<6f626a656374436c6173732076>174 220.2 Q<616c75657320666f72206d6174636869 -6e672061732064657363726962656420696e20746865204c44>-.25 E -<41502073656374696f6e2e>-.4 E102 236.4 Q F2<64656c696d>A F1 .219 -<54686520636f6c756d6e2064656c696d697465722028666f72207465>39.7 F .219 -<7874206c6f6f6b757073292e>-.15 F .218<49742063616e20626520612073696e676c -6520636861726163746572206f72206f6e65206f6620746865>5.219 F 1.825 -<7370656369616c20737472696e67732099>174 248.4 R 1.825<5c6e9a206f722099> -1.666 F 1.826<5c749a20746f20696e646963617465206e65>1.666 F 1.826 -<776c696e65206f7220746162207265737065637469>-.25 F -.15<7665>-.25 G -<6c79>.15 E 6.826<2e49>-.65 G 4.326<666f>-6.826 G<6d6974746564>-4.326 E -<656e746972656c79>174 260.4 Q 3.567<2c74>-.65 G 1.067 -<686520636f6c756d6e20736570617261746f7220697320616e>-3.567 F 3.567<7973> --.15 G 1.067<657175656e6365206f662077686974652073706163652e>-3.567 F --.15<466f>6.066 G 3.566<724c>.15 G -.4<4441>-3.566 G 3.566<506d>.4 G -<617073>-3.566 E 2.061<746869732069732074686520736570617261746f72206368 -6172616374657220746f20636f6d62696e65206d756c7469706c652076>174 272.4 R -2.062<616c75657320696e746f20612073696e676c652072657475726e>-.25 F 3.711 -<737472696e672e204966>174 284.4 R 1.211<6e6f74207365742c20746865204c44> -3.711 F 1.211<4150206c6f6f6b75702077696c6c206f6e6c792072657475726e207468 -65208c727374206d6174636820666f756e642e>-.4 F -.15<466f>6.21 G<72>.15 E -.101<444e53206d61707320746869732069732074686520736570617261746f72206368 -617261637465722061742077686963682074686520726573756c74206f66206120717565 -727920697320637574206f66>174 296.4 R 2.601<6669>-.25 G<66>-2.601 E -<697320746f6f206c6f6e672e>174 308.4 Q 61.08102 -324.6 R 2.727<2c77>-.65 G .227<68656e2061206d617020617474656d7074732074 -6f20646f2061206c6f6f6b757020616e64207468652073657276>-2.727 F .226 -<65722066>-.15 F .226<61696c732028652e672e2c>-.1 F F2<73656e646d61696c> -2.726 E F1<636f756c646e27>174 336.6 Q 2.776<7463>-.18 G .276 -<6f6e7461637420616e>-2.776 F 2.776<796e>-.15 G .276<616d652073657276> --2.776 F .276<65723b2074686973206973>-.15 F F2<6e6f74>2.776 E F1 .276<74 -68652073616d6520617320616e20656e747279206e6f74206265696e6720666f756e64> -2.776 F .251<696e20746865206d6170292c20746865206d657373616765206265696e -672070726f6365737365642069732071756575656420666f72206675747572652070726f -63657373696e672e>174 348.6 R<546865>5.25 E F02.75 E F1 2.039 -<8d6167207475726e73206f66>174 360.6 R 4.539<6674>-.25 G 2.039 -<6869732062656861>-4.539 F<76696f72>-.2 E 4.539<2c6c>-.4 G 2.039 -<657474696e67207468652074656d706f726172792066>-4.539 F 2.039 -<61696c757265202873657276>-.1 F 2.039<657220646f>-.15 F 2.04 -<776e2920616374206173>-.25 F .676 -<74686f75676820697420776572652061207065726d616e656e742066>174 372.6 R -.675<61696c7572652028656e747279206e6f7420666f756e64292e>-.1 F .675 -<497420697320706172746963756c61726c792075736566756c20666f72>5.675 F .772 -<444e53206c6f6f6b7570732c20776865726520736f6d656f6e6520656c736527>174 -384.6 R 3.272<736d>-.55 G .772 -<6973636f6e8c6775726564206e616d652073657276>-3.272 F .772 -<65722063616e2063617573652070726f622d>-.15 F 1.646 -<6c656d73206f6e20796f7572206d616368696e652e>174 396.6 R<486f>6.646 E -<7765>-.25 E -.15<7665>-.25 G 2.446 -.4<722c2063>.15 H 1.645 -<617265206d7573742062652074616b>.4 F 1.645 -<656e20746f20656e73757265207468617420796f7520646f6e27>-.1 F<74>-.18 E -.262<626f756e6365206d61696c20746861742077>174 408.6 R .262 -<6f756c64206265207265736f6c76>-.1 F .262 -<656420636f72726563746c7920696620796f75207472696564206167>-.15 F 2.763 -<61696e2e2041>-.05 F .263<636f6d6d6f6e2073747261742d>2.763 F -.15<6567> -174 420.6 S 2.5<7969>.15 G 2.5<7374>-2.5 G 2.5<6f66>-2.5 G<6f7277>-2.5 E -<6172642073756368206d61696c20746f20616e6f74686572>-.1 E 2.5<2c70>-.4 G -<6f737369626c792062657474657220636f6e6e65637465642c206d61696c2073657276> --2.5 E<6572>-.15 E<2e>-.55 E 56.64102 436.8 R .833 -<6e6f206c6f6f6b757020696e2064656665727265642064656c69>3.333 F -.15<7665> --.25 G .833<7279206d6f64652e>.15 F .833 -<54686973208d61672069732073657420627920646566>5.833 F .832 -<61756c7420666f7220746865>-.1 F F2<686f7374>174 448.8 Q F1<6d61702e>2.5 -E102 465 Q F2<7370616365737562>A F1 1.537<546865206368617261637465 -7220746f2075736520746f207265706c6163652073706163652063686172616374657273 -2061667465722061207375636365737366756c206d6170206c6f6f6b7570>24.14 F -<286573702e2075736566756c20666f72207265>174 477 Q<6765>-.15 E 2.5<7861> --.15 G<6e64207379736c6f67206d617073292e>-2.5 E102 493.2 Q F2 -<7370616365737562>A F1 -.15<466f>25.81 G 3.101<7274>.15 G .601 -<686520646571756f7465206d6170206f6e6c79>-3.101 F 3.101<2c74>-.65 G .601< -68652063686172616374657220746f2075736520746f207265706c616365207370616365 -20636861726163746572732061667465722061>-3.101 F -<7375636365737366756c20646571756f74652e>174 505.2 Q 58.86 -102 521.4 R 2.5<7464>-.18 G<6571756f746520746865206b> --2.5 E .3 -.15<65792062>-.1 H<65666f7265206c6f6f6b75702e>.15 E102 -537.6 Q F2<6c65>A<76656c>-.15 E F1 -.15<466f>41.52 G 2.5<7274>.15 G -<6865207379736c6f67206d6170206f6e6c79>-2.5 E 2.5<2c69>-.65 G 2.5<7473> --2.5 G<706563698c657320746865206c65>-2.5 E -.15<7665>-.25 G 2.5<6c74>.15 -G 2.5<6f75>-2.5 G<736520666f7220746865207379736c6f672063616c6c2e>-2.5 E -56.64102 553.8 R<726562>3 E .5 -<75696c64696e6720616e20616c696173208c6c652c20746865>-.2 F F03 E F1 -.5<8d616720636175736573206475706c696361746520656e747269657320696e207468 -65207465>3 F .5<78742076>-.15 F<6572>-.15 E<2d>-.2 E -<73696f6e20746f206265206d6572>174 565.8 Q 2.5<6765642e2046>-.18 F -<6f722065>-.15 E<78616d706c652c207477>-.15 E 2.5<6f65>-.1 G -<6e74726965733a>-2.5 E 27.49<6c6973743a2075736572312c>214 582 R -<7573657232>2.5 E 27.49<6c6973743a207573657233>214 594 R -.1<776f>174 -610.2 S<756c6420626520747265617465642061732074686f7567682069742077657265 -207468652073696e676c6520656e747279>.1 E 27.49<6c6973743a2075736572312c> -214 626.4 R<75736572322c207573657233>2.5 E -<696e207468652070726573656e6365206f6620746865>174 642.6 Q F02.5 E -F1<8d61672e>2.5 E<536f6d65206164646974696f6e616c208d616773206172652061> -127 658.8 Q -.25<7661>-.2 G -<696c61626c6520666f722074686520686f737420616e6420646e73206d6170733a>.25 -E 58.86102 675 R -<7370656369667920746865207265736f6c76>2.5 E<657227>-.15 E 2.5<7372>-.55 -G<657472616e736d697373696f6e2074696d6520696e74657276>-2.5 E -<616c2028696e207365636f6e6473292e>-.25 E 60.53102 -691.2 R<7370656369667920746865206e756d626572206f662074696d657320746f2072 -657472616e736d69742061207265736f6c76>2.5 E<6572207175657279>-.15 E<2e> --.65 E<54686520646e73206d61702068617320616e6f74686572208d61673a>127 -707.4 Q 0 Cg EP +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-87)195.86 E/F1 10/Times-Roman@0 SF(Kcomp arith)214 96 Q(...)214 +120 Q(Scheck_etrn)214 144 Q .83(R$* $:)214 156 R($\(comp l $@ $&{load_a) +2.5 E(vg} $@ 7 $\) $1)-.2 E(RF)214 168 Q(ALSE$# error ...)-.74 E(sock) +102 188.4 Q 44.05(et The)-.1 F(sock)3.231 E .732 +(et map uses a simple request/reply protocol o)-.1 F -.15(ve)-.15 G +3.232(rT).15 G .732(CP or UNIX domain)-3.232 F(sock)174 200.4 Q .753 +(ets to query an e)-.1 F .753(xternal serv)-.15 F(er)-.15 E 5.753(.B) +-.55 G .753(oth requests and replies are te)-5.753 F .753(xt based and) +-.15 F(encoded as netstrings, i.e., a string "hello there" becomes:)174 +212.4 Q(11:hello there,)214 228.6 Q +(Note: neither requests nor replies end with CRLF)174 244.8 Q(.)-.8 E +.301(The request consists of the database map name and the lookup k)174 +268.8 R .601 -.15(ey s)-.1 H .301(eparated by a).15 F(space character:) +174 280.8 Q( ' ' ).15 E(The serv) +174 337.2 Q(er responds with a status indicator and the result \(if an) +-.15 E(y\):)-.15 E( ' ' )214 365.4 Q .161(The status in\ +dicator speci\214es the result of the lookup operation itself and is on\ +e of)174 393.6 R(the follo)174 405.6 Q(wing upper case w)-.25 E(ords:) +-.1 E 28.06(OK the)214 421.8 R -.1(ke)2.5 G 2.5(yw)-.05 G +(as found, result contains the look)-2.6 E(ed up v)-.1 E(alue)-.25 E(NO) +214 433.8 Q(TFOUNDthe k)-.4 E .3 -.15(ey w)-.1 H +(as not found, the result is empty).05 E 15.83(TEMP a)214 445.8 R +(temporary f)2.5 E(ailure occurred)-.1 E -2.49(TIMEOUT a)214 457.8 R +(timeout occurred on the serv)2.5 E(er side)-.15 E 15.27(PERM a)214 +469.8 R(permanent f)2.5 E(ailure occurred)-.1 E .26 +(In case of errors \(status TEMP)174 498 R 2.76(,T)-1.11 G .26 +(IMEOUT or PERM\) the result \214eld may contain)-2.76 F .819(an e)174 +510 R .819(xplanatory message.)-.15 F(Ho)5.818 E(we)-.25 E -.15(ve)-.25 +G 1.618 -.4(r, t).15 H .818(he e).4 F .818 +(xplanatory message is not used an)-.15 F 3.318(yf)-.15 G(ur)-3.318 E(-) +-.2 E(ther by)174 522 Q/F2 10/Times-Italic@0 SF(sendmail)2.5 E F1(.)A +(Example replies:)174 546 Q(31:OK resolv)214 562.2 Q(ed.address@e)-.15 E +(xample.com,)-.15 E +(56:OK error:550 5.7.1 User does not accept mail from sender)214 594.6 Q +(,)-.4 E(in case of successful lookups, or:)174 622.8 Q(8:NO)214 639 Q +(TFOUND,)-.4 E(in case the k)174 667.2 Q .3 -.15(ey w)-.1 H +(as not found, or:).05 E(55:TEMP this te)214 683.4 Q(xt e)-.15 E +(xplains that we had a temporary f)-.15 E(ailure,)-.1 E +(in case of a temporary map lookup f)174 711.6 Q(ailure.)-.1 E 0 Cg EP %%Page: 88 84 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d38382053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF 57.19102 96 R -<73706563696679206120646f6d61696e207468617420697320616c>2.5 E -.1<7761> --.1 G<797320617070656e64656420746f20717565726965732e>.1 E<536f636b>127 -112.2 Q<6574206d617073206861>-.1 E .3 -.15<76652061>-.2 H 2.5<6e6f>.15 G -<7074696f6e616c208d61673a>-2.5 E 58.86102 128.4 -R .441<73706563696679207468652074696d656f75742028696e207365636f6e647329 -20666f7220636f6d6d756e69636174696f6e20776974682074686520736f636b>2.941 F -.44<6574206d6170>-.1 F<73657276>174 140.4 Q<6572>-.15 E<2e>-.55 E -<54686520666f6c6c6f>127 156.6 Q<77696e67206164646974696f6e616c208d616773 -206172652070726573656e7420696e20746865206c646170206d6170206f6e6c793a> --.25 E 57.19102 172.8 R .025 -<6e6f74206175746f20636861736520726566657272616c732e>2.525 F .025 -<73656e646d61696c206d75737420626520636f6d70696c65642077697468>5.025 F F0 -2.525 E<41505f52454645522d>-.35 E<52414c53>174 184.8 Q F1 -<746f207573652074686973208d61672e>2.5 E 58.86102 201 -R .3 -.15<76652061>-.25 H<7474726962>.15 E<757465206e616d6573206f6e6c79> --.2 E<2e>-.65 E102 217.2 Q/F2 10/Times-Italic@0 SF<736570>A F1 -<526574726965>45.81 E .3 -.15<76652062>-.25 H<6f746820617474726962>.15 E -<75746573206e616d6520616e642076>-.2 E -<616c75652873292c20736570617261746564206279>-.25 E F2<736570>2.5 E F1 -<2e>A102 233.4 Q F2<646572>A<6566>-.37 E F1<5365742074686520616c69 -61732064657265666572656e6365206f7074696f6e20746f206f6e65206f66206e65> -42.85 E -.15<7665>-.25 G .8 -.4<722c2061>.15 H -.1<6c7761>.4 G -<79732c207365617263682c206f72208c6e642e>.1 E102 249.6 Q F2 -<73636f7065>A F1<536574207365617263682073636f706520746f206f6e65206f6620 -626173652c206f6e6520286f6e65206c65>39.7 E -.15<7665>-.25 G -<6c292c206f7220737562202873756274726565292e>.15 E102 265.8 Q F2 -<686f7374>A F1<4c44>44.69 E 2.095<41502073657276>-.4 F 2.095 -<657220686f73746e616d652e>-.15 F 2.095<536f6d65204c44>7.095 F 2.095 -<4150206c696272617269657320616c6c6f>-.4 F 4.595<7779>-.25 G 2.095 -<6f7520746f2073706563696679206d756c7469706c652c>-4.595 F .466 -<73706163652d73657061726174656420686f73747320666f7220726564756e64616e63> -174 277.8 R 4.266 -.65<792e2049>-.15 H 2.967<6e61>.65 G .467<6464697469 -6f6e2c2065616368206f662074686520686f737473206c69737465642063616e206265> --2.967 F<666f6c6c6f>174 289.8 Q<776564206279206120636f6c6f6e20616e642061 -20706f7274206e756d62657220746f206f>-.25 E -.15<7665>-.15 G -<72726964652074686520646566>.15 E<61756c74204c44>-.1 E<415020706f72742e> --.4 E102 306 Q F2<706f7274>A F1<4c44>44.69 E -<4150207365727669636520706f72742e>-.4 E102 322.2 Q F2<4c44>2.5 E -<4150555249>-.35 E F1 1.103<557365207468652073706563698c6564204c44>15.33 -F 1.102<41502055524920696e7374656164206f662073706563696679696e6720746865 -20686f73746e616d6520616e6420706f727420736570612d>-.4 F -<726174656c7920776974682074686520746865>174 334.2 Q F02.5 E F1 -<616e64>2.5 E F02.5 E F1<6f7074696f6e732073686f>2.5 E -<776e2061626f>-.25 E -.15<7665>-.15 G 5<2e46>.15 G<6f722065>-5.15 E -<78616d706c652c>-.15 E<2d682073657276>214 350.4 Q<6572>-.15 E<2e65>-.55 -E<78616d706c652e636f6d202d7020333839202d622064633d65>-.15 E -<78616d706c652c64633d636f6d>-.15 E<69732065717569>174 366.6 Q -.25<7661> --.25 G<6c656e7420746f>.25 E<2d48206c6461703a2f2f73657276>214 382.8 Q -<6572>-.15 E<2e65>-.55 E<78616d706c652e636f6d3a333839202d622064633d65> --.15 E<78616d706c652c64633d636f6d>-.15 E .756<496620746865204c44>174 399 -R .757<4150206c69627261727920737570706f7274732069742c20746865204c44>-.4 -F .757<41502055524920666f726d617420686f>-.4 F<7765>-.25 E -.15<7665>-.25 -G 3.257<7263>.15 G .757<616e20616c736f2072657175657374>-3.257 F<4c44>174 -411 Q<4150206f>-.4 E -.15<7665>-.15 G 2.5<7253>.15 G -<534c206279207573696e67>-2.5 E F0<6c646170733a2f2f>2.5 E F1 -<696e7374656164206f66>2.5 E F0<6c6461703a2f2f>2.5 E F1 5<2e46>C -<6f722065>-5.15 E<78616d706c653a>-.15 E 2.5<4f4c>214 427.2 S -.4<4441> --2.5 G<50446566>.4 E -<61756c74537065633d2d48206c646170733a2f2f6c6461702e65>-.1 E -<78616d706c652e636f6d202d622064633d65>-.15 E<78616d706c652c64633d636f6d> --.15 E<53696d696c61726c79>174 443.4 Q 3.221<2c69>-.65 G 3.221<6674> --3.221 G .721<6865204c44>-3.221 F .721<4150206c69627261727920737570706f -7274732069742c2049742063616e20616c736f206265207573656420746f207370656369 -6679206120554e4958>-.4 F<646f6d61696e20736f636b>174 455.4 Q -<6574207573696e67>-.1 E F0<6c646170693a2f2f>2.5 E F1<3a>A 2.5<4f4c>214 -471.6 S -.4<4441>-2.5 G<50446566>.4 E -<61756c74537065633d2d48206c646170693a2f2f736f636b>-.1 E -<65748c6c65202d622064633d65>-.1 E<78616d706c652c64633d636f6d>-.15 E -102 492 Q F2<62617365>A F1<4c44>43.03 E -<41502073656172636820626173652e>-.4 E102 508.2 Q F2 -<74696d656c696d6974>A F1 -.35<5469>28.02 G -<6d65206c696d697420666f72204c44>.35 E<415020717565726965732e>-.4 E -102 524.4 Q F2<73697a656c696d6974>A F1<53697a6520286e756d626572206f6620 -6d61746368657329206c696d697420666f72204c44>26.91 E -<4150206f7220444e5320717565726965732e>-.4 E102 540.6 Q F2 -<64697374696e677569736865645f6e616d65>A F1<5468652064697374696e67756973 -686564206e616d6520746f2075736520746f206c6f67696e20746f20746865204c44>174 -552.6 Q<41502073657276>-.4 E<6572>-.15 E<2e>-.55 E102 568.8 Q F2 -<6d6574686f64>A F1 5.987<546865206d6574686f6420746f2061757468656e746963 -61746520746f20746865204c44>28.03 F 5.987<41502073657276>-.4 F<6572>-.15 -E 10.987<2e53>-.55 G 5.988<686f756c64206265206f6e65206f66>-10.987 F F0 -<4c44>174 580.8 Q<41505f41>-.35 E<5554485f4e4f4e45>-.5 E F1<2c>A F0 -<4c44>2.5 E<41505f41>-.35 E<5554485f53494d504c45>-.5 E F1 2.5<2c6f>C<72> --2.5 E F0<4c44>2.5 E<41505f41>-.35 E<5554485f4b52425634>-.5 E F1<2e>A -102 597 Q F2<70617373776f72>A<648c6c65>-.37 E F1 .342 -<546865208c6c6520636f6e7461696e696e672074686520736563726574206b>10.61 F -.642 -.15<65792066>-.1 H .342<6f7220746865>.15 F F0<4c44>2.842 E -<41505f41>-.35 E<5554485f53494d504c45>-.5 E F1 -<61757468656e7469636174696f6e>2.842 E -<6d6574686f64206f7220746865206e616d65206f6620746865204b>174 609 Q -<65726265726f73207469636b>-.25 E<6574208c6c6520666f72>-.1 E F0<4c44>2.5 -E<41505f41>-.35 E<5554485f4b52425634>-.5 E F1<2e>A 58.86102 -625.2 R .457<6f726365204c44>-.15 F .458<415020736561726368657320746f206f -6e6c79207375636365656420696620612073696e676c65206d6174636820697320666f75 -6e642e>-.4 F .458<4966206d756c7469706c652076>5.458 F<616c2d>-.25 E<7565 -732061726520666f756e642c207468652073656172636820697320747265617465642061 -73206966206e6f206d617463682077>174 637.2 Q<617320666f756e642e>-.1 E -102 653.4 Q F2<766572>A<73696f6e>-.1 E F1 1.48 -<53657420746865204c44>29.8 F 1.479<4150204150492f70726f746f636f6c2076> --.4 F 1.479<657273696f6e20746f207573652e>-.15 F 1.479<54686520646566> -6.479 F 1.479<61756c7420646570656e6473206f6e20746865204c44>-.1 F<4150> --.4 E 1.37<636c69656e74206c696272617269657320696e207573652e>174 665.4 R --.15<466f>6.37 G 3.87<7265>.15 G<78616d706c652c>-4.02 E F0 1.37 -3.87 F F1 1.37<77696c6c206361757365>3.87 F F2 -<73656e646d61696c>3.87 E F1 1.37<746f20757365204c44>3.87 F<41507633>-.4 -E<7768656e20636f6d6d756e69636174696e67207769746820746865204c44>174 677.4 -Q<41502073657276>-.4 E<6572>-.15 E<2e>-.55 E 56.64102 693.6 R -.588<7265617420746865204c44>-.35 F .588<415020736561726368206b>-.4 F -.888 -.15<65792061>-.1 H 3.088<736d>.15 G<756c74692d6172>-3.088 E .587< -67756d656e7420616e64207265706c616365202531207468726f75676820253920696e20 -746865>-.18 F -.1<6b65>174 705.6 S 2.503<7977>-.05 G .003 -<69746820746865204c44>-2.503 F .003<4150206573636170656420636f6e74656e74 -73206f6620746865206c6f6f6b7570206172>-.4 F .003 -<67756d656e74732073706563698c656420696e20746865206d6170>-.18 F -<6c6f6f6b75702e>174 717.6 Q 0 Cg EP +/F0 10/Times-Bold@0 SF 193.36(SMM:08-88 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 1.186 +(The sock)174 96 R 1.186(et map uses the same syntax as milters \(see S\ +ection "X \212 Mail Filter)-.1 F +(\(Milter\) De\214nitions"\) to specify the remote endpoint, e.g.,)174 +108 Q(Ksock)214 124.2 Q(et mySock)-.1 E(etMap inet:12345@127.0.0.1)-.1 E +.493(If multiple sock)174 152.4 R .492 +(et maps de\214ne the same remote endpoint, the)-.1 F 2.992(yw)-.15 G +.492(ill share a single)-2.992 F(connection to this endpoint.)174 164.4 +Q .488(Most of these accept as ar)127 180.6 R .488 +(guments the same optional \215ags and a \214lename \(or a mapname for) +-.18 F .31(NIS; the \214lename is the root of the database path, so tha\ +t \231.db\232 or some other e)102 192.6 R .31(xtension appropriate)-.15 +F +(for the database type will be added to get the actual database name\).) +102 204.6 Q(Kno)5 E(wn \215ags are:)-.25 E 58.86(\255o Indicates)102 +220.8 R 1.148(that this map is optional \212 that is, if it cannot be o\ +pened, no error is)3.647 F(produced, and)174 232.8 Q/F2 10 +/Times-Italic@0 SF(sendmail)2.5 E F1(will beha)2.5 E .3 -.15(ve a)-.2 H +2.5(si).15 G 2.5(ft)-2.5 G(he map e)-2.5 E(xisted b)-.15 E(ut w)-.2 E +(as empty)-.1 E(.)-.65 E(\255N, \255O)102 249 Q .697(If neither)41.28 F +F03.197 E F1(or)3.197 E F03.197 E F1 .697(are speci\214ed,) +3.197 F F2(sendmail)3.197 E F1 .697(uses an adapti)3.197 F .997 -.15 +(ve a)-.25 H .697(lgorithm to decide).15 F .108 +(whether or not to look for null bytes on the end of k)174 261 R -.15 +(ey)-.1 G 2.608(s. It).15 F .108(starts by trying both; if)2.608 F .82 +(it \214nds an)174 273 R 3.32(yk)-.15 G 1.12 -.15(ey w)-3.42 H .82 +(ith a null byte it ne).15 F -.15(ve)-.25 G 3.319(rt).15 G .819(ries ag) +-3.319 F .819(ain without a null byte and vice)-.05 F -.15(ve)174 285 S +2.827(rsa. If).15 F F02.827 E F1 .327(is speci\214ed it ne)2.827 F +-.15(ve)-.25 G 2.828(rt).15 G .328(ries without a null byte and if) +-2.828 F F02.828 E F1 .328(is speci\214ed it)2.828 F(ne)174 297 Q +-.15(ve)-.25 G 2.886(rt).15 G .386(ries with a null byte.)-2.886 F .386 +(Setting one of these can speed matches b)5.386 F .386(ut are ne)-.2 F +-.15(ve)-.25 G(r).15 E(necessary)174 309 Q 5.545(.I)-.65 G 3.045(fb) +-5.545 G(oth)-3.045 E F03.045 E F1(and)3.045 E F03.045 E F1 +.545(are speci\214ed,)3.045 F F2(sendmail)3.045 E F1 .546(will ne)3.046 +F -.15(ve)-.25 G 3.046(rt).15 G .546(ry an)-3.046 F 3.046(ym)-.15 G +(atches)-3.046 E(at all \212 that is, e)174 321 Q -.15(ve)-.25 G +(rything will appear to f).15 E(ail.)-.1 E102 337.2 Q F2(x)A F1 +1.357(Append the string)57.48 F F2(x)3.857 E F1 1.357 +(on successful matches.)3.857 F -.15(Fo)6.357 G 3.857(re).15 G 1.356 +(xample, the def)-4.007 F(ault)-.1 E F2(host)3.856 E F1(map)3.856 E +(appends a dot on successful matches.)174 349.2 Q102 365.4 Q F2(x) +A F1 .02(Append the string)55.81 F F2(x)2.52 E F1 .021(on temporary f) +2.52 F 2.521(ailures. F)-.1 F .021(or e)-.15 F(xample,)-.15 E F2(x)2.521 +E F1 -.1(wo)2.521 G .021(uld be appended if a).1 F .72 +(DNS lookup returned \231serv)174 377.4 R .72(er f)-.15 F .72 +(ailed\232 or an NIS lookup could not locate a serv)-.1 F(er)-.15 E(.) +-.55 E(See also the)174 389.4 Q F02.5 E F1(\215ag.)2.5 E 60.53 +(\255f Do)102 405.6 R(not fold upper to lo)2.5 E +(wer case before looking up the k)-.25 E -.15(ey)-.1 G(.)-.5 E 56.08 +(\255m Match)102 421.8 R .399(only \(without replacing the v)2.899 F +2.899(alue\). If)-.25 F .399(you only care about the e)2.899 F .4 +(xistence of)-.15 F 7.307(ak)174 433.8 S 5.107 -.15(ey a)-7.407 H 4.807 +(nd not the v).15 F 4.807 +(alue \(as you might when searching the NIS map)-.25 F 1.947 +(\231hosts.byname\232 for e)174 445.8 R 1.947(xample\), this \215ag pre) +-.15 F -.15(ve)-.25 G 1.947(nts the map from substituting the).15 F -.25 +(va)174 457.8 S 2.85(lue. Ho).25 F(we)-.25 E -.15(ve)-.25 G 1.15 -.4 +(r, T).15 H .35(he \255a ar).4 F .349 +(gument is still appended on a match, and the def)-.18 F .349(ault is) +-.1 F(still tak)174 469.8 Q(en if the match f)-.1 E(ails.)-.1 E102 +486 Q F2 -.1(ke)C(ycol)-.2 E F1 .519(The k)36.22 F .819 -.15(ey c)-.1 H +.519(olumn name \(for NIS+\) or number \(for te).15 F .519 +(xt lookups\).)-.15 F -.15(Fo)5.52 G 3.02(rL).15 G -.4(DA)-3.02 G 3.02 +(Pm).4 G(aps)-3.02 E .973(this is an LD)174 498 R .973(AP \214lter stri\ +ng in which %s is replaced with the literal contents of)-.4 F .248 +(the lookup k)174 510 R .548 -.15(ey a)-.1 H .248 +(nd %0 is replaced with the LD).15 F .249 +(AP escaped contents of the lookup)-.4 F -.1(ke)174 522 S 4.176(ya)-.05 +G 1.676(ccording to RFC 2254.)-4.176 F 1.676(If the \215ag)6.676 F F0 +4.176 E F1 1.676(is used, then %1 through %9 are)4.176 F .886 +(replaced with the LD)174 534 R .887(AP escaped contents of the ar)-.4 F +.887(guments speci\214ed in the map)-.18 F(lookup.)174 546 Q102 +562.2 Q F2(valcol)A F1 1.929(The v)36.92 F 1.928 +(alue column name \(for NIS+\) or number \(for te)-.25 F 1.928 +(xt lookups\).)-.15 F -.15(Fo)6.928 G 4.428(rL).15 G -.4(DA)-4.428 G(P) +.4 E .467(maps this is the name of one or more attrib)174 574.2 R .467 +(utes to be returned; multiple attrib)-.2 F(utes)-.2 E 1.217 +(can be separated by commas.)174 586.2 R 1.216 +(If not speci\214ed, all attrib)6.216 F 1.216(utes found in the match) +-.2 F 1.327(will be returned.)174 598.2 R 1.328(The attrib)6.328 F 1.328 +(utes listed can also include a type and one or more)-.2 F +(objectClass v)174 610.2 Q(alues for matching as described in the LD) +-.25 E(AP section.)-.4 E102 626.4 Q F2(delim)A F1 .219 +(The column delimiter \(for te)39.7 F .219(xt lookups\).)-.15 F .218 +(It can be a single character or one of the)5.219 F 1.825 +(special strings \231)174 638.4 R 1.825(\\n\232 or \231)1.666 F 1.826 +(\\t\232 to indicate ne)1.666 F 1.826(wline or tab respecti)-.25 F -.15 +(ve)-.25 G(ly).15 E 6.826(.I)-.65 G 4.326(fo)-6.826 G(mitted)-4.326 E +(entirely)174 650.4 Q 4.123(,t)-.65 G 1.623(he column separator is an) +-4.123 F 4.123(ys)-.15 G 1.622(equence of white space.)-4.123 F -.15(Fo) +6.622 G 4.122(rL).15 G -.4(DA)-4.122 G 4.122(Pa).4 G(nd)-4.122 E .557 +(some other maps this is the separator character to combine multiple v) +174 662.4 R .557(alues into a)-.25 F .804(single return string.)174 +674.4 R .804(If not set, the LD)5.804 F .803 +(AP lookup will only return the \214rst match)-.4 F 2.57(found. F)174 +686.4 R .07(or DNS maps this is the separator character at which the re\ +sult of a query)-.15 F(is cut of)174 698.4 Q 2.5(fi)-.25 G 2.5(fi)-2.5 G +2.5(st)-2.5 G(oo long.)-2.5 E 0 Cg EP %%Page: 89 85 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3839>195.86 E -/F1 10/Times-Roman@0 SF<546865>127 96 Q/F2 10/Times-Italic@0 SF<64626d> -2.99 E F1 .489<6d617020617070656e64732074686520737472696e677320992e7061 -679a20616e6420992e6469729a20746f20746865206769>2.99 F -.15<7665>-.25 G -2.989<6e8c>.15 G .489<6c656e616d653b20746865>-2.989 F F2<68617368>2.989 -E F1<616e64>2.989 E F2<627472>2.989 E<6565>-.37 E F1 -<6d61707320617070656e6420992e64629a2e>102 108 Q -.15<466f>5 G 2.5<7265> -.15 G<78616d706c652c20746865206d61702073706563698c636174696f6e>-2.65 E --.15<4b75>142 124.2 S -<7563702064626d20ad6f20ad4e202f6574632f6d61696c2f757563706d6170>.15 E -.21<73706563698c657320616e206f7074696f6e616c206d6170206e616d656420997575 -63709a206f6620636c617373209964626d9a3b20697420616c>102 140.4 R -.1<7761> --.1 G .21 -<797320686173206e756c6c2062797465732061742074686520656e64206f662065>.1 F --.15<7665>-.25 G<7279>.15 E<737472696e672c20616e642074686520646174612069 -73206c6f636174656420696e202f6574632f6d61696c2f757563706d61702e7b646972> -102 152.4 Q<2c7061677d2e>-.4 E 1.095<5468652070726f6772616d>127 168.6 R -F2<6d616b>3.595 E<656d6170>-.1 E F1 1.094 -<2838292063616e206265207573656420746f2062>B 1.094<75696c6420616e>-.2 F -3.594<796f>-.15 G 3.594<6674>-3.594 G 1.094 -<68652074687265652064617461626173652d6f7269656e746564206d6170732e>-3.594 -F<4974>6.094 E<74616b>102 180.6 Q<65732074686520666f6c6c6f>-.1 E -<77696e67208d6167733a>-.25 E 60.53102 196.8 R -<6e6f7420666f6c6420757070657220746f206c6f>2.5 E -<776572206361736520696e20746865206d61702e>-.25 E 56.64 -102 213 R<6e756c6c20627974657320696e206b>2.5 E --.15<6579>-.1 G<732e>.15 E 58.86102 229.2 R -<746f20616e2065>2.5 E<78697374696e6720286f6c6429208c6c652e>-.15 E 60.53 -102 245.4 R 3.668<7772>-.25 G 1.168 -<65706c6163656d656e74206f662065>-3.668 F 1.168<78697374696e67206b>-.15 F --.15<6579>-.1 G 1.168<733b206e6f726d616c6c79>.15 F 3.668<2c72>-.65 G -1.168<652d696e73657274696e6720616e2065>-3.668 F 1.168 -<78697374696e67206b>-.15 F 1.469 -.15<65792069>-.1 H 3.669<7361>.15 G -<6e>-3.669 E<6572726f72>174 257.4 Q<2e>-.55 E 58.86102 -273.6 R<776861742069732068617070656e696e672e>2.5 E<546865>102 289.8 Q F2 -<73656e646d61696c>3.606 E F1 1.106<6461656d6f6e20646f6573206e6f74206861> -3.606 F 1.406 -.15<76652074>-.2 H 3.606<6f62>.15 G 3.606<6572>-3.606 G -1.106<657374617274656420746f207265616420746865206e65>-3.606 F 3.605 -<776d>-.25 G 1.105<617073206173206c6f6e6720617320796f75206368616e6765> --3.605 F<7468656d20696e20706c6163653b208c6c65206c6f636b696e672069732075 -73656420736f207468617420746865206d6170732077>102 301.8 Q<6f6e27>-.1 E -2.5<7462>-.18 G 2.5<6572>-2.5 G<656164207768696c6520746865>-2.5 E 2.5 -<7961>-.15 G<7265206265696e6720757064617465642e>-2.5 E<4e65>127 318 Q -2.5<7763>-.25 G -<6c61737365732063616e20626520616464656420696e2074686520726f7574696e65> --2.5 E F0<73657475706d617073>2.5 E F1<696e208c6c65>2.5 E F0<636f6e66>2.5 -E<2e63>-.15 E F1<2e>A F0 2.5<352e31302e2051>87 342 R 2.5<8a51>2.5 G -<75657565204772>-2.5 E<6f7570204465636c61726174696f6e>-.18 E F1 .71 -<496e206164646974696f6e20746f20746865206f7074696f6e>127 358.2 R F2 -<5175657565446972>3.21 E<6563746f7279>-.37 E<2c>-.55 E F1 .71<7175657565 -2067726f7570732063616e206265206465636c6172656420746861742064658c6e652061 -202867726f7570>3.21 F<6f6629207175657565206469726563746f7269657320756e64 -6572206120636f6d6d6f6e206e616d652e>102 370.2 Q -<5468652073796e74617820697320617320666f6c6c6f>5 E<77733a>-.25 E F0<51> -142 386.4 Q F2<6e616d65>A F1<7b2c>2.5 E F2<8c656c64>2.5 E F1<3d>A F2 -<76616c7565>A F1<7d2b>1.666 E<7768657265>102 402.6 Q F2<6e616d65>3.276 E -F1 .775<6973207468652073796d626f6c6963206e616d65206f66207468652071756575 -652067726f757020756e6465722077686963682069742063616e20626520726566657265 -6e63656420696e2076>3.276 F<6172696f7573>-.25 E .217 -<706c6163657320616e642074686520998c656c643d76>102 414.6 R .217 -<616c75659a2070616972732064658c6e6520617474726962>-.25 F .217 -<75746573206f66207468652071756575652067726f75702e>-.2 F .218 -<546865206e616d65206d757374206f6e6c7920636f6e73697374>5.218 F -<6f6620616c7068616e756d6572696320636861726163746572732e>102 426.6 Q -<4669656c6473206172653a>5 E 47.83<466c61677320466c616773>102 442.8 R -<666f7220746869732071756575652067726f75702e>2.5 E 50.62 -<4e69636520546865>102 459 R .902<6e69636528322920696e6372656d656e742066 -6f72207468652071756575652067726f75702e>3.402 F .901<546869732076>5.902 F -.901<616c7565206d7573742062652067726561746572206f7220657175616c>-.25 F -<7a65726f2e>174 471 Q<496e74657276>102 487.2 Q 38.65<616c20546865>-.25 F -<74696d65206265747765656e207477>2.5 E 2.5<6f71>-.1 G -<756575652072756e732e>-2.5 E -.15<5061>102 503.4 S 51.87<746820546865> -.15 F<7175657565206469726563746f7279206f66207468652067726f75702028726571 -7569726564292e>2.5 E 36.17<52756e6e65727320546865>102 519.6 R .073<6e75 -6d626572206f6620706172616c6c656c2072756e6e6572732070726f63657373696e6720 -7468652071756575652e>2.573 F .074<4e6f74652074686174>5.074 F F0<463d66> -2.574 E F1 .074<6d75737420626520736574206966>2.574 F<746869732076>174 -531.6 Q<616c75652069732067726561746572207468616e206f6e652e>-.25 E 51.72 -<4a6f627320546865>102 547.8 R<6d6178696d756d206e756d626572206f66206a6f62 -7320286d657373616765732064656c69>2.5 E -.15<7665>-.25 G -<72656429207065722071756575652072756e2e>.15 E 30.62 -<726563697069656e747320546865>102 564 R .382 -<6d6178696d756d206e756d626572206f6620726563697069656e74732070657220656e> -2.882 F -.15<7665>-.4 G 2.882<6c6f70652e20456e>.15 F -.15<7665>-.4 G -.382<6c6f7065732077697468206d6f7265207468616e2074686973>.15 F .109<6e75 -6d626572206f6620726563697069656e74732077696c6c2062652073706c697420696e74 -6f206d756c7469706c6520656e>174 576 R -.15<7665>-.4 G .11 -<6c6f70657320696e207468652073616d652071756575652064697265632d>.15 F -<746f7279>174 588 Q 5<2e54>-.65 G<686520646566>-5 E<61756c742076>-.1 E -<616c75652030206d65616e73206e6f206c696d69742e>-.25 E<4f6e6c792074686520 -8c72737420636861726163746572206f6620746865208c656c64206e616d652069732063 -6865636b>102 604.2 Q<65642e>-.1 E .076<427920646566>127 620.4 R .076 -<61756c742c20612071756575652067726f7570206e616d6564>-.1 F F2 -<6d7175657565>2.575 E F1 .075 -<69732064658c6e656420746861742075736573207468652076>2.575 F .075 -<616c7565206f6620746865>-.25 F F2<5175657565446972>2.575 E<6563746f7279> --.37 E F1 .268<6f7074696f6e20617320706174682e>102 632.4 R .268<4e6f7469 -63653a20616c6c207061746873207468617420617265207573656420666f722071756575 -652067726f757073206d757374206265207375626469726563746f72696573206f66> -5.268 F F2<517565756544692d>2.769 E -.37<7265>102 644.4 S<63746f7279>.37 -E F1 6.487<2e53>C 1.487<696e636520746865>-6.487 F 3.987<7963>-.15 G -1.487<616e2062652073796d626f6c6963206c696e6b732c20746869732069736e27> --3.987 F 3.987<746172>-.18 G 1.486 -<65616c207265737472696374696f6e2c204966>-3.987 F F2<5175657565446972> -3.986 E<6563746f7279>-.37 E F1 1.486<757365732061>3.986 F .746 -<77696c64636172642c207468656e20746865206469726563746f7279206f6e65206c65> -102 656.4 R -.15<7665>-.25 G 3.247<6c75>.15 G 3.247<7069>-3.247 G 3.247 -<7363>-3.247 G .747<6f6e73696465726564207468652060>-3.247 F -<606261736527>-.74 E 3.247<2764>-.74 G .747 -<69726563746f727920776869636820616c6c206f74686572207175657565>-3.247 F -.086<6469726563746f72696573206d7573742073686172652e>102 668.4 R .086 -<506c65617365206d616b>5.086 F 2.586<6573>-.1 G .086<75726520746861742074 -6865207175657565206469726563746f7269657320646f206e6f74206f>-2.586 F -.15 -<7665>-.15 G .085<726c61702c20652e672e2c20646f206e6f7420737065632d>.15 F -<696679>102 680.4 Q 0 Cg EP +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-89)195.86 E/F1 10/Times-Roman@0 SF 61.08(\255t Normally)102 96 R +2.727(,w)-.65 G .227(hen a map attempts to do a lookup and the serv) +-2.727 F .226(er f)-.15 F .226(ails \(e.g.,)-.1 F/F2 10/Times-Italic@0 +SF(sendmail)2.726 E F1(couldn')174 108 Q 2.776(tc)-.18 G .276(ontact an) +-2.776 F 2.776(yn)-.15 G .276(ame serv)-2.776 F .276(er; this is)-.15 F +F2(not)2.776 E F1 .276(the same as an entry not being found)2.776 F .251 +(in the map\), the message being processed is queued for future process\ +ing.)174 120 R(The)5.25 E F02.75 E F1 2.039(\215ag turns of)174 +132 R 4.539(ft)-.25 G 2.039(his beha)-4.539 F(vior)-.2 E 4.539(,l)-.4 G +2.039(etting the temporary f)-4.539 F 2.039(ailure \(serv)-.1 F 2.039 +(er do)-.15 F 2.04(wn\) act as)-.25 F .676(though it were a permanent f) +174 144 R .675(ailure \(entry not found\).)-.1 F .675 +(It is particularly useful for)5.675 F .772 +(DNS lookups, where someone else')174 156 R 3.272(sm)-.55 G .772 +(iscon\214gured name serv)-3.272 F .772(er can cause prob-)-.15 F 1.646 +(lems on your machine.)174 168 R(Ho)6.646 E(we)-.25 E -.15(ve)-.25 G +2.446 -.4(r, c).15 H 1.645(are must be tak).4 F 1.645 +(en to ensure that you don')-.1 F(t)-.18 E .262(bounce mail that w)174 +180 R .262(ould be resolv)-.1 F .262(ed correctly if you tried ag)-.15 F +2.763(ain. A)-.05 F .263(common strat-)2.763 F -.15(eg)174 192 S 2.5(yi) +.15 G 2.5(st)-2.5 G 2.5(of)-2.5 G(orw)-2.5 E(ard such mail to another) +-.1 E 2.5(,p)-.4 G(ossibly better connected, mail serv)-2.5 E(er)-.15 E +(.)-.55 E 56.64(\255D Perform)102 208.2 R .833 +(no lookup in deferred deli)3.333 F -.15(ve)-.25 G .833(ry mode.).15 F +.833(This \215ag is set by def)5.833 F .832(ault for the)-.1 F F2(host) +174 220.2 Q F1(map.)2.5 E102 236.4 Q F2(spacesub)A F1 1.537(The c\ +haracter to use to replace space characters after a successful map look\ +up)24.14 F(\(esp. useful for re)174 248.4 Q(ge)-.15 E 2.5(xa)-.15 G +(nd syslog maps\).)-2.5 E102 264.6 Q F2(spacesub)A F1 -.15(Fo) +25.81 G 3.101(rt).15 G .601(he dequote map only)-3.101 F 3.101(,t)-.65 G +.601(he character to use to replace space characters after a)-3.101 F +(successful dequote.)174 276.6 Q 58.86(\255q Don')102 292.8 R 2.5(td) +-.18 G(equote the k)-2.5 E .3 -.15(ey b)-.1 H(efore lookup.).15 E +102 309 Q F2(le)A(vel)-.15 E F1 -.15(Fo)41.52 G 2.5(rt).15 G +(he syslog map only)-2.5 E 2.5(,i)-.65 G 2.5(ts)-2.5 G +(peci\214es the le)-2.5 E -.15(ve)-.25 G 2.5(lt).15 G 2.5(ou)-2.5 G +(se for the syslog call.)-2.5 E 56.64(\255A When)102 325.2 R(reb)3 E .5 +(uilding an alias \214le, the)-.2 F F03 E F1 .5 +(\215ag causes duplicate entries in the te)3 F .5(xt v)-.15 F(er)-.15 E +(-)-.2 E(sion to be mer)174 337.2 Q 2.5(ged. F)-.18 F(or e)-.15 E +(xample, tw)-.15 E 2.5(oe)-.1 G(ntries:)-2.5 E 27.49(list: user1,)214 +353.4 R(user2)2.5 E 27.49(list: user3)214 365.4 R -.1(wo)174 381.6 S +(uld be treated as though it were the single entry).1 E 27.49 +(list: user1,)214 397.8 R(user2, user3)2.5 E(in the presence of the)174 +414 Q F02.5 E F1(\215ag.)2.5 E(Some additional \215ags are a)127 +430.2 Q -.25(va)-.2 G(ilable for the host and dns maps:).25 E 58.86 +(\255d delay:)102 446.4 R(specify the resolv)2.5 E(er')-.15 E 2.5(sr) +-.55 G(etransmission time interv)-2.5 E(al \(in seconds\).)-.25 E 60.53 +(\255r retry:)102 462.6 R +(specify the number of times to retransmit a resolv)2.5 E(er query)-.15 +E(.)-.65 E(The dns map has another \215ag:)127 478.8 Q 57.19 +(\255B basedomain:)102 495 R(specify a domain that is al)2.5 E -.1(wa) +-.1 G(ys appended to queries.).1 E(Sock)127 511.2 Q(et maps ha)-.1 E .3 +-.15(ve a)-.2 H 2.5(no).15 G(ptional \215ag:)-2.5 E 58.86 +(\255d timeout:)102 527.4 R .441 +(specify the timeout \(in seconds\) for communication with the sock) +2.941 F .44(et map)-.1 F(serv)174 539.4 Q(er)-.15 E(.)-.55 E(The follo) +127 555.6 Q(wing additional \215ags are present in the ldap map only:) +-.25 E102 571.8 Q F2(timeout)A F1 7.617(Set the LD)31.92 F 7.618 +(AP netw)-.4 F 7.618(ork timeout.)-.1 F 7.618 +(sendmail must be compiled with)12.618 F F0(\255DLD)174 583.8 Q +(AP_OPT_NETW)-.35 E(ORK_TIMEOUT)-.1 E F1(to use this \215ag.)2.5 E 57.19 +(\255R Do)102 600 R .025(not auto chase referrals.)2.525 F .025 +(sendmail must be compiled with)5.025 F F0(\255DLD)2.525 E(AP_REFER-) +-.35 E(RALS)174 612 Q F1(to use this \215ag.)2.5 E 58.86(\255n Retrie) +102 628.2 R .3 -.15(ve a)-.25 H(ttrib).15 E(ute names only)-.2 E(.)-.65 +E102 644.4 Q F2(sep)A F1(Retrie)45.81 E .3 -.15(ve b)-.25 H +(oth attrib).15 E(utes name and v)-.2 E(alue\(s\), separated by)-.25 E +F2(sep)2.5 E F1(.)A102 660.6 Q F2(der)A(ef)-.37 E F1 +(Set the alias dereference option to one of ne)42.85 E -.15(ve)-.25 G .8 +-.4(r, a).15 H -.1(lwa).4 G(ys, search, or \214nd.).1 E102 676.8 Q +F2(scope)A F1(Set search scope to one of base, one \(one le)39.7 E -.15 +(ve)-.25 G(l\), or sub \(subtree\).).15 E102 693 Q F2(host)A F1 +(LD)44.69 E 2.095(AP serv)-.4 F 2.095(er hostname.)-.15 F 2.095(Some LD) +7.095 F 2.095(AP libraries allo)-.4 F 4.595(wy)-.25 G 2.095 +(ou to specify multiple,)-4.595 F .467 +(space-separated hosts for redundanc)174 705 R 4.267 -.65(y. I)-.15 H +2.967(na).65 G .466(ddition, each of the hosts listed can be)-2.967 F +(follo)174 717 Q(wed by a colon and a port number to o)-.25 E -.15(ve) +-.15 G(rride the def).15 E(ault LD)-.1 E(AP port.)-.4 E 0 Cg EP %%Page: 90 86 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d39302053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF 2.5<4f51>142 96 S -<756575654469726563746f72793d2f76>-2.5 E -<61722f73706f6f6c2f6d71756575652f2a>-.25 E<516f6e652c20503d2f76>142 108 -Q<61722f73706f6f6c2f6d71756575652f64697231>-.25 E<517477>142 120 Q -<6f2c20503d2f76>-.1 E<61722f73706f6f6c2f6d71756575652f64697232>-.25 E<62 -656361757365207468697320616c736f20696e636c756465732099646972319a20616e64 -2099646972329a20696e2074686520646566>102 136.2 Q -<61756c742071756575652067726f75702e>-.1 E<486f>5 E<7765>-.25 E -.15 -<7665>-.25 G -.4<722c>.15 G 2.5<4f51>142 152.4 S -<756575654469726563746f72793d2f76>-2.5 E -<61722f73706f6f6c2f6d71756575652f6d61696e2a>-.25 E<516f6e652c20503d2f76> -142 164.4 Q<61722f73706f6f6c2f6d71756575652f646972>-.25 E<517477>142 -176.4 Q<6f2c20503d2f76>-.1 E -<61722f73706f6f6c2f6d71756575652f6f746865722a>-.25 E<697320612076>102 -192.6 Q<616c69642071756575652067726f75702073706563698c636174696f6e2e> --.25 E .235<4f7074696f6e73206c697374656420696e207468652060>127 208.8 R -<60466c61677327>-.74 E 2.736<278c>-.74 G .236 -<656c642063616e206265207573656420746f206d6f64696679207468652062656861> --2.736 F .236<76696f72206f6620612071756575652067726f75702e>-.2 F<546865> -5.236 E -.74<6060>102 220.8 S .55<6627>.74 G 2.605<278d>-1.29 G .105<61 -67206d75737420626520736574206966206d756c7469706c652071756575652072756e6e -6572732061726520737570706f73656420746f2077>-2.605 F .104<6f726b206f6e20 -74686520656e747269657320696e20612071756575652067726f75702e>-.1 F -<4f7468657277697365>102 232.8 Q/F2 10/Times-Italic@0 SF -<73656e646d61696c>2.5 E F1<77696c6c2077>2.5 E<6f726b206f6e2074686520656e -7472696573207374726963746c792073657175656e7469616c6c79>-.1 E<2e>-.65 E -.511<5468652060>127 249 R<60496e74657276>-.74 E<616c27>-.25 E 3.011 -<278c>-.74 G .511<656c642073657473207468652074696d65206265747765656e2071 -756575652072756e732e>-3.011 F .512 -<4966206e6f2071756575652067726f75702073706563698c6320696e74657276>5.511 -F .512<616c206973>-.25 F -<7365742c207468656e2074686520706172616d65746572206f6620746865>102 261 Q -F0<2d71>2.5 E F1<6f7074696f6e2066726f6d2074686520636f6d6d616e64206c696e -6520697320757365642e>2.5 E 7.657 -.8<546f2063>127 277.2 T 6.057 -<6f6e74726f6c20746865206f>.8 F -.15<7665>-.15 G 6.056 -<72616c6c206e756d626572206f6620636f6e63757272656e746c792061637469>.15 F -6.356 -.15<76652071>-.25 H 6.056 -<756575652072756e6e65727320746865206f7074696f6e>.15 F F0 -<4d617851756575654368696c6472>102 289.2 Q<656e>-.18 E F1 .055 -<63616e206265207365742e>2.555 F .055<54686973206c696d69747320746865206e -756d626572206f662070726f636573736573207573656420666f722072756e6e696e6720 -7468652071756575657320746f>5.055 F F0<4d617851756575654368696c6472>102 -301.2 Q<656e>-.18 E F1 3.63<2c74>C 1.13<686f75676820617420616e>-3.63 F -3.63<796f>-.15 G 1.13<6e652074696d65206665>-3.63 F 1.129 -<7765722070726f636573736573206d61792062652061637469>-.25 F 1.429 -.15 -<76652061>-.25 H 3.629<736172>.15 G 1.129<6573756c74206f66207175657565> --3.629 F<6f7074696f6e732c20636f6d706c657465642071756575652072756e732c20 -73797374656d206c6f61642c206574632e>102 313.2 Q .602<546865206d6178696d75 -6d206e756d626572206f662071756575652072756e6e65727320666f7220616e20696e64 -69>127 329.4 R .602<76696475616c2071756575652067726f75702063616e20626520 -636f6e74726f6c6c656420766961>-.25 F<746865>102 341.4 Q F0 -<52756e6e657273>2.585 E F1 2.585<6f7074696f6e2e204966>2.585 F .084<7365 -7420746f20302c20656e747269657320696e207468652071756575652077696c6c206e6f -742062652070726f6365737365642c2077686963682069732075736566756c20746f2060> -2.585 F<6071756172>-.74 E<2d>-.2 E<616e74696e6527>102 353.4 Q 4.515 -<2771>-.74 G 2.015<75657565208c6c65732e>-4.515 F 2.016<546865206e756d62 -6572206f662072756e6e657273207065722071756575652067726f7570206d617920616c -736f20626520736574207769746820746865206f7074696f6e>7.015 F F0 -<4d617852756e6e65727350>102 365.4 Q<65725175657565>-.2 E F1 3.209<2c77>C -.709<68696368206170706c69657320746f2071756575652067726f7570732074686174 -206861>-3.209 F 1.008 -.15<7665206e>-.2 H 3.208<6f69>.15 G<6e6469>-3.208 -E .708<76696475616c206c696d69742e>-.25 F .708<546861742069732c20746865> -5.708 F<646566>102 377.4 Q<61756c742076>-.1 E<616c756520666f72>-.25 E F0 -<52756e6e657273>2.5 E F1<6973>2.5 E F0<4d617852756e6e65727350>2.5 E -<65725175657565>-.2 E F1<6966207365742c206f746865727769736520312e>2.5 E -1.087<546865208c656c64204a6f62732064657363726962657320746865206d6178696d -756d206e756d626572206f66206a6f627320286d657373616765732064656c69>127 -393.6 R -.15<7665>-.25 G 1.087<72656429207065722071756575652072756e2c> -.15 F -<7768696368206973207468652071756575652067726f75702073706563698c632076> -102 405.6 Q<616c7565206f66>-.25 E F0<4d6178517565756552756e53697a65>2.5 -E F1<2e>A .175<4e6f746963653a2071756575652067726f7570732073686f756c6420 -6265206465636c6172656420616674657220616c6c2071756575652072656c6174656420 -6f7074696f6e73206861>127 421.8 R .475 -.15<76652062>-.2 H .175 -<65656e207365742062656361757365>.15 F .314 -<71756575652067726f7570732074616b>102 433.8 R 2.814<6574>-.1 G .314 -<6865697220646566>-2.814 F .314 -<61756c74732066726f6d2074686f7365206f7074696f6e732e>-.1 F .314<49662061 -6e206f7074696f6e2069732073657420616674657220612071756575652067726f757020 -6465636c6172612d>5.314 F .188<74696f6e2c207468652076>102 445.8 R .187<61 -6c756573206f66206f7074696f6e7320696e207468652071756575652067726f75702061 -72652073657420746f2074686520646566>-.25 F .187<61756c7473206f66>-.1 F F2 -<73656e646d61696c>2.687 E F1 .187<756e6c6573732065>2.687 F .187 -<78706c696369746c7920736574>-.15 F -<696e20746865206465636c61726174696f6e2e>102 457.8 Q 1.972 -<4561636820656e>127 474 R -.15<7665>-.4 G 1.972<6c6f70652069732061737369 -676e656420746f20612071756575652067726f7570206261736564206f6e207468652061 -6c676f726974686d2064657363726962656420696e2073656374696f6e>.15 F -.74 -<6060>102 486 S -<51756575652047726f75707320616e64205175657565204469726563746f7269657327> -.74 E<272e>-.74 E F0 2.5<352e31312e2058>87 510 R 2.5<8a4d>2.5 G -<61696c2046696c74657220284d696c746572292044658c6e6974696f6e73>-2.5 E F1 -<546865>127 526.2 Q F2<73656e646d61696c>3.937 E F1 1.437<4d61696c204669 -6c7465722041504920284d696c746572292069732064657369676e656420746f20616c6c -6f>3.937 F 3.937<7774>-.25 G 1.437 -<686972642d70617274792070726f6772616d732061636365737320746f>-3.937 F -.177<6d61696c206d6573736167657320617320746865>102 538.2 R 2.677<7961> --.15 G .177<7265206265696e672070726f63657373656420696e206f7264657220746f -208c6c746572206d6574612d696e666f726d6174696f6e20616e6420636f6e74656e742e> --2.677 F<546865>5.178 E 2.678<7961>-.15 G<7265>-2.678 E<6465636c61726564 -20696e2074686520636f6e8c6775726174696f6e208c6c652061733a>102 550.2 Q F0 -<58>142 566.4 Q F2<6e616d65>A F1<7b2c>2.5 E F2<8c656c64>2.5 E F1<3d>A F2 -<76616c7565>A F1<7d2a>1.666 E<7768657265>102 582.6 Q F2<6e616d65>4.688 E -F1 2.188<697320746865206e616d65206f6620746865208c6c74657220287573656420 -696e7465726e616c6c79206f6e6c792920616e642074686520998c656c643d6e616d659a -2070616972732064658c6e65>4.688 F<617474726962>102 594.6 Q .491 -<75746573206f6620746865208c6c746572>-.2 F 5.491<2e41>-.55 G .491 -<6c736f207365652074686520646f63756d656e746174696f6e20666f7220746865> --5.491 F F0<496e7075744d61696c46696c74657273>2.992 E F1 .492 -<6f7074696f6e20666f72206d6f726520696e666f72>2.992 F<2d>-.2 E -<6d6174696f6e2e>102 606.6 Q<4669656c6473206172653a>127 622.8 Q<536f636b> -142 639 Q 42.38<657420546865>-.1 F<736f636b>2.5 E -<65742073706563698c636174696f6e>-.1 E 47.83<466c616773205370656369616c> -142 651 R<8d61677320666f722074686973208c6c746572>2.5 E -.35<5469>142 663 -S 32.07<6d656f7574732054>.35 F -<696d656f75747320666f722074686973208c6c746572>-.35 E<4f6e6c792074686520 -8c72737420636861726163746572206f6620746865208c656c64206e616d652069732063 -6865636b>102 679.2 Q<65642028697427>-.1 E 2.5<7363>-.55 G -<6173652d73656e73697469>-2.5 E -.15<7665>-.25 G<292e>.15 E -<54686520736f636b>127 695.4 Q -<65742073706563698c636174696f6e206973206f6e65206f662074686520666f6c6c6f> --.1 E<77696e6720666f726d733a>-.25 E F0<533d696e65743a>142 711.6 Q F2 -<706f7274>2.5 E F0<40>2.5 E F2<686f7374>2.5 E 0 Cg EP +/F0 10/Times-Bold@0 SF 193.36(SMM:08-90 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF102 +96 Q/F2 10/Times-Italic@0 SF(port)A F1(LD)44.69 E(AP service port.)-.4 E +102 112.2 Q F2(LD)2.5 E(APURI)-.35 E F1 1.102 +(Use the speci\214ed LD)15.33 F 1.103 +(AP URI instead of specifying the hostname and port sepa-)-.4 F +(rately with the the)174 124.2 Q F02.5 E F1(and)2.5 E F02.5 +E F1(options sho)2.5 E(wn abo)-.25 E -.15(ve)-.15 G 5(.F).15 G(or e) +-5.15 E(xample,)-.15 E(-h serv)214 140.4 Q(er)-.15 E(.e)-.55 E +(xample.com -p 389 -b dc=e)-.15 E(xample,dc=com)-.15 E(is equi)174 156.6 +Q -.25(va)-.25 G(lent to).25 E(-H ldap://serv)214 172.8 Q(er)-.15 E(.e) +-.55 E(xample.com:389 -b dc=e)-.15 E(xample,dc=com)-.15 E .757 +(If the LD)174 189 R .757(AP library supports it, the LD)-.4 F .757 +(AP URI format ho)-.4 F(we)-.25 E -.15(ve)-.25 G 3.257(rc).15 G .757 +(an also request)-3.257 F(LD)174 201 Q(AP o)-.4 E -.15(ve)-.15 G 2.5(rS) +.15 G(SL by using)-2.5 E F0(ldaps://)2.5 E F1(instead of)2.5 E F0 +(ldap://)2.5 E F1 5(.F)C(or e)-5.15 E(xample:)-.15 E 2.5(OL)214 217.2 S +-.4(DA)-2.5 G(PDef).4 E(aultSpec=-H ldaps://ldap.e)-.1 E +(xample.com -b dc=e)-.15 E(xample,dc=com)-.15 E(Similarly)174 233.4 Q +3.22(,i)-.65 G 3.22(ft)-3.22 G .72(he LD)-3.22 F .721 +(AP library supports it, It can also be used to specify a UNIX)-.4 F +(domain sock)174 245.4 Q(et using)-.1 E F0(ldapi://)2.5 E F1(:)A 2.5(OL) +214 261.6 S -.4(DA)-2.5 G(PDef).4 E(aultSpec=-H ldapi://sock)-.1 E +(et\214le -b dc=e)-.1 E(xample,dc=com)-.15 E102 282 Q F2(base)A F1 +(LD)43.03 E(AP search base.)-.4 E102 298.2 Q F2(timelimit)A F1 +-.35(Ti)28.02 G(me limit for LD).35 E(AP queries.)-.4 E102 314.4 Q +F2(sizelimit)A F1(Size \(number of matches\) limit for LD)26.91 E +(AP or DNS queries.)-.4 E102 330.6 Q F2(distinguished_name)A F1 +(The distinguished name to use to login to the LD)174 342.6 Q(AP serv) +-.4 E(er)-.15 E(.)-.55 E102 358.8 Q F2(method)A F1 5.988 +(The method to authenticate to the LD)28.03 F 5.987(AP serv)-.4 F(er) +-.15 E 10.987(.S)-.55 G 5.987(hould be one of)-10.987 F F0(LD)174 370.8 +Q(AP_A)-.35 E(UTH_NONE)-.5 E F1(,)A F0(LD)5.756 E(AP_A)-.35 E +(UTH_SIMPLE)-.5 E F1 5.757(,o)C(r)-5.757 E F0(LD)5.757 E(AP_A)-.35 E +(UTH_KRBV4)-.5 E F1(.)A(The leading)174 382.8 Q F0(LD)2.5 E(AP_A)-.35 E +(UTH_)-.5 E F1(can be omitted and the v)2.5 E(alue is case-insensiti) +-.25 E -.15(ve)-.25 G(.).15 E102 399 Q F2(passwor)A(d\214le)-.37 E +F1 .342(The \214le containing the secret k)10.61 F .642 -.15(ey f)-.1 H +.342(or the).15 F F0(LD)2.842 E(AP_A)-.35 E(UTH_SIMPLE)-.5 E F1 +(authentication)2.842 E(method or the name of the K)174 411 Q +(erberos tick)-.25 E(et \214le for)-.1 E F0(LD)2.5 E(AP_A)-.35 E +(UTH_KRBV4)-.5 E F1(.)A 58.86(\2551 F)102 427.2 R .457(orce LD)-.15 F +.458(AP searches to only succeed if a single match is found.)-.4 F .458 +(If multiple v)5.458 F(al-)-.25 E +(ues are found, the search is treated as if no match w)174 439.2 Q +(as found.)-.1 E102 455.4 Q F2(ver)A(sion)-.1 E F1 1.48 +(Set the LD)29.8 F 1.479(AP API/protocol v)-.4 F 1.479(ersion to use.) +-.15 F 1.479(The def)6.479 F 1.479(ault depends on the LD)-.1 F(AP)-.4 E +1.37(client libraries in use.)174 467.4 R -.15(Fo)6.37 G 3.87(re).15 G +(xample,)-4.02 E F0 1.37(\255w 3)3.87 F F1 1.37(will cause)3.87 F F2 +(sendmail)3.87 E F1 1.37(to use LD)3.87 F(APv3)-.4 E +(when communicating with the LD)174 479.4 Q(AP serv)-.4 E(er)-.15 E(.) +-.55 E 56.64(\255K T)102 495.6 R .588(reat the LD)-.35 F .588 +(AP search k)-.4 F .888 -.15(ey a)-.1 H 3.088(sm).15 G(ulti-ar)-3.088 E +.587(gument and replace %1 through %9 in the)-.18 F -.1(ke)174 507.6 S +2.503(yw)-.05 G .003(ith the LD)-2.503 F .003 +(AP escaped contents of the lookup ar)-.4 F .003 +(guments speci\214ed in the map)-.18 F(lookup.)174 519.6 Q(The)127 535.8 +Q F2(dbm)2.99 E F1 .489 +(map appends the strings \231.pag\232 and \231.dir\232 to the gi)2.99 F +-.15(ve)-.25 G 2.989<6e8c>.15 G .489(lename; the)-2.989 F F2(hash)2.989 +E F1(and)2.989 E F2(btr)2.989 E(ee)-.37 E F1(maps append \231.db\232.) +102 547.8 Q -.15(Fo)5 G 2.5(re).15 G(xample, the map speci\214cation) +-2.65 E -.15(Ku)142 564 S(ucp dbm \255o \255N /etc/mail/uucpmap).15 E +.21(speci\214es an optional map named \231uucp\232 of class \231dbm\232\ +; it al)102 580.2 R -.1(wa)-.1 G .21(ys has null bytes at the end of e) +.1 F -.15(ve)-.25 G(ry).15 E +(string, and the data is located in /etc/mail/uucpmap.{dir)102 592.2 Q +(,pag}.)-.4 E .853(The program)127 608.4 R F2(mak)3.353 E(emap)-.1 E F1 +.852(\(8\) can be used to b)B .852(uild database-oriented maps.)-.2 F +.852(It tak)5.852 F .852(es at least the)-.1 F(follo)102 620.4 Q +(wing \215ags \(for a complete list see its man page\):)-.25 E 60.53 +(\255f Do)102 636.6 R(not fold upper to lo)2.5 E(wer case in the map.) +-.25 E 56.64(\255N Include)102 652.8 R(null bytes in k)2.5 E -.15(ey)-.1 +G(s.).15 E 58.86(\255o Append)102 669 R(to an e)2.5 E +(xisting \(old\) \214le.)-.15 E 60.53(\255r Allo)102 685.2 R 3.668(wr) +-.25 G 1.168(eplacement of e)-3.668 F 1.168(xisting k)-.15 F -.15(ey)-.1 +G 1.168(s; normally).15 F 3.668(,r)-.65 G 1.168(e-inserting an e)-3.668 +F 1.168(xisting k)-.15 F 1.469 -.15(ey i)-.1 H 3.669(sa).15 G(n)-3.669 E +(error)174 697.2 Q(.)-.55 E 58.86(\255v Print)102 713.4 R +(what is happening.)2.5 E 0 Cg EP %%Page: 91 87 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3931>195.86 E -<533d696e6574363a>142 96 Q/F1 10/Times-Italic@0 SF<706f7274>2.5 E F0<40> -2.5 E F1<686f7374>2.5 E F0<533d6c6f63616c3a>142 116.4 Q F1<70617468>2.5 -E/F2 10/Times-Roman@0 SF 1.792<546865208c727374207477>102 132.6 R 4.291 -<6f64>-.1 G 1.791 -<6573637269626520616e2049507634206f72204950763620736f636b>-4.291 F 1.791 -<6574206c697374656e696e67206f6e2061206365727461696e>-.1 F F1<706f7274> -4.291 E F2 1.791<61742061206769>4.291 F -.15<7665>-.25 G<6e>.15 E F1 -<686f7374>4.291 E F2 1.791<6f72204950>4.291 F 2.5 -<616464726573732e20546865>102 144.6 R -<8c6e616c20666f726d206465736372696265732061206e616d656420736f636b>2.5 E -<6574206f6e20746865208c6c6573797374656d20617420746865206769>-.1 E -.15 -<7665>-.25 G<6e>.15 E F1<70617468>2.5 E F2<2e>A<54686520666f6c6c6f>127 -160.8 Q<77696e67208d616773206d61792062652073657420696e20746865208c6c7465 -72206465736372697074696f6e2e>-.25 E 13.33<5252>102 177 S -<656a65637420636f6e6e656374696f6e206966208c6c74657220756e61>-13.33 E --.25<7661>-.2 G<696c61626c652e>.25 E 13.89<5454>102 193.2 S -<656d706f726172792066>-14.59 E -<61696c20636f6e6e656374696f6e206966208c6c74657220756e61>-.1 E -.25<7661> --.2 G<696c61626c652e>.25 E .655<4966206e65697468657220463d52206e6f722046 -3d542069732073706563698c65642c20746865206d657373616765206973207061737365 -64207468726f756768>127 209.4 R F1<73656e646d61696c>3.155 E F2 .655 -<696e2063617365206f66208c6c746572>3.155 F -<6572726f7273206173206966207468652066>102 221.4 Q -<61696c696e67208c6c746572732077657265206e6f742070726573656e742e>-.1 E<54 -68652074696d656f7574732063616e20626520736574207573696e672074686520666f75 -72208c656c647320696e73696465206f6620746865>127 237.6 Q F0<543d>2.5 E F2 -<6571756174653a>2.5 E 13.33<4354>102 253.8 S -<696d656f757420666f7220636f6e6e656374696e6720746f2061208c6c746572>-13.68 -E 5<2e49>-.55 G 2.5<6673>-5 G<657420746f20302c207468652073797374656d27> --2.5 E<73>-.55 E F1<636f6e6e6563742829>2.5 E F2 -<74696d656f75742077696c6c20626520757365642e>2.5 E 14.44<5354>102 270 S< -696d656f757420666f722073656e64696e6720696e666f726d6174696f6e2066726f6d20 -746865204d54>-14.79 E 2.5<4174>-.93 G 2.5<6f618c>-2.5 G<6c746572>-2.5 E -<2e>-.55 E 13.33<5254>102 286.2 S<696d656f757420666f722072656164696e6720 -7265706c792066726f6d20746865208c6c746572>-13.68 E<2e>-.55 E 13.89<454f> -102 302.4 S -.15<7665>-13.89 G 1.186<72616c6c2074696d656f75742062657477 -65656e2073656e64696e6720656e642d6f662d6d65737361676520746f208c6c74657220 -616e642077>.15 F 1.186 -<616974696e6720666f7220746865208c6e616c2061636b6e6f>-.1 F<776c2d>-.25 E -<6564676d656e742e>122 314.4 Q 1.402<4e6f74652074686520736570617261746f72 -206265747765656e20656163682074696d656f7574208c656c642069732061>127 330.6 -R F0<273b27>3.903 E F2 6.403<2e54>C 1.403<686520646566>-6.403 F 1.403 -<61756c742076>-.1 F 1.403 -<616c75657320286966206e6f742073657429206172653a>-.25 F F0 -<543d433a356d3b533a3130733b523a3130733b453a356d>102 342.6 Q F2 -<7768657265>2.5 E F0<73>2.5 E F2<6973207365636f6e647320616e64>2.5 E F0 -<6d>2.5 E F2<6973206d696e757465732e>2.5 E<4578616d706c65733a>127 358.8 Q -<588c6c746572312c20533d6c6f63616c3a2f76>142 375 Q -<61722f72756e2f66312e736f636b2c20463d52>-.25 E -<588c6c746572322c20533d696e6574363a393939406c6f63616c686f73742c20463d54> -142 387 Q 2.5<2c54>-.74 G<3d533a31733b523a31733b453a356d>-2.5 E<588c6c74 -6572332c20533d696e65743a33333333406c6f63616c686f73742c20543d433a326d>142 -399 Q F0 2.5<352e31322e20546865>87 427.2 R<55736572204461746162617365> -2.5 E F2 .479<5468652075736572206461746162617365206973206465707265636174 -656420696e2066>127 443.4 R -.2<61766f>-.1 G 2.978<726f>.2 G 2.978<6660> --2.978 G<6076697274757365727461626c6527>-3.718 E 2.978<2761>-.74 G .478 -<6e642060>-2.978 F<6067656e65726963737461626c6527>-.74 E 2.978<2761>-.74 -G 2.978<7365>-2.978 G<78706c61696e6564>-3.128 E 1.029 -<696e20746865208c6c65>102 455.4 R F0<63662f524541444d45>3.529 E F2 6.029 -<2e49>C 3.529<6679>-6.029 G 1.029<6f75206861>-3.529 F 1.329 -.15 -<76652061207665>-.2 H 1.029<7273696f6e206f66>.15 F F1<73656e646d61696c> -3.529 E F2 1.03 -<77697468207468652075736572206461746162617365207061636b61676520636f6d2d> -3.53 F<70696c656420696e2c207468652068616e646c696e67206f662073656e646572 -20616e6420726563697069656e7420616464726573736573206973206d6f64698c65642e> -102 467.4 Q<546865206c6f636174696f6e206f66207468697320646174616261736520 -697320636f6e74726f6c6c6564207769746820746865>127 483.6 Q F0 -<55736572446174616261736553706563>2.5 E F2<6f7074696f6e2e>2.5 E F0 2.5 -<352e31322e312e205374727563747572>102 507.6 R 2.5<656f>-.18 G 2.5<6674> --2.5 G<68652075736572206461746162617365>-2.5 E F2 -<546865206461746162617365206973206120736f7274656420284254>142 523.8 Q -<7265652d626173656429207374727563747572652e>-.35 E -<55736572207265636f726473206172652073746f726564207769746820746865206b>5 -E -.15<6579>-.1 G<3a>.15 E F1<75736572>157 540 Q<2d6e616d65>-.2 E F0<3a> -A F1<8c656c642d6e616d65>A F2 .128<54686520736f72746564206461746162617365 -20666f726d617420656e737572657320746861742075736572207265636f726473206172 -6520636c7573746572656420746f676574686572>117 556.2 R 5.128<2e4d>-.55 G -.128<6574612d696e666f726d6174696f6e206973>-5.128 F<616c>117 568.2 Q -.1 -<7761>-.1 G -<79732073746f72656420776974682061206c656164696e6720636f6c6f6e2e>.1 E<46 -69656c64206e616d65732064658c6e6520626f7468207468652073796e74617820616e64 -2073656d616e74696373206f66207468652076>142 584.4 Q 2.5 -<616c75652e2044658c6e6564>-.25 F<8c656c647320696e636c7564653a>2.5 E -33.39<6d61696c64726f7020546865>117 600.6 R<64656c69>4.872 E -.15<7665> --.25 G 2.372<7279206164647265737320666f7220746869732075736572>.15 F -7.372<2e54>-.55 G 2.373<68657265206d6179206265206d756c7469706c652076> --7.372 F 2.373<616c756573206f662074686973>-.25 F 2.675 -<7265636f72642e20496e>189 612.6 R<706172746963756c6172>2.675 E 2.675 -<2c6d>-.4 G .175<61696c696e67206c697374732077696c6c206861>-2.675 F .475 --.15<7665206f>-.2 H<6e65>.15 E F1<6d61696c6472>2.675 E<6f70>-.45 E F2 -.175<7265636f726420666f7220656163682075736572>2.675 F -<6f6e20746865206c6973742e>189 624.6 Q 30.06<6d61696c6e616d6520546865>117 -640.8 R 1.026 -<6f7574676f696e67206d61696c6e616d6520666f7220746869732075736572>3.526 F -6.026<2e46>-.55 G 1.027 -<6f722065616368206f7574676f696e67206e616d652c2074686572652073686f756c64> --6.176 F .08<626520616e20617070726f707269617465>189 652.8 R F1 -<6d61696c6472>2.58 E<6f70>-.45 E F2 .08 -<7265636f726420666f722074686174206e616d6520746f20616c6c6f>2.58 F 2.58 -<7772>-.25 G .08<657475726e206d61696c2e>-2.58 F .08<53656520616c736f> -5.08 F F1<3a64656661756c743a6d61696c6e616d65>189 664.8 Q F2<2e>A 25.62 -<6d61696c73656e646572204368616e676573>117 681 R<616e>3.447 E 3.447<796d> --.15 G .947 -<61696c2073656e7420746f2074686973206164647265737320746f206861>-3.447 F -1.248 -.15<76652074>-.2 H .948<686520696e6469636174656420656e>.15 F -.15 -<7665>-.4 G .948<6c6f70652073656e646572>.15 F<2e>-.55 E .498<5468697320 -697320696e74656e64656420666f72206d61696c696e67206c697374732c20616e642077 -696c6c206e6f726d616c6c7920626520746865206e616d65206f6620616e20617070726f -2d>189 693 R .754<707269617465202d7265717565737420616464726573732e>189 -705 R .754<49742069732076>5.754 F .755 -<6572792073696d696c617220746f20746865206f>-.15 F<776e6572>-.25 E<2d>-.2 -E F1<6c697374>A F2 .755<73796e74617820696e2074686520616c696173>3.255 F -<8c6c652e>189 717 Q 0 Cg EP +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-91)195.86 E/F1 10/Times-Roman@0 SF(The)102 96 Q/F2 10 +/Times-Italic@0 SF(sendmail)3.606 E F1 1.106(daemon does not ha)3.606 F +1.406 -.15(ve t)-.2 H 3.606(ob).15 G 3.606(er)-3.606 G 1.106 +(estarted to read the ne)-3.606 F 3.605(wm)-.25 G 1.105 +(aps as long as you change)-3.605 F +(them in place; \214le locking is used so that the maps w)102 108 Q(on') +-.1 E 2.5(tb)-.18 G 2.5(er)-2.5 G(ead while the)-2.5 E 2.5(ya)-.15 G +(re being updated.)-2.5 E(Ne)127 124.2 Q 2.5(wc)-.25 G +(lasses can be added in the routine)-2.5 E F0(setupmaps)2.5 E F1 +(in \214le)2.5 E F0(conf)2.5 E(.c)-.15 E F1(.)A F0 2.5(5.10. Q)87 148.2 +R 2.5<8a51>2.5 G(ueue Gr)-2.5 E(oup Declaration)-.18 E F1 .71 +(In addition to the option)127 164.4 R F2(QueueDir)3.21 E(ectory)-.37 E +(,)-.55 E F1 .71(queue groups can be declared that de\214ne a \(group) +3.21 F(of\) queue directories under a common name.)102 176.4 Q +(The syntax is as follo)5 E(ws:)-.25 E F0(Q)142 192.6 Q F2(name)A F1({,) +2.5 E F2(\214eld)2.5 E F1(=)A F2(value)A F1(}+)1.666 E(where)102 208.8 Q +F2(name)3.276 E F1 .775(is the symbolic name of the queue group under w\ +hich it can be referenced in v)3.276 F(arious)-.25 E .217 +(places and the \231\214eld=v)102 220.8 R .217 +(alue\232 pairs de\214ne attrib)-.25 F .217(utes of the queue group.)-.2 +F .218(The name must only consist)5.218 F(of alphanumeric characters.) +102 232.8 Q(Fields are:)5 E 47.83(Flags Flags)102 249 R +(for this queue group.)2.5 E 50.62(Nice The)102 265.2 R .902 +(nice\(2\) increment for the queue group.)3.402 F .901(This v)5.902 F +.901(alue must be greater or equal)-.25 F(zero.)174 277.2 Q(Interv)102 +293.4 Q 38.65(al The)-.25 F(time between tw)2.5 E 2.5(oq)-.1 G +(ueue runs.)-2.5 E -.15(Pa)102 309.6 S 51.87(th The).15 F +(queue directory of the group \(required\).)2.5 E 36.17(Runners The)102 +325.8 R .073(number of parallel runners processing the queue.)2.573 F +.074(Note that)5.074 F F0(F=f)2.574 E F1 .074(must be set if)2.574 F +(this v)174 337.8 Q(alue is greater than one.)-.25 E 51.72(Jobs The)102 +354 R(maximum number of jobs \(messages deli)2.5 E -.15(ve)-.25 G +(red\) per queue run.).15 E 30.62(recipients The)102 370.2 R .382 +(maximum number of recipients per en)2.882 F -.15(ve)-.4 G 2.882 +(lope. En).15 F -.15(ve)-.4 G .382(lopes with more than this).15 F .109 +(number of recipients will be split into multiple en)174 382.2 R -.15 +(ve)-.4 G .11(lopes in the same queue direc-).15 F(tory)174 394.2 Q 5 +(.T)-.65 G(he def)-5 E(ault v)-.1 E(alue 0 means no limit.)-.25 E +(Only the \214rst character of the \214eld name is check)102 410.4 Q +(ed.)-.1 E .076(By def)127 426.6 R .076(ault, a queue group named)-.1 F +F2(mqueue)2.575 E F1 .075(is de\214ned that uses the v)2.575 F .075 +(alue of the)-.25 F F2(QueueDir)2.575 E(ectory)-.37 E F1 .268 +(option as path.)102 438.6 R .268(Notice: all paths that are used for q\ +ueue groups must be subdirectories of)5.268 F F2(QueueDi-)2.769 E -.37 +(re)102 450.6 S(ctory).37 E F1 6.487(.S)C 1.487(ince the)-6.487 F 3.987 +(yc)-.15 G 1.487(an be symbolic links, this isn')-3.987 F 3.987(tar)-.18 +G 1.486(eal restriction, If)-3.987 F F2(QueueDir)3.986 E(ectory)-.37 E +F1 1.486(uses a)3.986 F .746(wildcard, then the directory one le)102 +462.6 R -.15(ve)-.25 G 3.247(lu).15 G 3.247(pi)-3.247 G 3.247(sc)-3.247 +G .747(onsidered the `)-3.247 F(`base')-.74 E 3.247('d)-.74 G .747 +(irectory which all other queue)-3.247 F .086(directories must share.) +102 474.6 R .086(Please mak)5.086 F 2.586(es)-.1 G .086 +(ure that the queue directories do not o)-2.586 F -.15(ve)-.15 G .085 +(rlap, e.g., do not spec-).15 F(ify)102 486.6 Q 2.5(OQ)142 502.8 S +(ueueDirectory=/v)-2.5 E(ar/spool/mqueue/*)-.25 E(Qone, P=/v)142 514.8 Q +(ar/spool/mqueue/dir1)-.25 E(Qtw)142 526.8 Q(o, P=/v)-.1 E +(ar/spool/mqueue/dir2)-.25 E +(because this also includes \231dir1\232 and \231dir2\232 in the def)102 +543 Q(ault queue group.)-.1 E(Ho)5 E(we)-.25 E -.15(ve)-.25 G -.4(r,).15 +G 2.5(OQ)142 559.2 S(ueueDirectory=/v)-2.5 E(ar/spool/mqueue/main*)-.25 +E(Qone, P=/v)142 571.2 Q(ar/spool/mqueue/dir)-.25 E(Qtw)142 583.2 Q +(o, P=/v)-.1 E(ar/spool/mqueue/other*)-.25 E(is a v)102 599.4 Q +(alid queue group speci\214cation.)-.25 E .235(Options listed in the `) +127 615.6 R(`Flags')-.74 E 2.736<278c>-.74 G .236 +(eld can be used to modify the beha)-2.736 F .236 +(vior of a queue group.)-.2 F(The)5.236 E -.74(``)102 627.6 S .55(f').74 +G 2.605<278d>-1.29 G .105 +(ag must be set if multiple queue runners are supposed to w)-2.605 F +.104(ork on the entries in a queue group.)-.1 F(Otherwise)102 639.6 Q F2 +(sendmail)2.5 E F1(will w)2.5 E +(ork on the entries strictly sequentially)-.1 E(.)-.65 E .511(The `)127 +655.8 R(`Interv)-.74 E(al')-.25 E 3.011<278c>-.74 G .511 +(eld sets the time between queue runs.)-3.011 F .512 +(If no queue group speci\214c interv)5.511 F .512(al is)-.25 F +(set, then the parameter of the)102 667.8 Q F0(-q)2.5 E F1 +(option from the command line is used.)2.5 E 7.657 -.8(To c)127 684 T +6.057(ontrol the o).8 F -.15(ve)-.15 G 6.056 +(rall number of concurrently acti).15 F 6.356 -.15(ve q)-.25 H 6.056 +(ueue runners the option).15 F F0(MaxQueueChildr)102 696 Q(en)-.18 E F1 +.055(can be set.)2.555 F .055 +(This limits the number of processes used for running the queues to) +5.055 F F0(MaxQueueChildr)102 708 Q(en)-.18 E F1 3.63(,t)C 1.13 +(hough at an)-3.63 F 3.63(yo)-.15 G 1.13(ne time fe)-3.63 F 1.129 +(wer processes may be acti)-.25 F 1.429 -.15(ve a)-.25 H 3.629(sar).15 G +1.129(esult of queue)-3.629 F +(options, completed queue runs, system load, etc.)102 720 Q 0 Cg EP %%Page: 92 88 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d39322053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF 33.95<66756c6c6e616d6520546865>117 96 R -<66756c6c206e616d65206f66207468652075736572>2.5 E<2e>-.55 E<6f66>117 -112.2 Q 13.66<8c63652d6164647265737320546865>-.25 F<6f66>2.5 E -<8c6365206164647265737320666f7220746869732075736572>-.25 E<2e>-.55 E -<6f66>117 128.4 Q 19.21<8c63652d70686f6e6520546865>-.25 F<6f66>2.5 E -<8c63652070686f6e65206e756d62657220666f7220746869732075736572>-.25 E<2e> --.55 E<6f66>117 144.6 Q<8c63652d66>-.25 E 30.98<617820546865>-.1 F<6f66> -2.5 E<8c63652046>-.25 E<4158206e756d62657220666f7220746869732075736572> --.74 E<2e>-.55 E 13.96<686f6d652d6164647265737320546865>117 160.8 R -<686f6d65206164647265737320666f7220746869732075736572>2.5 E<2e>-.55 E -19.51<686f6d652d70686f6e6520546865>117 177 R -<686f6d652070686f6e65206e756d62657220666f7220746869732075736572>2.5 E -<2e>-.55 E<686f6d652d66>117 193.2 Q 31.28<617820546865>-.1 F -<686f6d652046>2.5 E<4158206e756d62657220666f7220746869732075736572>-.74 -E<2e>-.55 E 41.73<70726f6a6563742041>117 209.4 R .856<2873686f7274292064 -65736372697074696f6e206f66207468652070726f6a656374207468697320706572736f -6e206973206166>3.356 F .855<8c6c696174656420776974682e>-.25 F .855 -<496e2074686520556e692d>5.855 F -.15<7665>189 221.4 S<727369747920746869 -73206973206f6674656e206a75737420746865206e616d65206f66207468656972206772 -6164756174652061647669736f72>.15 E<2e>-.55 E 52.28<706c616e2041>117 -237.6 R<706f696e74657220746f2061208c6c652066726f6d20776869636820706c616e -20696e666f726d6174696f6e2063616e2062652067>2.5 E<617468657265642e>-.05 E -.924<4173206f6620746869732077726974696e672c206f6e6c792061206665>142 -253.8 R 3.424<776f>-.25 G 3.424<6674>-3.424 G .925<68657365208c656c6473 -206172652061637475616c6c79206265696e672075736564206279>-3.424 F/F2 10 -/Times-Italic@0 SF<73656e646d61696c>3.425 E F1<3a>A F2<6d61696c2d>3.425 -E<6472>117 265.8 Q<6f70>-.45 E F1<616e64>2.5 E F2<6d61696c6e616d65>2.5 E -F1 5<2e41>C F2<8c6e67>-2.5 E<6572>-.1 E F1<70726f6772616d20746861742075 -73657320746865206f74686572208c656c647320697320706c616e6e65642e>2.5 E F0 -2.5<352e31322e322e2055736572>102 289.8 R -<64617461626173652073656d616e74696373>2.5 E F1 .996 -<5768656e20746865207265>142 306 R .995<77726974696e672072756c6573207375 -626d697420616e206164647265737320746f20746865206c6f63616c206d61696c6572> --.25 F 3.495<2c74>-.4 G .995 -<68652075736572206e616d6520697320706173736564>-3.495 F .78 -<7468726f7567682074686520616c696173208c6c652e>117 318 R .781<4966206e6f -20616c69617320697320666f756e6420286f722069662074686520616c69617320706f69 -6e7473206261636b20746f207468652073616d652061646472657373292c20746865> -5.78 F 1.778<6e616d6520287769746820993a6d61696c64726f709a20617070656e64 -656429206973207468656e20757365642061732061206b>117 330 R 2.077 -.15 -<65792069>-.1 H 4.277<6e74>.15 G 1.777 -<686520757365722064617461626173652e>-4.277 F 1.777 -<4966206e6f206d61746368>6.777 F<6f636375727320286f7220696620746865206d61 -696c64726f7020706f696e7473206174207468652073616d652061646472657373292c20 -666f7277>117 342 Q<617264696e672069732074726965642e>-.1 E .55 -<496620746865208c72737420746f6b>142 358.2 R .551<656e206f66207468652075 -736572206e616d652072657475726e65642062792072756c65736574203020697320616e -2099409a207369676e2c207468652075736572206461746162617365>-.1 F .626 -<6c6f6f6b757020697320736b69707065642e>117 370.2 R .625<54686520696e7465 -6e7420697320746861742074686520757365722064617461626173652077696c6c206163 -74206173206120736574206f6620646566>5.626 F .625 -<61756c747320666f72206120636c7573746572>-.1 F 1.533<28696e206f7572206361 -73652c2074686520436f6d707574657220536369656e6365204469>117 382.2 R 1.533 -<766973696f6e293b206d61696c2073656e7420746f20612073706563698c63206d6163 -68696e652073686f756c642069676e6f7265>-.25 F<746865736520646566>117 394.2 -Q<61756c74732e>-.1 E .351<5768656e206d61696c2069732073656e742c2074686520 -6e616d65206f66207468652073656e64696e672075736572206973206c6f6f6b>142 -410.4 R .351<656420757020696e207468652064617461626173652e>-.1 F .351 -<496620746861742075736572>5.351 F .04 -<686173206120996d61696c6e616d659a207265636f72642c207468652076>117 422.4 -R .041<616c7565206f662074686174207265636f726420697320757365642061732074 -68656972206f7574676f696e67206e616d652e>-.25 F -.15<466f>5.041 G 2.541 -<7265>.15 G .041<78616d706c652c2049>-2.691 F<6d69676874206861>117 434.4 -Q .3 -.15<766520612072>-.2 H<65636f72643a>.15 E 12.29 -<657269633a6d61696c6e616d6520457269632e416c6c6d616e4043532e4265726b>157 -450.6 R<656c65>-.1 E -.65<792e>-.15 G<454455>.65 E<546869732077>117 -466.8 Q<6f756c64206361757365206d79206f7574676f696e67206d61696c20746f2062 -652073656e7420617320457269632e416c6c6d616e2e>-.1 E .52<4966206120996d61 -696c64726f709a20697320666f756e6420666f72207468652075736572>142 483 R -3.019<2c62>-.4 G .519<7574206e6f20636f72726573706f6e64696e6720996d61696c -6e616d659a207265636f72642065>-3.219 F .519<78697374732c20746865>-.15 F -1.127<7265636f726420993a646566>117 495 R 1.127 -<61756c743a6d61696c6e616d659a20697320636f6e73756c7465642e>-.1 F 1.127<49 -662070726573656e742c207468697320697320746865206e616d65206f66206120686f73 -7420746f206f>6.127 F -.15<7665>-.15 G 1.128<727269646520746865>.15 F -.625<6c6f63616c20686f73742e>117 507 R -.15<466f>5.625 G 3.125<7265>.15 G -.625<78616d706c652c20696e206f757220636173652077652077>-3.275 F .625 -<6f756c642073657420697420746f209943532e4265726b>-.1 F<656c65>-.1 E -.65 -<792e>-.15 G 3.125<4544559a2e20546865>.65 F<6566>3.125 E .625 -<666563742069732074686174>-.25 F<616e>117 519 Q .881<796f6e65206b6e6f> --.15 F .882<776e20696e20746865206461746162617365206765747320746865697220 -6f7574676f696e67206d61696c207374616d7065642061732099757365724043532e4265 -726b>-.25 F<656c65>-.1 E -.65<792e>-.15 G<4544559a2c>.65 E -.2<6275>117 -531 S 2.5<7470>.2 G<656f706c65206e6f74206c697374656420696e20746865206461 -7461626173652075736520746865206c6f63616c20686f73746e616d652e>-2.5 E F0 -2.5<352e31322e332e204372>102 557 R -<656174696e6720746865206461746162617365>-.18 E/F3 7/Times-Bold@0 SF -<3233>-4 I F1 .375<54686520757365722064617461626173652069732062>142 -573.2 R .375<75696c742066726f6d2061207465>-.2 F .375 -<7874208c6c65207573696e6720746865>-.15 F F2<6d616b>2.875 E<656d6170>-.1 -E F1 .375<7574696c6974792028696e207468652064697374726962>2.875 F .375 -<7574696f6e20696e>-.2 F 1.039<746865206d616b>117 585.2 R 1.039 -<656d6170207375626469726563746f7279292e>-.1 F 1.039<546865207465>6.039 F -1.038<7874208c6c65206973206120736572696573206f66206c696e657320636f727265 -73706f6e64696e6720746f20757365726462207265636f7264733b>-.15 F 1.588 -<65616368206c696e65206861732061206b>117 597.2 R 1.889 -.15<65792061>-.1 -H 1.589<6e6420612076>.15 F 1.589 -<616c7565207365706172617465642062792077686974652073706163652e>-.25 F -1.589<546865206b>6.589 F 1.889 -.15<65792069>-.1 H 4.089<7361>.15 G -.1 -<6c7761>-4.089 G 1.589<797320696e2074686520666f726d6174>.1 F -<6465736372696265642061626f>117 609.2 Q .3 -.15<7665208a2066>-.15 H -<6f722065>.15 E<78616d706c653a>-.15 E<657269633a6d61696c64726f70>157 -625.4 Q 3.984<54686973208c6c65206973206e6f726d616c6c7920696e7374616c6c65 -6420696e20612073797374656d206469726563746f72793b20666f722065>117 641.6 R -3.984<78616d706c652c206974206d696768742062652063616c6c6564>-.15 F F2 -<2f6574632f6d61696c2f75736572>117 653.6 Q<6462>-.37 E F1 5<2e54>C 2.5 -<6f6d>-5.8 G<616b>-2.5 E 2.5<6574>-.1 G<68652064617461626173652076>-2.5 -E -<657273696f6e206f6620746865206d61702c2072756e207468652070726f6772616d3a> --.15 E .32 LW 76 669.2 72 669.2 DL 80 669.2 76 669.2 DL 84 669.2 80 -669.2 DL 88 669.2 84 669.2 DL 92 669.2 88 669.2 DL 96 669.2 92 669.2 DL -100 669.2 96 669.2 DL 104 669.2 100 669.2 DL 108 669.2 104 669.2 DL 112 -669.2 108 669.2 DL 116 669.2 112 669.2 DL 120 669.2 116 669.2 DL 124 -669.2 120 669.2 DL 128 669.2 124 669.2 DL 132 669.2 128 669.2 DL 136 -669.2 132 669.2 DL 140 669.2 136 669.2 DL 144 669.2 140 669.2 DL 148 -669.2 144 669.2 DL 152 669.2 148 669.2 DL 156 669.2 152 669.2 DL 160 -669.2 156 669.2 DL 164 669.2 160 669.2 DL 168 669.2 164 669.2 DL 172 -669.2 168 669.2 DL 176 669.2 172 669.2 DL 180 669.2 176 669.2 DL 184 -669.2 180 669.2 DL 188 669.2 184 669.2 DL 192 669.2 188 669.2 DL 196 -669.2 192 669.2 DL 200 669.2 196 669.2 DL 204 669.2 200 669.2 DL 208 -669.2 204 669.2 DL 212 669.2 208 669.2 DL 216 669.2 212 669.2 DL/F4 5 -/Times-Roman@0 SF<3233>93.6 679.6 Q/F5 8/Times-Roman@0 SF .473 -<546865736520696e737472756374696f6e7320617265206b6e6f>3.2 J .473 -<776e20746f20626520696e636f6d706c6574652e>-.2 F .472 -<4f74686572206665617475726573206172652061>4.473 F -.2<7661>-.16 G .472 -<696c61626c652077686963682070726f>.2 F .472 -<766964652073696d696c61722066756e6374696f6e616c697479>-.12 F 2.472<2c65> --.52 G .472<2e672e2c207669727475616c>-2.472 F<686f7374696e6720616e64206d -617070696e67206c6f63616c2061646472657373657320696e746f20612067656e657269 -6320666f726d2061732065>72 692.4 Q -<78706c61696e656420696e2063662f524541444d452e>-.12 E 0 Cg EP +/F0 10/Times-Bold@0 SF 193.36(SMM:08-92 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF .602 +(The maximum number of queue runners for an indi)127 96 R .602 +(vidual queue group can be controlled via)-.25 F(the)102 108 Q F0 +(Runners)2.585 E F1 2.585(option. If)2.585 F .084(set to 0, entries in \ +the queue will not be processed, which is useful to `)2.585 F(`quar)-.74 +E(-)-.2 E(antine')102 120 Q 4.515('q)-.74 G 2.015(ueue \214les.)-4.515 F +2.016 +(The number of runners per queue group may also be set with the option) +7.015 F F0(MaxRunnersP)102 132 Q(erQueue)-.2 E F1 3.209(,w)C .709 +(hich applies to queue groups that ha)-3.209 F 1.008 -.15(ve n)-.2 H +3.208(oi).15 G(ndi)-3.208 E .708(vidual limit.)-.25 F .708(That is, the) +5.708 F(def)102 144 Q(ault v)-.1 E(alue for)-.25 E F0(Runners)2.5 E F1 +(is)2.5 E F0(MaxRunnersP)2.5 E(erQueue)-.2 E F1(if set, otherwise 1.)2.5 +E 1.087 +(The \214eld Jobs describes the maximum number of jobs \(messages deli) +127 160.2 R -.15(ve)-.25 G 1.087(red\) per queue run,).15 F +(which is the queue group speci\214c v)102 172.2 Q(alue of)-.25 E F0 +(MaxQueueRunSize)2.5 E F1(.)A .175(Notice: queue groups should be decla\ +red after all queue related options ha)127 188.4 R .475 -.15(ve b)-.2 H +.175(een set because).15 F .314(queue groups tak)102 200.4 R 2.814(et) +-.1 G .314(heir def)-2.814 F .314(aults from those options.)-.1 F .314 +(If an option is set after a queue group declara-)5.314 F .188 +(tion, the v)102 212.4 R .187 +(alues of options in the queue group are set to the def)-.25 F .187 +(aults of)-.1 F/F2 10/Times-Italic@0 SF(sendmail)2.687 E F1 .187 +(unless e)2.687 F .187(xplicitly set)-.15 F(in the declaration.)102 +224.4 Q 1.972(Each en)127 240.6 R -.15(ve)-.4 G 1.972(lope is assigned \ +to a queue group based on the algorithm described in section).15 F -.74 +(``)102 252.6 S(Queue Groups and Queue Directories').74 E('.)-.74 E F0 +2.5(5.11. X)87 276.6 R 2.5<8a4d>2.5 G +(ail Filter \(Milter\) De\214nitions)-2.5 E F1(The)127 292.8 Q F2 +(sendmail)3.937 E F1 1.437 +(Mail Filter API \(Milter\) is designed to allo)3.937 F 3.937(wt)-.25 G +1.437(hird-party programs access to)-3.937 F .177(mail messages as the) +102 304.8 R 2.677(ya)-.15 G .177 +(re being processed in order to \214lter meta-information and content.) +-2.677 F(The)5.178 E 2.678(ya)-.15 G(re)-2.678 E +(declared in the con\214guration \214le as:)102 316.8 Q F0(X)142 333 Q +F2(name)A F1({,)2.5 E F2(\214eld)2.5 E F1(=)A F2(value)A F1(}*)1.666 E +(where)102 349.2 Q F2(name)4.688 E F1 2.188(is the name of the \214lter\ + \(used internally only\) and the \231\214eld=name\232 pairs de\214ne) +4.688 F(attrib)102 361.2 Q .491(utes of the \214lter)-.2 F 5.491(.A)-.55 +G .491(lso see the documentation for the)-5.491 F F0(InputMailFilters) +2.992 E F1 .492(option for more infor)2.992 F(-)-.2 E(mation.)102 373.2 +Q(Fields are:)127 389.4 Q(Sock)142 405.6 Q 42.38(et The)-.1 F(sock)2.5 E +(et speci\214cation)-.1 E 47.83(Flags Special)142 417.6 R +(\215ags for this \214lter)2.5 E -.35(Ti)142 429.6 S 32.07(meouts T).35 +F(imeouts for this \214lter)-.35 E +(Only the \214rst character of the \214eld name is check)102 445.8 Q +(ed \(it')-.1 E 2.5(sc)-.55 G(ase-sensiti)-2.5 E -.15(ve)-.25 G(\).).15 +E(The sock)127 462 Q(et speci\214cation is one of the follo)-.1 E +(wing forms:)-.25 E F0(S=inet:)142 478.2 Q F2(port)2.5 E F0(@)2.5 E F2 +(host)2.5 E F0(S=inet6:)142 498.6 Q F2(port)2.5 E F0(@)2.5 E F2(host)2.5 +E F0(S=local:)142 519 Q F2(path)2.5 E F1 1.792(The \214rst tw)102 535.2 +R 4.291(od)-.1 G 1.791(escribe an IPv4 or IPv6 sock)-4.291 F 1.791 +(et listening on a certain)-.1 F F2(port)4.291 E F1 1.791(at a gi)4.291 +F -.15(ve)-.25 G(n).15 E F2(host)4.291 E F1 1.791(or IP)4.291 F 2.5 +(address. The)102 547.2 R(\214nal form describes a named sock)2.5 E +(et on the \214lesystem at the gi)-.1 E -.15(ve)-.25 G(n).15 E F2(path) +2.5 E F1(.)A(The follo)127 563.4 Q +(wing \215ags may be set in the \214lter description.)-.25 E 13.33(RR) +102 579.6 S(eject connection if \214lter una)-13.33 E -.25(va)-.2 G +(ilable.).25 E 13.89(TT)102 595.8 S(emporary f)-14.59 E +(ail connection if \214lter una)-.1 E -.25(va)-.2 G(ilable.).25 E .655 +(If neither F=R nor F=T is speci\214ed, the message is passed through) +127 612 R F2(sendmail)3.155 E F1 .655(in case of \214lter)3.155 F +(errors as if the f)102 624 Q(ailing \214lters were not present.)-.1 E +(The timeouts can be set using the four \214elds inside of the)127 640.2 +Q F0(T=)2.5 E F1(equate:)2.5 E 13.33(CT)102 656.4 S +(imeout for connecting to a \214lter)-13.68 E 5(.I)-.55 G 2.5(fs)-5 G +(et to 0, the system')-2.5 E(s)-.55 E F2(connect\(\))2.5 E F1 +(timeout will be used.)2.5 E 14.44(ST)102 672.6 S +(imeout for sending information from the MT)-14.79 E 2.5(At)-.93 G 2.5 +(oa\214)-2.5 G(lter)-2.5 E(.)-.55 E 13.33(RT)102 688.8 S +(imeout for reading reply from the \214lter)-13.68 E(.)-.55 E 13.89(EO) +102 705 S -.15(ve)-13.89 G 1.186 +(rall timeout between sending end-of-message to \214lter and w).15 F +1.186(aiting for the \214nal ackno)-.1 F(wl-)-.25 E(edgment.)122 717 Q 0 +Cg EP %%Page: 93 89 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3933>195.86 E -/F1 10/Times-Roman@0 SF<6d616b>157 96 Q<656d6170206274726565202f6574632f -6d61696c2f757365726462203c202f6574632f6d61696c2f757365726462>-.1 E .077< -5468656e20637265617465206120636f6e8c67208c6c6520746861742075736573207468 -69732e>117 112.2 R -.15<466f>5.077 G 2.577<7265>.15 G .077<78616d706c65 -2c207573696e6720746865205638204d3420636f6e8c6775726174696f6e2c20696e636c -75646520746865>-2.727 F<666f6c6c6f>117 124.2 Q -<77696e67206c696e6520696e20796f7572202e6d63208c6c653a>-.25 E<64658c6e65 -2892636f6e665553455244425f53504543b42c202f6574632f6d61696c2f757365726462 -29>157 140.4 Q F0 2.5<362e204f>72 168.6 R<5448455220434f4e464947555241> --.4 E<54494f4e>-.95 E F1 .907<54686572652061726520736f6d6520636f6e8c6775 -726174696f6e206368616e67657320746861742063616e206265206d6164652062792072 -65636f6d70696c696e67>112 184.8 R/F2 10/Times-Italic@0 SF -<73656e646d61696c>3.407 E F1 5.907<2e54>C .906<6869732073656374696f6e> --5.907 F 1.139<6465736372696265732077686174206368616e6765732063616e2062 -65206d61646520616e6420776861742068617320746f206265206d6f64698c656420746f -206d616b>87 196.8 R 3.639<6574>-.1 G 3.639<68656d2e20496e>-3.639 F 1.139 -<6d6f73742063617365732074686973>3.639 F<73686f756c6420626520756e6e656365 -737361727920756e6c65737320796f752061726520706f7274696e67>87 208.8 Q F2 -<73656e646d61696c>2.5 E F1<746f2061206e65>2.5 E 2.5<7765>-.25 G -.4 -<6e76>-2.5 G<69726f6e6d656e742e>.4 E F0 2.5<362e312e2050>87 232.8 R -<6172616d657465727320696e206465>-.1 E<76746f6f6c732f4f532f246f736366> --.15 E F1 .92<546865736520706172616d65746572732061726520696e74656e646564 -20746f2064657363726962652074686520636f6d70696c6174696f6e20656e>127 249 R -.92<7669726f6e6d656e742c206e6f74207369746520706f6c6963>-.4 F 2.22 -.65 -<792c2061>-.15 H<6e64>.65 E .739<73686f756c64206e6f726d616c6c7920626520 -64658c6e656420696e20746865206f7065726174696e672073797374656d20636f6e8c67 -75726174696f6e208c6c652e>102 261 R F0 .74 -<546869732073656374696f6e206e65656473206120636f6d2d>5.739 F -<706c6574652072>102 273 Q<6577726974652e>-.18 E F1 39.5<4e44424d204966> -102 289.2 R .665<7365742c20746865206e65>3.165 F 3.165<7776>-.25 G .664 -<657273696f6e206f66207468652044424d206c696272617279207468617420616c6c6f> --3.315 F .664 -<7773206d756c7469706c65206461746162617365732077696c6c206265>-.25 F 2.542 -<757365642e204966>174 301.2 R .042<6e656974686572204e44424d206e6f72204e -4557444220617265207365742c2061206d756368206c657373206566>2.542 F .043 -<8c6369656e74206d6574686f64206f6620616c696173>-.25 F -<6c6f6f6b757020697320757365642e>174 313.2 Q 32.84<4e45574442204966>102 -329.4 R .142<7365742c2075736520746865206e65>2.642 F 2.642<7764>-.25 G -.142<61746162617365207061636b6167652066726f6d204265726b>-2.642 F<656c65> --.1 E 2.641<7928>-.15 G .141<66726f6d20342e34425344292e>-2.641 F .141 -<54686973207061636b616765>5.141 F .266 -<6973207375627374616e7469616c6c792066>174 341.4 R .267 -<6173746572207468616e2044424d206f72204e44424d2e>-.1 F .267 -<4966204e4557444220616e64204e44424d2061726520626f7468207365742c>5.267 F -F2<73656e646d61696c>174 353.4 Q F1 -<77696c6c20726561642044424d208c6c65732c2062>2.5 E -<75742077696c6c2063726561746520616e6420757365204e45574442208c6c65732e> --.2 E 53.39<4e495320496e636c756465>102 369.6 R .12 -<737570706f727420666f72204e49532e>2.62 F .119 -<49662073657420746f6765746865722077697468>5.119 F F2<626f7468>2.619 E F1 -.119<4e4557444220616e64204e44424d2c>2.619 F F2<73656e646d61696c>2.619 E -F1 .947<77696c6c2063726561746520626f74682044424d20616e64204e45574442208c -6c657320696620616e64206f6e6c7920696620616e20616c696173208c6c6520696e636c -7564657320746865>174 381.6 R 3.409 -<737562737472696e6720992f79702f9a20696e20746865206e616d652e>174 393.6 R -3.409<5468697320697320696e74656e64656420666f7220636f6d7061746962696c6974 -7920776974682053756e>8.409 F<4d6963726f73797374656d7327>174 405.6 Q F2 -<6d6b616c696173>2.5 E F1 -<70726f6772616d2075736564206f6e205950206d6173746572732e>2.5 E 28.94 -<4e4953504c555320436f6d70696c65>102 421.8 R -<696e20737570706f727420666f72204e49532b2e>2.5 E 26.73 -<4e4554494e464f20436f6d70696c65>102 438 R<696e20737570706f727420666f7220 -4e6574496e666f20284e6558542073746174696f6e73292e>2.5 E<4c44>102 454.2 Q -22.12<41504d415020436f6d70696c65>-.4 F 1.225 -<696e20737570706f727420666f72204c44>3.725 F 1.225 -<4150205835303020717565726965732e>-.4 F 1.226 -<5265717569726573206c69626c64617020616e64206c69626c6265722066726f6d> -6.226 F 2.799<74686520556d696368204c44>174 466.2 R 2.798 -<415020332e32206f7220332e332072656c65617365206f722065717569>-.4 F -.25 -<7661>-.25 G 2.798 -<6c656e74206c696272617269657320666f72206f74686572204c44>.25 F<4150>-.4 E -<6c69627261726965732073756368206173204f70656e4c44>174 478.2 Q<4150>-.4 E -<2e>-1.11 E 32.84<484553494f4420436f6d70696c65>102 494.4 R -<696e20737570706f727420666f7220486573696f642e>2.5 E 22.83 -<4d41505f4e534420436f6d70696c65>102 510.6 R -<696e20737570706f727420666f722049524958204e5344206c6f6f6b7570732e>2.5 E -9.5<4d41505f524547455820436f6d70696c65>102 526.8 R -<696e20737570706f727420666f72207265>2.5 E<67756c61722065>-.15 E -<787072657373696f6e206d61746368696e672e>-.15 E 27.83 -<444e534d415020436f6d70696c65>102 543 R<696e20737570706f727420666f722044 -4e53206d6170206c6f6f6b75707320696e20746865>2.5 E F2 -<73656e646d61696c2e6366>2.5 E F1<8c6c652e>2.5 E 30.05 -<50485f4d415020436f6d70696c65>102 559.2 R -<696e20737570706f727420666f72207068206c6f6f6b7570732e>2.5 E 45.05 -<5341534c20436f6d70696c65>102 575.4 R 1.474<696e20737570706f727420666f72 -205341534c2c206120726571756972656420636f6d706f6e656e7420666f7220534d5450 -2041757468656e7469636174696f6e>3.974 F<737570706f72742e>174 587.4 Q -<5354>102 603.6 Q<4152>-.93 E 21.58<54544c5320436f6d70696c65>-.6 F -<696e20737570706f727420666f72205354>2.5 E<4152>-.93 E<54544c532e>-.6 E -48.95<45474420436f6d70696c65>102 619.8 R .068 -<696e20737570706f727420666f72207468652022456e74726f70>2.568 F 2.567 -<7947>-.1 G .067<6174686572696e67204461656d6f6e2220746f2070726f>-2.567 F -.067<76696465206265747465722072616e646f6d>-.15 F -<6461746120666f7220544c532e>174 631.8 Q -1.63 -<544350575241505045525320436f6d70696c65>102 648 R -<696e20737570706f727420666f72205443502057726170706572732e>2.5 E<5f50>102 -664.2 Q -1.11<4154>-.92 G<485f53454e444d41494c4346>1.11 E<54686520706174 -686e616d65206f66207468652073656e646d61696c2e6366208c6c652e>174 676.2 Q -<5f50>102 692.4 Q -1.11<4154>-.92 G<485f53454e444d41494c504944>1.11 E<54 -686520706174686e616d65206f66207468652073656e646d61696c2e706964208c6c652e> -174 704.4 Q 0 Cg EP +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-93)195.86 E/F1 10/Times-Roman@0 SF 1.402 +(Note the separator between each timeout \214eld is a)127 96 R F0(';') +3.903 E F1 6.403(.T)C 1.403(he def)-6.403 F 1.403(ault v)-.1 F 1.403 +(alues \(if not set\) are:)-.25 F F0(T=C:5m;S:10s;R:10s;E:5m)102 108 Q +F1(where)2.5 E F0(s)2.5 E F1(is seconds and)2.5 E F0(m)2.5 E F1 +(is minutes.)2.5 E(Examples:)127 124.2 Q(X\214lter1, S=local:/v)142 +140.4 Q(ar/run/f1.sock, F=R)-.25 E +(X\214lter2, S=inet6:999@localhost, F=T)142 152.4 Q 2.5(,T)-.74 G +(=S:1s;R:1s;E:5m)-2.5 E(X\214lter3, S=inet:3333@localhost, T=C:2m)142 +164.4 Q F0 2.5(5.12. The)87 192.6 R(User Database)2.5 E F1 .479 +(The user database is deprecated in f)127 208.8 R -.2(avo)-.1 G 2.978 +(ro).2 G 2.978(f`)-2.978 G(`virtusertable')-3.718 E 2.978('a)-.74 G .478 +(nd `)-2.978 F(`genericstable')-.74 E 2.978('a)-.74 G 2.978(se)-2.978 G +(xplained)-3.128 E 1.029(in the \214le)102 220.8 R F0(cf/README)3.529 E +F1 6.029(.I)C 3.529(fy)-6.029 G 1.029(ou ha)-3.529 F 1.329 -.15(ve a ve) +-.2 H 1.029(rsion of).15 F/F2 10/Times-Italic@0 SF(sendmail)3.529 E F1 +1.03(with the user database package com-)3.53 F(piled in, the handling \ +of sender and recipient addresses is modi\214ed.)102 232.8 Q +(The location of this database is controlled with the)127 249 Q F0 +(UserDatabaseSpec)2.5 E F1(option.)2.5 E F0 2.5(5.12.1. Structur)102 273 +R 2.5(eo)-.18 G 2.5(ft)-2.5 G(he user database)-2.5 E F1 +(The database is a sorted \(BT)142 289.2 Q(ree-based\) structure.)-.35 E +(User records are stored with the k)5 E -.15(ey)-.1 G(:).15 E F2(user) +157 305.4 Q(-name)-.2 E F0(:)A F2(\214eld-name)A F1 .128(The sorted dat\ +abase format ensures that user records are clustered together)117 321.6 +R 5.128(.M)-.55 G .128(eta-information is)-5.128 F(al)117 333.6 Q -.1 +(wa)-.1 G(ys stored with a leading colon.).1 E +(Field names de\214ne both the syntax and semantics of the v)142 349.8 Q +2.5(alue. De\214ned)-.25 F(\214elds include:)2.5 E 33.39(maildrop The) +117 366 R(deli)4.872 E -.15(ve)-.25 G 2.372(ry address for this user).15 +F 7.372(.T)-.55 G 2.373(here may be multiple v)-7.372 F 2.373 +(alues of this)-.25 F 2.675(record. In)189 378 R(particular)2.675 E +2.675(,m)-.4 G .175(ailing lists will ha)-2.675 F .475 -.15(ve o)-.2 H +(ne).15 E F2(maildr)2.675 E(op)-.45 E F1 .175(record for each user)2.675 +F(on the list.)189 390 Q 30.06(mailname The)117 406.2 R 1.026 +(outgoing mailname for this user)3.526 F 6.026(.F)-.55 G 1.027 +(or each outgoing name, there should)-6.176 F .08(be an appropriate)189 +418.2 R F2(maildr)2.58 E(op)-.45 E F1 .08(record for that name to allo) +2.58 F 2.58(wr)-.25 G .08(eturn mail.)-2.58 F .08(See also)5.08 F F2 +(:default:mailname)189 430.2 Q F1(.)A 25.62(mailsender Changes)117 446.4 +R(an)3.447 E 3.447(ym)-.15 G .947(ail sent to this address to ha)-3.447 +F 1.248 -.15(ve t)-.2 H .948(he indicated en).15 F -.15(ve)-.4 G .948 +(lope sender).15 F(.)-.55 E .498(This is intended for mailing lists, an\ +d will normally be the name of an appro-)189 458.4 R .754 +(priate -request address.)189 470.4 R .754(It is v)5.754 F .755 +(ery similar to the o)-.15 F(wner)-.25 E(-)-.2 E F2(list)A F1 .755 +(syntax in the alias)3.255 F(\214le.)189 482.4 Q 33.95(fullname The)117 +498.6 R(full name of the user)2.5 E(.)-.55 E(of)117 514.8 Q 13.66 +(\214ce-address The)-.25 F(of)2.5 E(\214ce address for this user)-.25 E +(.)-.55 E(of)117 531 Q 19.21(\214ce-phone The)-.25 F(of)2.5 E +(\214ce phone number for this user)-.25 E(.)-.55 E(of)117 547.2 Q +(\214ce-f)-.25 E 30.98(ax The)-.1 F(of)2.5 E(\214ce F)-.25 E +(AX number for this user)-.74 E(.)-.55 E 13.96(home-address The)117 +563.4 R(home address for this user)2.5 E(.)-.55 E 19.51(home-phone The) +117 579.6 R(home phone number for this user)2.5 E(.)-.55 E(home-f)117 +595.8 Q 31.28(ax The)-.1 F(home F)2.5 E(AX number for this user)-.74 E +(.)-.55 E 41.73(project A)117 612 R .856 +(\(short\) description of the project this person is af)3.356 F .855 +(\214liated with.)-.25 F .855(In the Uni-)5.855 F -.15(ve)189 624 S +(rsity this is often just the name of their graduate advisor).15 E(.) +-.55 E 52.28(plan A)117 640.2 R +(pointer to a \214le from which plan information can be g)2.5 E +(athered.)-.05 E .924(As of this writing, only a fe)142 656.4 R 3.424 +(wo)-.25 G 3.424(ft)-3.424 G .925 +(hese \214elds are actually being used by)-3.424 F F2(sendmail)3.425 E +F1(:)A F2(mail-)3.425 E(dr)117 668.4 Q(op)-.45 E F1(and)2.5 E F2 +(mailname)2.5 E F1 5(.A)C F2(\214ng)-2.5 E(er)-.1 E F1 +(program that uses the other \214elds is planned.)2.5 E F0 2.5 +(5.12.2. User)102 692.4 R(database semantics)2.5 E F1 .996(When the re) +142 708.6 R .995(writing rules submit an address to the local mailer) +-.25 F 3.495(,t)-.4 G .995(he user name is passed)-3.495 F .78 +(through the alias \214le.)117 720.6 R .781(If no alias is found \(or i\ +f the alias points back to the same address\), the)5.78 F 0 Cg EP %%Page: 94 90 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d39342053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF<534d5f434f4e465f53484d>102 96 Q<436f6d70696c6520 -696e20737570706f727420666f7220736861726564206d656d6f7279>174 108 Q 2.5 -<2c73>-.65 G<65652073656374696f6e2061626f757420222f76>-2.5 E -<61722f73706f6f6c2f6d7175657565222e>-.25 E<4d494c>102 124.2 Q 33.2 -<54455220436f6d70696c65>-.92 F -<696e20737570706f727420666f7220636f6e74616374696e672065>2.5 E -<787465726e616c206d61696c208c6c746572732062>-.15 E -<75696c74207769746820746865204d696c746572204150492e>-.2 E 1.439 -<54686572652061726520616c736f207365>127 140.4 R -.15<7665>-.25 G 1.439< -72616c20636f6d70696c6174696f6e208d61677320746f20696e64696361746520746865 -20656e>.15 F 1.44 -<7669726f6e6d656e74207375636820617320995f414958339a20616e64>-.4 F 2.5 -<995f53434f5f756e69785f9a2e20536565>102 152.4 R<7468652073656e646d61696c -2f524541444d45208c6c6520666f7220746865206c61746573742073636f6f70206f6e20 -7468657365208d6167732e>2.5 E F0 2.5<362e312e312e2046>102 176.4 R -<6f72204675747572>-.25 E 2.5<6552>-.18 G<656c6561736573>-2.5 E/F2 10 -/Times-Italic@0 SF<73656e646d61696c>142 192.6 Q F1 .641 -<6f6674656e20636f6e7461696e7320636f6d70696c652074696d65206f7074696f6e73> -3.141 F F2 -1.05<466f>3.141 G 3.141<7246>1.05 G<75747572>-3.141 E 3.141 -<6552>-.37 G<656c6561736573>-3.141 E F1 .641 -<287072658c78205f4646525f29207768696368>3.141 F .432 -<6d6967687420626520656e61626c656420696e20612073756273657175656e742076> -117 204.6 R .432 -<657273696f6e206f72206d696768742073696d706c792062652072656d6f>-.15 F --.15<7665>-.15 G 2.933<6461>.15 G 2.933<7374>-2.933 G<6865>-2.933 E -2.933<7974>-.15 G .433<75726e6564206f7574206e6f7420746f>-2.933 F 1.089 -<6265207265616c6c792075736566756c2e>117 216.6 R 1.089<546865736520666561 -74757265732061726520757375616c6c79206e6f7420646f63756d656e7465642062> -6.089 F 1.089<757420696620746865>-.2 F 3.588<7961>-.15 G 1.088 -<72652c207468656e20746865207265717569726564>-3.588 F 1.793<284646522920 -636f6d70696c652074696d65206f7074696f6e7320617265206c69737465642068657265 -20666f722072756c657365747320616e64206d6163726f732c20616e6420696e>117 -228.6 R F2<63662f524541444d45>4.294 E F1<666f72>4.294 E .951 -<6d632f6366206f7074696f6e732e>117 240.6 R .951<46465220636f6d70696c6520 -74696d6573206f7074696f6e73206d75737420626520656e61626c6564207768656e2074 -68652073656e646d61696c2062696e6172792069732062>5.951 F<75696c74>-.2 E -<66726f6d20736f757263652e>117 252.6 Q<456e61626c6564204646527320696e2061 -2062696e6172792063616e206265206c69737465642077697468>5 E -<73656e646d61696c202d64302e3133203c202f6465>157 268.8 Q -<762f6e756c6c207c206772657020464652>-.25 E F0 2.5<362e322e2050>87 297 R -<6172616d657465727320696e2073656e646d61696c2f636f6e66>-.1 E<2e68>-.15 E -F1 -.15<5061>127 313.2 S .895<72616d657465727320616e6420636f6d70696c6174 -696f6e206f7074696f6e73206172652064658c6e656420696e20636f6e662e682e>.15 F -.896<4d6f7374206f66207468657365206e656564206e6f74206e6f726d616c6c79> -5.895 F .193<626520747765616b>102 325.2 R .192<65643b20636f6d6d6f6e2070 -6172616d65746572732061726520616c6c20696e2073656e646d61696c2e63662e>-.1 F -<486f>5.192 E<7765>-.25 E -.15<7665>-.25 G .992 -.4<722c2074>.15 H .192 -<68652073697a6573206f66206365727461696e207072696d697469>.4 F .492 -.15 -<7665207665>-.25 H<632d>.15 E<746f72732c206574632e2c2061726520696e636c75 -64656420696e2074686973208c6c652e>102 337.2 Q -<546865206e756d6265727320666f6c6c6f>5 E -<77696e672074686520706172616d65746572732061726520746865697220646566>-.25 -E<61756c742076>-.1 E<616c75652e>-.25 E 1.247<5468697320646f63756d656e74 -206973206e6f7420746865206265737420736f75726365206f6620696e666f726d617469 -6f6e20666f7220636f6d70696c6174696f6e208d61677320696e20636f6e662e68208a20 -736565>127 353.4 R<73656e646d61696c2f524541444d45206f722073656e646d6169 -6c2f636f6e662e6820697473656c662e>102 365.4 Q -<4d41584c494e45205b323034385d>102 381.6 Q 2.069 -<546865206d6178696d756d206c696e65206c656e677468206f6620616e>11.14 F -4.568<7969>-.15 G 2.068<6e707574206c696e652e>-4.568 F 2.068 -<4966206d657373616765206c696e65732065>7.068 F 2.068 -<78636565642074686973>-.15 F .575<6c656e67746820746865>188.4 393.6 R -3.075<7977>-.15 G .575<696c6c207374696c6c2062652070726f6365737365642063 -6f72726563746c793b20686f>-3.075 F<7765>-.25 E -.15<7665>-.25 G 1.375 -.4 -<722c2068>.15 H .575<6561646572206c696e65732c20636f6e8c677572612d>.4 F< -74696f6e208c6c65206c696e65732c20616c696173206c696e65732c206574632e2c206d -757374208c742077697468696e2074686973206c696d69742e>188.4 405.6 Q -<4d41584e>102 421.8 Q<414d45205b3235365d>-.35 E -<546865206d6178696d756d206c656e677468206f6620616e>9.82 E 2.5<796e>-.15 G -<616d652c2073756368206173206120686f7374206f7220612075736572206e616d652e> --2.5 E<4d41585056205b3235365d>102 438 Q .25<546865206d6178696d756d206e75 -6d626572206f6620706172616d657465727320746f20616e>26.13 F 2.75<796d>-.15 -G<61696c6572>-2.75 E 5.25<2e54>-.55 G .25 -<686973206c696d69747320746865206e756d626572206f66>-5.25 F .375<72656369 -7069656e74732074686174206d61792062652070617373656420696e206f6e6520747261 -6e73616374696f6e2e>188.4 450 R .376 -<49742063616e2062652073657420746f20616e>5.376 F 2.876<7961>-.15 G -<7262697472617279>-2.876 E .876<6e756d6265722061626f>188.4 462 R 1.176 --.15<76652061>-.15 H .876<626f75742031302c2073696e6365>.15 F F2 -<73656e646d61696c>3.376 E F1 .876 -<77696c6c20627265616b20757020612064656c69>3.376 F -.15<7665>-.25 G .875 -<727920696e746f20736d616c6c6572>.15 F .886 -<62617463686573206173206e65656465642e>188.4 474 R 3.386<4168>5.886 G -.887<6967686572206e756d626572206d617920726564756365206c6f6164206f6e2079 -6f75722073797374656d2c20686f>-3.386 F<772d>-.25 E -2.15 -.25<65762065> -188.4 486 T -.55<722e>.25 G<4d415851>102 502.2 Q<554555454752>-.1 E -<4f555053205b35305d>-.4 E -<546865206d6178696d756d206e756d626572206f662071756575652067726f7570732e> -188.4 514.2 Q<4d415841>102 530.4 Q -.18<544f>-1.11 G 2.5<4d5b>.18 G 3.26 -<313030305d20546865>-2.5 F .064 -<6d6178696d756d206e756d626572206f662061746f6d732028746f6b>2.564 F .063 -<656e732920696e20612073696e676c6520616464726573732e>-.1 F -.15<466f> -5.063 G 2.563<7265>.15 G .063<78616d706c652c20746865>-2.713 F -<616464726573732099657269634043532e4265726b>188.4 542.4 Q<656c65>-.1 E --.65<792e>-.15 G<4544559a206973207365>.65 E -.15<7665>-.25 G 2.5<6e61> -.15 G<746f6d732e>-2.5 E<4d41584d41494c455253205b32355d>102 558.6 Q .122< -546865206d6178696d756d206e756d626572206f66206d61696c6572732074686174206d -61792062652064658c6e656420696e2074686520636f6e8c6775726174696f6e208c6c65 -2e>.02 F<546869732076>188.4 570.6 Q<616c75652069732064658c6e656420696e20 -696e636c7564652f73656e646d61696c2f73656e646d61696c2e682e>-.25 E -<4d415852>102 586.8 Q<5753455453205b3230305d>-.55 E .432 -<546865206d6178696d756d206e756d626572206f66207265>.01 F .432 -<77726974696e6720736574732074686174206d61792062652064658c6e65642e>-.25 F -.431<546865208c7273742068616c66206f66>5.431 F .034 -<74686573652061726520726573657276>188.4 598.8 R .034<656420666f72206e75 -6d657269632073706563698c636174696f6e2028652e672e2c2060>-.15 F -<6053393227>-.74 E .035 -<27292c207768696c65207468652075707065722068616c66>-.74 F .492 -<61726520726573657276>188.4 610.8 R .492 -<656420666f72206175746f2d6e756d626572696e672028652e672e2c2060>-.15 F -<6053666f6f27>-.74 E 2.992<27292e20546875732c>-.74 F .492 -<7769746820612076>2.992 F .491<616c7565206f662032303020616e>-.25 F -<617474656d707420746f207573652060>188.4 622.8 Q<6053393927>-.74 E 2.5 -<2777>-.74 G<696c6c20737563636565642c2062>-2.5 E<75742060>-.2 E -<605331303027>-.74 E 2.5<2777>-.74 G<696c6c2066>-2.5 E<61696c2e>-.1 E -<4d41585052494f524954494553205b32355d>102 639 Q 2.481 -<546865206d6178696d756d206e756d626572206f662076>188.4 651 R 2.482<616c75 -657320666f72207468652099507265636564656e63653a9a208c656c642074686174206d -6179206265>-.25 F<64658c6e656420287573696e6720746865>188.4 663 Q F0<50> -2.5 E F1<6c696e6520696e2073656e646d61696c2e6366292e>2.5 E -<4d415855534552454e564952>102 679.2 Q<4f4e205b3130305d>-.4 E .399<546865 -206d6178696d756d206e756d626572206f66206974656d7320696e207468652075736572 -20656e>188.4 691.2 R .399 -<7669726f6e6d656e7420746861742077696c6c2062652070617373656420746f>-.4 F -<7375626f7264696e617465206d61696c6572732e>188.4 703.2 Q 0 Cg EP +/F0 10/Times-Bold@0 SF 193.36(SMM:08-94 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 1.778 +(name \(with \231:maildrop\232 appended\) is then used as a k)117 96 R +2.077 -.15(ey i)-.1 H 4.277(nt).15 G 1.777(he user database.)-4.277 F +1.777(If no match)6.777 F +(occurs \(or if the maildrop points at the same address\), forw)117 108 +Q(arding is tried.)-.1 E .55(If the \214rst tok)142 124.2 R .551(en of \ +the user name returned by ruleset 0 is an \231@\232 sign, the user data\ +base)-.1 F .626(lookup is skipped.)117 136.2 R .625 +(The intent is that the user database will act as a set of def)5.626 F +.625(aults for a cluster)-.1 F 1.533 +(\(in our case, the Computer Science Di)117 148.2 R 1.533 +(vision\); mail sent to a speci\214c machine should ignore)-.25 F +(these def)117 160.2 Q(aults.)-.1 E .351 +(When mail is sent, the name of the sending user is look)142 176.4 R +.351(ed up in the database.)-.1 F .351(If that user)5.351 F .04 +(has a \231mailname\232 record, the v)117 188.4 R .041 +(alue of that record is used as their outgoing name.)-.25 F -.15(Fo) +5.041 G 2.541(re).15 G .041(xample, I)-2.691 F(might ha)117 200.4 Q .3 +-.15(ve a r)-.2 H(ecord:).15 E 12.29(eric:mailname Eric.Allman@CS.Berk) +157 216.6 R(ele)-.1 E -.65(y.)-.15 G(EDU).65 E(This w)117 232.8 Q +(ould cause my outgoing mail to be sent as Eric.Allman.)-.1 E .52 +(If a \231maildrop\232 is found for the user)142 249 R 3.019(,b)-.4 G +.519(ut no corresponding \231mailname\232 record e)-3.219 F .519 +(xists, the)-.15 F 1.127(record \231:def)117 261 R 1.127 +(ault:mailname\232 is consulted.)-.1 F 1.127 +(If present, this is the name of a host to o)6.127 F -.15(ve)-.15 G +1.128(rride the).15 F .625(local host.)117 273 R -.15(Fo)5.625 G 3.125 +(re).15 G .625(xample, in our case we w)-3.275 F .625 +(ould set it to \231CS.Berk)-.1 F(ele)-.1 E -.65(y.)-.15 G 3.125 +(EDU\232. The).65 F(ef)3.125 E .625(fect is that)-.25 F(an)117 285 Q +.881(yone kno)-.15 F .882(wn in the database gets their outgoing mail s\ +tamped as \231user@CS.Berk)-.25 F(ele)-.1 E -.65(y.)-.15 G(EDU\232,).65 +E -.2(bu)117 297 S 2.5(tp).2 G +(eople not listed in the database use the local hostname.)-2.5 E F0 2.5 +(5.12.3. Cr)102 323 R(eating the database)-.18 E/F2 7/Times-Bold@0 SF +(23)-4 I F1 .375(The user database is b)142 339.2 R .375(uilt from a te) +-.2 F .375(xt \214le using the)-.15 F/F3 10/Times-Italic@0 SF(mak)2.875 +E(emap)-.1 E F1 .375(utility \(in the distrib)2.875 F .375(ution in)-.2 +F 1.039(the mak)117 351.2 R 1.039(emap subdirectory\).)-.1 F 1.039 +(The te)6.039 F 1.038 +(xt \214le is a series of lines corresponding to userdb records;)-.15 F +1.588(each line has a k)117 363.2 R 1.889 -.15(ey a)-.1 H 1.589(nd a v) +.15 F 1.589(alue separated by white space.)-.25 F 1.589(The k)6.589 F +1.889 -.15(ey i)-.1 H 4.089(sa).15 G -.1(lwa)-4.089 G 1.589 +(ys in the format).1 F(described abo)117 375.2 Q .3 -.15(ve \212 f)-.15 +H(or e).15 E(xample:)-.15 E(eric:maildrop)157 391.4 Q 3.984 +(This \214le is normally installed in a system directory; for e)117 +407.6 R 3.984(xample, it might be called)-.15 F F3(/etc/mail/user)117 +419.6 Q(db)-.37 E F1 5(.T)C 2.5(om)-5.8 G(ak)-2.5 E 2.5(et)-.1 G +(he database v)-2.5 E(ersion of the map, run the program:)-.15 E(mak)157 +435.8 Q(emap btree /etc/mail/userdb < /etc/mail/userdb)-.1 E .077 +(Then create a con\214g \214le that uses this.)117 452 R -.15(Fo)5.077 G +2.577(re).15 G .077 +(xample, using the V8 M4 con\214guration, include the)-2.727 F(follo)117 +464 Q(wing line in your .mc \214le:)-.25 E +(de\214ne\(\222confUSERDB_SPEC\264, /etc/mail/userdb\))157 480.2 Q F0 +2.5(6. O)72 508.4 R(THER CONFIGURA)-.4 E(TION)-.95 E F1 .907 +(There are some con\214guration changes that can be made by recompiling) +112 524.6 R F3(sendmail)3.407 E F1 5.907(.T)C .906(his section)-5.907 F +1.139(describes what changes can be made and what has to be modi\214ed \ +to mak)87 536.6 R 3.639(et)-.1 G 3.639(hem. In)-3.639 F 1.139 +(most cases this)3.639 F(should be unnecessary unless you are porting)87 +548.6 Q F3(sendmail)2.5 E F1(to a ne)2.5 E 2.5(we)-.25 G -.4(nv)-2.5 G +(ironment.).4 E F0 2.5(6.1. P)87 572.6 R(arameters in de)-.1 E +(vtools/OS/$oscf)-.15 E F1 .92 +(These parameters are intended to describe the compilation en)127 588.8 +R .92(vironment, not site polic)-.4 F 2.22 -.65(y, a)-.15 H(nd).65 E +.739(should normally be de\214ned in the operating system con\214gurati\ +on \214le.)102 600.8 R F0 .74(This section needs a com-)5.739 F(plete r) +102 612.8 Q(ewrite.)-.18 E F1 39.5(NDBM If)102 629 R .665(set, the ne) +3.165 F 3.165(wv)-.25 G .664(ersion of the DBM library that allo)-3.315 +F .664(ws multiple databases will be)-.25 F 2.822(used. If)174 641 R +.322(neither CDB, NDBM, nor NEWDB are set, a much less ef)2.822 F .323 +(\214cient method)-.25 F(of alias lookup is used.)174 653 Q .32 LW 76 +669.2 72 669.2 DL 80 669.2 76 669.2 DL 84 669.2 80 669.2 DL 88 669.2 84 +669.2 DL 92 669.2 88 669.2 DL 96 669.2 92 669.2 DL 100 669.2 96 669.2 DL +104 669.2 100 669.2 DL 108 669.2 104 669.2 DL 112 669.2 108 669.2 DL 116 +669.2 112 669.2 DL 120 669.2 116 669.2 DL 124 669.2 120 669.2 DL 128 +669.2 124 669.2 DL 132 669.2 128 669.2 DL 136 669.2 132 669.2 DL 140 +669.2 136 669.2 DL 144 669.2 140 669.2 DL 148 669.2 144 669.2 DL 152 +669.2 148 669.2 DL 156 669.2 152 669.2 DL 160 669.2 156 669.2 DL 164 +669.2 160 669.2 DL 168 669.2 164 669.2 DL 172 669.2 168 669.2 DL 176 +669.2 172 669.2 DL 180 669.2 176 669.2 DL 184 669.2 180 669.2 DL 188 +669.2 184 669.2 DL 192 669.2 188 669.2 DL 196 669.2 192 669.2 DL 200 +669.2 196 669.2 DL 204 669.2 200 669.2 DL 208 669.2 204 669.2 DL 212 +669.2 208 669.2 DL 216 669.2 212 669.2 DL/F4 5/Times-Roman@0 SF(23)93.6 +679.6 Q/F5 8/Times-Roman@0 SF .473(These instructions are kno)3.2 J .473 +(wn to be incomplete.)-.2 F .472(Other features are a)4.473 F -.2(va) +-.16 G .472(ilable which pro).2 F .472(vide similar functionality)-.12 F +2.472(,e)-.52 G .472(.g., virtual)-2.472 F +(hosting and mapping local addresses into a generic form as e)72 692.4 Q +(xplained in cf/README.)-.12 E 0 Cg EP %%Page: 95 91 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3935>195.86 E -/F1 10/Times-Roman@0 SF<4d41584d58484f535453205b3130305d>102 96 Q<546865 -206d6178696d756d206e756d626572206f66204d58207265636f7264732077652077696c -6c2061636365707420666f7220616e>188.4 108 Q 2.5<7973>-.15 G -<696e676c6520686f73742e>-2.5 E<4d41584d41505354>102 124.2 Q -.4<4143> --.93 G 2.5<4b5b>.4 G<31325d>-2.5 E 1.65<546865206d6178696d756d206e756d62 -6572206f66206d6170732074686174206d61792062652022737461636b>188.4 136.2 R -1.65<65642220696e2061>-.1 F F0<73657175656e6365>4.15 E F1<636c617373> -4.15 E<6d61702e>188.4 148.2 Q<4d41584d494d4541524753205b32305d>102 164.4 -Q .718<546865206d6178696d756d206e756d626572206f66206172>188.4 176.4 R -.718<67756d656e747320696e2061204d494d4520436f6e74656e742d54>-.18 F .718 -<7970653a206865616465723b20616464692d>-.8 F<74696f6e616c206172>188.4 -188.4 Q<67756d656e74732077696c6c2062652069676e6f7265642e>-.18 E -<4d41584d494d454e455354494e47205b32305d>102 204.6 Q .4<546865206d617869 -6d756d20646570746820746f207768696368204d494d45206d65737361676573206d6179 -206265206e65737465642028746861742069732c206e6573746564>188.4 216.6 R -1.344<4d657373616765206f72204d756c74697061727420646f63756d656e74733b2074 -68697320646f6573206e6f74206c696d697420746865206e756d626572206f6620636f6d -706f2d>188.4 228.6 R<6e656e747320696e20612073696e676c65204d756c74697061 -727420646f63756d656e74292e>188.4 240.6 Q<4d415844>102 256.8 Q -<41454d4f4e53205b31305d>-.4 E 1.353 -<546865206d6178696d756d206e756d626572206f6620736f636b>188.4 268.8 R -1.353<6574732073656e646d61696c2077696c6c206f70656e20666f7220616363657074 -696e6720636f6e6e65632d>-.1 F<74696f6e73206f6e20646966>188.4 280.8 Q -<666572656e7420706f7274732e>-.25 E<4d41584d41>102 297 Q<434e>-.4 E -<414d454c454e205b32355d>-.35 E -<546865206d6178696d756d206c656e677468206f662061206d6163726f206e616d652e> -188.4 309 Q 2.851<416e>102 325.2 S .351<756d626572206f66206f746865722063 -6f6d70696c6174696f6e206f7074696f6e732065>-2.851 F 2.851 -<786973742e205468657365>-.15 F .35<737065636966792077686574686572206f72 -206e6f742073706563698c6320636f64652073686f756c64206265>2.851 F -<636f6d70696c656420696e2e>102 337.2 Q<4f6e6573206d61726b>5 E -<6564207769746820872061726520302f312076>-.1 E<616c7565642e>-.25 E 36.69 -<4e4554494e455487204966>102 353.4 R .829<7365742c20737570706f727420666f -7220496e7465726e65742070726f746f636f6c206e657477>3.329 F .829 -<6f726b696e6720697320636f6d70696c656420696e2e>-.1 F<507265>5.829 E .83 -<76696f75732076>-.25 F<6572>-.15 E<2d>-.2 E .178<73696f6e73206f66>188.4 -365.4 R/F2 10/Times-Italic@0 SF<73656e646d61696c>2.678 E F1 .178 -<726566657272656420746f2074686973206173>2.678 F/F3 9/Times-Roman@0 SF --.36<4441>2.678 G<454d4f4e>.36 E F1 2.677<3b74>C .177 -<686973206f6c64207573616765206973206e6f>-2.677 F 2.677<7769>-.25 G -<6e636f72726563742e>-2.677 E<446566>188.4 377.4 Q 1.87 -<61756c7473206f6e3b207475726e206974206f66>-.1 F 4.37<6669>-.25 G 4.37 -<6e74>-4.37 G 1.87<6865204d616b>-4.37 F 1.87 -<658c6c6520696620796f75722073797374656d20646f65736e27>-.1 F 4.37<7473> --.18 G 1.87<7570706f727420746865>-4.37 F -<496e7465726e65742070726f746f636f6c732e>188.4 389.4 Q 31.69 -<4e4554494e45543687204966>102 405.6 R 2.26 -<7365742c20737570706f727420666f722049507636206e657477>4.76 F 2.26 -<6f726b696e6720697320636f6d70696c656420696e2e>-.1 F 2.26 -<4974206d7573742062652073657061726174656c79>7.26 F -<656e61626c656420627920616464696e67>188.4 417.6 Q F0<4461656d6f6e50>2.5 -E<6f72744f7074696f6e73>-.2 E F1<73657474696e67732e>2.5 E 43.35 -<4e455449534f87204966>102 433.8 R .142 -<7365742c20737570706f727420666f722049534f2070726f746f636f6c206e657477> -2.642 F .143<6f726b696e6720697320636f6d70696c656420696e20286974206d6179 -20626520617070726f7072692d>-.1 F -<61746520746f202364658c6e65207468697320696e20746865204d616b>188.4 445.8 -Q<658c6c6520696e7374656164206f6620636f6e662e68292e>-.1 E 34.47 -<4e4554554e495887204966>102 462 R .39 -<7365742c20737570706f727420666f7220554e495820646f6d61696e20736f636b>2.89 -F .39<65747320697320636f6d70696c656420696e2e>-.1 F .39 -<54686973206973207573656420666f7220636f6e2d>5.39 F<74726f6c20736f636b> -188.4 474 Q<657420737570706f72742e>-.1 E 63.35<4c4f47204966>102 490.2 R -.5<7365742c20746865>3 F F2<7379736c6f>3 E<67>-.1 E F1 .5<726f7574696e65 -20696e2075736520617420736f6d6520736974657320697320757365642e>3 F .5 -<54686973206d616b>5.5 F .5<657320616e20696e666f726d612d>-.1 F .504<7469 -6f6e616c206c6f67207265636f726420666f722065616368206d6573736167652070726f -6365737365642c20616e64206d616b>188.4 502.2 R .504 -<6573206120686967686572207072696f72697479206c6f67>-.1 F .052 -<7265636f726420666f7220696e7465726e616c2073797374656d206572726f72732e> -188.4 514.2 R F0<535452>5.052 E<4f4e474c>-.3 E 2.552<5952>-.92 G -<45434f4d4d454e444544>-2.552 E F1 2.553<8a69>2.552 G 2.553<6679>-2.553 G -<6f75>-2.553 E -.1<7761>188.4 526.2 S -<6e74206e6f206c6f6767696e672c207475726e206974206f66>.1 E 2.5<6669>-.25 G -2.5<6e74>-2.5 G<686520636f6e8c6775726174696f6e208c6c652e>-2.5 E<4d41>102 -542.4 Q 11.12<5443484745434f538720436f6d70696c65>-1.11 F 3.555 -<696e2074686520636f646520746f20646f2060>6.055 F 3.555 -<6066757a7a79206d61746368696e6727>-.74 F 6.055<276f>-.74 G 6.055<6e74> --6.055 G 3.555<6865204745434f53208c656c6420696e>-6.055 F 2.5 -<2f6574632f7061737377642e2054686973>188.4 554.4 R -<616c736f207265717569726573207468617420746865>2.5 E F0 -<4d617463684745434f53>2.5 E F1<6f7074696f6e206265207475726e6564206f6e2e> -2.5 E -.35<4e41>102 570.6 S 13.15<4d45445f42494e448720436f6d70696c65>.35 -F .412<696e20636f646520746f2075736520746865204265726b>2.912 F<656c65>-.1 -E 2.913<7949>-.15 G .413 -<6e7465726e6574204e616d6520446f6d61696e202842494e44292073657276>-2.913 F -.413<657220746f>-.15 F<7265736f6c76>188.4 582.6 Q 2.5<6554>-.15 G -<43502f495020686f7374206e616d65732e>-2.5 E<4e4f>102 598.8 Q 38.76 -<54554e4958204966>-.4 F .248<796f7520617265207573696e672061206e6f6e2d55 -4e4958206d61696c20666f726d61742c20796f752063616e207365742074686973208d61 -6720746f207475726e206f66>2.748 F 2.747<6673>-.25 G<70652d>-2.747 E<6369 -616c2070726f63657373696e67206f6620554e49582d7374796c65209946726f6d209a20 -6c696e65732e>188.4 610.8 Q 39.45<5553455244428720496e636c756465>102 627 -R<746865>3.448 E F0<6578706572696d656e74616c>3.448 E F1<4265726b>3.449 E -<656c65>-.1 E 3.449<7975>-.15 G .949 -<73657220696e666f726d6174696f6e206461746162617365207061636b6167652e> --3.449 F<54686973>5.949 E .27<616464732061206e65>188.4 639 R 2.77<776c> --.25 G -2.15 -.25<65762065>-2.77 H 2.77<6c6f>.25 G 2.77<666c>-2.77 G .27 -<6f63616c206e616d652065>-2.77 F .27 -<7870616e73696f6e206265747765656e20616c696173696e6720616e6420666f7277> --.15 F 2.77<617264696e672e204974>-.1 F -<616c736f207573657320746865204e45574442207061636b6167652e>188.4 651 Q -<54686973206d6179206368616e676520696e206675747572652072656c65617365732e> -5 E<54686520666f6c6c6f>102 667.2 Q<77696e67206f7074696f6e7320617265206e -6f726d616c6c79207475726e6564206f6e20696e20706572>-.25 E<2d6f706572617469 -6e672d73797374656d20636c617573657320696e20636f6e662e682e>-.2 E -<4944454e545052>102 683.4 Q -1.88 -.4<4f54204f>-.4 H 19.61<8743>.4 G -.375<6f6d70696c6520696e20746865204944454e542070726f746f636f6c2061732064 -658c6e656420696e2052464320313431332e>-19.61 F .376<5468697320646566> -5.376 F .376<61756c7473206f6e20666f72>-.1 F 1.053 -<616c6c2073797374656d732065>188.4 695.4 R 1.053<786365707420556c74726978 -2c207768696368206170706172656e746c79206861732074686520696e74657265737469 -6e672099666561747572659a2074686174>-.15 F .83 -<7768656e206974207265636569>188.4 707.4 R -.15<7665>-.25 G 3.33<736199> -.15 G .83<686f737420756e726561636861626c659a206d65737361676520697420636c -6f73657320616c6c206f70656e20636f6e6e656374696f6e73>-3.33 F 1.922 -<746f207468617420686f73742e>188.4 719.4 R 1.922 -<53696e636520736f6d65208c7265>6.922 F -.1<7761>-.25 G 1.922<6c6c2067>.1 -F<617465>-.05 E -.1<7761>-.25 G 1.921 -<79732073656e642074686973206572726f7220636f6465207768656e20796f75>.1 F 0 -Cg EP +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-95)195.86 E/F1 10/Times-Roman@0 SF 39.5(CWDB If)102 96 R +(set, use the cdb \(tin)2.5 E(ycdb\) package.)-.15 E 32.84(NEWDB If)102 +112.2 R .142(set, use the ne)2.642 F 2.642(wd)-.25 G .142 +(atabase package from Berk)-2.642 F(ele)-.1 E 2.641(y\()-.15 G .141 +(from 4.4BSD\).)-2.641 F .141(This package)5.141 F .266 +(is substantially f)174 124.2 R .267(aster than DBM or NDBM.)-.1 F .267 +(If NEWDB and NDBM are both set,)5.267 F/F2 10/Times-Italic@0 SF +(sendmail)174 136.2 Q F1(will read DBM \214les, b)2.5 E +(ut will create and use NEWDB \214les.)-.2 E 53.39(NIS Include)102 152.4 +R .12(support for NIS.)2.62 F .119(If set together with)5.119 F F2(both) +2.619 E F1 .119(NEWDB and NDBM,)2.619 F F2(sendmail)2.619 E F1 .947(wil\ +l create both DBM and NEWDB \214les if and only if an alias \214le incl\ +udes the)174 164.4 R 3.409(substring \231/yp/\232 in the name.)174 176.4 +R 3.409(This is intended for compatibility with Sun)8.409 F +(Microsystems')174 188.4 Q F2(mkalias)2.5 E F1 +(program used on YP masters.)2.5 E 28.94(NISPLUS Compile)102 204.6 R +(in support for NIS+.)2.5 E 26.73(NETINFO Compile)102 220.8 R +(in support for NetInfo \(NeXT stations\).)2.5 E(LD)102 237 Q 22.12 +(APMAP Compile)-.4 F 1.225(in support for LD)3.725 F 1.225 +(AP X500 queries.)-.4 F 1.226(Requires libldap and liblber from)6.226 F +2.799(the Umich LD)174 249 R 2.798(AP 3.2 or 3.3 release or equi)-.4 F +-.25(va)-.25 G 2.798(lent libraries for other LD).25 F(AP)-.4 E +(libraries such as OpenLD)174 261 Q(AP)-.4 E(.)-1.11 E 32.84 +(HESIOD Compile)102 277.2 R(in support for Hesiod.)2.5 E 22.83 +(MAP_NSD Compile)102 293.4 R(in support for IRIX NSD lookups.)2.5 E 9.5 +(MAP_REGEX Compile)102 309.6 R(in support for re)2.5 E(gular e)-.15 E +(xpression matching.)-.15 E 27.83(DNSMAP Compile)102 325.8 R +(in support for DNS map lookups in the)2.5 E F2(sendmail.cf)2.5 E F1 +(\214le.)2.5 E 30.05(PH_MAP Compile)102 342 R +(in support for ph lookups.)2.5 E 45.05(SASL Compile)102 358.2 R 1.474 +(in support for SASL, a required component for SMTP Authentication)3.974 +F(support.)174 370.2 Q(ST)102 386.4 Q(AR)-.93 E 21.58(TTLS Compile)-.6 F +(in support for ST)2.5 E(AR)-.93 E(TTLS.)-.6 E 48.95(EGD Compile)102 +402.6 R .068(in support for the "Entrop)2.568 F 2.567(yG)-.1 G .067 +(athering Daemon" to pro)-2.567 F .067(vide better random)-.15 F +(data for TLS.)174 414.6 Q -1.63(TCPWRAPPERS Compile)102 430.8 R +(in support for TCP Wrappers.)2.5 E(_P)102 447 Q -1.11(AT)-.92 G +(H_SENDMAILCF)1.11 E(The pathname of the sendmail.cf \214le.)174 459 Q +(_P)102 475.2 Q -1.11(AT)-.92 G(H_SENDMAILPID)1.11 E +(The pathname of the sendmail.pid \214le.)174 487.2 Q(SM_CONF_SHM)102 +503.4 Q(Compile in support for shared memory)174 515.4 Q 2.5(,s)-.65 G +(ee section about "/v)-2.5 E(ar/spool/mqueue".)-.25 E(MIL)102 531.6 Q +33.2(TER Compile)-.92 F(in support for contacting e)2.5 E +(xternal mail \214lters b)-.15 E(uilt with the Milter API.)-.2 E 1.439 +(There are also se)127 547.8 R -.15(ve)-.25 G 1.439 +(ral compilation \215ags to indicate the en).15 F 1.44 +(vironment such as \231_AIX3\232 and)-.4 F 2.5(\231_SCO_unix_\232. See) +102 559.8 R +(the sendmail/README \214le for the latest scoop on these \215ags.)2.5 E +F0 2.5(6.1.1. F)102 583.8 R(or Futur)-.25 E 2.5(eR)-.18 G(eleases)-2.5 E +F2(sendmail)142 600 Q F1 .641(often contains compile time options)3.141 +F F2 -1.05(Fo)3.141 G 3.141(rF)1.05 G(utur)-3.141 E 3.141(eR)-.37 G +(eleases)-3.141 E F1 .641(\(pre\214x _FFR_\) which)3.141 F .432 +(might be enabled in a subsequent v)117 612 R .432 +(ersion or might simply be remo)-.15 F -.15(ve)-.15 G 2.933(da).15 G +2.933(st)-2.933 G(he)-2.933 E 2.933(yt)-.15 G .433(urned out not to) +-2.933 F 1.089(be really useful.)117 624 R 1.089 +(These features are usually not documented b)6.089 F 1.089(ut if the)-.2 +F 3.588(ya)-.15 G 1.088(re, then the required)-3.588 F 1.793(\(FFR\) co\ +mpile time options are listed here for rulesets and macros, and in)117 +636 R F2(cf/README)4.294 E F1(for)4.294 E .951(mc/cf options.)117 648 R +.951(FFR compile times options must be enabled when the sendmail binary\ + is b)5.951 F(uilt)-.2 E(from source.)117 660 Q +(Enabled FFRs in a binary can be listed with)5 E(sendmail -d0.13 < /de) +157 676.2 Q(v/null | grep FFR)-.25 E 0 Cg EP %%Page: 96 92 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d39362053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF 2.055<61636365737320616e20756e617574686f72697a65 -6420706f7274202873756368206173203131332c2075736564206279204944454e54292c -20556c747269782063616e6e6f74>188.4 96 R<7265636569>188.4 108 Q .3 -.15 -<76652065>-.25 H<6d61696c2066726f6d207375636820686f7374732e>.15 E 39.45 -<53595354454d3520536574>102 124.2 R<616c6c206f662074686520636f6d70696c61 -74696f6e20706172616d657465727320617070726f70726961746520666f722053797374 -656d2056>2.5 E<2e>-1.29 E 26.12<484153464c4f434b8720557365>102 140.4 R -<4265726b>2.845 E<656c65>-.1 E<792d7374796c65>-.15 E F0<8d6f636b>2.845 E -F1 .345<696e7374656164206f662053797374656d2056>2.845 F F0<6c6f636b66> -2.845 E F1 .344<746f20646f208c6c65206c6f636b696e672e>2.845 F .344 -<44756520746f>5.344 F .184<74686520686967686c7920756e757375616c2073656d -616e74696373206f66206c6f636b73206163726f737320666f726b7320696e>188.4 -152.4 R F0<6c6f636b66>2.684 E F1 2.684<2c74>C .185 -<6869732073686f756c6420616c>-2.684 F -.1<7761>-.1 G<7973>.1 E -<6265207573656420696620617420616c6c20706f737369626c652e>188.4 164.4 Q -<484153494e49544752>102 180.6 Q 4.86<4f55505320536574>-.4 F 1.284 -<7468697320696620796f75722073797374656d2068617320746865>3.784 F/F2 10 -/Times-Italic@0 SF<696e69746772>3.784 E<6f7570732829>-.45 E F1 1.284 -<63616c6c2028696620796f75206861>3.784 F 1.583 -.15<7665206d>-.2 H 1.283 -<756c7469706c652067726f7570>.15 F 4.416<737570706f7274292e2054686973> -188.4 192.6 R 1.916<69732074686520646566>4.416 F 1.916 -<61756c742069662053595354454d35206973>-.1 F F2<6e6f74>4.416 E F1 1.917 -<64658c6e6564206f7220696620796f7520617265206f6e>4.417 F<485055582e>188.4 -204.6 Q<484153554e>102 220.8 Q 27.59<414d4520536574>-.35 F 1.149 -<7468697320696620796f75206861>3.649 F 1.448 -.15<76652074>-.2 H<6865>.15 -E F2<756e616d65>3.648 E F1 1.148<2832292073797374656d2063616c6c20286f72 -20636f72726573706f6e64696e67206c69627261727920726f752d>B 2.5 -<74696e65292e20536574>188.4 232.8 R<627920646566>2.5 E -<61756c742069662053595354454d35206973207365742e>-.1 E<4841534745544454> -102 249 Q<41424c4553495a45>-.93 E<536574207468697320696620796f75206861> -188.4 261 Q .3 -.15<76652074>-.2 H<6865>.15 E F2 -.1<6765>2.5 G -<74647461626c6573697a65>.1 E F1<2832292073797374656d2063616c6c2e>A -<48415357>102 277.2 Q 22.89<41495450494420536574>-1.2 F -<7468697320696620796f75206861>2.5 E .3 -.15<76652074>-.2 H<6865>.15 E F2 -<68617377616974706964>2.5 E F1<2832292073797374656d2063616c6c2e>A -.74 -<4641>102 293.4 S<53545f5049445f52454359434c45>.74 E .542<53657420746869 -7320696620796f75722073797374656d2063616e20706f737369626c7920726575736520 -7468652073616d652070696420696e207468652073616d65207365636f6e64206f66> -188.4 305.4 R<74696d652e>188.4 317.4 Q 37.22<5346535f5459504520546865> -102 333.6 R .517<6d656368616e69736d20746861742063616e206265207573656420 -746f20676574208c6c652073797374656d20636170616369747920696e666f726d617469 -6f6e2e>3.017 F<546865>5.516 E -.25<7661>188.4 345.6 S .214 -<6c7565732063616e206265206f6e65206f66205346535f555354>.25 F 2.435 -1.11 -<41542028>-.93 H .215<757365207468652075737461742832292073797363616c6c29 -2c205346535f34415247532028757365>1.11 F .415<74686520666f7572206172> -188.4 357.6 R .415<67756d656e74207374617466732832292073797363616c6c292c -205346535f564653202875736520746865207477>-.18 F 2.915<6f61>-.1 G -.18 -<7267>-2.915 G .415<756d656e7420737461746673283229>.18 F .716<7379736361 -6c6c20696e636c7564696e67203c7379732f7666732e683e292c205346535f4d4f554e54 -202875736520746865207477>188.4 369.6 R 3.217<6f61>-.1 G -.18<7267>-3.217 -G .717<756d656e7420737461746673283229>.18 F 4.32<73797363616c6c20696e63 -6c7564696e67203c7379732f6d6f756e742e683e292c205346535f5354>188.4 381.6 R --1.11<4154>-.93 G 4.32<4653202875736520746865207477>1.11 F 6.82<6f61>-.1 -G -.18<7267>-6.82 G<756d656e74>.18 E 1.108<7374617466732832292073797363 -616c6c20696e636c7564696e67203c7379732f7374617466732e683e292c205346535f53 -54>188.4 393.6 R -1.11<4154>-.93 G 1.109<564653202875736520746865207477> -1.11 F 3.609<6f61>-.1 G -.18<7267>-3.609 G<752d>.18 E 1.511<6d656e742073 -74617466732832292073797363616c6c20696e636c7564696e67203c7379732f73746174 -7666732e683e292c206f72205346535f4e4f4e4520286e6f2077>188.4 405.6 R 1.511 -<617920746f>-.1 F<676574207468697320696e666f726d6174696f6e292e>188.4 -417.6 Q 40.57<4c415f5459504520546865>102 433.8 R<6c6f61642061>2.5 E -.15 -<7665>-.2 G<7261676520747970652e>.15 E -<44657461696c7320617265206465736372696265642062656c6f>5 E -.65<772e>-.25 -G .342<54686520617265207365>102 450 R -.15<7665>-.25 G .342<72616c2062> -.15 F .342<75696c742d696e2077>-.2 F .342 -<617973206f6620636f6d707574696e6720746865206c6f61642061>-.1 F -.15<7665> --.2 G<726167652e>.15 E F2<53656e646d61696c>5.342 E F1 .343 -<747269657320746f206175746f2d636f6e8c67757265207468656d>2.842 F .267<62 -61736564206f6e20696d7065726665637420677565737365733b20796f752063616e2073 -656c656374206f6e65207573696e6720746865>102 462 R F2<6363>2.766 E F1 -<6f7074696f6e>2.766 E F02.766 E F2<74797065>A F1 -2.766<2c77>C<68657265>-2.766 E F2<74797065>2.766 E F1<69733a>102 474 Q -48.91<4c415f494e5420546865>102 490.2 R -.1<6b65>3.452 G .952 -<726e656c2073746f72657320746865206c6f61642061>.1 F -.15<7665>-.2 G .952 -<7261676520696e20746865206b>.15 F .952 -<65726e656c20617320616e206172726179206f66206c6f6e6720696e7465>-.1 F -<676572732e>-.15 E<5468652061637475616c2076>188.4 502.2 Q -<616c75657320617265207363616c656420627920612066>-.25 E -<6163746f7220465343414c452028646566>-.1 E<61756c7420323536292e>-.1 E -<4c415f53484f52>102 518.4 Q 35.89<5454>-.6 G .794<6865206b>-35.89 F .794 -<65726e656c2073746f72657320746865206c6f61642061>-.1 F -.15<7665>-.2 G -.794<7261676520696e20746865206b>.15 F .793 -<65726e656c20617320616e206172726179206f662073686f727420696e7465>-.1 F -<676572732e>-.15 E<5468652061637475616c2076>188.4 530.4 Q -<616c75657320617265207363616c656420627920612066>-.25 E -<6163746f7220465343414c452028646566>-.1 E<61756c7420323536292e>-.1 E -<4c415f464c4f>102 546.6 Q 37.03 -1.11<41542054>-.35 H .088<6865206b>1.11 -F .088<65726e656c2073746f72657320746865206c6f61642061>-.1 F -.15<7665> --.2 G .089<7261676520696e20746865206b>.15 F .089<65726e656c20617320616e -206172726179206f6620646f75626c6520707265636973696f6e>-.1 F<8d6f6174732e> -188.4 558.6 Q<4c415f4d41>102 574.8 Q 35.97<434820557365>-.4 F<4d41>2.5 E -<43482d7374796c65206c6f61642061>-.4 E -.15<7665>-.2 G<72616765732e>.15 E -39.45<4c415f535542522043616c6c>102 591 R<746865>2.5 E F2 -.1<6765>2.5 G -<746c6f6164617667>.1 E F1 -<726f7574696e6520746f2067657420746865206c6f61642061>2.5 E -.15<7665>-.2 -G<7261676520617320616e206172726179206f6620646f75626c65732e>.15 E -<4c415f5a4552>102 607.2 Q 42.36<4f41>-.4 G -.1<6c7761>-42.36 G -<79732072657475726e207a65726f20617320746865206c6f61642061>.1 E -.15 -<7665>-.2 G 2.5<726167652e2054686973>.15 F<6973207468652066>2.5 E -<616c6c6261636b20636173652e>-.1 E .494<49662074797065>102 623.4 R/F3 9 -/Times-Roman@0 SF<4c415f494e54>2.994 E F1<2c>A F3<4c415f53484f52>2.994 E -<54>-.54 E F1 2.994<2c6f>C<72>-2.994 E F3<4c415f464c4f>2.993 E -.999 -<4154>-.315 G F1 .493<69732073706563698c65642c20796f75206d617920616c736f -206e65656420746f2073706563696679>3.992 F F3<5f50>2.993 E -.999<4154> --.828 G<485f554e4958>.999 E F1 .948<28746865207061746820746f20796f757220 -73797374656d2062696e6172792920616e64>102 635.4 R F3<4c415f41>3.448 E -<56454e52>-1.215 E<554e>-.36 E F1 .949 -<28746865206e616d65206f66207468652076>3.448 F .949 -<61726961626c6520636f6e7461696e696e6720746865206c6f6164>-.25 F -2.25 -.2 -<61762065>102 647.4 T<7261676520696e20746865206b>.2 E -<65726e656c3b20757375616c6c7920995f61>-.1 E -.15<7665>-.2 G -<6e72756e9a206f72209961>.15 E -.15<7665>-.2 G<6e72756e9a292e>.15 E F0 -2.5<362e332e20436f6e8c6775726174696f6e>87 671.4 R -<696e2073656e646d61696c2f636f6e66>2.5 E<2e63>-.15 E F1 -<54686520666f6c6c6f>127 687.6 Q -<77696e67206368616e6765732063616e206265206d61646520696e20636f6e662e632e> --.25 E 0 Cg EP +/F0 10/Times-Bold@0 SF 193.36(SMM:08-96 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E 2.5(6.2. P)87 96 R +(arameters in sendmail/conf)-.1 E(.h)-.15 E/F1 10/Times-Roman@0 SF -.15 +(Pa)127 112.2 S .895 +(rameters and compilation options are de\214ned in conf.h.).15 F .896 +(Most of these need not normally)5.895 F .193(be tweak)102 124.2 R .192 +(ed; common parameters are all in sendmail.cf.)-.1 F(Ho)5.192 E(we)-.25 +E -.15(ve)-.25 G .992 -.4(r, t).15 H .192(he sizes of certain primiti).4 +F .492 -.15(ve ve)-.25 H(c-).15 E +(tors, etc., are included in this \214le.)102 136.2 Q(The numbers follo) +5 E(wing the parameters are their def)-.25 E(ault v)-.1 E(alue.)-.25 E +1.247(This document is not the best source of information for compilati\ +on \215ags in conf.h \212 see)127 152.4 R +(sendmail/README or sendmail/conf.h itself.)102 164.4 Q(MAXLINE [2048]) +102 180.6 Q 2.069(The maximum line length of an)11.14 F 4.568(yi)-.15 G +2.068(nput line.)-4.568 F 2.068(If message lines e)7.068 F 2.068 +(xceed this)-.15 F .575(length the)188.4 192.6 R 3.075(yw)-.15 G .575 +(ill still be processed correctly; ho)-3.075 F(we)-.25 E -.15(ve)-.25 G +1.375 -.4(r, h).15 H .575(eader lines, con\214gura-).4 F +(tion \214le lines, alias lines, etc., must \214t within this limit.) +188.4 204.6 Q(MAXN)102 220.8 Q(AME [256])-.35 E +(The maximum length of an)9.82 E 2.5(yn)-.15 G +(ame, such as a host or a user name.)-2.5 E(MAXPV [256])102 237 Q .25 +(The maximum number of parameters to an)26.13 F 2.75(ym)-.15 G(ailer) +-2.75 E 5.25(.T)-.55 G .25(his limits the number of)-5.25 F .375 +(recipients that may be passed in one transaction.)188.4 249 R .376 +(It can be set to an)5.376 F 2.876(ya)-.15 G(rbitrary)-2.876 E .876 +(number abo)188.4 261 R 1.176 -.15(ve a)-.15 H .876(bout 10, since).15 F +/F2 10/Times-Italic@0 SF(sendmail)3.376 E F1 .876(will break up a deli) +3.376 F -.15(ve)-.25 G .875(ry into smaller).15 F .886 +(batches as needed.)188.4 273 R 3.386(Ah)5.886 G .887 +(igher number may reduce load on your system, ho)-3.386 F(w-)-.25 E +-2.15 -.25(ev e)188.4 285 T -.55(r.).25 G(MAXQ)102 301.2 Q(UEUEGR)-.1 E +(OUPS [50])-.4 E(The maximum number of queue groups.)188.4 313.2 Q(MAXA) +102 329.4 Q -.18(TO)-1.11 G 2.5(M[).18 G 3.26(1000] The)-2.5 F .064 +(maximum number of atoms \(tok)2.564 F .063(ens\) in a single address.) +-.1 F -.15(Fo)5.063 G 2.563(re).15 G .063(xample, the)-2.713 F +(address \231eric@CS.Berk)188.4 341.4 Q(ele)-.1 E -.65(y.)-.15 G +(EDU\232 is se).65 E -.15(ve)-.25 G 2.5(na).15 G(toms.)-2.5 E +(MAXMAILERS [25])102 357.6 Q .122(The maximum number of mailers that ma\ +y be de\214ned in the con\214guration \214le.).02 F(This v)188.4 369.6 Q +(alue is de\214ned in include/sendmail/sendmail.h.)-.25 E(MAXR)102 385.8 +Q(WSETS [200])-.55 E .432(The maximum number of re).01 F .432 +(writing sets that may be de\214ned.)-.25 F .431(The \214rst half of) +5.431 F .034(these are reserv)188.4 397.8 R .034 +(ed for numeric speci\214cation \(e.g., `)-.15 F(`S92')-.74 E .035 +('\), while the upper half)-.74 F .492(are reserv)188.4 409.8 R .492 +(ed for auto-numbering \(e.g., `)-.15 F(`Sfoo')-.74 E 2.992('\). Thus,) +-.74 F .492(with a v)2.992 F .491(alue of 200 an)-.25 F +(attempt to use `)188.4 421.8 Q(`S99')-.74 E 2.5('w)-.74 G +(ill succeed, b)-2.5 E(ut `)-.2 E(`S100')-.74 E 2.5('w)-.74 G(ill f)-2.5 +E(ail.)-.1 E(MAXPRIORITIES [25])102 438 Q 2.481(The maximum number of v) +188.4 450 R 2.482(alues for the \231Precedence:\232 \214eld that may be) +-.25 F(de\214ned \(using the)188.4 462 Q F0(P)2.5 E F1 +(line in sendmail.cf\).)2.5 E(MAXUSERENVIR)102 478.2 Q(ON [100])-.4 E +.399(The maximum number of items in the user en)188.4 490.2 R .399 +(vironment that will be passed to)-.4 F(subordinate mailers.)188.4 502.2 +Q(MAXMXHOSTS [100])102 518.4 Q +(The maximum number of MX records we will accept for an)188.4 530.4 Q +2.5(ys)-.15 G(ingle host.)-2.5 E(MAXMAPST)102 546.6 Q -.4(AC)-.93 G 2.5 +(K[).4 G(12])-2.5 E 1.65(The maximum number of maps that may be "stack) +188.4 558.6 R 1.65(ed" in a)-.1 F F0(sequence)4.15 E F1(class)4.15 E +(map.)188.4 570.6 Q(MAXMIMEARGS [20])102 586.8 Q .718 +(The maximum number of ar)188.4 598.8 R .718 +(guments in a MIME Content-T)-.18 F .718(ype: header; addi-)-.8 F +(tional ar)188.4 610.8 Q(guments will be ignored.)-.18 E +(MAXMIMENESTING [20])102 627 Q .4(The maximum depth to which MIME messa\ +ges may be nested \(that is, nested)188.4 639 R 1.344(Message or Multip\ +art documents; this does not limit the number of compo-)188.4 651 R +(nents in a single Multipart document\).)188.4 663 Q(MAXD)102 679.2 Q +(AEMONS [10])-.4 E 1.353(The maximum number of sock)188.4 691.2 R 1.353 +(ets sendmail will open for accepting connec-)-.1 F(tions on dif)188.4 +703.2 Q(ferent ports.)-.25 E 0 Cg EP %%Page: 97 93 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3937>195.86 E -2.5<362e332e312e204275696c742d696e>102 96 R -<4865616465722053656d616e74696373>2.5 E/F1 10/Times-Roman@0 SF 1.248<4e -6f7420616c6c206865616465722073656d616e74696373206172652064658c6e65642069 -6e2074686520636f6e8c6775726174696f6e208c6c652e>142 112.2 R 1.247 -<486561646572206c696e657320746861742073686f756c64>6.247 F .305<6f6e6c79 -20626520696e636c75646564206279206365727461696e206d61696c6572732028617320 -77656c6c206173206f74686572206d6f7265206f6273637572652073656d616e74696373 -29206d7573742062652073706563698c6564>117 124.2 R .047<696e20746865>117 -136.2 R/F2 10/Times-Italic@0 SF<486472496e666f>2.547 E F1 .047 -<7461626c6520696e>2.547 F F2<636f6e66>2.547 E<2e63>-.15 E F1 5.047<2e54> -C .046<686973207461626c6520636f6e7461696e732074686520686561646572206e61 -6d65202877686963682073686f756c6420626520696e20616c6c206c6f>-5.047 F -<776572>-.25 E<636173652920616e64206120736574206f662068656164657220636f -6e74726f6c208d61677320286465736372696265642062656c6f>117 148.2 Q -<77292c20546865208d616773206172653a>-.25 E<485f41>117 164.4 Q 30.97 -<434845434b204e6f726d616c6c79>-.4 F .007<7768656e2074686520636865636b20 -6973206d61646520746f20736565206966206120686561646572206c696e652069732063 -6f6d70617469626c652077697468>2.507 F 2.941<616d>203.4 176.4 S -<61696c6572>-2.941 E<2c>-.4 E F2<73656e646d61696c>2.941 E F1 .441 -<77696c6c206e6f742064656c65746520616e2065>2.941 F .441 -<78697374696e67206c696e652e>-.15 F .44 -<49662074686973208d6167206973207365742c>5.441 F F2<73656e642d>2.94 E -<6d61696c>203.4 188.4 Q F1 .152<77696c6c2064656c6574652065>2.652 F -.15 -<7665>-.25 G 2.652<6e65>.15 G .152 -<78697374696e6720686561646572206c696e65732e>-2.802 F .152 -<546861742069732c2069662074686973206269742069732073657420616e6420746865> -5.152 F 1.425<6d61696c657220646f6573206e6f74206861>203.4 200.4 R 1.725 --.15<7665208d>-.2 H 1.425<6167206269747320736574207468617420696e74657273 -656374207769746820746865207265717569726564206d61696c6572>.15 F 2.204<8d -61677320696e20746865206865616465722064658c6e6974696f6e20696e2073656e646d -61696c2e63662c2074686520686561646572206c696e65206973>203.4 212.4 R F2 -<616c77617973>4.704 E F1<64656c657465642e>203.4 224.4 Q 51.13 -<485f454f48204966>117 240.6 R .206<7468697320686561646572208c656c642069 -73207365742c207472656174206974206c696b>2.706 F 2.706<656162>-.1 G .206< -6c616e6b206c696e652c20692e652e2c2069742077696c6c207369676e616c2074686520 -656e64>-2.706 F<6f66207468652068656164657220616e6420746865206265>203.4 -252.6 Q<67696e6e696e67206f6620746865206d657373616765207465>-.15 E -<78742e>-.15 E 39.45<485f464f52434520416464>117 268.8 R 2.038 -<746869732068656164657220656e7472792065>4.538 F -.15<7665>-.25 G 4.538 -<6e69>.15 G 4.538<666f>-4.538 G 2.038<6e652065>-4.538 F 2.039 -<78697374656420696e20746865206d657373616765206265666f72652e>-.15 F 2.039 -<49662061>7.039 F 2.189 -<68656164657220656e74727920646f6573206e6f74206861>203.4 280.8 R 2.488 --.15<76652074>-.2 H 2.188<68697320626974207365742c>.15 F F2 -<73656e646d61696c>4.688 E F1 2.188 -<77696c6c206e6f742061646420616e6f74686572>4.688 F .62<686561646572206c69 -6e65206966206120686561646572206c696e65206f662074686973206e616d6520616c72 -656164792065>203.4 292.8 R 3.12<7869737465642e2054686973>-.15 F -.1 -<776f>3.12 G .62<756c64206e6f72>.1 F<2d>-.2 E<6d616c6c792062652075736564 -20746f207374616d7020746865206d6573736167652062792065>203.4 304.8 Q -.15 -<7665>-.25 G<72796f6e652077686f2068616e646c65642069742e>.15 E -<485f545241>117 321 Q 39.3<4345204966>-.4 F 1.044<7365742c20746869732069 -7320612074696d657374616d702028747261636529208c656c642e>3.544 F 1.043 -<496620746865206e756d626572206f66207472616365208c656c647320696e2061> -6.043 F .705<6d6573736167652065>203.4 333 R .705<7863656564732061207072 -6573657420616d6f756e7420746865206d6573736167652069732072657475726e656420 -6f6e2074686520617373756d702d>-.15 F -<74696f6e20746861742069742068617320616e20616c696173696e67206c6f6f702e> -203.4 345 Q 46.67<485f52435054204966>117 361.2 R .332<7365742c2074686973 -208c656c6420636f6e7461696e7320726563697069656e74206164647265737365732e> -2.833 F .332<54686973206973207573656420627920746865>5.332 F F0 -2.832 E F1 .332<8d616720746f>2.832 F 1.349<64657465726d696e652077686f20 -746f2073656e6420746f207768656e20697420697320636f6c6c656374696e6720726563 -697069656e74732066726f6d20746865206d65732d>203.4 373.2 R<736167652e> -203.4 385.2 Q<485f4652>117 401.4 Q 43.74<4f4d2054686973>-.4 F 1.673<8d61 -6720696e6469636174657320746861742074686973208c656c642073706563698c657320 -612073656e646572>4.174 F 6.673<2e54>-.55 G 1.673 -<6865206f72646572206f66207468657365>-6.673 F .898 -<8c656c647320696e20746865>203.4 413.4 R F2<486472496e666f>3.398 E F1 -.898<7461626c652073706563698c6573>3.398 F F2<73656e646d61696c>3.398 E F1 -1.998 -.55<27732070>D .898 -<7265666572656e636520666f72207768696368208c656c64>.55 F -<746f2072657475726e206572726f72206d6573736167657320746f2e>203.4 425.4 Q -<485f455252>117 441.6 Q<4f525354>-.4 E 22.53<4f41>-.18 G<64647265737365 -7320696e2074686973206865616465722073686f756c64207265636569>-22.53 E .3 --.15<76652065>-.25 H<72726f72206d657373616765732e>.15 E 52.79 -<485f4354452054686973>117 457.8 R -<686561646572206973206120436f6e74656e742d54>2.5 E<72616e73666572>-.35 E -<2d456e636f64696e6720686561646572>-.2 E<2e>-.55 E 40.01 -<485f43545950452054686973>117 474 R -<686561646572206973206120436f6e74656e742d54>2.5 E<79706520686561646572> --.8 E<2e>-.55 E<485f535452495056>117 490.2 Q 25.25<414c205374726970> --1.35 F<7468652076>2.5 E -<616c75652066726f6d20746865206865616465722028666f72204263633a292e>-.25 E -<4c657427>117 506.4 Q 2.5<736c>-.55 G<6f6f6b20617420612073616d706c65> --2.5 E F2<486472496e666f>2.5 E F1<73706563698c636174696f6e3a>2.5 E 0 Cg -EP +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-97)195.86 E/F1 10/Times-Roman@0 SF(MAXMA)102 96 Q(CN)-.4 E +(AMELEN [25])-.35 E(The maximum length of a macro name.)188.4 108 Q +2.851(An)102 124.2 S .351(umber of other compilation options e)-2.851 F +2.851(xist. These)-.15 F .35 +(specify whether or not speci\214c code should be)2.851 F(compiled in.) +102 136.2 Q(Ones mark)5 E(ed with \207 are 0/1 v)-.1 E(alued.)-.25 E +36.69(NETINET\207 If)102 152.4 R .829 +(set, support for Internet protocol netw)3.329 F .829 +(orking is compiled in.)-.1 F(Pre)5.829 E .83(vious v)-.25 F(er)-.15 E +(-)-.2 E .178(sions of)188.4 164.4 R/F2 10/Times-Italic@0 SF(sendmail) +2.678 E F1 .178(referred to this as)2.678 F/F3 9/Times-Roman@0 SF -.36 +(DA)2.678 G(EMON).36 E F1 2.677(;t)C .177(his old usage is no)-2.677 F +2.677(wi)-.25 G(ncorrect.)-2.677 E(Def)188.4 176.4 Q 1.87 +(aults on; turn it of)-.1 F 4.37(fi)-.25 G 4.37(nt)-4.37 G 1.87(he Mak) +-4.37 F 1.87(e\214le if your system doesn')-.1 F 4.37(ts)-.18 G 1.87 +(upport the)-4.37 F(Internet protocols.)188.4 188.4 Q 31.69 +(NETINET6\207 If)102 204.6 R 2.26(set, support for IPv6 netw)4.76 F 2.26 +(orking is compiled in.)-.1 F 2.26(It must be separately)7.26 F +(enabled by adding)188.4 216.6 Q F0(DaemonP)2.5 E(ortOptions)-.2 E F1 +(settings.)2.5 E 43.35(NETISO\207 If)102 232.8 R .142 +(set, support for ISO protocol netw)2.642 F .143 +(orking is compiled in \(it may be appropri-)-.1 F +(ate to #de\214ne this in the Mak)188.4 244.8 Q +(e\214le instead of conf.h\).)-.1 E 34.47(NETUNIX\207 If)102 261 R .39 +(set, support for UNIX domain sock)2.89 F .39(ets is compiled in.)-.1 F +.39(This is used for con-)5.39 F(trol sock)188.4 273 Q(et support.)-.1 E +63.35(LOG If)102 289.2 R .5(set, the)3 F F2(syslo)3 E(g)-.1 E F1 .5 +(routine in use at some sites is used.)3 F .5(This mak)5.5 F .5 +(es an informa-)-.1 F .504 +(tional log record for each message processed, and mak)188.4 301.2 R +.504(es a higher priority log)-.1 F .052 +(record for internal system errors.)188.4 313.2 R F0(STR)5.052 E(ONGL) +-.3 E 2.552(YR)-.92 G(ECOMMENDED)-2.552 E F1 2.553<8a69>2.552 G 2.553 +(fy)-2.553 G(ou)-2.553 E -.1(wa)188.4 325.2 S(nt no logging, turn it of) +.1 E 2.5(fi)-.25 G 2.5(nt)-2.5 G(he con\214guration \214le.)-2.5 E(MA) +102 341.4 Q 11.12(TCHGECOS\207 Compile)-1.11 F 3.555 +(in the code to do `)6.055 F 3.555(`fuzzy matching')-.74 F 6.055('o)-.74 +G 6.055(nt)-6.055 G 3.555(he GECOS \214eld in)-6.055 F 2.5 +(/etc/passwd. This)188.4 353.4 R(also requires that the)2.5 E F0 +(MatchGECOS)2.5 E F1(option be turned on.)2.5 E -.35(NA)102 369.6 S +13.15(MED_BIND\207 Compile).35 F .412(in code to use the Berk)2.912 F +(ele)-.1 E 2.913(yI)-.15 G .413(nternet Name Domain \(BIND\) serv)-2.913 +F .413(er to)-.15 F(resolv)188.4 381.6 Q 2.5(eT)-.15 G +(CP/IP host names.)-2.5 E(NO)102 397.8 Q 38.76(TUNIX If)-.4 F .248(you \ +are using a non-UNIX mail format, you can set this \215ag to turn of) +2.748 F 2.747(fs)-.25 G(pe-)-2.747 E +(cial processing of UNIX-style \231From \232 lines.)188.4 409.8 Q 39.45 +(USERDB\207 Include)102 426 R(the)3.448 E F0(experimental)3.448 E F1 +(Berk)3.449 E(ele)-.1 E 3.449(yu)-.15 G .949 +(ser information database package.)-3.449 F(This)5.949 E .27(adds a ne) +188.4 438 R 2.77(wl)-.25 G -2.15 -.25(ev e)-2.77 H 2.77(lo).25 G 2.77 +(fl)-2.77 G .27(ocal name e)-2.77 F .27 +(xpansion between aliasing and forw)-.15 F 2.77(arding. It)-.1 F +(also uses the NEWDB package.)188.4 450 Q +(This may change in future releases.)5 E(The follo)102 466.2 Q +(wing options are normally turned on in per)-.25 E +(-operating-system clauses in conf.h.)-.2 E(IDENTPR)102 482.4 Q -1.88 +-.4(OT O)-.4 H 19.61<8743>.4 G .375 +(ompile in the IDENT protocol as de\214ned in RFC 1413.)-19.61 F .376 +(This def)5.376 F .376(aults on for)-.1 F 1.053(all systems e)188.4 +494.4 R 1.053(xcept Ultrix, which apparently has the interesting \231fe\ +ature\232 that)-.15 F .83(when it recei)188.4 506.4 R -.15(ve)-.25 G +3.33(sa\231).15 G .83 +(host unreachable\232 message it closes all open connections)-3.33 F +1.922(to that host.)188.4 518.4 R 1.922(Since some \214re)6.922 F -.1 +(wa)-.25 G 1.922(ll g).1 F(ate)-.05 E -.1(wa)-.25 G 1.921 +(ys send this error code when you).1 F 2.055(access an unauthorized por\ +t \(such as 113, used by IDENT\), Ultrix cannot)188.4 530.4 R(recei) +188.4 542.4 Q .3 -.15(ve e)-.25 H(mail from such hosts.).15 E 39.45 +(SYSTEM5 Set)102 558.6 R +(all of the compilation parameters appropriate for System V)2.5 E(.) +-1.29 E 26.12(HASFLOCK\207 Use)102 574.8 R(Berk)2.845 E(ele)-.1 E +(y-style)-.15 E F0(\215ock)2.845 E F1 .345(instead of System V)2.845 F +F0(lockf)2.845 E F1 .344(to do \214le locking.)2.845 F .344(Due to)5.344 +F .184(the highly unusual semantics of locks across forks in)188.4 586.8 +R F0(lockf)2.684 E F1 2.684(,t)C .185(his should al)-2.684 F -.1(wa)-.1 +G(ys).1 E(be used if at all possible.)188.4 598.8 Q(HASINITGR)102 615 Q +4.86(OUPS Set)-.4 F 1.284(this if your system has the)3.784 F F2(initgr) +3.784 E(oups\(\))-.45 E F1 1.284(call \(if you ha)3.784 F 1.583 -.15 +(ve m)-.2 H 1.283(ultiple group).15 F 4.416(support\). This)188.4 627 R +1.916(is the def)4.416 F 1.916(ault if SYSTEM5 is)-.1 F F2(not)4.416 E +F1 1.917(de\214ned or if you are on)4.417 F(HPUX.)188.4 639 Q(HASUN)102 +655.2 Q 27.59(AME Set)-.35 F 1.149(this if you ha)3.649 F 1.448 -.15 +(ve t)-.2 H(he).15 E F2(uname)3.648 E F1 1.148 +(\(2\) system call \(or corresponding library rou-)B 2.5(tine\). Set) +188.4 667.2 R(by def)2.5 E(ault if SYSTEM5 is set.)-.1 E(HASGETDT)102 +683.4 Q(ABLESIZE)-.93 E(Set this if you ha)188.4 695.4 Q .3 -.15(ve t) +-.2 H(he).15 E F2 -.1(ge)2.5 G(tdtablesize).1 E F1(\(2\) system call.)A +(HASW)102 711.6 Q 22.89(AITPID Set)-1.2 F(this if you ha)2.5 E .3 -.15 +(ve t)-.2 H(he).15 E F2(haswaitpid)2.5 E F1(\(2\) system call.)A 0 Cg EP %%Page: 98 94 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 193.36<534d4d3a30382d39382053656e646d61696c>72 60 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF<73747275637420686472696e666f>157 96 Q -<486472496e666f5b5d203d>84.6 E<7b>157 108 Q<2f2a206f726967696e61746f7220 -8c656c64732c206d6f737420746f206c65617374207369676e698c63616e74>189.5 120 -Q<2a2f>5 E 52.29<22726573656e742d73656e646572222c20485f4652>177 132 R -<4f4d2c>-.4 E 58.95<22726573656e742d66726f6d222c20485f4652>177 144 R -<4f4d2c>-.4 E 79.5<2273656e646572222c20485f4652>177 156 R<4f4d2c>-.4 E -86.16<2266726f6d222c20485f4652>177 168 R<4f4d2c>-.4 E 66.72 -<2266756c6c2d6e616d65222c20485f41>177 180 R<434845434b2c>-.4 E 71.17 -<226572726f72732d746f222c20485f4652>177 192 R -1.667 -<4f4d207c20485f455252>-.4 F<4f525354>-.4 E<4f2c>-.18 E -<2f2a2064657374696e6174696f6e208c656c6473202a2f>189.5 204 Q 97.82 -<22746f222c20485f52435054>177 216 R<2c>-.74 E 70.61 -<22726573656e742d746f222c20485f52435054>177 228 R<2c>-.74 E 96.72 -<226363222c20485f52435054>177 240 R<2c>-.74 E 91.72 -<22626363222c20485f52435054>177 252 R .833<7c48>.833 G<5f535452495056> --.833 E<414c2c>-1.35 E<2f2a206d657373616765206964656e74698c636174696f6e -20616e6420636f6e74726f6c202a2f>189.5 264 Q 71.72 -<226d657373616765222c20485f454f482c>177 276 R<227465>177 288 Q 90.75 -<7874222c20485f454f482c>-.15 F<2f2a207472616365208c656c6473202a2f>189.5 -300 Q<227265636569>177 312 Q -.15<7665>-.25 G 72.13<64222c20485f545241> -.15 F -1.667<4345207c20485f464f5243452c>-.4 F -<2f2a206d697363656c6c616e656f7573208c656c6473202a2f>189.5 324 Q -<22636f6e74656e742d7472616e73666572>177 336 Q 2.5 -<2d656e636f64696e67222c20485f4354452c>-.2 F 55.61 -<22636f6e74656e742d74797065222c20485f43545950452c>177 348 R 87.1 -<4e554c4c2c20302c>177 372 R<7d3b>157 384 Q 2.435<5468697320737472756374 -75726520696e64696361746573207468617420746865209954>117 400.2 R 2.435 -<6f3a9a2c2099526573656e742d54>-.8 F 2.435<6f3a9a2c20616e64209943633a9a20 -8c656c647320616c6c207370656369667920726563697069656e74>-.8 F 3.161 -<6164647265737365732e20416e>117 412.2 R 3.161<7999>-.15 G .662<46756c6c -2d4e616d653a9a208c656c642077696c6c2062652064656c6574656420756e6c65737320 -746865207265717569726564206d61696c6572208d61672028696e646963617465642069 -6e>-3.161 F .246 -<74686520636f6e8c6775726174696f6e208c6c65292069732073706563698c65642e> -117 424.2 R .245<54686520994d6573736167653a9a20616e64209954>5.246 F -.15 -<6578>-.7 G .245<743a9a208c656c64732077696c6c207465726d696e617465207468 -65206865616465723b>.15 F 1.936<7468657365206172652075736564206279207261 -6e646f6d2064697373656e746572732061726f756e6420746865206e657477>117 436.2 -R 1.936<6f726b2077>-.1 F 4.436<6f726c642e20546865>-.1 F<995265636569> -4.436 E -.15<7665>-.25 G 1.937<643a9a208c656c642077696c6c>.15 F<616c>117 -448.2 Q -.1<7761>-.1 G<79732062652061646465642c20616e642063616e20626520 -7573656420746f207472616365206d657373616765732e>.1 E .446<54686572652061 -72652061206e756d626572206f6620696d706f7274616e7420706f696e74732068657265 -2e>142 464.4 R .445<46697273742c20686561646572208c656c647320617265206e6f -74206164646564206175746f6d6174692d>5.446 F .656 -<63616c6c79206a757374206265636175736520746865>117 476.4 R 3.156<7961> --.15 G .656<726520696e20746865>-3.156 F/F2 10/Times-Italic@0 SF -<486472496e666f>3.157 E F1 .657<7374727563747572653b20746865>3.157 F -3.157<796d>-.15 G .657 -<7573742062652073706563698c656420696e2074686520636f6e8c6775726174696f6e> --3.157 F .728<8c6c6520696e206f7264657220746f20626520616464656420746f2074 -6865206d6573736167652e>117 488.4 R<416e>5.727 E 3.227<7968>-.15 G .727< -6561646572208c656c6473206d656e74696f6e656420696e2074686520636f6e8c677572 -6174696f6e208c6c65>-3.227 F -.2<6275>117 500.4 S 3.24<746e>.2 G .74 -<6f74206d656e74696f6e656420696e20746865>-3.24 F F2<486472496e666f>3.24 E -F1 .74<737472756374757265206861>3.24 F 1.04 -.15<76652064>-.2 H<6566>.15 -E .74<61756c742070726f63657373696e6720706572666f726d65643b20746861742069 -732c20746865>-.1 F 3.24<7961>-.15 G<7265>-3.24 E 1.375 -<616464656420756e6c65737320746865>117 512.4 R 3.875<7977>-.15 G 1.375 -<65726520696e20746865206d65737361676520616c7265616479>-3.875 F 6.375 -<2e53>-.65 G 1.374<65636f6e642c20746865>-6.375 F F2<486472496e666f>3.874 -E F1 1.374<737472756374757265206f6e6c792073706563698c6573>3.874 F .324< -636c69636865642070726f63657373696e673b206365727461696e206865616465727320 -6172652070726f636573736564207370656369616c6c7920627920616420686f6320636f -6465207265>117 524.4 R -.05<6761>-.15 G .325 -<72646c657373206f6620746865207374612d>.05 F .481 -<7475732073706563698c656420696e>117 536.4 R F2<486472496e666f>2.981 E F1 -5.481<2e46>C .481<6f722065>-5.631 F .481<78616d706c652c2074686520995365 -6e6465723a9a20616e64209946726f6d3a9a208c656c64732061726520616c>-.15 F --.1<7761>-.1 G .48<7973207363616e6e6564206f6e>.1 F<415250>117 550.4 Q -.751<414e4554206d61696c20746f2064657465726d696e65207468652073656e646572> --.92 F/F3 7/Times-Roman@0 SF<3234>-4 I F1 3.251<3b74>4 K .75<6869732069 -73207573656420746f20706572666f726d20746865209972657475726e20746f2073656e -6465729a2066756e632d>-3.251 F 2.976<74696f6e2e20546865>117 562.4 R .476< -9946726f6d3a9a20616e64209946756c6c2d4e616d653a9a208c656c6473206172652075 -73656420746f2064657465726d696e65207468652066756c6c206e616d65206f66207468 -652073656e646572206966>2.976 F<706f737369626c653b2074686973206973207374 -6f72656420696e20746865206d6163726f>117 574.4 Q F0<2478>2.5 E F1 -<616e64207573656420696e2061206e756d626572206f662077>2.5 E<6179732e>-.1 E -F0 2.5<362e332e322e205265737472696374696e67>102 598.4 R -<557365206f6620456d61696c>2.5 E F1 .15<4966206974206973206e656365737361 -727920746f207265737472696374206d61696c207468726f75676820612072656c6179> -142 614.6 R 2.649<2c74>-.65 G<6865>-2.649 E F2 -.15<6368>2.649 G<6563> -.15 E<6b636f6d706174>-.2 E F1 .149 -<726f7574696e652063616e206265206d6f64698c65642e>2.649 F .163 -<5468697320726f7574696e652069732063616c6c656420666f722065>117 626.6 R --.15<7665>-.25 G .163<727920726563697069656e7420616464726573732e>.15 F -.163<49742072657475726e7320616e2065>5.163 F .163 -<7869742073746174757320696e6469636174696e672074686520737461747573206f66> --.15 F .895<746865206d6573736167652e>117 638.6 R .895 -<54686520737461747573>5.895 F/F4 9/Times-Roman@0 SF<45585f4f4b>3.395 E -F1 .895<616363657074732074686520616464726573732c>3.395 F F4 -<45585f54454d5046>3.395 E<41494c>-.666 E F1 .895 -<71756575657320746865206d65737361676520666f722061>3.395 F .263 -<6c6174657220747279>117 650.6 R 2.763<2c61>-.65 G .263 -<6e64206f746865722076>-2.763 F .264<616c7565732028636f6d6d6f6e6c79>-.25 -F F4<45585f554e>2.764 E -1.215<415641>-.315 G<494c41424c45>1.215 E F1 -2.764<2972>C .264<656a65637420746865206d6573736167652e>-2.764 F .264 -<497420697320757020746f>5.264 F F2 -.15<6368>2.764 G<6563>.15 E<6b2d>-.2 -E<636f6d706174>117 662.6 Q F1 2.477 -<746f207072696e7420616e206572726f72206d65737361676520287573696e67>4.978 -F F2<757372>4.977 E<657272>-.37 E F1 4.977<2969>C 4.977<6674>-4.977 G -2.477<6865206d6573736167652069732072656a65637465642e>-4.977 F -.15<466f> -7.477 G 4.977<7265>.15 G<78616d706c652c>-5.127 E .32 LW 76 672.2 72 -672.2 DL 80 672.2 76 672.2 DL 84 672.2 80 672.2 DL 88 672.2 84 672.2 DL -92 672.2 88 672.2 DL 96 672.2 92 672.2 DL 100 672.2 96 672.2 DL 104 -672.2 100 672.2 DL 108 672.2 104 672.2 DL 112 672.2 108 672.2 DL 116 -672.2 112 672.2 DL 120 672.2 116 672.2 DL 124 672.2 120 672.2 DL 128 -672.2 124 672.2 DL 132 672.2 128 672.2 DL 136 672.2 132 672.2 DL 140 -672.2 136 672.2 DL 144 672.2 140 672.2 DL 148 672.2 144 672.2 DL 152 -672.2 148 672.2 DL 156 672.2 152 672.2 DL 160 672.2 156 672.2 DL 164 -672.2 160 672.2 DL 168 672.2 164 672.2 DL 172 672.2 168 672.2 DL 176 -672.2 172 672.2 DL 180 672.2 176 672.2 DL 184 672.2 180 672.2 DL 188 -672.2 184 672.2 DL 192 672.2 188 672.2 DL 196 672.2 192 672.2 DL 200 -672.2 196 672.2 DL 204 672.2 200 672.2 DL 208 672.2 204 672.2 DL 212 -672.2 208 672.2 DL 216 672.2 212 672.2 DL/F5 5/Times-Roman@0 SF<3234> -93.6 682.6 Q/F6 8/Times-Roman@0 SF<41637475616c6c79>3.2 I 2.631<2c74> --.52 G .631<686973206973206e6f206c6f6e676572207472756520696e20534d54503b -207468697320696e666f726d6174696f6e20697320636f6e7461696e656420696e207468 -6520656e>-2.631 F -.12<7665>-.32 G 2.632<6c6f70652e20546865>.12 F .632 -<6f6c64657220415250>2.632 F .632<414e45542070726f746f636f6c7320646964> --.736 F<6e6f7420636f6d706c6574656c792064697374696e677569736820656e>72 -695.4 Q -.12<7665>-.32 G<6c6f70652066726f6d20686561646572>.12 E<2e>-.44 -E 0 Cg EP +/F0 10/Times-Bold@0 SF 193.36(SMM:08-98 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF -.74(FA) +102 96 S(ST_PID_RECYCLE).74 E .542(Set this if your system can possibly\ + reuse the same pid in the same second of)188.4 108 R(time.)188.4 120 Q +37.22(SFS_TYPE The)102 136.2 R .517 +(mechanism that can be used to get \214le system capacity information.) +3.017 F(The)5.516 E -.25(va)188.4 148.2 S .214 +(lues can be one of SFS_UST).25 F 2.435 -1.11(AT \()-.93 H .215 +(use the ustat\(2\) syscall\), SFS_4ARGS \(use)1.11 F .415(the four ar) +188.4 160.2 R .415(gument statfs\(2\) syscall\), SFS_VFS \(use the tw) +-.18 F 2.915(oa)-.1 G -.18(rg)-2.915 G .415(ument statfs\(2\)).18 F .716 +(syscall including \), SFS_MOUNT \(use the tw)188.4 172.2 R +3.217(oa)-.1 G -.18(rg)-3.217 G .717(ument statfs\(2\)).18 F 4.32 +(syscall including \), SFS_ST)188.4 184.2 R -1.11(AT)-.93 G +4.32(FS \(use the tw)1.11 F 6.82(oa)-.1 G -.18(rg)-6.82 G(ument).18 E +1.108(statfs\(2\) syscall including \), SFS_ST)188.4 196.2 +R -1.11(AT)-.93 G 1.109(VFS \(use the tw)1.11 F 3.609(oa)-.1 G -.18(rg) +-3.609 G(u-).18 E 1.511(ment statfs\(2\) syscall including \), or SFS_NONE \(no w)188.4 208.2 R 1.511(ay to)-.1 F +(get this information\).)188.4 220.2 Q 40.57(LA_TYPE The)102 236.4 R +(load a)2.5 E -.15(ve)-.2 G(rage type.).15 E(Details are described belo) +5 E -.65(w.)-.25 G .342(The are se)102 252.6 R -.15(ve)-.25 G .342 +(ral b).15 F .342(uilt-in w)-.2 F .342(ays of computing the load a)-.1 F +-.15(ve)-.2 G(rage.).15 E/F2 10/Times-Italic@0 SF(Sendmail)5.342 E F1 +.343(tries to auto-con\214gure them)2.842 F .267 +(based on imperfect guesses; you can select one using the)102 264.6 R F2 +(cc)2.766 E F1(option)2.766 E F0(\255DLA_TYPE=)2.766 E F2(type)A F1 +2.766(,w)C(here)-2.766 E F2(type)2.766 E F1(is:)102 276.6 Q 48.91 +(LA_INT The)102 292.8 R -.1(ke)3.452 G .952(rnel stores the load a).1 F +-.15(ve)-.2 G .952(rage in the k).15 F .952 +(ernel as an array of long inte)-.1 F(gers.)-.15 E(The actual v)188.4 +304.8 Q(alues are scaled by a f)-.25 E(actor FSCALE \(def)-.1 E +(ault 256\).)-.1 E(LA_SHOR)102 321 Q 35.89(TT)-.6 G .794(he k)-35.89 F +.794(ernel stores the load a)-.1 F -.15(ve)-.2 G .794(rage in the k).15 +F .793(ernel as an array of short inte)-.1 F(gers.)-.15 E(The actual v) +188.4 333 Q(alues are scaled by a f)-.25 E(actor FSCALE \(def)-.1 E +(ault 256\).)-.1 E(LA_FLO)102 349.2 Q 37.03 -1.11(AT T)-.35 H .088(he k) +1.11 F .088(ernel stores the load a)-.1 F -.15(ve)-.2 G .089 +(rage in the k).15 F .089(ernel as an array of double precision)-.1 F +(\215oats.)188.4 361.2 Q(LA_MA)102 377.4 Q 35.97(CH Use)-.4 F(MA)2.5 E +(CH-style load a)-.4 E -.15(ve)-.2 G(rages.).15 E 39.45(LA_SUBR Call)102 +393.6 R(the)2.5 E F2 -.1(ge)2.5 G(tloadavg).1 E F1 +(routine to get the load a)2.5 E -.15(ve)-.2 G +(rage as an array of doubles.).15 E(LA_ZER)102 409.8 Q 42.36(OA)-.4 G +-.1(lwa)-42.36 G(ys return zero as the load a).1 E -.15(ve)-.2 G 2.5 +(rage. This).15 F(is the f)2.5 E(allback case.)-.1 E .494(If type)102 +426 R/F3 9/Times-Roman@0 SF(LA_INT)2.994 E F1(,)A F3(LA_SHOR)2.994 E(T) +-.54 E F1 2.994(,o)C(r)-2.994 E F3(LA_FLO)2.993 E -.999(AT)-.315 G F1 +.493(is speci\214ed, you may also need to specify)3.992 F F3(_P)2.993 E +-.999(AT)-.828 G(H_UNIX).999 E F1 .948 +(\(the path to your system binary\) and)102 438 R F3(LA_A)3.448 E(VENR) +-1.215 E(UN)-.36 E F1 .949(\(the name of the v)3.448 F .949 +(ariable containing the load)-.25 F -2.25 -.2(av e)102 450 T +(rage in the k).2 E(ernel; usually \231_a)-.1 E -.15(ve)-.2 G +(nrun\232 or \231a).15 E -.15(ve)-.2 G(nrun\232\).).15 E F0 2.5 +(6.3. Con\214guration)87 474 R(in sendmail/conf)2.5 E(.c)-.15 E F1 +(The follo)127 490.2 Q(wing changes can be made in conf.c.)-.25 E F0 2.5 +(6.3.1. Built-in)102 514.2 R(Header Semantics)2.5 E F1 1.248 +(Not all header semantics are de\214ned in the con\214guration \214le.) +142 530.4 R 1.247(Header lines that should)6.247 F .305(only be include\ +d by certain mailers \(as well as other more obscure semantics\) must b\ +e speci\214ed)117 542.4 R .047(in the)117 554.4 R F2(HdrInfo)2.547 E F1 +.047(table in)2.547 F F2(conf)2.547 E(.c)-.15 E F1 5.047(.T)C .046 +(his table contains the header name \(which should be in all lo)-5.047 F +(wer)-.25 E(case\) and a set of header control \215ags \(described belo) +117 566.4 Q(w\), The \215ags are:)-.25 E(H_A)117 582.6 Q 30.97 +(CHECK Normally)-.4 F .007 +(when the check is made to see if a header line is compatible with)2.507 +F 2.941(am)203.4 594.6 S(ailer)-2.941 E(,)-.4 E F2(sendmail)2.941 E F1 +.441(will not delete an e)2.941 F .441(xisting line.)-.15 F .44 +(If this \215ag is set,)5.441 F F2(send-)2.94 E(mail)203.4 606.6 Q F1 +.152(will delete e)2.652 F -.15(ve)-.25 G 2.652(ne).15 G .152 +(xisting header lines.)-2.802 F .152 +(That is, if this bit is set and the)5.152 F 1.425(mailer does not ha) +203.4 618.6 R 1.725 -.15(ve \215)-.2 H 1.425 +(ag bits set that intersect with the required mailer).15 F 2.204 +(\215ags in the header de\214nition in sendmail.cf, the header line is) +203.4 630.6 R F2(always)4.704 E F1(deleted.)203.4 642.6 Q 51.13 +(H_EOH If)117 658.8 R .206(this header \214eld is set, treat it lik) +2.706 F 2.706(eab)-.1 G .206(lank line, i.e., it will signal the end) +-2.706 F(of the header and the be)203.4 670.8 Q +(ginning of the message te)-.15 E(xt.)-.15 E 39.45(H_FORCE Add)117 687 R +2.038(this header entry e)4.538 F -.15(ve)-.25 G 4.538(ni).15 G 4.538 +(fo)-4.538 G 2.038(ne e)-4.538 F 2.039(xisted in the message before.) +-.15 F 2.039(If a)7.039 F 2.189(header entry does not ha)203.4 699 R +2.488 -.15(ve t)-.2 H 2.188(his bit set,).15 F F2(sendmail)4.688 E F1 +2.188(will not add another)4.688 F .62 +(header line if a header line of this name already e)203.4 711 R 3.12 +(xisted. This)-.15 F -.1(wo)3.12 G .62(uld nor).1 F(-)-.2 E +(mally be used to stamp the message by e)203.4 723 Q -.15(ve)-.25 G +(ryone who handled it.).15 E 0 Cg EP %%Page: 99 95 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d3939>195.86 E -/F1 10/Times-Italic@0 SF -.15<6368>117 96 S<6563>.15 E<6b636f6d706174> --.2 E/F2 10/Times-Roman@0 SF<636f756c6420726561643a>2.5 E/F3 9 -/Times-Roman@0 SF<696e74>157 111 Q<636865636b636f6d70617428746f2c206529> -157 121.8 Q<7265>175 132.6 Q<6769737465722041444452455353202a746f3b> --.135 E<7265>175 143.4 Q<67697374657220454e56454c4f5045202a653b>-.135 E -<7b>157 154.2 Q<7265>175 165 Q<676973746572205354>-.135 E<4142202a733b> --.837 E 2.25<733d73>175 186.6 S<7461622822707269>-2.25 E -.225<7661> --.225 G<7465222c2053545f4d41494c45522c2053545f46494e44293b>.225 E<696620 -287320213d204e554c4c2026262065ad3e655f66726f6d2e715f6d61696c657220213d20 -4c6f63616c4d61696c6572202626>175 197.4 Q -<746f2d3e715f6d61696c6572203d3d20732d3e735f6d61696c657229>184 208.2 Q -<7b>175 219 Q<75737265727228224e6f20707269>193 229.8 Q -.225<7661>-.225 -G<7465206e6574206d61696c20616c6c6f>.225 E -<776564207468726f7567682074686973206d616368696e6522293b>-.225 E -<72657475726e202845585f554e>193 240.6 Q -1.215<415641>-.315 G -<494c41424c45293b>1.215 E<7d>175 251.4 Q<696620284d736753697a65203e2035 -30303030202626206269746e736574284d5f4c4f43414c4d41494c45522c20746fad3e71 -5f6d61696c65722929>175 262.2 Q<7b>175 273 Q -<75737265727228224d65737361676520746f6f206c6172>193 283.8 Q -<676520666f72206e6f6e2d6c6f63616c2064656c69>-.162 E -.135<7665>-.225 G -<727922293b>.135 E<65ad3e655f8d616773207c3d2045465f4e4f52455455524e3b> -193 294.6 Q<72657475726e202845585f554e>193 305.4 Q -1.215<415641>-.315 G -<494c41424c45293b>1.215 E<7d>175 316.2 Q<72657475726e202845585f4f4b293b> -175 327 Q<7d>157 337.8 Q F2 .969<546869732077>117 354 R .969<6f756c6420 -72656a656374206d657373616765732067726561746572207468616e2035303030302062 -7974657320756e6c65737320746865>-.1 F 3.469<7977>-.15 G .97 -<657265206c6f63616c2e>-3.469 F<546865>5.97 E F1<45465f4e4f52452d>3.47 E -<5455524e>117 366 Q F2 .652<8d61672063616e2062652073657420696e>3.152 F -F1<65>3.152 E/F4 10/Symbol SFA F1<655f8d61>A<6773>-.1 E F2 .651<746f -207375707072657373207468652072657475726e206f66207468652061637475616c2062 -6f6479206f6620746865206d65737361676520696e>3.152 F .655 -<746865206572726f722072657475726e2e>117 378 R .655<5468652061637475616c -20757365206f66207468697320726f7574696e6520697320686967686c7920646570656e -64656e74206f6e2074686520696d706c656d656e746174696f6e2c20616e64>5.655 F -<7573652073686f756c64206265206c696d697465642e>117 390 Q F0 2.5 -<362e332e332e204e6577>102 414 R -<4461746162617365204d617020436c6173736573>2.5 E F2<4e65>142 430.2 Q -2.876<776b>-.25 G .676 -.15<6579206d>-2.976 H .375<6170732063616e206265 -206164646564206279206372656174696e67206120636c61737320696e697469616c697a -6174696f6e2066756e6374696f6e20616e642061206c6f6f6b75702066756e632d>.15 F -2.5<74696f6e2e205468657365>117 442.2 R -<617265207468656e20616464656420746f2074686520726f7574696e65>2.5 E F1 -<73657475706d6170732e>2.5 E F2<54686520696e697469616c697a6174696f6e2066 -756e6374696f6e2069732063616c6c6564206173>142 458.4 Q F1<787878>157 474.6 -Q F2<5f6d61705f696e6974284d4150202a6d61702c2063686172202a6172>A<677329> --.18 E<546865>117 490.8 Q F1<6d6170>3.279 E F2 .779 -<697320616e20696e7465726e616c2064617461207374727563747572652e>3.279 F -<546865>5.779 E F1<6172>3.279 E<6773>-.37 E F2 .78<6973206120706f696e74 -657220746f2074686520706f7274696f6e206f662074686520636f6e8c6775726174696f -6e>3.279 F .397<8c6c65206c696e6520666f6c6c6f>117 502.8 R .396<77696e6720 -746865206d617020636c617373206e616d653b208d61677320616e64208c6c656e616d65 -732063616e2062652065>-.25 F .396 -<78747261637465642066726f6d2074686973206c696e652e>-.15 F<546865>5.396 E -<696e697469616c697a6174696f6e2066756e6374696f6e206d7573742072657475726e> -117 514.8 Q F3<74727565>2.5 E F2 -<6966206974207375636365737366756c6c79206f70656e656420746865206d61702c> -2.5 E F3 -.09<6661>2.5 G<6c7365>.09 E F2<6f74686572776973652e>2.5 E -<546865206c6f6f6b75702066756e6374696f6e2069732063616c6c6564206173>142 -531 Q F1<787878>157 547.2 Q F2 -<5f6d61705f6c6f6f6b7570284d4150202a6d61702c20636861722062>A -<75665b5d2c2063686172202a2a61>-.2 E 1.3 -.65<762c2069>-.2 H -<6e74202a737461747029>.65 E<546865>117 563.4 Q F1<6d6170>2.772 E F2 .272 -<64658c6e657320746865206d617020696e7465726e616c6c79>2.772 F 5.273<2e54> --.65 G<6865>-5.273 E F1 -.2<6275>2.773 G<66>.2 E F2 .273 -<6861732074686520696e707574206b>2.773 F -.15<6579>-.1 G 5.273<2e54>-.5 G -.273<686973206d61792062652028616e64206f6674656e206973292075736564>-5.273 -F<646573747275637469>117 575.4 Q -.15<7665>-.25 G<6c79>.15 E 5.152<2e54> --.65 G<6865>-5.152 E F1<6176>2.652 E F2 .151 -<69732061206c697374206f66206172>2.652 F .151 -<67756d656e74732070617373656420696e2066726f6d20746865207265>-.18 F .151 -<7772697465206c696e652e>-.25 F .151 -<546865206c6f6f6b75702066756e6374696f6e>5.151 F .322 -<73686f756c642072657475726e206120706f696e74657220746f20746865206e65>117 -587.4 R 2.822<7776>-.25 G 2.822<616c75652e204966>-3.072 F .322 -<746865206d6170206c6f6f6b75702066>2.822 F<61696c732c>-.1 E F1 -<2a7374617470>2.822 E F2 .322 -<73686f756c642062652073657420746f20616e2065>2.822 F<786974>-.15 E .302 -<73746174757320636f64653b20696e20706172746963756c6172>117 599.4 R 2.802 -<2c69>-.4 G 2.802<7473>-2.802 G .302<686f756c642062652073657420746f> --2.802 F F3<45585f54454d5046>2.802 E<41494c>-.666 E F2 .302 -<6966207265636f>2.802 F -.15<7665>-.15 G .301 -<727920697320746f20626520617474656d7074656420627920746865>.15 F -<686967686572206c65>117 611.4 Q -.15<7665>-.25 G 2.5<6c63>.15 G -<6f64652e>-2.5 E F0 2.5<362e332e342e205175657565696e67>102 635.4 R -<46756e6374696f6e>2.5 E F2 .782<54686520726f7574696e65>142 651.6 R F1 -<73686f756c647175657565>3.282 E F2 .783<69732063616c6c656420746f20646563 -6964652069662061206d6573736167652073686f756c6420626520717565756564206f72 -2070726f636573736564>3.283 F<696d6d6564696174656c79>117 663.6 Q 6.619 -<2e54>-.65 G 1.618<79706963616c6c79207468697320636f6d706172657320746865 -206d657373616765207072696f7269747920746f207468652063757272656e74206c6f61 -642061>-7.419 F -.15<7665>-.2 G 4.118<726167652e20546865>.15 F<646566> -117 675.6 Q<61756c742064658c6e6974696f6e2069733a>-.1 E 0 Cg EP +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-99)195.86 E/F1 10/Times-Roman@0 SF(H_TRA)117 96 Q 39.3(CE If)-.4 +F 1.044(set, this is a timestamp \(trace\) \214eld.)3.544 F 1.043 +(If the number of trace \214elds in a)6.043 F .705(message e)203.4 108 R +.705(xceeds a preset amount the message is returned on the assump-)-.15 +F(tion that it has an aliasing loop.)203.4 120 Q 46.67(H_RCPT If)117 +136.2 R .332(set, this \214eld contains recipient addresses.)2.833 F +.332(This is used by the)5.332 F F02.832 E F1 .332(\215ag to)2.832 +F 1.349(determine who to send to when it is collecting recipients from \ +the mes-)203.4 148.2 R(sage.)203.4 160.2 Q(H_FR)117 176.4 Q 43.74 +(OM This)-.4 F 1.673 +(\215ag indicates that this \214eld speci\214es a sender)4.174 F 6.673 +(.T)-.55 G 1.673(he order of these)-6.673 F .898(\214elds in the)203.4 +188.4 R/F2 10/Times-Italic@0 SF(HdrInfo)3.398 E F1 .898 +(table speci\214es)3.398 F F2(sendmail)3.398 E F1 1.998 -.55('s p)D .898 +(reference for which \214eld).55 F(to return error messages to.)203.4 +200.4 Q(H_ERR)117 216.6 Q(ORST)-.4 E 22.53(OA)-.18 G +(ddresses in this header should recei)-22.53 E .3 -.15(ve e)-.25 H +(rror messages.).15 E 52.79(H_CTE This)117 232.8 R +(header is a Content-T)2.5 E(ransfer)-.35 E(-Encoding header)-.2 E(.) +-.55 E 40.01(H_CTYPE This)117 249 R(header is a Content-T)2.5 E +(ype header)-.8 E(.)-.55 E 51.67(H_BCC Strip)117 265.2 R(the v)2.5 E +(alue from the header \(for Bcc:\).)-.25 E(Let')117 281.4 Q 2.5(sl)-.55 +G(ook at a sample)-2.5 E F2(HdrInfo)2.5 E F1(speci\214cation:)2.5 E +(struct hdrinfo)157 297.6 Q(HdrInfo[] =)84.6 E({)157 309.6 Q +(/* originator \214elds, most to least signi\214cant)189.5 321.6 Q(*/)5 +E 52.29("resent-sender", H_FR)177 333.6 R(OM,)-.4 E 58.95 +("resent-from", H_FR)177 345.6 R(OM,)-.4 E 79.5("sender", H_FR)177 357.6 +R(OM,)-.4 E 86.16("from", H_FR)177 369.6 R(OM,)-.4 E 66.72 +("full-name", H_A)177 381.6 R(CHECK,)-.4 E 71.17("errors-to", H_FR)177 +393.6 R -1.667(OM | H_ERR)-.4 F(ORST)-.4 E(O,)-.18 E +(/* destination \214elds */)189.5 405.6 Q 97.82("to", H_RCPT)177 417.6 R +(,)-.74 E 70.61("resent-to", H_RCPT)177 429.6 R(,)-.74 E 96.72 +("cc", H_RCPT)177 441.6 R(,)-.74 E 91.72("bcc", H_RCPT)177 453.6 R .833 +(|H).833 G(_BCC,)-.833 E(/* message identi\214cation and control */) +189.5 465.6 Q 71.72("message", H_EOH,)177 477.6 R("te)177 489.6 Q 90.75 +(xt", H_EOH,)-.15 F(/* trace \214elds */)189.5 501.6 Q("recei)177 513.6 +Q -.15(ve)-.25 G 72.13(d", H_TRA).15 F -1.667(CE | H_FORCE,)-.4 F +(/* miscellaneous \214elds */)189.5 525.6 Q("content-transfer)177 537.6 +Q 2.5(-encoding", H_CTE,)-.2 F 55.61("content-type", H_CTYPE,)177 549.6 +R 87.1(NULL, 0,)177 573.6 R(};)157 585.6 Q 2.435 +(This structure indicates that the \231T)117 601.8 R 2.435 +(o:\232, \231Resent-T)-.8 F 2.435 +(o:\232, and \231Cc:\232 \214elds all specify recipient)-.8 F 3.161 +(addresses. An)117 613.8 R 3.161<7999>-.15 G .662(Full-Name:\232 \214el\ +d will be deleted unless the required mailer \215ag \(indicated in) +-3.161 F .246(the con\214guration \214le\) is speci\214ed.)117 625.8 R +.245(The \231Message:\232 and \231T)5.246 F -.15(ex)-.7 G .245 +(t:\232 \214elds will terminate the header;).15 F 1.936 +(these are used by random dissenters around the netw)117 637.8 R 1.936 +(ork w)-.1 F 4.436(orld. The)-.1 F(\231Recei)4.436 E -.15(ve)-.25 G +1.937(d:\232 \214eld will).15 F(al)117 649.8 Q -.1(wa)-.1 G +(ys be added, and can be used to trace messages.).1 E .446 +(There are a number of important points here.)142 666 R .445 +(First, header \214elds are not added automati-)5.446 F .656 +(cally just because the)117 678 R 3.156(ya)-.15 G .656(re in the)-3.156 +F F2(HdrInfo)3.157 E F1 .657(structure; the)3.157 F 3.157(ym)-.15 G .657 +(ust be speci\214ed in the con\214guration)-3.157 F .728 +(\214le in order to be added to the message.)117 690 R(An)5.727 E 3.227 +(yh)-.15 G .727(eader \214elds mentioned in the con\214guration \214le) +-3.227 F -.2(bu)117 702 S 3.24(tn).2 G .74(ot mentioned in the)-3.24 F +F2(HdrInfo)3.24 E F1 .74(structure ha)3.24 F 1.04 -.15(ve d)-.2 H(ef).15 +E .74(ault processing performed; that is, the)-.1 F 3.24(ya)-.15 G(re) +-3.24 E 1.375(added unless the)117 714 R 3.875(yw)-.15 G 1.375 +(ere in the message already)-3.875 F 6.375(.S)-.65 G 1.374(econd, the) +-6.375 F F2(HdrInfo)3.874 E F1 1.374(structure only speci\214es)3.874 F +0 Cg EP %%Page: 100 96 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 188.36<534d4d3a30382d3130302053656e646d61696c>72 -60 R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465> -2.5 E/F1 10/Times-Roman@0 SF<626f6f6c>157 96 Q -<73686f756c647175657565287072692c206374696d6529>157 108 Q -<6c6f6e67207072693b>175 120 Q<74696d655f74206374696d653b>175 132 Q<7b> -157 144 Q<6966202843757272656e744c41203c2051756575654c4129>175 156 Q -<72657475726e2066>193 168 Q<616c73653b>-.1 E -<72657475726e2028707269203e2028517565756546>175 180 Q<6163746f72202f2028 -43757272656e744c4120ad2051756575654c41202b20312929293b>-.15 E<7d>157 192 -Q 2.062<4966207468652063757272656e74206c6f61642061>117 208.2 R -.15 -<7665>-.2 G 2.062<726167652028676c6f62616c2076>.15 F<61726961626c65>-.25 -E/F2 10/Times-Italic@0 SF<43757272>4.562 E<656e744c41>-.37 E F1 4.562 -<2c77>C 2.062 -<6869636820697320736574206265666f726520746869732066756e6374696f6e206973> --4.562 F 1.058<63616c6c656429206973206c657373207468616e20746865206c6f> -117 220.2 R 3.558<7774>-.25 G 1.058<68726573686f6c64206c6f61642061> --3.558 F -.15<7665>-.2 G 1.058<7261676520286f7074696f6e>.15 F F0<78> -3.557 E F1 3.557<2c76>C<61726961626c65>-3.807 E F2<51756575654c41>3.557 -E F1<292c>A F2<73686f756c647175657565>3.557 E F1<72657475726e73>117 -232.2 Q/F3 9/Times-Roman@0 SF -.09<6661>3.248 G<6c7365>.09 E F1 .748 -<696d6d6564696174656c792028746861742069732c2069742073686f756c64>3.248 F -F2<6e6f74>3.248 E F1 3.249<7175657565292e204966>3.249 F .749 -<7468652063757272656e74206c6f61642061>3.249 F -.15<7665>-.2 G .749 -<726167652065>.15 F .749<78636565647320746865>-.15 F 1.419 -<68696768207468726573686f6c64206c6f61642061>117 244.2 R -.15<7665>-.2 G -1.419<7261676520286f7074696f6e>.15 F F0<58>3.919 E F1 3.919<2c76>C -<61726961626c65>-4.169 E F2<5265667573654c41>3.919 E F1<292c>A F2 -<73686f756c647175657565>3.918 E F1<72657475726e73>3.918 E F3<74727565> -3.918 E F1<696d6d6564692d>3.918 E<6174656c79>117 256.2 Q 7.125<2e4f>-.65 -G 2.125<74686572776973652c20697420636f6d7075746573207468652066756e637469 -6f6e206261736564206f6e20746865206d657373616765207072696f72697479>-7.125 -F 4.626<2c74>-.65 G 2.126<68652071756575652066>-4.626 F<6163746f72>-.1 E -<286f7074696f6e>117 268.2 Q F0<71>2.5 E F1 2.5<2c67>C<6c6f62616c2076> --2.5 E<61726961626c65>-.25 E F2<517565756546>2.5 E<6163746f72>-.75 E F1< -292c20616e64207468652063757272656e7420616e64207468726573686f6c64206c6f61 -642061>A -.15<7665>-.2 G<72616765732e>.15 E 1.067 -<416e20696d706c656d656e746174696f6e2077697368696e6720746f2074616b>142 -284.4 R 3.567<6574>-.1 G 1.066<68652061637475616c20616765206f6620746865 -206d65737361676520696e746f206163636f756e742063616e20616c736f>-3.567 F -1.41<75736520746865>117 296.4 R F2<6374696d65>3.91 E F1 -<706172616d65746572>3.91 E 3.91<2c77>-.4 G 1.41 -<68696368206973207468652074696d65207468617420746865206d6573736167652077> --3.91 F 1.41<6173208c727374207375626d697474656420746f>-.1 F F2 -<73656e646d61696c>3.91 E F1<2e>A .929<4e6f7465207468617420746865>117 -308.4 R F2<707269>3.428 E F1 .928<706172616d6574657220697320616c72656164 -7920776569676874656420627920746865206e756d626572206f662074696d6573207468 -65206d65737361676520686173206265656e>3.428 F .395 -<74726965642028616c74686f75676820746869732074656e647320746f206c6f>117 -320.4 R .395<77657220746865207072696f72697479206f6620746865206d65737361 -676520776974682074696d65293b207468652065>-.25 F .395 -<78706563746174696f6e2069732074686174>-.15 F<746865>117 332.4 Q F2 -<6374696d65>2.674 E F1 -.1<776f>2.674 G .174<756c6420626520757365642061 -7320616e209965736361706520636c617573659a20746f20656e73757265207468617420 -6d65737361676573206172652065>.1 F -.15<7665>-.25 G .174 -<6e7475616c6c792070726f6365737365642e>.15 F F0 2.5 -<362e332e352e205265667573696e67>102 356.4 R -<496e636f6d696e6720534d545020436f6e6e656374696f6e73>2.5 E F1 2.062 -<5468652066756e6374696f6e>142 372.6 R F2 -.37<7265>4.562 G -<66757365636f6e6e656374696f6e73>.37 E F1<72657475726e73>4.562 E F3 -<74727565>4.562 E F1 2.063<696620696e636f6d696e6720534d545020636f6e6e65 -6374696f6e732073686f756c64206265>4.562 F 3.564<726566757365642e20546865> -117 384.6 R 1.063 -<63757272656e7420696d706c656d656e746174696f6e2069732062617365642065> -3.563 F<78636c757369>-.15 E -.15<7665>-.25 G 1.063 -<6c79206f6e207468652063757272656e74206c6f61642061>.15 F -.15<7665>-.2 G -1.063<7261676520616e6420746865>.15 F<726566757365206c6f61642061>117 -396.6 Q -.15<7665>-.2 G<72616765206f7074696f6e20286f7074696f6e>.15 E F0 -<58>2.5 E F1 2.5<2c67>C<6c6f62616c2076>-2.5 E<61726961626c65>-.25 E F2 -<5265667573654c41>2.5 E F1<293a>A<626f6f6c>157 412.8 Q -<726566757365636f6e6e656374696f6e732829>157 424.8 Q<7b>157 436.8 Q<7265 -7475726e20285265667573654c41203e20302026262043757272656e744c41203e3d2052 -65667573654c41293b>175 448.8 Q<7d>157 460.8 Q 2.5<416d>117 477 S -<6f726520636c65>-2.5 E -.15<7665>-.25 G 2.5<7269>.15 G<6d706c656d656e74 -6174696f6e20636f756c64206c6f6f6b206174206d6f72652073797374656d207265736f -75726365732e>-2.5 E F0 2.5<362e332e362e204c6f6164>102 501 R -.6 -1 -<41762065>2.5 H<7261676520436f6d7075746174696f6e>1 E F1 .243 -<54686520726f7574696e65>142 517.2 R F2 -.1<6765>2.743 G<746c61>.1 E F1 -.243<72657475726e73207468652063757272656e74206c6f61642061>2.743 F -.15 -<7665>-.2 G .243<7261676520286173206120726f756e64656420696e7465>.15 F -2.743<676572292e20546865>-.15 F<64697374726962>2.744 E<7574696f6e>-.2 E -1.157<696e636c75646573207365>117 529.2 R -.15<7665>-.25 G 1.157 -<72616c20706f737369626c6520696d706c656d656e746174696f6e732e>.15 F 1.157 -<496620796f752061726520706f7274696e6720746f2061206e65>6.157 F 3.657 -<7765>-.25 G -.4<6e76>-3.657 G 1.157<69726f6e6d656e7420796f75206d6179>.4 -F<6e65656420746f2061646420736f6d65206e65>117 543.2 Q 2.5<7774>-.25 G -<7765616b732e>-2.5 E/F4 7/Times-Roman@0 SF<3235>-4 I F0 2.5 -<362e342e20436f6e8c6775726174696f6e>87 567.2 R -<696e2073656e646d61696c2f6461656d6f6e2e63>2.5 E F1 .127<546865208c6c65> -127 583.4 R F2<73656e646d61696c2f6461656d6f6e2e63>2.627 E F1 .128<636f6e -7461696e732061206e756d626572206f6620726f7574696e657320746861742061726520 -646570656e64656e74206f6e20746865206c6f63616c206e65742d>2.628 F -.1<776f> -102 595.4 S<726b696e6720656e>.1 E 2.5<7669726f6e6d656e742e20546865>-.4 F --.15<7665>2.5 G -<7273696f6e20737570706c69656420617373756d657320796f75206861>.15 E .3 --.15<76652042>-.2 H<5344207374796c6520736f636b>.15 E<6574732e>-.1 E 2.16 -<496e20707265>127 611.6 R 2.16<76696f75732072656c65617365732c2077652072 -65636f6d6d656e646564207468617420796f75206d6f646966792074686520726f757469 -6e65>-.25 F F2<6d6170686f73746e616d65>4.66 E F1 2.16<696620796f75>4.66 F --.1<7761>102 623.6 S 1.918<6e74656420746f2067656e6572616c697a65>.1 F F0 -<245b>4.418 E F1<2e2e2e>4.418 E F0<245d>4.418 E F1 4.418 -<6c6f6f6b7570732e2057>4.418 F 4.418<656e>-.8 G 2.418 -.25<6f772072> --4.418 H 1.918 -<65636f6d6d656e64207468617420796f75206372656174652061206e65>.25 F 4.419 -<776b>-.25 G -.15<6579>-4.519 G 1.919<6564206d6170>.15 F -<696e73746561642e>102 635.6 Q .32 LW 76 678.8 72 678.8 DL 80 678.8 76 -678.8 DL 84 678.8 80 678.8 DL 88 678.8 84 678.8 DL 92 678.8 88 678.8 DL -96 678.8 92 678.8 DL 100 678.8 96 678.8 DL 104 678.8 100 678.8 DL 108 -678.8 104 678.8 DL 112 678.8 108 678.8 DL 116 678.8 112 678.8 DL 120 -678.8 116 678.8 DL 124 678.8 120 678.8 DL 128 678.8 124 678.8 DL 132 -678.8 128 678.8 DL 136 678.8 132 678.8 DL 140 678.8 136 678.8 DL 144 -678.8 140 678.8 DL 148 678.8 144 678.8 DL 152 678.8 148 678.8 DL 156 -678.8 152 678.8 DL 160 678.8 156 678.8 DL 164 678.8 160 678.8 DL 168 -678.8 164 678.8 DL 172 678.8 168 678.8 DL 176 678.8 172 678.8 DL 180 -678.8 176 678.8 DL 184 678.8 180 678.8 DL 188 678.8 184 678.8 DL 192 -678.8 188 678.8 DL 196 678.8 192 678.8 DL 200 678.8 196 678.8 DL 204 -678.8 200 678.8 DL 208 678.8 204 678.8 DL 212 678.8 208 678.8 DL 216 -678.8 212 678.8 DL/F5 5/Times-Roman@0 SF<3235>93.6 689.2 Q/F6 8 -/Times-Roman@0 SF<496620796f7520646f2c20706c656173652073656e642075706461 -74657320746f2073656e646d61696c4053656e646d61696c2e4f52472e>3.2 I 0 Cg EP +/F0 10/Times-Bold@0 SF 188.36(SMM:08-100 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF .324(cli\ +ched processing; certain headers are processed specially by ad hoc code\ + re)117 96 R -.05(ga)-.15 G .325(rdless of the sta-).05 F .481 +(tus speci\214ed in)117 108 R/F2 10/Times-Italic@0 SF(HdrInfo)2.981 E F1 +5.481(.F)C .481(or e)-5.631 F .481 +(xample, the \231Sender:\232 and \231From:\232 \214elds are al)-.15 F +-.1(wa)-.1 G .48(ys scanned on).1 F(ARP)117 122 Q .751 +(ANET mail to determine the sender)-.92 F/F3 7/Times-Roman@0 SF(24)-4 I +F1 3.251(;t)4 K .75 +(his is used to perform the \231return to sender\232 func-)-3.251 F +2.976(tion. The)117 134 R .476(\231From:\232 and \231Full-Name:\232 \ +\214elds are used to determine the full name of the sender if)2.976 F +(possible; this is stored in the macro)117 146 Q F0($x)2.5 E F1 +(and used in a number of w)2.5 E(ays.)-.1 E F0 2.5(6.3.2. Restricting) +102 170 R(Use of Email)2.5 E F1 .15 +(If it is necessary to restrict mail through a relay)142 186.2 R 2.649 +(,t)-.65 G(he)-2.649 E F2 -.15(ch)2.649 G(ec).15 E(kcompat)-.2 E F1 .149 +(routine can be modi\214ed.)2.649 F .163(This routine is called for e) +117 198.2 R -.15(ve)-.25 G .163(ry recipient address.).15 F .163 +(It returns an e)5.163 F .163(xit status indicating the status of)-.15 F +.895(the message.)117 210.2 R .895(The status)5.895 F/F4 9/Times-Roman@0 +SF(EX_OK)3.395 E F1 .895(accepts the address,)3.395 F F4(EX_TEMPF)3.395 +E(AIL)-.666 E F1 .895(queues the message for a)3.395 F .263(later try) +117 222.2 R 2.763(,a)-.65 G .263(nd other v)-2.763 F .264 +(alues \(commonly)-.25 F F4(EX_UN)2.764 E -1.215(AVA)-.315 G(ILABLE) +1.215 E F1 2.764(\)r)C .264(eject the message.)-2.764 F .264 +(It is up to)5.264 F F2 -.15(ch)2.764 G(ec).15 E(k-)-.2 E(compat)117 +234.2 Q F1 .43(to print an error message \(using)2.93 F F2(usr)2.929 E +(err)-.37 E F1 2.929(\)i)C 2.929(ft)-2.929 G .429 +(he message is rejected.)-2.929 F -.15(Fo)5.429 G 2.929(re).15 G +(xample,)-3.079 E F2 -.15(ch)2.929 G(ec).15 E(k-)-.2 E(compat)117 246.2 +Q F1(could read:)2.5 E F4(int)157 261.2 Q(checkcompat\(to, e\))157 272 Q +(re)175 282.8 Q(gister ADDRESS *to;)-.135 E(re)175 293.6 Q +(gister ENVELOPE *e;)-.135 E({)157 304.4 Q(re)175 315.2 Q(gister ST) +-.135 E(AB *s;)-.837 E 2.25(s=s)175 336.8 S(tab\("pri)-2.25 E -.225(va) +-.225 G(te", ST_MAILER, ST_FIND\);).225 E +(if \(s != NULL && e\255>e_from.q_mailer != LocalMailer &&)175 347.6 Q +(to->q_mailer == s->s_mailer\))184 358.4 Q({)175 369.2 Q +(usrerr\("No pri)193 380 Q -.225(va)-.225 G(te net mail allo).225 E +(wed through this machine"\);)-.225 E(return \(EX_UN)193 390.8 Q -1.215 +(AVA)-.315 G(ILABLE\);)1.215 E(})175 401.6 Q +(if \(MsgSize > 50000 && bitnset\(M_LOCALMAILER, to\255>q_mailer\)\))175 +412.4 Q({)175 423.2 Q(usrerr\("Message too lar)193 434 Q +(ge for non-local deli)-.162 E -.135(ve)-.225 G(ry"\);).135 E +(e\255>e_\215ags |= EF_NORETURN;)193 444.8 Q(return \(EX_UN)193 455.6 Q +-1.215(AVA)-.315 G(ILABLE\);)1.215 E(})175 466.4 Q(return \(EX_OK\);)175 +477.2 Q(})157 488 Q F1 .969(This w)117 504.2 R .969 +(ould reject messages greater than 50000 bytes unless the)-.1 F 3.469 +(yw)-.15 G .97(ere local.)-3.469 F(The)5.97 E F2(EF_NORE-)3.47 E(TURN) +117 516.2 Q F1 .652(\215ag can be set in)3.152 F F2(e)3.152 E/F5 10 +/Symbol SFA F2(e_\215a)A(gs)-.1 E F1 .651 +(to suppress the return of the actual body of the message in)3.152 F +.655(the error return.)117 528.2 R .655(The actual use of this routine \ +is highly dependent on the implementation, and)5.655 F +(use should be limited.)117 540.2 Q F0 2.5(6.3.3. New)102 564.2 R +(Database Map Classes)2.5 E F1(Ne)142 580.4 Q 2.876(wk)-.25 G .676 -.15 +(ey m)-2.976 H .375(aps can be added by creating a class initialization\ + function and a lookup func-).15 F 2.5(tion. These)117 592.4 R +(are then added to the routine)2.5 E F2(setupmaps.)2.5 E F1 +(The initialization function is called as)142 608.6 Q F2(xxx)157 624.8 Q +F1(_map_init\(MAP *map, char *ar)A(gs\))-.18 E(The)117 641 Q F2(map) +3.279 E F1 .779(is an internal data structure.)3.279 F(The)5.779 E F2 +(ar)3.279 E(gs)-.37 E F1 .78 +(is a pointer to the portion of the con\214guration)3.279 F .397 +(\214le line follo)117 653 R .396 +(wing the map class name; \215ags and \214lenames can be e)-.25 F .396 +(xtracted from this line.)-.15 F(The)5.396 E +(initialization function must return)117 665 Q F4(true)2.5 E F1 +(if it successfully opened the map,)2.5 E F4 -.09(fa)2.5 G(lse).09 E F1 +(otherwise.)2.5 E .32 LW 76 674.6 72 674.6 DL 80 674.6 76 674.6 DL 84 +674.6 80 674.6 DL 88 674.6 84 674.6 DL 92 674.6 88 674.6 DL 96 674.6 92 +674.6 DL 100 674.6 96 674.6 DL 104 674.6 100 674.6 DL 108 674.6 104 +674.6 DL 112 674.6 108 674.6 DL 116 674.6 112 674.6 DL 120 674.6 116 +674.6 DL 124 674.6 120 674.6 DL 128 674.6 124 674.6 DL 132 674.6 128 +674.6 DL 136 674.6 132 674.6 DL 140 674.6 136 674.6 DL 144 674.6 140 +674.6 DL 148 674.6 144 674.6 DL 152 674.6 148 674.6 DL 156 674.6 152 +674.6 DL 160 674.6 156 674.6 DL 164 674.6 160 674.6 DL 168 674.6 164 +674.6 DL 172 674.6 168 674.6 DL 176 674.6 172 674.6 DL 180 674.6 176 +674.6 DL 184 674.6 180 674.6 DL 188 674.6 184 674.6 DL 192 674.6 188 +674.6 DL 196 674.6 192 674.6 DL 200 674.6 196 674.6 DL 204 674.6 200 +674.6 DL 208 674.6 204 674.6 DL 212 674.6 208 674.6 DL 216 674.6 212 +674.6 DL/F6 5/Times-Roman@0 SF(24)93.6 685 Q/F7 8/Times-Roman@0 SF +(Actually)3.2 I 2.631(,t)-.52 G .631 +(his is no longer true in SMTP; this information is contained in the en) +-2.631 F -.12(ve)-.32 G 2.632(lope. The).12 F .632(older ARP)2.632 F +.632(ANET protocols did)-.736 F(not completely distinguish en)72 697.8 Q +-.12(ve)-.32 G(lope from header).12 E(.)-.44 E 0 Cg EP %%Page: 101 97 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d313031>190.86 E -2.5<362e352e204c44>87 96 R<4150>-.35 E/F1 10/Times-Roman@0 SF -<496e20746869732073656374696f6e20776520617373756d652074686174>127 112.2 -Q/F2 10/Times-Italic@0 SF<73656e646d61696c>2.5 E F1<686173206265656e2063 -6f6d70696c6564207769746820737570706f727420666f72204c44>2.5 E<4150>-.4 E -<2e>-1.11 E F0 2.5<362e352e312e204c44>102 136.2 R -<415020526563757273696f6e>-.35 E F1<4c44>142 152.4 Q .35 -<415020526563757273696f6e20616c6c6f>-.4 F .349<777320796f7520746f206164 -6420747970657320746f207468652073656172636820617474726962>-.25 F .349 -<75746573206f6e20616e204c44>-.2 F .349<4150206d61702073706563692d>-.4 F -2.5<8c636174696f6e2e20546865>117 164.4 R<73796e7461782069733a>2.5 E -117 180.6 Q F2 -.37<4154>2.5 G<54524942>.37 E<555445>-.1 E F1 -<5b3a>A F2<54595045>A F1<5b3a>A F2<4f424a454354434c415353>A F1<5b7c>A F2 -<4f424a454354434c415353>A F1<7c2e2e2e5d5d5d>A<546865206e65>142 196.8 Q -<77>-.25 E F2<54595045>2.5 E F1 2.5<7361>C<72653a>-2.5 E 26.17 -<4e4f524d414c2054686973>117 213 R<617474726962>3.578 E 1.078 -<75746520747970652073706563698c65732074686520617474726962>-.2 F 1.079 -<75746520746f2061646420746f2074686520726573756c747320737472696e672e>-.2 -F 1.079<54686973206973>6.079 F<74686520646566>189 225 Q<61756c742e>-.1 E -55.06<444e20416e>117 241.2 R 2.822<796d>-.15 G .322 -<61746368657320666f72207468697320617474726962>-2.822 F .322 -<757465206172652065>-.2 F .321<7870656374656420746f206861>-.15 F .621 --.15<766520612076>-.2 H .321 -<616c7565206f6620612066756c6c79207175616c698c6564>-.1 F 1.521 -<64697374696e67756973686564206e616d652e>189 253.2 R F2<73656e646d61696c> -6.521 E F1 1.521<77696c6c206c6f6f6b7570207468617420444e20616e6420617070 -6c792074686520617474726962>4.021 F<75746573>-.2 E<7265717565737465642074 -6f207468652072657475726e656420444e207265636f72642e>189 265.2 Q<46494c> -117 281.4 Q 36.53<54455220416e>-.92 F 2.653<796d>-.15 G .153 -<61746368657320666f72207468697320617474726962>-2.653 F .153 -<757465206172652065>-.2 F .153<7870656374656420746f206861>-.15 F .453 --.15<766520612076>-.2 H .153<616c7565206f6620616e204c44>-.1 F .152 -<415020736561726368>-.4 F<8c6c746572>189 293.4 Q<2e>-.55 E F2 -<73656e646d61696c>5.697 E F1 .698<77696c6c20706572666f726d2061206c6f6f6b -75702077697468207468652073616d6520706172616d657465727320617320746865206f -726967692d>3.197 F<6e616c207365617263682062>189 305.4 Q<7574207265706c61 -6365732074686520736561726368208c6c746572207769746820746865206f6e65207370 -6563698c656420686572652e>-.2 E 49.5<55524c20416e>117 321.6 R 2.87<796d> --.15 G .37<61746368657320666f72207468697320617474726962>-2.87 F .37 -<757465206172652065>-.2 F .37<7870656374656420746f206861>-.15 F .67 -.15 -<766520612076>-.2 H .37<616c7565206f6620616e204c44>-.1 F .37 -<41502055524c2e>-.4 F F2<73656e646d61696c>189 333.6 Q F1 1.947<77696c6c -20706572666f726d2061206c6f6f6b7570206f6620746861742055524c20616e64207573 -652074686520726573756c74732066726f6d20746865>4.446 F<617474726962>189 -345.6 Q .39<75746573206e616d656420696e20746861742055524c2e>-.2 F .389 -<4e6f746520686f>5.389 F<7765>-.25 E -.15<7665>-.25 G 2.889<7274>.15 G -.389<686174207468652073656172636820697320646f6e65207573696e6720746865> --2.889 F 2.622<63757272656e74204c44>189 357.6 R 2.622 -<415020636f6e6e656374696f6e2c207265>-.4 F -.05<6761>-.15 G 2.622<72646c -657373206f6620776861742069732073706563698c65642061732074686520736368656d -652c>.05 F<4c44>189 369.6 Q<415020686f73742c20616e64204c44>-.4 E -<415020706f727420696e20746865204c44>-.4 E<41502055524c2e>-.4 E<416e>117 -385.8 Q 2.5<7975>-.15 G<6e747970656420617474726962>-2.5 E -<757465732061726520636f6e73696465726564>-.2 E/F3 9/Times-Roman@0 SF -<4e4f524d414c>2.5 E F1<617474726962>2.5 E -<75746573206173206465736372696265642061626f>-.2 E -.15<7665>-.15 G<2e> -.15 E .91<546865206f7074696f6e616c>142 402 R F2<4f424a454354434c415353> -3.41 E F1 .91<287c2073657061726174656429206c69737420636f6e7461696e732074 -6865206f626a656374436c6173732076>3.41 F .91 -<616c75657320666f72207768696368>-.25 F 1.398<7468617420617474726962>117 -414 R 1.398<757465206170706c6965732e>-.2 F 1.399 -<496620746865206c697374206973206769>6.398 F -.15<7665>-.25 G 1.399 -<6e2c2074686520617474726962>.15 F 1.399<757465206e616d65642077696c6c206f -6e6c79206265207573656420696620746865204c44>-.2 F<4150>-.4 E 1.111<726563 -6f7264206265696e672072657475726e65642069732061206d656d626572206f66207468 -6174206f626a65637420636c6173732e>117 426 R 1.111 -<4e6f74652074686174206966207468657365206e65>6.111 F 3.611<7776>-.25 G -1.111<616c756520617474726962>-3.861 F<757465>-.2 E F2<54595045>117 438 Q -F1 2.936<7361>C .436<7265207573656420696e20616e20416c69617346696c65206f -7074696f6e2073657474696e672c2069742077696c6c206e65656420746f20626520646f -75626c652071756f74656420746f20707265>-2.936 F -.15<7665>-.25 G<6e74>.15 -E F2<73656e642d>2.937 E<6d61696c>117 450 Q F1 -<66726f6d206d697370617273696e672074686520636f6c6f6e732e>2.5 E .258 -<4e6f74652074686174204c44>142 466.2 R .257 -<415020726563757273696f6e20617474726962>-.4 F .257<75746573207768696368 -20646f206e6f7420756c74696d6174656c7920706f696e7420746f20616e204c44>-.2 F -.257<4150207265636f726420617265>-.4 F -<6e6f7420636f6e7369646572656420616e206572726f72>117 478.2 Q<2e>-.55 E F0 -2.5<362e352e312e312e204578616d706c65>117 502.2 R F1 .218<53696e63652065> -157 518.4 R .218 -<78616d706c657320757375616c6c792068656c7020636c6172696679>-.15 F 2.718 -<2c68>-.65 G .218<65726520697320616e2065>-2.718 F .218<78616d706c652077 -68696368207573657320616c6c20666f7572206f6620746865206e65>-.15 F<77>-.25 -E<74797065733a>132 530.4 Q 2.5<4f4c>172 546.6 S -.4<4441>-2.5 G -<50446566>.4 E<61756c74537065633d2d68206c6461702e65>-.1 E -<78616d706c652e636f6d202d622064633d65>-.15 E<78616d706c652c64633d636f6d> --.15 E -2.15 -.25<4b652078>172 570.6 T<616d706c65206c646170>.25 E -<2d7a2c>194.5 582.6 Q -<2d6b202826286f626a656374436c6173733d73656e646d61696c4d54>194.5 594.6 Q -<41416c6961734f626a656374292873656e646d61696c4d54>-.93 E<414b>-.93 E --.15<6579>-.25 G<3d25302929>.15 E<2d762073656e646d61696c4d54>194.5 606.6 -Q<41416c69617356>-.93 E<616c75652c6d61696c3a4e4f524d414c3a696e65744f72> --1.11 E<67506572736f6e2c>-.18 E -<756e697175654d656d6265723a444e3a67726f75704f66556e697175654e616d65732c> -202 618.6 Q<73656e646d61696c4d54>202 630.6 Q -<41416c6961735365617263683a46494c>-.93 E<5445523a73656e646d61696c4d54> --.92 E<41416c6961734f626a6563742c>-.93 E<73656e646d61696c4d54>202 642.6 -Q<41416c69617355524c3a55524c3a73656e646d61696c4d54>-.93 E -<41416c6961734f626a656374>-.93 E -<546861742064658c6e6974696f6e2073706563698c657320746861743a>157 663 Q 5 -<8341>137 679.2 S .952 -.15<6e792076>-5 H .652<616c756520696e2061>-.1 F -F3<73656e646d61696c4d54>3.152 E<41416c69617356>-.837 E<616c7565>-.999 E -F1<617474726962>3.152 E .651<7574652077696c6c20626520616464656420746f20 -74686520726573756c7420737472696e67207265>-.2 F -.05<6761>-.15 G<72642d> -.05 E<6c657373206f66206f626a65637420636c6173732e>145.5 691.2 Q 5<8354> -137 703.2 S<6865>-5 E F3<6d61696c>2.551 E F1<617474726962>2.551 E .051< -7574652077696c6c20626520616464656420746f2074686520726573756c742073747269 -6e6720696620746865204c44>-.2 F .052 -<4150207265636f72642069732061206d656d626572206f6620746865>-.4 F F3 -<696e65744f72>145.5 715.2 Q<67506572736f6e>-.162 E F1 -<6f626a65637420636c6173732e>2.5 E 0 Cg EP +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-101)190.86 E/F1 10/Times-Roman@0 SF +(The lookup function is called as)142 96 Q/F2 10/Times-Italic@0 SF(xxx) +157 112.2 Q F1(_map_lookup\(MAP *map, char b)A(uf[], char **a)-.2 E 1.3 +-.65(v, i)-.2 H(nt *statp\)).65 E(The)117 128.4 Q F2(map)2.772 E F1 .272 +(de\214nes the map internally)2.772 F 5.273(.T)-.65 G(he)-5.273 E F2 -.2 +(bu)2.773 G(f).2 E F1 .273(has the input k)2.773 F -.15(ey)-.1 G 5.273 +(.T)-.5 G .273(his may be \(and often is\) used)-5.273 F(destructi)117 +140.4 Q -.15(ve)-.25 G(ly).15 E 5.152(.T)-.65 G(he)-5.152 E F2(av)2.652 +E F1 .151(is a list of ar)2.652 F .151(guments passed in from the re) +-.18 F .151(write line.)-.25 F .151(The lookup function)5.151 F .322 +(should return a pointer to the ne)117 152.4 R 2.822(wv)-.25 G 2.822 +(alue. If)-3.072 F .322(the map lookup f)2.822 F(ails,)-.1 E F2(*statp) +2.822 E F1 .322(should be set to an e)2.822 F(xit)-.15 E .302 +(status code; in particular)117 164.4 R 2.802(,i)-.4 G 2.802(ts)-2.802 G +.302(hould be set to)-2.802 F/F3 9/Times-Roman@0 SF(EX_TEMPF)2.802 E +(AIL)-.666 E F1 .302(if reco)2.802 F -.15(ve)-.15 G .301 +(ry is to be attempted by the).15 F(higher le)117 176.4 Q -.15(ve)-.25 G +2.5(lc).15 G(ode.)-2.5 E F0 2.5(6.3.4. Queueing)102 200.4 R(Function)2.5 +E F1 .782(The routine)142 216.6 R F2(shouldqueue)3.282 E F1 .783 +(is called to decide if a message should be queued or processed)3.283 F +(immediately)117 228.6 Q 6.619(.T)-.65 G 1.618 +(ypically this compares the message priority to the current load a) +-7.419 F -.15(ve)-.2 G 4.118(rage. The).15 F(def)117 240.6 Q +(ault de\214nition is:)-.1 E(bool)157 256.8 Q(shouldqueue\(pri, ctime\)) +157 268.8 Q(long pri;)175 280.8 Q(time_t ctime;)175 292.8 Q({)157 304.8 +Q(if \(CurrentLA < QueueLA\))175 316.8 Q(return f)193 328.8 Q(alse;)-.1 +E(return \(pri > \(QueueF)175 340.8 Q +(actor / \(CurrentLA \255 QueueLA + 1\)\)\);)-.15 E(})157 352.8 Q 2.062 +(If the current load a)117 369 R -.15(ve)-.2 G 2.062(rage \(global v).15 +F(ariable)-.25 E F2(Curr)4.562 E(entLA)-.37 E F1 4.562(,w)C 2.062 +(hich is set before this function is)-4.562 F 1.058 +(called\) is less than the lo)117 381 R 3.558(wt)-.25 G 1.058 +(hreshold load a)-3.558 F -.15(ve)-.2 G 1.058(rage \(option).15 F F0(x) +3.557 E F1 3.557(,v)C(ariable)-3.807 E F2(QueueLA)3.557 E F1(\),)A F2 +(shouldqueue)3.557 E F1(returns)117 393 Q F3 -.09(fa)3.248 G(lse).09 E +F1 .748(immediately \(that is, it should)3.248 F F2(not)3.248 E F1 3.249 +(queue\). If)3.249 F .749(the current load a)3.249 F -.15(ve)-.2 G .749 +(rage e).15 F .749(xceeds the)-.15 F 1.419(high threshold load a)117 405 +R -.15(ve)-.2 G 1.419(rage \(option).15 F F0(X)3.919 E F1 3.919(,v)C +(ariable)-4.169 E F2(RefuseLA)3.919 E F1(\),)A F2(shouldqueue)3.918 E F1 +(returns)3.918 E F3(true)3.918 E F1(immedi-)3.918 E(ately)117 417 Q +7.125(.O)-.65 G 2.125 +(therwise, it computes the function based on the message priority)-7.125 +F 4.626(,t)-.65 G 2.126(he queue f)-4.626 F(actor)-.1 E(\(option)117 429 +Q F0(q)2.5 E F1 2.5(,g)C(lobal v)-2.5 E(ariable)-.25 E F2(QueueF)2.5 E +(actor)-.75 E F1(\), and the current and threshold load a)A -.15(ve)-.2 +G(rages.).15 E 1.067(An implementation wishing to tak)142 445.2 R 3.567 +(et)-.1 G 1.066(he actual age of the message into account can also) +-3.567 F 1.41(use the)117 457.2 R F2(ctime)3.91 E F1(parameter)3.91 E +3.91(,w)-.4 G 1.41(hich is the time that the message w)-3.91 F 1.41 +(as \214rst submitted to)-.1 F F2(sendmail)3.91 E F1(.)A .929 +(Note that the)117 469.2 R F2(pri)3.428 E F1 .928(parameter is already \ +weighted by the number of times the message has been)3.428 F .395 +(tried \(although this tends to lo)117 481.2 R .395 +(wer the priority of the message with time\); the e)-.25 F .395 +(xpectation is that)-.15 F(the)117 493.2 Q F2(ctime)2.674 E F1 -.1(wo) +2.674 G .174 +(uld be used as an \231escape clause\232 to ensure that messages are e) +.1 F -.15(ve)-.25 G .174(ntually processed.).15 F F0 2.5 +(6.3.5. Refusing)102 517.2 R(Incoming SMTP Connections)2.5 E F1 2.062 +(The function)142 533.4 R F2 -.37(re)4.562 G(fuseconnections).37 E F1 +(returns)4.562 E F3(true)4.562 E F1 2.063 +(if incoming SMTP connections should be)4.562 F 3.564(refused. The)117 +545.4 R 1.063(current implementation is based e)3.563 F(xclusi)-.15 E +-.15(ve)-.25 G 1.063(ly on the current load a).15 F -.15(ve)-.2 G 1.063 +(rage and the).15 F(refuse load a)117 557.4 Q -.15(ve)-.2 G +(rage option \(option).15 E F0(X)2.5 E F1 2.5(,g)C(lobal v)-2.5 E +(ariable)-.25 E F2(RefuseLA)2.5 E F1(\):)A(bool)157 573.6 Q +(refuseconnections\(\))157 585.6 Q({)157 597.6 Q +(return \(RefuseLA > 0 && CurrentLA >= RefuseLA\);)175 609.6 Q(})157 +621.6 Q 2.5(Am)117 637.8 S(ore cle)-2.5 E -.15(ve)-.25 G 2.5(ri).15 G +(mplementation could look at more system resources.)-2.5 E F0 2.5 +(6.3.6. Load)102 661.8 R -.6 -1(Av e)2.5 H(rage Computation)1 E F1 .243 +(The routine)142 678 R F2 -.1(ge)2.743 G(tla).1 E F1 .243 +(returns the current load a)2.743 F -.15(ve)-.2 G .243 +(rage \(as a rounded inte).15 F 2.743(ger\). The)-.15 F(distrib)2.744 E +(ution)-.2 E 1.157(includes se)117 690 R -.15(ve)-.25 G 1.157 +(ral possible implementations.).15 F 1.157(If you are porting to a ne) +6.157 F 3.657(we)-.25 G -.4(nv)-3.657 G 1.157(ironment you may).4 F 0 Cg +EP %%Page: 102 98 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 188.36<534d4d3a30382d3130322053656e646d61696c>72 -60 R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465> -2.5 E/F1 10/Times-Roman@0 SF 5<8354>137 96 S<6865>-5 E/F2 9 -/Times-Roman@0 SF<756e697175654d656d626572>4.597 E F1<617474726962>4.597 -E 2.097<75746520697320612072656375727369>-.2 F 2.397 -.15<76652061>-.25 -H<7474726962>.15 E 2.097<7574652c2075736564206f6e6c7920696e>-.2 F F2 -<67726f75704f66556e697175654e616d6573>4.596 E F1 .549 -<7265636f7264732c20616e642073686f756c6420636f6e7461696e20616e204c44> -145.5 108 R .549 -<415020444e20706f696e74696e6720746f20616e6f74686572204c44>-.4 F .55 -<4150207265636f72642e>-.4 F .55<54686520646573697265>5.55 F -<6865726520697320746f2072657475726e20746865>145.5 120 Q F2<6d61696c>2.5 -E F1<617474726962>2.5 E<7574652066726f6d2074686f736520444e732e>-.2 E 5 -<8354>137 132 S<6865>-5 E F2<73656e646d61696c4d54>4.374 E -<41416c696173536561726368>-.837 E F1<617474726962>4.374 E 1.874 -<75746520616e64>-.2 F F2<73656e646d61696c4d54>4.374 E -<41416c69617355524c>-.837 E F1 1.873 -<61726520626f74682075736564206f6e6c79206966>4.374 F 2.083 -<7265666572656e63656420696e2061>145.5 144 R F2<73656e646d61696c4d54> -4.584 E<41416c6961734f626a656374>-.837 E F1 7.084<2e54>C<6865>-7.084 E -4.584<7961>-.15 G 2.084<726520626f74682072656375727369>-4.584 F -.15 -<7665>-.25 G 4.584<2c74>.15 G 2.084<6865208c72737420666f722061206e65> --4.584 F<77>-.25 E<4c44>145.5 156 Q<41502073656172636820737472696e672061 -6e6420746865206c617474657220666f7220616e204c44>-.4 E<41502055524c2e>-.4 -E F0 2.5<362e362e205354>87 180 R<4152>-.9 E<54544c53>-.4 E F1 .47 -<496e20746869732073656374696f6e20776520617373756d652074686174>127 196.2 -R/F3 10/Times-Italic@0 SF<73656e646d61696c>2.97 E F1 .47<68617320626565 -6e20636f6d70696c6564207769746820737570706f727420666f72205354>2.97 F -<4152>-.93 E 2.97<54544c532e2054>-.6 F<6f>-.8 E .608 -<70726f7065726c7920756e6465727374616e642074686520757365206f66205354>102 -208.2 R<4152>-.93 E .609<54544c5320696e>-.6 F F3<73656e646d61696c>3.109 -E F1 3.109<2c69>C 3.109<7469>-3.109 G 3.109<736e>-3.109 G .609<65636573 -7361727920746f20756e6465727374616e64206174206c6561737420736f6d65>-3.109 -F 1.856<6261736963732061626f757420582e3530392063657274698c63617465732061 -6e64207075626c6963206b>102 220.2 R 2.155 -.15<65792063>-.1 H -<727970746f6772617068>.15 E 5.655 -.65<792e2054>-.05 H 1.855 -<68697320696e666f726d6174696f6e2063616e20626520666f756e6420696e>.65 F<62 -6f6f6b732061626f75742053534c2f544c53206f72206f6e205757572073697465732c20 -652e672e2c2099687474703a2f2f777777>102 232.2 Q<2e4f70656e53534c2e6f72> --.65 E<672f9a2e>-.18 E F0 2.5<362e362e312e2043657274698c6361746573>102 -256.2 R -.25<666f>2.5 G 2.5<7253>.25 G -.9<5441>-2.5 G -.4<5254>.9 G -<544c53>.4 E F1 .437<5768656e20616374696e6720617320612073657276>142 -272.4 R<6572>-.15 E<2c>-.4 E F3<73656e646d61696c>2.937 E F1 .438<726571 -756972657320582e3530392063657274698c636174657320746f20737570706f72742053 -54>2.937 F<4152>-.93 E .438<54544c533a206f6e65>-.6 F 1.45 -<61732063657274698c6361746520666f72207468652073657276>117 284.4 R 1.45 -<6572202853657276>-.15 F 1.45 -<65724365727446696c6520616e6420636f72726573706f6e64696e6720707269>-.15 F --.25<7661>-.25 G 1.45<74652053657276>.25 F<65724b>-.15 E -.15<6579>-.25 -G 1.45<46696c6529206174206c65617374>.15 F .244 -<6f6e6520726f6f7420434120284341>117 296.4 R .245<4365727446696c65292c20 -692e652e2c20612063657274698c636174652074686174206973207573656420746f2073 -69676e206f746865722063657274698c63617465732c20616e642061207061746820746f -2061>-.4 F .766<6469726563746f727920776869636820636f6e7461696e7320287a65 -726f206f72206d6f726529206f746865722043417320284341>117 308.4 R -<4365727450>-.4 E 3.266<617468292e20546865>-.15 F .766 -<8c6c652073706563698c656420766961204341>3.266 F<432d>-.4 E 1.554 -<65727446696c652063616e20636f6e7461696e207365>117 320.4 R -.15<7665>-.25 -G 1.554<72616c2063657274698c6361746573206f66204341732e>.15 F 1.555<5468 -6520444e73206f662074686573652063657274698c6361746573206172652073656e7420 -746f20746865>6.555 F .034 -<636c69656e7420647572696e672074686520544c532068616e647368616b>117 332.4 -R 2.534<6528>-.1 G .033<61732070617274206f66207468652043657274698c636174 -65526571756573742920617320746865206c697374206f662061636365707461626c6520 -4341732e>-2.534 F<486f>117 344.4 Q<7765>-.25 E -.15<7665>-.25 G .8 -.4 -<722c2064>.15 H 2.5<6f6e>.4 G<6f74206c69737420746f6f206d616e>-2.5 E 2.5 -<7972>-.15 G<6f6f742043417320696e2074686174208c6c652c206f74686572776973 -652074686520544c532068616e647368616b>-2.5 E 2.5<656d>-.1 G<61792066>-2.5 -E<61696c3b20652e672e2c>-.1 E<6572726f723a31343039343431373a53534c20726f -7574696e65733a53534c335f524541445f42595445533a>157 360.6 Q -<73736c763320616c65727420696c6c65>157 372.6 Q -.05<6761>-.15 G 2.5<6c70> -.05 G<6172616d657465723a73335f706b742e633a3936343a53534c20616c657274206e -756d626572203437>-2.5 E -1.1<596f>117 388.8 S 3.073<7573>1.1 G .574<686f -756c642070726f6261626c7920707574206f6e6c7920746865204341206365727420696e -746f2074686174208c6c652074686174207369676e656420796f7572206f>-3.073 F -.574<776e20636572742873292c206f72206174206c65617374>-.25 F .543 -<6f6e6c792074686f736520796f752074727573742e>117 400.8 R .543 -<546865204341>5.543 F<4365727450>-.4 E .543<617468206469726563746f727920 -6d75737420636f6e7461696e2074686520686173686573206f6620656163682043412063 -657274698c63617465>-.15 F 1.584 -<6173208c6c656e616d657320286f72206173206c696e6b7320746f207468656d292e> -117 412.8 R 1.585<53796d626f6c6963206c696e6b732063616e2062652067656e6572 -6174656420776974682074686520666f6c6c6f>6.585 F 1.585<77696e67207477>-.25 -F<6f>-.1 E<28426f75726e6529207368656c6c20636f6d6d616e64733a>117 424.8 Q -<433d46696c654e616d655f6f665f43415f43657274698c63617465>157 441 Q<6c6e20 -2d7320244320606f70656e73736c2078353039202d6e6f6f7574202d68617368203c2024 -43602e30>157 453 Q 2.67<4162>117 469.2 S .17<65747465722077>-2.67 F .17 -<617920746f20646f207468697320697320746f2075736520746865>-.1 F F0<635f72> -2.669 E<6568617368>-.18 E F1 .169<636f6d6d616e64207468617420697320706172 -74206f6620746865204f70656e53534c2064697374726962>2.669 F<7574696f6e>-.2 -E .801<626563617573652069742068616e646c6573207375626a656374206861736820 -636f6c6c6973696f6e7320627920696e6372656d656e74696e6720746865206e756d6265 -7220696e2074686520737566>117 481.2 R .801<8c78206f6620746865208c6c652d> --.25 F 1.133 -<6e616d65206f66207468652073796d626f6c6963206c696e6b2c20652e672e2c>117 -493.2 R F0<2e30>3.632 E F1<746f>3.632 E F0<2e31>3.632 E F1 3.632<2c61>C -1.132<6e6420736f206f6e2e>-3.632 F 1.132<416e20582e3530392063657274698c63 -61746520697320616c736f20726571756972656420666f72>6.132 F 1.527<61757468 -656e7469636174696f6e20696e20636c69656e74206d6f64652028436c69656e74436572 -7446696c6520616e6420636f72726573706f6e64696e6720707269>117 505.2 R -.25 -<7661>-.25 G 1.527<746520436c69656e744b>.25 F -.15<6579>-.25 G 1.527 -<46696c65292c20686f>.15 F<772d>-.25 E -2.15 -.25<65762065>117 517.2 T --.4<722c>.25 G F3<73656e646d61696c>3.222 E F1 .322<77696c6c20616c>2.822 -F -.1<7761>-.1 G .322<797320757365205354>.1 F<4152>-.93 E .321 -<54544c53207768656e206f66>-.6 F .321<666572656420627920612073657276>-.25 -F<6572>-.15 E 5.321<2e54>-.55 G .321 -<686520636c69656e7420616e642073657276>-5.321 F .321<657220636572>-.15 F -<2d>-.2 E .03<74698c63617465732063616e206265206964656e746963616c2e>117 -529.2 R .03<43657274698c63617465732063616e206265206f627461696e6564206672 -6f6d20612063657274698c6361746520617574686f72697479206f722063726561746564 -2077697468>5.03 F .869<7468652068656c70206f66204f70656e53534c2e>117 -541.2 R .869<54686520726571756972656420666f726d617420666f72206365727469 -8c636174657320616e6420707269>5.869 F -.25<7661>-.25 G .868<7465206b>.25 -F -.15<6579>-.1 G 3.368<7369>.15 G 3.368<7350>-3.368 G 3.368<454d2e2054> --3.368 F 3.368<6f61>-.8 G<6c6c6f>-3.368 E<77>-.25 E 1.123<666f7220617574 -6f6d617469632073746172747570206f662073656e646d61696c2c20707269>117 553.2 -R -.25<7661>-.25 G 1.124<7465206b>.25 F -.15<6579>-.1 G 3.624<7328>.15 G -<53657276>-3.624 E<65724b>-.15 E -.15<6579>-.25 G 1.124 -<46696c652c20436c69656e744b>.15 F -.15<6579>-.25 G 1.124 -<46696c6529206d7573742062652073746f726564>.15 F 3.04 -<756e656e637279707465642e20546865>117 565.2 R -.1<6b65>3.04 G .54<797320 -617265206f6e6c792070726f74656374656420627920746865207065726d697373696f6e -73206f6620746865208c6c652073797374656d2e>-.05 F<4e65>5.54 E -.15<7665> --.25 G 3.04<726d>.15 G<616b>-3.04 E 3.04<6561>-.1 G<707269>117 577.2 Q --.25<7661>-.25 G<7465206b>.25 E .3 -.15<65792061>-.1 H -.25<7661>-.05 G -<696c61626c6520746f2061207468697264207061727479>.25 E<2e>-.65 E .953 -<546865206f7074696f6e73>142 593.4 R F3<436c69656e744365727446>3.453 E -<696c65>-.45 E F1<2c>A F3<436c69656e744b>3.453 E -.3<6579>-.35 G -.45 -<4669>.3 G<6c65>.45 E F1<2c>A F3<5365727665724365727446>3.453 E<696c65> --.45 E F1 3.453<2c61>C<6e64>-3.453 E F3<5365727665724b>3.453 E -.3<6579> --.35 G -.45<4669>.3 G<6c65>.45 E F1 .954<63616e2074616b>3.454 F 3.454 -<6561>-.1 G .946<7365636f6e64208c6c65206e616d652c207768696368206d757374 -206265207365706172617465642066726f6d20746865208c727374207769746820612063 -6f6d6d6120286e6f74653a20646f206e6f742075736520616e>117 605.4 R<79>-.15 E -.657<7370616365732920746f207365742075702061207365636f6e6420636572742f6b> -117 617.4 R .957 -.15<65792070>-.1 H<616972>.15 E 5.657<2e54>-.55 G .657 -<6869732063616e206265207573656420746f206861>-5.657 F .957 -.15<76652063> --.2 H .658<65727473206f6620646966>.15 F .658 -<666572656e742074797065732c20652e672e2c>-.25 F<52534120616e64204453412e> -117 629.4 Q F0 2.5<362e362e322e2050524e47>102 653.4 R -.25<666f>2.5 G -2.5<7253>.25 G -.9<5441>-2.5 G -.4<5254>.9 G<544c53>.4 E F1<5354>142 -669.6 Q<4152>-.93 E .504<54544c532072657175697265732061207374726f6e6720 -70736575646f2072616e646f6d206e756d6265722067656e657261746f72202850524e47 -2920746f206f7065726174652070726f702d>-.6 F<65726c79>117 681.6 Q 5.055 -<2e44>-.65 G .056<6570656e64696e67206f6e2074686520544c53206c696272617279 -20796f75207573652c206974206d617920626520726571756972656420746f2065> --5.055 F .056 -<78706c696369746c7920696e697469616c697a65207468652050524e47>-.15 F 1.155 -<776974682072616e646f6d20646174612e>117 693.6 R 1.154 -<4f70656e53534c206d616b>6.154 F 1.154<657320757365206f66>-.1 F F0 -<2f6465>3.654 E<762f7572616e646f6d283429>-.15 E F1 1.154<69662061>3.654 -F -.25<7661>-.2 G 1.154 -<696c61626c6520287468697320636f72726573706f6e647320746f>.25 F 1.442 -<74686520636f6d70696c65208d6167204841535552414e444f4d444556292e>117 -705.6 R 1.443<4f6e2073797374656d73207768696368206c61636b2074686973207375 -70706f72742c20612072616e646f6d208c6c65>6.442 F .224 -<6d7573742062652073706563698c656420696e20746865>117 717.6 R F3 -<73656e646d61696c2e6366>2.723 E F1 .223 -<8c6c65207573696e6720746865206f7074696f6e2052616e6446696c652e>2.723 F -.223<4974206973>5.223 F F0<737472>2.723 E<6f6e676c79>-.18 E F1 .223 -<6164766973656420746f20757365>2.723 F 0 Cg EP +/F0 10/Times-Bold@0 SF 188.36(SMM:08-102 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF +(need to add some ne)117 98 Q 2.5(wt)-.25 G(weaks.)-2.5 E/F2 7 +/Times-Roman@0 SF(25)-4 I F0 2.5(6.4. Con\214guration)87 122 R +(in sendmail/daemon.c)2.5 E F1 .127(The \214le)127 138.2 R/F3 10 +/Times-Italic@0 SF(sendmail/daemon.c)2.627 E F1 .128 +(contains a number of routines that are dependent on the local net-) +2.628 F -.1(wo)102 150.2 S(rking en).1 E 2.5(vironment. The)-.4 F -.15 +(ve)2.5 G(rsion supplied assumes you ha).15 E .3 -.15(ve B)-.2 H +(SD style sock).15 E(ets.)-.1 E 2.16(In pre)127 166.4 R 2.16 +(vious releases, we recommended that you modify the routine)-.25 F F3 +(maphostname)4.66 E F1 2.16(if you)4.66 F -.1(wa)102 178.4 S 1.918 +(nted to generalize).1 F F0($[)4.418 E F1(...)4.418 E F0($])4.418 E F1 +4.418(lookups. W)4.418 F 4.418(en)-.8 G 2.418 -.25(ow r)-4.418 H 1.918 +(ecommend that you create a ne).25 F 4.419(wk)-.25 G -.15(ey)-4.519 G +1.919(ed map).15 F(instead.)102 190.4 Q F0 2.5(6.5. LD)87 214.4 R(AP) +-.35 E F1(In this section we assume that)127 230.6 Q F3(sendmail)2.5 E +F1(has been compiled with support for LD)2.5 E(AP)-.4 E(.)-1.11 E F0 2.5 +(6.5.1. LD)102 254.6 R(AP Recursion)-.35 E F1(LD)142 270.8 Q .35 +(AP Recursion allo)-.4 F .349(ws you to add types to the search attrib) +-.25 F .349(utes on an LD)-.2 F .349(AP map speci-)-.4 F 2.5 +(\214cation. The)117 282.8 R(syntax is:)2.5 E117 299 Q F3 -.37(AT) +2.5 G(TRIB).37 E(UTE)-.1 E F1([:)A F3(TYPE)A F1([:)A F3(OBJECTCLASS)A F1 +([|)A F3(OBJECTCLASS)A F1(|...]]])A(The ne)142 315.2 Q(w)-.25 E F3(TYPE) +2.5 E F1 2.5(sa)C(re:)-2.5 E 26.17(NORMAL This)117 331.4 R(attrib)3.578 +E 1.078(ute type speci\214es the attrib)-.2 F 1.079 +(ute to add to the results string.)-.2 F 1.079(This is)6.079 F(the def) +189 343.4 Q(ault.)-.1 E 55.06(DN An)117 359.6 R 2.822(ym)-.15 G .322 +(atches for this attrib)-2.822 F .322(ute are e)-.2 F .321 +(xpected to ha)-.15 F .621 -.15(ve a v)-.2 H .321 +(alue of a fully quali\214ed)-.1 F 1.521(distinguished name.)189 371.6 R +F3(sendmail)6.521 E F1 1.521(will lookup that DN and apply the attrib) +4.021 F(utes)-.2 E(requested to the returned DN record.)189 383.6 Q(FIL) +117 399.8 Q 36.53(TER An)-.92 F 2.653(ym)-.15 G .153 +(atches for this attrib)-2.653 F .153(ute are e)-.2 F .153 +(xpected to ha)-.15 F .453 -.15(ve a v)-.2 H .153(alue of an LD)-.1 F +.152(AP search)-.4 F(\214lter)189 411.8 Q(.)-.55 E F3(sendmail)5.697 E +F1 .698(will perform a lookup with the same parameters as the origi-) +3.197 F(nal search b)189 423.8 Q +(ut replaces the search \214lter with the one speci\214ed here.)-.2 E +49.5(URL An)117 440 R 2.87(ym)-.15 G .37(atches for this attrib)-2.87 F +.37(ute are e)-.2 F .37(xpected to ha)-.15 F .67 -.15(ve a v)-.2 H .37 +(alue of an LD)-.1 F .37(AP URL.)-.4 F F3(sendmail)189 452 Q F1 1.947 +(will perform a lookup of that URL and use the results from the)4.446 F +(attrib)189 464 Q .39(utes named in that URL.)-.2 F .389(Note ho)5.389 F +(we)-.25 E -.15(ve)-.25 G 2.889(rt).15 G .389 +(hat the search is done using the)-2.889 F 2.622(current LD)189 476 R +2.622(AP connection, re)-.4 F -.05(ga)-.15 G 2.622 +(rdless of what is speci\214ed as the scheme,).05 F(LD)189 488 Q +(AP host, and LD)-.4 E(AP port in the LD)-.4 E(AP URL.)-.4 E(An)117 +504.2 Q 2.5(yu)-.15 G(ntyped attrib)-2.5 E(utes are considered)-.2 E/F4 +9/Times-Roman@0 SF(NORMAL)2.5 E F1(attrib)2.5 E(utes as described abo) +-.2 E -.15(ve)-.15 G(.).15 E .91(The optional)142 520.4 R F3 +(OBJECTCLASS)3.41 E F1 .91 +(\(| separated\) list contains the objectClass v)3.41 F .91 +(alues for which)-.25 F 1.398(that attrib)117 532.4 R 1.398 +(ute applies.)-.2 F 1.399(If the list is gi)6.398 F -.15(ve)-.25 G 1.399 +(n, the attrib).15 F 1.399(ute named will only be used if the LD)-.2 F +(AP)-.4 E 1.111(record being returned is a member of that object class.) +117 544.4 R 1.111(Note that if these ne)6.111 F 3.611(wv)-.25 G 1.111 +(alue attrib)-3.861 F(ute)-.2 E F3(TYPE)117 556.4 Q F1 2.936(sa)C .436(\ +re used in an AliasFile option setting, it will need to be double quote\ +d to pre)-2.936 F -.15(ve)-.25 G(nt).15 E F3(send-)2.937 E(mail)117 +568.4 Q F1(from misparsing the colons.)2.5 E .258(Note that LD)142 584.6 +R .257(AP recursion attrib)-.4 F .257 +(utes which do not ultimately point to an LD)-.2 F .257(AP record are) +-.4 F(not considered an error)117 596.6 Q(.)-.55 E F0 2.5 +(6.5.1.1. Example)117 620.6 R F1 .218(Since e)157 636.8 R .218 +(xamples usually help clarify)-.15 F 2.718(,h)-.65 G .218(ere is an e) +-2.718 F .218(xample which uses all four of the ne)-.15 F(w)-.25 E +(types:)132 648.8 Q .32 LW 76 688.4 72 688.4 DL 80 688.4 76 688.4 DL 84 +688.4 80 688.4 DL 88 688.4 84 688.4 DL 92 688.4 88 688.4 DL 96 688.4 92 +688.4 DL 100 688.4 96 688.4 DL 104 688.4 100 688.4 DL 108 688.4 104 +688.4 DL 112 688.4 108 688.4 DL 116 688.4 112 688.4 DL 120 688.4 116 +688.4 DL 124 688.4 120 688.4 DL 128 688.4 124 688.4 DL 132 688.4 128 +688.4 DL 136 688.4 132 688.4 DL 140 688.4 136 688.4 DL 144 688.4 140 +688.4 DL 148 688.4 144 688.4 DL 152 688.4 148 688.4 DL 156 688.4 152 +688.4 DL 160 688.4 156 688.4 DL 164 688.4 160 688.4 DL 168 688.4 164 +688.4 DL 172 688.4 168 688.4 DL 176 688.4 172 688.4 DL 180 688.4 176 +688.4 DL 184 688.4 180 688.4 DL 188 688.4 184 688.4 DL 192 688.4 188 +688.4 DL 196 688.4 192 688.4 DL 200 688.4 196 688.4 DL 204 688.4 200 +688.4 DL 208 688.4 204 688.4 DL 212 688.4 208 688.4 DL 216 688.4 212 +688.4 DL/F5 5/Times-Roman@0 SF(25)93.6 698.8 Q/F6 8/Times-Roman@0 SF +(If you do, please send updates to sendmail@Sendmail.ORG.)3.2 I 0 Cg EP %%Page: 103 99 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d313033>190.86 E -/F1 10/Times-Roman@0 SF .872<7468652022456e74726f70>117 96 R 3.372<7947> --.1 G .872 -<6174686572696e67204461656d6f6e22204547442066726f6d20427269616e2057> --3.372 F .873 -<61726e6572206f6e2074686f73652073797374656d7320746f2070726f>-.8 F .873 -<766964652075736566756c>-.15 F 1.414<72616e646f6d20646174612e>117 108 R -1.414<496e207468697320636173652c>6.414 F/F2 10/Times-Italic@0 SF -<73656e646d61696c>3.914 E F1 1.413<6d75737420626520636f6d70696c65642077 -69746820746865208d6167204547442c20616e64207468652052616e6446696c65>3.913 -F .731 -<6f7074696f6e206d75737420706f696e7420746f207468652045474420736f636b>117 -120 R 3.231<65742e204966>-.1 F<6e656974686572>3.231 E F0<2f6465>3.232 E -<762f7572616e646f6d283429>-.15 E F1 .732<6e6f7220454744206172652061> -3.232 F -.25<7661>-.2 G .732<696c61626c652c20796f75>.25 F<6861>117 132 Q -.474 -.15<76652074>-.2 H 2.674<6f6d>.15 G<616b>-2.674 E 2.674<6573>-.1 G -.174<75726520746861742075736566756c2072616e646f6d20646174612069732061> --2.674 F -.25<7661>-.2 G .174 -<696c61626c6520616c6c207468652074696d6520696e2052616e6446696c652e>.25 F -.173<496620746865208c6c65206861736e27>5.174 F<74>-.18 E .39<6265656e206d -6f64698c656420696e20746865206c617374203130206d696e75746573206265666f7265 -20697420697320737570706f73656420746f2062652075736564206279>117 144 R F2 -<73656e646d61696c>2.89 E F1 .39<74686520636f6e74656e74206973>2.89 F -<636f6e73696465726564206f62736f6c6574652e>117 156 Q<4f6e65206d6574686f64 -20666f722067656e65726174696e672074686973208c6c652069733a>5 E<6f70656e73 -736c2072616e64202d6f7574202f6574632f6d61696c2f72616e648c6c65202d72616e64> -157 172.2 Q F2<2f706174682f746f2f8c6c653a2e2e2e>2.5 E F1<323536>A .321< -53656520746865204f70656e53534c20646f63756d656e746174696f6e20666f72206d6f -726520696e666f726d6174696f6e2e>117 188.4 R .32<496e20746869732063617365 -2c207468652050524e4720666f7220544c53206973206f6e6c79>5.321 F .956<736565 -6465642077697468206f746865722072616e646f6d206461746120696620746865>117 -200.4 R F0<446f6e74426c616d6553656e646d61696c>3.456 E F1<6f7074696f6e> -3.457 E F0<496e7375668c6369656e74456e7472>3.457 E<6f7079>-.18 E F1 .957 -<6973207365742e>3.457 F<54686973206973206d6f7374206c696b>117 212.4 Q -<656c79206e6f7420737566>-.1 E<8c6369656e7420666f72206365727461696e206163 -74696f6e732c20652e672e2c2067656e65726174696f6e206f66202874656d706f726172 -7929206b>-.25 E -.15<6579>-.1 G<732e>.15 E .051<506c65617365207365652074 -6865204f70656e53534c20646f63756d656e746174696f6e206f72206f7468657220736f -757263657320666f72206675727468657220696e666f726d6174696f6e2061626f757420 -636572>142 228.6 R<2d>-.2 E 1.064<74698c63617465732c20746865697220637265 -6174696f6e20616e642074686569722075736167652c2074686520696d706f7274616e63 -65206f66206120676f6f642050524e472c20616e64206f74686572206173706563747320 -6f66>117 240.6 R<544c532e>117 252.6 Q F0 2.5<362e372e20456e636f64696e67> -87 276.6 R<6f66205354>2.5 E<4152>-.9 E<54544c5320616e642041>-.4 E -<5554482072>-.5 E<656c61746564204d616372>-.18 E<6f73>-.18 E F1 .693 -<4d6163726f73207468617420636f6e7461696e205354>127 292.8 R<4152>-.93 E -.693<54544c5320616e642041>-.6 F .692<5554482072656c61746564206461746120 -776869636820636f6d65732066726f6d206f75747369646520736f75726365732c>-.55 -F .809<652e672e2c20616c6c206d6163726f7320636f6e7461696e696e6720696e666f -726d6174696f6e2066726f6d2063657274698c63617465732c2061726520656e636f6465 -6420746f2061>102 304.8 R -.2<766f>-.2 G .81 -<69642070726f626c656d732077697468206e6f6e2d>.2 F .193 -<7072696e7461626c65206f72207370656369616c20636861726163746572732e>102 -316.8 R .193<546865206c61747465722061726520275c272c20273c272c20273e272c -202728272c202729272c202722272c20272b272c20616e64202720272e>5.193 F .192 -<416c6c206f662074686573652063686172>5.192 F<2d>-.2 E -<61637465727320617265207265706c616365642062792074686569722076>102 328.8 -Q<616c756520696e206865>-.25 E -<7861646563696d616c20776974682061206c656164696e6720272b272e>-.15 E -.15 -<466f>5 G 2.5<7265>.15 G<78616d706c653a>-2.65 E -<2f433d55532f53543d43616c69666f726e69612f4f3d656e646d61696c2e6f72>142 -345 Q<672f4f553d707269>-.18 E -.25<7661>-.25 G -<74652f434e3d4461727468204d61696c202843657274292f>.25 E -<456d61696c3d64617274682b6365727440656e646d61696c2e6f72>142 357 Q<67> --.18 E<697320656e636f6465642061733a>102 373.2 Q -<2f433d55532f53543d43616c69666f726e69612f4f3d656e646d61696c2e6f72>142 -389.4 Q<672f4f553d707269>-.18 E -.25<7661>-.25 G<74652f>.25 E<434e3d4461 -7274682b32304d61696c2b32302b3238436572742b32392f456d61696c3d64617274682b -32426365727440656e646d61696c2e6f72>142 401.4 Q<67>-.18 E .515 -<286c696e6520627265616b73206861>102 417.6 R .815 -.15<76652062>-.2 H -.515<65656e20696e73657274656420666f7220726561646162696c697479292e>.15 F -.516<546865206d6163726f7320776869636820617265207375626a65637420746f2074 -68697320656e636f64696e6720617265>5.515 F 6.828<7b636572745f7375626a6563 -747d2c207b636572745f6973737565727d2c207b636e5f7375626a6563747d2c207b636e -5f6973737565727d2c2061732077656c6c206173207b617574685f61757468656e7d2061 -6e64>102 429.6 R<7b617574685f617574686f727d2e>102 441.6 Q F0 2.5 -<372e2041>72 465.6 R<434b4e4f>-.55 E<574c454447454d454e5453>-.5 E F1 -<4927>112 481.8 Q 2.036 -.15<76652077>-.5 H<6f726b>.05 E 1.737 -<6564206f6e>-.1 F F2<73656e646d61696c>4.237 E F1 1.737<666f72206d616e> -4.237 F 4.237<7979>-.15 G 1.737<656172732c20616e64206d616e>-4.237 F -4.237<7965>-.15 G<6d706c6f>-4.237 E 1.737<79657273206861>-.1 F 2.037 --.15<76652062>-.2 H 1.737<65656e2072656d61726b61626c792070617469656e74> -.15 F .404<61626f7574206c657474696e67206d652077>87 493.8 R .404 -<6f726b206f6e2061206c6172>-.1 F .404<67652070726f6a65637420746861742077> --.18 F .403<6173206e6f742070617274206f66206d79206f66>-.1 F .403 -<8c6369616c206a6f62>-.25 F 5.403<2e54>-.4 G .403 -<68697320696e636c756465732074696d65206f6e20746865>-5.403 F .281 -<494e475245532050726f6a6563742061742074686520556e69>87 505.8 R -.15 -<7665>-.25 G .282 -<7273697479206f662043616c69666f726e6961206174204265726b>.15 F<656c65>-.1 -E 1.582 -.65<792c2061>-.15 H 2.782<7442>.65 G .282 -<726974746f6e204c65652c20616e64206167>-2.782 F .282 -<61696e206f6e20746865204d616d6d6f7468>-.05 F<616e642054>87 517.8 Q -<6974616e2050726f6a65637473206174204265726b>-.35 E<656c65>-.1 E -.65 -<792e>-.15 G .79<4d756368206f6620746865207365636f6e642077>112 534 R --2.25 -.2<61762065>-.1 H .789<6f6620696d70726f>3.49 F -.15<7665>-.15 G -.789<6d656e747320726573756c74696e6720696e2076>.15 F .789<657273696f6e20 -382e312073686f756c6420626520637265646974656420746f20427279616e>-.15 F -.545<436f7374616c6573206f662074686520496e7465726e6174696f6e616c20436f6d -707574657220536369656e636520496e737469747574652e>87 546 R .545<41732068 -6520706173736564206d6520647261667473206f662068697320626f6f6b206f6e>5.545 -F F2<73656e642d>3.045 E<6d61696c>87 558 Q F1 2.5<4977>2.5 G -<617320696e73706972656420746f2073746172742077>-2.6 E -<6f726b696e67206f6e207468696e6773206167>-.1 E 2.5<61696e2e20427279616e> --.05 F -.1<7761>2.5 G 2.5<7361>.1 G<6c736f2061>-2.5 E -.25<7661>-.2 G -<696c61626c6520746f20626f756e6365206964656173206f66>.25 E 2.5<666f>-.25 -G<662e>-2.5 E<477265>112 574.2 Q .168 -<676f7279204e65696c205368617069726f206f662057>-.15 F .168<6f726365737465 -7220506f6c79746563686e696320496e7374697475746520686173206265636f6d652069 -6e737472756d656e74616c20696e20616c6c20706861736573206f66>-.8 F F2 -<73656e646d61696c>87 586.2 Q F1 .34<737570706f727420616e64206465>2.84 F --.15<7665>-.25 G .34<6c6f706d656e742c20616e642077>.15 F .34 -<6173206c6172>-.1 F .34 -<67656c7920726573706f6e7369626c6520666f722067657474696e672076>-.18 F .34 -<657273696f6e7320382e3820616e6420382e39206f757420746865>-.15 F<646f6f72> -87 598.2 Q<2e>-.55 E<4d616e>112 614.4 Q 2.857 -.65<792c206d>-.15 H<616e> -.65 E 4.057<7970>-.15 G 1.557<656f706c6520636f6e74726962>-4.057 F 1.556 -<75746564206368756e6b73206f6620636f646520616e6420696465617320746f>-.2 F -F2<73656e646d61696c>4.056 E F1 6.556<2e49>C 4.056<7468>-6.556 G 1.556 -<61732070726f>-4.056 F -.15<7665>-.15 G 4.056<6e74>.15 G 4.056<6f62> --4.056 G 4.056<6561>-4.056 G .405<67726f7570206e657477>87 626.4 R .405 -<6f726b206566>-.1 F 2.905<666f72742e2056>-.25 F .405 -<657273696f6e203820696e20706172746963756c61722077>-1.11 F .405 -<617320612067726f75702070726f6a6563742e>-.1 F .406<54686520666f6c6c6f> -5.406 F .406<77696e672070656f706c6520616e64206f72>-.25 F -.05<6761>-.18 -G<6e697a612d>.05 E<74696f6e73206d616465206e6f7461626c6520636f6e74726962> -87 638.4 Q<7574696f6e733a>-.2 E<436c617573204173736d616e6e>127 654.6 Q -<4a6f686e204265636b2c204865>127 666.6 Q<776c6574742d50>-.25 E -<61636b61726420262053756e204d6963726f73797374656d73>-.15 E -.25<4b65>127 -678.6 S<69746820426f737469632c20435352472c20556e69>.25 E -.15<7665>-.25 -G<7273697479206f662043616c69666f726e69612c204265726b>.15 E<656c65>-.1 E -<79>-.15 E<416e647265>127 690.6 Q 2.5<7743>-.25 G -<68656e672c2053756e204d6963726f73797374656d73>-2.5 E -<4d69636861656c204a2e20436f72726967>127 702.6 Q<616e2c20556e69>-.05 E --.15<7665>-.25 G -<7273697479206f662043616c69666f726e69612c2053616e20446965>.15 E<676f> --.15 E<427279616e20436f7374616c65732c20496e7465726e6174696f6e616c20436f -6d707574657220536369656e636520496e73746974757465202620496e666f42656174> -127 714.6 Q 0 Cg EP +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-103)190.86 E/F1 10/Times-Roman@0 SF 2.5(OL)172 96 S -.4(DA)-2.5 +G(PDef).4 E(aultSpec=-h ldap.e)-.1 E(xample.com -b dc=e)-.15 E +(xample,dc=com)-.15 E -2.15 -.25(Ke x)172 120 T(ample ldap).25 E(-z,) +194.5 132 Q(-k \(&\(objectClass=sendmailMT)194.5 144 Q +(AAliasObject\)\(sendmailMT)-.93 E(AK)-.93 E -.15(ey)-.25 G(=%0\)\)).15 +E(-v sendmailMT)194.5 156 Q(AAliasV)-.93 E(alue,mail:NORMAL:inetOr)-1.11 +E(gPerson,)-.18 E(uniqueMember:DN:groupOfUniqueNames,)202 168 Q +(sendmailMT)202 180 Q(AAliasSearch:FIL)-.93 E(TER:sendmailMT)-.92 E +(AAliasObject,)-.93 E(sendmailMT)202 192 Q(AAliasURL:URL:sendmailMT)-.93 +E(AAliasObject)-.93 E(That de\214nition speci\214es that:)157 212.4 Q 5 +<8341>137 228.6 S .952 -.15(ny v)-5 H .652(alue in a)-.1 F/F2 9 +/Times-Roman@0 SF(sendmailMT)3.152 E(AAliasV)-.837 E(alue)-.999 E F1 +(attrib)3.152 E .651(ute will be added to the result string re)-.2 F +-.05(ga)-.15 G(rd-).05 E(less of object class.)145.5 240.6 Q 5<8354>137 +252.6 S(he)-5 E F2(mail)2.551 E F1(attrib)2.551 E .051 +(ute will be added to the result string if the LD)-.2 F .052 +(AP record is a member of the)-.4 F F2(inetOr)145.5 264.6 Q(gPerson) +-.162 E F1(object class.)2.5 E 5<8354>137 276.6 S(he)-5 E F2 +(uniqueMember)4.597 E F1(attrib)4.597 E 2.097(ute is a recursi)-.2 F +2.397 -.15(ve a)-.25 H(ttrib).15 E 2.097(ute, used only in)-.2 F F2 +(groupOfUniqueNames)4.596 E F1 .549(records, and should contain an LD) +145.5 288.6 R .549(AP DN pointing to another LD)-.4 F .55(AP record.)-.4 +F .55(The desire)5.55 F(here is to return the)145.5 300.6 Q F2(mail)2.5 +E F1(attrib)2.5 E(ute from those DNs.)-.2 E 5<8354>137 312.6 S(he)-5 E +F2(sendmailMT)4.374 E(AAliasSearch)-.837 E F1(attrib)4.374 E 1.874 +(ute and)-.2 F F2(sendmailMT)4.374 E(AAliasURL)-.837 E F1 1.873 +(are both used only if)4.374 F 2.083(referenced in a)145.5 324.6 R F2 +(sendmailMT)4.584 E(AAliasObject)-.837 E F1 7.084(.T)C(he)-7.084 E 4.584 +(ya)-.15 G 2.084(re both recursi)-4.584 F -.15(ve)-.25 G 4.584(,t).15 G +2.084(he \214rst for a ne)-4.584 F(w)-.25 E(LD)145.5 336.6 Q +(AP search string and the latter for an LD)-.4 E(AP URL.)-.4 E F0 2.5 +(6.6. ST)87 360.6 R(AR)-.9 E(TTLS)-.4 E F1 .47 +(In this section we assume that)127 376.8 R/F3 10/Times-Italic@0 SF +(sendmail)2.97 E F1 .47(has been compiled with support for ST)2.97 F(AR) +-.93 E 2.97(TTLS. T)-.6 F(o)-.8 E .608 +(properly understand the use of ST)102 388.8 R(AR)-.93 E .609(TTLS in) +-.6 F F3(sendmail)3.109 E F1 3.109(,i)C 3.109(ti)-3.109 G 3.109(sn) +-3.109 G .609(ecessary to understand at least some)-3.109 F 1.856 +(basics about X.509 certi\214cates and public k)102 400.8 R 2.155 -.15 +(ey c)-.1 H(ryptograph).15 E 5.655 -.65(y. T)-.05 H 1.855 +(his information can be found in).65 F +(books about SSL/TLS or on WWW sites, e.g., \231https://www)102 412.8 Q +(.OpenSSL.or)-.65 E(g/\232.)-.18 E F0 2.5(6.6.1. Certi\214cates)102 +436.8 R -.25(fo)2.5 G 2.5(rS).25 G -.9(TA)-2.5 G -.4(RT).9 G(TLS).4 E F1 +.437(When acting as a serv)142 453 R(er)-.15 E(,)-.4 E F3(sendmail)2.937 +E F1 .438(requires X.509 certi\214cates to support ST)2.937 F(AR)-.93 E +.438(TTLS: one)-.6 F 1.45(as certi\214cate for the serv)117 465 R 1.45 +(er \(Serv)-.15 F 1.45(erCertFile and corresponding pri)-.15 F -.25(va) +-.25 G 1.45(te Serv).25 F(erK)-.15 E -.15(ey)-.25 G 1.45 +(File\) at least).15 F .244(one root CA \(CA)117 477 R .245(CertFile\),\ + i.e., a certi\214cate that is used to sign other certi\214cates, and a\ + path to a)-.4 F .766 +(directory which contains \(zero or more\) other CAs \(CA)117 489 R +(CertP)-.4 E 3.266(ath\). The)-.15 F .766(\214le speci\214ed via CA) +3.266 F(C-)-.4 E 1.554(ertFile can contain se)117 501 R -.15(ve)-.25 G +1.554(ral certi\214cates of CAs.).15 F 1.555 +(The DNs of these certi\214cates are sent to the)6.555 F .034 +(client during the TLS handshak)117 513 R 2.534(e\()-.1 G .033 +(as part of the Certi\214cateRequest\) as the list of acceptable CAs.) +-2.534 F(Ho)117 525 Q(we)-.25 E -.15(ve)-.25 G .8 -.4(r, d).15 H 2.5(on) +.4 G(ot list too man)-2.5 E 2.5(yr)-.15 G +(oot CAs in that \214le, otherwise the TLS handshak)-2.5 E 2.5(em)-.1 G +(ay f)-2.5 E(ail; e.g.,)-.1 E +(error:14094417:SSL routines:SSL3_READ_BYTES:)157 541.2 Q +(sslv3 alert ille)157 553.2 Q -.05(ga)-.15 G 2.5(lp).05 G +(arameter:s3_pkt.c:964:SSL alert number 47)-2.5 E -1.1(Yo)117 569.4 S +3.073(us)1.1 G .574(hould probably put only the CA cert into that \214l\ +e that signed your o)-3.073 F .574(wn cert\(s\), or at least)-.25 F .543 +(only those you trust.)117 581.4 R .543(The CA)5.543 F(CertP)-.4 E .543 +(ath directory must contain the hashes of each CA certi\214cate)-.15 F +1.584(as \214lenames \(or as links to them\).)117 593.4 R 1.585 +(Symbolic links can be generated with the follo)6.585 F 1.585(wing tw) +-.25 F(o)-.1 E(\(Bourne\) shell commands:)117 605.4 Q +(C=FileName_of_CA_Certi\214cate)157 621.6 Q +(ln -s $C `openssl x509 -noout -hash < $C`.0)157 633.6 Q 2.67(Ab)117 +649.8 S .17(etter w)-2.67 F .17(ay to do this is to use the)-.1 F F0 +(c_r)2.669 E(ehash)-.18 E F1 .169 +(command that is part of the OpenSSL distrib)2.669 F(ution)-.2 E .801(b\ +ecause it handles subject hash collisions by incrementing the number in\ + the suf)117 661.8 R .801(\214x of the \214le-)-.25 F 1.133 +(name of the symbolic link, e.g.,)117 673.8 R F0(.0)3.632 E F1(to)3.632 +E F0(.1)3.632 E F1 3.632(,a)C 1.132(nd so on.)-3.632 F 1.132 +(An X.509 certi\214cate is also required for)6.132 F 1.527 +(authentication in client mode \(ClientCertFile and corresponding pri) +117 685.8 R -.25(va)-.25 G 1.527(te ClientK).25 F -.15(ey)-.25 G 1.527 +(File\), ho).15 F(w-)-.25 E -2.15 -.25(ev e)117 697.8 T -.4(r,).25 G F3 +(sendmail)3.222 E F1 .322(will al)2.822 F -.1(wa)-.1 G .322(ys use ST).1 +F(AR)-.93 E .321(TTLS when of)-.6 F .321(fered by a serv)-.25 F(er)-.15 +E 5.321(.T)-.55 G .321(he client and serv)-5.321 F .321(er cer)-.15 F(-) +-.2 E .03(ti\214cates can be identical.)117 709.8 R .03(Certi\214cates \ +can be obtained from a certi\214cate authority or created with)5.03 F +.869(the help of OpenSSL.)117 721.8 R .869 +(The required format for certi\214cates and pri)5.869 F -.25(va)-.25 G +.868(te k).25 F -.15(ey)-.1 G 3.368(si).15 G 3.368(sP)-3.368 G 3.368 +(EM. T)-3.368 F 3.368(oa)-.8 G(llo)-3.368 E(w)-.25 E 0 Cg EP %%Page: 104 100 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 188.36<534d4d3a30382d3130342053656e646d61696c>72 -60 R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465> -2.5 E/F1 10/Times-Roman@0 SF -.15<5061>127 96 S -.5<2e2e>-4.402 -6 O 2.5 -<7228>.552 6 O<50656c6c2920456d616e75656c73736f6e>-2.5 E -<4372616967204576>127 108 Q<6572686172742c2054>-.15 E -<72616e7361726320436f72706f726174696f6e>-.35 E -<50657220486564656c616e642c204572696373736f6e>127 120 Q -.8<546f>127 132 -S 2.5<6d49>.8 G -.25<7661>-2.5 G 2.5<7248>.25 G -<656c62656b6b6d6f2c204e6f727765>-2.5 E -<6769616e205363686f6f6c206f662045636f6e6f6d696373>-.15 E<4b617269204875 -727474612c2046696e6e697368204d6574656f726f6c6f676963616c20496e7374697475 -7465>127 144 Q<416c6c616e20452e204a6f68616e6e6573656e2c20575049>127 156 -Q<4a6f6e617468616e204b616d656e732c204f70656e56>127 168 Q<6973696f6e2054> --.6 E<6563686e6f6c6f676965732c20496e632e>-.7 E -.8<5461>127 180 S<6b6168 -69726f204b616e62652c2046756a69205865726f7820496e666f726d6174696f6e205379 -7374656d7320436f2e2c204c74642e>.8 E<427269616e204b616e746f72>127 192 Q -2.5<2c55>-.4 G<6e69>-2.5 E -.15<7665>-.25 G -<7273697479206f662043616c69666f726e69612c2053616e20446965>.15 E<676f> --.15 E<4a6f686e204b>127 204 Q<656e6e656479>-.25 E 2.5<2c43>-.65 G -<616c20537461746520556e69>-2.5 E -.15<7665>-.25 G<7273697479>.15 E 2.5 -<2c43>-.65 G<6869636f>-2.5 E<4d757272617920532e204b>127 216 Q -<756368657261>-.15 E<7779>-.15 E 2.5<2c48>-.65 G -<6f6f6b557020436f6d6d756e69636174696f6e20436f72702e>-2.5 E -<4272756365204c696c6c79>127 228 Q 2.5<2c53>-.65 G<6f6e>-2.5 E 2.5<7955> --.15 G<2e532e>-2.5 E<4b61726c204c6f6e646f6e>127 240 Q -<4d6f746f6e6f7269204e616b616d7572612c2052697473756d65696b616e20556e69> -127 252 Q -.15<7665>-.25 G<72736974792026204b>.15 E<796f746f20556e69> --.25 E -.15<7665>-.25 G<7273697479>.15 E -<4a6f686e2047617264696e6572204d796572732c204361726e65>127 264 Q -<676965204d656c6c6f6e20556e69>-.15 E -.15<7665>-.25 G<7273697479>.15 E -<4e65696c205269636b>127 276 Q -<6572742c204e6f72746865726e20496c6c696e6f697320556e69>-.1 E -.15<7665> --.25 G<7273697479>.15 E<477265>127 288 Q -<676f7279204e65696c205368617069726f2c20575049>-.15 E -<45726963205363686e6f6562656c656e2c20436f6e>127 300 Q .3 -.15 -<7665782043>-.4 H<6f6d707574657220436f72702e>.15 E<457269632057>127 312 -Q<617373656e616172>-.8 E 2.5<2c4e>-.4 G<6174696f6e616c20496e737469747574 -6520666f72204e75636c65617220616e64204869676820456e6572>-2.5 E -<6779205068>-.18 E<79736963732c20416d7374657264616d>-.05 E -<52616e64616c6c2057>127 324 Q<696e63686573746572>-.4 E 2.5<2c55>-.4 G -<6e69>-2.5 E -.15<7665>-.25 G<7273697479206f66204d6172796c616e64>.15 E -<4368726973746f7068652057>127 336 Q<6f6c66687567656c2c2050>-.8 E -<61737465757220496e7374697475746520262048657276>-.15 E 2.5<6553>-.15 G -<63686175657220436f6e73756c74616e7473202850>-2.5 E<6172697329>-.15 E -<457861637469732e636f6d2c20496e632e>127 348 Q 3.22<4961>87 364.2 S .72 -<706f6c6f67697a6520666f7220616e>-3.22 F .72<796f6e652049206861>-.15 F -1.019 -.15<7665206f>-.2 H .719 -<6d69747465642c206d69737370656c6c65642c206d6973617474726962>.15 F .719 -<757465642c206f72206f7468657277697365206d69737365642e>-.2 F .719 -<4174207468697320706f696e742c2049>5.719 F 1.092<737573706563742074686174 -206174206c6561737420612068756e647265642070656f706c65206861>87 376.2 R -1.393 -.15<76652063>-.2 H<6f6e74726962>.15 E 1.093 -<7574656420636f64652c20616e64206d616e>-.2 F 3.593<796d>-.15 G 1.093 -<6f7265206861>-3.593 F 1.393 -.15<76652063>-.2 H<6f6e74726962>.15 E -1.093<757465642069646561732c>-.2 F 1.534 -<636f6d6d656e74732c20616e6420656e636f75726167656d656e742e>87 388.2 R -<4927>6.534 E 1.834 -.15<76652074>-.5 H 1.534 -<7269656420746f206c697374207468656d20696e207468652052454c454153455f4e4f> -.15 F 1.533<54455320696e207468652064697374726962>-.4 F<7574696f6e>-.2 E -<6469726563746f7279>87 400.2 Q 5<2e49>-.65 G -<6170707265636961746520746865697220636f6e74726962>-2.5 E -<7574696f6e2061732077656c6c2e>-.2 E .742 -<5370656369616c207468616e6b732061726520726573657276>112 416.4 R .742 -<656420666f72204d69636861656c20436f72726967>-.15 F .743 -<616e20616e64204368726973746f7068652057>-.05 F .743 -<6f6c66687567656c2c2077686f2062657369646573206265696e67>-.8 F -.1<776f> -87 428.4 S 2.1 -<6e64657266756c206775696e6561207069677320616e6420636f6e74726962>.1 F 2.1 -<75746f7273206861>-.2 F 2.4 -.15<76652061>-.2 H 2.1 -<6c736f20636f6e73656e74656420746f20626520616464656420746f207468652060> -.15 F<6073656e646d61696c4053656e642d>-.74 E<6d61696c2e4f524727>87 440.4 -Q 3.61<276c>-.74 G 1.11 -<69737420616e642c20627920616e73776572696e67207468652062>-3.61 F 1.111<75 -6c6b206f6620746865207175657374696f6e732073656e7420746f2074686174206c6973 -742c206861>-.2 F 1.411 -.15<76652066>-.2 H 1.111 -<72656564206d6520757020746f20646f>.15 F<6f746865722077>87 452.4 Q -<6f726b2e>-.1 E 0 Cg EP +/F0 10/Times-Bold@0 SF 188.36(SMM:08-104 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 1.123 +(for automatic startup of sendmail, pri)117 96 R -.25(va)-.25 G 1.124 +(te k).25 F -.15(ey)-.1 G 3.624(s\().15 G(Serv)-3.624 E(erK)-.15 E -.15 +(ey)-.25 G 1.124(File, ClientK).15 F -.15(ey)-.25 G 1.124 +(File\) must be stored).15 F 3.04(unencrypted. The)117 108 R -.1(ke)3.04 +G .54(ys are only protected by the permissions of the \214le system.) +-.05 F(Ne)5.54 E -.15(ve)-.25 G 3.04(rm).15 G(ak)-3.04 E 3.04(ea)-.1 G +(pri)117 120 Q -.25(va)-.25 G(te k).25 E .3 -.15(ey a)-.1 H -.25(va)-.05 +G(ilable to a third party).25 E(.)-.65 E .953(The options)142 136.2 R/F2 +10/Times-Italic@0 SF(ClientCertF)3.453 E(ile)-.45 E F1(,)A F2(ClientK) +3.453 E -.3(ey)-.35 G -.45(Fi).3 G(le).45 E F1(,)A F2(ServerCertF)3.453 +E(ile)-.45 E F1 3.453(,a)C(nd)-3.453 E F2(ServerK)3.453 E -.3(ey)-.35 G +-.45(Fi).3 G(le).45 E F1 .954(can tak)3.454 F 3.454(ea)-.1 G .946(secon\ +d \214le name, which must be separated from the \214rst with a comma \(\ +note: do not use an)117 148.2 R(y)-.15 E .657 +(spaces\) to set up a second cert/k)117 160.2 R .957 -.15(ey p)-.1 H +(air).15 E 5.657(.T)-.55 G .657(his can be used to ha)-5.657 F .957 -.15 +(ve c)-.2 H .658(erts of dif).15 F .658(ferent types, e.g.,)-.25 F +(RSA and DSA.)117 172.2 Q F0 2.5(6.6.2. PRNG)102 196.2 R -.25(fo)2.5 G +2.5(rS).25 G -.9(TA)-2.5 G -.4(RT).9 G(TLS).4 E F1(ST)142 212.4 Q(AR) +-.93 E .504(TTLS requires a strong pseudo random number generator \(PRN\ +G\) to operate prop-)-.6 F(erly)117 224.4 Q 5.055(.D)-.65 G .056 +(epending on the TLS library you use, it may be required to e)-5.055 F +.056(xplicitly initialize the PRNG)-.15 F 1.155(with random data.)117 +236.4 R 1.154(OpenSSL mak)6.154 F 1.154(es use of)-.1 F F0(/de)3.654 E +(v/urandom\(4\))-.15 E F1 1.154(if a)3.654 F -.25(va)-.2 G 1.154 +(ilable \(this corresponds to).25 F 1.442 +(the compile \215ag HASURANDOMDEV\).)117 248.4 R 1.443 +(On systems which lack this support, a random \214le)6.442 F .224 +(must be speci\214ed in the)117 260.4 R F2(sendmail.cf)2.723 E F1 .223 +(\214le using the option RandFile.)2.723 F .223(It is)5.223 F F0(str) +2.723 E(ongly)-.18 E F1 .223(advised to use)2.723 F .872(the "Entrop)117 +272.4 R 3.372(yG)-.1 G .872(athering Daemon" EGD from Brian W)-3.372 F +.873(arner on those systems to pro)-.8 F .873(vide useful)-.15 F 1.414 +(random data.)117 284.4 R 1.414(In this case,)6.414 F F2(sendmail)3.914 +E F1 1.413(must be compiled with the \215ag EGD, and the RandFile)3.913 +F .731(option must point to the EGD sock)117 296.4 R 3.231(et. If)-.1 F +(neither)3.231 E F0(/de)3.232 E(v/urandom\(4\))-.15 E F1 .732 +(nor EGD are a)3.232 F -.25(va)-.2 G .732(ilable, you).25 F(ha)117 308.4 +Q .474 -.15(ve t)-.2 H 2.674(om).15 G(ak)-2.674 E 2.674(es)-.1 G .174 +(ure that useful random data is a)-2.674 F -.25(va)-.2 G .174 +(ilable all the time in RandFile.).25 F .173(If the \214le hasn')5.174 F +(t)-.18 E .39(been modi\214ed in the last 10 minutes before it is suppo\ +sed to be used by)117 320.4 R F2(sendmail)2.89 E F1 .39(the content is) +2.89 F(considered obsolete.)117 332.4 Q +(One method for generating this \214le is:)5 E +(openssl rand -out /etc/mail/rand\214le -rand)157 348.6 Q F2 +(/path/to/\214le:...)2.5 E F1(256)A .321 +(See the OpenSSL documentation for more information.)117 364.8 R .32 +(In this case, the PRNG for TLS is only)5.321 F .956 +(seeded with other random data if the)117 376.8 R F0(DontBlameSendmail) +3.456 E F1(option)3.457 E F0(Insuf\214cientEntr)3.457 E(opy)-.18 E F1 +.957(is set.)3.457 F(This is most lik)117 388.8 Q(ely not suf)-.1 E +(\214cient for certain actions, e.g., generation of \(temporary\) k)-.25 +E -.15(ey)-.1 G(s.).15 E .051(Please see the OpenSSL documentation or o\ +ther sources for further information about cer)142 405 R(-)-.2 E 1.064(\ +ti\214cates, their creation and their usage, the importance of a good P\ +RNG, and other aspects of)117 417 R(TLS.)117 429 Q F0 2.5(6.7. Encoding) +87 453 R(of ST)2.5 E(AR)-.9 E(TTLS and A)-.4 E(UTH r)-.5 E(elated Macr) +-.18 E(os)-.18 E F1 .693(Macros that contain ST)127 469.2 R(AR)-.93 E +.693(TTLS and A)-.6 F .692 +(UTH related data which comes from outside sources,)-.55 F .809(e.g., a\ +ll macros containing information from certi\214cates, are encoded to a) +102 481.2 R -.2(vo)-.2 G .81(id problems with non-).2 F .193 +(printable or special characters.)102 493.2 R .193 +(The latter are '\\', '<', '>', '\(', '\)', '"', '+', and ' '.)5.193 F +.192(All of these char)5.192 F(-)-.2 E(acters are replaced by their v) +102 505.2 Q(alue in he)-.25 E(xadecimal with a leading '+'.)-.15 E -.15 +(Fo)5 G 2.5(re).15 G(xample:)-2.65 E(/C=US/ST=California/O=endmail.or) +142 521.4 Q(g/OU=pri)-.18 E -.25(va)-.25 G(te/CN=Darth Mail \(Cert\)/) +.25 E(Email=darth+cert@endmail.or)142 533.4 Q(g)-.18 E(is encoded as:) +102 549.6 Q(/C=US/ST=California/O=endmail.or)142 565.8 Q(g/OU=pri)-.18 E +-.25(va)-.25 G(te/).25 E +(CN=Darth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.or)142 577.8 Q +(g)-.18 E .515(\(line breaks ha)102 594 R .815 -.15(ve b)-.2 H .515 +(een inserted for readability\).).15 F .516 +(The macros which are subject to this encoding are)5.515 F 6.828({cert_\ +subject}, {cert_issuer}, {cn_subject}, {cn_issuer}, as well as {auth_au\ +then} and)102 606 R({auth_author}.)102 618 Q F0 2.5(6.8. D)87 642 R(ANE) +-.35 E F1 .525(Initial support for D)127 658.2 R .525 +(ANE \(see RFC 7672 et.al.\))-.4 F .525(is a)5.525 F -.25(va)-.2 G .525 +(ilable if).25 F F2(sendmail)3.026 E F1 .526(is compiled with the)3.026 +F(option)102 670.2 Q F0 -.35(DA)2.5 G(NE).35 E F1 5(.O)C +(nly TLSA RR 3-1-x \(D)-5 E(ANE-EE\) is currently implemented.)-.4 E +(The option)5 E 2.5(OD)142 686.4 S(ANE=true)-2.9 E +(enables this feature at run time and it automatically adds)102 702.6 Q +F0(use_dnssec)2.5 E F1(and)2.5 E F0(use_edns0)2.5 E F1(to)2.5 E 0 Cg EP %%Page: 105 101 %%BeginPageSetup BP %%EndPageSetup -/F0 12/Times-Bold@0 SF 3<415050454e4449582041>257.172 98.4 R -<434f4d4d414e44204c494e4520464c41>224.832 141.6 Q<4753>-.66 E/F1 10 -/Times-Roman@0 SF<4172>97 201 Q<67756d656e7473206d7573742062652070726573 -656e7465642077697468208d616773206265666f7265206164647265737365732e>-.18 -E<546865208d616773206172653a>5 E72 217.2 Q/F2 10/Times-Italic@0 SF -<78>A F1 .049<53656c65637420616e20616c7465726e617469>54.7 F .349 -.15 -<7665202e>-.25 H .049<6366208c6c6520776869636820697320656974686572>.15 F -F2<73656e646d61696c2e6366>2.549 E F1<666f72>2.549 E/F3 10/Times-Bold@0 -SF2.549 E F1<6f72>2.548 E F2<7375626d69742e6366>2.548 E F1 -<666f72>2.548 E F32.548 E F1 5.048<2e42>C<79>-5.048 E<646566>144 -229.2 Q .024<61756c7420746865202e6366208c6c652069732063686f73656e206261 -736564206f6e20746865206f7065726174696f6e206d6f64652e>-.1 F -.15<466f> -5.024 G<72>.15 E F3<2d626d>2.524 E F1<28646566>2.524 E<61756c74292c>-.1 -E F3<2d6273>2.524 E F1 2.524<2c61>C<6e64>-2.524 E F3<2d74>2.525 E F1 -<6974>2.525 E<6973>144 241.2 Q F2<7375626d69742e6366>2.5 E F1 -<69662069742065>2.5 E -<78697374732c20666f7220616c6c206f7468657273206974206973>-.15 E F2 -<73656e646d61696c2e6366>2.5 E F1<2e>A72 257.4 Q F2<78>A F1 -<536574206f7065726174696f6e206d6f646520746f>56.92 E F2<78>2.5 E F1 5 -<2e4f>C<7065726174696f6e206d6f646573206172653a>-5 E 12.22<6d44>184 273.6 -S<656c69>-12.22 E -.15<7665>-.25 G 2.5<726d>.15 G<61696c2028646566>-2.5 -E<61756c7429>-.1 E 16.11<7353>184 285.6 S -<7065616b20534d5450206f6e20696e7075742073696465>-16.11 E 8.06<61872060> -184 297.6 R -.8<6041>-.74 G<7270616e657427>.8 E 2.5<276d>-.74 G -<6f6465202867657420656e>-2.5 E -.15<7665>-.4 G<6c6f70652073656e64657220 -696e666f726d6174696f6e2066726f6d2068656164657229>.15 E 13.33<4343>184 -309.6 S<6865636b2074686520636f6e8c6775726174696f6e208c6c65>-13.33 E 15 -<6452>184 321.6 S -<756e2061732061206461656d6f6e20696e206261636b67726f756e64>-15 E 12.78 -<4452>184 333.6 S<756e2061732061206461656d6f6e20696e20666f7265>-12.78 E -<67726f756e64>-.15 E 17.22<7452>184 345.6 S -<756e20696e2074657374206d6f6465>-17.22 E 15<764a>184 357.6 S<7573742076> --15 E<6572696679206164647265737365732c20646f6e27>-.15 E 2.5<7463>-.18 G -<6f6c6c656374206f722064656c69>-2.5 E -.15<7665>-.25 G<72>.15 E 17.22 -<6949>184 369.6 S -<6e697469616c697a652074686520616c696173206461746162617365>-17.22 E 15 -<7050>184 381.6 S<72696e7420746865206d61696c207175657565>-15 E 14.44 -<5050>184 393.6 S<72696e74206f>-14.44 E -.15<7665>-.15 G<72766965>.15 E -2.5<776f>-.25 G -.15<7665>-2.65 G 2.5<7274>.15 G<6865206d61696c20717565 -75652028726571756972657320736861726564206d656d6f727929>-2.5 E 15<6850> -184 405.6 S<72696e74207468652070657273697374656e7420686f7374207374617475 -73206461746162617365>-15 E 12.78<4850>184 417.6 S<7572>-12.78 E -<67652065>-.18 E<78706972656420656e74726965732066726f6d2074686520706572 -73697374656e7420686f737420737461747573206461746162617365>-.15 E72 -438 Q F2<74797065>A F1<496e64696361746520626f647920747970652e>43.03 E -72 454.2 Q F2<8c6c65>A F1 .947<557365206120646966>47.47 F .946 -<666572656e7420636f6e8c6775726174696f6e208c6c652e>-.25 F F2 -<53656e646d61696c>5.946 E F1 .946<72756e732061732074686520696e>3.446 F --.2<766f>-.4 G .946 -<6b696e6720757365722028726174686572207468616e20726f6f7429>.2 F -<7768656e2074686973208d61672069732073706563698c65642e>144 466.2 Q -72 482.4 Q F2<6c6f>2.5 E<678c6c65>-.1 E F1<53656e6420646562>31.74 E -<756767696e67206f757470757420746f2074686520696e64696361746564>-.2 E F2 -<6c6f>2.5 E<678c6c65>-.1 E F1<696e7374656164206f66207374646f75742e>2.5 E -72 498.6 Q F2<6c65>A<76656c>-.15 E F1<53657420646562>42.63 E -<756767696e67206c65>-.2 E -.15<7665>-.25 G<6c2e>.15 E72 514.8 Q F2 -<61646472>2.5 E F1 .627<54686520656e>41.64 F -.15<7665>-.4 G .627 -<6c6f70652073656e64657220616464726573732069732073657420746f>.15 F F2 -<61646472>3.127 E F1 5.627<2e54>C .628<6869732061646472657373206d617920 -616c736f206265207573656420696e207468652046726f6d3a>-5.627 F .153<686561 -646572206966207468617420686561646572206973206d697373696e6720647572696e67 -20696e697469616c207375626d697373696f6e2e>144 526.8 R .152<54686520656e> -5.152 F -.15<7665>-.4 G .152 -<6c6f70652073656e6465722061646472657373206973>.15 F 1.263 -<757365642061732074686520726563697069656e7420666f722064656c69>144 538.8 -R -.15<7665>-.25 G 1.263<727920737461747573206e6f74698c636174696f6e7320 -616e64206d617920616c736f2061707065617220696e20612052657475726e2d>.15 F --.15<5061>144 550.8 S<74683a20686561646572>.15 E<2e>-.55 E72 567 Q -F2<6e616d65>2.5 E F1 -<53657473207468652066756c6c206e616d65206f662074686973207573657220746f> -36.64 E F2<6e616d65>2.5 E F1<2e>A 56.6472 583.2 R 1.176< -616363657074696e67206d65737361676573207669612074686520636f6d6d616e64206c -696e652c20696e646963617465207468617420746865>3.677 F 3.676<7961>-.15 G -1.176<726520666f722072656c6179202867>-3.676 F<6174652d>-.05 E -.1<7761> -144 595.2 S 2.215<7929207375626d697373696f6e2e>.1 F 2.216<73656e646d6169 -6c206d617920636f6d706c61696e2061626f75742073796e746163746963616c6c792069 -6e>7.215 F -.25<7661>-.4 G 2.216<6c6964206d657373616765732c20652e672e2c> -.25 F .037<756e7175616c698c656420686f7374206e616d65732c2072617468657220 -7468616e208c78696e67207468656d207768656e2074686973208d616720697320736574 -2e>144 607.2 R .037<73656e646d61696c2077696c6c206e6f7420646f>5.037 F -<616e>144 619.2 Q 2.5<7963>-.15 G -<616e6f6e6963616c697a6174696f6e20696e2074686973206d6f64652e>-2.5 E -72 635.4 Q F2<636e74>2.5 E F1 .725 -<53657473207468652099686f7020636f756e749a20746f>46.64 F F2<636e74>3.225 -E F1 5.725<2e54>C .726<68697320726570726573656e747320746865206e756d6265 -72206f662074696d65732074686973206d65737361676520686173206265656e>-5.725 -F .02<70726f636573736564206279>144 647.4 R F2<73656e646d61696c>2.52 E F1 -.02<28746f207468652065>2.52 F .02<7874656e742074686174206974206973207375 -70706f727465642062792074686520756e6465726c79696e67206e657477>-.15 F -<6f726b73292e>-.1 E F2<436e74>5.02 E F1 1.521<697320696e6372656d656e7465 -6420647572696e672070726f63657373696e672c20616e64206966206974207265616368 -6573204d4158484f50202863757272656e746c7920323529>144 659.4 R F2 -<73656e646d61696c>4.021 E F1<7468726f>144 671.4 Q<77732061>-.25 E -.1 -<7761>-.15 G 2.5<7974>.1 G -<6865206d657373616765207769746820616e206572726f72>-2.5 E<2e>-.55 E .32 -LW 76 681 72 681 DL 80 681 76 681 DL 84 681 80 681 DL 88 681 84 681 DL -92 681 88 681 DL 96 681 92 681 DL 100 681 96 681 DL 104 681 100 681 DL -108 681 104 681 DL 112 681 108 681 DL 116 681 112 681 DL 120 681 116 681 -DL 124 681 120 681 DL 128 681 124 681 DL 132 681 128 681 DL 136 681 132 -681 DL 140 681 136 681 DL 144 681 140 681 DL 148 681 144 681 DL 152 681 -148 681 DL 156 681 152 681 DL 160 681 156 681 DL 164 681 160 681 DL 168 -681 164 681 DL 172 681 168 681 DL 176 681 172 681 DL 180 681 176 681 DL -184 681 180 681 DL 188 681 184 681 DL 192 681 188 681 DL 196 681 192 681 -DL 200 681 196 681 DL 204 681 200 681 DL 208 681 204 681 DL 212 681 208 -681 DL 216 681 212 681 DL/F4 8/Times-Roman@0 SF -<87446570726563617465642e>93.6 693 Q F3<53656e646d61696c20496e7374616c6c -6174696f6e20616e64204f7065726174696f6e204775696465>72 756 Q -<534d4d3a30382d313035>190.86 E 0 Cg EP +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-105)190.86 E/F1 10/Times-Roman@0 SF 2.5(OR)142 96 S(esolv)-2.5 E +(erOptions)-.15 E(This requires a \(preferrably local\) v)102 112.2 Q +(alidating DNS resolv)-.25 E(er which supports those options.)-.15 E +2.621(If the client \214nds a usable TLSA RR and the check succeeds the\ + macro)102 136.2 R F0(${v)5.121 E(erify})-.1 E F1 2.621(is set to)5.121 +F F0(TR)102 148.2 Q(USTED)-.3 E F1 5.833(.A)C .834 +(ll non-DNS maps are considered)-5.833 F/F2 10/Times-Italic@0 SF(secur) +3.334 E(e)-.37 E F1 .834(just lik)3.334 F 3.334(eD)-.1 G .834 +(NS lookups with DNSSEC.)-3.334 F(Be)5.834 E -2.3 -.15(aw a)102 160.2 T +.023(re that the implementation might not handle all error conditions a\ +s required by the RFCs.).15 F(More-)5.023 E -.15(ove)102 172.2 S .8 -.4 +(r, T).15 H(LSA RRs are not look).4 E(ed up for some features, e.g.,)-.1 +E F2 -.75(Fa)2.5 G(llBac).75 E(kSmartHost)-.2 E F1(.)A F0 2.5(7. A)72 +196.2 R(CKNO)-.55 E(WLEDGEMENTS)-.5 E F1(I')112 212.4 Q 2.036 -.15(ve w) +-.5 H(ork).05 E 1.737(ed on)-.1 F F2(sendmail)4.237 E F1 1.737(for man) +4.237 F 4.237(yy)-.15 G 1.737(ears, and man)-4.237 F 4.237(ye)-.15 G +(mplo)-4.237 E 1.737(yers ha)-.1 F 2.037 -.15(ve b)-.2 H 1.737 +(een remarkably patient).15 F .404(about letting me w)87 224.4 R .404 +(ork on a lar)-.1 F .404(ge project that w)-.18 F .403 +(as not part of my of)-.1 F .403(\214cial job)-.25 F 5.403(.T)-.4 G .403 +(his includes time on the)-5.403 F .281(INGRES Project at the Uni)87 +236.4 R -.15(ve)-.25 G .282(rsity of California at Berk).15 F(ele)-.1 E +1.582 -.65(y, a)-.15 H 2.782(tB).65 G .282(ritton Lee, and ag)-2.782 F +.282(ain on the Mammoth)-.05 F(and T)87 248.4 Q(itan Projects at Berk) +-.35 E(ele)-.1 E -.65(y.)-.15 G .79(Much of the second w)112 264.6 R +-2.25 -.2(av e)-.1 H .789(of impro)3.49 F -.15(ve)-.15 G .789 +(ments resulting in v).15 F .789(ersion 8.1 should be credited to Bryan) +-.15 F .545(Costales of the International Computer Science Institute.)87 +276.6 R .545(As he passed me drafts of his book on)5.545 F F2(send-) +3.045 E(mail)87 288.6 Q F1 2.5(Iw)2.5 G(as inspired to start w)-2.6 E +(orking on things ag)-.1 E 2.5(ain. Bryan)-.05 F -.1(wa)2.5 G 2.5(sa).1 +G(lso a)-2.5 E -.25(va)-.2 G(ilable to bounce ideas of).25 E 2.5(fo)-.25 +G(f.)-2.5 E(Gre)112 304.8 Q .168(gory Neil Shapiro of W)-.15 F .168(orc\ +ester Polytechnic Institute has become instrumental in all phases of)-.8 +F F2(sendmail)87 316.8 Q F1 .34(support and de)2.84 F -.15(ve)-.25 G .34 +(lopment, and w).15 F .34(as lar)-.1 F .34 +(gely responsible for getting v)-.18 F .34(ersions 8.8 and 8.9 out the) +-.15 F(door)87 328.8 Q(.)-.55 E(Man)112 345 Q 2.857 -.65(y, m)-.15 H(an) +.65 E 4.057(yp)-.15 G 1.557(eople contrib)-4.057 F 1.556 +(uted chunks of code and ideas to)-.2 F F2(sendmail)4.056 E F1 6.556(.I) +C 4.056(th)-6.556 G 1.556(as pro)-4.056 F -.15(ve)-.15 G 4.056(nt).15 G +4.056(ob)-4.056 G 4.056(ea)-4.056 G .405(group netw)87 357 R .405 +(ork ef)-.1 F 2.905(fort. V)-.25 F .405(ersion 8 in particular w)-1.11 F +.405(as a group project.)-.1 F .406(The follo)5.406 F .406 +(wing people and or)-.25 F -.05(ga)-.18 G(niza-).05 E +(tions made notable contrib)87 369 Q(utions:)-.2 E(Claus Assmann)127 +385.2 Q(John Beck, He)127 397.2 Q(wlett-P)-.25 E +(ackard & Sun Microsystems)-.15 E -.25(Ke)127 409.2 S +(ith Bostic, CSRG, Uni).25 E -.15(ve)-.25 G(rsity of California, Berk) +.15 E(ele)-.1 E(y)-.15 E(Andre)127 421.2 Q 2.5(wC)-.25 G +(heng, Sun Microsystems)-2.5 E(Michael J. Corrig)127 433.2 Q(an, Uni) +-.05 E -.15(ve)-.25 G(rsity of California, San Die).15 E(go)-.15 E +(Bryan Costales, International Computer Science Institute & InfoBeat)127 +445.2 Q -.15(Pa)127 457.2 S -.5(..)-4.402 -6 O 2.5(r\().552 6 O +(Pell\) Emanuelsson)-2.5 E(Craig Ev)127 469.2 Q(erhart, T)-.15 E +(ransarc Corporation)-.35 E(Per Hedeland, Ericsson)127 481.2 Q -.8(To) +127 493.2 S 2.5(mI).8 G -.25(va)-2.5 G 2.5(rH).25 G(elbekkmo, Norwe)-2.5 +E(gian School of Economics)-.15 E +(Kari Hurtta, Finnish Meteorological Institute)127 505.2 Q +(Allan E. Johannesen, WPI)127 517.2 Q(Jonathan Kamens, OpenV)127 529.2 Q +(ision T)-.6 E(echnologies, Inc.)-.7 E -.8(Ta)127 541.2 S +(kahiro Kanbe, Fuji Xerox Information Systems Co., Ltd.).8 E +(Brian Kantor)127 553.2 Q 2.5(,U)-.4 G(ni)-2.5 E -.15(ve)-.25 G +(rsity of California, San Die).15 E(go)-.15 E(John K)127 565.2 Q(ennedy) +-.25 E 2.5(,C)-.65 G(al State Uni)-2.5 E -.15(ve)-.25 G(rsity).15 E 2.5 +(,C)-.65 G(hico)-2.5 E(Murray S. K)127 577.2 Q(uchera)-.15 E(wy)-.15 E +2.5(,H)-.65 G(ookUp Communication Corp.)-2.5 E(Bruce Lilly)127 589.2 Q +2.5(,S)-.65 G(on)-2.5 E 2.5(yU)-.15 G(.S.)-2.5 E(Karl London)127 601.2 Q +(Motonori Nakamura, Ritsumeikan Uni)127 613.2 Q -.15(ve)-.25 G +(rsity & K).15 E(yoto Uni)-.25 E -.15(ve)-.25 G(rsity).15 E +(John Gardiner Myers, Carne)127 625.2 Q(gie Mellon Uni)-.15 E -.15(ve) +-.25 G(rsity).15 E(Neil Rick)127 637.2 Q(ert, Northern Illinois Uni)-.1 +E -.15(ve)-.25 G(rsity).15 E(Gre)127 649.2 Q(gory Neil Shapiro, WPI)-.15 +E(Eric Schnoebelen, Con)127 661.2 Q .3 -.15(vex C)-.4 H(omputer Corp.) +.15 E(Eric W)127 673.2 Q(assenaar)-.8 E 2.5(,N)-.4 G +(ational Institute for Nuclear and High Ener)-2.5 E(gy Ph)-.18 E +(ysics, Amsterdam)-.05 E(Randall W)127 685.2 Q(inchester)-.4 E 2.5(,U) +-.4 G(ni)-2.5 E -.15(ve)-.25 G(rsity of Maryland).15 E(Christophe W)127 +697.2 Q(olfhugel, P)-.8 E(asteur Institute & Herv)-.15 E 2.5(eS)-.15 G +(chauer Consultants \(P)-2.5 E(aris\))-.15 E(Exactis.com, Inc.)127 709.2 +Q 3.22(Ia)87 725.4 S .72(pologize for an)-3.22 F .72(yone I ha)-.15 F +1.019 -.15(ve o)-.2 H .719(mitted, misspelled, misattrib).15 F .719 +(uted, or otherwise missed.)-.2 F .719(At this point, I)5.719 F 0 Cg EP %%Page: 106 102 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 188.36<534d4d3a30382d3130362053656e646d61696c>72 -60 R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465> -2.5 E/F1 10/Times-Roman@0 SF72 96 Q/F2 10/Times-Italic@0 SF<7461> -2.5 E<67>-.1 E F1 1.483 -<5365747320746865206964656e74698c6572207573656420666f72207379736c6f672e> -45.07 F 1.482<4e6f746520746861742074686973206964656e74698c65722069732073 -6574206173206561726c7920617320706f737369626c652e>6.483 F<486f>144 108 Q -<7765>-.25 E -.15<7665>-.25 G -.4<722c>.15 G F2<73656e646d61696c>2.915 E -F1 .015<6d617920626520757365642069662070726f626c656d73206172697365206265 -666f72652074686520636f6d6d616e64206c696e65206172>2.515 F .016 -<67756d656e747320617265>-.18 F<70726f6365737365642e>144 120 Q 58.86 -72 136.2 R 2.5<7464>-.18 G 2.5<6f61>-2.5 G -<6c696173696e67206f7220666f7277>-2.5 E<617264696e672e>-.1 E72 -152.4 Q F2<6e6f74698c636174696f6e73>2.5 E F1 -.8<5461>7.19 G 3.128<6761> -.8 G .628<6c6c20616464726573736573206265696e672073656e742061732077> --3.128 F .628<616e74696e672074686520696e64696361746564>-.1 F F2 -<6e6f74698c636174696f6e73>3.128 E F1 3.127<2c77>C .627 -<6869636820636f6e7369737473206f6620746865>-3.127 F -.1<776f>144 164.4 S -.474<726420994e455645529a206f72206120636f6d6d612d736570617261746564206c -697374206f662099535543434553539a2c209946>.1 F .474 -<41494c5552459a2c20616e64209944454c41>-.74 F<599a>-1.05 E .86 -<666f72207375636365737366756c2064656c69>144 176.4 R -.15<7665>-.25 G -<7279>.15 E 3.36<2c66>-.65 G .86<61696c7572652c20616e642061206d65737361 -6765207468617420697320737475636b20696e206120717565756520736f6d65>-3.46 F -3.36<77686572652e20546865>-.25 F<646566>144 188.4 Q -<61756c74206973209946>-.1 E<41494c5552452c44454c41>-.74 E<599a2e>-1.05 E -72 204.6 Q F2<61646472>2.5 E F1 -<416e206f62736f6c65746520666f726d206f66>41.64 E F02.5 E F1<2e>A -72 220.8 Q F2 1.666<7876>C<616c7565>-1.666 E F1 -<536574206f7074696f6e>33.594 E F2<78>2.5 E F1 -<746f207468652073706563698c6564>2.5 E F2<76616c7565>2.5 E F1 5<2e54>C<68 -657365206f7074696f6e73206172652064657363726962656420696e2053656374696f6e -20352e362e>-5 E72 237 Q F2<6f7074696f6e>A F0<3d>A F2<76616c7565>A -F1<536574>6.22 E F2<6f7074696f6e>5.173 E F1 2.674 -<746f207468652073706563698c6564>5.173 F F2<76616c7565>5.174 E F1 2.674 -<28666f72206c6f6e6720666f726d206f7074696f6e206e616d6573292e>5.174 F -2.674<5468657365206f7074696f6e7320617265>7.674 F -<64657363726962656420696e2053656374696f6e20352e362e>144 249 Q72 -265.2 Q F2 1.666<7876>C<616c7565>-1.666 E F1<536574206d6163726f>29.704 E -F2<78>2.5 E F1<746f207468652073706563698c6564>2.5 E F2<76616c7565>2.5 E -F1<2e>A72 281.4 Q F2<7072>A<6f746f636f6c>-.45 E F1 .401 -<536574207468652073656e64696e672070726f746f636f6c2e>27.92 F .401<50726f -6772616d732061726520656e636f75726167656420746f2073657420746869732e>5.401 -F .4<5468652070726f746f636f6c208c656c642063616e206265>5.401 F .114 -<696e2074686520666f726d>144 293.4 R F2<7072>2.614 E<6f746f636f6c>-.45 E -F0<3a>A F2<686f7374>A F1 .114<746f2073657420626f7468207468652073656e6469 -6e672070726f746f636f6c20616e642073656e64696e6720686f73742e>2.614 F -.15 -<466f>5.115 G 2.615<7265>.15 G<78616d706c652c>-2.765 E 2.147<99ad705555 -43503a75756e65749a2073657473207468652073656e64696e672070726f746f636f6c20 -746f205555435020616e64207468652073656e64696e6720686f737420746f2075756e65 -742e>144 305.4 R .973<28536f6d652065>144 317.4 R .974<78697374696e672070 -726f6772616d732075736520ad6f4d20746f2073657420746865207220616e642073206d -6163726f733b20746869732069732065717569>-.15 F -.25<7661>-.25 G .974 -<6c656e7420746f207573696e67>.25 F144 329.4 Q72 345.6 Q -F2<74696d65>A F1 -.35<5472>44.14 G 2.776<7974>.35 G 2.776<6f70>-2.776 G -.276<726f636573732074686520717565756564207570206d61696c2e>-2.776 F .276 -<4966207468652074696d65206973206769>5.276 F -.15<7665>-.25 G .275 -<6e2c2061>.15 F F2<73656e646d61696c>2.775 E F1 .275 -<77696c6c207374617274206f6e65206f72206d6f7265>2.775 F .011<70726f636573 -73657320746f2072756e207468726f756768207468652071756575652873292061742074 -68652073706563698c65642074696d6520696e74657276>144 357.6 R .011 -<616c20746f2064656c69>-.25 F -.15<7665>-.25 G 2.511<7271>.15 G .011 -<7565756564206d61696c3b>-2.511 F .906 -<6f74686572776973652c206974206f6e6c792072756e73206f6e63652e>144 369.6 R -.906 -<45616368206f662074686573652070726f6365737365732061637473206f6e20612077> -5.906 F 3.405<6f726b67726f75702e205468657365>-.1 F<70726f2d>3.405 E .959 -<6365737365732061726520616c736f206b6e6f>144 381.6 R .959<776e2061732077> --.25 F .959<6f726b67726f75702070726f636573736573206f722057475027>-.1 F -3.459<7366>-.55 G .959<6f722073686f72742e>-3.459 F .96<456163682077>5.96 -F .96<6f726b67726f7570206973>-.1 F .523<726573706f6e7369626c6520666f7220 -636f6e74726f6c6c696e67207468652070726f63657373696e67206f66206f6e65206f72 -206d6f7265207175657565733b2077>144 393.6 R .522 -<6f726b67726f7570732068656c70206d616e2d>-.1 F 1.268<61676520746865207573 -65206f662073797374656d207265736f75726365732062792073656e646d61696c2e>144 -405.6 R 1.268<456163682077>6.268 F 1.268<6f726b67726f7570206d6179206861> --.1 F 1.568 -.15<7665206f>-.2 H 1.268<6e65206f72206d6f7265>.15 F .357<63 -68696c6472656e20636f6e63757272656e746c792070726f63657373696e672071756575 -657320646570656e64696e67206f6e207468652073657474696e67206f66>144 417.6 R -F2<4d617851756575654368696c6472>2.856 E<656e>-.37 E F1<2e>A72 -433.8 Q F2<74696d65>A F1 1.174 -<53696d696c617220746f20ad71207769746820612074696d65206172>39.14 F 1.175 -<67756d656e742c2065>-.18 F 1.175<7863657074207468617420696e737465616420 -6f6620706572696f646963616c6c79207374617274696e672057475027>-.15 F<73> --.55 E .7 -<73656e646d61696c207374617274732070657273697374656e742057475027>144 -445.8 R 3.2<7374>-.55 G .7<68617420616c7465726e617465206265747765656e20 -70726f63657373696e672071756575657320616e6420736c656570696e672e>-3.2 F -1.123<54686520736c6565702074696d652069732073706563698c656420627920746865 -2074696d65206172>144 457.8 R 1.123<67756d656e743b20697420646566>-.18 F -1.123<61756c747320746f2031207365636f6e642c2065>-.1 F 1.124 -<786365707420746861742061>-.15 F 1.294<57475020616c>144 469.8 R -.1 -<7761>-.1 G 1.293<797320736c65657073206174206c656173742035207365636f6e64 -7320696620746865697220717565756573207765726520656d70747920696e2074686520 -707265>.1 F 1.293<76696f75732072756e2e>-.25 F .138<50657273697374656e74 -2070726f63657373657320617265206d616e61676564206279206120717565756520636f -6e74726f6c2070726f636573732028514350292e>144 481.8 R .139 -<546865205143502069732074686520706172>5.139 F<2d>-.2 E .18 -<656e742070726f63657373206f66207468652057475027>144 493.8 R 2.679 -<732e2054>-.55 F .179<79706963616c6c7920746865205143502077696c6c20626520 -7468652073656e646d61696c206461656d6f6e20287768656e2073746172746564>-.8 F -.424<7769746820ad6264206f7220ad624429206f722061207370656369616c2070726f -6365737320286e616d656420517565756520636f6e74726f6c2920287768656e20737461 -7274656420776974686f757420ad6264>144 505.8 R .72<6f7220ad6244292e>144 -517.8 R .72<496620612070657273697374656e74205747502063656173657320746f20 -62652061637469>5.72 F 1.019 -.15<76652066>-.25 H .719 -<6f7220736f6d6520726561736f6e20616e6f74686572205747502077696c6c206265> -.15 F .862 -<73746172746564206279207468652051435020666f72207468652073616d652077>144 -529.8 R .862<6f726b67726f757020696e206d6f73742063617365732e205768656e20 -612070657273697374656e742057475020686173>-.1 F 1.008 -<636f72652064756d7065642c2074686520646562>144 541.8 R 1.008 -<7567208d6167>-.2 F F2<6e6f5f706572>3.508 E<73697374656e745f72>-.1 E -<657374617274>-.37 E F1 1.007<697320736574206f72207468652073706563698c63 -2070657273697374656e7420574750>3.508 F .676 -<686173206265656e2072657374617274656420746f6f206d616e>144 553.8 R 3.176 -<7974>-.15 G .676<696d657320616c7265616479207468656e20746865205747502077 -696c6c206e6f742062652073746172746564206167>-3.176 F .677 -<61696e20616e642061>-.05 F .876 -<6d6573736167652077696c6c206265206c6f6767656420746f2074686973206566>144 -565.8 R 3.375<666563742e2054>-.25 F 3.375<6f73>-.8 G .875<746f7020285349 -475445524d29206f722072657374617274202853494748555029207065727369732d> --3.375 F .116<74656e742057475027>144 577.8 R 2.616<7374>-.55 G .116<6865 -20617070726f707269617465207369676e616c2073686f756c642062652073656e742074 -6f2074686520514350>-2.616 F 2.616<2e54>-1.11 G .116 -<6865205143502077696c6c2070726f706167>-2.616 F .116<61746520746865>-.05 -F<7369676e616c20746f20616c6c206f66207468652057475027>144 589.8 Q 2.5 -<7361>-.55 G<6e6420696620617070726f707269617465207265737461727420746865 -2070657273697374656e742057475027>-2.5 E<732e>-.55 E72 606 Q F2 -<476e616d65>A F1 -<52756e20746865206a6f627320696e207468652071756575652067726f7570>32.48 E -F2<6e616d65>2.5 E F1<6f6e63652e>2.5 E72 622.2 Q F2 -<58737472696e67>A F1 .313<52756e20746865207175657565206f6e63652c206c696d -6974696e6720746865206a6f627320746f2074686f7365206d61746368696e67>21.92 F -F2<58737472696e67>2.812 E F1 5.312<2e54>C .312<6865206b>-5.312 F .612 --.15<6579206c>-.1 H<6574746572>.15 E F2<58>2.812 E F1 .312<63616e206265> -2.812 F F0<49>144 634.2 Q F1 1.347 -<746f206c696d6974206261736564206f6e207175657565206964656e74698c6572> -3.847 F<2c>-.4 E F0<52>3.847 E F1 1.347 -<746f206c696d6974206261736564206f6e20726563697069656e742c>3.847 F F0<53> -3.847 E F1 1.347<746f206c696d6974206261736564206f6e>3.847 F -<73656e646572>144 646.2 Q 4.758<2c6f>-.4 G<72>-4.758 E F0<51>4.758 E F1 -2.258<746f206c696d6974206261736564206f6e2071756172616e74696e652072656173 -6f6e20666f722071756172616e74696e6564206a6f62732e>4.758 F 4.757<4170> -7.257 G<6172746963756c6172>-4.757 E .062<717565756564206a6f622069732061 -63636570746564206966206f6e65206f662074686520636f72726573706f6e64696e6720 -617474726962>144 658.2 R .063 -<7574657320636f6e7461696e732074686520696e64696361746564>-.2 F F2 -<737472696e67>2.563 E F1<2e>A .779 -<546865206f7074696f6e616c202120636861726163746572206e65>144 670.2 R -.05 -<6761>-.15 G .778<7465732074686520636f6e646974696f6e207465737465642e>.05 -F<4d756c7469706c65>5.778 E F23.278 E F1 .778 -<8d61677320617265207065726d69747465642c>3.278 F .622 -<77697468206974656d732077697468207468652073616d65206b>144 682.2 R .922 --.15<6579206c>-.1 H .622<657474657220996f722765649a20746f676574686572> -.15 F 3.122<2c61>-.4 G .622<6e64206974656d73207769746820646966>-3.122 F -.623<666572656e74206b>-.25 F .923 -.15<6579206c>-.1 H<657474657273>.15 E -<99616e642765649a20746f676574686572>144 694.2 Q<2e>-.55 E 23.88 -72 710.4 R 4.689<616e>4.69 G -2.189<6f726d616c207175657565206974656d73207769746820746865206769>-4.689 -F -.15<7665>-.25 G 4.689<6e72>.15 G 2.189 -<6561736f6e206f7220756e71756172616e74696e652071756172616e74696e6564> --4.689 F 1.797 -<7175657565206974656d73206966206e6f20726561736f6e206973206769>144 722.4 -R -.15<7665>-.25 G 4.297<6e2e2054686973>.15 F 1.797<73686f756c64206f6e6c -792062652075736564207769746820736f6d6520736f7274206f66206974656d>4.297 F -0 Cg EP +/F0 10/Times-Bold@0 SF 188.36(SMM:08-106 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 1.092 +(suspect that at least a hundred people ha)87 96 R 1.393 -.15(ve c)-.2 H +(ontrib).15 E 1.093(uted code, and man)-.2 F 3.593(ym)-.15 G 1.093 +(ore ha)-3.593 F 1.393 -.15(ve c)-.2 H(ontrib).15 E 1.093(uted ideas,) +-.2 F 1.534(comments, and encouragement.)87 108 R(I')6.534 E 1.834 -.15 +(ve t)-.5 H 1.534(ried to list them in the RELEASE_NO).15 F 1.533 +(TES in the distrib)-.4 F(ution)-.2 E(directory)87 120 Q 5(.I)-.65 G +(appreciate their contrib)-2.5 E(ution as well.)-.2 E .742 +(Special thanks are reserv)112 136.2 R .742(ed for Michael Corrig)-.15 F +.743(an and Christophe W)-.05 F .743(olfhugel, who besides being)-.8 F +-.1(wo)87 148.2 S 2.1(nderful guinea pigs and contrib).1 F 2.1(utors ha) +-.2 F 2.4 -.15(ve a)-.2 H 2.1(lso consented to be added to the `).15 F +(`sendmail@Send-)-.74 E(mail.ORG')87 160.2 Q 3.61('l)-.74 G 1.11 +(ist and, by answering the b)-3.61 F 1.111 +(ulk of the questions sent to that list, ha)-.2 F 1.411 -.15(ve f)-.2 H +1.111(reed me up to do).15 F(other w)87 172.2 Q(ork.)-.1 E 0 Cg EP %%Page: 107 103 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d313037>190.86 E -/F1 10/Times-Roman@0 SF<6d61746368696e67207573696e67>144 96 Q F0 -2.5 E/F2 10/Times-Italic@0 SF<58737472696e67>A F1 -<6173206465736372696265642061626f>2.5 E -.15<7665>-.15 G<2e>.15 E -72 112.2 Q 1.687 -<5768617420696e666f726d6174696f6e20796f752077>46.64 F 1.687<616e74207265 -7475726e656420696620746865206d65737361676520626f756e6365733b>-.1 F F2 --.37<7265>4.187 G<74>.37 E F1 1.687<63616e2062652099484452539a20666f72> -4.187 F .877<68656164657273206f6e6c79206f72209946554c4c9a20666f72206865 -616465727320706c757320626f6479>144 124.2 R 5.877<2e54>-.65 G .878<686973 -20697320612072657175657374206f6e6c793b20746865206f7468657220656e64206973> --5.877 F 1.309 -<6e6f7420726571756972656420746f20686f6e6f722074686520706172616d65746572> -144 136.2 R 6.309<2e49>-.55 G 3.808<6699>-6.309 G 1.308<484452539a206973 -2073706563698c6564206c6f63616c20626f756e63657320616c736f2072657475726e> --3.808 F<6f6e6c792074686520686561646572732e>144 148.2 Q 61.08 -72 164.4 R .752<7468652068656164657220666f72209954>3.252 -F .752<6f3a9a2c209943633a9a2c20616e6420994263633a9a206c696e65732c20616e -642073656e6420746f2065>-.8 F -.15<7665>-.25 G .752 -<72796f6e65206c697374656420696e2074686f7365>.15 F 2.54 -<6c697374732e20546865>144 176.4 R .039<994263633a9a206c696e652077696c6c -2062652064656c65746564206265666f72652073656e64696e672e>2.54 F<416e>5.039 -E 2.539<7961>-.15 G .039<646472657373657320696e20746865206172>-2.539 F -.039<67756d656e742076>-.18 F<65632d>-.15 E<746f722077696c6c206265206465 -6c657465642066726f6d207468652073656e64206c6973742e>144 188.4 Q -72 204.6 Q 32.32<76696420546865>-.4 F<696e64696361746564> -3.179 E F2<656e>3.179 E<766964>-.4 E F1 .679 -<69732070617373656420776974682074686520656e>3.179 F -.15<7665>-.4 G .68< -6c6f7065206f6620746865206d65737361676520616e642072657475726e656420696620 -746865206d65732d>.15 F<7361676520626f756e6365732e>144 216.6 Q72 -232.8 Q F2<6c6f>2.5 E<678c6c65>-.1 E F1 .725<4c6f6720616c6c2074726166> -31.74 F .725<8c6320696e20616e64206f7574206f66>-.25 F F2 -<73656e646d61696c>3.225 E F1 .725<696e2074686520696e64696361746564>3.225 -F F2<6c6f>3.224 E<678c6c65>-.1 E F1 .724<666f7220646562>3.224 F .724 -<756767696e67206d61696c65722070726f622d>-.2 F 2.5<6c656d732e2054686973> -144 244.8 R<70726f64756365732061206c6f74206f6620646174612076>2.5 E<6572 -7920717569636b6c7920616e642073686f756c6420626520757365642073706172696e67 -6c79>-.15 E<2e>-.65 E .637<5468657265206172652061206e756d626572206f6620 -6f7074696f6e732074686174206d61792062652073706563698c6564206173207072696d -697469>97 261 R .938 -.15<7665208d>-.25 H 3.138<6167732e205468657365>.15 -F .638<6172652074686520652c20692c206d2c20616e642076>3.138 F 3.785 -<6f7074696f6e732e20416c736f2c>72 273 R 1.285 -<7468652066206f7074696f6e206d61792062652073706563698c656420617320746865> -3.785 F F03.784 E F1 3.784<8d61672e20546865>3.784 F 1.284 -<44534e2072656c61746564206f7074696f6e732099ad4e9a2c2099ad529a2c20616e64> -3.784 F<99ad569a206861>72 285 Q .3 -.15<7665206e>-.2 H 2.5<6f65>.15 G --.25<6666>-2.5 G<65637473206f6e>.25 E F2<73656e646d61696c>2.5 E F1 -<72756e6e696e67206173206461656d6f6e2e>2.5 E 0 Cg EP +/F0 12/Times-Bold@0 SF 3(APPENDIX A)257.172 98.4 R(COMMAND LINE FLA) +224.832 141.6 Q(GS)-.66 E/F1 10/Times-Roman@0 SF(Ar)97 201 Q +(guments must be presented with \215ags before addresses.)-.18 E +(The \215ags are:)5 E72 217.2 Q/F2 10/Times-Italic@0 SF(x)A F1 +.049(Select an alternati)54.7 F .349 -.15(ve .)-.25 H .049 +(cf \214le which is either).15 F F2(sendmail.cf)2.549 E F1(for)2.549 E +/F3 10/Times-Bold@0 SF(\255Am)2.549 E F1(or)2.548 E F2(submit.cf)2.548 E +F1(for)2.548 E F3(\255Ac)2.548 E F1 5.048(.B)C(y)-5.048 E(def)144 229.2 +Q .024(ault the .cf \214le is chosen based on the operation mode.)-.1 F +-.15(Fo)5.024 G(r).15 E F3(-bm)2.524 E F1(\(def)2.524 E(ault\),)-.1 E F3 +(-bs)2.524 E F1 2.524(,a)C(nd)-2.524 E F3(-t)2.525 E F1(it)2.525 E(is) +144 241.2 Q F2(submit.cf)2.5 E F1(if it e)2.5 E +(xists, for all others it is)-.15 E F2(sendmail.cf)2.5 E F1(.)A72 +257.4 Q F2(x)A F1(Set operation mode to)56.92 E F2(x)2.5 E F1 5(.O)C +(peration modes are:)-5 E 12.22(mD)184 273.6 S(eli)-12.22 E -.15(ve)-.25 +G 2.5(rm).15 G(ail \(def)-2.5 E(ault\))-.1 E 16.11(sS)184 285.6 S +(peak SMTP on input side)-16.11 E 8.06(a\207 `)184 297.6 R -.8(`A)-.74 G +(rpanet').8 E 2.5('m)-.74 G(ode \(get en)-2.5 E -.15(ve)-.4 G +(lope sender information from header\)).15 E 13.33(CC)184 309.6 S +(heck the con\214guration \214le)-13.33 E 15(dR)184 321.6 S +(un as a daemon in background)-15 E 12.78(DR)184 333.6 S +(un as a daemon in fore)-12.78 E(ground)-.15 E 17.22(tR)184 345.6 S +(un in test mode)-17.22 E 15(vJ)184 357.6 S(ust v)-15 E +(erify addresses, don')-.15 E 2.5(tc)-.18 G(ollect or deli)-2.5 E -.15 +(ve)-.25 G(r).15 E 17.22(iI)184 369.6 S(nitialize the alias database) +-17.22 E 15(pP)184 381.6 S(rint the mail queue)-15 E 14.44(PP)184 393.6 +S(rint o)-14.44 E -.15(ve)-.15 G(rvie).15 E 2.5(wo)-.25 G -.15(ve)-2.65 +G 2.5(rt).15 G(he mail queue \(requires shared memory\))-2.5 E 15(hP)184 +405.6 S(rint the persistent host status database)-15 E 12.78(HP)184 +417.6 S(ur)-12.78 E(ge e)-.18 E +(xpired entries from the persistent host status database)-.15 E72 +438 Q F2(type)A F1(Indicate body type.)43.03 E72 454.2 Q F2 +(\214le)A F1 .947(Use a dif)47.47 F .946(ferent con\214guration \214le.) +-.25 F F2(Sendmail)5.946 E F1 .946(runs as the in)3.446 F -.2(vo)-.4 G +.946(king user \(rather than root\)).2 F +(when this \215ag is speci\214ed.)144 466.2 Q72 482.4 Q F2(lo)2.5 +E(g\214le)-.1 E F1(Send deb)31.74 E(ugging output to the indicated)-.2 E +F2(lo)2.5 E(g\214le)-.1 E F1(instead of stdout.)2.5 E72 498.6 Q F2 +(le)A(vel)-.15 E F1(Set deb)42.63 E(ugging le)-.2 E -.15(ve)-.25 G(l.) +.15 E72 514.8 Q F2(addr)2.5 E F1 .627(The en)41.64 F -.15(ve)-.4 G +.627(lope sender address is set to).15 F F2(addr)3.127 E F1 5.627(.T)C +.628(his address may also be used in the From:)-5.627 F .153 +(header if that header is missing during initial submission.)144 526.8 R +.152(The en)5.152 F -.15(ve)-.4 G .152(lope sender address is).15 F +1.263(used as the recipient for deli)144 538.8 R -.15(ve)-.25 G 1.263 +(ry status noti\214cations and may also appear in a Return-).15 F -.15 +(Pa)144 550.8 S(th: header).15 E(.)-.55 E72 567 Q F2(name)2.5 E F1 +(Sets the full name of this user to)36.64 E F2(name)2.5 E F1(.)A 56.64 +(\255G When)72 583.2 R 1.176 +(accepting messages via the command line, indicate that the)3.677 F +3.676(ya)-.15 G 1.176(re for relay \(g)-3.676 F(ate-)-.05 E -.1(wa)144 +595.2 S 2.215(y\) submission.).1 F 2.216 +(sendmail may complain about syntactically in)7.215 F -.25(va)-.4 G +2.216(lid messages, e.g.,).25 F .037(unquali\214ed host names, rather t\ +han \214xing them when this \215ag is set.)144 607.2 R .037 +(sendmail will not do)5.037 F(an)144 619.2 Q 2.5(yc)-.15 G +(anonicalization in this mode.)-2.5 E72 635.4 Q F2(cnt)2.5 E F1 +.725(Sets the \231hop count\232 to)46.64 F F2(cnt)3.225 E F1 5.725(.T)C +.726(his represents the number of times this message has been)-5.725 F +.02(processed by)144 647.4 R F2(sendmail)2.52 E F1 .02(\(to the e)2.52 F +.02(xtent that it is supported by the underlying netw)-.15 F(orks\).)-.1 +E F2(Cnt)5.02 E F1 1.521(is incremented during processing, and if it re\ +aches MAXHOP \(currently 25\))144 659.4 R F2(sendmail)4.021 E F1(thro) +144 671.4 Q(ws a)-.25 E -.1(wa)-.15 G 2.5(yt).1 G +(he message with an error)-2.5 E(.)-.55 E .32 LW 76 681 72 681 DL 80 681 +76 681 DL 84 681 80 681 DL 88 681 84 681 DL 92 681 88 681 DL 96 681 92 +681 DL 100 681 96 681 DL 104 681 100 681 DL 108 681 104 681 DL 112 681 +108 681 DL 116 681 112 681 DL 120 681 116 681 DL 124 681 120 681 DL 128 +681 124 681 DL 132 681 128 681 DL 136 681 132 681 DL 140 681 136 681 DL +144 681 140 681 DL 148 681 144 681 DL 152 681 148 681 DL 156 681 152 681 +DL 160 681 156 681 DL 164 681 160 681 DL 168 681 164 681 DL 172 681 168 +681 DL 176 681 172 681 DL 180 681 176 681 DL 184 681 180 681 DL 188 681 +184 681 DL 192 681 188 681 DL 196 681 192 681 DL 200 681 196 681 DL 204 +681 200 681 DL 208 681 204 681 DL 212 681 208 681 DL 216 681 212 681 DL +/F4 8/Times-Roman@0 SF(\207Deprecated.)93.6 693 Q F3 +(Sendmail Installation and Operation Guide)72 756 Q(SMM:08-107)190.86 E +0 Cg EP %%Page: 108 104 %%BeginPageSetup BP %%EndPageSetup -/F0 12/Times-Bold@0 SF 3<415050454e4449582042>250.002 98.4 R -.12<5155> -220.29 141.6 S<4555452046494c4520464f524d41>.12 E<5453>-1.14 E/F1 10 -/Times-Roman@0 SF .101<5468697320617070656e6469782064657363726962657320 -74686520666f726d6174206f6620746865207175657565208c6c65732e>97 201 R .102 -<5468657365208c6c6573206c69>5.102 F .402 -.15<76652069>-.25 H 2.602 -<6e6171>.15 G .102<75657565206469726563746f7279>-2.602 F 5.102<2e54>-.65 -G .102<686520696e64692d>-5.102 F .331<76696475616c2071662c2068662c205166 -2c2064662c20616e64207866208c6c6573206d61792062652073746f72656420696e2073 -65706172617465>72 213 R/F2 10/Times-Italic@0 SF<71662f>2.831 E F1<2c>A -F2<64662f>2.831 E F1 2.831<2c61>C<6e64>-2.831 E F2<78662f>2.831 E F1 -.331<7375626469726563746f7269657320696620746865>2.831 F 2.831<7961>-.15 -G .33<72652070726573656e74>-2.831 F -<696e20746865207175657565206469726563746f7279>72 225 Q<2e>-.65 E .923 -<416c6c207175657565208c6c6573206861>97 241.2 R 1.223 -.15<76652074>-.2 H -.923<6865206e616d65>.15 F F2<7474594d44686d734e4e7070707070>3.423 E F1 -<7768657265>3.424 E F2<594d44686d734e4e7070707070>3.424 E F1 .924 -<697320746865>3.424 F F2<6964>3.424 E F1 .924 -<666f722074686973206d65732d>3.424 F<7361676520616e6420746865>72 253.2 Q -F2<7474>2.5 E F1<6973206120747970652e>2.5 E<54686520696e6469>5 E -<76696475616c206c65747465727320696e20746865>-.25 E F2<6964>2.5 E F1 -<6172653a>2.5 E 28.78<5945>72 269.4 S<6e636f6465642079656172>-28.78 E -27.11<4d45>72 285.6 S<6e636f646564206d6f6e7468>-27.11 E 28.78<4445>72 -301.8 S<6e636f64656420646179>-28.78 E 31<6845>72 318 S -<6e636f64656420686f7572>-31 E 28.22<6d45>72 334.2 S -<6e636f646564206d696e757465>-28.22 E 32.11<7345>72 350.4 S -<6e636f646564207365636f6e64>-32.11 E 19.06<4e4e20456e636f646564>72 366.6 -R<656e>2.5 E -.15<7665>-.4 G<6c6f7065206e756d626572>.15 E 8.5 -<7070707070204174>72 382.8 R<6c65617374208c76>2.5 E 2.5<6564>-.15 G -<6563696d616c20646967697473206f66207468652070726f63657373204944>-2.5 E -.477 -<416c6c208c6c65732077697468207468652073616d6520696420636f6c6c65637469>97 -399 R -.15<7665>-.25 G .477<6c792064658c6e65206f6e65206d6573736167652e> -.15 F .477<44756520746f2074686520757365206f66206d656d6f72792d62>5.477 F -<7566>-.2 E .476<6665726564208c6c65732c>-.25 F -<736f6d65206f66207468657365208c6c6573206d6179206e65>72 411 Q -.15<7665> --.25 G 2.5<7261>.15 G<7070656172206f6e206469736b2e>-2.5 E -<546865207479706573206172653a>97 427.2 Q 25.17<716620546865>72 443.4 R -<717565756520636f6e74726f6c208c6c652e>2.5 E<54686973208c6c6520636f6e7461 -696e732074686520696e666f726d6174696f6e206e656365737361727920746f2070726f -6365737320746865206a6f62>5 E<2e>-.4 E 25.17<686620546865>72 459.6 R -<73616d65206173206120717565756520636f6e74726f6c208c6c652c2062>2.5 E -<757420666f7220612071756172616e74696e6564207175657565206a6f62>-.2 E<2e> --.4 E 25.17<646620546865>72 475.8 R .451<64617461208c6c652e>2.951 F .452 -<546865206d65737361676520626f6479202865>5.451 F .452 -<78636c7564696e67207468652068656164657229206973206b>-.15 F .452 -<65707420696e2074686973208c6c652e>-.1 F .452 -<536f6d6574696d657320746865206466208c6c65>5.452 F .183<6973206e6f742073 -746f72656420696e207468652073616d65206469726563746f7279206173207468652071 -66208c6c653b20696e207468697320636173652c20746865207166208c6c6520636f6e74 -61696e73206120606427207265636f7264207768696368>108 487.8 R<6e616d657320 -746865207175657565206469726563746f7279207468617420636f6e7461696e73207468 -65206466208c6c652e>108 499.8 Q 27.39<74662041>72 516 R .045 -<74656d706f72617279208c6c652e>2.545 F .045 -<5468697320697320616e20696d616765206f6620746865>5.045 F/F3 10 -/Times-Bold@0 SF<7166>2.546 E F1 .046 -<8c6c65207768656e206974206973206265696e6720726562>2.546 F 2.546 -<75696c742e204974>-.2 F .046 -<73686f756c642062652072656e616d656420746f2061>2.546 F F3<7166>108 528 Q -F1<8c6c652076>2.5 E<65727920717569636b6c79>-.15 E<2e>-.65 E 25.17 -<78662041>72 544.2 R .567<7472616e736372697074208c6c652c2065>3.067 F -.567<78697374696e6720647572696e6720746865206c696665206f6620612073657373 -696f6e2073686f>-.15 F .566<77696e672065>-.25 F -.15<7665>-.25 G .566 -<72797468696e6720746861742068617070656e7320647572696e672074686174>.15 F -3.121<73657373696f6e2e20536f6d6574696d6573>108 556.2 R .622<746865207866 -208c6c65206d7573742062652067656e657261746564206265666f726520612071756575 -652067726f757020686173206265656e2073656c65637465643b20696e2074686973> -3.121 F<636173652c20746865207866208c6c652077696c6c2062652073746f72656420 -696e2061206469726563746f7279206f662074686520646566>108 568.2 Q -<61756c742071756575652067726f75702e>-.1 E 22.95<51662041>72 584.4 R -.74 -<6060>3.279 G<6c6f737427>.74 E 3.279<2771>-.74 G .779 -<7565756520636f6e74726f6c208c6c652e>-3.279 F F2<73656e646d61696c>5.778 E -F1 .778<72656e616d65732061>3.278 F F3<7166>3.278 E F1 .778<8c6c6520746f> -3.278 F F3<5166>3.278 E F1 .778<69662074686572652069732061207365>3.278 F --.15<7665>-.25 G .778<72652028636f6e8c6775726174696f6e29>.15 F .256 -<70726f626c656d20746861742063616e6e6f7420626520736f6c76>108 596.4 R .256 -<656420776974686f75742068756d616e20696e74657276>-.15 F 2.756 -<656e74696f6e2e20536561726368>-.15 F .256 -<746865206c6f678c6c6520666f7220746865207175657565208c6c65206964>2.756 F -.053<746f208c67757265206f757420776861742068617070656e65642e>108 608.4 R -.052<416674657220796f75207265736f6c76>5.052 F .052 -<6564207468652070726f626c656d2c20796f752063616e2072656e616d6520746865> --.15 F F3<5166>2.552 E F1 .052<8c6c6520746f>2.552 F F3<7166>2.552 E F1 -<616e64>2.552 E<73656e64206974206167>108 620.4 Q<61696e2e>-.05 E .74<54 -686520717565756520636f6e74726f6c208c6c6520697320737472756374757265642061 -73206120736572696573206f66206c696e65732065616368206265>97 636.6 R .741 -<67696e6e696e672077697468206120636f6465206c6574746572>-.15 F 5.741<2e54> --.55 G .741<6865206c696e6573>-5.741 F<61726520617320666f6c6c6f>72 648.6 -Q<77733a>-.25 E 28.78<5654>72 664.8 S .82<68652076>-28.78 F .82<65727369 -6f6e206e756d626572206f6620746865207175657565208c6c6520666f726d61742c2075 -73656420746f20616c6c6f>-.15 F 3.319<776e>-.25 G -.25<6577>-3.319 G F2 -<73656e646d61696c>3.569 E F1 .819 -<62696e617269657320746f2072656164207175657565>3.319 F .003 -<8c6c65732063726561746564206279206f6c6465722076>108 676.8 R 2.504 -<657273696f6e732e20446566>-.15 F .004<61756c747320746f2076>-.1 F .004 -<657273696f6e207a65726f2e>-.15 F .004<4d75737420626520746865208c72737420 -6c696e65206f6620746865208c6c652069662070726573656e742e>5.004 F -.15 -<466f>108 688.8 S 2.5<7238>.15 G<2e3132207468652076>-2.5 E -<657273696f6e206e756d62657220697320362e>-.15 E 28.78<4154>72 705 S 1.175 -<686520696e666f726d6174696f6e206769>-28.78 F -.15<7665>-.25 G 3.675 -<6e62>.15 G 3.675<7974>-3.675 G 1.175<68652041>-3.675 F 1.175 -<5554483d20706172616d65746572206f662074686520994d41494c204652>-.55 F -1.175<4f4d3a9a20636f6d6d616e64206f7220246640246a206966>-.4 F -<73656e646d61696c20686173206265656e2063616c6c6564206469726563746c79>108 -717 Q<2e>-.65 E F3 188.36<534d4d3a30382d3130382053656e646d61696c>72 756 -R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -0 Cg EP +/F0 10/Times-Bold@0 SF 188.36(SMM:08-108 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF72 +96 Q/F2 10/Times-Italic@0 SF(ta)2.5 E(g)-.1 E F1 1.483 +(Sets the identi\214er used for syslog.)45.07 F 1.482 +(Note that this identi\214er is set as early as possible.)6.483 F(Ho)144 +108 Q(we)-.25 E -.15(ve)-.25 G -.4(r,).15 G F2(sendmail)2.915 E F1 .015 +(may be used if problems arise before the command line ar)2.515 F .016 +(guments are)-.18 F(processed.)144 120 Q 58.86(\255n Don')72 136.2 R 2.5 +(td)-.18 G 2.5(oa)-2.5 G(liasing or forw)-2.5 E(arding.)-.1 E72 +152.4 Q F2(noti\214cations)2.5 E F1 -.8(Ta)7.19 G 3.128(ga).8 G .628 +(ll addresses being sent as w)-3.128 F .628(anting the indicated)-.1 F +F2(noti\214cations)3.128 E F1 3.127(,w)C .627(hich consists of the) +-3.127 F -.1(wo)144 164.4 S .474 +(rd \231NEVER\232 or a comma-separated list of \231SUCCESS\232, \231F).1 +F .474(AILURE\232, and \231DELA)-.74 F<599a>-1.05 E .86 +(for successful deli)144 176.4 R -.15(ve)-.25 G(ry).15 E 3.36(,f)-.65 G +.86(ailure, and a message that is stuck in a queue some)-3.46 F 3.36 +(where. The)-.25 F(def)144 188.4 Q(ault is \231F)-.1 E(AILURE,DELA)-.74 +E(Y\232.)-1.05 E72 204.6 Q F2(addr)2.5 E F1(An obsolete form of) +41.64 E F02.5 E F1(.)A72 220.8 Q F2 1.666(xv)C(alue)-1.666 E +F1(Set option)33.594 E F2(x)2.5 E F1(to the speci\214ed)2.5 E F2(value) +2.5 E F1 5(.T)C(hese options are described in Section 5.6.)-5 E72 +237 Q F2(option)A F0(=)A F2(value)A F1(Set)6.22 E F2(option)5.173 E F1 +2.674(to the speci\214ed)5.173 F F2(value)5.174 E F1 2.674 +(\(for long form option names\).)5.174 F 2.674(These options are)7.674 F +(described in Section 5.6.)144 249 Q72 265.2 Q F2 1.666(xv)C(alue) +-1.666 E F1(Set macro)29.704 E F2(x)2.5 E F1(to the speci\214ed)2.5 E F2 +(value)2.5 E F1(.)A72 281.4 Q F2(pr)A(otocol)-.45 E F1 .401 +(Set the sending protocol.)27.92 F .401 +(Programs are encouraged to set this.)5.401 F .4 +(The protocol \214eld can be)5.401 F .114(in the form)144 293.4 R F2(pr) +2.614 E(otocol)-.45 E F0(:)A F2(host)A F1 .114 +(to set both the sending protocol and sending host.)2.614 F -.15(Fo) +5.115 G 2.615(re).15 G(xample,)-2.765 E 2.147(\231\255pUUCP:uunet\232 s\ +ets the sending protocol to UUCP and the sending host to uunet.)144 +305.4 R .973(\(Some e)144 317.4 R .974 +(xisting programs use \255oM to set the r and s macros; this is equi) +-.15 F -.25(va)-.25 G .974(lent to using).25 F(\255p.\))144 329.4 Q +72 345.6 Q F2(time)A F1 -.35(Tr)44.14 G 3.2(yt).35 G 3.2(op)-3.2 G +.7(rocess the queued up mail.)-3.2 F .7(If the time is gi)5.7 F -.15(ve) +-.25 G(n,).15 E F2(sendmail)3.2 E F1 .7(will start one or more)3.2 F +.011 +(processes to run through the queue\(s\) at the speci\214ed time interv) +144 357.6 R .011(al to deli)-.25 F -.15(ve)-.25 G 2.511(rq).15 G .011 +(ueued mail;)-2.511 F .906(otherwise, it only runs once.)144 369.6 R +.906(Each of these processes acts on a w)5.906 F 3.405(orkgroup. These) +-.1 F(pro-)3.405 E .959(cesses are also kno)144 381.6 R .959(wn as w) +-.25 F .959(orkgroup processes or WGP')-.1 F 3.459(sf)-.55 G .959 +(or short.)-3.459 F .96(Each w)5.96 F .96(orkgroup is)-.1 F .523 +(responsible for controlling the processing of one or more queues; w)144 +393.6 R .522(orkgroups help man-)-.1 F 1.268 +(age the use of system resources by sendmail.)144 405.6 R 1.268(Each w) +6.268 F 1.268(orkgroup may ha)-.1 F 1.568 -.15(ve o)-.2 H 1.268 +(ne or more).15 F .357 +(children concurrently processing queues depending on the setting of)144 +417.6 R F2(MaxQueueChildr)2.856 E(en)-.37 E F1(.)A(\255qp)72 433.8 Q F2 +(time)A F1 1.174(Similar to \255q with a time ar)39.14 F 1.175 +(gument, e)-.18 F 1.175 +(xcept that instead of periodically starting WGP')-.15 F(s)-.55 E .7 +(sendmail starts persistent WGP')144 445.8 R 3.2(st)-.55 G .7 +(hat alternate between processing queues and sleeping.)-3.2 F 1.123 +(The sleep time is speci\214ed by the time ar)144 457.8 R 1.123 +(gument; it def)-.18 F 1.123(aults to 1 second, e)-.1 F 1.124 +(xcept that a)-.15 F 1.294(WGP al)144 469.8 R -.1(wa)-.1 G 1.293 +(ys sleeps at least 5 seconds if their queues were empty in the pre).1 F +1.293(vious run.)-.25 F .138 +(Persistent processes are managed by a queue control process \(QCP\).) +144 481.8 R .139(The QCP is the par)5.139 F(-)-.2 E .18 +(ent process of the WGP')144 493.8 R 2.679(s. T)-.55 F .179 +(ypically the QCP will be the sendmail daemon \(when started)-.8 F .424 +(with \255bd or \255bD\) or a special process \(named Queue control\) \ +\(when started without \255bd)144 505.8 R .72(or \255bD\).)144 517.8 R +.72(If a persistent WGP ceases to be acti)5.72 F 1.019 -.15(ve f)-.25 H +.719(or some reason another WGP will be).15 F .862 +(started by the QCP for the same w)144 529.8 R .862 +(orkgroup in most cases. When a persistent WGP has)-.1 F 1.008 +(core dumped, the deb)144 541.8 R 1.008(ug \215ag)-.2 F F2(no_per)3.508 +E(sistent_r)-.1 E(estart)-.37 E F1 1.007 +(is set or the speci\214c persistent WGP)3.508 F .676 +(has been restarted too man)144 553.8 R 3.176(yt)-.15 G .676 +(imes already then the WGP will not be started ag)-3.176 F .677 +(ain and a)-.05 F .876(message will be logged to this ef)144 565.8 R +3.375(fect. T)-.25 F 3.375(os)-.8 G .875 +(top \(SIGTERM\) or restart \(SIGHUP\) persis-)-3.375 F .116(tent WGP') +144 577.8 R 2.616(st)-.55 G .116 +(he appropriate signal should be sent to the QCP)-2.616 F 2.616(.T)-1.11 +G .116(he QCP will propag)-2.616 F .116(ate the)-.05 F +(signal to all of the WGP')144 589.8 Q 2.5(sa)-.55 G +(nd if appropriate restart the persistent WGP')-2.5 E(s.)-.55 E72 +606 Q F2(Gname)A F1(Run the jobs in the queue group)32.48 E F2(name)2.5 +E F1(once.)2.5 E(\255q[!])72 622.2 Q F2(Xstring)A F1 .313 +(Run the queue once, limiting the jobs to those matching)21.92 F F2 +(Xstring)2.812 E F1 5.312(.T)C .312(he k)-5.312 F .612 -.15(ey l)-.1 H +(etter).15 E F2(X)2.812 E F1 .312(can be)2.812 F F0(I)144 634.2 Q F1 +1.347(to limit based on queue identi\214er)3.847 F(,)-.4 E F0(R)3.847 E +F1 1.347(to limit based on recipient,)3.847 F F0(S)3.847 E F1 1.347 +(to limit based on)3.847 F(sender)144 646.2 Q 4.758(,o)-.4 G(r)-4.758 E +F0(Q)4.758 E F1 2.258 +(to limit based on quarantine reason for quarantined jobs.)4.758 F 4.757 +(Ap)7.257 G(articular)-4.757 E .062 +(queued job is accepted if one of the corresponding attrib)144 658.2 R +.063(utes contains the indicated)-.2 F F2(string)2.563 E F1(.)A .779 +(The optional ! character ne)144 670.2 R -.05(ga)-.15 G .778 +(tes the condition tested.).05 F(Multiple)5.778 E F2(\255qX)3.278 E F1 +.778(\215ags are permitted,)3.278 F .622(with items with the same k)144 +682.2 R .922 -.15(ey l)-.1 H .622(etter \231or'ed\232 together).15 F +3.122(,a)-.4 G .622(nd items with dif)-3.122 F .623(ferent k)-.25 F .923 +-.15(ey l)-.1 H(etters).15 E(\231and'ed\232 together)144 694.2 Q(.)-.55 +E 23.88(\255Q[reason] Quarantine)72 710.4 R .422 +(normal queue items with the gi)2.922 F -.15(ve)-.25 G 2.922(nr).15 G +.422(eason or unquarantine quarantined queue)-2.922 F .963 +(items if no reason is gi)144 722.4 R -.15(ve)-.25 G 3.463(n. This).15 F +.963(should only be used with some sort of item matching)3.463 F 0 Cg EP %%Page: 109 105 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d313039>190.86 E -/F1 10/Times-Roman@0 SF 28.78<4841>72 96 S .329 -<6865616465722064658c6e6974696f6e2e>-25.951 F .329 -<5468657265206d617920626520616e>5.329 F 2.829<796e>-.15 G .329 -<756d626572206f66207468657365206c696e65732e>-2.829 F .33 -<546865206f7264657220697320696d706f7274616e743a20746865>5.33 F 2.83 -<7972>-.15 G<657072652d>-2.83 E .046 -<73656e7420746865206f7264657220696e20746865208c6e616c206d6573736167652e> -108 108 R .046<546865736520757365207468652073616d652073796e746178206173 -206865616465722064658c6e6974696f6e7320696e2074686520636f6e8c67752d>5.046 -F<726174696f6e208c6c652e>108 120 Q 29.33<4354>72 136.2 S .575 -<686520636f6e74726f6c6c696e6720616464726573732e>-29.33 F .575<5468652073 -796e74617820697320996c6f63616c757365723a616c6961736e616d659a2e>5.575 F -.575<526563697069656e742061646472657373657320666f6c6c6f>5.575 F .575 -<77696e672074686973>-.25 F 2.814 -<6c696e652077696c6c206265208d616767656420736f20746861742064656c69>108 -148.2 R -.15<7665>-.25 G 2.814 -<726965732077696c6c2062652072756e20617320746865>.15 F/F2 10 -/Times-Italic@0 SF<6c6f63616c75736572>5.314 E F1 2.814 -<28612075736572206e616d652066726f6d20746865>5.314 F .561 -<2f6574632f706173737764208c6c65293b>108 160.2 R F2<616c6961736e616d65> -3.061 E F1 .561 -<697320746865206e616d65206f662074686520616c69617320746861742065>3.061 F -.562<7870616e64656420746f2074686973206164647265737320287573656420666f72 -207072696e742d>-.15 F<696e67206d65737361676573292e>108 172.2 Q 31<7154> -72 188.4 S<68652071756172616e74696e6520726561736f6e20666f72207175617261 -6e74696e6564207175657565206974656d732e>-31 E 28.78<5154>72 204.6 S .798 -<68652060>-28.78 F .798<606f726967696e616c20726563697069656e7427>-.74 F -.798<272c2073706563698c656420627920746865204f524350543d208c656c6420696e -20616e2045534d5450207472616e73616374696f6e2e>-.74 F .797<557365642065> -5.797 F<78636c752d>-.15 E<7369>108 216.6 Q -.15<7665>-.25 G -<6c7920666f722044656c69>.15 E -.15<7665>-.25 G -<727920537461747573204e6f74698c636174696f6e732e>.15 E -<4974206170706c696573206f6e6c7920746f2074686520666f6c6c6f>5 E -<77696e6720605227206c696e652e>-.25 E 32.67<7254>72 232.8 S .782 -<68652060>-32.67 F .782<608c6e616c20726563697069656e7427>-.74 F 3.282 -<2775>-.74 G .782<73656420666f722044656c69>-3.282 F -.15<7665>-.25 G -.782<727920537461747573204e6f74698c636174696f6e732e>.15 F .782 -<4974206170706c696573206f6e6c7920746f2074686520666f6c6c6f>5.782 F .783 -<77696e6720605227>-.25 F<6c696e652e>108 244.8 Q 29.33<5241>72 261 S .705 -<726563697069656e7420616464726573732e>-26.125 F .705<546869732077696c6c -206e6f726d616c6c7920626520636f6d706c6574656c7920616c69617365642c2062> -5.705 F .705 -<75742069732061637475616c6c79207265616c6961736564207768656e20746865>-.2 -F .492<6a6f622069732070726f6365737365642e>108 273 R .492<54686572652077 -696c6c206265206f6e65206c696e6520666f72206561636820726563697069656e742e> -5.492 F -1.11<5665>5.492 G .493<7273696f6e2031207166208c6c657320616c736f -20696e636c7564652061206c6561642d>1.11 F .689<696e6720636f6c6f6e2d746572 -6d696e61746564206c697374206f66208d6167732c2077686963682063616e2062652060 -532720746f2072657475726e2061206d657373616765206f6e207375636365737366756c -208c6e616c2064656c69>108 285 R<762d>-.25 E<657279>108 297 Q 3.327<2c60> --.65 G .828<462720746f2072657475726e2061206d657373616765206f6e2066> --3.327 F .828<61696c7572652c2060442720746f2072657475726e2061206d65737361 -676520696620746865206d6573736167652069732064656c617965642c2060422720746f> --.1 F .941<696e64696361746520746861742074686520626f64792073686f756c6420 -62652072657475726e65642c20604e2720746f2073757070726573732072657475726e69 -6e672074686520626f6479>108 309 R 3.44<2c61>-.65 G .94 -<6e642060502720746f206465636c617265>-3.44 F<7468697320617320612060>108 -321 Q<607072696d61727927>-.74 E 2.5<2728>-.74 G<636f6d6d616e64206c696e65 -206f7220534d54502d73657373696f6e2920616464726573732e>-2.5 E 30.44<5354> -72 337.2 S<68652073656e64657220616464726573732e>-30.44 E<5468657265206d -6179206f6e6c79206265206f6e65206f66207468657365206c696e65732e>5 E 29.89 -<5454>72 353.4 S<6865206a6f62206372656174696f6e2074696d652e>-29.89 E<54 -686973206973207573656420746f20636f6d70757465207768656e20746f2074696d6520 -6f757420746865206a6f62>5 E<2e>-.4 E 30.44<5054>72 369.6 S .113 -<68652063757272656e74206d657373616765207072696f72697479>-30.44 F 5.113 -<2e54>-.65 G .113 -<686973206973207573656420746f206f72646572207468652071756575652e>-5.113 F -.114<486967686572206e756d62657273206d65616e206c6f>5.114 F .114 -<776572207072696f72692d>-.25 F 3.677<746965732e20546865>108 381.6 R -1.176<7072696f72697479206368616e67657320617320746865206d6573736167652073 -69747320696e207468652071756575652e>3.677 F 1.176 -<54686520696e697469616c207072696f7269747920646570656e6473206f6e20746865> -6.176 F<6d65737361676520636c61737320616e64207468652073697a65206f66207468 -65206d6573736167652e>108 393.6 Q 27.11<4d41>72 409.8 S 2.703 -<6d6573736167652e2054686973>-24.407 F .203 -<6c696e65206973207072696e74656420627920746865>2.703 F F2<6d61696c71> -2.703 E F1 .204<636f6d6d616e642c20616e642069732067656e6572616c6c79207573 -656420746f2073746f72652073746174757320696e666f72>2.704 F<2d>-.2 E 2.5 -<6d6174696f6e2e204974>108 421.8 R<63616e20636f6e7461696e20616e>2.5 E 2.5 -<7974>-.15 G -.15<6578>-2.5 G<742e>.15 E 30.44<4646>72 438 S .044<6c6167 -20626974732c20726570726573656e746564206173206f6e65206c657474657220706572 -208d61672e>-30.44 F .043<44658c6e6564208d6167206269747320617265>5.043 F -F0<72>2.543 E F1 .043 -<696e6469636174696e6720746861742074686973206973206120726573706f6e7365> -2.543 F .142<6d65737361676520616e64>108 450 R F0<77>2.642 E F1 .142 -<696e6469636174696e67207468617420612077>2.642 F .143<61726e696e67206d65 -737361676520686173206265656e2073656e7420616e6e6f756e63696e67207468617420 -746865206d61696c20686173206265656e>-.1 F 2.514 -<64656c617965642e204f74686572>108 462 R .014<8d61672062697473206172653a> -2.514 F F0<38>2.514 E F1 2.514<3a74>C .013 -<686520626f647920636f6e7461696e73203862697420646174612c>-2.514 F F0<62> -2.513 E F1 2.513<3a6142>C .013 -<63633a206865616465722073686f756c642062652072656d6f>-2.513 F -.15<7665> --.15 G<642c>.15 E F0<64>2.513 E F1<3a>A .551<746865206d61696c2068617320 -52455420706172616d65746572732028736565205246432031383934292c>108 474 R -F0<6e>3.052 E F1 3.052<3a74>C .552<686520626f6479206f6620746865206d6573 -736167652073686f756c64206e6f742062652072657475726e6564>-3.052 F -<696e2063617365206f6620616e206572726f72>108 486 Q<2c>-.4 E F0<73>2.5 E -F1 2.5<3a74>C<686520656e>-2.5 E -.15<7665>-.4 G -<6c6f706520686173206265656e2073706c69742e>.15 E 28.78<4e54>72 502.2 S -<686520746f74616c206e756d626572206f662064656c69>-28.78 E -.15<7665>-.25 -G<727920617474656d7074732e>.15 E 28.78<4b54>72 518.4 S<68652074696d6520 -286173207365636f6e64732073696e6365204a616e7561727920312c203139373029206f -6620746865206c6173742064656c69>-28.78 E -.15<7665>-.25 G -<727920617474656d70742e>.15 E 31<6449>72 534.6 S 3.15<6674>-31 G .65 -<6865206466208c6c6520697320696e206120646966>-3.15 F .65<666572656e742064 -69726563746f7279207468616e20746865207166208c6c652c207468656e206120606427 -207265636f72642069732070726573656e742c2073706563696679696e6720746865> --.25 F<6469726563746f727920696e20776869636820746865206466208c6c65207265 -73696465732e>108 546.6 Q 32.67<4954>72 562.8 S .724<686520692d6e756d6265 -72206f66207468652064617461208c6c653b20746869732063616e206265207573656420 -746f207265636f>-32.67 F -.15<7665>-.15 G 3.225<7279>.15 G .725<6f757220 -6d61696c207175657565206166746572206120646973617374726f7573206469736b> --3.225 F<63726173682e>108 574.8 Q 31<2441>72 591 S -<6d6163726f2064658c6e6974696f6e2e>-28.5 E<5468652076>5 E<616c756573206f -66206365727461696e206d6163726f732061726520706173736564207468726f75676820 -746f207468652071756575652072756e2070686173652e>-.25 E 29.33<4254>72 -607.2 S .925<686520626f647920747970652e>-29.33 F .925 -<5468652072656d61696e646572206f6620746865206c696e652069732061207465> -5.925 F .925 -<787420737472696e672064658c6e696e672074686520626f647920747970652e>-.15 F -.924<49662074686973208c656c64206973>5.924 F .009<6d697373696e672c207468 -6520626f6479207479706520697320617373756d656420746f2062652099756e64658c6e -65649a20616e64206e6f207370656369616c2070726f63657373696e6720697320617474 -656d707465642e>108 619.2 R<4c65>5.009 E -.05<6761>-.15 G<6c>.05 E -.25 -<7661>108 631.2 S -<6c756573206172652099374249549a20616e642099384249544d494d459a2e>.25 E -29.89<5a54>72 647.4 S<6865206f726967696e616c20656e>-29.89 E -.15<7665> --.4 G<6c6f7065206964202866726f6d207468652045534d5450207472616e7361637469 -6f6e292e>.15 E -.15<466f>5 G 2.5<7244>.15 G<656c69>-2.5 E -.15<7665>-.25 -G 2.5<7253>.15 G<7461747573204e6f74698c636174696f6e73206f6e6c79>-2.5 E -<2e>-.65 E 4.073<417320616e2065>97 663.6 R 4.073 -<78616d706c652c2074686520666f6c6c6f>-.15 F 4.072<77696e6720697320612071 -75657565208c6c652073656e7420746f209965726963406d616d6d6f74682e4265726b> --.25 F<656c65>-.1 E -.65<792e>-.15 G 4.072<4544559a20616e64>.65 F 0 Cg -EP +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-109)190.86 E/F1 10/Times-Roman@0 SF(using)144 96 Q F0(\255q[!]) +2.5 E/F2 10/Times-Italic@0 SF(Xstring)A F1(as described abo)2.5 E -.15 +(ve)-.15 G(.).15 E(\255R ret)72 112.2 Q 1.687(What information you w) +46.64 F 1.687(ant returned if the message bounces;)-.1 F F2 -.37(re) +4.187 G(t).37 E F1 1.687(can be \231HDRS\232 for)4.187 F .877 +(headers only or \231FULL\232 for headers plus body)144 124.2 R 5.877 +(.T)-.65 G .878(his is a request only; the other end is)-5.877 F 1.309 +(not required to honor the parameter)144 136.2 R 6.309(.I)-.55 G 3.808 +<6699>-6.309 G 1.308(HDRS\232 is speci\214ed local bounces also return) +-3.808 F(only the headers.)144 148.2 Q 61.08(\255t Read)72 164.4 R .752 +(the header for \231T)3.252 F .752 +(o:\232, \231Cc:\232, and \231Bcc:\232 lines, and send to e)-.8 F -.15 +(ve)-.25 G .752(ryone listed in those).15 F 2.54(lists. The)144 176.4 R +.039(\231Bcc:\232 line will be deleted before sending.)2.54 F(An)5.039 E +2.539(ya)-.15 G .039(ddresses in the ar)-2.539 F .039(gument v)-.18 F +(ec-)-.15 E(tor will be deleted from the send list.)144 188.4 Q +(\255V en)72 204.6 Q 32.32(vid The)-.4 F(indicated)3.179 E F2(en)3.179 E +(vid)-.4 E F1 .679(is passed with the en)3.179 F -.15(ve)-.4 G .68 +(lope of the message and returned if the mes-).15 F(sage bounces.)144 +216.6 Q72 232.8 Q F2(lo)2.5 E(g\214le)-.1 E F1 .725(Log all traf) +31.74 F .725(\214c in and out of)-.25 F F2(sendmail)3.225 E F1 .725 +(in the indicated)3.225 F F2(lo)3.224 E(g\214le)-.1 E F1 .724(for deb) +3.224 F .724(ugging mailer prob-)-.2 F 2.5(lems. This)144 244.8 R +(produces a lot of data v)2.5 E +(ery quickly and should be used sparingly)-.15 E(.)-.65 E .637 +(There are a number of options that may be speci\214ed as primiti)97 261 +R .938 -.15(ve \215)-.25 H 3.138(ags. These).15 F .638 +(are the e, i, m, and v)3.138 F 3.785(options. Also,)72 273 R 1.285 +(the f option may be speci\214ed as the)3.785 F F03.784 E F1 3.784 +(\215ag. The)3.784 F 1.284 +(DSN related options \231\255N\232, \231\255R\232, and)3.784 F +<99ad569a206861>72 285 Q .3 -.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G +(ects on).25 E F2(sendmail)2.5 E F1(running as daemon.)2.5 E 0 Cg EP %%Page: 110 106 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 188.36<534d4d3a30382d3131302053656e646d61696c>72 -60 R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465> -2.5 E/F1 10/Times-Roman@0 SF<99626f73746963406f6b>72 98 Q<656566>-.1 E -<66652e43532e4265726b>-.25 E<656c65>-.1 E -.65<792e>-.15 G<4544559a>.65 -E/F2 7/Times-Roman@0 SF<31>-4 I F1<3a>4 I<5634>112 114.2 Q -<54373131333538313335>112 126.2 Q<4b393034343436343930>112 138.2 Q<4e30> -112 150.2 Q<5032313030393431>112 162.2 Q -<245f65726963406c6f63616c686f7374>112 174.2 Q -<247b6461656d6f6e5f8d6167737d>112 186.2 Q<5365726963>112 198.2 Q -<43657269633a3130303a313030303a73656e646d61696c4076>112 210.2 Q -<616e676f67682e43532e4265726b>-.25 E<656c65>-.1 E -.65<792e>-.15 G -<454455>.65 E<525046443a65726963406d616d6d6f74682e4265726b>112 222.2 Q -<656c65>-.1 E -.65<792e>-.15 G<454455>.65 E -<525046443a626f73746963406f6b>112 234.2 Q<656566>-.1 E -<66652e43532e4265726b>-.25 E<656c65>-.1 E -.65<792e>-.15 G<454455>.65 E -<483f503f52657475726e2d706174683a203c5e673e>112 246.2 Q -<483f3f5265636569>112 258.2 Q -.15<7665>-.25 G<643a2062792076>.15 E -<616e676f67682e43532e4265726b>-.25 E<656c65>-.1 E -.65<792e>-.15 G -<4544552028352e3130382f322e37292069642041414130363730333b>.65 E -<4672692c203137204a756c20313939322030303a32383a3535202d30373030>132 -270.2 Q<483f3f5265636569>112 282.2 Q -.15<7665>-.25 G -<643a2066726f6d206d61696c2e43532e4265726b>.15 E<656c65>-.1 E -.65<792e> --.15 G<4544552062792076>.65 E<616e676f67682e43532e4265726b>-.25 E -<656c65>-.1 E -.65<792e>-.15 G<4544552028352e3130382f322e3729>.65 E<6964 -2041414130363639383b204672692c203137204a756c20313939322030303a32383a3534 -202d30373030>132 294.2 Q<483f3f5265636569>112 306.2 Q -.15<7665>-.25 G< -643a2066726f6d205b3132382e33322e33312e32315d206279206d61696c2e43532e4265 -726b>.15 E<656c65>-.1 E -.65<792e>-.15 G<4544552028352e39362f322e3529> -.65 E<696420414132323737373b204672692c203137204a756c20313939322030333a32 -393a3134202d30343030>132 318.2 Q<483f3f5265636569>112 330.2 Q -.15<7665> --.25 G<643a20627920666f6f2e626172>.15 E -<2e62617a2e64652028352e35372f556c74726978332e302d4329>-.55 E<6964204141 -32323735373b204672692c203137204a756c20313939322030393a33313a323520474d54> -132 342.2 Q<483f463f46726f6d3a206572696340666f6f2e626172>112 354.2 Q -<2e62617a2e646520284572696320416c6c6d616e29>-.55 E -<483f783f46756c6c2d6e616d653a204572696320416c6c6d616e>112 366.2 Q<483f3f -4d6573736167652d69643a203c393230373137303933312e4141323237353740666f6f2e -626172>112 378.2 Q<2e62617a2e64653e>-.55 E<483f3f54>112 390.2 Q -<6f3a2073656e646d61696c4076>-.8 E<616e676f67682e43532e4265726b>-.25 E -<656c65>-.1 E -.65<792e>-.15 G<454455>.65 E -<483f3f5375626a6563743a207468697320697320616e2065>112 402.2 Q -<78616d706c65206d657373616765>-.15 E .658<546869732073686f>72 418.4 R -.658<77732074686520706572736f6e2077686f2073656e7420746865206d6573736167 -652c20746865207375626d697373696f6e2074696d652028696e207365636f6e64732073 -696e6365204a616e7561727920312c2031393730292c20746865>-.25 F -<6d657373616765207072696f72697479>72 430.4 Q 2.5<2c74>-.65 G<6865206d65 -737361676520636c6173732c2074686520726563697069656e74732c20616e6420746865 -206865616465727320666f7220746865206d6573736167652e>-2.5 E .32 LW 76 -678.8 72 678.8 DL 80 678.8 76 678.8 DL 84 678.8 80 678.8 DL 88 678.8 84 -678.8 DL 92 678.8 88 678.8 DL 96 678.8 92 678.8 DL 100 678.8 96 678.8 DL -104 678.8 100 678.8 DL 108 678.8 104 678.8 DL 112 678.8 108 678.8 DL 116 -678.8 112 678.8 DL 120 678.8 116 678.8 DL 124 678.8 120 678.8 DL 128 -678.8 124 678.8 DL 132 678.8 128 678.8 DL 136 678.8 132 678.8 DL 140 -678.8 136 678.8 DL 144 678.8 140 678.8 DL 148 678.8 144 678.8 DL 152 -678.8 148 678.8 DL 156 678.8 152 678.8 DL 160 678.8 156 678.8 DL 164 -678.8 160 678.8 DL 168 678.8 164 678.8 DL 172 678.8 168 678.8 DL 176 -678.8 172 678.8 DL 180 678.8 176 678.8 DL 184 678.8 180 678.8 DL 188 -678.8 184 678.8 DL 192 678.8 188 678.8 DL 196 678.8 192 678.8 DL 200 -678.8 196 678.8 DL 204 678.8 200 678.8 DL 208 678.8 204 678.8 DL 212 -678.8 208 678.8 DL 216 678.8 212 678.8 DL/F3 5/Times-Roman@0 SF<31>93.6 -689.2 Q/F4 8/Times-Roman@0 SF .718<546869732065>3.2 J .718 -<78616d706c6520697320636f6e747269>-.12 F -.12<7665>-.2 G 2.718<6461>.12 -G .718 -<6e642070726f6261626c7920696e616363757261746520666f7220796f757220656e> --2.718 F 2.719<7669726f6e6d656e742e20476c616e6365>-.32 F -.12<6f7665> -2.719 G 2.719<7269>.12 G 2.719<7474>-2.719 G 2.719<6f67>-2.719 G .719 -<657420616e20696465613b206e6f7468696e672063616e207265706c616365>-2.719 F -<6c6f6f6b696e67206174207768617420796f7572206f>72 702 Q -<776e2073797374656d2067656e6572617465732e>-.2 E 0 Cg EP +/F0 12/Times-Bold@0 SF 3(APPENDIX B)250.002 98.4 R -.12(QU)220.29 141.6 +S(EUE FILE FORMA).12 E(TS)-1.14 E/F1 10/Times-Roman@0 SF .101 +(This appendix describes the format of the queue \214les.)97 201 R .102 +(These \214les li)5.102 F .402 -.15(ve i)-.25 H 2.602(naq).15 G .102 +(ueue directory)-2.602 F 5.102(.T)-.65 G .102(he indi-)-5.102 F .331 +(vidual qf, hf, Qf, df, and xf \214les may be stored in separate)72 213 +R/F2 10/Times-Italic@0 SF(qf/)2.831 E F1(,)A F2(df/)2.831 E F1 2.831(,a) +C(nd)-2.831 E F2(xf/)2.831 E F1 .331(subdirectories if the)2.831 F 2.831 +(ya)-.15 G .33(re present)-2.831 F(in the queue directory)72 225 Q(.) +-.65 E .923(All queue \214les ha)97 241.2 R 1.223 -.15(ve t)-.2 H .923 +(he name).15 F F2(ttYMDhmsNNppppp)3.423 E F1(where)3.424 E F2 +(YMDhmsNNppppp)3.424 E F1 .924(is the)3.424 F F2(id)3.424 E F1 .924 +(for this mes-)3.424 F(sage and the)72 253.2 Q F2(tt)2.5 E F1 +(is a type.)2.5 E(The indi)5 E(vidual letters in the)-.25 E F2(id)2.5 E +F1(are:)2.5 E 28.78(YE)72 269.4 S(ncoded year)-28.78 E 27.11(ME)72 285.6 +S(ncoded month)-27.11 E 28.78(DE)72 301.8 S(ncoded day)-28.78 E 31(hE)72 +318 S(ncoded hour)-31 E 28.22(mE)72 334.2 S(ncoded minute)-28.22 E 32.11 +(sE)72 350.4 S(ncoded second)-32.11 E 19.06(NN Encoded)72 366.6 R(en)2.5 +E -.15(ve)-.4 G(lope number).15 E 8.5(ppppp At)72 382.8 R(least \214v) +2.5 E 2.5(ed)-.15 G(ecimal digits of the process ID)-2.5 E .477 +(All \214les with the same id collecti)97 399 R -.15(ve)-.25 G .477 +(ly de\214ne one message.).15 F .477(Due to the use of memory-b)5.477 F +(uf)-.2 E .476(fered \214les,)-.25 F(some of these \214les may ne)72 411 +Q -.15(ve)-.25 G 2.5(ra).15 G(ppear on disk.)-2.5 E(The types are:)97 +427.2 Q 25.17(qf The)72 443.4 R(queue control \214le.)2.5 E +(This \214le contains the information necessary to process the job)5 E +(.)-.4 E 25.17(hf The)72 459.6 R(same as a queue control \214le, b)2.5 E +(ut for a quarantined queue job)-.2 E(.)-.4 E 25.17(df The)72 475.8 R +.451(data \214le.)2.951 F .452(The message body \(e)5.451 F .452 +(xcluding the header\) is k)-.15 F .452(ept in this \214le.)-.1 F .452 +(Sometimes the df \214le)5.452 F .183(is not stored in the same directo\ +ry as the qf \214le; in this case, the qf \214le contains a `d' record \ +which)108 487.8 R +(names the queue directory that contains the df \214le.)108 499.8 Q +27.39(tf A)72 516 R .045(temporary \214le.)2.545 F .045 +(This is an image of the)5.045 F/F3 10/Times-Bold@0 SF(qf)2.546 E F1 +.046(\214le when it is being reb)2.546 F 2.546(uilt. It)-.2 F .046 +(should be renamed to a)2.546 F F3(qf)108 528 Q F1(\214le v)2.5 E +(ery quickly)-.15 E(.)-.65 E 25.17(xf A)72 544.2 R .567 +(transcript \214le, e)3.067 F .567 +(xisting during the life of a session sho)-.15 F .566(wing e)-.25 F -.15 +(ve)-.25 G .566(rything that happens during that).15 F 3.121 +(session. Sometimes)108 556.2 R .622(the xf \214le must be generated be\ +fore a queue group has been selected; in this)3.121 F +(case, the xf \214le will be stored in a directory of the def)108 568.2 +Q(ault queue group.)-.1 E 22.95(Qf A)72 584.4 R -.74(``)3.279 G(lost') +.74 E 3.279('q)-.74 G .779(ueue control \214le.)-3.279 F F2(sendmail) +5.778 E F1 .778(renames a)3.278 F F3(qf)3.278 E F1 .778(\214le to)3.278 +F F3(Qf)3.278 E F1 .778(if there is a se)3.278 F -.15(ve)-.25 G .778 +(re \(con\214guration\)).15 F .256(problem that cannot be solv)108 596.4 +R .256(ed without human interv)-.15 F 2.756(ention. Search)-.15 F .256 +(the log\214le for the queue \214le id)2.756 F .053 +(to \214gure out what happened.)108 608.4 R .052(After you resolv)5.052 +F .052(ed the problem, you can rename the)-.15 F F3(Qf)2.552 E F1 .052 +(\214le to)2.552 F F3(qf)2.552 E F1(and)2.552 E(send it ag)108 620.4 Q +(ain.)-.05 E .74 +(The queue control \214le is structured as a series of lines each be)97 +636.6 R .741(ginning with a code letter)-.15 F 5.741(.T)-.55 G .741 +(he lines)-5.741 F(are as follo)72 648.6 Q(ws:)-.25 E 28.78(VT)72 664.8 +S .82(he v)-28.78 F .82 +(ersion number of the queue \214le format, used to allo)-.15 F 3.319(wn) +-.25 G -.25(ew)-3.319 G F2(sendmail)3.569 E F1 .819 +(binaries to read queue)3.319 F .003(\214les created by older v)108 +676.8 R 2.504(ersions. Def)-.15 F .004(aults to v)-.1 F .004 +(ersion zero.)-.15 F .004 +(Must be the \214rst line of the \214le if present.)5.004 F -.15(Fo)108 +688.8 S 2.5(r8).15 G(.12 the v)-2.5 E(ersion number is 6.)-.15 E 28.78 +(AT)72 705 S 1.175(he information gi)-28.78 F -.15(ve)-.25 G 3.675(nb) +.15 G 3.675(yt)-3.675 G 1.175(he A)-3.675 F 1.175 +(UTH= parameter of the \231MAIL FR)-.55 F 1.175 +(OM:\232 command or $f@$j if)-.4 F(sendmail has been called directly)108 +717 Q(.)-.65 E F3 188.36(SMM:08-110 Sendmail)72 756 R +(Installation and Operation Guide)2.5 E 0 Cg EP %%Page: 111 107 %%BeginPageSetup BP %%EndPageSetup -/F0 12/Times-Bold@0 SF 3<415050454e4449582043>249.672 98.4 R -<53554d4d4152>198.282 141.6 Q 3<594f>-.42 G 3<4653>-3 G<5550504f52>-3 E -3<5446>-.48 G<494c4553>-3 E/F1 10/Times-Roman@0 SF 1.519<54686973206973 -20612073756d6d617279206f662074686520737570706f7274208c6c65732074686174> -97 201 R/F2 10/Times-Italic@0 SF<73656e646d61696c>4.019 E F1 1.52 -<63726561746573206f722067656e6572617465732e>4.019 F<4d616e>6.52 E 4.02 -<796f>-.15 G 4.02<6674>-4.02 G 1.52<686573652063616e206265>-4.02 F<6368 -616e6765642062792065646974696e67207468652073656e646d61696c2e6366208c6c65 -3b20636865636b20746865726520746f208c6e64207468652061637475616c2070617468 -6e616d65732e>72 213 Q<2f7573722f7362696e2f73656e646d61696c>72 229.2 Q -<5468652062696e617279206f66>144 241.2 Q F2<73656e646d61696c>2.5 E F1<2e> -A<2f7573722f62696e2f6e65>72 257.4 Q -.1<7761>-.25 G<6c6961736573>.1 E -3.735<416c>144 269.4 S 1.235<696e6b20746f202f7573722f7362696e2f73656e64 -6d61696c3b206361757365732074686520616c69617320646174616261736520746f2062 -6520726562>-3.735 F 3.734<75696c742e2052756e6e696e67>-.2 F 1.234 -<746869732070726f2d>3.734 F -<6772616d20697320636f6d706c6574656c792065717569>144 281.4 Q -.25<7661> --.25 G<6c656e7420746f206769>.25 E<76696e67>-.25 E F2<73656e646d61696c> -2.5 E F1<746865>2.5 E/F3 10/Times-Bold@0 SF2.5 E F1<8d61672e>2.5 -E 13.38<2f7573722f62696e2f6d61696c71205072696e7473>72 297.6 R 3.702 -<616c>3.702 G 1.202<697374696e67206f6620746865206d61696c2071756575652e> --3.702 F 1.203<546869732070726f6772616d2069732065717569>6.202 F -.25 -<7661>-.25 G 1.203<6c656e7420746f207573696e6720746865>.25 F F3 -3.703 E F1 1.203<8d616720746f>3.703 F F2<73656e646d61696c>144 309.6 Q F1 -<2e>A<2f6574632f6d61696c2f73656e646d61696c2e6366>72 325.8 Q -<54686520636f6e8c6775726174696f6e208c6c652c20696e207465>144 337.8 Q -<787475616c20666f726d2e>-.15 E 1.72 -<2f6574632f6d61696c2f68656c708c6c6520546865>72 354 R -<534d54502068656c70208c6c652e>2.5 E -<2f6574632f6d61696c2f73746174697374696373>72 370.2 Q 2.5<4173>144 382.2 -S -<746174697374696373208c6c653b206e656564206e6f742062652070726573656e742e> --2.5 E<2f6574632f6d61696c2f73656e646d61696c2e706964>72 398.4 Q .318<4372 -656174656420696e206461656d6f6e206d6f64653b20697420636f6e7461696e73207468 -652070726f63657373206964206f66207468652063757272656e7420534d545020646165 -6d6f6e2e>144 410.4 R .318<496620796f75>5.318 F 1.047 -<757365207468697320696e20736372697074733b207573652060>144 422.4 R 1.047 -<606865616420ad3127>-.74 F 3.548<2774>-.74 G 3.548<6f67>-3.548 G 1.048< -6574206a75737420746865208c727374206c696e653b20746865207365636f6e64206c69 -6e6520636f6e7461696e7320746865>-3.548 F .68 -<636f6d6d616e64206c696e65207573656420746f20696e>144 434.4 R -.2<766f>-.4 -G .879 -.1<6b652074>.2 H .679 -<6865206461656d6f6e2c20616e64206c617465722076>.1 F .679 -<657273696f6e73206f66>-.15 F F2<73656e646d61696c>3.179 E F1 .679 -<6d617920616464206d6f7265>3.179 F -<696e666f726d6174696f6e20746f2073756273657175656e74206c696e65732e>144 -446.4 Q 5.06<2f6574632f6d61696c2f616c696173657320546865>72 462.6 R<7465> -2.5 E<787475616c2076>-.15 E -<657273696f6e206f662074686520616c696173208c6c652e>-.15 E -<2f6574632f6d61696c2f616c69617365732e6462>72 478.8 Q -<54686520616c696173208c6c6520696e>144 490.8 Q F2<68617368>2.5 E F1 -<28332920666f726d61742e>1.666 E -<2f6574632f6d61696c2f616c69617365732e7b7061672c6469727d>72 507 Q -<54686520616c696173208c6c6520696e>144 519 Q F2<6e64626d>2.5 E F1 -<28332920666f726d61742e>1.666 E<2f76>72 535.2 Q -<61722f73706f6f6c2f6d7175657565>-.25 E<546865206469726563746f727920696e -20776869636820746865206d61696c20717565756528732920616e642074656d706f7261 -7279208c6c6573207265736964652e>144 547.2 Q<2f76>72 563.4 Q -<61722f73706f6f6c2f6d71756575652f71662a>-.25 E -<436f6e74726f6c2028717565756529208c6c657320666f72206d657373616765732e> -144 575.4 Q<2f76>72 591.6 Q<61722f73706f6f6c2f6d71756575652f64662a>-.25 -E<44617461208c6c65732e>144 603.6 Q<2f76>72 619.8 Q -<61722f73706f6f6c2f6d71756575652f74662a>-.25 E -.7<5465>144 631.8 S -<6d706f726172792076>.7 E<657273696f6e73206f6620746865207166208c6c65732c -207573656420647572696e67207175657565208c6c6520726562>-.15 E<75696c642e> --.2 E<2f76>72 648 Q<61722f73706f6f6c2f6d71756575652f78662a>-.25 E 2.5 -<4174>144 660 S -<72616e736372697074206f66207468652063757272656e742073657373696f6e2e>-2.5 -E F3<53656e646d61696c20496e7374616c6c6174696f6e20616e64204f706572617469 -6f6e204775696465>72 756 Q<534d4d3a30382d313131>190.86 E 0 Cg EP +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-111)190.86 E/F1 10/Times-Roman@0 SF 28.78(HA)72 96 S .329 +(header de\214nition.)-25.951 F .329(There may be an)5.329 F 2.829(yn) +-.15 G .329(umber of these lines.)-2.829 F .33 +(The order is important: the)5.33 F 2.83(yr)-.15 G(epre-)-2.83 E .046 +(sent the order in the \214nal message.)108 108 R .046 +(These use the same syntax as header de\214nitions in the con\214gu-) +5.046 F(ration \214le.)108 120 Q 29.33(CT)72 136.2 S .575 +(he controlling address.)-29.33 F .575 +(The syntax is \231localuser:aliasname\232.)5.575 F .575 +(Recipient addresses follo)5.575 F .575(wing this)-.25 F 2.814 +(line will be \215agged so that deli)108 148.2 R -.15(ve)-.25 G 2.814 +(ries will be run as the).15 F/F2 10/Times-Italic@0 SF(localuser)5.314 E +F1 2.814(\(a user name from the)5.314 F .561(/etc/passwd \214le\);)108 +160.2 R F2(aliasname)3.061 E F1 .561(is the name of the alias that e) +3.061 F .562(xpanded to this address \(used for print-)-.15 F +(ing messages\).)108 172.2 Q 31(qT)72 188.4 S +(he quarantine reason for quarantined queue items.)-31 E 28.78(QT)72 +204.6 S .798(he `)-28.78 F .798(`original recipient')-.74 F .798 +(', speci\214ed by the ORCPT= \214eld in an ESMTP transaction.)-.74 F +.797(Used e)5.797 F(xclu-)-.15 E(si)108 216.6 Q -.15(ve)-.25 G +(ly for Deli).15 E -.15(ve)-.25 G(ry Status Noti\214cations.).15 E +(It applies only to the follo)5 E(wing `R' line.)-.25 E 32.67(rT)72 +232.8 S .782(he `)-32.67 F .782(`\214nal recipient')-.74 F 3.282('u)-.74 +G .782(sed for Deli)-3.282 F -.15(ve)-.25 G .782 +(ry Status Noti\214cations.).15 F .782(It applies only to the follo) +5.782 F .783(wing `R')-.25 F(line.)108 244.8 Q 29.33(RA)72 261 S .705 +(recipient address.)-26.125 F .705 +(This will normally be completely aliased, b)5.705 F .705 +(ut is actually realiased when the)-.2 F .492(job is processed.)108 273 +R .492(There will be one line for each recipient.)5.492 F -1.11(Ve)5.492 +G .493(rsion 1 qf \214les also include a lead-)1.11 F .986(ing colon-te\ +rminated list of \215ags, some of which are `S' to return a message on \ +successful \214nal)108 285 R(deli)108 297 Q -.15(ve)-.25 G(ry).15 E +2.825(,`)-.65 G .325(F' to return a message on f)-2.825 F .326 +(ailure, `D' to return a message if the message is delayed, `N')-.1 F +.842(to suppress returning the body)108 309 R 3.342(,a)-.65 G .842 +(nd `P' to declare this as a `)-3.342 F(`primary')-.74 E 3.342('\()-.74 +G .841(command line or SMTP-)-3.342 F(session\) address.)108 321 Q 30.44 +(ST)72 337.2 S(he sender address.)-30.44 E +(There may only be one of these lines.)5 E 29.89(TT)72 353.4 S +(he job creation time.)-29.89 E +(This is used to compute when to time out the job)5 E(.)-.4 E 30.44(PT) +72 369.6 S .113(he current message priority)-30.44 F 5.113(.T)-.65 G +.113(his is used to order the queue.)-5.113 F .114 +(Higher numbers mean lo)5.114 F .114(wer priori-)-.25 F 3.677(ties. The) +108 381.6 R 1.176(priority changes as the message sits in the queue.) +3.677 F 1.176(The initial priority depends on the)6.176 F +(message class and the size of the message.)108 393.6 Q 27.11(MA)72 +409.8 S 2.703(message. This)-24.407 F .203(line is printed by the)2.703 +F F2(mailq)2.703 E F1 .204 +(command, and is generally used to store status infor)2.704 F(-)-.2 E +2.5(mation. It)108 421.8 R(can contain an)2.5 E 2.5(yt)-.15 G -.15(ex) +-2.5 G(t.).15 E 30.44(FF)72 438 S .044 +(lag bits, represented as one letter per \215ag.)-30.44 F .043 +(De\214ned \215ag bits are)5.043 F F0(r)2.543 E F1 .043 +(indicating that this is a response)2.543 F .142(message and)108 450 R +F0(w)2.642 E F1 .142(indicating that a w)2.642 F .143 +(arning message has been sent announcing that the mail has been)-.1 F +2.514(delayed. Other)108 462 R .014(\215ag bits are:)2.514 F F0(8)2.514 +E F1 2.514(:t)C .013(he body contains 8bit data,)-2.514 F F0(b)2.513 E +F1 2.513(:aB)C .013(cc: header should be remo)-2.513 F -.15(ve)-.15 G +(d,).15 E F0(d)2.513 E F1(:)A .551 +(the mail has RET parameters \(see RFC 1894\),)108 474 R F0(n)3.052 E F1 +3.052(:t)C .552(he body of the message should not be returned)-3.052 F +(in case of an error)108 486 Q(,)-.4 E F0(s)2.5 E F1 2.5(:t)C(he en)-2.5 +E -.15(ve)-.4 G(lope has been split.).15 E 28.78(NT)72 502.2 S +(he total number of deli)-28.78 E -.15(ve)-.25 G(ry attempts.).15 E +28.78(KT)72 518.4 S +(he time \(as seconds since January 1, 1970\) of the last deli)-28.78 E +-.15(ve)-.25 G(ry attempt.).15 E 31(dI)72 534.6 S 3.15(ft)-31 G .65 +(he df \214le is in a dif)-3.15 F .65(ferent directory than the qf \214\ +le, then a `d' record is present, specifying the)-.25 F +(directory in which the df \214le resides.)108 546.6 Q 32.67(IT)72 562.8 +S .724(he i-number of the data \214le; this can be used to reco)-32.67 F +-.15(ve)-.15 G 3.225(ry).15 G .725 +(our mail queue after a disastrous disk)-3.225 F(crash.)108 574.8 Q 31 +($A)72 591 S(macro de\214nition.)-28.5 E(The v)5 E +(alues of certain macros are passed through to the queue run phase.)-.25 +E 29.33(BT)72 607.2 S .925(he body type.)-29.33 F .925 +(The remainder of the line is a te)5.925 F .925 +(xt string de\214ning the body type.)-.15 F .924(If this \214eld is) +5.924 F .009(missing, the body type is assumed to be \231unde\214ned\ +\232 and no special processing is attempted.)108 619.2 R(Le)5.009 E -.05 +(ga)-.15 G(l).05 E -.25(va)108 631.2 S +(lues are \2317BIT\232 and \2318BITMIME\232.).25 E 29.89(ZT)72 647.4 S +(he original en)-29.89 E -.15(ve)-.4 G +(lope id \(from the ESMTP transaction\).).15 E -.15(Fo)5 G 2.5(rD).15 G +(eli)-2.5 E -.15(ve)-.25 G 2.5(rS).15 G(tatus Noti\214cations only)-2.5 +E(.)-.65 E 4.073(As an e)97 663.6 R 4.073(xample, the follo)-.15 F 4.072 +(wing is a queue \214le sent to \231eric@mammoth.Berk)-.25 F(ele)-.1 E +-.65(y.)-.15 G 4.072(EDU\232 and).65 F 0 Cg EP %%Page: 112 108 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 188.36<534d4d3a30382d3131322053656e646d61696c>72 -60 R<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465> -2.5 E/F1 10/Times-Roman@0 SF -<54686973207061676520696e74656e74696f6e616c6c79206c65667420626c616e6b3b> -256.225 300 Q<7265706c6163652069742077697468206120626c616e6b207368656574 -20666f7220646f75626c652d7369646564206f75747075742e>218.6 312 Q 0 Cg EP -%%Page: 3 109 +/F0 10/Times-Bold@0 SF 188.36(SMM:08-112 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF +(\231bostic@ok)72 98 Q(eef)-.1 E(fe.CS.Berk)-.25 E(ele)-.1 E -.65(y.) +-.15 G(EDU\232).65 E/F2 7/Times-Roman@0 SF(1)-4 I F1(:)4 I(V4)112 114.2 +Q(T711358135)112 126.2 Q(K904446490)112 138.2 Q(N0)112 150.2 Q(P2100941) +112 162.2 Q($_eric@localhost)112 174.2 Q(${daemon_\215ags})112 186.2 Q +(Seric)112 198.2 Q(Ceric:100:1000:sendmail@v)112 210.2 Q(angogh.CS.Berk) +-.25 E(ele)-.1 E -.65(y.)-.15 G(EDU).65 E(RPFD:eric@mammoth.Berk)112 +222.2 Q(ele)-.1 E -.65(y.)-.15 G(EDU).65 E(RPFD:bostic@ok)112 234.2 Q +(eef)-.1 E(fe.CS.Berk)-.25 E(ele)-.1 E -.65(y.)-.15 G(EDU).65 E +(H?P?Return-path: <^g>)112 246.2 Q(H??Recei)112 258.2 Q -.15(ve)-.25 G +(d: by v).15 E(angogh.CS.Berk)-.25 E(ele)-.1 E -.65(y.)-.15 G +(EDU \(5.108/2.7\) id AAA06703;).65 E(Fri, 17 Jul 1992 00:28:55 -0700) +132 270.2 Q(H??Recei)112 282.2 Q -.15(ve)-.25 G(d: from mail.CS.Berk).15 +E(ele)-.1 E -.65(y.)-.15 G(EDU by v).65 E(angogh.CS.Berk)-.25 E(ele)-.1 +E -.65(y.)-.15 G(EDU \(5.108/2.7\)).65 E +(id AAA06698; Fri, 17 Jul 1992 00:28:54 -0700)132 294.2 Q(H??Recei)112 +306.2 Q -.15(ve)-.25 G(d: from [128.32.31.21] by mail.CS.Berk).15 E(ele) +-.1 E -.65(y.)-.15 G(EDU \(5.96/2.5\)).65 E +(id AA22777; Fri, 17 Jul 1992 03:29:14 -0400)132 318.2 Q(H??Recei)112 +330.2 Q -.15(ve)-.25 G(d: by foo.bar).15 E(.baz.de \(5.57/Ultrix3.0-C\)) +-.55 E(id AA22757; Fri, 17 Jul 1992 09:31:25 GMT)132 342.2 Q +(H?F?From: eric@foo.bar)112 354.2 Q(.baz.de \(Eric Allman\))-.55 E +(H?x?Full-name: Eric Allman)112 366.2 Q +(H??Message-id: <9207170931.AA22757@foo.bar)112 378.2 Q(.baz.de>)-.55 E +(H??T)112 390.2 Q(o: sendmail@v)-.8 E(angogh.CS.Berk)-.25 E(ele)-.1 E +-.65(y.)-.15 G(EDU).65 E(H??Subject: this is an e)112 402.2 Q +(xample message)-.15 E .658(This sho)72 418.4 R .658(ws the person who \ +sent the message, the submission time \(in seconds since January 1, 197\ +0\), the)-.25 F(message priority)72 430.4 Q 2.5(,t)-.65 G +(he message class, the recipients, and the headers for the message.)-2.5 +E .32 LW 76 678.8 72 678.8 DL 80 678.8 76 678.8 DL 84 678.8 80 678.8 DL +88 678.8 84 678.8 DL 92 678.8 88 678.8 DL 96 678.8 92 678.8 DL 100 678.8 +96 678.8 DL 104 678.8 100 678.8 DL 108 678.8 104 678.8 DL 112 678.8 108 +678.8 DL 116 678.8 112 678.8 DL 120 678.8 116 678.8 DL 124 678.8 120 +678.8 DL 128 678.8 124 678.8 DL 132 678.8 128 678.8 DL 136 678.8 132 +678.8 DL 140 678.8 136 678.8 DL 144 678.8 140 678.8 DL 148 678.8 144 +678.8 DL 152 678.8 148 678.8 DL 156 678.8 152 678.8 DL 160 678.8 156 +678.8 DL 164 678.8 160 678.8 DL 168 678.8 164 678.8 DL 172 678.8 168 +678.8 DL 176 678.8 172 678.8 DL 180 678.8 176 678.8 DL 184 678.8 180 +678.8 DL 188 678.8 184 678.8 DL 192 678.8 188 678.8 DL 196 678.8 192 +678.8 DL 200 678.8 196 678.8 DL 204 678.8 200 678.8 DL 208 678.8 204 +678.8 DL 212 678.8 208 678.8 DL 216 678.8 212 678.8 DL/F3 5 +/Times-Roman@0 SF(1)93.6 689.2 Q/F4 8/Times-Roman@0 SF .718(This e)3.2 J +.718(xample is contri)-.12 F -.12(ve)-.2 G 2.718(da).12 G .718 +(nd probably inaccurate for your en)-2.718 F 2.719(vironment. Glance) +-.32 F -.12(ove)2.719 G 2.719(ri).12 G 2.719(tt)-2.719 G 2.719(og)-2.719 +G .719(et an idea; nothing can replace)-2.719 F(looking at what your o) +72 702 Q(wn system generates.)-.2 E 0 Cg EP +%%Page: 113 109 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d33>200.86 E/F1 -12/Times-Roman@0 SF -1.116<5441>263.226 98.4 S -<424c45204f4620434f4e54454e5453>1.116 E/F2 10/Times-Roman@0 SF 2.5 -<312e2042>72 124.8 R<4153494320494e5354>-.35 E<414c4c41>-.93 E 1.18<5449 -4f4e202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e>-1.11 F<37>31 E 2.5<312e312e20436f6d70696c696e67>87 139.2 R -.43<53656e646d61696c202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e>2.5 F<37>31 E 2.5<312e312e312e2054>102 153.6 -R<7765616b696e6720746865204275696c6420496e>-.8 E -.2<766f>-.4 G .19<6361 -74696f6e202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e>.2 F<37>31 E 2.5 -<312e312e322e204372656174696e67>102 168 R 2.5<6153>2.5 G -<69746520436f6e8c6775726174696f6e2046696c65>-2.5 E 28.5<2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2037>2.94 F 2.5<312e312e332e2054>102 182.4 R -<7765616b696e6720746865204d616b>-.8 E 1.64<658c6c65202e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e>-.1 F<38>31 E 2.5 -<312e312e342e20436f6d70696c6174696f6e>102 196.8 R -<616e6420696e7374616c6c6174696f6e>2.5 E 28.5<2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2038>4.6 F 2.5<312e322e20436f6e8c6775726174696f6e>87 211.2 R .99< -46696c6573202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e>2.5 F<38>31 E 2.5<312e332e2044657461696c73>87 225.6 -R<6f6620496e7374616c6c6174696f6e2046696c6573>2.5 E 28.5<2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2039>4.89 F 2.5 -<312e332e312e202f7573722f7362696e2f73656e646d61696c>102 240 R 23.5<2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203130> -2.66 F 2.5<312e332e322e202f6574632f6d61696c2f73656e646d61696c2e6366>102 -254.4 R 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e20 -3130>4.34 F 2.5<312e332e332e202f6574632f6d61696c2f7375626d69742e6366>102 -268.8 R 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e203130>3.22 F 2.5<312e332e342e202f7573722f62696e2f6e65>102 283.2 R --.1<7761>-.25 G 2.19<6c6961736573202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e>.1 F<3130>26 E 2.5 -<312e332e352e202f7573722f62696e2f686f737473746174>102 297.6 R 23.5<2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2031 -30>4.6 F 2.5<312e332e362e202f7573722f62696e2f707572>102 312 R 1.18<6765 -73746174202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e>-.18 F<3130>26 E 2.5<312e332e372e202f76>102 326.4 R 1.81<61722f73 -706f6f6c2f6d7175657565202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e>-.25 F<3131>26 E 2.5<312e332e382e202f76>102 340.8 R -2.09<61722f73706f6f6c2f636c69656e746d7175657565202e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e>-.25 F<3131>26 E 2.5<312e332e392e202f76>102 -355.2 R .97<61722f73706f6f6c2f6d71756575652f2e686f737473746174202e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e>-.25 F<3131>26 E 2.5 -<312e332e31302e202f6574632f6d61696c2f616c69617365732a>102 369.6 R 23.5< -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203131> -4.06 F 2.5<312e332e31312e202f6574632f7263>102 384 R -<6f72202f6574632f696e69742e642f73656e646d61696c>2.5 E 23.5<2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e203132>3.23 F 2.5 -<312e332e31322e202f6574632f6d61696c2f68656c708c6c65>102 398.4 R 23.5<2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203132> -3.22 F 2.5<312e332e31332e202f6574632f6d61696c2f73746174697374696373>102 -412.8 R 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e203132>3.77 F 2.5<312e332e31342e202f7573722f62696e2f6d61696c71>102 -427.2 R 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e203132>4.88 F 2.5 -<312e332e31352e2073656e646d61696c2e706964>102 441.6 R 23.5<2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203132> -4.61 F 2.5<312e332e31362e204d6170>102 456 R .72<46696c6573202e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e>2.5 F<3134>26 E 2.5<322e204e4f524d414c>72 470.4 R<4f50455241>2.5 E -1.56<54494f4e53202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e>-1.11 F<3134>26 E 2.5<322e312e20546865>87 484.8 R -<53797374656d204c6f67>2.5 E 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203134>4.89 F 2.5 -<322e312e312e2046>102 499.2 R 2.26<6f726d6174202e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e>-.15 F<3134>26 E 2.5<322e312e322e204c65>102 513.6 R -.15<7665>-.25 -G 2.24<6c73202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e>.15 F<3135>26 E 2.5 -<322e322e2044756d70696e67>87 528 R .72<5374617465202e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e>2.5 F<3135>26 E 2.5<322e332e20546865>87 542.4 R -<4d61696c20517565756573>2.5 E 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203135>4.07 F 2.5 -<322e332e312e205175657565>102 556.8 R -<47726f75707320616e64205175657565204469726563746f72696573>2.5 E 23.5<2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e203136>2.99 F 2.5<322e332e322e205175657565>102 571.2 R 1.84<52756e7320 -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e>2.5 F<3136>26 E 2.5<322e332e332e204d616e75616c>102 585.6 R -<496e74657276>2.5 E 1.72<656e74696f6e202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e>-.15 F<3137>26 E 2.5 -<322e332e342e205072696e74696e67>102 600 R<746865207175657565>2.5 E 23.5< -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203137> -2.67 F 2.5<322e332e352e2046>102 614.4 R -<6f7263696e6720746865207175657565>-.15 E 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203137>3.94 F 2.5 -<322e332e362e2051756172616e74696e6564>102 628.8 R -<5175657565204974656d73>2.5 E 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e203138>3.25 F 2.5<322e342e204469736b>87 643.2 R -<426173656420436f6e6e656374696f6e20496e666f726d6174696f6e>2.5 E 23.5<2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e203138>3.79 F 2.5<322e352e20546865>87 657.6 R -<5365727669636520537769746368>2.5 E 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203139>2.68 F 2.5 -<322e362e20546865>87 672 R<416c696173204461746162617365>2.5 E 23.5<2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e203139>2.69 F 2.5<322e362e312e20526562>102 686.4 R -<75696c64696e672074686520616c696173206461746162617365>-.2 E 23.5<2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e203231>4.27 F 2.5 -<322e362e322e20506f74656e7469616c>102 700.8 R .72<70726f626c656d73202e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e>2.5 F<3231> -26 E 2.5<322e362e332e204c697374>102 715.2 R -.25<6f77>2.5 G 1.81<6e6572 -73202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e>.25 F<3231>26 E 0 Cg EP -%%Page: 4 110 +/F0 12/Times-Bold@0 SF 3(APPENDIX C)249.672 98.4 R(SUMMAR)198.282 141.6 +Q 3(YO)-.42 G 3(FS)-3 G(UPPOR)-3 E 3(TF)-.48 G(ILES)-3 E/F1 10 +/Times-Roman@0 SF 1.519(This is a summary of the support \214les that)97 +201 R/F2 10/Times-Italic@0 SF(sendmail)4.019 E F1 1.52 +(creates or generates.)4.019 F(Man)6.52 E 4.02(yo)-.15 G 4.02(ft)-4.02 G +1.52(hese can be)-4.02 F(changed by editing the sendmail.cf \214le; che\ +ck there to \214nd the actual pathnames.)72 213 Q(/usr/sbin/sendmail)72 +229.2 Q(The binary of)144 241.2 Q F2(sendmail)2.5 E F1(.)A(/usr/bin/ne) +72 257.4 Q -.1(wa)-.25 G(liases).1 E 3.735(Al)144 269.4 S 1.235 +(ink to /usr/sbin/sendmail; causes the alias database to be reb)-3.735 F +3.734(uilt. Running)-.2 F 1.234(this pro-)3.734 F +(gram is completely equi)144 281.4 Q -.25(va)-.25 G(lent to gi).25 E +(ving)-.25 E F2(sendmail)2.5 E F1(the)2.5 E/F3 10/Times-Bold@0 SF +(\255bi)2.5 E F1(\215ag.)2.5 E 13.38(/usr/bin/mailq Prints)72 297.6 R +3.702(al)3.702 G 1.202(isting of the mail queue.)-3.702 F 1.203 +(This program is equi)6.202 F -.25(va)-.25 G 1.203(lent to using the).25 +F F3(\255bp)3.703 E F1 1.203(\215ag to)3.703 F F2(sendmail)144 309.6 Q +F1(.)A(/etc/mail/sendmail.cf)72 325.8 Q +(The con\214guration \214le, in te)144 337.8 Q(xtual form.)-.15 E 1.72 +(/etc/mail/help\214le The)72 354 R(SMTP help \214le.)2.5 E +(/etc/mail/statistics)72 370.2 Q 2.5(As)144 382.2 S +(tatistics \214le; need not be present.)-2.5 E(/etc/mail/sendmail.pid)72 +398.4 Q .318(Created in daemon mode; it contains the process id of the \ +current SMTP daemon.)144 410.4 R .318(If you)5.318 F 1.047 +(use this in scripts; use `)144 422.4 R 1.047(`head \2551')-.74 F 3.548 +('t)-.74 G 3.548(og)-3.548 G 1.048 +(et just the \214rst line; the second line contains the)-3.548 F .68 +(command line used to in)144 434.4 R -.2(vo)-.4 G .879 -.1(ke t).2 H +.679(he daemon, and later v).1 F .679(ersions of)-.15 F F2(sendmail) +3.179 E F1 .679(may add more)3.179 F(information to subsequent lines.) +144 446.4 Q 5.06(/etc/mail/aliases The)72 462.6 R(te)2.5 E(xtual v)-.15 +E(ersion of the alias \214le.)-.15 E(/etc/mail/aliases.db)72 478.8 Q +(The alias \214le in)144 490.8 Q F2(hash)2.5 E F1(\(3\) format.)1.666 E +(/etc/mail/aliases.{pag,dir})72 507 Q(The alias \214le in)144 519 Q F2 +(ndbm)2.5 E F1(\(3\) format.)1.666 E(/v)72 535.2 Q(ar/spool/mqueue)-.25 +E(The directory in which the mail queue\(s\) and temporary \214les resi\ +de.)144 547.2 Q(/v)72 563.4 Q(ar/spool/mqueue/qf*)-.25 E +(Control \(queue\) \214les for messages.)144 575.4 Q(/v)72 591.6 Q +(ar/spool/mqueue/df*)-.25 E(Data \214les.)144 603.6 Q(/v)72 619.8 Q +(ar/spool/mqueue/tf*)-.25 E -.7(Te)144 631.8 S(mporary v).7 E +(ersions of the qf \214les, used during queue \214le reb)-.15 E(uild.) +-.2 E(/v)72 648 Q(ar/spool/mqueue/xf*)-.25 E 2.5(At)144 660 S +(ranscript of the current session.)-2.5 E F3 +(Sendmail Installation and Operation Guide)72 756 Q(SMM:08-113)190.86 E +0 Cg EP +%%Page: 114 110 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 198.36<534d4d3a30382d342053656e646d61696c>72 60 R -<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF 2.5<322e372e2055736572>87 96 R -<496e666f726d6174696f6e204461746162617365>2.5 E 23.5<2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203231>2.7 F 2.5<322e382e20506572> -87 110.4 R<2d557365722046>-.2 E<6f7277>-.15 E -<617264696e6720282e666f7277>-.1 E<6172642046696c657329>-.1 E 23.5<2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e203232>4.09 F 2.5<322e392e205370656369616c>87 124.8 R -<486561646572204c696e6573>2.5 E 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203232>2.97 F 2.5 -<322e392e312e204572726f72732d54>102 139.2 R 2.09<6f3a202e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e>-.8 F<3232>26 E 2.5<322e392e322e204170706172656e746c792d54>102 153.6 -R 2.09<6f3a202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e>-.8 F<3232>26 E 2.5<322e392e332e20507265636564656e6365> -102 168 R 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203232>2.97 F 2.5 -<322e31302e204944454e54>87 182.4 R<50726f746f636f6c20537570706f7274>2.5 -E 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203232> -2.95 F 2.5<332e20415247554d454e5453>72 196.8 R 23.5<2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e203233>3.78 F 2.5<332e312e205175657565>87 211.2 R -<496e74657276>2.5 E 1.55<616c202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e>-.25 F<3233>26 E -2.5<332e322e204461656d6f6e>87 225.6 R 1.29<4d6f6465202e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e>2.5 F<3233>26 E 2.5<332e332e2046>87 240 R -<6f7263696e6720746865205175657565>-.15 E 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203234>4.22 F -2.5<332e342e20446562>87 254.4 R 1.76<756767696e67202e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e>-.2 F<3234>26 E 2.5<332e352e204368616e67696e67>87 268.8 R -<7468652056>2.5 E<616c756573206f66204f7074696f6e73>-1.11 E 23.5<2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203235>3.23 F 2.5<332e362e2054>87 283.2 -R<7279696e67206120446966>-.35 E -<666572656e7420436f6e8c6775726174696f6e2046696c65>-.25 E 23.5<2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e203235>4.67 F 2.5<332e372e204c6f6767696e67>87 297.6 R -.35 -<5472>2.5 G<6166>.35 E .5<8c63202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e>-.25 F<3235>26 E -2.5<332e382e2054>87 312 R -<657374696e6720436f6e8c6775726174696f6e2046696c6573>-.7 E 23.5<2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203236>4.19 F 2.5 -<332e392e2050657273697374656e74>87 326.4 R -<486f73742053746174757320496e666f726d6174696f6e>2.5 E 23.5<2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e203237>3.5 F 2.5<342e2054554e494e47>72 340.8 R 23.5< -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203237>2.68 F -2.5<342e312e2054>87 355.2 R 1.07<696d656f757473202e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e>-.35 F<3237>26 E 2.5<342e312e312e205175657565>102 -369.6 R<696e74657276>2.5 E 2.1<616c202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e>-.25 F<3237>26 E 2.5 -<342e312e322e2052656164>102 384 R 1<74696d656f757473202e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e>2.5 F<3237> -26 E 2.5<342e312e332e204d657373616765>102 398.4 R 1.56<74696d656f757473 -202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e>2.5 -F<3239>26 E 2.5<342e322e2046>87 412.8 R -<6f726b696e6720447572696e672051756575652052756e73>-.15 E 23.5<2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203330>4.49 F 2.5 -<342e332e205175657565>87 427.2 R .73<5072696f726974696573202e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e>2.5 F<3330>26 E 2.5<342e342e204c6f6164>87 441.6 R .44<4c696d6974 -696e67202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e>2.5 F<3330>26 E 2.5 -<342e352e205265736f75726365>87 456 R .17<4c696d697473202e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e>2.5 F<3331>26 E 2.5<342e362e204d65617375726573>87 470.4 R<6167>2.5 E -<61696e73742044656e69616c206f6620536572766963652041747461636b73>-.05 E -23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e203331>3.87 F 2.5<342e372e2044656c69>87 484.8 R -.15<7665>-.25 G -<7279204d6f6465>.15 E 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203331>3.08 F 2.5 -<342e382e204c6f67>87 499.2 R<4c65>2.5 E -.15<7665>-.25 G 2.52<6c2e>.15 G -23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203332>-2.52 F 2.5 -<342e392e2046696c65>87 513.6 R .72<4d6f646573202e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e>2.5 F<3332>26 E 2.5<342e392e312e2054>102 528 R 2.5<6f73>-.8 G -<756964206f72206e6f7420746f20737569643f>-2.5 E 23.5<2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203332>6.52 F 2.5<342e392e322e2054>102 -542.4 R<75726e696e67206f66>-.45 E 2.5<6673>-.25 G -<6563757269747920636865636b73>-2.5 E 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e203333>3.95 F 2.5<342e31302e20436f6e6e656374696f6e>87 556.8 R 1.56 -<43616368696e67202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e>2.5 F<3335>26 E 2.5<342e31312e204e616d65>87 571.2 R -<53657276>2.5 E<657220416363657373>-.15 E 23.5<2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203336>2.85 F 2.5 -<342e31322e204d6f>87 585.6 R<76696e672074686520506572>-.15 E -<2d557365722046>-.2 E<6f7277>-.15 E<6172642046696c6573>-.1 E 23.5<2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e203337>3.84 F 2.5<342e31332e2046726565>87 600 R 1.85< -5370616365202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e>2.5 F<3337>26 E 2.5 -<342e31342e204d6178696d756d>87 614.4 R<4d6573736167652053697a65>2.5 E -23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203337> -4.62 F 2.5<342e31352e20507269>87 628.8 R -.25<7661>-.25 G .3 -.15 -<63792046>.25 H 1.93<6c616773202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e>.15 F<3337>26 E -2.5<342e31362e2053656e64>87 643.2 R<746f204d652054>2.5 E 2.08<6f6f202e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e>-.8 F<3337>26 E 2.5<352e20544845>72 657.6 R -<57484f4c452053434f4f50204f4e2054484520434f4e464947555241>2.5 E -<54494f4e2046494c45>-1.11 E 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e203338>4.64 F 2.5<352e312e2052>87 672 R<616e642053208a205265>2.5 E -<77726974696e672052756c6573>-.25 E 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e203338>4.3 F 2.5<352e312e312e20546865>102 686.4 R -<6c6566742068616e642073696465>2.5 E 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203338>4.07 F 2.5 -<352e312e322e20546865>102 700.8 R<72696768742068616e642073696465>2.5 E -23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2033 -39>3.51 F 2.5<352e312e332e2053656d616e74696373>102 715.2 R<6f66207265> -2.5 E<77726974696e672072756c652073657473>-.25 E 23.5<2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e203430>4.6 F 0 Cg EP -%%Page: 5 111 +/F0 10/Times-Bold@0 SF 188.36(SMM:08-114 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF +(This page intentionally left blank;)256.225 300 Q +(replace it with a blank sheet for double-sided output.)218.6 312 Q 0 Cg +EP +%%Page: 3 111 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF<53656e646d61696c20496e7374616c6c6174696f6e20616e -64204f7065726174696f6e204775696465>72 60 Q<534d4d3a30382d35>200.86 E/F1 -10/Times-Roman@0 SF 2.5<352e312e342e2052756c65736574>102 96 R 2.11<686f -6f6b73202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e>2.5 F<3431>26 E 2.5 -<352e312e342e312e20636865636b5f72656c6179>117 110.4 R 23.5<2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203431>2.69 F -2.5<352e312e342e322e20636865636b5f6d61696c>117 124.8 R 23.5<2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203431>4.9 F 2.5 -<352e312e342e332e20636865636b5f72637074>117 139.2 R 23.5<2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203432>4.63 F -2.5<352e312e342e342e20636865636b5f64617461>117 153.6 R 23.5<2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203432>3.52 F -2.5<352e312e342e352e20636865636b5f636f6d706174>117 168 R 23.5<2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203432>3.24 F 2.5 -<352e312e342e362e20636865636b5f656f68>117 182.4 R 23.5<2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203432>3.24 F -2.5<352e312e342e372e20636865636b5f656f6d>117 196.8 R 23.5<2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203433>2.96 F -2.5<352e312e342e382e20636865636b5f6574726e>117 211.2 R 23.5<2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203433>4.63 F -2.5<352e312e342e392e20636865636b5f65>117 225.6 R .89<78706e202e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e>-.15 F<3433> -26 E 2.5<352e312e342e31302e20636865636b5f76726679>117 240 R 23.5<2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203433>3.52 -F 2.5<352e312e342e31312e2074727573745f61757468>117 254.4 R 23.5<2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203433>3.5 -F 2.5<352e312e342e31322e20746c735f636c69656e74>117 268.8 R 23.5<2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203433> -4.33 F 2.5<352e312e342e31332e20746c735f73657276>117 283.2 R 2.27<657220 -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e> --.15 F<3433>26 E 2.5<352e312e342e31342e20746c735f72637074>117 297.6 R -23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e203433>3.5 F 2.5 -<352e312e342e31352e207372765f6665617475726573>117 312 R 23.5<2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203433>4.63 F 2.5 -<352e312e342e31362e207472795f746c73>117 326.4 R 23.5<2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203434> -2.94 F 2.5<352e312e342e31372e20746c735f7372765f6665617475726573>117 -340.8 R<616e6420746c735f636c745f6665617475726573>2.5 E 23.5<2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203434>4.64 F 2.5 -<352e312e342e31382e2061757468696e666f>117 355.2 R 23.5<2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203435>2.67 -F 2.5<352e312e342e31392e207175657565>117 369.6 R 1.44<67726f7570202e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e>-.15 F<3435> -26 E 2.5<352e312e342e32302e2067726565745f7061757365>117 384 R 23.5<2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203436>3.24 -F 2.5<352e312e352e20495043>102 398.4 R 1<6d61696c657273202e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e> -2.5 F<3436>26 E 2.5<352e322e2044>87 412.8 R 2.5<8a44>2.5 G -<658c6e65204d6163726f>-2.5 E 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203436>3.52 F 2.5 -<352e332e2043>87 427.2 R<616e642046208a2044658c6e6520436c6173736573>2.5 -E 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203533> -2.67 F 2.5<352e342e204d>87 441.6 R 2.5<8a44>2.5 G -<658c6e65204d61696c6572>-2.5 E 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203535>3.79 F 2.5 -<352e352e2048>87 456 R 2.5<8a44>2.5 G<658c6e6520486561646572>-2.5 E 23.5 -<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e203630>3.25 F 2.5<352e362e204f>87 470.4 R 2.5<8a53>2.5 G -<6574204f7074696f6e>-2.5 E 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203631>3.22 F 2.5 -<352e372e2050>87 484.8 R 2.5<8a50>2.5 G -<7265636564656e63652044658c6e6974696f6e73>-2.5 E 23.5<2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203739>2.96 F 2.5<352e382e2056>87 -499.2 R 2.5<8a43>2.5 G<6f6e8c6775726174696f6e2056>-2.5 E -<657273696f6e204c65>-1.11 E -.15<7665>-.25 G 2.8<6c2e>.15 G 23.5<2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e203830>-2.8 F 2.5<352e392e204b>87 513.6 R 2.5 -<8a4b>2.5 G .3 -.15<65792046>-2.75 H<696c65204465636c61726174696f6e>.15 -E 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203831> -2.81 F 2.5<352e31302e2051>87 528 R 2.5<8a51>2.5 G -<756575652047726f7570204465636c61726174696f6e>-2.5 E 23.5<2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e203839>2.98 F 2.5<352e31312e2058>87 542.4 R 2.5 -<8a4d>2.5 G -<61696c2046696c74657220284d696c746572292044658c6e6974696f6e73>-2.5 E -23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e203930>4.61 F 2.5<352e31322e20546865>87 556.8 -R<55736572204461746162617365>2.5 E 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203931>4.92 F 2.5 -<352e31322e312e20537472756374757265>102 571.2 R -<6f66207468652075736572206461746162617365>2.5 E 23.5<2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e203931>2.7 F 2.5<352e31322e322e2055736572>102 585.6 R -<64617461626173652073656d616e74696373>2.5 E 23.5<2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e203932>3.25 F 2.5<352e31322e332e204372656174696e67> -102 602 R<746865206461746162617365>2.5 E/F2 7/Times-Roman@0 SF<3233>-4 I -F1 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203932>2.91 4 N -2.5<362e204f>72 616.4 R<5448455220434f4e464947555241>-.4 E 1.97<54494f4e -202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e> --1.11 F<3933>26 E 2.5<362e312e2050>87 630.8 R -<6172616d657465727320696e206465>-.15 E .3<76746f6f6c732f4f532f246f736366 -202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e>-.25 F<3933>26 E 2.5 -<362e312e312e2046>102 645.2 R<6f72204675747572652052656c6561736573>-.15 -E 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2039 -34>3.66 F 2.5<362e322e2050>87 659.6 R -<6172616d657465727320696e2073656e646d61696c2f636f6e662e68>-.15 E 23.5<2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e203934>4.78 F 2.5 -<362e332e20436f6e8c6775726174696f6e>87 674 R -<696e2073656e646d61696c2f636f6e662e63>2.5 E 23.5<2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e203936>4.06 F 2.5<362e332e312e204275696c742d696e>102 688.4 -R<4865616465722053656d616e74696373>2.5 E 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e203937>4.9 F 2.5<362e332e322e205265737472696374696e67>102 -702.8 R<557365206f6620456d61696c>2.5 E 23.5<2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e203938>4.34 F 2.5<362e332e332e204e65>102 717.2 R 2.5 -<7744>-.25 G<61746162617365204d617020436c6173736573>-2.5 E 23.5<2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e203939>4.89 F 0 Cg EP -%%Page: 6 112 +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-3)200.86 E/F1 12/Times-Roman@0 SF -1.116(TA)263.226 98.4 S +(BLE OF CONTENTS)1.116 E/F2 10/Times-Roman@0 SF 2.5(1. B)72 124.8 R +(ASIC INST)-.35 E(ALLA)-.93 E 1.18(TION ...............................\ +.......................................................................\ +.........)-1.11 F(7)31 E 2.5(1.1. Compiling)87 139.2 R .43(Sendmail ...\ +.......................................................................\ +....................................)2.5 F(7)31 E 2.5(1.1.1. T)102 153.6 +R(weaking the Build In)-.8 E -.2(vo)-.4 G .19(cation ..................\ +...................................................................).2 F +(7)31 E 2.5(1.1.2. Creating)102 168 R 2.5(aS)2.5 G +(ite Con\214guration File)-2.5 E 28.5(.................................\ +............................................... 7)2.94 F 2.5(1.1.3. T) +102 182.4 R(weaking the Mak)-.8 E 1.64(e\214le ........................\ +.......................................................................\ +..)-.1 F(8)31 E 2.5(1.1.4. Compilation)102 196.8 R(and installation)2.5 +E 28.5(................................................................\ +........................ 8)4.6 F 2.5(1.2. Con\214guration)87 211.2 R .99 +(Files ................................................................\ +................................................)2.5 F(8)31 E 2.5 +(1.3. Details)87 225.6 R(of Installation Files)2.5 E 23.5(.............\ +.......................................................................\ +............... 10)4.89 F 2.5(1.3.1. /usr/sbin/sendmail)102 240 R 23.5(\ +.......................................................................\ +.................................. 10)2.66 F 2.5 +(1.3.2. /etc/mail/sendmail.cf)102 254.4 R 23.5(........................\ +.......................................................................\ +..... 10)4.34 F 2.5(1.3.3. /etc/mail/submit.cf)102 268.8 R 23.5(.......\ +.......................................................................\ +.......................... 10)3.22 F 2.5(1.3.4. /usr/bin/ne)102 283.2 R +-.1(wa)-.25 G 2.19(liases .............................................\ +..........................................................).1 F(10)26 E +2.5(1.3.5. /usr/bin/hoststat)102 297.6 R 23.5(.........................\ +.......................................................................\ +............ 10)4.6 F 2.5(1.3.6. /usr/bin/pur)102 312 R 1.18(gestat ...\ +.......................................................................\ +................................)-.18 F(11)26 E 2.5(1.3.7. /v)102 326.4 +R 1.81(ar/spool/mqueue ................................................\ +........................................................)-.25 F(11)26 E +2.5(1.3.8. /v)102 340.8 R 2.09(ar/spool/clientmqueue ..................\ +.......................................................................\ +......)-.25 F(11)26 E 2.5(1.3.9. /v)102 355.2 R .97(ar/spool/mqueue/.ho\ +ststat ................................................................\ +..........................)-.25 F(11)26 E 2.5 +(1.3.10. /etc/mail/aliases*)102 369.6 R 23.5(..........................\ +.......................................................................\ +....... 11)4.06 F 2.5(1.3.11. /etc/rc)102 384 R(or /etc/init.d/sendmail) +2.5 E 23.5(............................................................\ +.......................... 12)3.23 F 2.5(1.3.12. /etc/mail/help\214le) +102 398.4 R 23.5(......................................................\ +................................................... 12)3.22 F 2.5 +(1.3.13. /etc/mail/statistics)102 412.8 R 23.5(........................\ +.......................................................................\ +........ 12)3.77 F 2.5(1.3.14. /usr/bin/mailq)102 427.2 R 23.5(........\ +.......................................................................\ +.............................. 12)4.88 F 2.5(1.3.15. sendmail.pid)102 +441.6 R 23.5(..........................................................\ +..................................................... 12)4.61 F 2.5 +(1.3.16. Map)102 456 R .72(Files ......................................\ +.......................................................................\ +.......)2.5 F(14)26 E 2.5(2. NORMAL)72 470.4 R(OPERA)2.5 E 1.56(TIONS .\ +.......................................................................\ +.....................................)-1.11 F(14)26 E 2.5(2.1. The)87 +484.8 R(System Log)2.5 E 23.5(.........................................\ +.......................................................................\ +.... 14)4.89 F 2.5(2.1.1. F)102 499.2 R 2.26(ormat ....................\ +.......................................................................\ +...............................)-.15 F(14)26 E 2.5(2.1.2. Le)102 513.6 R +-.15(ve)-.25 G 2.24(ls ................................................\ +.......................................................................\ +....).15 F(15)26 E 2.5(2.2. Dumping)87 528 R .72(State ................\ +.......................................................................\ +................................)2.5 F(15)26 E 2.5(2.3. The)87 542.4 R +(Mail Queues)2.5 E 23.5(...............................................\ +.................................................................... 16) +4.07 F 2.5(2.3.1. Queue)102 556.8 R(Groups and Queue Directories)2.5 E +23.5(..................................................................\ +........ 16)2.99 F 2.5(2.3.2. Queue)102 571.2 R 1.84(Runs .............\ +.......................................................................\ +..............................)2.5 F(16)26 E 2.5(2.3.3. Manual)102 585.6 +R(Interv)2.5 E 1.72(ention ............................................\ +.........................................................)-.15 F(17)26 E +2.5(2.3.4. Printing)102 600 R(the queue)2.5 E 23.5(....................\ +.......................................................................\ +.............. 17)2.67 F 2.5(2.3.5. F)102 614.4 R(orcing the queue)-.15 +E 23.5(................................................................\ +......................................... 17)3.94 F 2.5 +(2.3.6. Quarantined)102 628.8 R(Queue Items)2.5 E 23.5(................\ +.......................................................................\ +...... 18)3.25 F 2.5(2.4. Disk)87 643.2 R(Based Connection Information) +2.5 E 23.5(............................................................\ +......................... 18)3.79 F 2.5(2.5. The)87 657.6 R +(Service Switch)2.5 E 23.5(............................................\ +.................................................................... 19) +2.68 F 2.5(2.6. The)87 672 R(Alias Database)2.5 E 23.5(................\ +.......................................................................\ +......................... 20)2.69 F 2.5(2.6.1. Reb)102 686.4 R +(uilding the alias database)-.2 E 23.5(................................\ +....................................................... 21)4.27 F 2.5 +(2.6.2. Potential)102 700.8 R .72(problems ............................\ +.......................................................................\ +.....)2.5 F(21)26 E 2.5(2.6.3. List)102 715.2 R -.25(ow)2.5 G 1.81(ners\ + ......................................................................\ +.............................................).25 F(21)26 E 0 Cg EP +%%Page: 4 112 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Bold@0 SF 198.36<534d4d3a30382d362053656e646d61696c>72 60 R -<496e7374616c6c6174696f6e20616e64204f7065726174696f6e204775696465>2.5 E -/F1 10/Times-Roman@0 SF 2.5<362e332e342e205175657565696e67>102 96 R 1.56 -<46756e6374696f6e202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e>2.5 F<3939>26 E 2.5<362e332e352e205265667573696e67>102 110.4 -R<496e636f6d696e6720534d545020436f6e6e656374696f6e73>2.5 E 18.5<2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e20313030> -2.94 F 2.5<362e332e362e204c6f6164>102 124.8 R -1.17 -.74<41762065>2.5 H -<7261676520436f6d7075746174696f6e>.74 E 18.5<2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e20313030>2.74 F 2.5<362e342e20436f6e8c6775726174696f6e>87 -139.2 R<696e2073656e646d61696c2f6461656d6f6e2e63>2.5 E 18.5<2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e20313030>2.67 F 2.5<362e352e204c44>87 153.6 R .29<4150202e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e>-.4 F<313031>21 E 2.5 -<362e352e312e204c44>102 168 R<415020526563757273696f6e>-.4 E 18.5<2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e20313031> -4.74 F 2.5<362e352e312e312e204578616d706c65>117 182.4 R 18.5<2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2031 -3031>2.95 F 2.5<362e362e205354>87 196.8 R<4152>-.93 E .58<54544c53202e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e>-.6 F<313032>21 E 2.5 -<362e362e312e2043657274698c6361746573>102 211.2 R<666f72205354>2.5 E -<4152>-.93 E .87<54544c53202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e>-.6 F -<313032>21 E 2.5<362e362e322e2050524e47>102 225.6 R<666f72205354>2.5 E -<4152>-.93 E 2.25<54544c53202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e>-.6 F<313032>21 E 2.5<362e372e20456e636f64696e67>87 240 R -<6f66205354>2.5 E<4152>-.93 E<54544c5320616e642041>-.6 E -<5554482072656c61746564204d6163726f73>-.55 E 18.5<2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e20313033>2.56 F 2.5<372e2041>72 254.4 R -<434b4e4f>-.4 E .1<574c454447454d454e5453202e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e>-.35 F<313033>21 E -<417070656e64697820412e>72 268.8 Q<434f4d4d414e44204c494e4520464c41>5 E -1.97<4753202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e>-.4 F<313035>21 E -<417070656e64697820422e>72 283.2 Q -.1<5155>5 G -<4555452046494c4520464f524d41>.1 E 1.38<5453202e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e>-1.11 F<313038>21 E<417070656e64697820432e>72 297.6 Q -<53554d4d4152>5 E 2.5<594f>-.65 G 2.5<4653>-2.5 G<5550504f52>-2.5 E 2.5 -<5446>-.6 G 1.12<494c4553202e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e -2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e>-2.5 F<313131>21 E 0 Cg EP +/F0 10/Times-Bold@0 SF 198.36(SMM:08-4 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 2.5 +(2.7. User)87 96 R(Information Database)2.5 E 23.5(....................\ +.......................................................................\ +......... 22)2.7 F 2.5(2.8. Per)87 110.4 R(-User F)-.2 E(orw)-.15 E +(arding \(.forw)-.1 E(ard Files\))-.1 E 23.5(..........................\ +......................................................... 22)4.09 F 2.5 +(2.9. Special)87 124.8 R(Header Lines)2.5 E 23.5(......................\ +.......................................................................\ +................ 22)2.97 F 2.5(2.9.1. Errors-T)102 139.2 R 2.09(o: ....\ +.......................................................................\ +..........................................)-.8 F(22)26 E 2.5 +(2.9.2. Apparently-T)102 153.6 R 2.09(o: ..............................\ +.......................................................................\ +........)-.8 F(22)26 E 2.5(2.9.3. Precedence)102 168 R 23.5(...........\ +.......................................................................\ +.................................. 22)2.97 F 2.5(2.10. IDENT)87 182.4 R +(Protocol Support)2.5 E 23.5(..........................................\ +........................................................... 23)2.95 F +2.5(3. ARGUMENTS)72 196.8 R 23.5(......................................\ +.......................................................................\ +.................. 23)3.78 F 2.5(3.1. Queue)87 211.2 R(Interv)2.5 E 1.55 +(al ...................................................................\ +....................................................)-.25 F(23)26 E 2.5 +(3.2. Daemon)87 225.6 R 1.29(Mode .....................................\ +.......................................................................\ +...........)2.5 F(24)26 E 2.5(3.3. F)87 240 R(orcing the Queue)-.15 E +23.5(..................................................................\ +............................................... 24)4.22 F 2.5(3.4. Deb) +87 254.4 R 1.76(ugging ................................................\ +.......................................................................\ +......)-.2 F(24)26 E 2.5(3.5. Changing)87 268.8 R(the V)2.5 E +(alues of Options)-1.11 E 23.5(........................................\ +.................................................... 25)3.23 F 2.5 +(3.6. T)87 283.2 R(rying a Dif)-.35 E(ferent Con\214guration File)-.25 E +23.5(..................................................................\ +................. 25)4.67 F 2.5(3.7. Logging)87 297.6 R -.35(Tr)2.5 G +(af).35 E .5(\214c ....................................................\ +..................................................................)-.25 +F(25)26 E 2.5(3.8. T)87 312 R(esting Con\214guration Files)-.7 E 23.5(.\ +.......................................................................\ +........................... 26)4.19 F 2.5(3.9. Persistent)87 326.4 R +(Host Status Information)2.5 E 23.5(...................................\ +..................................................... 27)3.5 F 2.5 +(4. TUNING)72 340.8 R 23.5(............................................\ +.......................................................................\ +...................... 27)2.68 F 2.5(4.1. T)87 355.2 R 1.07(imeouts ...\ +.......................................................................\ +......................................................)-.35 F(27)26 E +2.5(4.1.1. Queue)102 369.6 R(interv)2.5 E 2.1(al ......................\ +.......................................................................\ +.................)-.25 F(27)26 E 2.5(4.1.2. Read)102 384 R 1(timeouts .\ +.......................................................................\ +.......................................)2.5 F(28)26 E 2.5 +(4.1.3. Message)102 398.4 R 1.56(timeouts .............................\ +.......................................................................\ +.....)2.5 F(29)26 E 2.5(4.2. F)87 412.8 R(orking During Queue Runs)-.15 +E 23.5(................................................................\ +................................. 30)4.49 F 2.5(4.3. Queue)87 427.2 R +.73(Priorities ........................................................\ +.............................................................)2.5 F(30) +26 E 2.5(4.4. Load)87 441.6 R .44(Limiting ............................\ +.......................................................................\ +.....................)2.5 F(31)26 E 2.5(4.5. Resource)87 456 R .17(Limi\ +ts ....................................................................\ +.................................................)2.5 F(31)26 E 2.5 +(4.6. Measures)87 470.4 R(ag)2.5 E(ainst Denial of Service Attacks)-.05 +E 23.5(................................................................\ +......... 31)3.87 F 2.5(4.7. Deli)87 484.8 R -.15(ve)-.25 G(ry Mode).15 +E 23.5(................................................................\ +....................................................... 31)3.08 F 2.5 +(4.8. Log)87 499.2 R(Le)2.5 E -.15(ve)-.25 G 2.52(l.).15 G 23.5(.......\ +.......................................................................\ +................................................ 32)-2.52 F 2.5 +(4.9. File)87 513.6 R .72(Modes .......................................\ +.......................................................................\ +...............)2.5 F(33)26 E 2.5(4.9.1. T)102 528 R 2.5(os)-.8 G +(uid or not to suid?)-2.5 E 23.5(......................................\ +........................................................... 33)6.52 F +2.5(4.9.2. T)102 542.4 R(urning of)-.45 E 2.5(fs)-.25 G(ecurity checks) +-2.5 E 23.5(...........................................................\ +............................... 33)3.95 F 2.5(4.10. Connection)87 556.8 +R 1.56(Caching ........................................................\ +....................................................)2.5 F(35)26 E 2.5 +(4.11. Name)87 571.2 R(Serv)2.5 E(er Access)-.15 E 23.5(...............\ +.......................................................................\ +...................... 36)2.85 F 2.5(4.12. Mo)87 585.6 R(ving the Per) +-.15 E(-User F)-.2 E(orw)-.15 E(ard Files)-.1 E 23.5(..................\ +.................................................................. 37) +3.84 F 2.5(4.13. Free)87 600 R 1.85(Space .............................\ +.......................................................................\ +.......................)2.5 F(37)26 E 2.5(4.14. Maximum)87 614.4 R +(Message Size)2.5 E 23.5(..............................................\ +....................................................... 37)4.62 F 2.5 +(4.15. Pri)87 628.8 R -.25(va)-.25 G .3 -.15(cy F).25 H 1.93(lags .....\ +.......................................................................\ +...........................................).15 F(37)26 E 2.5 +(4.16. Send)87 643.2 R(to Me T)2.5 E 2.08(oo ..........................\ +.......................................................................\ +..................)-.8 F(38)26 E 2.5(5. THE)72 657.6 R +(WHOLE SCOOP ON THE CONFIGURA)2.5 E(TION FILE)-1.11 E 23.5 +(........................................................ 38)4.64 F 2.5 +(5.1. R)87 672 R(and S \212 Re)2.5 E(writing Rules)-.25 E 23.5(........\ +.......................................................................\ +................... 38)4.3 F 2.5(5.1.1. The)102 686.4 R(left hand side) +2.5 E 23.5(............................................................\ +............................................. 39)4.07 F 2.5(5.1.2. The) +102 700.8 R(right hand side)2.5 E 23.5(................................\ +.......................................................................\ + 39)3.51 F 2.5(5.1.3. Semantics)102 715.2 R(of re)2.5 E +(writing rule sets)-.25 E 23.5(........................................\ +........................................... 40)4.6 F 0 Cg EP +%%Page: 5 113 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q +(SMM:08-5)200.86 E/F1 10/Times-Roman@0 SF 2.5(5.1.4. Ruleset)102 96 R +2.11(hooks ............................................................\ +...................................................)2.5 F(41)26 E 2.5 +(5.1.4.1. check_relay)117 110.4 R 23.5(................................\ +.......................................................................\ +... 41)2.69 F 2.5(5.1.4.2. check_mail)117 124.8 R 23.5(................\ +.......................................................................\ +................... 42)4.9 F 2.5(5.1.4.3. check_rcpt)117 139.2 R 23.5(.\ +.......................................................................\ +................................... 42)4.63 F 2.5(5.1.4.4. check_data) +117 153.6 R 23.5(......................................................\ +..................................................... 42)3.52 F 2.5 +(5.1.4.5. check_compat)117 168 R 23.5(.................................\ +..................................................................... 4\ +2)3.24 F 2.5(5.1.4.6. check_eoh)117 182.4 R 23.5(......................\ +.......................................................................\ +............... 42)3.24 F 2.5(5.1.4.7. check_eom)117 196.8 R 23.5(.....\ +.......................................................................\ +............................... 43)2.96 F 2.5(5.1.4.8. check_etrn)117 +211.2 R 23.5(..........................................................\ +................................................. 43)4.63 F 2.5 +(5.1.4.9. check_e)117 225.6 R .89(xpn .................................\ +.......................................................................\ +..)-.15 F(43)26 E 2.5(5.1.4.10. check_vrfy)117 240 R 23.5(.............\ +.......................................................................\ +..................... 43)3.52 F 2.5(5.1.4.11. trust_auth)117 254.4 R +23.5(..................................................................\ +......................................... 43)3.5 F 2.5 +(5.1.4.12. tls_client)117 268.8 R 23.5(................................\ +.......................................................................\ +..... 43)4.33 F 2.5(5.1.4.13. tls_serv)117 283.2 R 2.27(er ............\ +.......................................................................\ +........................)-.15 F(44)26 E 2.5(5.1.4.14. tls_rcpt)117 297.6 +R 23.5(................................................................\ +............................................... 44)3.5 F 2.5 +(5.1.4.15. srv_features)117 312 R 23.5(................................\ +.......................................................................\ + 44)4.63 F 2.5(5.1.4.16. try_tls)117 326.4 R 23.5(.....................\ +.......................................................................\ +..................... 45)2.94 F 2.5(5.1.4.17. tls_srv_features)117 340.8 +R(and tls_clt_features)2.5 E 23.5 +(................................................................. 45) +4.64 F 2.5(5.1.4.18. authinfo)117 355.2 R 23.5(........................\ +.......................................................................\ +............... 46)2.67 F 2.5(5.1.4.19. queue)117 369.6 R 1.44(group ..\ +.......................................................................\ +...............................)-.15 F(46)26 E 2.5 +(5.1.4.20. greet_pause)117 384 R 23.5(.................................\ +.......................................................................\ + 47)3.24 F 2.5(5.1.5. IPC)102 398.4 R 1(mailers .......................\ +.......................................................................\ +.....................)2.5 F(47)26 E 2.5(5.2. D)87 412.8 R 2.5<8a44>2.5 G +(e\214ne Macro)-2.5 E 23.5(............................................\ +.................................................................... 47) +3.52 F 2.5(5.3. C)87 427.2 R(and F \212 De\214ne Classes)2.5 E 23.5(...\ +.......................................................................\ +........................... 54)2.67 F 2.5(5.4. M)87 441.6 R 2.5<8a44>2.5 +G(e\214ne Mailer)-2.5 E 23.5(..........................................\ +..................................................................... 5\ +6)3.79 F 2.5(5.5. H)87 456 R 2.5<8a44>2.5 G(e\214ne Header)-2.5 E 23.5(\ +.......................................................................\ +........................................ 61)3.25 F 2.5(5.6. O)87 470.4 R +2.5<8a53>2.5 G(et Option)-2.5 E 23.5(..................................\ +.......................................................................\ +............ 62)3.22 F 2.5(5.7. P)87 484.8 R 2.5<8a50>2.5 G +(recedence De\214nitions)-2.5 E 23.5(..................................\ +................................................................ 81)2.96 +F 2.5(5.8. V)87 499.2 R 2.5<8a43>2.5 G(on\214guration V)-2.5 E +(ersion Le)-1.11 E -.15(ve)-.25 G 2.8(l.).15 G 23.5(...................\ +..................................................................... 8\ +1)-2.8 F 2.5(5.9. K)87 513.6 R 2.5<8a4b>2.5 G .3 -.15(ey F)-2.75 H +(ile Declaration).15 E 23.5(...........................................\ +.......................................................... 82)2.81 F 2.5 +(5.10. Q)87 528 R 2.5<8a51>2.5 G(ueue Group Declaration)-2.5 E 23.5(...\ +.......................................................................\ +................. 91)2.98 F 2.5(5.11. X)87 542.4 R 2.5<8a4d>2.5 G +(ail Filter \(Milter\) De\214nitions)-2.5 E 23.5(......................\ +............................................................ 92)4.61 F +2.5(5.12. The)87 556.8 R(User Database)2.5 E 23.5(.....................\ +.......................................................................\ +.................. 93)4.92 F 2.5(5.12.1. Structure)102 571.2 R +(of the user database)2.5 E 23.5(......................................\ +............................................... 93)2.7 F 2.5 +(5.12.2. User)102 585.6 R(database semantics)2.5 E 23.5(...............\ +.......................................................................\ +....... 93)3.25 F 2.5(5.12.3. Creating)102 602 R(the database)2.5 E/F2 7 +/Times-Roman@0 SF(23)-4 I F1 23.5(.....................................\ +.......................................................... 94)2.91 4 N +2.5(6. O)72 616.4 R(THER CONFIGURA)-.4 E 1.97(TION ....................\ +.......................................................................\ +..............)-1.11 F(94)26 E 2.5(6.1. P)87 630.8 R(arameters in de) +-.15 E .3(vtools/OS/$oscf .............................................\ +..............................................)-.25 F(94)26 E 2.5 +(6.1.1. F)102 645.2 R(or Future Releases)-.15 E 23.5(..................\ +.......................................................................\ +............. 95)3.66 F 2.5(6.2. P)87 659.6 R +(arameters in sendmail/conf.h)-.15 E 23.5(.............................\ +................................................................. 96) +4.78 F 2.5(6.3. Con\214guration)87 674 R(in sendmail/conf.c)2.5 E 23.5(\ +.......................................................................\ +................... 98)4.06 F 2.5(6.3.1. Built-in)102 688.4 R +(Header Semantics)2.5 E 23.5(..........................................\ +................................................. 98)4.9 F 2.5 +(6.3.2. Restricting)102 702.8 R(Use of Email)2.5 E 18.5(...............\ +.......................................................................\ +........ 100)4.34 F 2.5(6.3.3. Ne)102 717.2 R 2.5(wD)-.25 G +(atabase Map Classes)-2.5 E 18.5(......................................\ +................................................... 100)4.89 F 0 Cg EP +%%Page: 6 114 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 198.36(SMM:08-6 Sendmail)72 60 R +(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 2.5 +(6.3.4. Queueing)102 96 R 1.56(Function ...............................\ +.......................................................................\ +.)2.5 F(101)21 E 2.5(6.3.5. Refusing)102 110.4 R +(Incoming SMTP Connections)2.5 E 18.5(.................................\ +...................................... 101)2.94 F 2.5(6.3.6. Load)102 +124.8 R -1.17 -.74(Av e)2.5 H(rage Computation).74 E 18.5(.............\ +.......................................................................\ +...... 101)2.74 F 2.5(6.4. Con\214guration)87 139.2 R +(in sendmail/daemon.c)2.5 E 18.5(......................................\ +............................................... 102)2.67 F 2.5(6.5. LD) +87 153.6 R .29(AP .....................................................\ +.......................................................................\ +.........)-.4 F(102)21 E 2.5(6.5.1. LD)102 168 R(AP Recursion)-.4 E 18.5 +(......................................................................\ +.................................... 102)4.74 F 2.5(6.5.1.1. Example)117 +182.4 R 18.5(..........................................................\ +..................................................... 102)2.95 F 2.5 +(6.6. ST)87 196.8 R(AR)-.93 E .58(TTLS ................................\ +.......................................................................\ +.....................)-.6 F(103)21 E 2.5(6.6.1. Certi\214cates)102 211.2 +R(for ST)2.5 E(AR)-.93 E .87(TTLS .....................................\ +.....................................................)-.6 F(103)21 E 2.5 +(6.6.2. PRNG)102 225.6 R(for ST)2.5 E(AR)-.93 E 2.25(TTLS .............\ +.......................................................................\ +.............)-.6 F(104)21 E 2.5(6.7. Encoding)87 240 R(of ST)2.5 E(AR) +-.93 E(TTLS and A)-.6 E(UTH related Macros)-.55 E 18.5 +(............................................................ 104)2.56 F +2.5(6.8. D)87 254.4 R 1.13(ANE ........................................\ +.......................................................................\ +.....................)-.4 F(104)21 E 2.5(7. A)72 268.8 R(CKNO)-.4 E .1(\ +WLEDGEMENTS ...........................................................\ +.................................................)-.35 F(105)21 E +(Appendix A.)72 283.2 Q(COMMAND LINE FLA)5 E 1.97(GS ..................\ +.......................................................................) +-.4 F(107)21 E(Appendix B.)72 297.6 Q -.1(QU)5 G(EUE FILE FORMA).1 E +1.38(TS ...............................................................\ +.............................)-1.11 F(110)21 E(Appendix C.)72 312 Q +(SUMMAR)5 E 2.5(YO)-.65 G 2.5(FS)-2.5 G(UPPOR)-2.5 E 2.5(TF)-.6 G 1.12(\ +ILES ..................................................................\ +............)-2.5 F(113)21 E 0 Cg EP %%Trailer end %%EOF diff --git a/editmap/Makefile b/editmap/Makefile index f08d5a7ccde9..b173ba9fa62b 100644 --- a/editmap/Makefile +++ b/editmap/Makefile @@ -8,6 +8,8 @@ all: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ clean: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ +check: FRC + $(SHELL) $(BUILD) $(OPTIONS) $@ install: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ diff --git a/editmap/editmap.0 b/editmap/editmap.0 index 664edb33f276..378dbb49ba1b 100644 --- a/editmap/editmap.0 +++ b/editmap/editmap.0 @@ -2,20 +2,20 @@ EDITMAP(8) EDITMAP(8) -NNAAMMEE - eeddiittmmaapp - query and edit single records in database maps for sendmail +NAME + editmap - query and edit single records in database maps for sendmail -SSYYNNOOPPSSIISS - eeddiittmmaapp [--CC _f_i_l_e] [--NN] [--ff] [--qq||--uu||--xx] maptype mapname key [ "value +SYNOPSIS + editmap [-C file] [-N] [-f] [-q|-u|-x] maptype mapname key [ "value ..." ] -DDEESSCCRRIIPPTTIIOONN - EEddiittmmaapp queries or edits one record in database maps used by the keyed +DESCRIPTION + Editmap queries or edits one record in database maps used by the keyed map lookups in sendmail(8). Arguments are passed on the command line and output (for queries) is directed to standard output. - Depending on how it is compiled, eeddiittmmaapp handles up to three different - database formats, selected using the _m_a_p_t_y_p_e parameter. They may be + Depending on how it is compiled, editmap handles up to three different + database formats, selected using the maptype parameter. They may be dbm DBM format maps. This requires the ndbm(3) library. @@ -23,39 +23,39 @@ DDEESSCCRRIIPPTTIIOONN hash Hash format maps. This also requires the Berkeley DB library. - If the _T_r_u_s_t_e_d_U_s_e_r option is set in the sendmail configuration file and - eeddiittmmaapp is invoked as root, the generated files will be owned by the - specified _T_r_u_s_t_e_d_U_s_e_r_. + If the TrustedUser option is set in the sendmail configuration file and + editmap is invoked as root, the generated files will be owned by the + specified TrustedUser. - FFllaaggss - --CC Use the specified sseennddmmaaiill configuration file for looking up the + Flags + -C Use the specified sendmail configuration file for looking up the TrustedUser option. - --NN Include the null byte that terminates strings in the map (for + -N Include the null byte that terminates strings in the map (for alias maps). - --ff Normally all upper case letters in the key are folded to lower + -f Normally all upper case letters in the key are folded to lower case. This flag disables that behaviour. This is intended to - mesh with the -f flag in the KK line in sendmail.cf. The value + mesh with the -f flag in the K line in sendmail.cf. The value is never case folded. - --qq Query the map for the specified key. If found, print value to + -q Query the map for the specified key. If found, print value to standard output and exit with 0. If not found then print an error message to stdout and exit with EX_UNAVAILABLE. - --uu Update the record for _k_e_y with _v_a_l_u_e or inserts a new record if + -u Update the record for key with value or inserts a new record if one doesn't exist. Exits with 0 on success or EX_IOERR on fail- ure. - --xx Deletes the specific key from the map. Exits with 0 on success + -x Deletes the specific key from the map. Exits with 0 on success or EX_IOERR on failure. - SSEEEE AALLSSOO + SEE ALSO sendmail(8), makemap(8) -HHIISSTTOORRYY - The eeddiittmmaapp command has no history. +HISTORY + The editmap command has no history. diff --git a/editmap/editmap.c b/editmap/editmap.c index 66ee5793d5d7..c3454cb495ae 100644 --- a/editmap/editmap.c +++ b/editmap/editmap.c @@ -23,19 +23,19 @@ SM_UNUSED(static char copyright[]) = #ifndef lint SM_UNUSED(static char id[]) = "@(#)$Id: editmap.c,v 1.26 2013-11-22 20:51:26 ca Exp $"; -#endif /* ! lint */ +#endif #include #ifndef ISC_UNIX # include -#endif /* ! ISC_UNIX */ +#endif #include #include #include #ifdef EX_OK # undef EX_OK /* unistd.h may have another use for this */ -#endif /* EX_OK */ +#endif #include #include #include @@ -100,7 +100,7 @@ main(argc, argv) #if HASFCHOWN FILE *cfp; char buf[MAXLINE]; -#endif /* HASFCHOWN */ +#endif static char rnamebuf[MAXNAME]; /* holds RealUserName */ extern char *optarg; extern int optind; diff --git a/include/libmilter/mfapi.h b/include/libmilter/mfapi.h index 039a16a94481..2b012d86af2b 100644 --- a/include/libmilter/mfapi.h +++ b/include/libmilter/mfapi.h @@ -43,11 +43,11 @@ /* Only need to export C interface if used by C++ source code */ #ifdef __cplusplus extern "C" { -#endif /* __cplusplus */ +#endif #ifndef _SOCK_ADDR # define _SOCK_ADDR struct sockaddr -#endif /* ! _SOCK_ADDR */ +#endif /* ** libmilter functions return one of the following to indicate @@ -58,7 +58,7 @@ extern "C" { #define MI_FAILURE (-1) #if _FFR_WORKERS_POOL # define MI_CONTINUE 1 -#endif /* _FFR_WORKERS_POOL */ +#endif /* "forward" declarations */ typedef struct smfi_str SMFICTX; @@ -76,17 +76,17 @@ typedef int sfsistat; #if defined(__linux__) && defined(__GNUC__) && defined(__cplusplus) && __GNUC_MINOR__ >= 8 # define SM__P(X) __PMT(X) -#else /* __linux__ && __GNUC__ && __cplusplus && _GNUC_MINOR__ >= 8 */ +#else # define SM__P(X) __P(X) -#endif /* __linux__ && __GNUC__ && __cplusplus && _GNUC_MINOR__ >= 8 */ +#endif /* Some platforms don't define __P -- do it for them here: */ #ifndef __P # ifdef __STDC__ # define __P(X) X -# else /* __STDC__ */ +# else # define __P(X) () -# endif /* __STDC__ */ +# endif #endif /* __P */ #if SM_CONF_STDBOOL_H @@ -464,7 +464,7 @@ LIBMILTER_API int smfi_chgheader __P((SMFICTX *, char *, int, char *)); ** ** SMFICTX *ctx; Opaque context structure ** char *headerf; Header field name -** int index; The Nth occurence of header field name +** int index; The Nth occurrence of header field name ** char *headerv; New header field value (empty for delete header) */ @@ -594,10 +594,10 @@ LIBMILTER_API int smfi_setsymlist __P((SMFICTX *, int, char *)); #if _FFR_THREAD_MONITOR LIBMILTER_API int smfi_set_max_exec_time __P((unsigned int)); -#endif /* _FFR_THREAD_MONITOR */ +#endif #ifdef __cplusplus } -#endif /* __cplusplus */ +#endif #endif /* ! _LIBMILTER_MFAPI_H */ diff --git a/include/libmilter/mfdef.h b/include/libmilter/mfdef.h index 7dc9d5eb4341..02a34d3a2028 100644 --- a/include/libmilter/mfdef.h +++ b/include/libmilter/mfdef.h @@ -19,7 +19,7 @@ #ifndef SMFI_PROT_VERSION # define SMFI_PROT_VERSION 6 /* MTA - libmilter protocol version */ -#endif /* SMFI_PROT_VERSION */ +#endif /* Shared protocol constants */ #define MILTER_LEN_BYTES 4 /* length of 32 bit integer in bytes */ @@ -121,6 +121,6 @@ #if _FFR_MILTER_CHECK # define SMFIP_TEST 0x80000000L -#endif /* _FFR_MILTER_CHECK */ +#endif #endif /* !_LIBMILTER_MFDEF_H */ diff --git a/include/libsmdb/smdb.h b/include/libsmdb/smdb.h index a1df6d7ae801..427599ce206c 100644 --- a/include/libsmdb/smdb.h +++ b/include/libsmdb/smdb.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999-2002 Proofpoint, Inc. and its suppliers. + * Copyright (c) 1999-2002, 2018 Proofpoint, Inc. and its suppliers. * All rights reserved. * * By using this file, you agree to the terms and conditions set @@ -18,13 +18,13 @@ # include # include -# ifdef NDBM +# if NDBM # include -# endif /* NDBM */ +# endif -# ifdef NEWDB +# if NEWDB # include "sm/bdb.h" -# endif /* NEWDB */ +# endif /* ** Some size constants @@ -119,7 +119,6 @@ typedef int (*db_get_func) __P((SMDB_DATABASE *db, ** flags -- put options: ** SMDBF_NO_OVERWRITE - Return an error if key alread ** exists. -** SMDBF_ALLOW_DUP - Allow duplicates in btree maps. ** ** Returns: ** 0 - Success, otherwise errno. @@ -190,6 +189,7 @@ struct database_struct db_lockfd_func smdb_lockfd; void *smdb_impl; }; + /* ** DB_CURSOR_CLOSE -- Close a cursor ** @@ -244,10 +244,10 @@ typedef int (*db_cursor_get_func) __P((SMDB_CURSOR *cursor, ** Flags for DB_CURSOR_GET */ -#define SMDB_CURSOR_GET_FIRST 0 -#define SMDB_CURSOR_GET_LAST 1 +#define SMDB_CURSOR_GET_FIRST 0 /* NOT USED by any application */ +#define SMDB_CURSOR_GET_LAST 1 /* NOT USED by any application */ #define SMDB_CURSOR_GET_NEXT 2 -#define SMDB_CURSOR_GET_RANGE 3 +#define SMDB_CURSOR_GET_RANGE 3 /* NOT USED by any application */ /* ** DB_CURSOR_PUT -- Put the key/value at this cursor. @@ -313,12 +313,34 @@ typedef unsigned int SMDB_FLAG; # define SMDB_TYPE_DEFAULT NULL # define SMDB_TYPE_DEFAULT_LEN 0 +# define SMDB_TYPE_IMPL "implicit" +# define SMDB_TYPE_IMPL_LEN 9 # define SMDB_TYPE_HASH "hash" # define SMDB_TYPE_HASH_LEN 5 # define SMDB_TYPE_BTREE "btree" # define SMDB_TYPE_BTREE_LEN 6 # define SMDB_TYPE_NDBM "dbm" # define SMDB_TYPE_NDBM_LEN 4 +# define SMDB_TYPE_CDB "cdb" +# define SMDB_TYPE_CDB_LEN 4 + +# define SMDB_IS_TYPE_HASH(type) (strncmp(type, SMDB_TYPE_HASH, SMDB_TYPE_HASH_LEN) == 0) +# define SMDB_IS_TYPE_BTREE(type) (strncmp(type, SMDB_TYPE_BTREE, SMDB_TYPE_BTREE_LEN) == 0) +# define SMDB_IS_TYPE_NDBM(type) (strncmp(type, SMDB_TYPE_NDBM, SMDB_TYPE_NDBM_LEN) == 0) +# define SMDB_IS_TYPE_CDB(type) (strncmp(type, SMDB_TYPE_CDB, SMDB_TYPE_CDB_LEN) == 0) + +# define SMDB_IS_TYPE_DEFAULT(t) (((t) == SMDB_TYPE_DEFAULT) \ + || (strncmp(type, SMDB_TYPE_IMPL, SMDB_TYPE_IMPL_LEN) == 0) \ + ) + +# if CDB >= 2 +# define SMCDB_FILE_EXTENSION "db" +# else +# define SMCDB_FILE_EXTENSION "cdb" +# endif +# define SMDB1_FILE_EXTENSION "db" +# define SMDB2_FILE_EXTENSION "db" +# define SMNDB_DIR_FILE_EXTENSION "dir" /* ** These are flags @@ -326,26 +348,22 @@ typedef unsigned int SMDB_FLAG; /* Flags for put */ # define SMDBF_NO_OVERWRITE 0x00000001 -# define SMDBF_ALLOW_DUP 0x00000002 +typedef int (smdb_open_func) __P((SMDB_DATABASE **, char *, int, int, long, SMDB_DBTYPE, SMDB_USER_INFO *, SMDB_DBPARAMS *)); extern SMDB_DATABASE *smdb_malloc_database __P((void)); extern void smdb_free_database __P((SMDB_DATABASE *)); -extern int smdb_open_database __P((SMDB_DATABASE **, char *, int, - int, long, SMDB_DBTYPE, - SMDB_USER_INFO *, - SMDB_DBPARAMS *)); -# ifdef NEWDB -extern int smdb_db_open __P((SMDB_DATABASE **, char *, int, int, - long, SMDB_DBTYPE, SMDB_USER_INFO *, - SMDB_DBPARAMS *)); -# endif /* NEWDB */ -# ifdef NDBM -extern int smdb_ndbm_open __P((SMDB_DATABASE **, char *, int, int, - long, SMDB_DBTYPE, - SMDB_USER_INFO *, - SMDB_DBPARAMS *)); -# endif /* NDBM */ +extern smdb_open_func smdb_open_database; +# if NEWDB +extern smdb_open_func smdb_db_open; +# else +# define smdb_db_open NULL +# endif +# if NDBM +extern smdb_open_func smdb_ndbm_open; +# else +# define smdb_ndbm_open NULL +# endif extern int smdb_add_extension __P((char *, int, char *, char *)); extern int smdb_setup_file __P((char *, char *, int, long, SMDB_USER_INFO *, struct stat *)); @@ -353,8 +371,15 @@ extern int smdb_lock_file __P((int *, char *, int, long, char *)); extern int smdb_unlock_file __P((int)); extern int smdb_filechanged __P((char *, char *, int, struct stat *)); -extern void smdb_print_available_types __P((void)); +extern void smdb_print_available_types __P((bool)); +extern bool smdb_is_db_type __P((const char *)); extern char *smdb_db_definition __P((SMDB_DBTYPE)); extern int smdb_lock_map __P((SMDB_DATABASE *, int)); extern int smdb_unlock_map __P((SMDB_DATABASE *)); + +# if CDB +extern smdb_open_func smdb_cdb_open; +# else +# define smdb_cdb_open NULL +# endif #endif /* ! _SMDB_H_ */ diff --git a/include/sendmail/pathnames.h b/include/sendmail/pathnames.h index 1e7bab58ccf1..67be3a2d0184 100644 --- a/include/sendmail/pathnames.h +++ b/include/sendmail/pathnames.h @@ -19,34 +19,34 @@ # ifndef _PATH_SENDMAILCF # if defined(USE_VENDOR_CF_PATH) && defined(_PATH_VENDOR_CF) # define _PATH_SENDMAILCF _PATH_VENDOR_CF -# else /* defined(USE_VENDOR_CF_PATH) && defined(_PATH_VENDOR_CF) */ +# else # define _PATH_SENDMAILCF "/etc/mail/sendmail.cf" -# endif /* defined(USE_VENDOR_CF_PATH) && defined(_PATH_VENDOR_CF) */ +# endif # endif /* ! _PATH_SENDMAILCF */ # ifndef _PATH_SENDMAILPID # ifdef BSD4_4 # define _PATH_SENDMAILPID "/var/run/sendmail.pid" -# else /* BSD4_4 */ +# else # define _PATH_SENDMAILPID "/etc/mail/sendmail.pid" -# endif /* BSD4_4 */ +# endif # endif /* ! _PATH_SENDMAILPID */ # ifndef _PATH_SENDMAIL # define _PATH_SENDMAIL "/usr/lib/sendmail" -# endif /* ! _PATH_SENDMAIL */ +# endif # ifndef _PATH_MAILDIR # define _PATH_MAILDIR "/var/spool/mail" -# endif /* ! _PATH_MAILDIR */ +# endif # ifndef _PATH_LOCTMP # define _PATH_LOCTMP "/tmp/local.XXXXXX" -# endif /* ! _PATH_LOCTMP */ +# endif # ifndef _PATH_HOSTS # define _PATH_HOSTS "/etc/hosts" -# endif /* ! _PATH_HOSTS */ +# endif diff --git a/include/sendmail/sendmail.h b/include/sendmail/sendmail.h index c79072299b60..6ab789bd3679 100644 --- a/include/sendmail/sendmail.h +++ b/include/sendmail/sendmail.h @@ -29,7 +29,7 @@ **********************************************************************/ #ifndef MAXMAILERS # define MAXMAILERS 25 /* maximum mailers known to system */ -#endif /* ! MAXMAILERS */ +#endif /* ** Flags passed to safefile/safedirpath. diff --git a/include/sm/assert.h b/include/sm/assert.h index 9d0ae54e6274..57d8c5f52f32 100644 --- a/include/sm/assert.h +++ b/include/sm/assert.h @@ -47,19 +47,19 @@ sm_abort __P(( # ifndef SM_CHECK_ALL # define SM_CHECK_ALL 1 -# endif /* ! SM_CHECK_ALL */ +# endif # ifndef SM_CHECK_REQUIRE # define SM_CHECK_REQUIRE SM_CHECK_ALL -# endif /* ! SM_CHECK_REQUIRE */ +# endif # ifndef SM_CHECK_ENSURE # define SM_CHECK_ENSURE SM_CHECK_ALL -# endif /* ! SM_CHECK_ENSURE */ +# endif # ifndef SM_CHECK_ASSERT # define SM_CHECK_ASSERT SM_CHECK_ALL -# endif /* ! SM_CHECK_ASSERT */ +# endif # if SM_CHECK_REQUIRE # if defined(__STDC__) || defined(__cplusplus) diff --git a/include/sm/bdb.h b/include/sm/bdb.h index 893d815229fe..832de252ca65 100644 --- a/include/sm/bdb.h +++ b/include/sm/bdb.h @@ -17,7 +17,7 @@ # include # ifndef DB_VERSION_MAJOR # define DB_VERSION_MAJOR 1 -# endif /* ! DB_VERSION_MAJOR */ +# endif # if (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1) || DB_VERSION_MAJOR >= 5 diff --git a/include/sm/cdefs.h b/include/sm/cdefs.h index 0802d5941c97..52f7f7586f0b 100644 --- a/include/sm/cdefs.h +++ b/include/sm/cdefs.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.17 2013-11-22 20:51:31 ca Exp $ + * $Id: cdefs.h,v 1.17 2013/11/22 20:51:31 ca Exp $ */ /* @@ -27,7 +27,7 @@ # if SM_CONF_SYS_CDEFS_H # include -# endif /* SM_CONF_SYS_CDEFS_H */ +# endif /* ** Define the standard C language portability macros @@ -86,9 +86,9 @@ # if __GNUC__ >= 2 # if __GNUC__ == 2 && __GNUC_MINOR__ < 7 # define SM_UNUSED(decl) decl -# else /* __GNUC__ == 2 && __GNUC_MINOR__ < 7 */ +# else # define SM_UNUSED(decl) decl __attribute__((__unused__)) -# endif /* __GNUC__ == 2 && __GNUC_MINOR__ < 7 */ +# endif # else /* __GNUC__ >= 2 */ # define SM_UNUSED(decl) decl # endif /* __GNUC__ >= 2 */ @@ -112,9 +112,9 @@ # ifdef SM_OMIT_BOGUS_WARNINGS # define SM_NONVOLATILE volatile -# else /* SM_OMIT_BOGUS_WARNINGS */ +# else # define SM_NONVOLATILE -# endif /* SM_OMIT_BOGUS_WARNINGS */ +# endif /* ** Turn on format string argument checking. @@ -131,17 +131,17 @@ # ifndef PRINTFLIKE # if SM_CONF_FORMAT_TEST # define PRINTFLIKE(x,y) __attribute__ ((__format__ (__printf__, x, y))) -# else /* SM_CONF_FORMAT_TEST */ +# else # define PRINTFLIKE(x,y) -# endif /* SM_CONF_FORMAT_TEST */ +# endif # endif /* ! PRINTFLIKE */ # ifndef SCANFLIKE # if SM_CONF_FORMAT_TEST # define SCANFLIKE(x,y) __attribute__ ((__format__ (__scanf__, x, y))) -# else /* SM_CONF_FORMAT_TEST */ +# else # define SCANFLIKE(x,y) -# endif /* SM_CONF_FORMAT_TEST */ +# endif # endif /* ! SCANFLIKE */ #endif /* ! SM_CDEFS_H */ diff --git a/include/sm/clock.h b/include/sm/clock.h index 2c7a8e45e45c..264f9b277c41 100644 --- a/include/sm/clock.h +++ b/include/sm/clock.h @@ -22,7 +22,7 @@ # include # if SM_CONF_SETITIMER # include -# endif /* SM_CONF_SETITIMER */ +# endif /* ** STRUCT SM_EVENT -- event queue. @@ -37,9 +37,9 @@ struct sm_event { # if SM_CONF_SETITIMER struct timeval ev_time; /* time of the call (microseconds) */ -# else /* SM_CONF_SETITIMER */ +# else time_t ev_time; /* time of the call (seconds) */ -# endif /* SM_CONF_SETITIMER */ +# endif void (*ev_func)__P((int)); /* function to call */ int ev_arg; /* argument to ev_func */ diff --git a/include/sm/conf.h b/include/sm/conf.h index 459eda4cc7d9..7bb031bb0bc0 100644 --- a/include/sm/conf.h +++ b/include/sm/conf.h @@ -42,7 +42,7 @@ # ifdef __STDC__ # define HASSETVBUF 1 /* we have setvbuf(3) in libc */ -# endif /* __STDC__ */ +# endif /* ** Assume you have standard calls; can be #undefed below if necessary. @@ -50,15 +50,15 @@ # ifndef HASLSTAT # define HASLSTAT 1 /* has lstat(2) call */ -# endif /* ! HASLSTAT */ +# endif # ifndef HASNICE # define HASNICE 1 /* has nice(2) call */ -# endif /* ! HASNICE */ +# endif # ifndef HASRRESVPORT # define HASRRESVPORT 1 /* has rrsevport(3) call */ -# endif /* ! HASRRESVPORT */ +# endif /********************************************************************** ** "Hard" compilation options. @@ -101,27 +101,27 @@ # define LDA_USE_LOCKF 1 # ifndef HASGETUSERSHELL # define HASGETUSERSHELL 0 /* getusershell(3) causes core dumps */ -# endif /* ! HASGETUSERSHELL */ +# endif # ifdef HPUX10 # define _PATH_SENDMAIL "/usr/sbin/sendmail" # ifndef SMRSH_CMDDIR # define SMRSH_CMDDIR "/var/adm/sm.bin" -# endif /* ! SMRSH_CMDDIR */ -# endif /* HPUX10 */ +# endif +# endif # ifdef HPUX11 # define HASSETREUID 1 /* setreuid(2) works on HP-UX 11.x */ # define HASFCHOWN 1 /* has fchown(2) */ # ifndef BROKEN_RES_SEARCH # define BROKEN_RES_SEARCH 1 /* res_search(unknown) returns h_errno=0 */ -# endif /* ! BROKEN_RES_SEARCH */ +# endif # ifndef SMRSH_CMDDIR # define SMRSH_CMDDIR "/var/adm/sm.bin" -# endif /* ! SMRSH_CMDDIR */ +# endif # define _PATH_SENDMAIL "/usr/sbin/sendmail" # else /* HPUX11 */ # ifndef NOT_SENDMAIL # define syslog hard_syslog -# endif /* ! NOT_SENDMAIL */ +# endif # endif /* HPUX11 */ # define SAFENFSPATHCONF 1 /* pathconf(2) pessimizes on NFS filesystems */ @@ -130,28 +130,28 @@ # define _PATH_UNIX "/stand/vmunix" # ifndef _PATH_VENDOR_CF # define _PATH_VENDOR_CF "/etc/mail/sendmail.cf" -# endif /* ! _PATH_VENDOR_CF */ +# endif # ifndef _PATH_SENDMAILPID # define _PATH_SENDMAILPID "/etc/mail/sendmail.pid" -# endif /* ! _PATH_SENDMAILPID */ +# endif # ifndef IDENTPROTO # define IDENTPROTO 1 /* TCP/IP implementation fixed in 10.0 */ -# endif /* ! IDENTPROTO */ +# endif # include /* for mpctl() in get_num_procs_online() */ # else /* V4FS */ /* HP-UX 9.x */ # define _PATH_UNIX "/hp-ux" # ifndef _PATH_VENDOR_CF # define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" -# endif /* ! _PATH_VENDOR_CF */ +# endif # ifndef IDENTPROTO # define IDENTPROTO 0 /* TCP/IP implementation is broken */ -# endif /* ! IDENTPROTO */ +# endif # ifdef __STDC__ extern void hard_syslog(int, char *, ...); -# else /* __STDC__ */ +# else extern void hard_syslog(); -# endif /* __STDC__ */ +# endif # define FDSET_CAST (int *) /* cast for fd_set parameters to select */ # endif /* V4FS */ @@ -169,7 +169,7 @@ extern void hard_syslog(); # define SOCKOPT_LEN_T socklen_t /* arg#5 to getsockopt */ # if _AIX5 >= 50200 # define HASUNSETENV 1 /* has unsetenv(3) call */ -# endif /* _AIX5 >= 50200 */ +# endif # endif /* _AIX5 */ /* @@ -183,12 +183,12 @@ extern void hard_syslog(); # define TZ_TYPE TZ_NAME /* use tzname[] vector */ # ifndef SOCKOPT_LEN_T # define SOCKOPT_LEN_T size_t /* arg#5 to getsockopt */ -# endif /* SOCKOPT_LEN_T */ +# endif # if _AIX4 >= 40200 # define HASSETREUID 1 /* setreuid(2) works as of AIX 4.2 */ # ifndef SOCKADDR_LEN_T # define SOCKADDR_LEN_T size_t /* e.g., arg#3 to accept, getsockname */ -# endif /* SOCKADDR_LEN_T */ +# endif # endif /* _AIX4 >= 40200 */ # if defined(_ILS_MACROS) /* IBM versions aren't side-effect clean */ # undef isascii @@ -220,17 +220,17 @@ extern void hard_syslog(); # define SPT_PADCHAR '\0' /* pad process title with nulls */ # ifndef LA_TYPE # define LA_TYPE LA_INT -# endif /* LA_TYPE */ +# endif # define FSHIFT 16 # define LA_AVENRUN "avenrun" # if !defined(_AIX4) || _AIX4 < 40300 # ifndef __BIT_TYPES_DEFINED__ # define SM_INT32 int -# endif /* __BIT_TYPES_DEFINED__ */ +# endif # endif /* !defined(_AIX4) || _AIX4 < 40300 */ # if !defined(_AIX4) || _AIX4 < 40200 # define SM_CONF_SYSLOG 0 -# endif /* !defined(_AIX4) || _AIX4 < 40200 */ +# endif # endif /* _AIX3 */ @@ -272,16 +272,16 @@ typedef int pid_t; /* make this sendmail in a completely different place */ # ifndef _PATH_VENDOR_CF # define _PATH_VENDOR_CF "/usr/local/newmail/sendmail.cf" -# endif /* ! _PATH_VENDOR_CF */ +# endif # ifndef _PATH_SENDMAILPID # define _PATH_SENDMAILPID "/usr/local/newmail/sendmail.pid" -# endif /* ! _PATH_SENDMAILPID */ +# endif # endif /* AIX */ # if defined(_AIX) # define LDA_USE_LOCKF 1 # define LDA_USE_SETEUID 1 -# endif /* defined(_AIX) */ +# endif /* ** Silicon Graphics IRIX @@ -310,7 +310,7 @@ typedef int pid_t; # 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) */ +# endif # ifdef IRIX6 # define STAT64 1 # define QUAD_T unsigned long long @@ -360,7 +360,7 @@ typedef int pid_t; # define SAFENFSPATHCONF 1 /* pathconf(2) pessimizes on NFS filesystems */ # ifndef HASFCHOWN # define HASFCHOWN 1 /* fchown(2) */ -# endif /* ! HASFCHOWN */ +# endif # ifdef __svr4__ # define LDA_USE_LOCKF 1 @@ -374,67 +374,67 @@ typedef int pid_t; # if defined(NOT_SENDMAIL) && !defined(SOLARIS) && defined(sun) && (defined(__svr4__) || defined(__SVR4)) # define SOLARIS 1 /* unknown Solaris version */ -# endif /* defined(NOT_SENDMAIL) && !defined(SOLARIS) && defined(sun) && (defined(__svr4__) || defined(__SVR4)) */ +# endif # ifdef SOLARIS /* Solaris 2.x (a.k.a. SunOS 5.x) */ # ifndef __svr4__ # define __svr4__ /* use all System V Release 4 defines below */ -# endif /* ! __svr4__ */ +# endif # if SOLARIS >= 21100 # include -# endif /* SOLARIS >= 21100 */ +# endif # ifndef _PATH_VARRUN # define _PATH_VARRUN "/var/run/" -# endif /* _PATH_VARRUN */ +# endif # define GIDSET_T gid_t # define USE_SA_SIGACTION 1 /* use sa_sigaction field */ # define BROKEN_PTHREAD_SLEEP 1 /* sleep after pthread_create() fails */ # define HASSTRERROR 1 /* has strerror(3) */ # ifndef _PATH_UNIX # define _PATH_UNIX "/dev/ksyms" -# endif /* ! _PATH_UNIX */ +# endif # ifndef _PATH_VENDOR_CF # define _PATH_VENDOR_CF "/etc/mail/sendmail.cf" -# endif /* ! _PATH_VENDOR_CF */ +# endif # ifndef _PATH_SENDMAILPID # define _PATH_SENDMAILPID "/etc/mail/sendmail.pid" -# endif /* ! _PATH_SENDMAILPID */ +# endif # ifndef _PATH_HOSTS # define _PATH_HOSTS "/etc/inet/hosts" -# endif /* ! _PATH_HOSTS */ +# endif # ifndef SYSLOG_BUFSIZE # define SYSLOG_BUFSIZE 1024 /* allow full size syslog buffer */ -# endif /* ! SYSLOG_BUFSIZE */ +# endif # ifndef TZ_TYPE # define TZ_TYPE TZ_TZNAME -# endif /* ! TZ_TYPE */ +# endif # if SOLARIS >= 20300 || (SOLARIS < 10000 && SOLARIS >= 203) # define USESETEUID 1 /* seteuid works as of 2.3 */ # define LDA_CONTENTLENGTH 1 /* Needs the Content-Length header */ -# endif /* SOLARIS >= 20300 || (SOLARIS < 10000 && SOLARIS >= 203) */ +# endif # if SOLARIS >= 20500 || (SOLARIS < 10000 && SOLARIS >= 205) # define HASSETREUID 1 /* setreuid works as of 2.5 */ # define HASSETREGID 1 /* use setregid(2) to set saved gid */ # if SOLARIS >= 20600 || (SOLARIS < 10000 && SOLARIS >= 206) # define HASSNPRINTF 1 /* has snprintf(3c) starting in 2.6 */ -# endif /* SOLARIS >= 20600 || (SOLARIS < 10000 && SOLARIS >= 206) */ +# endif # if SOLARIS < 207 || (SOLARIS > 10000 && SOLARIS < 20700) # ifndef LA_TYPE # define LA_TYPE LA_KSTAT /* use kstat(3k) -- may work in < 2.5 */ -# endif /* ! LA_TYPE */ -# ifndef RANDOMSHIFT /* random() doesn't work well (sometimes) */ +# endif +# ifndef RANDOMSHIFT /* random() doesn't work well (sometimes) */ # define RANDOMSHIFT 8 -# endif /* ! RANDOMSHIFT */ +# endif # endif /* SOLARIS < 207 || (SOLARIS > 10000 && SOLARIS < 20700) */ # else /* SOLARIS >= 20500 || (SOLARIS < 10000 && SOLARIS >= 205) */ # ifndef HASRANDOM # define HASRANDOM 0 /* doesn't have random(3) */ -# endif /* ! HASRANDOM */ +# endif # endif /* SOLARIS >= 20500 || (SOLARIS < 10000 && SOLARIS >= 205) */ # if (SOLARIS > 10000 && SOLARIS < 20600) || SOLARIS < 206 # define SM_INT32 int /* 32bit integer */ -# endif /* (SOLARIS > 10000 && SOLARIS < 20600) || SOLARIS < 206 */ +# endif # if SOLARIS >= 20700 || (SOLARIS < 10000 && SOLARIS >= 207) # ifndef LA_TYPE # include @@ -452,7 +452,7 @@ typedef int pid_t; # define _PATH_SENDMAILPID _PATH_VARRUN "sendmail.pid" # ifndef SMRSH_CMDDIR # define SMRSH_CMDDIR "/var/adm/sm.bin" -# endif /* ! SMRSH_CMDDIR */ +# endif # define SL_FUDGE 34 /* fudge offset for SyslogPrefixLen */ # define HASLDAPGETALIASBYNAME 1 /* added in S8 */ # endif /* SOLARIS >= 20800 || (SOLARIS < 10000 && SOLARIS >= 208) */ @@ -463,7 +463,7 @@ typedef int pid_t; # endif /* SOLARIS >= 20900 || (SOLARIS < 10000 && SOLARIS >= 209) */ # if SOLARIS >= 21000 || (SOLARIS < 10000 && SOLARIS >= 210) # define HASUNSETENV 1 /* unsetenv() added in S10 */ -# endif /* SOLARIS >= 21000 || (SOLARIS < 10000 && SOLARIS >= 210) */ +# endif # if SOLARIS >= 21100 || (SOLARIS < 10000 && SOLARIS >= 211) # define GETLDAPALIASBYNAME_VERSION 2 /* changed in S11 */ # define HAVE_NANOSLEEP 1 /* moved from librt to libc in S11 */ @@ -472,10 +472,10 @@ typedef int pid_t; # endif /* SOLARIS >= 21100 || (SOLARIS < 10000 && SOLARIS >= 211) */ # ifndef HASGETUSERSHELL # define HASGETUSERSHELL 0 /* getusershell(3) causes core dumps pre-2.7 */ -# endif /* ! HASGETUSERSHELL */ +# endif # if SOLARIS < 21200 # define SIGWAIT_TAKES_1_ARG 1 /* S12 moves to UNIX V7 semantic */ -# endif /* SOLARIS < 21200 */ +# endif # else /* SOLARIS */ /* SunOS 4.0.3 or 4.1.x */ @@ -483,14 +483,14 @@ typedef int pid_t; # define HASSETREUID 1 /* has setreuid(2) call */ # ifndef HASFLOCK # define HASFLOCK 1 /* has flock(2) call */ -# endif /* ! HASFLOCK */ +# endif # define SFS_TYPE SFS_VFS /* use statfs() implementation */ # define TZ_TYPE TZ_TM_ZONE /* use tm->tm_zone */ # include # include # ifdef __GNUC__ # define strtoul strtol /* gcc library bogosity */ -# endif /* __GNUC__ */ +# endif # define memmove(d, s, l) (bcopy((s), (d), (l))) # define atexit(f) on_exit((f), 0) /* ugly hack for SunOS */ # define SM_INT32 int /* 32bit integer */ @@ -522,7 +522,7 @@ extern char *getenv(); # ifndef LA_TYPE # define LA_TYPE LA_INT -# endif /* ! LA_TYPE */ +# endif # endif /* defined(sun) && !defined(BSD) */ @@ -536,7 +536,7 @@ extern char *getenv(); # ifdef DGUX_5_4_2 # define DGUX 1 -# endif /* DGUX_5_4_2 */ +# endif # ifdef DGUX # define SYSTEM5 1 @@ -549,7 +549,7 @@ extern char *getenv(); # define HASGETUSERSHELL 0 /* does not have getusershell(3) */ # ifndef IDENTPROTO # define IDENTPROTO 0 /* TCP/IP implementation is broken */ -# endif /* ! IDENTPROTO */ +# endif # define SPT_TYPE SPT_NONE /* don't use setproctitle */ # define SFS_TYPE SFS_4ARGS /* four argument statfs() call */ # define LDA_USE_LOCKF 1 @@ -585,14 +585,14 @@ extern long dgux_inet_addr(); # define HASFCHOWN 1 /* has fchown(2) syscall */ # ifndef HASFLOCK # define HASFLOCK 1 /* has flock(2) call */ -# endif /* ! HASFLOCK */ +# endif # define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ # ifndef BROKEN_RES_SEARCH # define BROKEN_RES_SEARCH 1 /* res_search(unknown) returns h_errno=0 */ -# endif /* ! BROKEN_RES_SEARCH */ +# endif # if !defined(NEEDLOCAL_HOSTNAME_LENGTH) && NAMED_BIND && __RES >= 19931104 && __RES < 19950621 # define NEEDLOCAL_HOSTNAME_LENGTH 1 /* see sendmail/README */ -# endif /* !defined(NEEDLOCAL_HOSTNAME_LENGTH) && NAMED_BIND && __RES >= 19931104 && __RES < 19950621 */ +# endif # ifdef vax # define LA_TYPE LA_FLOAT # else /* vax */ @@ -602,7 +602,7 @@ extern long dgux_inet_addr(); # define SFS_TYPE SFS_MOUNT /* use statfs() impl */ # ifndef IDENTPROTO # define IDENTPROTO 0 /* pre-4.4 TCP/IP implementation is broken */ -# endif /* ! IDENTPROTO */ +# endif # define SYSLOG_BUFSIZE 256 # define SM_CONF_SYSLOG 0 # endif /* ultrix */ @@ -618,7 +618,7 @@ extern long dgux_inet_addr(); # define __osf__ 1 /* get OSF/1 defines below */ # ifndef TZ_TYPE # define TZ_TYPE TZ_TZNAME /* use tzname[] vector */ -# endif /* ! TZ_TYPE */ +# endif # endif /* __ksr__ */ @@ -626,14 +626,14 @@ extern long dgux_inet_addr(); ** OSF/1 for Intel Paragon. ** ** Contributed by Jeff A. Earickson -** of Intel Scalable Systems Divison. +** of Intel Scalable Systems Division. */ # ifdef __PARAGON__ # define __osf__ 1 /* get OSF/1 defines below */ # ifndef TZ_TYPE # define TZ_TYPE TZ_TZNAME /* use tzname[] vector */ -# endif /* ! TZ_TYPE */ +# endif # define GIDSET_T gid_t # define MAXNAMLEN NAME_MAX # endif /* __PARAGON__ */ @@ -661,18 +661,18 @@ extern long dgux_inet_addr(); # include # if _XOPEN_SOURCE+0 >= 400 # define HASFLOCK 0 /* 5.0 and later has bad flock(2) call */ -# else /* _XOPEN_SOURCE+0 >= 400 */ +# else # define HASFLOCK 1 /* has flock(2) call */ -# endif /* _XOPEN_SOURCE+0 >= 400 */ +# endif # endif /* ! HASFLOCK */ # define LA_TYPE LA_ALPHAOSF # define SFS_TYPE SFS_STATVFS /* use statfs() impl */ # ifndef _PATH_VENDOR_CF # define _PATH_VENDOR_CF "/var/adm/sendmail/sendmail.cf" -# endif /* ! _PATH_VENDOR_CF */ +# endif # ifndef _PATH_SENDMAILPID # define _PATH_SENDMAILPID "/var/run/sendmail.pid" -# endif /* ! _PATH_SENDMAILPID */ +# endif # if _FFR_DIGUNIX_SAFECHOWN /* ** Testing on a Digital UNIX 4.0a system showed this to be the correct @@ -694,17 +694,17 @@ extern long dgux_inet_addr(); # define NEEDPUTENV 2 /* need putenv(3) call; no setenv(3) call */ # ifndef HASFLOCK # define HASFLOCK 1 /* has flock(2) call */ -# endif /* ! HASFLOCK */ +# endif # define UID_T int /* compiler gripes on uid_t */ # define GID_T int /* ditto for gid_t */ # define MODE_T int /* and mode_t */ # define setpgid setpgrp # ifndef NOT_SENDMAIL # define sleep sleepX -# endif /* ! NOT_SENDMAIL */ +# endif # ifndef LA_TYPE # define LA_TYPE LA_MACH -# endif /* ! LA_TYPE */ +# endif # define SFS_TYPE SFS_VFS /* use statfs() implementation */ # ifdef _POSIX_SOURCE extern struct passwd *getpwent(); @@ -719,31 +719,31 @@ typedef int pid_t; # endif /* _POSIX_SOURCE */ # ifndef _PATH_VENDOR_CF # define _PATH_VENDOR_CF "/etc/sendmail/sendmail.cf" -# endif /* ! _PATH_VENDOR_CF */ +# endif # ifndef _PATH_SENDMAILPID # define _PATH_SENDMAILPID "/etc/sendmail/sendmail.pid" -# endif /* ! _PATH_SENDMAILPID */ +# endif # define SM_INT32 int /* 32bit integer */ # ifdef TCPWRAPPERS # ifndef HASUNSETENV # define HASUNSETENV 1 -# endif /* ! HASUNSETENV */ +# endif # undef NEEDPUTENV # endif /* TCPWRAPPERS */ # ifndef __APPLE__ # include # ifndef S_IRUSR # define S_IRUSR S_IREAD -# endif /* ! S_IRUSR */ +# endif # ifndef S_IWUSR # define S_IWUSR S_IWRITE -# endif /* ! S_IWUSR */ +# endif # define _PATH_MAILDIR "/usr/spool/mail" # endif /* ! __APPLE__ */ # ifndef isascii # define isascii(c) ((unsigned)(c) <= 0177) -# endif /* ! isascii */ +# endif # endif /* NeXT */ /* @@ -774,6 +774,12 @@ typedef int pid_t; # define HASURANDOMDEV 1 /* has urandom(4) */ # define HASSTRERROR 1 /* has strerror(3) */ # define HASGETUSERSHELL 1 /* had getusershell(3) */ +# if DARWIN >=180000 +# ifdef HASRRESVPORT +# undef HASRRESVPORT +# endif +# define HASRRESVPORT 0 /* deprecated rresvport() */ +# endif # define GIDSET_T gid_t /* getgroups(2) takes gid_t */ # define LA_TYPE LA_SUBR /* use getloadavg(3) */ # define SFS_TYPE SFS_MOUNT /* use statfs() impl */ @@ -820,7 +826,7 @@ extern unsigned int sleepX __P((unsigned int seconds)); # define NETLINK 1 /* supports AF_LINK */ # ifndef LA_TYPE # define LA_TYPE LA_SUBR -# endif /* ! LA_TYPE */ +# endif # define SFS_TYPE SFS_MOUNT /* use statfs() impl */ # define SPT_TYPE SPT_PSSTRINGS /* use PS_STRINGS pointer */ # endif /* defined(BSD4_4) && !defined(__bsdi__) && !defined(__GNU__) && !defined(DARWIN)*/ @@ -849,7 +855,7 @@ extern unsigned int sleepX __P((unsigned int seconds)); # define SFS_TYPE SFS_MOUNT /* use statfs() impl */ # ifndef LA_TYPE # define LA_TYPE LA_SUBR -# endif /* ! LA_TYPE */ +# endif # define GIDSET_T gid_t # define QUAD_T quad_t # if defined(_BSDI_VERSION) && _BSDI_VERSION >= 199312 @@ -862,13 +868,13 @@ extern unsigned int sleepX __P((unsigned int seconds)); # endif /* defined(_BSDI_VERSION) && _BSDI_VERSION >= 199312 */ # if defined(_BSDI_VERSION) && _BSDI_VERSION >= 199701 /* on 3.x */ # define HASSETUSERCONTEXT 1 /* has setusercontext */ -# endif /* defined(_BSDI_VERSION) && _BSDI_VERSION >= 199701 */ +# endif # if defined(_BSDI_VERSION) && _BSDI_VERSION <= 199701 /* 3.1 and earlier */ # define MODE_T int /* va_arg() can't handle less than int */ -# endif /* defined(_BSDI_VERSION) && _BSDI_VERSION <= 199701 */ +# endif # if defined(_BSDI_VERSION) && _BSDI_VERSION >= 199910 /* on 4.x */ # define HASURANDOMDEV 1 /* has /dev/urandom(4) */ -# endif /* defined(_BSDI_VERSION) && _BSDI_VERSION >= 199910 */ +# endif # endif /* __bsdi__ */ @@ -963,7 +969,7 @@ extern unsigned int sleepX __P((unsigned int seconds)); # define HASSNPRINTF 1 /* has snprintf(3) (all versions?) */ # ifndef LA_TYPE # define LA_TYPE LA_SUBR -# endif /* ! LA_TYPE */ +# endif # if defined(__NetBSD__) && defined(__NetBSD_Version__) && \ ((__NetBSD_Version__ >= 200040000 && __NetBSD_Version__ < 200090000) || \ (__NetBSD_Version__ >= 299000900)) @@ -975,10 +981,10 @@ extern unsigned int sleepX __P((unsigned int seconds)); # if defined(__NetBSD__) && (NetBSD > 199307 || NetBSD0_9 > 1) # undef SPT_TYPE # define SPT_TYPE SPT_BUILTIN /* setproctitle is in libc */ -# endif /* defined(__NetBSD__) && (NetBSD > 199307 || NetBSD0_9 > 1) */ +# endif # 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)) */ +# endif # if defined(__NetBSD__) && defined(__NetBSD_Version__) && __NetBSD_Version__ >= 104170000 # define HASSETUSERCONTEXT 1 /* BSDI-style login classes */ # endif @@ -1002,10 +1008,10 @@ extern unsigned int sleepX __P((unsigned int seconds)); # define HASSETUSERCONTEXT 1 /* BSDI-style login classes */ # ifndef SMRSH_CMDDIR # define SMRSH_CMDDIR "/usr/libexec/sm.bin" -# endif /* ! SMRSH_CMDDIR */ +# endif # ifndef SMRSH_PATH # define SMRSH_PATH "/bin:/usr/bin" -# endif /* ! SMRSH_PATH */ +# endif # define USESYSCTL 1 /* use sysctl(3) for getting ncpus */ # include # endif /* defined(__DragonFly__) */ @@ -1019,22 +1025,24 @@ extern unsigned int sleepX __P((unsigned int seconds)); # if __FreeBSD__ >= 2 # include # if __FreeBSD_version >= 199512 /* 2.2-current when it appeared */ -# include +# if __FreeBSD_version < 500012 /* Moved to libc in 2000 */ +# include +# endif # define SPT_TYPE SPT_BUILTIN # endif /* __FreeBSD_version >= 199512 */ # if __FreeBSD_version >= 222000 /* 2.2.2-release and later */ # define HASSETUSERCONTEXT 1 /* BSDI-style login classes */ -# endif /* __FreeBSD_version >= 222000 */ +# endif # if __FreeBSD_version >= 300000 /* 3.0.0-release and later */ # define HAVE_NANOSLEEP 1 /* has nanosleep(2) */ -# endif /* __FreeBSD_version >= 300000 */ +# endif # if __FreeBSD_version >= 330000 /* 3.3.0-release and later */ # ifndef SMRSH_CMDDIR # define SMRSH_CMDDIR "/usr/libexec/sm.bin" -# endif /* ! SMRSH_CMDDIR */ +# endif # ifndef SMRSH_PATH # define SMRSH_PATH "/bin:/usr/bin" -# endif /* ! SMRSH_PATH */ +# endif # endif /* __FreeBSD_version >= 330000 */ # if __FreeBSD_version >= 430000 /* 4.3.0-release and later */ # define SOCKADDR_LEN_T socklen_t /* e.g., arg#3 to accept, getsockname */ @@ -1046,7 +1054,7 @@ extern unsigned int sleepX __P((unsigned int seconds)); # ifndef SPT_TYPE # define SPT_TYPE SPT_REUSEARGV # define SPT_PADCHAR '\0' /* pad process title with nulls */ -# endif /* ! SPT_TYPE */ +# endif # endif /* defined(__FreeBSD__) */ # if defined(__OpenBSD__) # undef SPT_TYPE @@ -1054,24 +1062,30 @@ extern unsigned int sleepX __P((unsigned int seconds)); # define HASSETLOGIN 1 /* has setlogin(2) */ # if OpenBSD < 200305 # define HASSETREUID 0 /* setreuid(2) broken in OpenBSD < 3.3 */ -# endif /* OpenBSD < 200305 */ +# endif # define HASSETEGID 1 /* use setegid(2) to set saved gid */ # define HASURANDOMDEV 1 /* has /dev/urandom(4) */ # if OpenBSD >= 200006 # define HASSRANDOMDEV 1 /* has srandomdev(3) */ -# endif /* OpenBSD >= 200006 */ +# endif # if OpenBSD >= 200012 # define HASSETUSERCONTEXT 1 /* BSDI-style login classes */ -# endif /* OpenBSD >= 200012 */ +# endif # if OpenBSD >= 200405 # define HASCLOSEFROM 1 /* closefrom(3) added in 3.5 */ -# endif /* OpenBSD >= 200405 */ +# endif # if OpenBSD >= 200505 # undef NETISO /* iso.h removed in 3.7 */ -# endif /* OpenBSD >= 200505 */ +# endif # if OpenBSD >= 200800 # define HAVE_NANOSLEEP 1 /* has nanosleep(2) */ -# endif /* OpenBSD >= 200800 */ +# endif +# ifndef SOCKADDR_LEN_T +# define SOCKADDR_LEN_T socklen_t /* e.g., arg#3 to accept, getsockname */ +# endif +# ifndef SOCKOPT_LEN_T +# define SOCKOPT_LEN_T socklen_t /* arg#5 to getsockopt */ +# endif # endif /* defined(__OpenBSD__) */ # endif /* defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) */ @@ -1088,23 +1102,23 @@ extern unsigned int sleepX __P((unsigned int seconds)); # define HASINITGROUPS 1 /* has initgroups(3) call */ # ifndef HASFLOCK # define HASFLOCK 1 /* has flock(2) call */ -# endif /* ! HASFLOCK */ +# endif # define SM_CONF_GETOPT 0 /* need a replacement for getopt(3) */ # define NEEDSTRTOL 1 /* need the strtol() function */ # define setpgid setpgrp # ifndef LA_TYPE # define LA_TYPE LA_FLOAT -# endif /* ! LA_TYPE */ +# endif # define SFS_TYPE SFS_VFS /* use statfs() implementation */ # undef HASSETVBUF /* don't actually have setvbuf(3) */ # undef WEXITSTATUS # undef WIFEXITED # ifndef _PATH_VENDOR_CF # define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" -# endif /* ! _PATH_VENDOR_CF */ +# endif # ifndef _PATH_SENDMAILPID # define _PATH_SENDMAILPID "/etc/sendmail.pid" -# endif /* ! _PATH_SENDMAILPID */ +# endif # endif /* defined(MACH) && defined(i386) && !defined(__GNU__) */ @@ -1160,13 +1174,13 @@ extern unsigned int sleepX __P((unsigned int seconds)); # define setpgid setpgrp # ifndef LA_TYPE # define LA_TYPE LA_FLOAT -# endif /* ! LA_TYPE */ +# endif # ifndef _PATH_VENDOR_CF # define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" -# endif /* ! _PATH_VENDOR_CF */ +# endif # ifndef IDENTPROTO # define IDENTPROTO 0 /* TCP/IP implementation is broken */ -# endif /* ! IDENTPROTO */ +# endif # undef WEXITSTATUS # undef WIFEXITED typedef short pid_t; @@ -1205,7 +1219,7 @@ typedef short pid_t; # define LDA_USE_LOCKF 1 # ifndef LA_TYPE # define LA_TYPE LA_DEVSHORT -# endif /* ! LA_TYPE */ +# endif # define _PATH_AVENRUN "/dev/table/avenrun" # ifndef _SCO_unix_4_2 # define _SCO_unix_4_2 @@ -1229,7 +1243,7 @@ typedef short pid_t; # define NOFTRUNCATE 0 /* has (simulated) ftruncate call */ # ifndef USE_SIGLONGJMP # define USE_SIGLONGJMP 1 /* sigsetjmp needed for signal handling */ -# endif /* ! USE_SIGLONGJMP */ +# endif # define MAXPATHLEN PATHSIZE # define SFS_TYPE SFS_4ARGS /* use 4-arg impl */ # define SFS_BAVAIL f_bfree /* alternate field name */ @@ -1241,15 +1255,15 @@ typedef short pid_t; # define _PATH_UNIX "/unix" # ifndef _PATH_VENDOR_CF # define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" -# endif /* ! _PATH_VENDOR_CF */ +# endif # ifndef _PATH_SENDMAILPID # define _PATH_SENDMAILPID "/etc/sendmail.pid" -# endif /* ! _PATH_SENDMAILPID */ +# endif /* stuff fixed in later releases */ # ifndef _SCO_unix_4_2 # define SYS5SIGNALS 1 /* SysV signal semantics -- reset on each sig */ -# endif /* ! _SCO_unix_4_2 */ +# endif # ifndef _SCO_DS # define ftruncate chsize /* use chsize(2) to emulate ftruncate */ @@ -1283,10 +1297,10 @@ typedef short pid_t; # define _PATH_UNIX "/unix" # ifndef _PATH_VENDOR_CF # define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" -# endif /* ! _PATH_VENDOR_CF */ +# endif # ifndef _PATH_SENDMAILPID # define _PATH_SENDMAILPID "/etc/sendmail.pid" -# endif /* ! _PATH_SENDMAILPID */ +# endif # endif /* ISC_UNIX */ @@ -1362,7 +1376,7 @@ extern struct group *getgrnam(); # define SFS_TYPE SFS_VFS /* use statfs() implementation */ # ifndef _PATH_VENDOR_CF # define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" -# endif /* ! _PATH_VENDOR_CF */ +# endif # ifndef S_IREAD # define S_IREAD _S_IREAD # define S_IWRITE _S_IWRITE @@ -1373,22 +1387,22 @@ extern struct group *getgrnam(); # endif /* ! S_IREAD */ # ifndef TZ_TYPE # define TZ_TYPE TZ_TIMEZONE -# endif /* ! TZ_TYPE */ +# endif # ifndef IDENTPROTO # define IDENTPROTO 1 -# endif /* ! IDENTPROTO */ +# endif # ifndef SHARE_V1 # define SHARE_V1 1 /* version 1 of the fair share scheduler */ -# endif /* ! SHARE_V1 */ +# endif # if !defined(__GNUC__ ) -# define UID_T int /* GNUC gets it right, ConvexC botches */ -# define GID_T int /* GNUC gets it right, ConvexC botches */ -# endif /* !defined(__GNUC__ ) */ +# define UID_T int /* GNUC gets it right, ConvexC botches */ +# define GID_T int /* GNUC gets it right, ConvexC botches */ +# endif # if SECUREWARE # define FORK fork /* SecureWare wants the real fork! */ -# else /* SECUREWARE */ +# else # define FORK vfork /* the rest of the OS versions don't care */ -# endif /* SECUREWARE */ +# endif # endif /* _CONVEX_SOURCE */ @@ -1403,7 +1417,7 @@ extern struct group *getgrnam(); # define HASUNSETENV 1 /* has unsetenv(3) call */ # ifndef HASFLOCK # define HASFLOCK 1 /* has flock(2) call */ -# endif /* ! HASFLOCK */ +# endif # define WAITUNION 1 /* use "union wait" as wait argument type */ # define SM_CONF_GETOPT 0 /* need a replacement for getopt(3) */ # define NEEDPUTENV 1 /* need putenv(3) call */ @@ -1428,7 +1442,7 @@ extern void *malloc(); # ifdef RISCOS_4_0 # ifndef ARBPTR_T # define ARBPTR_T char * -# endif /* ! ARBPTR_T */ +# endif # undef HASFLOCK # define HASFLOCK 0 # endif /* RISCOS_4_0 */ @@ -1458,15 +1472,15 @@ extern void *malloc(); # include # if !defined(KERNEL_VERSION) /* not defined in 2.0.x kernel series */ # define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) -# endif /* !defined(KERNEL_VERSION) */ +# endif # define BSD 1 /* include BSD defines */ # define HASSETREGID 1 /* use setregid(2) to set saved gid */ # ifndef REQUIRES_DIR_FSYNC # define REQUIRES_DIR_FSYNC 1 /* requires fsync() on directory */ -# endif /* REQUIRES_DIR_FSYNC */ +# endif # ifndef USESETEUID # define USESETEUID 0 /* has it due to POSIX, but doesn't work */ -# endif /* USESETEUID */ +# endif # define SM_CONF_GETOPT 0 /* need a replacement for getopt(3) */ # define HASUNAME 1 /* use System V uname(2) system call */ # define HASUNSETENV 1 /* has unsetenv(3) call */ @@ -1474,51 +1488,60 @@ extern void *malloc(); # define GIDSET_T gid_t /* from */ # ifndef HASGETUSERSHELL # define HASGETUSERSHELL 0 /* getusershell(3) broken in Slackware 2.0 */ -# endif /* HASGETUSERSHELL */ +# endif # ifndef IP_SRCROUTE # define IP_SRCROUTE 0 /* linux <= 1.2.8 doesn't support IP_OPTIONS */ -# endif /* ! IP_SRCROUTE */ +# endif # ifndef HAS_IN_H # define HAS_IN_H 1 /* use netinet/in.h */ -# endif /* ! HAS_IN_H */ +# endif # ifndef USE_SIGLONGJMP # define USE_SIGLONGJMP 1 /* sigsetjmp needed for signal handling */ -# endif /* ! USE_SIGLONGJMP */ +# endif # ifndef HASFLOCK # if LINUX_VERSION_CODE < 66399 # define HASFLOCK 0 /* flock(2) is broken after 0.99.13 */ # else /* LINUX_VERSION_CODE < 66399 */ # 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)) */ +# else # define HASFLOCK 0 /* flock(2) is broken (again) after 2.4.0 */ -# endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0)) */ +# endif # endif /* LINUX_VERSION_CODE < 66399 */ # endif /* ! HASFLOCK */ # ifndef LA_TYPE # define LA_TYPE LA_PROCSTR -# endif /* ! LA_TYPE */ +# endif # define SFS_TYPE SFS_VFS /* use statfs() impl */ # define SPT_PADCHAR '\0' /* pad process title with nulls */ # if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,0,0)) # ifndef HASURANDOMDEV # define HASURANDOMDEV 1 /* 2.0 (at least) has linux/drivers/char/random.c */ -# endif /* ! HASURANDOMDEV */ +# endif # endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,0,0)) */ # if defined(__GLIBC__) && defined(__GLIBC_MINOR__) # define HASSTRERROR 1 /* has strerror(3) */ -# endif /* defined(__GLIBC__) && defined(__GLIBC_MINOR__) */ +# endif # ifndef TZ_TYPE # define TZ_TYPE TZ_NONE /* no standard for Linux */ -# endif /* ! TZ_TYPE */ +# endif # if (__GLIBC__ >= 2) # include -# endif /* (__GLIBC__ >= 2) */ +# endif # ifndef _PATH_SENDMAILPID # define _PATH_SENDMAILPID "/var/run/sendmail.pid" -# endif /* ! _PATH_SENDMAILPID */ +# endif # include # undef atol /* wounded in */ + +# if defined(__GLIBC__) && defined(__GLIBC_MINOR__) +# define GLIBC_VERSION ((__GLIBC__ << 9) + __GLIBC_MINOR__) +# if (GLIBC_VERSION >= 0x201) +# define SOCKADDR_LEN_T socklen_t +# define SOCKOPT_LEN_T socklen_t +# endif +# endif /* defined(__GLIBC__) && defined(__GLIBC_MINOR__) */ + # if NETINET6 /* ** Linux doesn't have a good way to tell userland what interfaces are @@ -1533,27 +1556,24 @@ extern void *malloc(); ** in 2.1 and later, but the APIs appear before the functions. */ # if defined(__GLIBC__) && defined(__GLIBC_MINOR__) -# define GLIBC_VERSION ((__GLIBC__ << 8) + __GLIBC_MINOR__) # if (GLIBC_VERSION >= 0x201) -# define SOCKADDR_LEN_T socklen_t -# define SOCKOPT_LEN_T socklen_t # undef IPPROTO_ICMPV6 /* linux #defines, glibc enums */ -# else /* (GLIBC_VERSION >= 0x201) */ +# else # include /* IPv6 support */ -# endif /* (GLIBC_VERSION >= 0x201) */ +# endif # if (GLIBC_VERSION >= 0x201 && !defined(NEEDSGETIPNODE)) /* Have APIs in , but no support in glibc */ # define NEEDSGETIPNODE 1 -# endif /* (GLIBC_VERSION >= 0x201 && !defined(NEEDSGETIPNODE)) */ +# endif # undef GLIBC_VERSION # endif /* defined(__GLIBC__) && defined(__GLIBC_MINOR__) */ # endif /* NETINET6 */ # ifndef HASFCHOWN # define HASFCHOWN 1 /* fchown(2) */ -# endif /* ! HASFCHOWN */ +# endif # if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,0,36)) && !defined(HASFCHMOD) # define HASFCHMOD 1 /* fchmod(2) */ -# endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,0,36)) && !defined(HASFCHMOD) */ +# endif # endif /* __linux__ */ @@ -1596,20 +1616,20 @@ extern void *malloc(); # define ERRLIST_PREDEFINED 1 # ifndef IDENTPROTO # define IDENTPROTO 0 /* TCP/IP implementation is broken */ -# endif /* ! IDENTPROTO */ +# endif # ifndef LA_TYPE # define LA_TYPE LA_INT # define FSHIFT 16 -# endif /* ! LA_TYPE */ +# endif # define LA_AVENRUN "avenrun" # define SFS_TYPE SFS_VFS /* use statfs() implementation */ # define TZ_TYPE TZ_TZNAME # ifndef _PATH_UNIX # define _PATH_UNIX "/unix" /* should be in */ -# endif /* ! _PATH_UNIX */ +# endif # ifndef _PATH_VENDOR_CF # define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" -# endif /* ! _PATH_VENDOR_CF */ +# endif # undef WIFEXITED # undef WEXITSTATUS # endif /* _AUX_SOURCE */ @@ -1670,7 +1690,7 @@ typedef int pid_t; # define LA_TYPE LA_FLOAT # ifdef _POSIX_VERSION # undef _POSIX_VERSION /* set in */ -# endif /* _POSIX_VERSION */ +# endif # undef HASSETVBUF /* don't actually have setvbuf(3) */ # define setpgid setpgrp @@ -1684,14 +1704,14 @@ typedef int pid_t; # ifndef IDENTPROTO # define IDENTPROTO 0 /* TCP/IP implementation is broken */ -# endif /* ! IDENTPROTO */ +# endif # ifndef _PATH_UNIX # define _PATH_UNIX "/dynix" -# endif /* ! _PATH_UNIX */ +# endif # ifndef _PATH_VENDOR_CF # define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" -# endif /* ! _PATH_VENDOR_CF */ +# endif # endif /* sequent */ @@ -1718,20 +1738,20 @@ typedef int pid_t; # define SPT_TYPE SPT_NONE /* don't use setproctitle */ # ifndef IDENTPROTO # define IDENTPROTO 0 /* TCP/IP implementation is broken */ -# endif /* ! IDENTPROTO */ +# endif # ifndef _PATH_VENDOR_CF # define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" -# endif /* ! _PATH_VENDOR_CF */ +# endif # ifndef _PATH_SENDMAILPID # define _PATH_SENDMAILPID "/etc/sendmail.pid" -# endif /* ! _PATH_SENDMAILPID */ +# endif # endif /* _SEQUENT_ */ /* ** Cray UNICOS, UNICOS/mk, and UNICOS/mp ** ** UNICOS: -** Ported by David L. Kensiski, Sterling Sofware +** Ported by David L. Kensiski, Sterling Software ** Update Brian Ginsbach ** UNICOS/mk (Cray T3E): ** Contributed by Manu Mahonen @@ -1762,23 +1782,23 @@ typedef int pid_t; # define GET_IPOPT_DST(dst) *(struct in_addr *)&(dst) # ifndef MAXPATHLEN # define MAXPATHLEN PATHSIZE -# endif /* ! MAXPATHLEN */ +# endif # ifndef _PATH_UNIX # ifdef UNICOSMK # define _PATH_UNIX "/unicosmk.ar" # else # define _PATH_UNIX "/unicos" -# endif /* UNICOSMK */ +# endif # endif /* ! _PATH_UNIX */ # ifndef _PATH_VENDOR_CF # define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" -# endif /* ! _PATH_VENDOR_CF */ +# endif # 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) */ +# endif # 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 */ @@ -1808,20 +1828,20 @@ typedef int pid_t; # define TZ_TYPE TZ_TZNAME # ifndef _PATH_VENDOR_CF # define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" -# endif /* ! _PATH_VENDOR_CF */ +# endif # ifndef _PATH_SENDMAILPID # define _PATH_SENDMAILPID "/etc/sendmail.pid" -# endif /* ! _PATH_SENDMAILPID */ +# endif # undef S_IFSOCK /* S_IFSOCK and S_IFIFO are the same */ # undef S_IFIFO # define S_IFIFO 0010000 # ifndef IDENTPROTO # define IDENTPROTO 0 /* TCP/IP implementation is broken */ -# endif /* ! IDENTPROTO */ +# endif # define RLIMIT_NEEDS_SYS_TIME_H 1 # if defined(NGROUPS_MAX) && !NGROUPS_MAX # undef NGROUPS_MAX -# endif /* defined(NGROUPS_MAX) && !NGROUPS_MAX */ +# endif # endif /* apollo */ /* @@ -1842,17 +1862,17 @@ typedef int pid_t; # define HASGETUSERSHELL 0 /* lacks getusershell() */ # ifdef HASNICE # undef HASNICE -# endif /* HASNICE */ +# endif # define HASNICE 0 /* lacks nice() */ # define HASRANDOM 0 /* lacks random() */ # ifdef HASRRESVPORT # undef HASRRESVPORT -# endif /* HASRRESVPORT */ +# endif # define HASRRESVPORT 0 /* lacks rresvport() */ # define IP_SRCROUTE 0 /* lacks IP source routing fields */ # ifdef MATCHGECOS # undef MATCHGECOS -# endif /* MATCHGECOS */ +# endif # define MATCHGECOS 0 /* lacks an initialized GECOS field */ # define NEEDFSYNC 1 /* use sendmail's fsync() */ # define NEEDLINK 1 /* use sendmail's link() */ @@ -1912,21 +1932,21 @@ extern struct passwd * sendmail_mpe_getpwuid __P((uid_t)); # define SIGWAIT_TAKES_1_ARG 1 # ifndef _PATH_UNIX # define _PATH_UNIX "/stand/unix" -# endif /* ! _PATH_UNIX */ +# endif # define SPT_PADCHAR '\0' /* pad process title with nulls */ # ifndef SYSLOG_BUFSIZE # define SYSLOG_BUFSIZE 1024 /* unsure */ -# endif /* ! SYSLOG_BUFSIZE */ +# endif # ifndef _PATH_VENDOR_CF # define _PATH_VENDOR_CF "/etc/sendmail.cf" -# endif /* ! _PATH_VENDOR_CF */ +# endif # ifndef _PATH_SENDMAILPID # define _PATH_SENDMAILPID "/etc/sendmail.pid" -# endif /* ! _PATH_SENDMAILPID */ +# endif # undef offsetof /* avoid stddefs.h, sys/sysmacros.h conflict */ #if !defined(SM_SET_H_ERRNO) && defined(_REENTRANT) # define SM_SET_H_ERRNO(err) set_h_errno((err)) -#endif /* ! SM_SET_H_ERRNO && _REENTRANT */ +#endif # endif /* __svr5__ */ /* ###################################################################### */ @@ -1963,13 +1983,13 @@ extern struct passwd * sendmail_mpe_getpwuid __P((uid_t)); # undef WEXITSTATUS # ifndef _PATH_UNIX # define _PATH_UNIX "/unix" -# endif /* ! _PATH_UNIX */ +# endif # ifndef _PATH_VENDOR_CF # define _PATH_VENDOR_CF "/usr/ucblib/sendmail.cf" -# endif /* ! _PATH_VENDOR_CF */ +# endif # ifndef _PATH_SENDMAILPID # define _PATH_SENDMAILPID "/usr/ucblib/sendmail.pid" -# endif /* ! _PATH_SENDMAILPID */ +# endif # define SYSLOG_BUFSIZE 128 # endif /* UNIXWARE */ @@ -1984,7 +2004,7 @@ extern struct passwd * sendmail_mpe_getpwuid __P((uid_t)); # define SYSTEM5 1 /* looks like System V */ # ifndef HASGETUSERSHELL # define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ -# endif /* ! HASGETUSERSHELL */ +# endif # define DEV_BSIZE 512 /* device block size not defined */ # define GIDSET_T gid_t # undef LOG /* syslog not available */ @@ -2064,22 +2084,22 @@ extern struct passwd * sendmail_mpe_getpwuid __P((uid_t)); # define SFS_TYPE SFS_VFS /* use statfs() implementation */ # ifndef HASSETVBUF # define HASSETVBUF /* HI-UX has no setlinebuf */ -# endif /* ! HASSETVBUF */ +# endif # ifndef GIDSET_T # define GIDSET_T gid_t -# endif /* ! GIDSET_T */ +# endif # ifndef _PATH_UNIX # define _PATH_UNIX "/HI-UX" -# endif /* ! _PATH_UNIX */ +# endif # ifndef _PATH_VENDOR_CF # define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" -# endif /* ! _PATH_VENDOR_CF */ +# endif # ifndef IDENTPROTO # define IDENTPROTO 0 /* TCP/IP implementation is broken */ -# endif /* ! IDENTPROTO */ +# endif # ifndef HASGETUSERSHELL # define HASGETUSERSHELL 0 /* getusershell(3) causes core dumps */ -# endif /* ! HASGETUSERSHELL */ +# endif # define FDSET_CAST (int *) /* cast for fd_set parameters to select */ /* @@ -2110,7 +2130,7 @@ extern struct passwd * sendmail_mpe_getpwuid __P((uid_t)); # define HASSETVBUF 1 /* has setvbuf(3) function */ # ifndef HASGETUSERSHELL # define HASGETUSERSHELL 0 /* does not have getusershell(3) function */ -# endif /* ! HASGETUSERSHELL */ +# endif # define GIDSET_T gid_t /* type of 2nd arg to getgroups(2) isn't int */ # define LA_TYPE LA_ZERO /* doesn't have load average */ # define SFS_TYPE SFS_4ARGS /* use 4-arg statfs() */ @@ -2118,7 +2138,7 @@ extern struct passwd * sendmail_mpe_getpwuid __P((uid_t)); # define _PATH_UNIX "/unix" # ifndef _PATH_VENDOR_CF # define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" -# endif /* ! _PATH_VENDOR_CF */ +# endif # endif /* _UTS */ /* @@ -2151,7 +2171,7 @@ extern struct group *getgrent(), *getgrnam(), *getgrgid(); /* NEWS-OS 4.2.1R */ # ifndef BSD # define BSD /* has BSD routines */ -# endif /* ! BSD */ +# endif # define HASUNSETENV 1 /* has unsetenv(2) call */ # undef HASSETVBUF /* don't actually have setvbuf(3) */ # define WAITUNION 1 /* use "union wait" as wait argument type */ @@ -2159,7 +2179,7 @@ extern struct group *getgrent(), *getgrnam(), *getgrgid(); # define SFS_TYPE SFS_VFS /* use statfs() implementation */ # ifndef HASFLOCK # define HASFLOCK 1 /* has flock(2) call */ -# endif /* ! HASFLOCK */ +# endif # define setpgid setpgrp # undef WIFEXITED # undef WEXITSTATUS @@ -2174,26 +2194,26 @@ typedef int (*sigfunc_t)(); /* NEWS-OS 6.0.3 with /bin/cc */ # ifndef __svr4__ # define __svr4__ /* use all System V Release 4 defines below */ -# endif /* ! __svr4__ */ +# endif # 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 # define SPT_TYPE SPT_SYSMIPS /* use sysmips() (OS 6.0.2 or later) */ -# endif /* ! SPT_TYPE */ +# endif # define GIDSET_T gid_t # undef WIFEXITED # undef WEXITSTATUS # ifndef SYSLOG_BUFSIZE # define SYSLOG_BUFSIZE 256 -# endif /* ! SYSLOG_BUFSIZE */ +# endif # define _PATH_UNIX "/stand/unix" # ifndef _PATH_VENDOR_CF # define _PATH_VENDOR_CF "/etc/mail/sendmail.cf" -# endif /* ! _PATH_VENDOR_CF */ +# endif # ifndef _PATH_SENDMAILPID # define _PATH_SENDMAILPID "/etc/mail/sendmail.pid" -# endif /* ! _PATH_SENDMAILPID */ +# endif # endif /* ! __svr4 */ # endif /* sony_news */ @@ -2208,7 +2228,7 @@ typedef int (*sigfunc_t)(); # ifdef luna # ifndef IDENTPROTO # define IDENTPROTO 0 /* TCP/IP implementation is broken */ -# endif /* ! IDENTPROTO */ +# endif # define HASUNSETENV 1 /* has unsetenv(2) call */ # define NEEDPUTENV 1 /* need putenv(3) call */ # define SM_CONF_GETOPT 0 /* need a replacement for getopt(3) */ @@ -2226,7 +2246,7 @@ typedef int (*sigfunc_t)(); # endif /* luna2 */ # ifdef luna88k # define LA_TYPE LA_INT -# endif /* luna88k */ +# endif # define SFS_TYPE SFS_VFS /* use statfs() implementation */ # define setpgid setpgrp # undef WIFEXITED @@ -2252,7 +2272,7 @@ extern char *getenv(); # if defined(nec_ews_svr4) || defined(_nec_ews_svr4) # ifndef __svr4__ # define __svr4__ /* use all System V Release 4 defines below */ -# endif /* ! __svr4__ */ +# endif # define SYS5SIGNALS 1 /* SysV signal semantics -- reset on each sig */ # define HASSETSID 1 /* has POSIX setsid(2) call */ # define LA_TYPE LA_READKSYM /* use MIOC_READSYM ioctl */ @@ -2263,13 +2283,13 @@ extern char *getenv(); # define NAMELISTMASK 0x7fffffff /* mask for nlist() values */ # ifndef _PATH_VENDOR_CF # define _PATH_VENDOR_CF "/usr/ucblib/sendmail.cf" -# endif /* ! _PATH_VENDOR_CF */ +# endif # ifndef _PATH_SENDMAILPID # define _PATH_SENDMAILPID "/usr/ucblib/sendmail.pid" -# endif /* ! _PATH_SENDMAILPID */ +# endif # ifndef SYSLOG_BUFSIZE # define SYSLOG_BUFSIZE 1024 /* allow full size syslog buffer */ -# endif /* ! SYSLOG_BUFSIZE */ +# endif # endif /* defined(nec_ews_svr4) || defined(_nec_ews_svr4) */ @@ -2291,10 +2311,10 @@ extern char *getenv(); # define _PATH_UNIX "/stand/unix" # ifndef _PATH_VENDOR_CF # define _PATH_VENDOR_CF "/usr/ucblib/sendmail.cf" -# endif /* ! _PATH_VENDOR_CF */ +# endif # ifndef _PATH_SENDMAILPID # define _PATH_SENDMAILPID "/usr/ucblib/sendmail.pid" -# endif /* ! _PATH_SENDMAILPID */ +# endif # endif /* __uxp__ */ /* @@ -2307,7 +2327,7 @@ extern char *getenv(); # define GIDSET_T gid_t # ifndef IDENTPROTO # define IDENTPROTO 0 /* TCP/IP implementation is broken */ -# endif /* ! IDENTPROTO */ +# endif # endif /* DCOSx */ /* @@ -2331,7 +2351,7 @@ extern char *getenv(); # define SFS_BAVAIL f_bavail # ifndef SYSLOG_BUFSIZE # define SYSLOG_BUFSIZE 256 /* Use 256 bytes */ -# endif /* ! SYSLOG_BUFSIZE */ +# endif # undef WUNTRACED # undef WIFEXITED @@ -2352,13 +2372,13 @@ extern char *getenv(); # ifdef _PowerUX # ifndef __svr4__ # define __svr4__ -# endif /* ! __svr4__ */ +# endif # ifndef _PATH_VENDOR_CF # define _PATH_VENDOR_CF "/etc/mail/sendmail.cf" -# endif /* ! _PATH_VENDOR_CF */ +# endif # ifndef _PATH_SENDMAILPID # define _PATH_SENDMAILPID "/etc/mail/sendmail.pid" -# endif /* ! _PATH_SENDMAILPID */ +# endif # define SYSLOG_BUFSIZE 1024 # define LA_TYPE LA_ZERO typedef struct msgb mblk_t; @@ -2419,10 +2439,10 @@ typedef struct msgb mblk_t; # include # ifndef major # define major(dev) ((int)(((dev) >> 8) & 0xff)) -# endif /* ! major */ +# endif # ifndef minor # define minor(dev) ((int)((dev) & 0xff)) -# endif /* ! minor */ +# endif # endif /* defined(__INTERIX) */ @@ -2438,20 +2458,20 @@ typedef struct msgb mblk_t; # define HASGETDTABLESIZE 1 /* has getdtablesize(2) call */ # ifndef HASSETREUID # define HASSETREUID 1 /* has setreuid(2) call */ -# endif /* ! HASSETREUID */ +# endif # define HASINITGROUPS 1 /* has initgroups(3) call */ # ifndef IP_SRCROUTE # define IP_SRCROUTE 1 /* can check IP source routing */ -# endif /* ! IP_SRCROUTE */ +# endif # ifndef HASSETRLIMIT # define HASSETRLIMIT 1 /* has setrlimit(2) call */ -# endif /* ! HASSETRLIMIT */ +# endif # ifndef HASFLOCK # define HASFLOCK 1 /* has flock(2) call */ -# endif /* ! HASFLOCK */ +# endif # ifndef TZ_TYPE # define TZ_TYPE TZ_TM_ZONE /* use tm->tm_zone variable */ -# endif /* ! TZ_TYPE */ +# endif # endif /* BSD */ /* general System V Release 4 defines */ @@ -2462,33 +2482,33 @@ typedef struct msgb mblk_t; # define BSD_COMP 1 /* get BSD ioctl calls */ # ifndef HASSETRLIMIT # define HASSETRLIMIT 1 /* has setrlimit(2) call */ -# endif /* ! HASSETRLIMIT */ +# endif # ifndef HASGETUSERSHELL # define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ -# endif /* ! HASGETUSERSHELL */ +# endif # ifndef HASFCHMOD # define HASFCHMOD 1 /* most (all?) SVr4s seem to have fchmod(2) */ -# endif /* ! HASFCHMOD */ +# endif # ifndef _PATH_UNIX # define _PATH_UNIX "/unix" -# endif /* ! _PATH_UNIX */ +# endif # ifndef _PATH_VENDOR_CF # define _PATH_VENDOR_CF "/usr/ucblib/sendmail.cf" -# endif /* ! _PATH_VENDOR_CF */ +# endif # ifndef _PATH_SENDMAILPID # define _PATH_SENDMAILPID "/usr/ucblib/sendmail.pid" -# endif /* ! _PATH_SENDMAILPID */ +# endif # ifndef SYSLOG_BUFSIZE # define SYSLOG_BUFSIZE 128 -# endif /* ! SYSLOG_BUFSIZE */ +# endif # ifndef SFS_TYPE # define SFS_TYPE SFS_STATVFS -# endif /* ! SFS_TYPE */ +# endif # ifndef USE_SIGLONGJMP # define USE_SIGLONGJMP 1 /* sigsetjmp needed for signal handling */ -# endif /* ! USE_SIGLONGJMP */ +# endif # endif /* __svr4__ */ # ifdef __SVR4 @@ -2505,20 +2525,20 @@ typedef struct msgb mblk_t; # define HASSETVBUF 1 /* we have setvbuf(3) in libc */ # ifndef HASULIMIT # define HASULIMIT 1 /* has the ulimit(2) syscall */ -# endif /* ! HASULIMIT */ +# endif # ifndef LA_TYPE # ifdef MIOC_READKSYM # define LA_TYPE LA_READKSYM /* use MIOC_READKSYM ioctl */ -# else /* MIOC_READKSYM */ +# else # define LA_TYPE LA_INT /* assume integer load average */ -# endif /* MIOC_READKSYM */ +# endif # endif /* ! LA_TYPE */ # ifndef SFS_TYPE # define SFS_TYPE SFS_USTAT /* use System V ustat(2) syscall */ -# endif /* ! SFS_TYPE */ +# endif # ifndef TZ_TYPE # define TZ_TYPE TZ_TZNAME /* use tzname[] vector */ -# endif /* ! TZ_TYPE */ +# endif # endif /* SYSTEM5 */ /* general POSIX defines */ @@ -2536,15 +2556,15 @@ typedef struct msgb mblk_t; # ifdef titan # undef HASINITGROUPS /* doesn't have initgroups(3) call */ -# endif /* titan */ +# endif # ifdef _CRAYCOM # undef HASSETSID /* despite POSIX claim, doesn't have setsid */ -# endif /* _CRAYCOM */ +# endif # ifdef MOTO # undef USESETEUID -# endif /* MOTO */ +# endif /* ** Due to a "feature" in some operating systems such as Ultrix 4.3 and @@ -2559,67 +2579,67 @@ typedef struct msgb mblk_t; # ifndef IDENTPROTO # define IDENTPROTO 1 /* use IDENT proto (RFC 1413) */ -# endif /* ! IDENTPROTO */ +# endif # ifndef IP_SRCROUTE # define IP_SRCROUTE 1 /* Detect IP source routing */ -# endif /* ! IP_SRCROUTE */ +# endif # ifndef HASGETUSERSHELL # define HASGETUSERSHELL 1 /* libc has getusershell(3) call */ -# endif /* ! HASGETUSERSHELL */ +# endif # ifndef NETUNIX # define NETUNIX 1 /* include unix domain support */ -# endif /* ! NETUNIX */ +# endif # ifndef HASRANDOM # define HASRANDOM 1 /* has random(3) support */ -# endif /* ! HASRANDOM */ +# endif # ifndef HASFLOCK # define HASFLOCK 0 /* assume no flock(2) support */ -# endif /* ! HASFLOCK */ +# endif # ifndef HASSETREUID # define HASSETREUID 0 /* assume no setreuid(2) call */ -# endif /* ! HASSETREUID */ +# endif # ifndef HASFCHMOD # define HASFCHMOD 0 /* assume no fchmod(2) syscall */ -# endif /* ! HASFCHMOD */ +# endif # ifndef USESETEUID # define USESETEUID 0 /* assume no seteuid(2) call or no saved ids */ -# endif /* ! USESETEUID */ +# endif # ifndef HASSETRLIMIT # define HASSETRLIMIT 0 /* assume no setrlimit(2) support */ -# endif /* ! HASSETRLIMIT */ +# endif # ifndef HASULIMIT # define HASULIMIT 0 /* assume no ulimit(2) support */ -# endif /* ! HASULIMIT */ +# endif # ifndef SECUREWARE # define SECUREWARE 0 /* assume no SecureWare C2 auditing hooks */ -# endif /* ! SECUREWARE */ +# endif # ifndef USE_DOUBLE_FORK # define USE_DOUBLE_FORK 1 /* avoid intermediate zombies */ -# endif /* ! USE_DOUBLE_FORK */ +# endif # ifndef USE_ENVIRON # define USE_ENVIRON 0 /* use main() envp instead of extern environ */ -# endif /* ! USE_ENVIRON */ +# endif # ifndef USE_SIGLONGJMP # define USE_SIGLONGJMP 0 /* assume setjmp handles signals properly */ -# endif /* ! USE_SIGLONGJMP */ +# endif # ifndef FDSET_CAST # define FDSET_CAST /* (empty) cast for fd_set arg to select */ -# endif /* ! FDSET_CAST */ +# endif /* ** Pick a mailer setuid method for changing the current uid @@ -2634,9 +2654,9 @@ typedef struct msgb mblk_t; # else /* USESETEUID */ # if HASSETREUID # define MAILER_SETUID_METHOD USE_SETREUID -# else /* HASSETREUID */ +# else # define MAILER_SETUID_METHOD USE_SETUID -# endif /* HASSETREUID */ +# endif # endif /* USESETEUID */ /* @@ -2647,35 +2667,35 @@ typedef struct msgb mblk_t; # ifndef GIDSET_T # define GIDSET_T int -# endif /* ! GIDSET_T */ +# endif # ifndef UID_T # define UID_T uid_t -# endif /* ! UID_T */ +# endif # ifndef GID_T # define GID_T gid_t -# endif /* ! GID_T */ +# endif # ifndef MODE_T # define MODE_T mode_t -# endif /* ! MODE_T */ +# endif # ifndef ARGV_T # define ARGV_T char ** -# endif /* ! ARGV_T */ +# endif # ifndef SOCKADDR_LEN_T # define SOCKADDR_LEN_T int -# endif /* ! SOCKADDR_LEN_T */ +# endif # ifndef SOCKOPT_LEN_T # define SOCKOPT_LEN_T int -# endif /* ! SOCKOPT_LEN_T */ +# endif # ifndef QUAD_T # define QUAD_T unsigned long -# endif /* ! QUAD_T */ +# endif /********************************************************************** ** Remaining definitions should never have to be changed. They are ** primarily to provide back compatibility for older systems -- for @@ -2685,43 +2705,43 @@ typedef struct msgb mblk_t; /* System 5 compatibility */ # ifndef S_ISREG # define S_ISREG(foo) ((foo & S_IFMT) == S_IFREG) -# endif /* ! S_ISREG */ +# endif # ifndef S_ISDIR # define S_ISDIR(foo) ((foo & S_IFMT) == S_IFDIR) -# endif /* ! S_ISDIR */ +# endif # if !defined(S_ISLNK) && defined(S_IFLNK) # define S_ISLNK(foo) ((foo & S_IFMT) == S_IFLNK) -# endif /* !defined(S_ISLNK) && defined(S_IFLNK) */ +# endif # if !defined(S_ISFIFO) # if defined(S_IFIFO) # define S_ISFIFO(foo) ((foo & S_IFMT) == S_IFIFO) -# else /* defined(S_IFIFO) */ +# else # define S_ISFIFO(foo) false -# endif /* defined(S_IFIFO) */ +# endif # endif /* !defined(S_ISFIFO) */ # ifndef S_IRUSR # define S_IRUSR 0400 -# endif /* ! S_IRUSR */ +# endif # ifndef S_IWUSR # define S_IWUSR 0200 -# endif /* ! S_IWUSR */ +# endif # ifndef S_IRGRP # define S_IRGRP 0040 -# endif /* ! S_IRGRP */ +# endif # ifndef S_IWGRP # define S_IWGRP 0020 -# endif /* ! S_IWGRP */ +# endif # ifndef S_IROTH # define S_IROTH 0004 -# endif /* ! S_IROTH */ +# endif # ifndef S_IWOTH # define S_IWOTH 0002 -# endif /* ! S_IWOTH */ +# endif /* close-on-exec flag */ # ifndef FD_CLOEXEC # define FD_CLOEXEC 1 -# endif /* ! FD_CLOEXEC */ +# endif /* ** Older systems don't have this error code -- it should be in @@ -2730,7 +2750,7 @@ typedef struct msgb mblk_t; # ifndef EX_CONFIG # define EX_CONFIG 78 /* configuration error */ -# endif /* ! EX_CONFIG */ +# endif /* pseudo-codes */ # define EX_QUIT 22 /* drop out of server immediately */ @@ -2739,7 +2759,7 @@ typedef struct msgb mblk_t; #ifndef EX_NOTFOUND # define EX_NOTFOUND EX_NOHOST -#endif /* ! EX_NOTFOUND */ +#endif /* pseudo-code used for mci_setstat */ # define EX_NOTSTICKY (-5) /* don't save persistent status */ @@ -2755,27 +2775,27 @@ typedef struct msgb mblk_t; /* type of arbitrary pointer */ # ifndef ARBPTR_T # define ARBPTR_T void * -# endif /* ! ARBPTR_T */ +# endif # ifndef __P # include "sm/cdefs.h" -# endif /* ! __P */ +# endif # if HESIOD && !defined(NAMED_BIND) # define NAMED_BIND 1 /* not one without the other */ -# endif /* HESIOD && !defined(NAMED_BIND) */ +# endif # if NAMED_BIND && !defined( __ksr__ ) && !defined( h_errno ) extern int h_errno; -# endif /* NAMED_BIND && !defined( __ksr__ ) && !defined( h_errno ) */ +# endif # if NEEDPUTENV extern int putenv __P((char *)); -# endif /* NEEDPUTENV */ +# endif #if !HASUNSETENV extern void unsetenv __P((char *)); -#endif /* !HASUNSETENV */ +#endif # ifdef LDAPMAP # include @@ -2795,7 +2815,15 @@ extern void unsetenv __P((char *)); # if defined(LDAP_OPT_SIZELIMIT) && !defined(USE_LDAP_INIT) # define USE_LDAP_INIT 1 -# endif /* defined(LDAP_OPT_SIZELIMIT) && !defined(USE_LDAP_INIT) */ +# endif + +# if !defined(LDAP_NETWORK_TIMEOUT) && defined(_FFR_LDAP_NETWORK_TIMEOUT) +# define LDAP_NETWORK_TIMEOUT _FFR_LDAP_NETWORK_TIMEOUT +# endif + +# if !defined(LDAP_NETWORK_TIMEOUT) && defined(LDAP_OPT_NETWORK_TIMEOUT) +# define LDAP_NETWORK_TIMEOUT 1 +# endif /* ** LDAP_OPT_SIZELIMIT is not defined under Umich 3.x nor OpenLDAP 1.x, @@ -2804,7 +2832,7 @@ extern void unsetenv __P((char *)); # if defined(LDAP_OPT_SIZELIMIT) && !defined(USE_LDAP_SET_OPTION) # define USE_LDAP_SET_OPTION 1 -# endif /* defined(LDAP_OPT_SIZELIMIT) && !defined(USE_LDAP_SET_OPTION) */ +# endif # endif /* LDAPMAP */ @@ -2812,7 +2840,7 @@ extern void unsetenv __P((char *)); # include # ifdef newstr # undef newstr -# endif /* newstr */ +# endif # else /* HASUNAME */ # define NODE_LENGTH 32 struct utsname @@ -2823,10 +2851,10 @@ struct utsname # if !defined(MAXHOSTNAMELEN) && !defined(_SCO_unix_) && !defined(NonStop_UX_BXX) && !defined(ALTOS_SYSTEM_V) # define MAXHOSTNAMELEN 256 -# endif /* !defined(MAXHOSTNAMELEN) && !defined(_SCO_unix_) && !defined(NonStop_UX_BXX) && !defined(ALTOS_SYSTEM_V) */ +# endif -# if _FFR_LINUX_MHNL && defined(__linux__) && MAXHOSTNAMELEN < 255 +# if defined(__linux__) && MAXHOSTNAMELEN < 255 /* ** override Linux weirdness: a FQHN can be 255 chars long ** SUSv3 requires HOST_NAME_MAX ("Maximum length of a host @@ -2837,23 +2865,23 @@ struct utsname */ # undef MAXHOSTNAMELEN # define MAXHOSTNAMELEN 256 -# endif /* _FFR_LINUX_MHNL && defined(__linux__) && MAXHOSTNAMELEN < 255 */ +# endif /* defined(__linux__) && MAXHOSTNAMELEN < 255 */ # if !defined(SIGCHLD) && defined(SIGCLD) # define SIGCHLD SIGCLD -# endif /* !defined(SIGCHLD) && defined(SIGCLD) */ +# endif # ifndef STDIN_FILENO # define STDIN_FILENO 0 -# endif /* ! STDIN_FILENO */ +# endif # ifndef STDOUT_FILENO # define STDOUT_FILENO 1 -# endif /* ! STDOUT_FILENO */ +# endif # ifndef STDERR_FILENO # define STDERR_FILENO 2 -# endif /* ! STDERR_FILENO */ +# endif # ifndef LOCK_SH # define LOCK_SH 0x01 /* shared lock */ @@ -2864,19 +2892,19 @@ struct utsname # ifndef S_IXOTH # define S_IXOTH (S_IEXEC >> 6) -# endif /* ! S_IXOTH */ +# endif # ifndef S_IXGRP # define S_IXGRP (S_IEXEC >> 3) -# endif /* ! S_IXGRP */ +# endif # ifndef S_IXUSR # define S_IXUSR (S_IEXEC) -# endif /* ! S_IXUSR */ +# endif #ifndef O_ACCMODE # define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR) -#endif /* ! O_ACCMODE */ +#endif # ifndef SEEK_SET # define SEEK_SET 0 @@ -2886,47 +2914,47 @@ struct utsname # ifndef SIG_ERR # define SIG_ERR ((void (*)()) -1) -# endif /* ! SIG_ERR */ +# endif # ifndef WEXITSTATUS # define WEXITSTATUS(st) (((st) >> 8) & 0377) -# endif /* ! WEXITSTATUS */ +# endif # ifndef WIFEXITED # define WIFEXITED(st) (((st) & 0377) == 0) -# endif /* ! WIFEXITED */ +# endif # ifndef WIFSTOPPED # define WIFSTOPPED(st) (((st) & 0100) == 0) -# endif /* ! WIFSTOPPED */ +# endif # ifndef WCOREDUMP # define WCOREDUMP(st) (((st) & 0200) != 0) -# endif /* ! WCOREDUMP */ +# endif # ifndef WTERMSIG # define WTERMSIG(st) (((st) & 0177)) -# endif /* ! WTERMSIG */ +# endif # ifndef SIGFUNC_DEFINED typedef void (*sigfunc_t) __P((int)); -# endif /* ! SIGFUNC_DEFINED */ +# endif # ifndef SIGFUNC_RETURN # define SIGFUNC_RETURN -# endif /* ! SIGFUNC_RETURN */ +# endif # ifndef SIGFUNC_DECL # define SIGFUNC_DECL void -# endif /* ! SIGFUNC_DECL */ +# endif /* size of syslog buffer */ # ifndef SYSLOG_BUFSIZE # define SYSLOG_BUFSIZE 1024 -# endif /* ! SYSLOG_BUFSIZE */ +# endif /* for FD_SET() */ #ifndef FD_SETSIZE # define FD_SETSIZE 256 -#endif /* ! FD_SETSIZE */ +#endif #ifndef SIGWAIT_TAKES_1_ARG # define SIGWAIT_TAKES_1_ARG 0 -#endif /* ! SIGWAIT_TAKES_1_ARG */ +#endif /* ** Size of prescan buffer. @@ -2939,16 +2967,16 @@ typedef void (*sigfunc_t) __P((int)); /* fork routine -- set above using #ifdef _osname_ or in Makefile */ # ifndef FORK # define FORK fork /* function to call to fork mailer */ -# endif /* ! FORK */ +# endif /* setting h_errno */ # ifndef SM_SET_H_ERRNO # define SM_SET_H_ERRNO(err) h_errno = (err) -# endif /* SM_SET_H_ERRNO */ +# endif # ifndef SM_CONF_GETOPT # define SM_CONF_GETOPT 1 -# endif /* ! SM_CONF_GETOPT */ +# endif /* random routine -- set above using #ifdef _osname_ or in Makefile */ # if HASRANDOM @@ -2957,7 +2985,7 @@ typedef void (*sigfunc_t) __P((int)); # define get_random() ((long) rand()) # ifndef RANDOMSHIFT # define RANDOMSHIFT 8 -# endif /* ! RANDOMSHIFT */ +# endif # endif /* HASRANDOM */ /* @@ -2966,17 +2994,17 @@ typedef void (*sigfunc_t) __P((int)); # ifndef SCANF # define SCANF 1 -# endif /* ! SCANF */ +# endif /* XXX 32 bit type */ # ifndef SM_INT32 # define SM_INT32 int32_t -# endif /* ! SM_INT32 */ +# endif /* XXX 16 bit type */ # ifndef SM_UINT16 # define SM_UINT16 uint16_t -# endif /* ! SM_UINT16 */ +# endif /* additional valid chars in user/group names in passwd */ # ifndef SM_PWN_CHARS @@ -2992,21 +3020,21 @@ typedef void (*sigfunc_t) __P((int)); # if USE_SIGLONGJMP # ifdef jmp_buf # undef jmp_buf -# endif /* jmp_buf */ +# endif # define jmp_buf sigjmp_buf # ifdef setjmp # undef setjmp -# endif /* setjmp */ +# endif # define setjmp(env) sigsetjmp(env, 1) # ifdef longjmp # undef longjmp -# endif /* longjmp */ +# endif # define longjmp(env, val) siglongjmp(env, val) # endif /* USE_SIGLONGJMP */ # if !defined(NGROUPS_MAX) && defined(NGROUPS) # define NGROUPS_MAX NGROUPS /* POSIX naming convention */ -# endif /* !defined(NGROUPS_MAX) && defined(NGROUPS) */ +# endif /* ** Some snprintf() implementations are rumored not to NUL terminate. @@ -3014,11 +3042,11 @@ typedef void (*sigfunc_t) __P((int)); # if SNPRINTF_IS_BROKEN # ifdef snprintf # undef snprintf -# endif /* snprintf */ +# endif # define snprintf sm_snprintf # ifdef vsnprintf # undef vsnprintf -# endif /* vsnprintf */ +# endif # define vsnprintf sm_vsnprintf # endif /* SNPRINTF_IS_BROKEN */ @@ -3039,14 +3067,14 @@ typedef void (*sigfunc_t) __P((int)); # ifndef SM_CONF_SYSLOG # define SM_CONF_SYSLOG 1 /* syslog.h has prototype for syslog() */ -# endif /* SM_CONF_SYSLOG */ +# endif # if !SM_CONF_SYSLOG # ifdef __STDC__ extern void syslog(int, const char *, ...); -# else /* __STDC__ */ +# else extern void syslog(); -# endif /* __STDC__ */ +# endif # endif /* !SM_CONF_SYSLOG */ /* portable(?) definition for alignment */ diff --git a/include/sm/config.h b/include/sm/config.h index 451f1360612b..3eb5662d20aa 100644 --- a/include/sm/config.h +++ b/include/sm/config.h @@ -31,9 +31,9 @@ # ifndef SM_CONF_STDBOOL_H # if !defined(__clang__) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L # define SM_CONF_STDBOOL_H 1 -# else /* !defined(__clang__) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L */ +# else # define SM_CONF_STDBOOL_H 0 -# endif /* !defined(__clang__) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L */ +# endif # endif /* ! SM_CONF_STDBOOL_H */ /* @@ -42,7 +42,7 @@ # ifndef SM_CONF_SYS_CDEFS_H # define SM_CONF_SYS_CDEFS_H 0 -# endif /* ! SM_CONF_SYS_CDEFS_H */ +# endif /* ** SM_CONF_STDDEF_H is 1 if exists @@ -50,7 +50,7 @@ # ifndef SM_CONF_STDDEF_H # define SM_CONF_STDDEF_H 1 -# endif /* ! SM_CONF_STDDEF_H */ +# endif /* ** Configuration macro that specifies whether strlcpy/strlcat are available. @@ -60,7 +60,7 @@ # ifndef SM_CONF_STRL # define SM_CONF_STRL 0 -# endif /* ! SM_CONF_STRL */ +# endif /* ** Configuration macro indicating that setitimer is available @@ -68,7 +68,7 @@ # ifndef SM_CONF_SETITIMER # define SM_CONF_SETITIMER 1 -# endif /* ! SM_CONF_SETITIMER */ +# endif /* ** Does define uid_t and gid_t? @@ -76,14 +76,14 @@ # ifndef SM_CONF_UID_GID # define SM_CONF_UID_GID 1 -# endif /* ! SM_CONF_UID_GID */ +# endif /* ** Does define ssize_t? */ # ifndef SM_CONF_SSIZE_T # define SM_CONF_SSIZE_T 1 -# endif /* ! SM_CONF_SSIZE_T */ +# endif /* ** Does the C compiler support long long? @@ -95,9 +95,9 @@ # else /* defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L */ # if defined(__GNUC__) # define SM_CONF_LONGLONG 1 -# else /* defined(__GNUC__) */ +# else # define SM_CONF_LONGLONG 0 -# endif /* defined(__GNUC__) */ +# endif # endif /* defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L */ # endif /* ! SM_CONF_LONGLONG */ @@ -108,7 +108,7 @@ # ifndef SM_CONF_QUAD_T # define SM_CONF_QUAD_T 0 -# endif /* ! SM_CONF_QUAD_T */ +# endif /* ** Configuration macro indicating that shared memory is available @@ -116,7 +116,7 @@ # ifndef SM_CONF_SHM # define SM_CONF_SHM 0 -# endif /* ! SM_CONF_SHM */ +# endif /* ** Does define sigsetjmp? @@ -124,7 +124,7 @@ # ifndef SM_CONF_SIGSETJMP # define SM_CONF_SIGSETJMP 1 -# endif /* ! SM_CONF_SIGSETJMP */ +# endif /* ** Does exist, and define the EX_* macros with values @@ -133,17 +133,17 @@ # ifndef SM_CONF_SYSEXITS_H # define SM_CONF_SYSEXITS_H 0 -# endif /* ! SM_CONF_SYSEXITS_H */ +# endif /* has memchr() prototype? (if not: needs memory.h) */ # ifndef SM_CONF_MEMCHR # define SM_CONF_MEMCHR 1 -# endif /* ! SM_CONF_MEMCHR */ +# endif /* try LLONG tests in libsm/t-types.c? */ # ifndef SM_CONF_TEST_LLONG # define SM_CONF_TEST_LLONG 1 -# endif /* !SM_CONF_TEST_LLONG */ +# endif /* LDAP Checks */ # if LDAPMAP @@ -161,9 +161,9 @@ # if USING_NETSCAPE_LDAP || LDAP_API_VERSION >= 2004 # define SM_CONF_LDAP_MEMFREE 1 -# else /* USING_NETSCAPE_LDAP || LDAP_API_VERSION >= 2004 */ +# else # define SM_CONF_LDAP_MEMFREE 0 -# endif /* USING_NETSCAPE_LDAP || LDAP_API_VERSION >= 2004 */ +# endif # endif /* ! SM_CONF_LDAP_MEMFREE */ /* Does the LDAP library have ldap_initialize()? */ @@ -177,13 +177,13 @@ /* OpenLDAP does it with LDAP_OPT_URI */ # ifdef LDAP_OPT_URI # define SM_CONF_LDAP_INITIALIZE 1 -# endif /* LDAP_OPT_URI */ +# endif # 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 #endif /* ! SM_CONFIG_H */ diff --git a/include/sm/debug.h b/include/sm/debug.h index 9c7bb803d128..eb045c8ffed5 100644 --- a/include/sm/debug.h +++ b/include/sm/debug.h @@ -94,7 +94,7 @@ struct sm_debug # ifndef SM_DEBUG_CHECK # define SM_DEBUG_CHECK 1 -# endif /* ! SM_DEBUG_CHECK */ +# endif # if SM_DEBUG_CHECK /* diff --git a/include/sm/errstring.h b/include/sm/errstring.h index 14c100773202..16d0598a45e6 100644 --- a/include/sm/errstring.h +++ b/include/sm/errstring.h @@ -18,12 +18,12 @@ #if defined(__QNX__) # define E_PSEUDOBASE 512 -#endif /* defined(__QNX__) */ +#endif #include #if NEEDINTERRNO extern int errno; -#endif /* NEEDINTERRNO */ +#endif /* ** These are used in a few cases where we need some special @@ -33,7 +33,7 @@ extern int errno; #ifndef E_PSEUDOBASE # define E_PSEUDOBASE 256 -#endif /* ! E_PSEUDOBASE */ +#endif #define E_SM_OPENTIMEOUT (E_PSEUDOBASE + 0) /* Timeout on file open */ #define E_SM_NOSLINK (E_PSEUDOBASE + 1) /* Symbolic links not allowed */ @@ -88,7 +88,6 @@ extern int errno; #define SMDBE_OLD_VERSION (E_SMDBBASE + 23) #define SMDBE_VERSION_MISMATCH (E_SMDBBASE + 24) -extern const char *sm_errstring __P((int _errno)); - +extern const char *sm_errstring __P((int _errnum)); #endif /* SM_ERRSTRING_H */ diff --git a/include/sm/gen.h b/include/sm/gen.h index 522892982e9e..a66bae54b46c 100644 --- a/include/sm/gen.h +++ b/include/sm/gen.h @@ -43,7 +43,7 @@ # else /* SM_CONF_STDDEF_H */ # ifndef NULL # define NULL 0 -# endif /* ! NULL */ +# endif # define offsetof(type, member) ((size_t)(&((type *)0)->member)) # endif /* SM_CONF_STDDEF_H */ diff --git a/include/sm/heap.h b/include/sm/heap.h index 152e3672fcc4..369894e9cd15 100644 --- a/include/sm/heap.h +++ b/include/sm/heap.h @@ -25,7 +25,7 @@ /* change default to 0 for production? */ # ifndef SM_HEAP_CHECK # define SM_HEAP_CHECK 1 -# endif /* ! SM_HEAP_CHECK */ +# endif # if SM_HEAP_CHECK # define sm_malloc_x(sz) sm_malloc_tagged_x(sz, __FILE__, __LINE__, SmHeapGroup) diff --git a/include/sm/io.h b/include/sm/io.h index 1eceffd22cfb..838af38e3cfa 100644 --- a/include/sm/io.h +++ b/include/sm/io.h @@ -53,7 +53,7 @@ #define SM_IO_WHAT_MODE 1 #define SM_IO_WHAT_VECTORS 2 #define SM_IO_WHAT_FD 3 -#define SM_IO_WHAT_TYPE 4 +/* was WHAT_TYPE 4 unused */ #define SM_IO_WHAT_ISTYPE 5 #define SM_IO_IS_READABLE 6 #define SM_IO_WHAT_TIMEOUT 7 @@ -342,7 +342,7 @@ __END_DECLS __BEGIN_DECLS int sm_rget __P((SM_FILE_T *, int)); int sm_vfscanf __P((SM_FILE_T *, int SM_NONVOLATILE, const char *, - va_list SM_NONVOLATILE)); + va_list)); int sm_wbuf __P((SM_FILE_T *, int, int)); __END_DECLS @@ -383,7 +383,7 @@ __END_DECLS # ifndef _POSIX_SOURCE # define sm_io_getc(fp, t) sm_getc(fp, t) # define sm_io_putc(fp, t, x) sm_putc(fp, t, x) -# endif /* _POSIX_SOURCE */ +# endif #endif /* lint */ #endif /* SM_IO_H */ diff --git a/include/sm/ldap.h b/include/sm/ldap.h index 9ce5d234e70a..8fcd872d5f84 100644 --- a/include/sm/ldap.h +++ b/include/sm/ldap.h @@ -22,13 +22,13 @@ # ifndef LDAPMAP_MAX_ATTR # define LDAPMAP_MAX_ATTR 64 -# endif /* ! LDAPMAP_MAX_ATTR */ +# endif # ifndef LDAPMAP_MAX_FILTER # define LDAPMAP_MAX_FILTER 1024 -# endif /* ! LDAPMAP_MAX_FILTER */ +# endif # ifndef LDAPMAP_MAX_PASSWD # define LDAPMAP_MAX_PASSWD 256 -# endif /* ! LDAPMAP_MAX_PASSWD */ +# endif # if LDAPMAP @@ -91,9 +91,12 @@ struct sm_ldap_struct /* ldapmap_lookup options */ char ldap_attrsep; -# if _FFR_LDAP_NETWORK_TIMEOUT +# if LDAP_NETWORK_TIMEOUT int ldap_networktmo; -# endif /* _FFR_LDAP_NETWORK_TIMEOUT */ +# endif +# if _FFR_SM_LDAP_DBG + int ldap_debug; +# endif /* Linked list of maps sharing the same LDAP binding */ void *ldap_next; @@ -135,7 +138,7 @@ extern void sm_ldap_close __P((SM_LDAP_STRUCT *)); /* Portability defines */ # if !SM_CONF_LDAP_MEMFREE # define ldap_memfree(x) ((void) 0) -# endif /* !SM_CONF_LDAP_MEMFREE */ +# endif # endif /* LDAPMAP */ #endif /* ! SM_LDAP_H */ diff --git a/include/sm/limits.h b/include/sm/limits.h index 001f81e190a4..fdc36bf81a62 100644 --- a/include/sm/limits.h +++ b/include/sm/limits.h @@ -31,13 +31,13 @@ # ifndef LLONG_MIN # define LLONG_MIN ((LONGLONG_T)(~(ULLONG_MAX >> 1))) -# endif /* ! LLONG_MIN */ +# endif # ifndef LLONG_MAX # define LLONG_MAX ((LONGLONG_T)(ULLONG_MAX >> 1)) -# endif /* ! LLONG_MAX */ +# endif # ifndef ULLONG_MAX # define ULLONG_MAX ((ULONGLONG_T)(-1)) -# endif /* ! ULLONG_MAX */ +# endif /* ** PATH_MAX is defined by the POSIX standard. All modern systems @@ -47,9 +47,9 @@ # ifndef PATH_MAX # ifdef MAXPATHLEN # define PATH_MAX MAXPATHLEN -# else /* MAXPATHLEN */ +# else # define PATH_MAX 2048 -# endif /* MAXPATHLEN */ +# endif # endif /* ! PATH_MAX */ #endif /* ! SM_LIMITS_H */ diff --git a/include/sm/notify.h b/include/sm/notify.h new file mode 100644 index 000000000000..e5c193e09b37 --- /dev/null +++ b/include/sm/notify.h @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2016 Proofpoint, 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. + */ + +#ifndef SM_NOTIFY_H +#define SM_NOTIFY_H + +int sm_notify_init __P((int)); +int sm_notify_start __P((bool, int)); +int sm_notify_stop __P((bool, int)); +int sm_notify_rcv __P((char *, size_t, int)); +int sm_notify_snd __P((char *, size_t)); + +#endif /* ! SM_MSG_H */ diff --git a/include/sm/os/sm_os_freebsd.h b/include/sm/os/sm_os_freebsd.h index 306f62cb5724..7c52edfe029f 100644 --- a/include/sm/os/sm_os_freebsd.h +++ b/include/sm/os/sm_os_freebsd.h @@ -1,12 +1,10 @@ /* - * Copyright (c) 2000-2001 Proofpoint, Inc. and its suppliers. + * Copyright (c) 2000-2001, 2018 Proofpoint, 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_freebsd.h,v 1.12 2013-11-22 20:51:34 ca Exp $ */ /* @@ -32,10 +30,14 @@ #ifndef SM_CONF_SHM # define SM_CONF_SHM 1 -#endif /* SM_CONF_SHM */ +#endif #ifndef SM_CONF_SEM -# define SM_CONF_SEM 1 -#endif /* SM_CONF_SEM */ +# if __FreeBSD__ > 11 +# define SM_CONF_SEM 2 /* union semun is now longer available by default */ +# else +# define SM_CONF_SEM 1 +# endif +#endif #ifndef SM_CONF_MSG # define SM_CONF_MSG 1 -#endif /* SM_CONF_MSG */ +#endif diff --git a/include/sm/rpool.h b/include/sm/rpool.h index b01050de3a58..52f76771321a 100644 --- a/include/sm/rpool.h +++ b/include/sm/rpool.h @@ -123,7 +123,7 @@ typedef struct #if _FFR_PERF_RPOOL int sm_nbigblocks; int sm_npools; -#endif /* _FFR_PERF_RPOOL */ +#endif } SM_RPOOL_T; @@ -167,10 +167,10 @@ sm_rpool_malloc __P(( #if DO_NOT_USE_STRCPY extern char *sm_rpool_strdup_x __P((SM_RPOOL_T *rpool, const char *s)); -#else /* DO_NOT_USE_STRCPY */ +#else # define sm_rpool_strdup_x(rpool, str) \ strcpy(sm_rpool_malloc_x(rpool, strlen(str) + 1), str) -#endif /* DO_NOT_USE_STRCPY */ +#endif extern SM_RPOOL_ATTACH_T sm_rpool_attach_x __P(( diff --git a/include/sm/sem.h b/include/sm/sem.h index 556400c39ca4..f188a15deca3 100644 --- a/include/sm/sem.h +++ b/include/sm/sem.h @@ -35,10 +35,10 @@ union semun # ifndef SEM_A # define SEM_A 0200 -# endif /* SEM_A */ +# endif # ifndef SEM_R # define SEM_R 0400 -# endif /* SEM_R */ +# endif # define SM_NSEM 1 diff --git a/include/sm/shm.h b/include/sm/shm.h index 1a3b3b4f8bd1..f6c5ad56c1c9 100644 --- a/include/sm/shm.h +++ b/include/sm/shm.h @@ -34,10 +34,10 @@ extern int sm_shmsetowner __P((int, uid_t, gid_t, mode_t)); /* for those braindead systems... (e.g., SunOS 4) */ # ifndef SHM_R # define SHM_R 0400 -# endif /* SHM_R */ +# endif # ifndef SHM_W # define SHM_W 0200 -# endif /* SHM_W */ +# endif # endif /* SM_CONF_SHM */ #endif /* ! SM_SHM_H */ diff --git a/include/sm/string.h b/include/sm/string.h index 4fd87afe6003..1f2b587cc642 100644 --- a/include/sm/string.h +++ b/include/sm/string.h @@ -30,7 +30,7 @@ extern bool sm_match __P((const char *_str, const char *_pattern)); extern char * -sm_strdup __P((char *)); +sm_strdup __P((const char *)); extern char * sm_strndup_x __P((const char *_str, size_t _len)); @@ -87,7 +87,7 @@ sm_strlcpyn __P((char *, # if !HASSTRERROR extern char * strerror __P((int _errno)); -# endif /* !HASSTRERROR */ +# endif extern int sm_strrevcmp __P((const char *, const char *)); @@ -109,5 +109,7 @@ sm_strtoull __P((const char *, char**, int)); extern void stripquotes __P((char *)); +extern void +unfoldstripquotes __P((char *)); #endif /* SM_STRING_H */ diff --git a/include/sm/test.h b/include/sm/test.h index fdcce848b7e7..b9b77b678fe2 100644 --- a/include/sm/test.h +++ b/include/sm/test.h @@ -20,9 +20,9 @@ # if defined(__STDC__) || defined(__cplusplus) # define SM_TEST(cond) sm_test(cond, #cond, __FILE__, __LINE__) -# else /* defined(__STDC__) || defined(__cplusplus) */ +# else # define SM_TEST(cond) sm_test(cond, "cond", __FILE__, __LINE__) -# endif /* defined(__STDC__) || defined(__cplusplus) */ +# endif extern int SmTestIndex; extern int SmTestNumErrors; diff --git a/include/sm/types.h b/include/sm/types.h index 32c696fb837d..68998af82ddf 100644 --- a/include/sm/types.h +++ b/include/sm/types.h @@ -38,11 +38,11 @@ # if !SM_CONF_UID_GID # define uid_t int # define gid_t int -# endif /* !SM_CONF_UID_GID */ +# endif # if !SM_CONF_SSIZE_T # define ssize_t int -# endif /* !SM_CONF_SSIZE_T */ +# endif /* ** Define LONGLONG_T and ULONGLONG_T, which are portable locutions diff --git a/include/sm/varargs.h b/include/sm/varargs.h index 612858da9c1f..2609630d919d 100644 --- a/include/sm/varargs.h +++ b/include/sm/varargs.h @@ -32,6 +32,11 @@ # define SM_VA_COPY(dst, src) __va_copy((dst), (src)) # else # define SM_VA_COPY(dst, src) memcpy(&(dst), &(src), sizeof((dst))) +# define SM_VA_END_COPY(ap) do { } while (0) +# endif + +# ifndef SM_VA_END_COPY +# define SM_VA_END_COPY(ap) va_end(ap) # endif /* diff --git a/include/sm/xtrap.h b/include/sm/xtrap.h index ed5de5348fe4..31ddd1d36982 100644 --- a/include/sm/xtrap.h +++ b/include/sm/xtrap.h @@ -25,9 +25,9 @@ extern SM_DEBUG_T SmXtrapReport; # if SM_DEBUG_CHECK # define sm_xtrap_check() (++SmXtrapCount == sm_debug_level(&SmXtrapDebug)) -# else /* SM_DEBUG_CHECK */ +# else # define sm_xtrap_check() (0) -# endif /* SM_DEBUG_CHECK */ +# endif # define sm_xtrap_raise_x(exc) \ if (sm_xtrap_check()) \ diff --git a/libmilter/Makefile b/libmilter/Makefile index 825ddd52d9d6..181c3b671b91 100644 --- a/libmilter/Makefile +++ b/libmilter/Makefile @@ -6,10 +6,10 @@ OPTIONS= $(CONFIG) $(FLAGS) all: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ -check: FRC - $(SHELL) $(BUILD) $(OPTIONS) $@ clean: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ +check: FRC + $(SHELL) $(BUILD) $(OPTIONS) $@ install: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ diff --git a/libmilter/README b/libmilter/README index 64e1cca1cf7c..73953823b670 100644 --- a/libmilter/README +++ b/libmilter/README @@ -115,7 +115,7 @@ T=C:5m;S:10s;R:10s;E:5m where 's' is seconds and 'm' is minutes. -Which filters are invoked and their sequencing is handled by the +Which filters are invoked and their sequencing is handled by the InputMailFilters option. Note: if InputMailFilters is not defined no filters will be used. @@ -207,28 +207,19 @@ libmilter requires pthread support in the operating system. Moreover, it requires that the library functions it uses are thread safe; which is true for the operating systems libmilter has been developed and tested on. On some operating systems this requires special compile time options (e.g., -not just -pthread). libmilter is currently known to work on (modulo problems -in the pthread support of some specific versions): - -FreeBSD 3.x, 4.x -SunOS 5.x (x >= 5) -AIX 4.3.x -HP UX 11.x -Linux (recent versions/distributions) - -libmilter is currently not supported on: +not just -pthread). +So far, libmilter is not supported on: IRIX 6.x Ultrix Feedback about problems (and possible fixes) is welcome. + +--------------------------+ | SOURCE FOR SAMPLE FILTER | +--------------------------+ Note that the filter example.c may not be thread safe on some operating systems. You should check your system man pages for the functions used -below to verify the functions are thread safe. - -$Revision: 8.42 $, Last updated $Date: 2006-06-29 17:10:16 $ +to verify they are thread safe. diff --git a/libmilter/comm.c b/libmilter/comm.c index a551a5253fd8..05dfdb61457c 100644 --- a/libmilter/comm.c +++ b/libmilter/comm.c @@ -139,9 +139,9 @@ mi_rd_cmd(sd, timeout, cmd, rlen, name) } #if _FFR_ADD_NULL buf = malloc(expl + 1); -#else /* _FFR_ADD_NULL */ +#else buf = malloc(expl); -#endif /* _FFR_ADD_NULL */ +#endif if (buf == NULL) { *cmd = SMFIC_MALLOC; @@ -194,7 +194,7 @@ mi_rd_cmd(sd, timeout, cmd, rlen, name) #if _FFR_ADD_NULL /* makes life simpler for common string routines */ buf[expl] = '\0'; -#endif /* _FFR_ADD_NULL */ +#endif return buf; } i += len; diff --git a/libmilter/docs/api.html b/libmilter/docs/api.html index b314a0f4e96d..4a90e9a432e6 100644 --- a/libmilter/docs/api.html +++ b/libmilter/docs/api.html @@ -15,7 +15,7 @@ $Id: api.html,v 1.39 2013-11-22 20:51:39 ca Exp $
  • Miscellaneous -

    Library Control Functions

    +

    Library Control Functions

    Before handing control to libmilter (by calling smfi_main), a filter may call the following @@ -23,11 +23,12 @@ functions to set libmilter parameters. In particular, the filter must call smfi_register to register its callbacks. Each function will return either MI_SUCCESS or MI_FAILURE to -indicate the status of the operation. +indicate the status of the operation.

    -None of these functions communicate with the MTA. All alter the -library's state, some of which is communicated to the MTA inside +None of these functions communicate with the MTA. +All alter the library's state, some of which +is communicated to the MTA inside smfi_main.

    @@ -54,7 +55,7 @@ library's state, some of which is communicated to the MTA inside

    Data Access Functions

    The following functions may be called from within the filter-defined callbacks -to access information about the current connection or message. +to access information about the current connection or message.

    FunctionDescription
    smfi_getsymvalReturn the value @@ -80,33 +81,38 @@ The following functions change a message's contents and attributes. They may only be called in xxfi_eom. 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. Message data (senders, recipients, headers, body chunks) +the operation. +Message data (senders, recipients, headers, body chunks) passed to these functions via parameters is copied and does not need to be preserved (i.e., allocated memory can be freed).

    -A filter must have set the appropriate flag (listed below) in the -description passed to smfi_register -to call any message modification function. Failure to do so will -cause the MTA to treat a call to the function as a failure of the -filter, terminating its connection. +A filter which might call a message modification function +must set the appropriate flag +(listed below), +either +in the description passed to smfi_register +or via xxfi_negotiate. +Failure to do so will cause the MTA to treat a call to the function +as a failure of the filter, terminating its connection.

    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. For example, +the MTA performed the requested operation. +For example, smfi_addheader, when called with an illegal header name, will return MI_SUCCESS even though the MTA may later refuse to add the illegal header.

    - +
    FunctionDescriptionSMFIF_* flag
    +the message. - + +header into the message. @@ -180,40 +186,43 @@ which are registered via smfi_register: - +
    FunctionDescriptionSMFIF_* flag
    smfi_addheaderAdd a header to -the message.SMFIF_ADDHDRS
    SMFIF_ADDHDRS
    smfi_chgheaderChange or delete a header.SMFIF_CHGHDRS
    smfi_chgheaderChange or delete a header.SMFIF_CHGHDRS
    smfi_insheaderInsert a -header into the message.SMFIF_ADDHDRS
    SMFIF_ADDHDRS
    smfi_chgfromChange the envelope sender address.SMFIF_CHGFROM
    xxfi_closeconnection cleanup
    xxfi_negotiateoption negotiattion
    xxfi_negotiateoption negotiation

    The above callbacks should all return one of the following return values, -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. +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.

    Milter 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 -callbacks, an entire connection (during which multiple messages may be -delivered to multiple sets of recipients). +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 callbacks, an entire connection +(during which multiple messages may be delivered +to multiple sets of recipients). xxfi_envrcpt is recipient-oriented. +xxfi_negotiate, xxfi_connect, xxfi_helo and -xxfi_close are connection-oriented. All -other callbacks are message-oriented. +xxfi_close are connection-oriented. +All other callbacks are message-oriented.

    - + @@ -233,8 +242,8 @@ other callbacks are message-oriented. diff --git a/libmilter/docs/design.html b/libmilter/docs/design.html index 294f9a153d08..3636fc8158f5 100644 --- a/libmilter/docs/design.html +++ b/libmilter/docs/design.html @@ -31,11 +31,15 @@ administrator to combine multiple independently-developed filters.

    We expect to see both vendor-supplied, configurable mail filtering applications and a multiplicity of script-like filters designed by and -for MTA administrators. A certain degree of coding sophistication and -domain knowledge on the part of the filter provider is assumed. This -allows filters to exercise fine-grained control at the SMTP level. +for MTA administrators. +A certain degree of coding sophistication and +domain knowledge on the part of the filter provider is assumed. +This allows filters to exercise fine-grained control at the SMTP level. However, as will be seen in the example, many filtering applications -can be written with relatively little protocol knowledge. +can be written with relatively little protocol knowledge, +but a basic understanding (e.g., as documented in RFC 5321: +The dialog is purposely lock-step, one-at-a-time) +is necessary.

    Given these expectations, the API is designed to achieve the following diff --git a/libmilter/docs/index.html b/libmilter/docs/index.html index 57d9ebc6d74d..90df444f6265 100644 --- a/libmilter/docs/index.html +++ b/libmilter/docs/index.html @@ -10,7 +10,7 @@ $Id: index.html,v 1.14 2013-11-22 20:51:39 ca Exp $

    Filtering Mail with Sendmail

    +then the filter is simply terminated, i.e., +neither the +xxfi_abort callback +nor the +xxfi_close callback +is invoked.
    -Copyright (c) 2000, 2001, 2003, 2006 Proofpoint, Inc. and its suppliers. +Copyright (c) 2000, 2001, 2003, 2006, 2018 Proofpoint, Inc. and its suppliers. All rights reserved.
    By using this file, you agree to the terms and conditions set diff --git a/libmilter/docs/sample.html b/libmilter/docs/sample.html index de8d58947a39..b470ae390eee 100644 --- a/libmilter/docs/sample.html +++ b/libmilter/docs/sample.html @@ -187,7 +187,7 @@ sfsistat ++argc; /* log this recipient */ - if (reject != NULL && rcptaddr != NULL && + if (reject != NULL && rcptaddr != NULL && (strcasecmp(rcptaddr, reject) == 0)) { if (fprintf(priv->mlfi_fp, "RCPT %s -- REJECTED\n", @@ -298,7 +298,7 @@ mlfi_cleanup(ctx, ok) return rstat; /* close the archive file */ - if (priv->mlfi_fp != NULL && fclose(priv->mlfi_fp) == EOF) + if (priv->mlfi_fp != NULL && fclose(priv->mlfi_fp) == EOF) { /* failed; we have to wait until later */ fprintf(stderr, "Couldn't close archive file %s: %s\n", diff --git a/libmilter/docs/smfi_addheader.html b/libmilter/docs/smfi_addheader.html index e58c8d713c60..fff4dc7fe6fe 100644 --- a/libmilter/docs/smfi_addheader.html +++ b/libmilter/docs/smfi_addheader.html @@ -32,6 +32,7 @@ Add a header to the current message.
    Return valueDescription
    SMFIS_CONTINUESMFIS_CONTINUE Continue processing the current connection, message, or recipient.
    SMFIS_REJECT For a connection-oriented routine, reject this connection; call xxfi_close.
    - For a message-oriented routine (except + For a message-oriented routine (except xxfi_abort), reject this message.
    For a recipient-oriented routine, reject the current recipient (but continue processing the current message).
    SMFIS_TEMPFAIL Return a temporary failure, i.e., the corresponding SMTP command will return an appropriate 4xx status code. - For a message-oriented routine (except xxfi_envfrom), fail for this message.
    - For a connection-oriented routine, fail for this connection; call xxfi_close.
    + For a message-oriented routine (except xxfi_envfrom), fail for this message.
    + For a connection-oriented routine, fail for this connection; call xxfi_close.
    For a recipient-oriented routine, only fail for the current recipient; continue message processing.
    Adds a header to the current message.
    +

    ARGUMENTS @@ -45,21 +46,21 @@ Add a header to the current message.
    headerv The header value to be added, a non-NULL, null-terminated string. - This may be the empty string. + This may be the empty string.
    -RETURN VALUES +RETURN VALUES smfi_addheader returns MI_FAILURE if:

    • headerf or headerv is NULL.
    • Adding headers in the current connection state is invalid.
    • Memory allocation fails.
    • A network error occurs. -
    • SMFIF_ADDHDRS was not set when smfi_register was called. +
    • SMFIF_ADDHDRS is not set.
    Otherwise, it returns MI_SUCCESS. @@ -67,14 +68,13 @@ Otherwise, it returns MI_SUCCESS. -NOTES +NOTES
    • smfi_addheader does not change a message's existing headers. To change a header's current value, use smfi_chgheader. -
    • A filter which calls smfi_addheader must have set the SMFIF_ADDHDRS - flag in the smfiDesc_str passed to - smfi_register. +
    • A filter which calls smfi_addheader must have set the + SMFIF_ADDHDRS flag.
    • For smfi_addheader, filter order is important. Later filters will see the header changes made by earlier ones.
    • Neither the name nor the value of the header is checked for @@ -101,7 +101,7 @@ To change a header's current value, use -EXAMPLE +EXAMPLE
      diff --git a/libmilter/docs/smfi_addrcpt.html b/libmilter/docs/smfi_addrcpt.html
      index 42014bf1d821..81eecaf0069e 100644
      --- a/libmilter/docs/smfi_addrcpt.html
      +++ b/libmilter/docs/smfi_addrcpt.html
      @@ -31,6 +31,7 @@ Add a recipient for the current message.
       Add a recipient to the message envelope.
       
       
      +
       
       
       ARGUMENTS
      @@ -47,13 +48,13 @@ Add a recipient for the current message.
       
       
       
      -RETURN VALUES 
      +RETURN VALUES
       
       smfi_addrcpt will fail and return MI_FAILURE if:
       
      • rcpt is NULL.
      • Adding recipients in the current connection state is invalid.
      • A network error occurs. -
      • SMFIF_ADDRCPT was not set when smfi_register was called. +
      • SMFIF_ADDRCPT is not set.
      Otherwise, it will return MI_SUCCESS. @@ -61,11 +62,10 @@ Otherwise, it will return MI_SUCCESS. -NOTES +NOTES -A filter which calls smfi_addrcpt must have set the SMFIF_ADDRCPT flag -in the smfiDesc_str passed to -smfi_register. +A filter which calls smfi_addrcpt must have set the +SMFIF_ADDRCPT flag. diff --git a/libmilter/docs/smfi_addrcpt_par.html b/libmilter/docs/smfi_addrcpt_par.html index 0176e69e0617..9d72cd6ca82b 100644 --- a/libmilter/docs/smfi_addrcpt_par.html +++ b/libmilter/docs/smfi_addrcpt_par.html @@ -32,6 +32,7 @@ Add a recipient for the current message including ESMTP arguments. Add a recipient to the message envelope. + ARGUMENTS @@ -51,14 +52,13 @@ Add a recipient for the current message including ESMTP arguments. -RETURN VALUES +RETURN VALUES -smfi_addrcpt will fail and return MI_FAILURE if: +smfi_addrcpt_par will fail and return MI_FAILURE if:
      • rcpt is NULL.
      • Adding recipients in the current connection state is invalid.
      • A network error occurs. -
      • SMFIF_ADDRCPT_PAR was not set when - smfi_register was called. +
      • SMFIF_ADDRCPT_PAR is not set._PAR
      Otherwise, it will return MI_SUCCESS. @@ -66,11 +66,10 @@ Otherwise, it will return MI_SUCCESS. -NOTES +NOTES -A filter which calls smfi_addrcpt must have set the SMFIF_ADDRCPT_PAR flag -in the smfiDesc_str passed to -smfi_register. +A filter which calls smfi_addrcpt_par must have set the +SMFIF_ADDRCPT_PAR flag. diff --git a/libmilter/docs/smfi_chgfrom.html b/libmilter/docs/smfi_chgfrom.html index a107ee9ebebc..0cfe7b6fc800 100644 --- a/libmilter/docs/smfi_chgfrom.html +++ b/libmilter/docs/smfi_chgfrom.html @@ -32,6 +32,7 @@ Change the envelope sender (MAIL From) of the current message. Change the envelope sender (MAIL From) of the current message. + ARGUMENTS @@ -51,13 +52,13 @@ Change the envelope sender (MAIL From) of the current message. -RETURN VALUES +RETURN VALUES smfi_chgfrom will fail and return MI_FAILURE if:
      • mail is NULL.
      • Changing the sender in the current connection state is invalid.
      • A network error occurs. -
      • SMFIF_CHGFROM was not set when smfi_register was called. +
      • SMFIF_CHGFROM is not set.
      Otherwise, it will return MI_SUCCESS. @@ -65,11 +66,10 @@ Otherwise, it will return MI_SUCCESS. -NOTES +NOTES -A filter which calls smfi_chgfrom must have set the SMFIF_CHGFROM flag -in the smfiDesc_str passed to -smfi_register. +A filter which calls smfi_chgfrom must have set the +SMFIF_CHGFROM flag.
      Even though all ESMTP arguments could be set via this call, it does not make sense to do so for many of them, diff --git a/libmilter/docs/smfi_chgheader.html b/libmilter/docs/smfi_chgheader.html index b3004032e4b8..de132f442b5b 100644 --- a/libmilter/docs/smfi_chgheader.html +++ b/libmilter/docs/smfi_chgheader.html @@ -33,6 +33,7 @@ Change or delete a message header. Changes a header's value for the current message. + ARGUMENTS @@ -55,7 +56,7 @@ Change or delete a message header. -RETURN VALUES +RETURN VALUES smfi_chgheader will return MI_FAILURE if @@ -63,17 +64,18 @@ smfi_chgheader will return MI_FAILURE if
    • Modifying headers in the current connection state is invalid.
    • Memory allocation fails.
    • A network error occurs. -
    • SMFIF_CHGHDRS was not set when smfi_register was called. +
    • SMFIF_CHGHDRS is not set.
    Otherwise, it returns MI_SUCCESS. - + -NOTES +NOTES
    • While smfi_chgheader may be used to add new headers, it is more efficient and far safer to use smfi_addheader. -
    • A filter which calls smfi_chgheader must have set the SMFIF_CHGHDRS flag in the smfiDesc_str passed to smfi_register. +
    • A filter which calls smfi_chgheader must have set the + SMFIF_CHGHDRS flag.
    • For smfi_chgheader, filter order is important. Later filters will see the header changes made by earlier ones.
    • Neither the name nor the value of the header is checked for standards compliance. However, each line of the header must be under diff --git a/libmilter/docs/smfi_delrcpt.html b/libmilter/docs/smfi_delrcpt.html index ec1412bd3778..bd42a7319e56 100644 --- a/libmilter/docs/smfi_delrcpt.html +++ b/libmilter/docs/smfi_delrcpt.html @@ -31,6 +31,7 @@ Remove a recipient from the current message's envelope. smfi_delrcpt removes the named recipient from the current message's envelope. + ARGUMENTS @@ -47,14 +48,14 @@ Remove a recipient from the current message's envelope. -RETURN VALUES +RETURN VALUES smfi_delrcpt will fail and return MI_FAILURE if:
      • rcpt is NULL.
      • Deleting recipients in the current connection state is invalid.
      • A network error occurs. -
      • SMFIF_DELRCPT was not set when smfi_register was called. +
      • SMFIF_DELRCPT is not set.
      Otherwise, it will return MI_SUCCESS @@ -62,9 +63,13 @@ Otherwise, it will return MI_SUCCESS -NOTES +NOTES +
    • The addresses to be removed must match exactly. For example, an address and its expanded form do not match. +
    • +A filter which calls smfi_delrcpt must have set the +SMFIF_DELRCPT flag. diff --git a/libmilter/docs/smfi_getpriv.html b/libmilter/docs/smfi_getpriv.html index 783d6402ef45..5ed8a22c2c60 100644 --- a/libmilter/docs/smfi_getpriv.html +++ b/libmilter/docs/smfi_getpriv.html @@ -30,6 +30,7 @@ Get the connection-specific data pointer for this connection. None. + ARGUMENTS @@ -43,7 +44,7 @@ Get the connection-specific data pointer for this connection. -RETURN VALUES +RETURN VALUES smfi_getpriv returns the private data pointer stored by a prior call to smfi_setpriv, or NULL if none has been set. diff --git a/libmilter/docs/smfi_getsymval.html b/libmilter/docs/smfi_getsymval.html index dff8dc638c84..7e3e4d559434 100644 --- a/libmilter/docs/smfi_getsymval.html +++ b/libmilter/docs/smfi_getsymval.html @@ -31,6 +31,7 @@ Get the value of a sendmail macro. None. + ARGUMENTS @@ -51,14 +52,14 @@ Get the value of a sendmail macro. -RETURN VALUES +RETURN VALUES smfi_getsymval returns the value of the given macro as a null-terminated string, or NULL if the macro is not defined. -NOTES +NOTES By default, the following macros are valid in the given contexts: diff --git a/libmilter/docs/smfi_insheader.html b/libmilter/docs/smfi_insheader.html index 3f568864835c..7759dc90c1a5 100644 --- a/libmilter/docs/smfi_insheader.html +++ b/libmilter/docs/smfi_insheader.html @@ -33,6 +33,7 @@ Prepend a header to the current message. Prepends a header to the current message. + ARGUMENTS @@ -49,21 +50,21 @@ Prepend a header to the current message. The header name, a non-NULL, null-terminated string. headerv - The header value to be added, a non-NULL, null-terminated string. This may be the empty string. + The header value to be added, a non-NULL, null-terminated string. This may be the empty string. -RETURN VALUES +RETURN VALUES smfi_insheader returns MI_FAILURE if:
      • headerf or headerv is NULL.
      • Adding headers in the current connection state is invalid.
      • Memory allocation fails.
      • A network error occurs. -
      • SMFIF_ADDHDRS was not set when smfi_register was called. +
      • SMFIF_ADDHDRS is not set.
      Otherwise, it returns MI_SUCCESS. @@ -71,15 +72,15 @@ Otherwise, it returns MI_SUCCESS. -NOTES +NOTES
      • smfi_insheader does not change a message's existing headers. To change a header's current value, use smfi_chgheader. -
      • A filter which calls smfi_insheader must have set the SMFIF_ADDHDRS - flag in the smfiDesc_str passed to - smfi_register. +
      • A filter which calls smfi_insheader must have set the + SMFIF_ADDHDRS + flag.
      • For smfi_insheader, filter order is important. Later filters will see the header changes made by earlier ones.
      • A filter will receive only headers that have been sent @@ -122,7 +123,7 @@ Otherwise, it returns MI_SUCCESS. -EXAMPLE +EXAMPLE
        diff --git a/libmilter/docs/smfi_main.html b/libmilter/docs/smfi_main.html
        index cb63f96bc5d0..87228fc166d0 100644
        --- a/libmilter/docs/smfi_main.html
        +++ b/libmilter/docs/smfi_main.html
        @@ -29,10 +29,11 @@ Hand control to libmilter event loop.
         smfi_main hands control to the Milter event loop.
         
         
        +
         
         
         
        -RETURN VALUES 
        +RETURN VALUES
         
         smfi_main will return MI_FAILURE if it fails to establish a connection.  This may occur for any of a variety of reasons (e.g. invalid address passed to smfi_setconn).  The reason for the failure will be logged.  Otherwise, smfi_main will return MI_SUCCESS.
         
        diff --git a/libmilter/docs/smfi_opensocket.html b/libmilter/docs/smfi_opensocket.html
        index d4f7e3a705ed..7b9e49df97af 100644
        --- a/libmilter/docs/smfi_opensocket.html
        +++ b/libmilter/docs/smfi_opensocket.html
        @@ -34,13 +34,14 @@ but before calling smfi_main().
         smfi_opensocket attempts to create the socket specified previously by
         a call to smfi_setconn() which will be the interface between MTAs
         and the filter.
        -This allows the calling application to ensure that the
        -socket can be created.
        +This allows the calling application to ensure that the socket can be created.
         If this is not called,
        -smfi_main() will do so implicitly.
        +smfi_main() will create the socket implicitly
        +(without removing a potentially existing UNIX domain socket).
         
         
         
        +
         
         
         ARGUMENTS
        @@ -56,7 +57,7 @@ If this is not called,
         
         
         
        -RETURN VALUES 
        +RETURN VALUES
         
         smfi_opensocket will fail and return MI_FAILURE if:
         
          diff --git a/libmilter/docs/smfi_progress.html b/libmilter/docs/smfi_progress.html index 2b87b012422f..53205ad5dc31 100644 --- a/libmilter/docs/smfi_progress.html +++ b/libmilter/docs/smfi_progress.html @@ -31,6 +31,7 @@ Notify the MTA that an operation is still in progress. on a message, causing the MTA to re-start its timeouts. + ARGUMENTS @@ -44,7 +45,7 @@ on a message, causing the MTA to re-start its timeouts. -RETURN VALUES +RETURN VALUES smfi_progress will fail and return MI_FAILURE if:
            diff --git a/libmilter/docs/smfi_quarantine.html b/libmilter/docs/smfi_quarantine.html index b63da2d6c50f..6c954c44036e 100644 --- a/libmilter/docs/smfi_quarantine.html +++ b/libmilter/docs/smfi_quarantine.html @@ -31,6 +31,7 @@ Quarantine the message using the given reason. smfi_quarantine quarantines the message using the given reason. + ARGUMENTS @@ -47,13 +48,13 @@ Quarantine the message using the given reason. -RETURN VALUES +RETURN VALUES smfi_quarantine will fail and return MI_FAILURE if: Otherwise, it will return MI_SUCCESS diff --git a/libmilter/docs/smfi_register.html b/libmilter/docs/smfi_register.html index 30ab75cae497..5c61beefc1a5 100644 --- a/libmilter/docs/smfi_register.html +++ b/libmilter/docs/smfi_register.html @@ -37,6 +37,7 @@ is obeyed. + ARGUMENTS @@ -96,12 +97,12 @@ simply returning SMFIS_CONTINUE. -RETURN VALUES +RETURN VALUES smfi_register may return MI_FAILURE for any of the following reasons:
              -
            • memory allocation failed. +
            • memory allocation failed.
            • incompatible version or illegal flags value.
            @@ -110,7 +111,7 @@ smfi_register may return MI_FAILURE for any of the following reasons: -NOTES +NOTES The xxfi_flags @@ -120,7 +121,7 @@ the following values, describing the actions the filter may take: FlagDescription - SMFIF_ADDHDRS + SMFIF_ADDHDRS This filter may add headers. @@ -128,7 +129,7 @@ the following values, describing the actions the filter may take: - SMFIF_CHGHDRS + SMFIF_CHGHDRS This filter may @@ -137,7 +138,7 @@ the following values, describing the actions the filter may take: - SMFIF_CHGBODY + SMFIF_CHGBODY This filter may @@ -148,7 +149,7 @@ the following values, describing the actions the filter may take: - SMFIF_ADDRCPT + SMFIF_ADDRCPT This filter may @@ -158,7 +159,7 @@ the following values, describing the actions the filter may take: - SMFIF_ADDRCPT_PAR + SMFIF_ADDRCPT_PAR This filter may @@ -167,7 +168,7 @@ the following values, describing the actions the filter may take: - SMFIF_DELRCPT + SMFIF_DELRCPT This filter may @@ -176,7 +177,7 @@ the following values, describing the actions the filter may take: - SMFIF_QUARANTINE + SMFIF_QUARANTINE This filter may @@ -186,7 +187,7 @@ the following values, describing the actions the filter may take: - SMFIF_CHGFROM + SMFIF_CHGFROM This filter may @@ -196,7 +197,7 @@ the following values, describing the actions the filter may take: - SMFIF_SETSYMLIST + SMFIF_SETSYMLIST This filter can diff --git a/libmilter/docs/smfi_replacebody.html b/libmilter/docs/smfi_replacebody.html index 4a5117964a33..0842298bc62c 100644 --- a/libmilter/docs/smfi_replacebody.html +++ b/libmilter/docs/smfi_replacebody.html @@ -29,12 +29,13 @@ Replace message-body data. Effects -smfi_replacebody replaces the body of the current message. If called -more than once, subsequent calls result in data being appended to the new +smfi_replacebody replaces the body of the current message. If called +more than once, subsequent calls result in data being appended to the new body. + ARGUMENTS @@ -54,14 +55,14 @@ body. -RETURN VALUES +RETURN VALUES smfi_replacebody fails and returns MI_FAILURE if:
            • bodyp == NULL and bodylen > 0.
            • Changing the body in the current connection state is invalid.
            • A network error occurs. -
            • SMFIF_CHGBODY was not set when smfi_register was called. +
            • SMFIF_CHGBODY is not set.
            Otherwise, it will return MI_SUCCESS. @@ -69,12 +70,14 @@ Otherwise, it will return MI_SUCCESS. -NOTES +NOTES
              -
            • Since the message body may be very large, setting SMFIF_CHGBODY may significantly affect filter performance. +
            • Since the message body may be very large, calling smfi_replacebody may significantly affect filter performance.
            • If a filter sets SMFIF_CHGBODY but does not call smfi_replacebody, the original body remains unchanged.
            • For smfi_replacebody, filter order is important. Later filters will see the new body contents created by earlier ones. +
            • A filter which calls smfi_replacebody must have set the + SMFIF_CHGBODY flag.
            diff --git a/libmilter/docs/smfi_setbacklog.html b/libmilter/docs/smfi_setbacklog.html index 961285555442..f025009db7ed 100644 --- a/libmilter/docs/smfi_setbacklog.html +++ b/libmilter/docs/smfi_setbacklog.html @@ -31,6 +31,7 @@ Set the filter's listen(2) backlog value. If smfi_setbacklog is not called, the operating system default is used. + ARGUMENTS @@ -44,7 +45,7 @@ If smfi_setbacklog is not called, the operating system default is used. -RETURN VALUES +RETURN VALUES smfi_setbacklog returns MI_FAILURE if obacklog is less than or equal to zero. diff --git a/libmilter/docs/smfi_setconn.html b/libmilter/docs/smfi_setconn.html index eba7c5b7e52e..8897f5aca5a7 100644 --- a/libmilter/docs/smfi_setconn.html +++ b/libmilter/docs/smfi_setconn.html @@ -30,14 +30,15 @@ Set the socket through which this filter should communicate with sendmail. Sets the socket through which the filter communicates with sendmail. + ARGUMENTS - - + - +
            ArgumentDescription
            oconnThe address of the desired communication socket. - The address should be a NULL-terminated string in "proto:address" + The address of the desired communication socket. + The address should be a NULL-terminated string in "proto:address" format:
            • {unix|local}:/path/to/file -- A named pipe. @@ -50,7 +51,7 @@ Set the socket through which this filter should communicate with sendmail.
            RETURN VALUESRETURN VALUES smfi_setconn will not fail on an invalid address. The failure will only be detected in smfi_main. @@ -60,7 +61,7 @@ due to a lack of memory.
            NOTESNOTES
              diff --git a/libmilter/docs/smfi_setdbg.html b/libmilter/docs/smfi_setdbg.html index 58d519935e20..e7498391105b 100644 --- a/libmilter/docs/smfi_setdbg.html +++ b/libmilter/docs/smfi_setdbg.html @@ -34,6 +34,7 @@ A level of zero turns off debugging. The greater the current, highest, useful value.
            + ARGUMENTS @@ -47,7 +48,7 @@ the current, highest, useful value. -RETURN VALUES +RETURN VALUES smfi_setdbg returns MI_SUCCESS by default. diff --git a/libmilter/docs/smfi_setmlreply.html b/libmilter/docs/smfi_setmlreply.html index e9118838fd39..3f36e5296430 100644 --- a/libmilter/docs/smfi_setmlreply.html +++ b/libmilter/docs/smfi_setmlreply.html @@ -38,6 +38,7 @@ This code will be used on subsequent error replies resulting from actions taken by this filter. + ARGUMENTS @@ -65,7 +66,7 @@ taken by this filter. -RETURN VALUES +RETURN VALUES For example, the code:
            @@ -86,13 +87,13 @@ For example, the code:
            -RETURN VALUES +RETURN VALUES smfi_setmlreply will fail and return MI_FAILURE if:
            • The rcode or xcode argument is invalid.
            • A memory-allocation failure occurs. -
            • If any text line contains a carraige return or line feed. +
            • If any text line contains a carriage return or line feed.
            • The length of any text line is more than MAXREPLYLEN (980).
            • More than 32 lines of text replies are given.
            @@ -102,7 +103,7 @@ Otherwise, it return MI_SUCCESS. -NOTES +NOTES
            • Values passed to smfi_setmlreply are not checked for standards compliance. @@ -112,7 +113,7 @@ 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 printf(3)). -
            • For details about reply codes and their meanings, please see RFC's +
            • For details about reply codes and their meanings, please see RFC's 821/ 2821 and diff --git a/libmilter/docs/smfi_setpriv.html b/libmilter/docs/smfi_setpriv.html index 5b03456f47aa..a9cb37e598c9 100644 --- a/libmilter/docs/smfi_setpriv.html +++ b/libmilter/docs/smfi_setpriv.html @@ -31,6 +31,7 @@ Set the private data pointer for this connection. Sets the private data pointer for the context ctx. + ARGUMENTS @@ -47,14 +48,14 @@ Set the private data pointer for this connection. -RETURN VALUES +RETURN VALUES smfi_setpriv returns MI_FAILURE if ctx is an invalid context. Otherwise, it returns MI_SUCCESS. -NOTES +NOTES There is only one private data pointer per connection; multiple calls to smfi_setpriv with different values will cause previous values diff --git a/libmilter/docs/smfi_setreply.html b/libmilter/docs/smfi_setreply.html index 21ec5a57d092..615567107a4a 100644 --- a/libmilter/docs/smfi_setreply.html +++ b/libmilter/docs/smfi_setreply.html @@ -31,11 +31,12 @@ other than xxfi_connect. Effects -Directly set the SMTP error reply code for this connection. This code -will be used on subsequent error replies resulting from actions taken by +Directly set the SMTP error reply code for this connection. This code +will be used on subsequent error replies resulting from actions taken by this filter. + ARGUMENTS @@ -61,12 +62,14 @@ this filter. -RETURN VALUES +RETURN VALUES smfi_setreply will fail and return MI_FAILURE if:
              • The rcode or xcode argument is invalid.
              • A memory-allocation failure occurs. +
              • The length of any text line is more than MAXREPLYLEN (980). +
              • The message argument contains a carriage return or line feed.
              Otherwise, it return MI_SUCCESS. @@ -74,7 +77,7 @@ Otherwise, it return MI_SUCCESS. -NOTES +NOTES
              • Values passed to smfi_setreply are not checked for standards compliance. @@ -84,7 +87,7 @@ 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 printf(3)). -
              • For details about reply codes and their meanings, please see RFC's +
              • For details about reply codes and their meanings, please see RFC's 821/ 2821 and diff --git a/libmilter/docs/smfi_setsymlist.html b/libmilter/docs/smfi_setsymlist.html index c270d0b5647b..27bdd8a5f8ed 100644 --- a/libmilter/docs/smfi_setsymlist.html +++ b/libmilter/docs/smfi_setsymlist.html @@ -12,7 +12,7 @@ $Id: smfi_setsymlist.html,v 1.7 2013-11-22 20:51:39 ca Exp $
                 #include <libmilter/mfapi.h>
                 int smfi_setsymlist(
                -        SMFICTX    *ctx, 
                +        SMFICTX    *ctx,
                 	int        stage,
                 	char       *macros
                 );
                @@ -37,6 +37,7 @@ milter wants to receive from the MTA.
                 
                 
                 
                +
                 
                 
                 ARGUMENTS
                @@ -72,7 +73,7 @@ milter wants to receive from the MTA.
                 
                 
                 
                -RETURN VALUES 
                +RETURN VALUES
                 
                 MI_FAILURE is returned if
                 
                  @@ -88,7 +89,7 @@ Otherwise MI_SUCCESS is returned. -NOTES +NOTES There is an internal limit on the number of macros that can be set diff --git a/libmilter/docs/smfi_settimeout.html b/libmilter/docs/smfi_settimeout.html index 35cd51003ae6..aa135618a9d0 100644 --- a/libmilter/docs/smfi_settimeout.html +++ b/libmilter/docs/smfi_settimeout.html @@ -33,6 +33,7 @@ If smfi_settimeout is not called, a default timeout of 7210 seconds is used. + ARGUMENTS @@ -47,24 +48,21 @@ If smfi_settimeout is not called, a default timeout of 7210 seconds is used. -RETURN VALUES +RETURN VALUES smfi_settimeout always returns MI_SUCCESS. -NOTES +NOTES Decreasing the timeout is strongly discouraged and may break the communication with the MTA. Do not decrease this value without making sure that the MTA also uses lower timeouts for communication (with the milter and with the SMTP client). - - - - +
                  diff --git a/libmilter/docs/smfi_stop.html b/libmilter/docs/smfi_stop.html index aa725b9dbc25..c85a20d76ac5 100644 --- a/libmilter/docs/smfi_stop.html +++ b/libmilter/docs/smfi_stop.html @@ -36,6 +36,7 @@ which may then exit or warm-restart. + ARGUMENTS @@ -49,7 +50,7 @@ which may then exit or warm-restart. -RETURN VALUES +RETURN VALUES smfi_stop always returns SMFI_CONTINUE. But note:
                    diff --git a/libmilter/docs/smfi_version.html b/libmilter/docs/smfi_version.html index 64c4a4d8f8ac..f9b7bcb86b0c 100644 --- a/libmilter/docs/smfi_version.html +++ b/libmilter/docs/smfi_version.html @@ -32,6 +32,7 @@ Get the (runtime) version of libmilter. None. + ARGUMENTS diff --git a/libmilter/docs/xxfi_abort.html b/libmilter/docs/xxfi_abort.html index 9ec8f4990737..4e20d0e18d52 100644 --- a/libmilter/docs/xxfi_abort.html +++ b/libmilter/docs/xxfi_abort.html @@ -30,6 +30,7 @@ Handle the current message's being aborted. Do nothing; return SMFIS_CONTINUE. + ARGUMENTS @@ -43,7 +44,7 @@ Handle the current message's being aborted. -NOTES +NOTES
                    • xxfi_abort must reclaim any resources allocated on a per-message diff --git a/libmilter/docs/xxfi_body.html b/libmilter/docs/xxfi_body.html index 811035065874..511eeb3aae68 100644 --- a/libmilter/docs/xxfi_body.html +++ b/libmilter/docs/xxfi_body.html @@ -32,6 +32,7 @@ Handle a piece of a message's body. Do nothing; return SMFIS_CONTINUE. + ARGUMENTS @@ -51,7 +52,7 @@ Handle a piece of a message's body. -NOTES +NOTES
                      • bodyp points to a sequence of bytes. @@ -65,7 +66,7 @@ to work as expected. significantly impact filter performance.
                      • End-of-lines are represented as received from SMTP (normally CR/LF).
                      • Later filters will see body changes made by earlier ones. -
                      • Message bodies may be sent in multiple chunks, with one call to +
                      • Message bodies may be sent in multiple chunks, with one call to xxfi_body per chunk.
                      • Return SMFIS_SKIP diff --git a/libmilter/docs/xxfi_close.html b/libmilter/docs/xxfi_close.html index b5cf2ff237ad..1999d0e3896b 100644 --- a/libmilter/docs/xxfi_close.html +++ b/libmilter/docs/xxfi_close.html @@ -30,6 +30,7 @@ The current connection is being closed. Do nothing; return SMFIS_CONTINUE. + ARGUMENTS @@ -43,7 +44,7 @@ The current connection is being closed. -NOTES +NOTES
                        • xxfi_close may be called "out-of-order", i.e. before even the @@ -59,7 +60,7 @@ xxfi_close code. In particular, it is incorrect to assume the private context pointer will be something other than NULL in this callback.
                        • xxfi_close is called on close even if the previous mail -transaction was aborted. +transaction was aborted.
                        • xxfi_close is responsible for freeing any resources allocated on a per-connection basis.
                        • Since the connection is already closing, the return value is diff --git a/libmilter/docs/xxfi_connect.html b/libmilter/docs/xxfi_connect.html index 29a2c911153e..c84f9f281738 100644 --- a/libmilter/docs/xxfi_connect.html +++ b/libmilter/docs/xxfi_connect.html @@ -12,7 +12,7 @@ $Id: xxfi_connect.html,v 1.20 2013-11-22 20:51:39 ca Exp $
                           #include <libmilter/mfapi.h>
                           sfsistat (*xxfi_connect)(
                          -        SMFICTX    *ctx, 
                          +        SMFICTX    *ctx,
                                   char       *hostname,
                                   _SOCK_ADDR *hostaddr);
                           
                          @@ -29,16 +29,18 @@ sfsistat (*xxfi_connect)( Do nothing; return SMFIS_CONTINUE. + + + ARGUMENTS @@ -103,7 +105,7 @@ is passed to smfi_register(). --> - + diff --git a/libmilter/docs/xxfi_data.html b/libmilter/docs/xxfi_data.html index 7dedb4183097..f8b715b5675e 100644 --- a/libmilter/docs/xxfi_data.html +++ b/libmilter/docs/xxfi_data.html @@ -23,13 +23,14 @@ Handle the DATA command.
                          NOTESNOTES If an earlier filter rejects the connection in its xxfi_connect() routine, this filter's xxfi_connect() will not be called.
                          -
                          Called Whenxxfi_data is called when the client uses the DATA command. +xxfi_data is called when the client uses the DATA command.
                          Default Behavior Do nothing; return SMFIS_CONTINUE.
                          + ARGUMENTS @@ -67,11 +68,11 @@ Handle the DATA command. - + -NOTES +NOTES For more details on ESMTP responses, please see RFC 1869. diff --git a/libmilter/docs/xxfi_envfrom.html b/libmilter/docs/xxfi_envfrom.html index 24811e14a6c1..b553b4d9fd63 100644 --- a/libmilter/docs/xxfi_envfrom.html +++ b/libmilter/docs/xxfi_envfrom.html @@ -33,6 +33,7 @@ before xxfi_envrcpt. Do nothing; return SMFIS_CONTINUE. + ARGUMENTS @@ -75,11 +76,11 @@ before xxfi_envrcpt. - + -NOTES +NOTES For more details on ESMTP responses, please see RFC 1869. diff --git a/libmilter/docs/xxfi_envrcpt.html b/libmilter/docs/xxfi_envrcpt.html index 9503ab98c616..d15b70fdf187 100644 --- a/libmilter/docs/xxfi_envrcpt.html +++ b/libmilter/docs/xxfi_envrcpt.html @@ -31,6 +31,7 @@ Handle the envelope RCPT command. Do nothing; return SMFIS_CONTINUE. + ARGUMENTS @@ -54,7 +55,7 @@ Handle the envelope RCPT command. Return valueDescription SMFIS_TEMPFAIL - Temporarily fail for this particular recipient; further recipients + Temporarily fail for this particular recipient; further recipients may still be sent. xxfi_abort is not called. @@ -76,11 +77,11 @@ Handle the envelope RCPT command. - + -NOTES +NOTES For more details on ESMTP responses, please see RFC 1869. diff --git a/libmilter/docs/xxfi_eoh.html b/libmilter/docs/xxfi_eoh.html index 33f5fc004983..4be41d758bc3 100644 --- a/libmilter/docs/xxfi_eoh.html +++ b/libmilter/docs/xxfi_eoh.html @@ -31,6 +31,7 @@ Handle the end of message headers. Do nothing; return SMFIS_CONTINUE. + ARGUMENTS diff --git a/libmilter/docs/xxfi_eom.html b/libmilter/docs/xxfi_eom.html index d473777e4b13..9bf040c02ad4 100644 --- a/libmilter/docs/xxfi_eom.html +++ b/libmilter/docs/xxfi_eom.html @@ -30,6 +30,7 @@ End of a message. Do nothing; return SMFIS_CONTINUE. + ARGUMENTS @@ -43,7 +44,7 @@ End of a message. -NOTES +NOTES A filter is required to make all its modifications to the message headers, body, and envelope in xxfi_eom. Modifications are made via the smfi_* routines. diff --git a/libmilter/docs/xxfi_header.html b/libmilter/docs/xxfi_header.html index 16e814b47c48..bccada7e524f 100644 --- a/libmilter/docs/xxfi_header.html +++ b/libmilter/docs/xxfi_header.html @@ -32,6 +32,7 @@ Handle a message header. Do nothing; return SMFIS_CONTINUE. + ARGUMENTS @@ -55,7 +56,7 @@ Handle a message header. -NOTES +NOTES
                          • Starting with sendmail 8.14, spaces after the colon in a header @@ -90,7 +91,7 @@ it was:
                          • Later filters will see header changes/additions made by earlier ones. -
                          • For much more detail about header format, please see +
                          • For much more detail about header format, please see RFC 822 and RFC 2822 diff --git a/libmilter/docs/xxfi_helo.html b/libmilter/docs/xxfi_helo.html index 716eb9290f17..8c4309cd5bf2 100644 --- a/libmilter/docs/xxfi_helo.html +++ b/libmilter/docs/xxfi_helo.html @@ -12,7 +12,7 @@ $Id: xxfi_helo.html,v 1.13 2013-11-22 20:51:39 ca Exp $
                             #include <libmilter/mfapi.h>
                             sfsistat (*xxfi_helo)(
                            -	SMFICTX *ctx, 
                            +	SMFICTX *ctx,
                             	char *helohost
                             );
                             
                            @@ -34,6 +34,7 @@ some restrictions can be imposed by the MTA configuration. Do nothing; return SMFIS_CONTINUE. + ARGUMENTS diff --git a/libmilter/docs/xxfi_negotiate.html b/libmilter/docs/xxfi_negotiate.html index b0502f47a711..e858a39c0e98 100644 --- a/libmilter/docs/xxfi_negotiate.html +++ b/libmilter/docs/xxfi_negotiate.html @@ -13,7 +13,7 @@ $Id: xxfi_negotiate.html,v 1.24 2013-11-22 20:51:39 ca Exp $ #include <libmilter/mfapi.h> #include <libmilter/mfdef.h> sfsistat (*xxfi_negotiate)( - SMFICTX *ctx, + SMFICTX *ctx, unsigned long f0, unsigned long f1, unsigned long f2, @@ -36,6 +36,8 @@ sfsistat (*xxfi_negotiate)( Return SMFIS_ALL_OPTS to change nothing. + + ARGUMENTS @@ -48,6 +50,7 @@ sfsistat (*xxfi_negotiate)( @@ -59,6 +62,7 @@ sfsistat (*xxfi_negotiate)( @@ -101,11 +105,11 @@ as they will be ignored.
                            f1 the protocol steps offered by the MTA. +
                            f2 for future extensions.
                            pf1 the protocol steps requested by the milter. +
                            pf2 for future extensions.
                            - + -NOTES +NOTES This function allows a milter to dynamically determine and request operations and actions during startup. In previous versions, the actions (f0) were fixed in the @@ -140,6 +144,11 @@ By setting this bit, a milter can request that the MTA should also send RCPT commands that have been rejected because the user is unknown (or similar reasons), but not those which have been rejected because of syntax errors etc. + If a milter requests this protocol step, then it should check the macro {rcpt_mailer}: @@ -204,11 +213,12 @@ space to headers when they are added, inserted, or changed.
                          • The MTA can be instructed not to send information about various SMTP stages, these flags start with: SMFIP_NO*. +Setting any of these flags affects all connections.
                            • SMFIP_NOCONNECT: xxfi_connect()
                            • SMFIP_NOHELO: -xxfi_header() +xxfi_helo()
                            • SMFIP_NOMAIL: xxfi_envfrom()
                            • SMFIP_NORCPT: diff --git a/libmilter/docs/xxfi_unknown.html b/libmilter/docs/xxfi_unknown.html index 38c1c3d47166..94e4f39d9592 100644 --- a/libmilter/docs/xxfi_unknown.html +++ b/libmilter/docs/xxfi_unknown.html @@ -25,13 +25,14 @@ Handle unknown and unimplemented SMTP commands. Called When xxfi_unknown is called when the client uses an SMTP command -that is either unknown or not implemented by the MTA. +that is either unknown or not implemented by the MTA. Default Behavior Do nothing; return SMFIS_CONTINUE. + ARGUMENTS @@ -62,13 +63,13 @@ that is either unknown or not implemented by the MTA. - + -NOTES +NOTES The SMTP command will always be rejected by the server, -it is only possible to return a different error code. +it is only possible to return a different error code. diff --git a/libmilter/engine.c b/libmilter/engine.c index 808ffdbf608a..2619395a6eb1 100644 --- a/libmilter/engine.c +++ b/libmilter/engine.c @@ -15,7 +15,7 @@ SM_RCSID("@(#)$Id: engine.c,v 8.168 2013-11-22 20:51:36 ca Exp $") #if NETINET || NETINET6 # include -#endif /* NETINET || NETINET6 */ +#endif /* generic argument for functions in the command table */ struct arg_struct @@ -72,17 +72,17 @@ ERROR: do not compile with CI_LAST < CI_EOM #if CI_LAST < CI_EOH ERROR: do not compile with CI_LAST < CI_EOH #endif -#if CI_LAST < CI_ENVRCPT -ERROR: do not compile with CI_LAST < CI_ENVRCPT +#if CI_LAST < CI_RCPT +ERROR: do not compile with CI_LAST < CI_RCPT #endif -#if CI_LAST < CI_ENVFROM -ERROR: do not compile with CI_LAST < CI_ENVFROM +#if CI_LAST < CI_MAIL +ERROR: do not compile with CI_LAST < CI_MAIL #endif #if CI_LAST < CI_HELO ERROR: do not compile with CI_LAST < CI_HELO #endif -#if CI_LAST < CI_CONNECT -ERROR: do not compile with CI_LAST < CI_CONNECT +#if CI_LAST < CI_CONN +ERROR: do not compile with CI_LAST < CI_CONN #endif #if CI_LAST >= MAX_MACROS_ENTRIES ERROR: do not compile with CI_LAST >= MAX_MACROS_ENTRIES @@ -112,7 +112,7 @@ static void mi_clr_symlist __P((SMFICTX_PTR)); #if _FFR_WORKERS_POOL static bool mi_rd_socket_ready __P((int)); -#endif /* _FFR_WORKERS_POOL */ +#endif /* states */ #define ST_NONE (-1) @@ -458,7 +458,7 @@ mi_engine(ctx) if (ctx->ctx_state != ST_QUIT #if _FFR_WORKERS_POOL && ret != MI_CONTINUE -#endif /* _FFR_WORKERS_POOL */ +#endif ) { if ((fi_close = ctx->ctx_smfi->xxfi_close) != NULL) @@ -468,7 +468,7 @@ mi_engine(ctx) free(buf); #if !_FFR_WORKERS_POOL mi_clr_macros(ctx, 0); -#endif /* _FFR_WORKERS_POOL */ +#endif return ret; } @@ -628,7 +628,7 @@ sendreply(r, sd, timeout_ptr, ctx) { /* milter said it wouldn't reply, but it lied... */ smi_log(SMI_LOG_ERR, - "%s: milter claimed not to reply in state %d but did anyway %d\n", + "%s: milter claimed not to reply in state %d but did anyway %d", ctx->ctx_smfi->xxfi_name, ctx->ctx_state, r); @@ -703,8 +703,12 @@ sendreply(r, sd, timeout_ptr, ctx) (void *) &v, MILTER_LEN_BYTES); len = milter_addsymlist(ctx, buf, &buffer); if (buffer != NULL) + { ret = mi_wr_cmd(sd, timeout_ptr, SMFIC_OPTNEG, buffer, len); + if (buffer != buf) + free(buffer); + } else ret = MI_FAILURE; } @@ -843,7 +847,7 @@ st_optionneg(g) SMFICTX_PTR ctx; #if _FFR_MILTER_CHECK bool testmode = false; -#endif /* _FFR_MILTER_CHECK */ +#endif int (*fi_negotiate) __P((SMFICTX *, unsigned long, unsigned long, unsigned long, unsigned long, @@ -1000,7 +1004,7 @@ st_optionneg(g) testmode = bitset(SMFIP_TEST, m_pflags); if (testmode) m_pflags &= ~SMFIP_TEST; -#endif /* _FFR_MILTER_CHECK */ +#endif /* ** Types of protocol flags (pflags): @@ -1100,7 +1104,7 @@ st_optionneg(g) { /* ** Older MTAs do not support some protocol steps. - ** As this protocol is a bit "wierd" (it asks for steps + ** As this protocol is a bit "weird" (it asks for steps ** NOT to be taken/sent) we have to check whether we ** should turn off those "negative" requests. ** Currently these are only SMFIP_NODATA and SMFIP_NOUNKNOWN. @@ -1186,7 +1190,7 @@ st_connectinfo(g) s = g->a_buf; i = 0; l = g->a_len; - while (s[i] != '\0' && i <= l) + while (i <= l && s[i] != '\0') ++i; if (i + 1 >= l) return _SMFIS_ABORT; @@ -1868,9 +1872,9 @@ mi_rd_socket_ready (sd) int nerr = 0; #if SM_CONF_POLL struct pollfd pfd; -#else /* SM_CONF_POLL */ +#else fd_set rd_set, exc_set; -#endif /* SM_CONF_POLL */ +#endif do { @@ -1912,8 +1916,8 @@ mi_rd_socket_ready (sd) #if SM_CONF_POLL return (pfd.revents != 0); -#else /* SM_CONF_POLL */ +#else return FD_ISSET(sd, &rd_set) || FD_ISSET(sd, &exc_set); -#endif /* SM_CONF_POLL */ +#endif } #endif /* _FFR_WORKERS_POOL */ diff --git a/libmilter/example.c b/libmilter/example.c index f078eb7ba304..e0fef80b6d4e 100644 --- a/libmilter/example.c +++ b/libmilter/example.c @@ -28,7 +28,7 @@ #ifndef true # define false 0 # define true 1 -#endif /* ! true */ +#endif struct mlfiPriv { diff --git a/libmilter/handler.c b/libmilter/handler.c index 7622839d65e4..17ee7f8dac0a 100644 --- a/libmilter/handler.c +++ b/libmilter/handler.c @@ -35,7 +35,7 @@ mi_handle_session(ctx) ctx->ctx_id = (sthread_t) sthread_get_id(); /* - ** Detach so resources are free when the thread returns. + ** Detach so resources are freed when the thread returns. ** If we ever "wait" for threads, this call must be removed. */ diff --git a/libmilter/libmilter.h b/libmilter/libmilter.h index 3c572ec9a9e8..f9fe38ca4a9f 100644 --- a/libmilter/libmilter.h +++ b/libmilter/libmilter.h @@ -20,10 +20,10 @@ # define EXTERN # define INIT(x) = x SM_IDSTR(MilterlId, "@(#)$Id: libmilter.h,v 8.78 2013-11-22 20:51:36 ca Exp $") -#else /* _DEFINE */ +#else # define EXTERN extern # define INIT(x) -#endif /* _DEFINE */ +#endif #include "sm/tailq.h" @@ -111,7 +111,7 @@ struct smfi_str #if _FFR_THREAD_MONITOR time_t ctx_start; /* start time of thread */ SM_TAILQ_ENTRY(smfi_str) ctx_mon_link; -#endif /* _FFR_THREAD_MONITOR */ +#endif #if _FFR_WORKERS_POOL long ctx_sid; /* session identifier */ @@ -142,7 +142,7 @@ typedef pthread_mutex_t smutex_t; /* SM_CONF_POLL shall be defined with _FFR_WORKERS_POOL */ # if !SM_CONF_POLL # define SM_CONF_POLL 1 -# endif /* SM_CONF_POLL */ +# endif #endif /* _FFR_WORKERS_POOL */ typedef pthread_cond_t scond_t; @@ -173,7 +173,7 @@ typedef pthread_cond_t scond_t; # define MI_POLL_RD_FLAGS (POLLIN | POLLPRI) # define MI_POLL_WR_FLAGS (POLLOUT) -# define MI_MS(timeout) (((timeout)->tv_sec * 1000) + (timeout)->tv_usec) +# define MI_MS(timeout) (((timeout)->tv_sec * 1000) + (((timeout)->tv_usec) / 1000)) # define FD_RD_VAR(rds, excs) struct pollfd rds # define FD_WR_VAR(wrs) struct pollfd wrs @@ -197,7 +197,7 @@ typedef pthread_cond_t scond_t; # define FD_IS_RD_RDY(sd, rds, excs) \ (((rds).revents & MI_POLL_RD_FLAGS) != 0) -# define FD_WR_READY(sd, excs, timeout) \ +# define FD_WR_READY(sd, wrs, timeout) \ poll(&(wrs), 1, MI_MS(timeout)) # define FD_RD_READY(sd, rds, excs, timeout) \ @@ -241,9 +241,9 @@ typedef pthread_cond_t scond_t; #ifndef MI_SOMAXCONN # if SOMAXCONN > 20 # define MI_SOMAXCONN SOMAXCONN -# else /* SOMAXCONN */ +# else # define MI_SOMAXCONN 20 -# endif /* SOMAXCONN */ +# endif #endif /* ! MI_SOMAXCONN */ /* maximum number of repeated failures in mi_listener() */ diff --git a/libmilter/listener.c b/libmilter/listener.c index 11d92bb09fdf..0468a6231cce 100644 --- a/libmilter/listener.c +++ b/libmilter/listener.c @@ -24,11 +24,11 @@ SM_RCSID("@(#)$Id: listener.c,v 8.127 2013-11-22 20:51:36 ca Exp $") # if NETINET || NETINET6 # include -# endif /* NETINET || NETINET6 */ +# endif # if SM_CONF_POLL # undef SM_FD_OK_SELECT # define SM_FD_OK_SELECT(fd) true -# endif /* SM_CONF_POLL */ +# endif static smutex_t L_Mutex; static int L_family; @@ -38,7 +38,7 @@ static socket_t listenfd = INVALID_SOCKET; static socket_t mi_milteropen __P((char *, int, bool, char *)); #if !_FFR_WORKERS_POOL static void *mi_thread_handle_wrapper __P((void *)); -#endif /* !_FFR_WORKERS_POOL */ +#endif /* ** MI_OPENSOCKET -- create the socket where this filter and the MTA will meet @@ -116,7 +116,7 @@ mi_opensocket(conn, backlog, dbg, rmsocket, smfi) #if NETUNIX static char *sockpath = NULL; -#endif /* NETUNIX */ +#endif static socket_t mi_milteropen(conn, backlog, rmsocket, name) @@ -269,13 +269,13 @@ mi_milteropen(conn, backlog, rmsocket, name) if ( # if NETINET addr.sa.sa_family == AF_INET -# endif /* NETINET */ +# endif # if NETINET && NETINET6 || -# endif /* NETINET && NETINET6 */ +# endif # if NETINET6 addr.sa.sa_family == AF_INET6 -# endif /* NETINET6 */ +# endif ) { unsigned short port; @@ -290,13 +290,13 @@ mi_milteropen(conn, backlog, rmsocket, name) case AF_INET: addr.sin.sin_addr.s_addr = INADDR_ANY; break; -# endif /* NETINET */ +# endif # if NETINET6 case AF_INET6: addr.sin6.sin6_addr = in6addr_any; break; -# endif /* NETINET6 */ +# endif } } else @@ -337,10 +337,10 @@ mi_milteropen(conn, backlog, rmsocket, name) bool found = false; # if NETINET unsigned long hid = INADDR_NONE; -# endif /* NETINET */ +# endif # if NETINET6 struct sockaddr_in6 hid6; -# endif /* NETINET6 */ +# endif *end = '\0'; # if NETINET @@ -421,7 +421,7 @@ mi_milteropen(conn, backlog, rmsocket, name) } # if NETINET6 freehostent(hp); -# endif /* NETINET6 */ +# endif } } else @@ -432,12 +432,12 @@ mi_milteropen(conn, backlog, rmsocket, name) case AF_INET: addr.sin.sin_port = port; break; -# endif /* NETINET */ +# endif # if NETINET6 case AF_INET6: addr.sin6.sin6_port = port; break; -# endif /* NETINET6 */ +# endif } } } @@ -465,7 +465,7 @@ mi_milteropen(conn, backlog, rmsocket, name) if ( #if NETUNIX addr.sa.sa_family != AF_UNIX && -#endif /* NETUNIX */ +#endif setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void *) &sockopt, sizeof(sockopt)) == -1) { @@ -607,7 +607,7 @@ mi_closener() (S_ISFIFO(sockinfo.st_mode) # ifdef S_ISSOCK || S_ISSOCK(sockinfo.st_mode) -# endif /* S_ISSOCK */ +# endif ); #endif /* NETUNIX */ @@ -624,13 +624,13 @@ mi_closener() fileinfo.st_ino == sockinfo.st_ino) # ifdef S_ISSOCK || S_ISSOCK(fileinfo.st_mode) -# endif /* S_ISSOCK */ +# endif ) && (S_ISFIFO(fileinfo.st_mode) # ifdef S_ISSOCK || S_ISSOCK(fileinfo.st_mode) -# endif /* S_ISSOCK */ +# endif )) (void) unlink(sockpath); free(sockpath); @@ -719,7 +719,7 @@ mi_listener(conn, dbg, smfi, timeout, backlog) socket_t connfd = INVALID_SOCKET; #if _FFR_DUP_FD socket_t dupfd = INVALID_SOCKET; -#endif /* _FFR_DUP_FD */ +#endif int sockopt = 1; int r, mistop; int ret = MI_SUCCESS; @@ -731,7 +731,7 @@ mi_listener(conn, dbg, smfi, timeout, backlog) int fdflags; #if !_FFR_WORKERS_POOL sthread_t thread_id; -#endif /* !_FFR_WORKERS_POOL */ +#endif _SOCK_ADDR cliaddr; SOCKADDR_LEN_T clilen; SMFICTX_PTR ctx; @@ -744,7 +744,7 @@ mi_listener(conn, dbg, smfi, timeout, backlog) #if _FFR_WORKERS_POOL if (mi_pool_controller_init() == MI_FAILURE) return MI_FAILURE; -#endif /* _FFR_WORKERS_POOL */ +#endif clilen = L_socksize; while ((mistop = mi_stop()) == MILTER_CONT) @@ -817,7 +817,7 @@ mi_listener(conn, dbg, smfi, timeout, backlog) (clilen == 0 || # ifdef BSD4_4_SOCKADDR cliaddr.sa.sa_len == 0 || -# endif /* BSD4_4_SOCKADDR */ +# endif cliaddr.sa.sa_family != L_family)) { (void) closesocket(connfd); @@ -838,28 +838,28 @@ mi_listener(conn, dbg, smfi, timeout, backlog) if (save_errno == EINTR #ifdef EAGAIN || save_errno == EAGAIN -#endif /* EAGAIN */ +#endif #ifdef ECONNABORTED || save_errno == ECONNABORTED -#endif /* ECONNABORTED */ +#endif #ifdef EMFILE || save_errno == EMFILE -#endif /* EMFILE */ +#endif #ifdef ENFILE || save_errno == ENFILE -#endif /* ENFILE */ +#endif #ifdef ENOBUFS || save_errno == ENOBUFS -#endif /* ENOBUFS */ +#endif #ifdef ENOMEM || save_errno == ENOMEM -#endif /* ENOMEM */ +#endif #ifdef ENOSR || save_errno == ENOSR -#endif /* ENOSR */ +#endif #ifdef EWOULDBLOCK || save_errno == EWOULDBLOCK -#endif /* EWOULDBLOCK */ +#endif ) continue; acnt++; @@ -886,7 +886,7 @@ mi_listener(conn, dbg, smfi, timeout, backlog) } #endif /* _FFR_DUP_FD */ - /* + /* ** Need to set close-on-exec for connfd in case a user's ** filter starts other applications. ** Note: errors will not stop processing (for now). @@ -951,12 +951,12 @@ mi_listener(conn, dbg, smfi, timeout, backlog) #if _FFR_WORKERS_POOL # define LOG_CRT_FAIL "%s: mi_start_session() failed: %d, %s" if ((r = mi_start_session(ctx)) != MI_SUCCESS) -#else /* _FFR_WORKERS_POOL */ +#else # define LOG_CRT_FAIL "%s: thread_create() failed: %d, %s" if ((r = thread_create(&thread_id, mi_thread_handle_wrapper, (void *) ctx)) != 0) -#endif /* _FFR_WORKERS_POOL */ +#endif { tcnt++; smi_log(SMI_LOG_ERR, diff --git a/libmilter/main.c b/libmilter/main.c index ef3242feff05..ff7bf99bcc82 100644 --- a/libmilter/main.c +++ b/libmilter/main.c @@ -206,7 +206,7 @@ smfi_setbacklog(obacklog) /* -** SMFI_MAIN -- setup milter connnection and start listener. +** SMFI_MAIN -- setup milter connection and start listener. ** ** Parameters: ** none. diff --git a/libmilter/monitor.c b/libmilter/monitor.c index 9916bb59598d..ec08e53d0b2e 100644 --- a/libmilter/monitor.c +++ b/libmilter/monitor.c @@ -39,7 +39,7 @@ static scond_t Mon_cv; ** after a mutex_lock() attempt, the order might not be strict, ** i.e., if the list contains e1 and e2 (in that order) then ** the the start time of e2 can be (slightly) smaller than that of e1. -** However, this slight inaccurracy should not matter for the proper +** However, this slight inaccuracy should not matter for the proper ** working of this algorithm. */ diff --git a/libmilter/sm_gethost.c b/libmilter/sm_gethost.c index 2423c34419c1..262edb6c541c 100644 --- a/libmilter/sm_gethost.c +++ b/libmilter/sm_gethost.c @@ -14,13 +14,13 @@ SM_RCSID("@(#)$Id: sm_gethost.c,v 8.32 2013-11-22 20:51:36 ca Exp $") #include #if NETINET || NETINET6 # include -#endif /* NETINET || NETINET6 */ +#endif #include "libmilter.h" /* ** MI_GETHOSTBY{NAME,ADDR} -- compatibility routines for gethostbyXXX ** -** Some operating systems have wierd problems with the gethostbyXXX +** Some operating systems have weird problems with the gethostbyXXX ** routines. For example, Solaris versions at least through 2.3 ** don't properly deliver a canonical h_name field. This tries to ** work around these problems. @@ -34,13 +34,13 @@ static struct hostent *sm_getipnodebyname __P((const char *, int, int, int *)); # ifndef AI_ADDRCONFIG # define AI_ADDRCONFIG 0 /* dummy */ -# endif /* ! AI_ADDRCONFIG */ +# endif # ifndef AI_ALL # define AI_ALL 0 /* dummy */ -# endif /* ! AI_ALL */ +# endif # ifndef AI_DEFAULT # define AI_DEFAULT 0 /* dummy */ -# endif /* ! AI_DEFAULT */ +# endif static struct hostent * sm_getipnodebyname(name, family, flags, err) @@ -49,8 +49,17 @@ sm_getipnodebyname(name, family, flags, err) int flags; int *err; { - bool resv6 = true; struct hostent *h; +# if HAS_GETHOSTBYNAME2 + + h = gethostbyname2(name, family); + if (h == NULL) + *err = h_errno; + return h; + +# else /* HAS_GETHOSTBYNAME2 */ +# ifdef RES_USE_INET6 + bool resv6 = true; if (family == AF_INET6) { @@ -58,23 +67,27 @@ sm_getipnodebyname(name, family, flags, err) resv6 = bitset(RES_USE_INET6, _res.options); _res.options |= RES_USE_INET6; } +# endif /* RES_USE_INET6 */ SM_SET_H_ERRNO(0); h = gethostbyname(name); - if (family == AF_INET6 && !resv6) +# ifdef RES_USE_INET6 + if (!resv6) _res.options &= ~RES_USE_INET6; +# endif /* the function is supposed to return only the requested family */ if (h != NULL && h->h_addrtype != family) { -# if NETINET6 +# if NETINET6 freehostent(h); -# endif /* NETINET6 */ +# endif h = NULL; *err = NO_DATA; } else *err = h_errno; return h; +# endif /* HAS_GETHOSTBYNAME2 */ } void @@ -89,7 +102,7 @@ freehostent(h) return; } #else /* NEEDSGETIPNODE && NETINET6 */ -#define sm_getipnodebyname getipnodebyname +#define sm_getipnodebyname getipnodebyname #endif /* NEEDSGETIPNODE && NETINET6 */ struct hostent * @@ -115,7 +128,7 @@ mi_gethostbyname(name, family) # ifndef SM_IPNODEBYNAME_FLAGS /* For IPv4-mapped addresses, use: AI_DEFAULT|AI_ALL */ # define SM_IPNODEBYNAME_FLAGS AI_ADDRCONFIG -# endif /* SM_IPNODEBYNAME_FLAGS */ +# endif int flags = SM_IPNODEBYNAME_FLAGS; int err; @@ -124,7 +137,7 @@ mi_gethostbyname(name, family) # if NETINET6 # if ADDRCONFIG_IS_BROKEN flags &= ~AI_ADDRCONFIG; -# endif /* ADDRCONFIG_IS_BROKEN */ +# endif h = sm_getipnodebyname(name, family, flags, &err); SM_SET_H_ERRNO(err); # else /* NETINET6 */ @@ -138,7 +151,7 @@ mi_gethostbyname(name, family) { # if NETINET6 freehostent(h); -# endif /* NETINET6 */ +# endif h = NULL; SM_SET_H_ERRNO(NO_DATA); } @@ -158,7 +171,7 @@ mi_gethostbyname(name, family) ** ** Returns: ** 1 if the address was valid -** 0 if the address wasn't parseable +** 0 if the address wasn't parsable ** -1 if error */ diff --git a/libmilter/smfi.c b/libmilter/smfi.c index d6c63a2ce800..a0fcd1184e46 100644 --- a/libmilter/smfi.c +++ b/libmilter/smfi.c @@ -103,7 +103,7 @@ smfi_addheader(ctx, headerf, headerv) ** ** Parameters: ** ctx -- Opaque context structure -** hdridx -- index into header list where insertion should occur +** hdridx -- index into header list where insertion should occur ** headerf -- Header field name ** headerv -- Header field value ** @@ -267,7 +267,6 @@ send2(ctx, cmd, arg0, arg1) if (arg1 != NULL) { - l1 = strlen(arg1) + 1; SM_ASSERT(offset < len); SM_ASSERT(offset + l1 <= len); (void) memcpy(buf + offset, arg1, l1); diff --git a/libmilter/worker.c b/libmilter/worker.c index bf7086a95187..74bf98a39435 100644 --- a/libmilter/worker.c +++ b/libmilter/worker.c @@ -56,7 +56,7 @@ static taskmgr_T Tskmgr = {0}; #ifndef USE_PIPE_WAKE_POLL # define USE_PIPE_WAKE_POLL 1 -#endif /* USE_PIPE_WAKE_POLL */ +#endif /* poll check periodicity (default 10000 - 10 s) */ #define POLL_TIMEOUT 10000 @@ -83,7 +83,7 @@ static int mi_list_del_ctx __P((SMFICTX_PTR)); #ifndef OLD_SESSION_TIMEOUT # define OLD_SESSION_TIMEOUT ctx->ctx_timeout -#endif /* OLD_SESSION_TIMEOUT */ +#endif /* session states - with respect to the pool of workers */ #define WKST_INIT 0 /* initial state */ @@ -143,7 +143,7 @@ static int mi_list_del_ctx __P((SMFICTX_PTR)); # define POOL_LEV_DPRINTF(lev, x) \ do \ { \ - if ((lev) < ctx->ctx_dbg) \ + if (ctx != NULL && (lev) < ctx->ctx_dbg) \ sm_dprintf x; \ } while (0) #else /* POOL_DEBUG */ @@ -381,8 +381,6 @@ mi_pool_controller(arg) int nfd, r, i; time_t now; - POOL_LEV_DPRINTF(4, ("Let's %s again...", WAITFN)); - if (mi_stop() != MILTER_CONT) break; diff --git a/libsm/Makefile b/libsm/Makefile index e4b9871f98cd..4f43b9294576 100644 --- a/libsm/Makefile +++ b/libsm/Makefile @@ -8,10 +8,10 @@ all: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ clean: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ -install: FRC - $(SHELL) $(BUILD) $(OPTIONS) $@ check: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ +install: FRC + $(SHELL) $(BUILD) $(OPTIONS) $@ fresh: FRC $(SHELL) $(BUILD) $(OPTIONS) -c diff --git a/libsm/Makefile.m4 b/libsm/Makefile.m4 index 5882bb63f4e6..0dcb2d02b68d 100644 --- a/libsm/Makefile.m4 +++ b/libsm/Makefile.m4 @@ -6,7 +6,7 @@ define(`confREQUIRE_LIBSM', `true') define(`confREQUIRE_SM_OS_H', `true') PREPENDDEF(`confENVDEF', `confMAPDEF') bldPRODUCT_START(`library', `libsm') -define(`bldSOURCES', ` assert.c debug.c errstring.c exc.c heap.c match.c rpool.c strdup.c strerror.c strl.c clrerr.c fclose.c feof.c ferror.c fflush.c fget.c fpos.c findfp.c flags.c fopen.c fprintf.c fpurge.c fput.c fread.c fscanf.c fseek.c fvwrite.c fwalk.c fwrite.c get.c makebuf.c put.c refill.c rewind.c setvbuf.c smstdio.c snprintf.c sscanf.c stdio.c strio.c ungetc.c vasprintf.c vfprintf.c vfscanf.c vprintf.c vsnprintf.c wbuf.c wsetup.c string.c stringf.c xtrap.c strto.c test.c strcasecmp.c strrevcmp.c signal.c clock.c config.c shm.c sem.c mbdb.c strexit.c cf.c ldap.c niprop.c mpeix.c memstat.c util.c inet6_ntop.c ') +define(`bldSOURCES', ` assert.c debug.c errstring.c exc.c heap.c match.c rpool.c strdup.c strerror.c strl.c clrerr.c fclose.c feof.c ferror.c fflush.c fget.c fpos.c findfp.c flags.c fopen.c fprintf.c fpurge.c fput.c fread.c fscanf.c fseek.c fvwrite.c fwalk.c fwrite.c get.c makebuf.c put.c refill.c rewind.c setvbuf.c smstdio.c snprintf.c sscanf.c stdio.c strio.c ungetc.c vasprintf.c vfprintf.c vfscanf.c vprintf.c vsnprintf.c wbuf.c wsetup.c string.c stringf.c xtrap.c strto.c test.c strcasecmp.c strrevcmp.c signal.c clock.c config.c shm.c sem.c mbdb.c strexit.c cf.c ldap.c niprop.c mpeix.c memstat.c util.c inet6_ntop.c notify.c ') bldPRODUCT_END dnl msg.c dnl syslogio.c @@ -32,6 +32,7 @@ smcheck(`t-scanf', `compile-run') smcheck(`t-shm', `compile-run') smcheck(`t-sem', `compile-run') smcheck(`t-inet6_ntop', `compile-run') +smcheck(`t-notify', `compile-run') dnl smcheck(`t-msg', `compile-run') smcheck(`t-cf') smcheck(`b-strcmp') diff --git a/libsm/assert.c b/libsm/assert.c index 6393e9eca419..e77720109028 100644 --- a/libsm/assert.c +++ b/libsm/assert.c @@ -83,7 +83,7 @@ sm_abort_defaulthandler(filename, lineno, msg) #ifdef SIGSTOP if (sm_debug_active(&SmAbortStop, 1)) kill(getpid(), SIGSTOP); -#endif /* SIGSTOP */ +#endif abort(); } diff --git a/libsm/clock.c b/libsm/clock.c index 5e4d7598dba8..6e300b0a5ca4 100644 --- a/libsm/clock.c +++ b/libsm/clock.c @@ -18,7 +18,7 @@ SM_RCSID("@(#)$Id: clock.c,v 1.48 2013-11-22 20:51:42 ca Exp $") #include #if SM_CONF_SETITIMER # include -#endif /* SM_CONF_SETITIMER */ +#endif #include #include #include @@ -26,14 +26,14 @@ SM_RCSID("@(#)$Id: clock.c,v 1.48 2013-11-22 20:51:42 ca Exp $") #include "local.h" #if _FFR_SLEEP_USE_SELECT > 0 # include -#endif /* _FFR_SLEEP_USE_SELECT > 0 */ +#endif #if defined(_FFR_MAX_SLEEP_TIME) && _FFR_MAX_SLEEP_TIME > 2 # include -#endif /* defined(_FFR_MAX_SLEEP_TIME) && _FFR_MAX_SLEEP_TIME > 2 */ +#endif #ifndef sigmask # define sigmask(s) (1 << ((s) - 1)) -#endif /* ! sigmask */ +#endif /* @@ -94,9 +94,9 @@ sm_sigsafe_seteventm(intvl, func, arg) #if SM_CONF_SETITIMER auto struct timeval now, nowi, ival; auto struct itimerval itime; -#else /* SM_CONF_SETITIMER */ +#else auto time_t now, nowi; -#endif /* SM_CONF_SETITIMER */ +#endif int wasblocked; /* negative times are not allowed */ @@ -122,9 +122,9 @@ sm_sigsafe_seteventm(intvl, func, arg) { #if SM_CONF_SETITIMER if (timercmp(&(ev->ev_time), &nowi, >=)) -#else /* SM_CONF_SETITIMER */ +#else if (ev->ev_time >= nowi) -#endif /* SM_CONF_SETITIMER */ +#endif break; } @@ -200,7 +200,7 @@ sm_clrevent(ev) int wasblocked; # if SM_CONF_SETITIMER struct itimerval clr; -# endif /* SM_CONF_SETITIMER */ +# endif if (ev == NULL) return; @@ -260,7 +260,7 @@ sm_clear_events() register SM_EVENT *ev; #if SM_CONF_SETITIMER struct itimerval clr; -#endif /* SM_CONF_SETITIMER */ +#endif int wasblocked; /* nothing will be left in event queue, no need for an alarm */ @@ -325,7 +325,7 @@ sm_tick(sig) #if SM_CONF_SETITIMER struct itimerval clr; struct timeval now; -#else /* SM_CONF_SETITIMER */ +#else register time_t now; #endif /* SM_CONF_SETITIMER */ @@ -382,16 +382,16 @@ sm_tick(sig) #if SM_CONF_SETITIMER gettimeofday(&now, NULL); -#else /* SM_CONF_SETITIMER */ +#else now = time(NULL); -#endif /* SM_CONF_SETITIMER */ +#endif while ((ev = SmEventQueue) != NULL && (ev->ev_pid != mypid || #if SM_CONF_SETITIMER timercmp(&ev->ev_time, &now, <=) -#else /* SM_CONF_SETITIMER */ +#else ev->ev_time <= now -#endif /* SM_CONF_SETITIMER */ +#endif )) { void (*f)__P((int)); @@ -499,11 +499,11 @@ sm_tick(sig) # if !HAVE_NANOSLEEP static void sm_endsleep __P((int)); static bool volatile SmSleepDone; -# endif /* !HAVE_NANOSLEEP */ +# endif #ifndef SLEEP_T # define SLEEP_T unsigned int -#endif /* ! SLEEP_T */ +#endif SLEEP_T sleep(intvl) @@ -525,13 +525,13 @@ sleep(intvl) int r; # if _FFR_SLEEP_USE_SELECT > 0 struct timeval sm_io_to; -# endif /* _FFR_SLEEP_USE_SELECT > 0 */ +# endif #endif /* _FFR_SLEEP_USE_SELECT > 0 */ #if SM_CONF_SETITIMER struct timeval now, begin, diff; # if _FFR_SLEEP_USE_SELECT > 0 struct timeval slpv; -# endif /* _FFR_SLEEP_USE_SELECT > 0 */ +# endif #else /* SM_CONF_SETITIMER */ time_t begin, now; #endif /* SM_CONF_SETITIMER */ @@ -545,7 +545,7 @@ sleep(intvl) intvl, _FFR_MAX_SLEEP_TIME); # if 0 SM_ASSERT(intvl < (unsigned int) INT_MAX); -# endif /* 0 */ +# endif intvl = _FFR_MAX_SLEEP_TIME; } #endif /* defined(_FFR_MAX_SLEEP_TIME) && _FFR_MAX_SLEEP_TIME > 2 */ @@ -555,7 +555,7 @@ sleep(intvl) # if _FFR_SLEEP_USE_SELECT > 0 slpv.tv_sec = intvl; slpv.tv_usec = 0; -# endif /* _FFR_SLEEP_USE_SELECT > 0 */ +# endif (void) gettimeofday(&now, NULL); begin = now; #else /* SM_CONF_SETITIMER */ @@ -568,7 +568,7 @@ sleep(intvl) /* COMPLAIN */ #if 0 syslog(LOG_ERR, "sleep: sm_setevent(%u) failed", intvl); -#endif /* 0 */ +#endif SmSleepDone = true; } was_held = sm_releasesignal(SIGALRM); @@ -583,7 +583,7 @@ sleep(intvl) break; # if _FFR_SLEEP_USE_SELECT > 0 timersub(&slpv, &diff, &sm_io_to); -# endif /* _FFR_SLEEP_USE_SELECT > 0 */ +# endif #else /* SM_CONF_SETITIMER */ now = time(NULL); diff --git a/libsm/config.c b/libsm/config.c index b8f77d9bbe55..b96a4a0c8aba 100644 --- a/libsm/config.c +++ b/libsm/config.c @@ -172,89 +172,89 @@ char *SmCompileOptions[] = { #if SM_CONF_BROKEN_STRTOD "SM_CONF_BROKEN_STRTOD", -#endif /* SM_CONF_BROKEN_STRTOD */ +#endif #if SM_CONF_GETOPT "SM_CONF_GETOPT", -#endif /* SM_CONF_GETOPT */ +#endif #if SM_CONF_LDAP_INITIALIZE "SM_CONF_LDAP_INITIALIZE", -#endif /* SM_CONF_LDAP_INITIALIZE */ +#endif #if SM_CONF_LDAP_MEMFREE "SM_CONF_LDAP_MEMFREE", -#endif /* SM_CONF_LDAP_MEMFREE */ +#endif #if SM_CONF_LONGLONG "SM_CONF_LONGLONG", -#endif /* SM_CONF_LONGLONG */ +#endif #if SM_CONF_MEMCHR "SM_CONF_MEMCHR", -#endif /* SM_CONF_MEMCHR */ +#endif #if SM_CONF_MSG "SM_CONF_MSG", -#endif /* SM_CONF_MSG */ +#endif #if SM_CONF_QUAD_T "SM_CONF_QUAD_T", -#endif /* SM_CONF_QUAD_T */ +#endif #if SM_CONF_SEM "SM_CONF_SEM", -#endif /* SM_CONF_SEM */ +#endif #if SM_CONF_SETITIMER "SM_CONF_SETITIMER", -#endif /* SM_CONF_SETITIMER */ +#endif #if SM_CONF_SIGSETJMP "SM_CONF_SIGSETJMP", -#endif /* SM_CONF_SIGSETJMP */ +#endif #if SM_CONF_SHM "SM_CONF_SHM", -#endif /* SM_CONF_SHM */ +#endif #if SM_CONF_SHM_DELAY "SM_CONF_SHM_DELAY", -#endif /* SM_CONF_SHM_DELAY */ +#endif #if SM_CONF_SSIZE_T "SM_CONF_SSIZE_T", -#endif /* SM_CONF_SSIZE_T */ +#endif #if SM_CONF_STDBOOL_H "SM_CONF_STDBOOL_H", -#endif /* SM_CONF_STDBOOL_H */ +#endif #if SM_CONF_STDDEF_H "SM_CONF_STDDEF_H", -#endif /* SM_CONF_STDDEF_H */ +#endif #if 0 /* XXX this is always enabled (for now) */ #if SM_CONF_STRL "SM_CONF_STRL", -#endif /* SM_CONF_STRL */ +#endif #endif /* 0 */ #if SM_CONF_SYS_CDEFS_H "SM_CONF_SYS_CDEFS_H", -#endif /* SM_CONF_SYS_CDEFS_H */ +#endif #if SM_CONF_SYSEXITS_H "SM_CONF_SYSEXITS_H", -#endif /* SM_CONF_SYSEXITS_H */ +#endif #if SM_CONF_UID_GID "SM_CONF_UID_GID", -#endif /* SM_CONF_UID_GID */ +#endif #if DO_NOT_USE_STRCPY "DO_NOT_USE_STRCPY", -#endif /* DO_NOT_USE_STRCPY */ +#endif #if SM_HEAP_CHECK "SM_HEAP_CHECK", -#endif /* SM_HEAP_CHECK */ +#endif #if defined(SM_OS_NAME) && defined(__STDC__) "SM_OS=sm_os_" SM_OS_NAME, -#endif /* defined(SM_OS_NAME) && defined(__STDC__) */ +#endif #if SM_VA_STD "SM_VA_STD", -#endif /* SM_VA_STD */ +#endif #if USEKSTAT "USEKSTAT", -#endif /* USEKSTAT */ +#endif #if USEPROCMEMINFO "USEPROCMEMINFO", -#endif /* USEPROCMEMINFO */ +#endif #if USESWAPCTL "USESWAPCTL", -#endif /* USESWAPCTL */ +#endif NULL }; diff --git a/libsm/debug.c b/libsm/debug.c index 0dbc25733f14..2ebef889380e 100644 --- a/libsm/debug.c +++ b/libsm/debug.c @@ -19,6 +19,8 @@ SM_RCSID("@(#)$Id: debug.c,v 1.33 2013-11-22 20:51:42 ca Exp $") #include #if _FFR_DEBUG_PID_TIME #include +#include +#include #include #endif /* _FFR_DEBUG_PID_TIME */ #include @@ -119,7 +121,7 @@ sm_debug_close() #if _FFR_DEBUG_PID_TIME SM_DEBUG_T SmDBGPidTime = SM_DEBUG_INITIALIZER("sm_trace_pid_time", "@(#)$Debug: sm_trace_pid_time - print pid and time in debug $"); -#endif /* _FFR_DEBUG_PID_TIME */ +#endif void #if SM_VA_STD @@ -131,12 +133,42 @@ sm_dprintf(fmt, va_alist) #endif /* SM_VA_STD */ { SM_VA_LOCAL_DECL +#if _FFR_DEBUG_PID_TIME + static struct timeval lasttv; +#endif if (SmDebugOutput == NULL) return; #if _FFR_DEBUG_PID_TIME /* note: this is ugly if the output isn't a full line! */ - if (sm_debug_active(&SmDBGPidTime, 1)) + if (sm_debug_active(&SmDBGPidTime, 3)) + { + struct timeval tv, tvd; + + gettimeofday(&tv, NULL); + if (timerisset(&lasttv)) + timersub(&tv, &lasttv, &tvd); + else + timerclear(&tvd); + sm_io_fprintf(SmDebugOutput, SmDebugOutput->f_timeout, + "%ld: %ld.%06ld ", + (long) getpid(), + (long) tvd.tv_sec, + (long) tvd.tv_usec); + lasttv = tv; + } + else if (sm_debug_active(&SmDBGPidTime, 2)) + { + struct timeval tv; + + gettimeofday(&tv, NULL); + sm_io_fprintf(SmDebugOutput, SmDebugOutput->f_timeout, + "%ld: %ld.%06ld ", + (long) getpid(), + (long) tv.tv_sec, + (long) tv.tv_usec); + } + else if (sm_debug_active(&SmDBGPidTime, 1)) { static char str[32] = "[1900-00-00/00:00:00] "; struct tm *tmp; diff --git a/libsm/errstring.c b/libsm/errstring.c index 01d5a6419f41..fd1af9b5dcbf 100644 --- a/libsm/errstring.c +++ b/libsm/errstring.c @@ -27,7 +27,7 @@ SM_RCSID("@(#)$Id: errstring.c,v 1.20 2013-11-22 20:51:42 ca Exp $") #if LDAPMAP # include # include /* for LDAP error codes */ -#endif /* LDAPMAP */ +#endif /* ** Notice: this file is used by libmilter. Please try to avoid @@ -200,63 +200,63 @@ sm_errstring(errnum) # ifdef LDAP_URL_ERR_MEM case E_LDAPURLBASE + LDAP_URL_ERR_MEM: return "LDAP URL can't allocate memory space"; -# endif /* LDAP_URL_ERR_MEM */ +# endif # ifdef LDAP_URL_ERR_PARAM case E_LDAPURLBASE + LDAP_URL_ERR_PARAM: return "LDAP URL parameter is bad"; -# endif /* LDAP_URL_ERR_PARAM */ +# endif # ifdef LDAP_URL_ERR_BADSCHEME case E_LDAPURLBASE + LDAP_URL_ERR_BADSCHEME: return "LDAP URL doesn't begin with \"ldap[si]://\""; -# endif /* LDAP_URL_ERR_BADSCHEME */ +# endif # ifdef LDAP_URL_ERR_BADENCLOSURE case E_LDAPURLBASE + LDAP_URL_ERR_BADENCLOSURE: return "LDAP URL is missing trailing \">\""; -# endif /* LDAP_URL_ERR_BADENCLOSURE */ +# endif # ifdef LDAP_URL_ERR_BADURL case E_LDAPURLBASE + LDAP_URL_ERR_BADURL: return "LDAP URL is bad"; -# endif /* LDAP_URL_ERR_BADURL */ +# endif # ifdef LDAP_URL_ERR_BADHOST case E_LDAPURLBASE + LDAP_URL_ERR_BADHOST: return "LDAP URL host port is bad"; -# endif /* LDAP_URL_ERR_BADHOST */ +# endif # ifdef LDAP_URL_ERR_BADATTRS case E_LDAPURLBASE + LDAP_URL_ERR_BADATTRS: return "LDAP URL bad (or missing) attributes"; -# endif /* LDAP_URL_ERR_BADATTRS */ +# endif # ifdef LDAP_URL_ERR_BADSCOPE case E_LDAPURLBASE + LDAP_URL_ERR_BADSCOPE: return "LDAP URL scope string is invalid (or missing)"; -# endif /* LDAP_URL_ERR_BADSCOPE */ +# endif # ifdef LDAP_URL_ERR_BADFILTER case E_LDAPURLBASE + LDAP_URL_ERR_BADFILTER: return "LDAP URL bad or missing filter"; -# endif /* LDAP_URL_ERR_BADFILTER */ +# endif # ifdef LDAP_URL_ERR_BADEXTS case E_LDAPURLBASE + LDAP_URL_ERR_BADEXTS: return "LDAP URL bad or missing extensions"; -# endif /* LDAP_URL_ERR_BADEXTS */ +# endif /* Sun LDAP errors */ # ifdef LDAP_URL_ERR_NOTLDAP case E_LDAPURLBASE + LDAP_URL_ERR_NOTLDAP: return "LDAP URL doesn't begin with \"ldap://\""; -# endif /* LDAP_URL_ERR_NOTLDAP */ +# endif # ifdef LDAP_URL_ERR_NODN case E_LDAPURLBASE + LDAP_URL_ERR_NODN: return "LDAP URL has no DN (required)"; -# endif /* LDAP_URL_ERR_NODN */ +# endif #endif /* LDAPMAP */ } diff --git a/libsm/exc.c b/libsm/exc.c index d9ebe4419c84..4824d5f9bd0c 100644 --- a/libsm/exc.c +++ b/libsm/exc.c @@ -229,12 +229,12 @@ const SM_EXC_TYPE_T SmEtypeErr = ** an out-of-memory exception so that exc is not leaked. */ -static SM_EXC_T *sm_exc_vnew_x __P((const SM_EXC_TYPE_T *, va_list SM_NONVOLATILE)); +static SM_EXC_T *sm_exc_vnew_x __P((const SM_EXC_TYPE_T *, va_list)); static SM_EXC_T * sm_exc_vnew_x(etype, ap) const SM_EXC_TYPE_T *etype; - va_list SM_NONVOLATILE ap; + va_list ap; { /* ** All variables that are modified in the SM_TRY clause and diff --git a/libsm/findfp.c b/libsm/findfp.c index 25f7663e8797..1b2ed884d499 100644 --- a/libsm/findfp.c +++ b/libsm/findfp.c @@ -327,11 +327,10 @@ sm_io_setinfo(fp, what, valp) ** SM_IO_GETINFO -- get information for an active file type (fp) ** ** This function supplies for all file types the answers for the -** three requests SM_IO_WHAT_VECTORS, SM_IO_WHAT_TYPE and -** SM_IO_WHAT_ISTYPE. Other requests are handled by the getinfo +** three requests SM_IO_WHAT_VECTORS, and SM_IO_WHAT_ISTYPE. +** Other requests are handled by the getinfo ** vector if available for the open file type. ** SM_IO_WHAT_VECTORS returns information for the file pointer vectors. -** SM_IO_WHAT_TYPE returns the type identifier for the file pointer ** SM_IO_WHAT_ISTYPE returns >0 if the passed in type matches the ** file pointer's type. ** SM_IO_IS_READABLE returns 1 if there is data available for reading, @@ -345,8 +344,8 @@ sm_io_setinfo(fp, what, valp) ** Returns: ** -1 on error and sets errno: ** - when valp==NULL and request expects otherwise -** - when request is not SM_IO_WHAT_VECTORS and not -** SM_IO_WHAT_TYPE and not SM_IO_WHAT_ISTYPE +** - when request is not SM_IO_WHAT_VECTORS +** and not SM_IO_WHAT_ISTYPE ** and getinfo vector is NULL ** - when getinfo type vector returns -1 ** >=0 on success @@ -382,15 +381,6 @@ sm_io_getinfo(fp, what, valp) v->f_type = fp->f_type; return 0; - case SM_IO_WHAT_TYPE: - if (valp == NULL) - { - errno = EINVAL; - return -1; - } - valp = sm_strdup_x(fp->f_type); - return 0; - case SM_IO_WHAT_ISTYPE: if (valp == NULL) { diff --git a/libsm/flags.c b/libsm/flags.c index 0786b026ffe4..49853271af5d 100644 --- a/libsm/flags.c +++ b/libsm/flags.c @@ -23,7 +23,7 @@ SM_RCSID("@(#)$Id: flags.c,v 1.24 2013-11-22 20:51:42 ca Exp $") /* ** SM_FLAGS -- translate external (user) flags into internal flags ** -** Paramters: +** Parameters: ** flags -- user select flags ** ** Returns: diff --git a/libsm/fopen.c b/libsm/fopen.c index 33ddc6015b9b..7dd1751c98b3 100644 --- a/libsm/fopen.c +++ b/libsm/fopen.c @@ -89,7 +89,7 @@ reopenalrm(sig) ** Parameters: ** type -- type of file to open ** timeout -- time to complete the open -** info -- info describing what is to be opened (type dependant) +** info -- info describing what is to be opened (type dependent) ** flags -- user selected flags ** rpool -- pointer to rpool to be used for this open ** @@ -159,7 +159,7 @@ sm_io_open(type, timeout, info, flags, rpool) #if SM_RPOOL if (rpool != NULL) sm_rpool_attach_x(rpool, sm_io_fclose, fp); -#endif /* SM_RPOOL */ +#endif return fp; } @@ -205,7 +205,7 @@ sm_io_dup(fp) ** Parameters: ** type -- file type to be opened ** timeout -- time to complete the reopen -** info -- infomation about what is to be "re-opened" (type dep.) +** info -- information about what is to be "re-opened" (type dep.) ** flags -- user flags to map to internal flags ** rpool -- rpool file to be associated with ** fp -- the file pointer to reuse @@ -311,7 +311,7 @@ sm_io_reopen(type, timeout, info, flags, rpool, fp) #if SM_RPOOL if (rpool != NULL) sm_rpool_attach_x(rpool, sm_io_close, fp2); -#endif /* SM_RPOOL */ +#endif return fp2; } diff --git a/libsm/fpos.c b/libsm/fpos.c index 30015f57599b..fc21f84d7c43 100644 --- a/libsm/fpos.c +++ b/libsm/fpos.c @@ -57,7 +57,7 @@ tellalrm(sig) /* ** SM_IO_TELL -- position the file pointer ** -** Paramters: +** Parameters: ** fp -- the file pointer to get repositioned ** timeout -- time to complete the tell (milliseconds) ** diff --git a/libsm/fscanf.c b/libsm/fscanf.c index c45ef3a3cad0..0ca6f6f2d2db 100644 --- a/libsm/fscanf.c +++ b/libsm/fscanf.c @@ -26,7 +26,7 @@ SM_RCSID("@(#)$Id: fscanf.c,v 1.18 2013-11-22 20:51:42 ca Exp $") ** fp -- the file pointer to obtain the data from ** timeout -- time to complete scan ** fmt -- the format to translate the data to -** ... -- memory locations to place the formated data +** ... -- memory locations to place the formatted data ** ** Returns: ** Failure: returns SM_IO_EOF diff --git a/libsm/io.html b/libsm/io.html index 5304d26236bd..3efdfebb58c7 100644 --- a/libsm/io.html +++ b/libsm/io.html @@ -155,8 +155,7 @@ raising exceptions later. int sm_snprintf(char *str, size_t n, char const *fmt, ...)
                - -

                Timeouts

                +

                Timeouts

                For many of the functions a timeout argument is given. This limits the amount of time allowed for the function to complete. There are three @@ -313,7 +312,7 @@ This will make the change for this SM_FILE_T only. The file type that sfp originally belonged to will still be configured the same way (this is to prevent side-effect to other open's of the same file type, particularly with threads). -The value of what will be file-type dependant since this function +The value of what will be file-type dependent since this function is one of the per file type setable functions. One value for what that is valid for all file types is SM_WHAT_VECTORS. This sets the currently open file with a new function @@ -336,7 +335,7 @@ For the open file sfp get the indicated information (what) and place the result in (valp). This will obtain information for SM_FILE_T only and may be different than the information for the file type it was originally opened as. -The value of what will be file type dependant since this function +The value of what will be file type dependent since this function is one of the per file type setable functions. One value for what that is valid for all file types is SM_WHAT_VECTORS. This gets from the currently open file a copy of @@ -370,7 +369,7 @@ previous association. void
                sm_io_automode(SM_FILE_T *fp1, *SM_FILE_T fp2) -

                +
                Associate the two file pointers for blocking/non-blocking mode changes. @@ -379,7 +378,7 @@ a file between blocking and non-blocking. If the underlying file descriptor has been duplicated with dup(2) and these descriptors are used by sm_io (for example with an SmFtStdiofd file type), then this API should be called to associate them. Otherwise odd behavior (i.e. errors) -may result that is not consistently reproducable nor easily identifiable. +may result that is not consistently reproducible nor easily identifiable.

                @@ -456,7 +455,7 @@ The three types smioin, smioout and smioerr are grouped together. These three types perform in the same manner as stdio's stdin, stdout and stderr. These types are both the names and the file pointers. -They are already open when a program starts (unless the parent explictly +They are already open when a program starts (unless the parent explicitly closed file descriptors 0, 1 and 2). Thus sm_io_open() should never be called for these types: the named file pointers should be used directly. @@ -477,7 +476,7 @@ The three types smiostdin, smioostdut and smiostderr are grouped together. These three types perform in the same manner as stdio's stdin, stdout and stderr. These types are both the names and file pointers. -They are already open when a program starts (unless the parent explictly +They are already open when a program starts (unless the parent explicitly close file descriptors 0, 1 and 2). Thus sm_io_open() should never be called: the named file pointers should be used directly. @@ -733,7 +732,7 @@ if a "file pointer" (FILE/SM_FILE_T) is one of the arguments for the function, then it is now the first argument. Sm_io is standardized so that when a file pointer is one of the arguments to function then it will always be the first -arguement. Many of the sm_io function take a timeout +argument. Many of the sm_io function take a timeout argument (see Timeouts).

                diff --git a/libsm/ldap.c b/libsm/ldap.c index 9359aedfdeda..116dc8fac343 100644 --- a/libsm/ldap.c +++ b/libsm/ldap.c @@ -29,13 +29,12 @@ SM_RCSID("@(#)$Id: ldap.c,v 1.86 2013-11-22 20:51:43 ca Exp $") # include # ifdef EX_OK # undef EX_OK /* for SVr4.2 SMP */ -# endif /* EX_OK */ +# endif # include SM_DEBUG_T SmLDAPTrace = SM_DEBUG_INITIALIZER("sm_trace_ldap", "@(#)$Debug: sm_trace_ldap - trace LDAP operations $"); -static void ldaptimeout __P((int)); static bool sm_ldap_has_objectclass __P((SM_LDAP_STRUCT *, LDAPMessage *, char *)); static SM_LDAP_RECURSE_ENTRY *sm_ldap_add_recurse __P((SM_LDAP_RECURSE_LIST **, char *, int, SM_RPOOL_T *)); @@ -53,10 +52,10 @@ static SM_LDAP_RECURSE_ENTRY *sm_ldap_add_recurse __P((SM_LDAP_RECURSE_LIST **, #if _FFR_LDAP_VERSION # if defined(LDAP_VERSION_MAX) && _FFR_LDAP_VERSION > LDAP_VERSION_MAX ERROR FFR_LDAP_VERSION > _LDAP_VERSION_MAX -# endif /* defined(LDAP_VERSION_MAX) && _FFR_LDAP_VERSION > LDAP_VERSION_MAX */ +# endif # if defined(LDAP_VERSION_MIN) && _FFR_LDAP_VERSION < LDAP_VERSION_MIN ERROR FFR_LDAP_VERSION < _LDAP_VERSION_MIN -# endif /* defined(LDAP_VERSION_MIN) && _FFR_LDAP_VERSION < LDAP_VERSION_MIN */ +# endif # define SM_LDAP_VERSION_DEFAULT _FFR_LDAP_VERSION #else /* _FFR_LDAP_VERSION */ # define SM_LDAP_VERSION_DEFAULT 0 @@ -78,9 +77,9 @@ sm_ldap_clear(lmap) lmap->ldap_sizelimit = LDAP_NO_LIMIT; # ifdef LDAP_REFERRALS lmap->ldap_options = LDAP_OPT_REFERRALS; -# else /* LDAP_REFERRALS */ +# else lmap->ldap_options = 0; -# endif /* LDAP_REFERRALS */ +# endif lmap->ldap_attrsep = '\0'; lmap->ldap_binddn = NULL; lmap->ldap_secret = NULL; @@ -101,6 +100,147 @@ sm_ldap_clear(lmap) lmap->ldap_multi_args = false; } +# if _FFR_SM_LDAP_DBG && defined(LBER_OPT_LOG_PRINT_FN) +static void ldap_debug_cb __P((const char *msg)); + +static void +ldap_debug_cb(msg) + const char *msg; +{ + if (sm_debug_active(&SmLDAPTrace, 4)) + sm_dprintf("%s", msg); +} +# endif /* _FFR_SM_LDAP_DBG && defined(LBER_OPT_LOG_PRINT_FN) */ + + +# if LDAP_NETWORK_TIMEOUT && defined(LDAP_OPT_NETWORK_TIMEOUT) +# define SET_LDAP_TMO(ld, lmap) \ + do \ + { \ + if (lmap->ldap_networktmo > 0) \ + { \ + struct timeval tmo; \ + \ + if (sm_debug_active(&SmLDAPTrace, 9)) \ + sm_dprintf("ldap_networktmo=%d\n", \ + lmap->ldap_networktmo); \ + tmo.tv_sec = lmap->ldap_networktmo; \ + tmo.tv_usec = 0; \ + ldap_set_option(ld, LDAP_OPT_NETWORK_TIMEOUT, &tmo); \ + } \ + } while (0) +# else /* LDAP_NETWORK_TIMEOUT && defined(LDAP_OPT_NETWORK_TIMEOUT) */ +# define SET_LDAP_TMO(ld, lmap) +# endif /* LDAP_NETWORK_TIMEOUT && defined(LDAP_OPT_NETWORK_TIMEOUT) */ + +/* +** SM_LDAP_SETOPTSG -- set some (global) LDAP options +** +** Parameters: +** lmap -- LDAP map information +** +** Returns: +** None. +** +*/ + +# if _FFR_SM_LDAP_DBG +static bool dbg_init = false; +# endif +# if SM_CONF_LDAP_INITIALIZE +static void sm_ldap_setoptsg __P((SM_LDAP_STRUCT *lmap)); +static void +sm_ldap_setoptsg(lmap) + SM_LDAP_STRUCT *lmap; +{ +# if USE_LDAP_SET_OPTION + + SET_LDAP_TMO(NULL, lmap); + +# if _FFR_SM_LDAP_DBG + if (!dbg_init && sm_debug_active(&SmLDAPTrace, 1) && + lmap->ldap_debug != 0) + { + int r; +# if defined(LBER_OPT_LOG_PRINT_FN) + r = ber_set_option(NULL, LBER_OPT_LOG_PRINT_FN, ldap_debug_cb); +# endif + if (sm_debug_active(&SmLDAPTrace, 9)) + sm_dprintf("ldap_debug0=%d\n", lmap->ldap_debug); + r = ber_set_option(NULL, LBER_OPT_DEBUG_LEVEL, + &(lmap->ldap_debug)); + if (sm_debug_active(&SmLDAPTrace, 9) && r != LDAP_OPT_SUCCESS) + sm_dprintf("ber_set_option=%d\n", r); + r = ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, + &(lmap->ldap_debug)); + if (sm_debug_active(&SmLDAPTrace, 9) && r != LDAP_OPT_SUCCESS) + sm_dprintf("ldap_set_option=%d\n", r); + dbg_init = true; + } +# endif /* _FFR_SM_LDAP_DBG */ +# endif /* USE_LDAP_SET_OPTION */ +} +# endif /* SM_CONF_LDAP_INITIALIZE */ + +/* +** SM_LDAP_SETOPTS -- set LDAP options +** +** Parameters: +** ld -- LDAP session handle +** lmap -- LDAP map information +** +** Returns: +** None. +** +*/ + +void +sm_ldap_setopts(ld, lmap) + LDAP *ld; + SM_LDAP_STRUCT *lmap; +{ +# if USE_LDAP_SET_OPTION + if (lmap->ldap_version != 0) + { + ldap_set_option(ld, LDAP_OPT_PROTOCOL_VERSION, + &lmap->ldap_version); + } + ldap_set_option(ld, LDAP_OPT_DEREF, &lmap->ldap_deref); + if (bitset(LDAP_OPT_REFERRALS, lmap->ldap_options)) + ldap_set_option(ld, LDAP_OPT_REFERRALS, LDAP_OPT_ON); + else + ldap_set_option(ld, LDAP_OPT_REFERRALS, LDAP_OPT_OFF); + ldap_set_option(ld, LDAP_OPT_SIZELIMIT, &lmap->ldap_sizelimit); + ldap_set_option(ld, LDAP_OPT_TIMELIMIT, &lmap->ldap_timelimit); + SET_LDAP_TMO(ld, lmap); +# if _FFR_SM_LDAP_DBG + if ((!dbg_init || ld != NULL) && sm_debug_active(&SmLDAPTrace, 1) + && lmap->ldap_debug > 0) + { + int r; + + if (sm_debug_active(&SmLDAPTrace, 9)) + sm_dprintf("ldap_debug=%d, dbg_init=%d\n", + lmap->ldap_debug, dbg_init); + r = ldap_set_option(ld, LDAP_OPT_DEBUG_LEVEL, + &(lmap->ldap_debug)); + if (sm_debug_active(&SmLDAPTrace, 9) && r != LDAP_OPT_SUCCESS) + sm_dprintf("ldap_set_option=%d\n", r); + } +# endif /* _FFR_SM_LDAP_DBG */ +# ifdef LDAP_OPT_RESTART + ldap_set_option(ld, LDAP_OPT_RESTART, LDAP_OPT_ON); +# endif + +# else /* USE_LDAP_SET_OPTION */ + /* From here on in we can use ldap internal timelimits */ + ld->ld_deref = lmap->ldap_deref; + ld->ld_options = lmap->ldap_options; + ld->ld_sizelimit = lmap->ldap_sizelimit; + ld->ld_timelimit = lmap->ldap_timelimit; +# endif /* USE_LDAP_SET_OPTION */ +} + /* ** SM_LDAP_START -- actually connect to an LDAP server ** @@ -115,15 +255,36 @@ sm_ldap_clear(lmap) ** Populates lmap->ldap_ld. */ +# if !USE_LDAP_INIT || !LDAP_NETWORK_TIMEOUT static jmp_buf LDAPTimeout; +static void ldaptimeout __P((int)); -#define SM_LDAP_SETTIMEOUT(to) \ +/* ARGSUSED */ +static void +ldaptimeout(unused) + int unused; +{ + /* + ** NOTE: THIS CAN BE CALLED FROM A SIGNAL HANDLER. DO NOT ADD + ** ANYTHING TO THIS ROUTINE UNLESS YOU KNOW WHAT YOU ARE + ** DOING. + */ + + errno = ETIMEDOUT; + longjmp(LDAPTimeout, 1); +} + + +#define SM_LDAP_SETTIMEOUT(to, where) \ do \ { \ if (to != 0) \ { \ if (setjmp(LDAPTimeout) != 0) \ { \ + if (sm_debug_active(&SmLDAPTrace, 9)) \ + sm_dprintf("ldap_settimeout(%s)=triggered\n",\ + where); \ errno = ETIMEDOUT; \ return false; \ } \ @@ -137,17 +298,21 @@ do \ if (ev != NULL) \ sm_clrevent(ev); \ } while (0) +#endif /* !USE_LDAP_INIT || !LDAP_NETWORK_TIMEOUT */ bool sm_ldap_start(name, lmap) char *name; SM_LDAP_STRUCT *lmap; { - int bind_result; int save_errno = 0; char *id; +# if !USE_LDAP_INIT || !LDAP_NETWORK_TIMEOUT SM_EVENT *ev = NULL; +# endif LDAP *ld = NULL; + struct timeval tmo; + int msgid, err, r; if (sm_debug_active(&SmLDAPTrace, 2)) sm_dprintf("ldapmap_start(%s)\n", name == NULL ? "" : name); @@ -172,10 +337,15 @@ sm_ldap_start(name, lmap) if (lmap->ldap_uri != NULL) { #if SM_CONF_LDAP_INITIALIZE + if (sm_debug_active(&SmLDAPTrace, 9)) + sm_dprintf("ldap_initialize(%s)\n", lmap->ldap_uri); /* LDAP server supports URIs so use them directly */ save_errno = ldap_initialize(&ld, lmap->ldap_uri); + if (sm_debug_active(&SmLDAPTrace, 9)) + sm_dprintf("ldap_initialize(%s)=%d, ld=%p\n", lmap->ldap_uri, save_errno, ld); + sm_ldap_setoptsg(lmap); + #else /* SM_CONF_LDAP_INITIALIZE */ - int err; LDAPURLDesc *ludp = NULL; /* Blast apart URL and use the ldap_init/ldap_open below */ @@ -201,8 +371,11 @@ sm_ldap_start(name, lmap) if (ld == NULL) { # if USE_LDAP_INIT + if (sm_debug_active(&SmLDAPTrace, 9)) + sm_dprintf("ldap_init(%s, %d)\n", lmap->ldap_host, lmap->ldap_port); ld = ldap_init(lmap->ldap_host, lmap->ldap_port); save_errno = errno; + # else /* USE_LDAP_INIT */ /* ** If using ldap_open(), the actual connection to the server @@ -210,7 +383,10 @@ sm_ldap_start(name, lmap) ** the connection happens at bind time. */ - SM_LDAP_SETTIMEOUT(lmap->ldap_timeout.tv_sec); + if (sm_debug_active(&SmLDAPTrace, 9)) + sm_dprintf("ldap_open(%s, %d)\n", lmap->ldap_host, lmap->ldap_port); + + SM_LDAP_SETTIMEOUT(lmap->ldap_timeout.tv_sec, "ldap_open"); ld = ldap_open(lmap->ldap_host, lmap->ldap_port); save_errno = errno; @@ -221,18 +397,21 @@ sm_ldap_start(name, lmap) errno = save_errno; if (ld == NULL) + { + if (sm_debug_active(&SmLDAPTrace, 7)) + sm_dprintf("FAIL: ldap_open(%s, %d)=%d\n", lmap->ldap_host, lmap->ldap_port, save_errno); return false; + } sm_ldap_setopts(ld, lmap); - -# if USE_LDAP_INIT +# if USE_LDAP_INIT && !LDAP_NETWORK_TIMEOUT /* ** If using ldap_init(), the actual connection to the server ** happens at ldap_bind_s() so we need the timeout here. */ - SM_LDAP_SETTIMEOUT(lmap->ldap_timeout.tv_sec); -# endif /* USE_LDAP_INIT */ + SM_LDAP_SETTIMEOUT(lmap->ldap_timeout.tv_sec, "ldap_bind"); +# endif /* USE_LDAP_INIT && !LDAP_NETWORK_TIMEOUT */ # ifdef LDAP_AUTH_KRBV4 if (lmap->ldap_method == LDAP_AUTH_KRBV4 && @@ -248,17 +427,68 @@ sm_ldap_start(name, lmap) } # endif /* LDAP_AUTH_KRBV4 */ - bind_result = ldap_bind_s(ld, lmap->ldap_binddn, - lmap->ldap_secret, lmap->ldap_method); +# if LDAP_NETWORK_TIMEOUT + tmo.tv_sec = lmap->ldap_networktmo; +# else + tmo.tv_sec = lmap->ldap_timeout.tv_sec; +# endif + tmo.tv_usec = 0; -# if USE_LDAP_INIT + if (sm_debug_active(&SmLDAPTrace, 9)) + sm_dprintf("ldap_bind(%s)\n", lmap->ldap_uri); + errno = 0; + msgid = ldap_bind(ld, lmap->ldap_binddn, lmap->ldap_secret, + lmap->ldap_method); + save_errno = errno; + if (sm_debug_active(&SmLDAPTrace, 9)) + sm_dprintf("ldap_bind(%s)=%d, errno=%d, tmo=%ld\n", + lmap->ldap_uri, msgid, save_errno, + (long) tmo.tv_sec); + if (-1 == msgid) + { + r = -1; + goto fail; + } + + errno = 0; + r = ldap_result(ld, msgid, LDAP_MSG_ALL, + tmo.tv_sec == 0 ? NULL : &(tmo), &(lmap->ldap_res)); + if (sm_debug_active(&SmLDAPTrace, 9)) + sm_dprintf("ldap_result(%s)=%d, errno=%d\n", lmap->ldap_uri, r, errno); + if (-1 == r) + goto fail; + if (0 == r) + { + save_errno = ETIMEDOUT; + r = -1; + goto fail; + } + r = ldap_parse_result(ld, lmap->ldap_res, &err, NULL, NULL, NULL, NULL, + 1); + if (sm_debug_active(&SmLDAPTrace, 9)) + sm_dprintf("ldap_parse_result(%s)=%d, err=%d\n", lmap->ldap_uri, r, err); + if (r != LDAP_SUCCESS) + goto fail; + if (err != LDAP_SUCCESS) + { + r = -1; + goto fail; + } + +# if USE_LDAP_INIT && !LDAP_NETWORK_TIMEOUT /* clear the event if it has not sprung */ SM_LDAP_CLEARTIMEOUT(); -# endif /* USE_LDAP_INIT */ + if (sm_debug_active(&SmLDAPTrace, 9)) + sm_dprintf("ldap_cleartimeout(%s)\n", lmap->ldap_uri); +# endif /* USE_LDAP_INIT && !LDAP_NETWORK_TIMEOUT */ - if (bind_result != LDAP_SUCCESS) + if (r != LDAP_SUCCESS) { - errno = bind_result + E_LDAPBASE; + fail: + if (-1 == r) + errno = save_errno; + else + errno = r + E_LDAPBASE; return false; } @@ -268,21 +498,6 @@ sm_ldap_start(name, lmap) return true; } -/* ARGSUSED */ -static void -ldaptimeout(unused) - int unused; -{ - /* - ** NOTE: THIS CAN BE CALLED FROM A SIGNAL HANDLER. DO NOT ADD - ** ANYTHING TO THIS ROUTINE UNLESS YOU KNOW WHAT YOU ARE - ** DOING. - */ - - errno = ETIMEDOUT; - longjmp(LDAPTimeout, 1); -} - /* ** SM_LDAP_SEARCH_M -- initiate multi-key LDAP search ** @@ -292,7 +507,7 @@ ldaptimeout(unused) ** Parameters: ** lmap -- LDAP map information ** argv -- key vector of substitutions in LDAP filter -** NOTE: argv must have SM_LDAP_ARGS elements to prevent +** NOTE: argv must have SM_LDAP_ARGS elements to prevent ** out of bound array references ** ** Returns: @@ -1361,59 +1576,6 @@ sm_ldap_close(lmap) lmap->ldap_ld = NULL; lmap->ldap_pid = 0; } - -/* -** SM_LDAP_SETOPTS -- set LDAP options -** -** Parameters: -** ld -- LDAP session handle -** lmap -- LDAP map information -** -** Returns: -** None. -** -*/ - -void -sm_ldap_setopts(ld, lmap) - LDAP *ld; - SM_LDAP_STRUCT *lmap; -{ -# if USE_LDAP_SET_OPTION - if (lmap->ldap_version != 0) - { - ldap_set_option(ld, LDAP_OPT_PROTOCOL_VERSION, - &lmap->ldap_version); - } - ldap_set_option(ld, LDAP_OPT_DEREF, &lmap->ldap_deref); - if (bitset(LDAP_OPT_REFERRALS, lmap->ldap_options)) - ldap_set_option(ld, LDAP_OPT_REFERRALS, LDAP_OPT_ON); - else - ldap_set_option(ld, LDAP_OPT_REFERRALS, LDAP_OPT_OFF); - ldap_set_option(ld, LDAP_OPT_SIZELIMIT, &lmap->ldap_sizelimit); - ldap_set_option(ld, LDAP_OPT_TIMELIMIT, &lmap->ldap_timelimit); -# if _FFR_LDAP_NETWORK_TIMEOUT && defined(LDAP_OPT_NETWORK_TIMEOUT) - if (lmap->ldap_networktmo > 0) - { - struct timeval tmo; - - tmo.tv_sec = lmap->ldap_networktmo; - tmo.tv_usec = 0; - ldap_set_option(ld, LDAP_OPT_NETWORK_TIMEOUT, &tmo); - } -# endif /* _FFR_LDAP_NETWORK_TIMEOUT && defined(LDAP_OPT_NETWORK_TIMEOUT) */ -# ifdef LDAP_OPT_RESTART - ldap_set_option(ld, LDAP_OPT_RESTART, LDAP_OPT_ON); -# endif /* LDAP_OPT_RESTART */ -# else /* USE_LDAP_SET_OPTION */ - /* From here on in we can use ldap internal timelimits */ - ld->ld_deref = lmap->ldap_deref; - ld->ld_options = lmap->ldap_options; - ld->ld_sizelimit = lmap->ldap_sizelimit; - ld->ld_timelimit = lmap->ldap_timelimit; -# endif /* USE_LDAP_SET_OPTION */ -} - /* ** SM_LDAP_GETERRNO -- get ldap errno value ** @@ -1432,11 +1594,16 @@ sm_ldap_geterrno(ld) int err = LDAP_SUCCESS; # if defined(LDAP_VERSION_MAX) && LDAP_VERSION_MAX >= 3 - (void) ldap_get_option(ld, LDAP_OPT_ERROR_NUMBER, &err); -# else /* defined(LDAP_VERSION_MAX) && LDAP_VERSION_MAX >= 3 */ +# ifdef LDAP_OPT_RESULT_CODE +# define LDAP_GET_RESULT_CODE LDAP_OPT_RESULT_CODE +# else +# define LDAP_GET_RESULT_CODE LDAP_OPT_ERROR_NUMBER +# endif + (void) ldap_get_option(ld, LDAP_GET_RESULT_CODE, &err); +# else # ifdef LDAP_OPT_SIZELIMIT err = ldap_get_lderrno(ld, NULL, NULL); -# else /* LDAP_OPT_SIZELIMIT */ +# else err = ld->ld_errno; /* diff --git a/libsm/local.h b/libsm/local.h index 304a52e292ce..0118d6169676 100644 --- a/libsm/local.h +++ b/libsm/local.h @@ -23,7 +23,7 @@ #include #if !SM_CONF_MEMCHR # include -#endif /* !SM_CONF_MEMCHR */ +#endif #include int sm_flush __P((SM_FILE_T *, int *)); diff --git a/libsm/makebuf.c b/libsm/makebuf.c index 8d05e68bcb9c..2542d2982d6a 100644 --- a/libsm/makebuf.c +++ b/libsm/makebuf.c @@ -114,7 +114,7 @@ sm_whatbuf(fp, bufsize, couldbetty) #if SM_IO_MAX_BUF_FILE > 0 if (S_ISREG(st.st_mode) && st.st_blksize > SM_IO_MAX_BUF_FILE) st.st_blksize = SM_IO_MAX_BUF_FILE; -#endif /* SM_IO_MAX_BUF_FILE > 0 */ +#endif #if SM_IO_MAX_BUF > 0 || SM_IO_MIN_BUF > 0 if (!S_ISREG(st.st_mode)) @@ -129,7 +129,7 @@ sm_whatbuf(fp, bufsize, couldbetty) # if SM_IO_MIN_BUF > 0 if (st.st_blksize < SM_IO_MIN_BUF) st.st_blksize = SM_IO_MIN_BUF; -# endif /* SM_IO_MIN_BUF > 0 */ +# endif } #endif /* SM_IO_MAX_BUF > 0 || SM_IO_MIN_BUF > 0 */ diff --git a/libsm/mbdb.c b/libsm/mbdb.c index 3d7426cd5315..ff2d3d8150fa 100644 --- a/libsm/mbdb.c +++ b/libsm/mbdb.c @@ -29,13 +29,13 @@ SM_RCSID("@(#)$Id: mbdb.c,v 1.43 2014-01-08 17:03:15 ca Exp $") #include # ifdef EX_OK # undef EX_OK /* for SVr4.2 SMP */ -# endif /* EX_OK */ +# endif #include #if LDAPMAP # if _LDAP_EXAMPLE_ # include -# endif /* _LDAP_EXAMPLE_ */ +# endif #endif /* LDAPMAP */ typedef struct @@ -65,7 +65,7 @@ static SM_MBDB_TYPE_T SmMbdbTypes[] = #if LDAPMAP # if _LDAP_EXAMPLE_ { "ldap", mbdb_ldap_initialize, mbdb_ldap_lookup, mbdb_ldap_terminate }, -# endif /* _LDAP_EXAMPLE_ */ +# endif #endif /* LDAPMAP */ { NULL, NULL, NULL, NULL } }; @@ -267,7 +267,7 @@ sm_pwfullname(gecos, user, buf, buflen) if ((unsigned char) *p >= 128) *bp++ = Latin1ToASCII[(unsigned char) *p - 128]; else -#endif /* _FFR_HANDLE_ISO8859_GECOS */ +#endif *bp++ = *p; } } @@ -408,15 +408,15 @@ mbdb_pw_terminate() # ifndef MBDB_LDAP_FILTER # define MBDB_LDAP_FILTER "(&(objectClass=posixAccount)(uid=%0))" -# endif /* MBDB_LDAP_FILTER */ +# endif # ifndef MBDB_DEFAULT_LDAP_BASEDN # define MBDB_DEFAULT_LDAP_BASEDN NULL -# endif /* MBDB_DEFAULT_LDAP_BASEDN */ +# endif # ifndef MBDB_DEFAULT_LDAP_SERVER # define MBDB_DEFAULT_LDAP_SERVER NULL -# endif /* MBDB_DEFAULT_LDAP_SERVER */ +# endif /* ** MBDB_LDAP_INITIALIZE -- initialize LDAP version @@ -559,7 +559,7 @@ mbdb_ldap_lookup(name, user) { int rc; - /* + /* ** We may have gotten an LDAP_RES_SEARCH_RESULT response ** with an error inside it, so we have to extract that ** with ldap_parse_result(). This can happen when talking diff --git a/libsm/memstat.c b/libsm/memstat.c index a58b4c2ed3e8..4ef49fad31d5 100644 --- a/libsm/memstat.c +++ b/libsm/memstat.c @@ -111,7 +111,7 @@ sm_memstat_open() return (errno != 0) ? errno : -1; kst = kstat_lookup(kc, "unix", 0, (name != NULL) ? name : "system_pages"); - if (kst == 0) + if (kst == NULL) return (errno != 0) ? errno : -2; return 0; } diff --git a/libsm/niprop.c b/libsm/niprop.c index ca60e38f53c5..a5056deb34c6 100644 --- a/libsm/niprop.c +++ b/libsm/niprop.c @@ -99,7 +99,7 @@ ni_propval(keydir, keyprop, keyval, valprop, sepchar) if (tTd(38, 21)) sm_dprintf("ni_propval(%s, %s, %s, %s, %d) keybuf='%s'\n", keydir, keyprop, keyval, valprop, sepchar, keybuf); -#endif /* 0 */ +#endif /* ** If the passed directory and property name are found @@ -117,7 +117,7 @@ ni_propval(keydir, keyprop, keyval, valprop, sepchar) #if 0 if (tTd(38, 20)) sm_dprintf("ni_open(LOCAL) = %d\n", nis); -#endif /* 0 */ +#endif } else { @@ -128,7 +128,7 @@ ni_propval(keydir, keyprop, keyval, valprop, sepchar) #if 0 if (tTd(38, 20)) sm_dprintf("ni_open(PARENT) = %d\n", nis); -#endif /* 0 */ +#endif } /* @@ -160,7 +160,7 @@ ni_propval(keydir, keyprop, keyval, valprop, sepchar) if (tTd(38, 20)) sm_dprintf("ni_lookupprop: len=%d\n", ninl.ni_namelist_len); -#endif /* 0 */ +#endif /* ** See if we have an acceptable number of values. @@ -206,7 +206,7 @@ ni_propval(keydir, keyprop, keyval, valprop, sepchar) #if 0 if (tTd(38, 20)) sm_dprintf("ni_propval returns: '%s'\n", propval); -#endif /* 0 */ +#endif return propval; } diff --git a/libsm/notify.c b/libsm/notify.c new file mode 100644 index 000000000000..b529d6ffa5b6 --- /dev/null +++ b/libsm/notify.c @@ -0,0 +1,205 @@ +/* + * Copyright (c) 2016 Proofpoint, 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. + * + */ + +#include + +#include /* FDSET_CAST */ +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include /* for memset() */ + +#if SM_NOTIFY_DEBUG +#define SM_DBG(p) fprintf p +#else +#define SM_DBG(p) +#endif + +static int Notifypipe[2]; +#define NotifyRDpipe Notifypipe[0] +#define NotifyWRpipe Notifypipe[1] + +#define CLOSEFD(fd) do { \ + if ((fd) != -1) { \ + (void) close(fd); \ + fd = - 1; \ + } \ + } while (0) \ + + +/* +** SM_NOTIFY_INIT -- initialize notify system +** +** Parameters: +** flags -- ignored +** +** Returns: +** 0: success +** <0: -errno +*/ + +int +sm_notify_init(flags) + int flags; +{ + if (pipe(Notifypipe) < 0) + return -errno; + return 0; +} + +/* +** SM_NOTIFY_START -- start notify system +** +** Parameters: +** owner -- owner. +** flags -- currently ignored. +** +** Returns: +** 0: success +** <0: -errno +*/ + +int +sm_notify_start(owner, flags) + bool owner; + int flags; +{ + int r; + + r = 0; + if (owner) + CLOSEFD(NotifyWRpipe); + else + CLOSEFD(NotifyRDpipe); + return r; +} + +/* +** SM_NOTIFY_STOP -- stop notify system +** +** Parameters: +** owner -- owner. +** flags -- currently ignored. +** +** Returns: +** 0: success +** <0: -errno +*/ + +int +sm_notify_stop(owner, flags) + bool owner; + int flags; +{ + if (owner) + CLOSEFD(NotifyRDpipe); + else + CLOSEFD(NotifyWRpipe); + return 0; +} + +/* +** SM_NOTIFY_SND -- send notification +** +** Parameters: +** buf -- where to write data +** buflen -- len of buffer +** +** Returns: +** 0: success +** <0: -errno +*/ + +int +sm_notify_snd(buf, buflen) + char *buf; + size_t buflen; +{ + int r; + int save_errno; + + SM_REQUIRE(buf != NULL); + SM_REQUIRE(buflen > 0); + if (NotifyWRpipe < 0) + return -EINVAL; + + r = write(NotifyWRpipe, buf, buflen); + save_errno = errno; + SM_DBG((stderr, "write=%d, fd=%d, e=%d\n", r, NotifyWRpipe, save_errno)); + return r >= 0 ? 0 : -save_errno; +} + +/* +** SM_NOTIFY_RCV -- receive notification +** +** Parameters: +** buf -- where to write data +** buflen -- len of buffer +** tmo -- timeout +** +** Returns: +** 0: success +** <0: -errno +*/ + +int +sm_notify_rcv(buf, buflen, tmo) + char *buf; + size_t buflen; + int tmo; +{ + int r; + int save_errno; + fd_set readfds; + struct timeval timeout; + + SM_REQUIRE(buf != NULL); + SM_REQUIRE(buflen > 0); + if (NotifyRDpipe < 0) + return -EINVAL; + FD_ZERO(&readfds); + SM_FD_SET(NotifyRDpipe, &readfds); + timeout.tv_sec = tmo; + timeout.tv_usec = 0; + + do { + r = select(NotifyRDpipe + 1, FDSET_CAST &readfds, NULL, NULL, &timeout); + save_errno = errno; + SM_DBG((stderr, "select=%d, fd=%d, e=%d\n", r, NotifyRDpipe, save_errno)); + } while (r < 0 && save_errno == EINTR); + + if (r <= 0) + { + SM_DBG((stderr, "select=%d, e=%d\n", r, save_errno)); + return -ETIMEDOUT; + } + + /* bogus... need to check again? */ + if (!FD_ISSET(NotifyRDpipe, &readfds)) + return -ETIMEDOUT; + + r = read(NotifyRDpipe, buf, buflen); + save_errno = errno; + SM_DBG((stderr, "read=%d, e=%d\n", r, save_errno)); + if (r == 0) + return -1; /* ??? */ + if (r < 0) + return -save_errno; + return r; +} diff --git a/libsm/refill.c b/libsm/refill.c index e13c831bed42..af3a84442f17 100644 --- a/libsm/refill.c +++ b/libsm/refill.c @@ -80,7 +80,7 @@ static int sm_lflush __P((SM_FILE_T *, int *)); do \ { \ (sel_ret) = select((fd) + 1, &sm_io_to_mask, NULL, \ - &sm_io_x_mask, (to)); \ + &sm_io_x_mask, (to)); \ } while ((sel_ret) < 0 && errno == EINTR); \ if ((sel_ret) < 0) \ { \ @@ -95,7 +95,7 @@ static int sm_lflush __P((SM_FILE_T *, int *)); errno = EAGAIN; \ return SM_IO_EOF; \ } \ - /* calulate wall-clock time used */ \ + /* calculate wall-clock time used */ \ if (gettimeofday(&sm_io_to_after, NULL) < 0) \ return SM_IO_EOF; \ timersub(&sm_io_to_after, &sm_io_to_before, &sm_io_to_diff); \ diff --git a/libsm/rewind.c b/libsm/rewind.c index 9203ddb32f65..2bbb26d2a9a9 100644 --- a/libsm/rewind.c +++ b/libsm/rewind.c @@ -22,7 +22,7 @@ SM_RCSID("@(#)$Id: rewind.c,v 1.19 2013-11-22 20:51:43 ca Exp $") /* ** SM_IO_REWIND -- rewind the file ** -** Seeks the file to the begining and clears any outstanding errors. +** Seeks the file to the beginning and clears any outstanding errors. ** ** Parameters: ** fp -- the flie pointer for rewind diff --git a/libsm/rpool.c b/libsm/rpool.c index 2624123cca91..9d883ffca194 100644 --- a/libsm/rpool.c +++ b/libsm/rpool.c @@ -22,7 +22,7 @@ SM_RCSID("@(#)$Id: rpool.c,v 1.29 2013-11-22 20:51:43 ca Exp $") #include #if _FFR_PERF_RPOOL # include -#endif /* _FFR_PERF_RPOOL */ +#endif const char SmRpoolMagic[] = "sm_rpool"; @@ -181,7 +181,7 @@ sm_rpool_malloc_x(rpool, size) { #if _FFR_PERF_RPOOL ++rpool->sm_nbigblocks; -#endif /* _FFR_PERF_RPOOL */ +#endif return sm_rpool_allocblock_x(rpool, size); } SM_ASSERT(rpool->sm_bigobjectsize <= rpool->sm_poolsize); @@ -190,7 +190,7 @@ sm_rpool_malloc_x(rpool, size) rpool->sm_poolavail = rpool->sm_poolsize - size; #if _FFR_PERF_RPOOL ++rpool->sm_npools; -#endif /* _FFR_PERF_RPOOL */ +#endif return ptr; } @@ -277,7 +277,7 @@ sm_rpool_malloc(rpool, size) { #if _FFR_PERF_RPOOL ++rpool->sm_nbigblocks; -#endif /* _FFR_PERF_RPOOL */ +#endif return sm_rpool_allocblock(rpool, size); } SM_ASSERT(rpool->sm_bigobjectsize <= rpool->sm_poolsize); @@ -288,7 +288,7 @@ sm_rpool_malloc(rpool, size) rpool->sm_poolavail = rpool->sm_poolsize - size; #if _FFR_PERF_RPOOL ++rpool->sm_npools; -#endif /* _FFR_PERF_RPOOL */ +#endif return ptr; } @@ -336,7 +336,7 @@ sm_rpool_new_x(parent) #if _FFR_PERF_RPOOL rpool->sm_nbigblocks = 0; rpool->sm_npools = 0; -#endif /* _FFR_PERF_RPOOL */ +#endif return rpool; } diff --git a/libsm/sem.c b/libsm/sem.c index 23b2de70f318..ac28a61ae353 100644 --- a/libsm/sem.c +++ b/libsm/sem.c @@ -159,7 +159,7 @@ sm_sem_rel(semid, semnum, timeout) #if PARANOID /* XXX should we check whether the value is already 0 ? */ SM_REQUIRE(sm_get_sem(semid, semnum) > 0); -#endif /* PARANOID */ +#endif semops[0].sem_num = semnum; semops[0].sem_op = 1; diff --git a/libsm/signal.c b/libsm/signal.c index 469b0fd7050b..bfbeaf555c2e 100644 --- a/libsm/signal.c +++ b/libsm/signal.c @@ -12,7 +12,7 @@ SM_RCSID("@(#)$Id: signal.c,v 1.18 2013-11-22 20:51:43 ca Exp $") #if SM_CONF_SETITIMER # include -#endif /* SM_CONF_SETITIMER */ +#endif #include #include #include @@ -42,7 +42,7 @@ sm_signal(sig, handler) { # if defined(SA_RESTART) || (!defined(SYS5SIGNALS) && !defined(BSD4_3)) struct sigaction n, o; -# endif /* defined(SA_RESTART) || (!defined(SYS5SIGNALS) && !defined(BSD4_3)) */ +# endif /* ** First, try for modern signal calls @@ -54,10 +54,10 @@ sm_signal(sig, handler) # if USE_SA_SIGACTION n.sa_sigaction = (void(*)(int, siginfo_t *, void *)) handler; n.sa_flags = SA_RESTART|SA_SIGINFO; -# else /* USE_SA_SIGACTION */ +# else n.sa_handler = handler; n.sa_flags = SA_RESTART; -# endif /* USE_SA_SIGACTION */ +# endif if (sigaction(sig, &n, &o) < 0) return SIG_ERR; return o.sa_handler; @@ -71,9 +71,9 @@ sm_signal(sig, handler) # if defined(SYS5SIGNALS) || defined(BSD4_3) # ifdef BSD4_3 return signal(sig, handler); -# else /* BSD4_3 */ +# else return sigset(sig, handler); -# endif /* BSD4_3 */ +# endif # else /* defined(SYS5SIGNALS) || defined(BSD4_3) */ /* @@ -108,7 +108,7 @@ sm_blocksignal(sig) # ifdef BSD4_3 # ifndef sigmask # define sigmask(s) (1 << ((s) - 1)) -# endif /* ! sigmask */ +# endif return (sigblock(sigmask(sig)) & sigmask(sig)) != 0; # else /* BSD4_3 */ # ifdef ALTOS_SYSTEM_V @@ -192,7 +192,7 @@ pend_signal(sig) int save_errno = errno; #if SM_CONF_SETITIMER struct itimerval clr; -#endif /* SM_CONF_SETITIMER */ +#endif /* ** Don't want to interrupt something critical, hence delay @@ -266,7 +266,7 @@ sm_allsignals(block) # ifdef BSD4_3 # ifndef sigmask # define sigmask(s) (1 << ((s) - 1)) -# endif /* ! sigmask */ +# endif if (block) { int mask = 0; diff --git a/libsm/stdio.c b/libsm/stdio.c index 16277c09a8ec..7e045fa56fec 100644 --- a/libsm/stdio.c +++ b/libsm/stdio.c @@ -93,7 +93,7 @@ sm_stdopen(fp, info, flags, rpool) #ifdef O_BINARY if (SM_IS_BINARY(flags)) oflags |= O_BINARY; -#endif /* O_BINARY */ +#endif fp->f_file = open(path, oflags, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH); if (fp->f_file < 0) @@ -118,7 +118,7 @@ sm_stdopen(fp, info, flags, rpool) ** Success: number of bytes read ** ** Side Effects: -** Updates internal offset into file. +** Updates internal offset for file. */ ssize_t @@ -433,7 +433,7 @@ sm_stdfdopen(fp, info, flags, rpool) #ifdef O_BINARY if (SM_IS_BINARY(flags)) oflags |= O_BINARY; -#endif /* O_BINARY */ +#endif /* Make sure the mode the user wants is a subset of the actual mode. */ if ((fdflags = fcntl(fd, F_GETFL, 0)) < 0) diff --git a/libsm/strdup.c b/libsm/strdup.c index 3ddf73b4629e..457c09970d94 100644 --- a/libsm/strdup.c +++ b/libsm/strdup.c @@ -59,7 +59,7 @@ sm_strndup_x(s, n) char * sm_strdup(s) - char *s; + const char *s; { size_t l; char *d; diff --git a/libsm/strerror.c b/libsm/strerror.c index b6b0b668ab5a..a6130f8612c7 100644 --- a/libsm/strerror.c +++ b/libsm/strerror.c @@ -29,7 +29,7 @@ SM_RCSID("@(#)$Id: strerror.c,v 1.24 2013-11-22 20:51:43 ca Exp $") #if !defined(ERRLIST_PREDEFINED) extern char *sys_errlist[]; extern int sys_nerr; -#endif /* !defined(ERRLIST_PREDEFINED) */ +#endif #if !HASSTRERROR diff --git a/libsm/string.c b/libsm/string.c index 2b06e2c7ec78..83577f19a84e 100644 --- a/libsm/string.c +++ b/libsm/string.c @@ -54,3 +54,34 @@ stripquotes(s) *q++ = c; } while (c != '\0'); } + +/* +** UNFOLDSTRIPQUOTES -- Strip quotes & quote bits from a string. +** +** Parameters: +** s -- the string to strip. +** +** Returns: +** none. +*/ + +void +unfoldstripquotes(s) + char *s; +{ + char *p, *q, c; + + if (s == NULL) + return; + + p = q = s; + do + { + c = *p++; + if (c == '\\' || c == '\n') + c = *p++; + else if (c == '"') + continue; + *q++ = c; + } while (c != '\0'); +} diff --git a/libsm/strio.c b/libsm/strio.c index 4fae8070ad00..de13af683deb 100644 --- a/libsm/strio.c +++ b/libsm/strio.c @@ -224,18 +224,18 @@ sm_stropen(fp, info, flags, rpool) #if SM_RPOOL s = sm_rpool_malloc_x(rpool, sizeof(SM_STR_OBJ_T)); -#else /* SM_RPOOL */ +#else s = sm_malloc(sizeof(SM_STR_OBJ_T)); if (s == NULL) return -1; -#endif /* SM_RPOOL */ +#endif fp->f_cookie = s; s->strio_rpool = rpool; s->strio_offset = 0; s->strio_size = 0; s->strio_base = NULL; - s->strio_end = 0; + s->strio_end = NULL; switch (flags) { @@ -297,7 +297,7 @@ sm_strclose(fp) #if !SM_RPOOL sm_free(s->strio_base); s->strio_base = NULL; -#endif /* !SM_RPOOL */ +#endif return 0; } diff --git a/libsm/strto.c b/libsm/strto.c index 7f53424faf5c..af741533e3b4 100644 --- a/libsm/strto.c +++ b/libsm/strto.c @@ -158,7 +158,7 @@ sm_strtoll(nptr, endptr, base) } } } - if (endptr != 0) + if (endptr != NULL) *endptr = (char *) (any ? s - 1 : nptr); return acc; } @@ -248,7 +248,7 @@ sm_strtoull(nptr, endptr, base) } if (neg && any > 0) acc = -((LONGLONG_T) acc); - if (endptr != 0) + if (endptr != NULL) *endptr = (char *) (any ? s - 1 : nptr); return acc; } diff --git a/libsm/syslogio.c b/libsm/syslogio.c index 78cf700aff35..16f3aeafd0c5 100644 --- a/libsm/syslogio.c +++ b/libsm/syslogio.c @@ -16,7 +16,7 @@ SM_RCSID("@(#)$Id: syslogio.c,v 1.30 2013-11-22 20:51:43 ca Exp $") #include #ifdef SM_RPOOL # include -#endif /* SM_RPOOL */ +#endif #include #include "local.h" diff --git a/libsm/t-event.c b/libsm/t-event.c index 7f08b914bb53..fcdd02b28985 100644 --- a/libsm/t-event.c +++ b/libsm/t-event.c @@ -17,7 +17,7 @@ SM_RCSID("@(#)$Id: t-event.c,v 1.14 2013-11-22 20:51:43 ca Exp $") # include #if SM_CONF_SETITIMER # include -#endif /* SM_CONF_SETITIMER */ +#endif #include #include diff --git a/libsm/t-exc.c b/libsm/t-exc.c index e0b45a86d525..3136e3f80c37 100644 --- a/libsm/t-exc.c +++ b/libsm/t-exc.c @@ -132,7 +132,7 @@ main(argc, argv) (void) sm_io_fprintf(smioout, SM_TIME_DEFAULT, "test 0 got an exception, as expected:\n"); sm_exc_print(exc, smioout); -#endif /* DEBUG */ +#endif return sm_test_end(); SM_END_TRY diff --git a/libsm/t-heap.c b/libsm/t-heap.c index d5e9e7e3f549..5e813ad333a7 100644 --- a/libsm/t-heap.c +++ b/libsm/t-heap.c @@ -19,7 +19,7 @@ SM_IDSTR(id, "@(#)$Id: t-heap.c,v 1.11 2013-11-22 20:51:43 ca Exp $") #if SM_HEAP_CHECK extern SM_DEBUG_T SmHeapCheck; # define HEAP_CHECK sm_debug_active(&SmHeapCheck, 1) -#else /* SM_HEAP_CHECK */ +#else # define HEAP_CHECK 0 #endif /* SM_HEAP_CHECK */ @@ -58,7 +58,7 @@ main(argc, argv) /* this will cause a core dump */ sm_dprintf("about to free %p for the second time\n", p); sm_free(p); -#endif /* DEBUG */ +#endif return sm_test_end(); } diff --git a/libsm/t-notify.c b/libsm/t-notify.c new file mode 100644 index 000000000000..7103cad2559d --- /dev/null +++ b/libsm/t-notify.c @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2016 Proofpoint, 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. + */ + +#include + +#include + +# include +# include + +# include +# include +# include +# include + +# define MAX_CNT 10 + +/* +** MSGTEST -- test of message queue. +** +** Parameters: +** owner -- create message queue. +** +** Returns: +** 0 on success +** < 0 on failure. +*/ + +static int +notifytest(owner) + int owner; +{ + int r; + size_t len; + char buf[64]; +#define TSTSTR "qf0001" + + r = sm_notify_start(owner, 0); + if (r < 0) + { + perror("sm_notify_start failed"); + return -1; + } + + if (!owner) + { + len = sm_strlcpy(buf, TSTSTR, sizeof(buf)); + r = sm_notify_snd(buf, len); + SM_TEST(r >= 0); + if (r < 0) + goto end; + + end: + return r; + } + else + { + r = sm_notify_rcv(buf, sizeof(buf), 5); + SM_TEST(r >= 0); + if (r < 0) + return r; + if (r > 0 && r < sizeof(buf)) + buf[r] = '\0'; + buf[sizeof(buf) - 1] = '\0'; + SM_TEST(strcmp(buf, TSTSTR) == 0); + fprintf(stderr, "buf=\"%s\"\n", buf); + } + return 0; +} + +int +main(argc, argv) + int argc; + char *argv[]; +{ + int ch; + int r = 0; + pid_t pid; + +# define OPTIONS "" + while ((ch = getopt(argc, argv, OPTIONS)) != -1) + { + switch ((char) ch) + { + default: + break; + } + } + + r = sm_notify_init(0); + if (r < 0) + { + perror("sm_notify_init failed\n"); + return -1; + } + + if ((pid = fork()) < 0) + { + perror("fork failed\n"); + return -1; + } + + sm_test_begin(argc, argv, "test notify"); + if (pid == 0) + { + /* give the parent the chance to setup data */ + sleep(1); + r = notifytest(false); + } + else + { + r = notifytest(true); + } + SM_TEST(r >= 0); + return sm_test_end(); +} diff --git a/libsm/t-scanf.c b/libsm/t-scanf.c index d7c20f748abd..087792ecb959 100644 --- a/libsm/t-scanf.c +++ b/libsm/t-scanf.c @@ -31,7 +31,7 @@ main(argc, argv) "If tests for \"h == 2\" fail, check whether size_t is signed on your OS.\n\ If that is the case, add -DSM_CONF_BROKEN_SIZE_T to confENVDEF\n\ and start over. Otherwise contact sendmail.org.\n"); -#endif /* !SM_CONF_BROKEN_SIZE_T */ +#endif d = 2; sm_snprintf(buf, sizeof(buf), "%d", d); diff --git a/libsm/t-sem.c b/libsm/t-sem.c index 4232b096ead7..b13e159ecebe 100644 --- a/libsm/t-sem.c +++ b/libsm/t-sem.c @@ -33,12 +33,12 @@ delay(t, s) { #if DEBUG fprintf(stderr, "sleep(%d) before %s\n", t, s); -#endif /* DEBUG */ +#endif sleep(t); } #if DEBUG fprintf(stderr, "%s\n", s); -#endif /* DEBUG */ +#endif } diff --git a/libsm/vfprintf.c b/libsm/vfprintf.c index 87c353c1bf14..b90a305b04d8 100644 --- a/libsm/vfprintf.c +++ b/libsm/vfprintf.c @@ -538,16 +538,16 @@ reswitch: switch (ch) #if HASSNPRINTF snprintf(out, sizeof(out), fmt, width, prec, val); -#else /* HASSNPRINTF */ +#else sprintf(out, fmt, width, prec, val); -#endif /* HASSNPRINTF */ +#endif else #if HASSNPRINTF snprintf(out, sizeof(out), fmt, width, val); -#else /* HASSNPRINTF */ +#else sprintf(out, fmt, width, val); -#endif /* HASSNPRINTF */ +#endif len = strlen(out); PRINT(out, len); FLUSH(); @@ -782,6 +782,7 @@ number: if ((dprec = prec) >= 0) done: FLUSH(); error: + SM_VA_END_COPY(orgap); if ((argtable != NULL) && (argtable != statargtable)) sm_free(argtable); return sm_error(fp) ? SM_IO_EOF : ret; diff --git a/libsm/vfscanf.c b/libsm/vfscanf.c index d043a1135884..c367f7682e37 100644 --- a/libsm/vfscanf.c +++ b/libsm/vfscanf.c @@ -110,7 +110,7 @@ sm_vfscanf(fp, timeout, fmt0, ap) register SM_FILE_T *fp; int SM_NONVOLATILE timeout; char const *fmt0; - va_list SM_NONVOLATILE ap; + va_list ap; { register unsigned char *SM_NONVOLATILE fmt = (unsigned char *) fmt0; register int c; /* character from format, or conversion */ @@ -828,7 +828,7 @@ sm_sccl(tab, fmt) ** z', but treats `a-a' as `the letter a, the ** character -, and the letter a'. ** - ** For compatibility, the `-' is not considerd + ** For compatibility, the `-' is not considered ** to define a range if the character following ** it is either a close bracket (required by ANSI) ** or is not numerically greater than the character diff --git a/libsmdb/Makefile b/libsmdb/Makefile index 13c8af07a52c..ce0e752abc0a 100644 --- a/libsmdb/Makefile +++ b/libsmdb/Makefile @@ -8,6 +8,8 @@ all: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ clean: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ +check: FRC + $(SHELL) $(BUILD) $(OPTIONS) $@ install: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ diff --git a/libsmdb/Makefile.m4 b/libsmdb/Makefile.m4 index dfd62fa6a37e..69299e53fce0 100644 --- a/libsmdb/Makefile.m4 +++ b/libsmdb/Makefile.m4 @@ -8,7 +8,7 @@ PREPENDDEF(`confENVDEF', `confMAPDEF') PREPENDDEF(`confINCDIRS', `-I${SMSRCDIR} ') bldPRODUCT_START(`library', `libsmdb') -define(`bldSOURCES', `smdb.c smdb1.c smdb2.c smndbm.c ') +define(`bldSOURCES', `smdb.c smdb1.c smdb2.c smndbm.c smcdb.c ') APPENDDEF(`confENVDEF', `-DNOT_SENDMAIL') bldPRODUCT_END diff --git a/libsmdb/smcdb.c b/libsmdb/smcdb.c new file mode 100644 index 000000000000..84c1a9e1f90c --- /dev/null +++ b/libsmdb/smcdb.c @@ -0,0 +1,575 @@ +/* +** Copyright (c) 2018 Proofpoint, 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. +*/ + +#include +SM_RCSID("@(#)$Id: smcdb.c,v 8.55 2013-11-22 20:51:49 ca Exp $") + +#include +#include +#include + +#include +#include + +#if CDB +#include +#include + +typedef struct cdb cdb_map_T, *cdb_map_P; +typedef struct cdb_make cdb_make_T, *cdb_make_P; +typedef union sm_cdbs_U sm_cdbs_T, *sm_cdbs_P; +union sm_cdbs_U +{ + cdb_map_T cdbs_cdb_rd; + cdb_make_T cdbs_cdb_wr; +}; + +struct smdb_cdb_database +{ + sm_cdbs_T cdbmap_map; + int cdbmap_fd; + int smcdb_lock_fd; + bool cdbmap_create; + unsigned smcdb_pos; + int smcdb_n; +}; +typedef struct smdb_cdb_database SMDB_CDB_DATABASE; + +/* static int smdb_type_to_cdb_type __P((SMDB_DBTYPE type)); */ +static int cdb_error_to_smdb __P((int error)); +static SMDB_CDB_DATABASE * smcdb_malloc_database __P((void)); +static int smcdb_close __P((SMDB_DATABASE *database)); +static int smcdb_del __P((SMDB_DATABASE *database, SMDB_DBENT *key, unsigned int flags)); +static int smcdb_fd __P((SMDB_DATABASE *database, int *fd)); +static int smcdb_lockfd __P((SMDB_DATABASE *database)); +static int smcdb_get __P((SMDB_DATABASE *database, SMDB_DBENT *key, SMDB_DBENT *data, unsigned int flags)); +static int smcdb_put __P((SMDB_DATABASE *database, SMDB_DBENT *key, SMDB_DBENT *data, unsigned int flags)); +static int smcdb_set_owner __P((SMDB_DATABASE *database, uid_t uid, gid_t gid)); +static int smcdb_sync __P((SMDB_DATABASE *database, unsigned int flags)); +static int smcdb_cursor_close __P((SMDB_CURSOR *cursor)); +static int smcdb_cursor_del __P((SMDB_CURSOR *cursor, SMDB_FLAG flags)); +static int smcdb_cursor_get __P((SMDB_CURSOR *cursor, SMDB_DBENT *key, SMDB_DBENT *value, SMDB_FLAG flags)); +static int smcdb_cursor_put __P((SMDB_CURSOR *cursor, SMDB_DBENT *key, SMDB_DBENT *value, SMDB_FLAG flags)); +static int smcdb_cursor __P((SMDB_DATABASE *database, SMDB_CURSOR **cursor, SMDB_FLAG flags)); + +/* +** SMDB_TYPE_TO_CDB_TYPE -- Translates smdb database type to cdb type. +** +** Parameters: +** type -- The type to translate. +** +** Returns: +** The CDB type that corresponsds to the passed in SMDB type. +** Returns -1 if there is no equivalent type. +** +*/ + +#if 0 +static int +smdb_type_to_cdb_type(type) + SMDB_DBTYPE type; +{ + return 0; /* XXX */ +} +#endif + +/* +** CDB_ERROR_TO_SMDB -- Translates cdb errors to smdbe errors +** +** Parameters: +** error -- The error to translate. +** +** Returns: +** The SMDBE error corresponding to the cdb error. +** If we don't have a corresponding error, it returns error. +** +*/ + +static int +cdb_error_to_smdb(error) + int error; +{ + int result; + + switch (error) + { + case 0: + result = SMDBE_OK; + break; + + default: + result = error; + } + return result; +} + +SMDB_CDB_DATABASE * +smcdb_malloc_database() +{ + SMDB_CDB_DATABASE *cdb; + + cdb = (SMDB_CDB_DATABASE *) malloc(sizeof(SMDB_CDB_DATABASE)); + if (cdb != NULL) + cdb->smcdb_lock_fd = -1; + + return cdb; +} + +static int +smcdb_close(database) + SMDB_DATABASE *database; +{ + int result, fd; + SMDB_CDB_DATABASE *sm_cdbmap = (SMDB_CDB_DATABASE *) database->smdb_impl; + + if (NULL == sm_cdbmap) + return -1; + result = 0; + if (sm_cdbmap->cdbmap_create) + result = cdb_make_finish(&sm_cdbmap->cdbmap_map.cdbs_cdb_wr); + + fd = sm_cdbmap->cdbmap_fd; + if (fd >= 0) + { + close(fd); + sm_cdbmap->cdbmap_fd = -1; + } + + free(sm_cdbmap); + database->smdb_impl = NULL; + + return result; +} + +static int +smcdb_del(database, key, flags) + SMDB_DATABASE *database; + SMDB_DBENT *key; + unsigned int flags; +{ + SMDB_CDB_DATABASE *sm_cdbmap = (SMDB_CDB_DATABASE *) database->smdb_impl; + + assert(sm_cdbmap != NULL); + return -1; +} + +static int +smcdb_fd(database, fd) + SMDB_DATABASE *database; + int *fd; +{ + SMDB_CDB_DATABASE *sm_cdbmap = (SMDB_CDB_DATABASE *) database->smdb_impl; + return sm_cdbmap->cdbmap_fd; +} + +static int +smcdb_lockfd(database) + SMDB_DATABASE *database; +{ + SMDB_CDB_DATABASE *sm_cdbmap = (SMDB_CDB_DATABASE *) database->smdb_impl; + + return sm_cdbmap->smcdb_lock_fd; +} + +/* +** allocate/free: who does it: caller or callee? +** If this code does it: the "last" entry will leak. +*/ + +#define DBEALLOC(dbe, l) \ + do \ + { \ + if ((dbe)->size > 0 && l > (dbe)->size) \ + { \ + free((dbe)->data); \ + (dbe)->size = 0; \ + } \ + if ((dbe)->size == 0) \ + { \ + (dbe)->data = malloc(l); \ + if ((dbe)->data == NULL) \ + return SMDBE_MALLOC; \ + (dbe)->size = l; \ + } \ + if (l > (dbe)->size) \ + return SMDBE_MALLOC; /* XXX bogus */ \ + } while (0) + + +static int +smcdb_get(database, key, data, flags) + SMDB_DATABASE *database; + SMDB_DBENT *key; + SMDB_DBENT *data; + unsigned int flags; +{ + SMDB_CDB_DATABASE *sm_cdbmap = (SMDB_CDB_DATABASE *) database->smdb_impl; + size_t l; + int ret; + + ret = SM_SUCCESS; + + if (NULL == sm_cdbmap ) + return -1; + /* SM_ASSERT(!sm_cdbmap->cdbmap_create); */ + + /* need to lock access? single threaded access! */ + ret = cdb_find(&sm_cdbmap->cdbmap_map.cdbs_cdb_rd, + key->data, key->size); + if (ret > 0) + { + l = cdb_datalen(&sm_cdbmap->cdbmap_map.cdbs_cdb_rd); + DBEALLOC(data, l); + ret = cdb_read(&sm_cdbmap->cdbmap_map.cdbs_cdb_rd, + data->data, l, + cdb_datapos(&sm_cdbmap->cdbmap_map.cdbs_cdb_rd)); + if (ret < 0) + ret = -1; + else + { + data->size = l; + ret = SM_SUCCESS; + } + } + else + ret = -1; + + return ret; +} + +static int +smcdb_put(database, key, data, flags) + SMDB_DATABASE *database; + SMDB_DBENT *key; + SMDB_DBENT *data; + unsigned int flags; +{ + int r, cdb_flags; + SMDB_CDB_DATABASE *sm_cdbmap = (SMDB_CDB_DATABASE *) database->smdb_impl; + + assert(sm_cdbmap != NULL); + if (bitset(SMDBF_NO_OVERWRITE, flags)) + cdb_flags = CDB_PUT_INSERT; + else + cdb_flags = CDB_PUT_REPLACE; + + r = cdb_make_put(&sm_cdbmap->cdbmap_map.cdbs_cdb_wr, + key->data, key->size, data->data, data->size, + cdb_flags); + if (r > 0) + { + if (bitset(SMDBF_NO_OVERWRITE, flags)) + return SMDBE_DUPLICATE; + else + return SMDBE_OK; + } + return r; +} + + +static int +smcdb_set_owner(database, uid, gid) + SMDB_DATABASE *database; + uid_t uid; + gid_t gid; +{ +# if HASFCHOWN + int fd; + int result; + SMDB_CDB_DATABASE *sm_cdbmap = (SMDB_CDB_DATABASE *) database->smdb_impl; + + assert(sm_cdbmap != NULL); + fd = sm_cdbmap->cdbmap_fd; + if (fd >= 0) + { + result = fchown(fd, uid, gid); + if (result < 0) + return errno; + } +# endif /* HASFCHOWN */ + + return SMDBE_OK; +} + +static int +smcdb_sync(database, flags) + SMDB_DATABASE *database; + unsigned int flags; +{ + return 0; +} + +static int +smcdb_cursor_close(cursor) + SMDB_CURSOR *cursor; +{ + int ret; + + ret = SMDBE_OK; + if (cursor != NULL) + free(cursor); + return ret; +} + +static int +smcdb_cursor_del(cursor, flags) + SMDB_CURSOR *cursor; + SMDB_FLAG flags; +{ + return -1; +} + +static int +smcdb_cursor_get(cursor, key, value, flags) + SMDB_CURSOR *cursor; + SMDB_DBENT *key; + SMDB_DBENT *value; + SMDB_FLAG flags; +{ + SMDB_CDB_DATABASE *sm_cdbmap; + size_t l; + int ret; + + ret = SMDBE_OK; + sm_cdbmap = cursor->smdbc_impl; + ret = cdb_seqnext(&sm_cdbmap->smcdb_pos, &sm_cdbmap->cdbmap_map.cdbs_cdb_rd); + if (ret == 0) + return SMDBE_LAST_ENTRY; + if (ret < 0) + return SMDBE_IO_ERROR; + + l = cdb_keylen(&sm_cdbmap->cdbmap_map.cdbs_cdb_rd); + DBEALLOC(key, l); + + ret = cdb_read(&sm_cdbmap->cdbmap_map.cdbs_cdb_rd, + key->data, l, + cdb_keypos(&sm_cdbmap->cdbmap_map.cdbs_cdb_rd)); + if (ret < 0) + return SMDBE_IO_ERROR; + key->size = l; + + l = cdb_datalen(&sm_cdbmap->cdbmap_map.cdbs_cdb_rd); + + DBEALLOC(value, l); + ret = cdb_read(&sm_cdbmap->cdbmap_map.cdbs_cdb_rd, + value->data, l, + cdb_datapos(&sm_cdbmap->cdbmap_map.cdbs_cdb_rd)); + if (ret < 0) + return SMDBE_IO_ERROR; + value->size = l; + + return SMDBE_OK; +} + +static int +smcdb_cursor_put(cursor, key, value, flags) + SMDB_CURSOR *cursor; + SMDB_DBENT *key; + SMDB_DBENT *value; + SMDB_FLAG flags; +{ + return -1; +} + +static int +smcdb_cursor(database, cursor, flags) + SMDB_DATABASE *database; + SMDB_CURSOR **cursor; + SMDB_FLAG flags; +{ + int result; + SMDB_CDB_DATABASE *sm_cdbmap; + + result = SMDBE_OK; + *cursor = (SMDB_CURSOR *) malloc(sizeof(SMDB_CURSOR)); + if (*cursor == NULL) + return SMDBE_MALLOC; + + sm_cdbmap = (SMDB_CDB_DATABASE *) database->smdb_impl; + (*cursor)->smdbc_close = smcdb_cursor_close; + (*cursor)->smdbc_del = smcdb_cursor_del; + (*cursor)->smdbc_get = smcdb_cursor_get; + (*cursor)->smdbc_put = smcdb_cursor_put; + (*cursor)->smdbc_impl = sm_cdbmap; + + cdb_seqinit(&sm_cdbmap->smcdb_pos, &sm_cdbmap->cdbmap_map.cdbs_cdb_rd); + + return result; +} + +/* +** SMDB_DB_OPEN -- Opens a db database. +** +** Parameters: +** database -- An unallocated database pointer to a pointer. +** db_name -- The name of the database without extension. +** mode -- File permisions for a created database. +** mode_mask -- Mode bits that must match on an opened database. +** sff -- Flags for safefile. +** type -- The type of database to open +** See smdb_type_to_cdb_type for valid types. +** user_info -- User information for file permissions. +** db_params -- +** An SMDB_DBPARAMS struct including params. These +** are processed according to the type of the +** database. Currently supported params (only for +** HASH type) are: +** num_elements +** cache_size +** +** Returns: +** SMDBE_OK -- Success, other errno: +** SMDBE_MALLOC -- Cannot allocate memory. +** SMDBE_BAD_OPEN -- db_open didn't return an error, but +** somehow the DB pointer is NULL. +** Anything else: translated error from cdb +*/ + +int +smdb_cdb_open(database, db_name, mode, mode_mask, sff, type, user_info, db_params) + SMDB_DATABASE **database; + char *db_name; + int mode; + int mode_mask; + long sff; + SMDB_DBTYPE type; + SMDB_USER_INFO *user_info; + SMDB_DBPARAMS *db_params; +{ + bool lockcreated = false; + int result; + int lock_fd; + int db_fd; + SMDB_DATABASE *smdb_db; + SMDB_CDB_DATABASE *sm_cdbmap; + struct stat stat_info; + char db_file_name[MAXPATHLEN]; + + *database = NULL; + result = smdb_add_extension(db_file_name, sizeof db_file_name, + db_name, SMCDB_FILE_EXTENSION); + if (result != SMDBE_OK) + return result; + + result = smdb_setup_file(db_name, SMCDB_FILE_EXTENSION, + mode_mask, sff, user_info, &stat_info); + if (result != SMDBE_OK) + return result; + + lock_fd = -1; + + if (stat_info.st_mode == ST_MODE_NOFILE && + bitset(mode, O_CREAT)) + lockcreated = true; + + result = smdb_lock_file(&lock_fd, db_name, mode, sff, + SMCDB_FILE_EXTENSION); + if (result != SMDBE_OK) + return result; + + if (lockcreated) + { + mode |= O_TRUNC; + mode &= ~(O_CREAT|O_EXCL); + } + + smdb_db = smdb_malloc_database(); + sm_cdbmap = smcdb_malloc_database(); + if (sm_cdbmap == NULL || smdb_db == NULL) + { + smdb_unlock_file(lock_fd); + smdb_free_database(smdb_db); /* ok to be NULL */ + if (sm_cdbmap != NULL) + free(sm_cdbmap); + return SMDBE_MALLOC; + } + + sm_cdbmap->smcdb_lock_fd = lock_fd; + +#if 0 + db = NULL; + db_flags = 0; + if (bitset(O_CREAT, mode)) + db_flags |= DB_CREATE; + if (bitset(O_TRUNC, mode)) + db_flags |= DB_TRUNCATE; + if (mode == O_RDONLY) + db_flags |= DB_RDONLY; + SM_DB_FLAG_ADD(db_flags); +#endif + + result = -1; /* smdb_db_open_internal(db_file_name, db_type, db_flags, db_params, &db); */ + db_fd = open(db_file_name, mode, DBMMODE); + if (db_fd == -1) + { + result = SMDBE_BAD_OPEN; + goto error; + } + + sm_cdbmap->cdbmap_create = (mode != O_RDONLY); + if (mode == O_RDONLY) + result = cdb_init(&sm_cdbmap->cdbmap_map.cdbs_cdb_rd, db_fd); + else + result = cdb_make_start(&sm_cdbmap->cdbmap_map.cdbs_cdb_wr, db_fd); + if (result != 0) + { + result = SMDBE_BAD_OPEN; + goto error; + } + + if (result == 0) + result = SMDBE_OK; + else + { + /* Try and narrow down on the problem */ + if (result != 0) + result = cdb_error_to_smdb(result); + else + result = SMDBE_BAD_OPEN; + } + + if (result == SMDBE_OK) + result = smdb_filechanged(db_name, SMCDB_FILE_EXTENSION, db_fd, + &stat_info); + + if (result == SMDBE_OK) + { + /* Everything is ok. Setup driver */ + /* smdb_db->smcdb_db = sm_cdbmap; */ + + smdb_db->smdb_close = smcdb_close; + smdb_db->smdb_del = smcdb_del; + smdb_db->smdb_fd = smcdb_fd; + smdb_db->smdb_lockfd = smcdb_lockfd; + smdb_db->smdb_get = smcdb_get; + smdb_db->smdb_put = smcdb_put; + smdb_db->smdb_set_owner = smcdb_set_owner; + smdb_db->smdb_sync = smcdb_sync; + smdb_db->smdb_cursor = smcdb_cursor; + smdb_db->smdb_impl = sm_cdbmap; + + *database = smdb_db; + + return SMDBE_OK; + } + + error: + if (sm_cdbmap != NULL) + { + /* close */ + } + + smdb_unlock_file(sm_cdbmap->smcdb_lock_fd); + free(sm_cdbmap); + smdb_free_database(smdb_db); + + return result; +} + +#endif /* CDB */ diff --git a/libsmdb/smdb.c b/libsmdb/smdb.c index 96473b89b173..9091b52520fa 100644 --- a/libsmdb/smdb.c +++ b/libsmdb/smdb.c @@ -21,13 +21,13 @@ SM_RCSID("@(#)$Id: smdb.c,v 8.59 2013-11-22 20:51:49 ca Exp $") static bool smdb_lockfile __P((int, int)); /* -** SMDB_MALLOC_DATABASE -- Allocates a database structure. +** SMDB_MALLOC_DATABASE -- Allocates a database structure. ** ** Parameters: ** None ** ** Returns: -** An pointer to an allocated SMDB_DATABASE structure or +** A pointer to an allocated SMDB_DATABASE structure or ** NULL if it couldn't allocate the memory. */ @@ -44,9 +44,8 @@ smdb_malloc_database() return db; } - /* -** SMDB_FREE_DATABASE -- Unallocates a database structure. +** SMDB_FREE_DATABASE -- Unallocates a database structure. ** ** Parameters: ** database -- a SMDB_DATABASE pointer to deallocate. @@ -62,6 +61,7 @@ smdb_free_database(database) if (database != NULL) free(database); } + /* ** SMDB_LOCKFILE -- lock a file using flock or (shudder) fcntl locking ** @@ -155,16 +155,16 @@ smdb_lockfile(fd, type) errno = save_errno; return false; } + /* -** SMDB_OPEN_DATABASE -- Opens a database. +** SMDB_OPEN_DATABASE -- Opens a database. ** ** This opens a database. If type is SMDB_DEFAULT it tries to -** use a DB1 or DB2 hash. If that isn't available, it will try -** to use NDBM. If a specific type is given it will try to open -** a database of that type. +** use available DB types. If a specific type is given it will +** try to open a database of that type. ** ** Parameters: -** database -- An pointer to a SMDB_DATABASE pointer where the +** database -- A pointer to a SMDB_DATABASE pointer where the ** opened database will be stored. This should ** be unallocated. ** db_name -- The name of the database to open. Do not include @@ -186,6 +186,20 @@ smdb_lockfile(fd, type) ** error in the comments for the specific open() used. */ +struct type2func_s +{ + const char *t2f_type; + smdb_open_func *t2f_open_fun; +}; +typedef struct type2func_s type2func_t; +static type2func_t type2func[] = { + { SMDB_TYPE_HASH, smdb_db_open }, + { SMDB_TYPE_BTREE, smdb_db_open }, + { SMDB_TYPE_NDBM, smdb_ndbm_open}, + { SMDB_TYPE_CDB, smdb_cdb_open }, + { NULL, NULL } +}; + int smdb_open_database(database, db_name, mode, mode_mask, sff, type, user_info, params) @@ -198,63 +212,44 @@ smdb_open_database(database, db_name, mode, mode_mask, sff, type, user_info, SMDB_USER_INFO *user_info; SMDB_DBPARAMS *params; { -#if defined(NEWDB) && defined(NDBM) - bool type_was_default = false; + bool type_was_default; + int result, i; + const char *smdb_type; + smdb_open_func *smdb_open_fun; + + result = SMDBE_UNSUPPORTED_DB_TYPE; + type_was_default = SMDB_IS_TYPE_DEFAULT(type); + for (i = 0; (smdb_type = type2func[i].t2f_type) != NULL; i++) + { + if (!type_was_default && strcmp(type, smdb_type) != 0) + continue; + smdb_open_fun = type2func[i].t2f_open_fun; + if (smdb_open_fun == NULL) + { + if (type_was_default) + continue; + else + return SMDBE_UNSUPPORTED_DB_TYPE; + } + result = (*smdb_open_fun)(database, db_name, mode, mode_mask, sff, + (char *)smdb_type, user_info, params); + if (!((result == ENOENT + || result == EINVAL +#ifdef EFTYPE + || result == EFTYPE #endif - - if (type == SMDB_TYPE_DEFAULT) - { -#ifdef NEWDB -# ifdef NDBM - type_was_default = true; -# endif - type = SMDB_TYPE_HASH; -#else /* NEWDB */ -# ifdef NDBM - type = SMDB_TYPE_NDBM; -# endif /* NDBM */ -#endif /* NEWDB */ + ) + && type_was_default)) + goto ret; } - - if (type == SMDB_TYPE_DEFAULT) - return SMDBE_UNKNOWN_DB_TYPE; - - if ((strncmp(type, SMDB_TYPE_HASH, SMDB_TYPE_HASH_LEN) == 0) || - (strncmp(type, SMDB_TYPE_BTREE, SMDB_TYPE_BTREE_LEN) == 0)) - { -#ifdef NEWDB - int result; - - result = smdb_db_open(database, db_name, mode, mode_mask, sff, - type, user_info, params); -# ifdef NDBM - if (result == ENOENT && type_was_default) - type = SMDB_TYPE_NDBM; - else -# endif /* NDBM */ - return result; -#else /* NEWDB */ - return SMDBE_UNSUPPORTED_DB_TYPE; -#endif /* NEWDB */ - } - - if (strncmp(type, SMDB_TYPE_NDBM, SMDB_TYPE_NDBM_LEN) == 0) - { -#ifdef NDBM - int result; - - result = smdb_ndbm_open(database, db_name, mode, mode_mask, - sff, type, user_info, params); - return result; -#else /* NDBM */ - return SMDBE_UNSUPPORTED_DB_TYPE; -#endif /* NDBM */ - } - return SMDBE_UNKNOWN_DB_TYPE; + + ret: + return result; } + /* -** SMDB_ADD_EXTENSION -- Adds an extension to a file name. +** SMDB_ADD_EXTENSION -- Adds an extension to a file name. ** ** Just adds a . followed by a string to a db_name if there ** is room and the db_name does not already have that extension. @@ -488,8 +483,9 @@ smdb_filechanged(db_name, extension, db_fd, stat_info) return result; return filechanged(db_file_name, db_fd, stat_info); } + /* -** SMDB_PRINT_AVAILABLE_TYPES -- Prints the names of the available types. +** SMDB_PRINT_AVAILABLE_TYPES -- Prints the names of the available types. ** ** Parameters: ** None @@ -499,18 +495,62 @@ smdb_filechanged(db_name, extension, db_fd, stat_info) */ void -smdb_print_available_types() +smdb_print_available_types(ext) + bool ext; { -#ifdef NDBM - printf("dbm\n"); -#endif /* NDBM */ -#ifdef NEWDB - printf("hash\n"); - printf("btree\n"); -#endif /* NEWDB */ +# define PEXT1 ((ext) ? ":" : "") +# define PEXT2(x) ((ext) ? x : "") + +#if NDBM + printf("%s%s%s\n", SMDB_TYPE_NDBM, PEXT1, PEXT2(SMNDB_DIR_FILE_EXTENSION)); +#endif +#if NEWDB +/* # if SMDB1_FILE_EXTENSION == SMDB2_FILE_EXTENSION */ + printf("%s%s%s\n", SMDB_TYPE_HASH, PEXT1, PEXT2(SMDB1_FILE_EXTENSION)); + printf("%s%s%s\n", SMDB_TYPE_BTREE, PEXT1, PEXT2(SMDB1_FILE_EXTENSION)); +#endif +#if CDB + printf("%s%s%s\n", SMDB_TYPE_CDB, PEXT1, PEXT2(SMCDB_FILE_EXTENSION)); +#endif +#ifdef SMDB_TYPE_IMPL + printf("%s%s%s\n", SMDB_TYPE_IMPL, PEXT1, ""); +#endif } + /* -** SMDB_DB_DEFINITION -- Given a database type, return database definition +** SMDB_IS_DB_TYPE -- Does a name match an available DB type? +** +** Parameters: +** type -- The name of the database type. +** +** Returns: +** true iff match +*/ + +bool +smdb_is_db_type(db_type) + const char *db_type; +{ +#if NDBM + if (strcmp(db_type, SMDB_TYPE_NDBM) == 0) + return true; +#endif +#if NEWDB + if (strcmp(db_type, SMDB_TYPE_HASH) == 0) + return true; + if (strcmp(db_type, SMDB_TYPE_BTREE) == 0) + return true; +#endif +#if CDB + if (strcmp(db_type, SMDB_TYPE_CDB) == 0) + return true; +#endif + return false; +} + + +/* +** SMDB_DB_DEFINITION -- Given a database type, return database definition ** ** Reads though a structure making an association with the database ** type and the required cpp define from sendmail/README. @@ -534,6 +574,7 @@ static dbtype DatabaseDefs[] = { SMDB_TYPE_HASH, "NEWDB" }, { SMDB_TYPE_BTREE, "NEWDB" }, { SMDB_TYPE_NDBM, "NDBM" }, + { SMDB_TYPE_CDB, "CDB" }, { NULL, "OOPS" } }; diff --git a/libsmdb/smdb1.c b/libsmdb/smdb1.c index 9d4e958032a7..85dc7fcaf74c 100644 --- a/libsmdb/smdb1.c +++ b/libsmdb/smdb1.c @@ -19,8 +19,6 @@ SM_RCSID("@(#)$Id: smdb1.c,v 8.63 2013-11-22 20:51:49 ca Exp $") #if (DB_VERSION_MAJOR == 1) -# define SMDB1_FILE_EXTENSION "db" - struct smdb_db1_struct { DB *smdb1_db; @@ -72,10 +70,10 @@ smdb_type_to_db1_type(type) if (type == SMDB_TYPE_DEFAULT) return DB_HASH; - if (strncmp(type, SMDB_TYPE_HASH, SMDB_TYPE_HASH_LEN) == 0) + if (SMDB_IS_TYPE_HASH(type)) return DB_HASH; - if (strncmp(type, SMDB_TYPE_BTREE, SMDB_TYPE_BTREE_LEN) == 0) + if (SMDB_IS_TYPE_BTREE(type)) return DB_BTREE; /* Should never get here thanks to test in smdb_db_open() */ @@ -471,8 +469,8 @@ smdb_db_open(database, db_name, mode, mode_mask, sff, type, user_info, char db_file_name[MAXPATHLEN]; if (type == NULL || - (strncmp(SMDB_TYPE_HASH, type, SMDB_TYPE_HASH_LEN) != 0 && - strncmp(SMDB_TYPE_BTREE, type, SMDB_TYPE_BTREE_LEN) != 0)) + (!SMDB_IS_TYPE_HASH(type) && !SMDB_IS_TYPE_BTREE(type) + )) return SMDBE_UNKNOWN_DB_TYPE; result = smdb_add_extension(db_file_name, sizeof db_file_name, @@ -515,8 +513,7 @@ smdb_db_open(database, db_name, mode, mode_mask, sff, type, user_info, db1->smdb1_lock_fd = lock_fd; params = NULL; - if (db_params != NULL && - (strncmp(SMDB_TYPE_HASH, type, SMDB_TYPE_HASH_LEN) == 0)) + if (db_params != NULL && SMDB_IS_TYPE_HASH(type)) { (void) memset(&hash_info, '\0', sizeof hash_info); hash_info.nelem = db_params->smdbp_num_elements; @@ -524,8 +521,7 @@ smdb_db_open(database, db_name, mode, mode_mask, sff, type, user_info, params = &hash_info; } - if (db_params != NULL && - (strncmp(SMDB_TYPE_BTREE, type, SMDB_TYPE_BTREE_LEN) == 0)) + if (db_params != NULL && SMDB_IS_TYPE_BTREE(type)) { (void) memset(&btree_info, '\0', sizeof btree_info); btree_info.cachesize = db_params->smdbp_cache_size; diff --git a/libsmdb/smdb2.c b/libsmdb/smdb2.c index 403040307a97..d208efb40324 100644 --- a/libsmdb/smdb2.c +++ b/libsmdb/smdb2.c @@ -20,8 +20,6 @@ SM_RCSID("@(#)$Id: smdb2.c,v 8.83 2013-11-22 20:51:49 ca Exp $") #if (DB_VERSION_MAJOR >= 2) -# define SMDB2_FILE_EXTENSION "db" - struct smdb_db2_database { DB *smdb2_db; @@ -41,17 +39,17 @@ typedef struct smdb_db2_database SMDB_DB2_DATABASE; ** */ -DBTYPE +static DBTYPE smdb_type_to_db2_type(type) SMDB_DBTYPE type; { if (type == SMDB_TYPE_DEFAULT) return DB_HASH; - if (strncmp(type, SMDB_TYPE_HASH, SMDB_TYPE_HASH_LEN) == 0) + if (SMDB_IS_TYPE_HASH(type)) return DB_HASH; - if (strncmp(type, SMDB_TYPE_BTREE, SMDB_TYPE_BTREE_LEN) == 0) + if (SMDB_IS_TYPE_BTREE(type)) return DB_BTREE; return DB_UNKNOWN; @@ -64,11 +62,11 @@ smdb_type_to_db2_type(type) ** ** Returns: ** The SMDBE error corresponding to the db2 error. -** If we don't have a corresponding error, it returs errno. +** If we don't have a corresponding error, it returns errno. ** */ -int +static int db2_error_to_smdb(error) int error; { @@ -80,55 +78,55 @@ db2_error_to_smdb(error) case DB_INCOMPLETE: result = SMDBE_INCOMPLETE; break; -# endif /* DB_INCOMPLETE */ +# endif # ifdef DB_NOTFOUND case DB_NOTFOUND: result = SMDBE_NOT_FOUND; break; -# endif /* DB_NOTFOUND */ +# endif # ifdef DB_KEYEMPTY case DB_KEYEMPTY: result = SMDBE_KEY_EMPTY; break; -# endif /* DB_KEYEMPTY */ +# endif # ifdef DB_KEYEXIST case DB_KEYEXIST: result = SMDBE_KEY_EXIST; break; -# endif /* DB_KEYEXIST */ +# endif # ifdef DB_LOCK_DEADLOCK case DB_LOCK_DEADLOCK: result = SMDBE_LOCK_DEADLOCK; break; -# endif /* DB_LOCK_DEADLOCK */ +# endif # ifdef DB_LOCK_NOTGRANTED case DB_LOCK_NOTGRANTED: result = SMDBE_LOCK_NOT_GRANTED; break; -# endif /* DB_LOCK_NOTGRANTED */ +# endif # ifdef DB_LOCK_NOTHELD case DB_LOCK_NOTHELD: result = SMDBE_LOCK_NOT_HELD; break; -# endif /* DB_LOCK_NOTHELD */ +# endif # ifdef DB_RUNRECOVERY case DB_RUNRECOVERY: result = SMDBE_RUN_RECOVERY; break; -# endif /* DB_RUNRECOVERY */ +# endif # ifdef DB_OLD_VERSION case DB_OLD_VERSION: result = SMDBE_OLD_VERSION; break; -# endif /* DB_OLD_VERSION */ +# endif case 0: result = SMDBE_OK; @@ -153,7 +151,7 @@ db2_error_to_smdb(error) ** */ -unsigned int +static unsigned int smdb_put_flags_to_db2_flags(flags) SMDB_FLAG flags; { @@ -181,7 +179,7 @@ smdb_put_flags_to_db2_flags(flags) ** */ -int +static int smdb_cursor_get_flags_to_db2(flags) SMDB_FLAG flags; { @@ -209,7 +207,7 @@ smdb_cursor_get_flags_to_db2(flags) ** interface laid out in smdb.h. */ -SMDB_DB2_DATABASE * +static SMDB_DB2_DATABASE * smdb2_malloc_database() { SMDB_DB2_DATABASE *db2; @@ -221,7 +219,7 @@ smdb2_malloc_database() return db2; } -int +static int smdb2_close(database) SMDB_DATABASE *database; { @@ -239,7 +237,7 @@ smdb2_close(database) return result; } -int +static int smdb2_del(database, key, flags) SMDB_DATABASE *database; SMDB_DBENT *key; @@ -254,7 +252,7 @@ smdb2_del(database, key, flags) return db2_error_to_smdb(db->del(db, NULL, &dbkey, flags)); } -int +static int smdb2_fd(database, fd) SMDB_DATABASE *database; int *fd; @@ -264,7 +262,7 @@ smdb2_fd(database, fd) return db2_error_to_smdb(db->fd(db, fd)); } -int +static int smdb2_lockfd(database) SMDB_DATABASE *database; { @@ -273,7 +271,7 @@ smdb2_lockfd(database) return db2->smdb2_lock_fd; } -int +static int smdb2_get(database, key, data, flags) SMDB_DATABASE *database; SMDB_DBENT *key; @@ -295,7 +293,7 @@ smdb2_get(database, key, data, flags) return db2_error_to_smdb(result); } -int +static int smdb2_put(database, key, data, flags) SMDB_DATABASE *database; SMDB_DBENT *key; @@ -317,7 +315,7 @@ smdb2_put(database, key, data, flags) } -int +static int smdb2_set_owner(database, uid, gid) SMDB_DATABASE *database; uid_t uid; @@ -340,7 +338,7 @@ smdb2_set_owner(database, uid, gid) return SMDBE_OK; } -int +static int smdb2_sync(database, flags) SMDB_DATABASE *database; unsigned int flags; @@ -350,7 +348,7 @@ smdb2_sync(database, flags) return db2_error_to_smdb(db->sync(db, flags)); } -int +static int smdb2_cursor_close(cursor) SMDB_CURSOR *cursor; { @@ -362,7 +360,7 @@ smdb2_cursor_close(cursor) return ret; } -int +static int smdb2_cursor_del(cursor, flags) SMDB_CURSOR *cursor; SMDB_FLAG flags; @@ -372,7 +370,7 @@ smdb2_cursor_del(cursor, flags) return db2_error_to_smdb(dbc->c_del(dbc, 0)); } -int +static int smdb2_cursor_get(cursor, key, value, flags) SMDB_CURSOR *cursor; SMDB_DBENT *key; @@ -398,7 +396,7 @@ smdb2_cursor_get(cursor, key, value, flags) return db2_error_to_smdb(result); } -int +static int smdb2_cursor_put(cursor, key, value, flags) SMDB_CURSOR *cursor; SMDB_DBENT *key; @@ -418,7 +416,7 @@ smdb2_cursor_put(cursor, key, value, flags) return db2_error_to_smdb(dbc->c_put(dbc, &dbkey, &dbdata, 0)); } -int +static int smdb2_cursor(database, cursor, flags) SMDB_DATABASE *database; SMDB_CURSOR **cursor; @@ -430,9 +428,9 @@ smdb2_cursor(database, cursor, flags) # if DB_VERSION_MAJOR > 2 || DB_VERSION_MINOR >= 6 result = db->cursor(db, NULL, &db2_cursor, 0); -# else /* DB_VERSION_MAJOR > 2 || DB_VERSION_MINOR >= 6 */ +# else result = db->cursor(db, NULL, &db2_cursor); -# endif /* DB_VERSION_MAJOR > 2 || DB_VERSION_MINOR >= 6 */ +# endif if (result != 0) return db2_error_to_smdb(result); @@ -477,6 +475,26 @@ smdb_db_open_internal(db_name, db_type, db_flags, db_params, db) # endif /* DB_VERSION_MAJOR == 2 */ # if DB_VERSION_MAJOR > 2 + +static void +db_err_cb( +#if DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 3 + dbenv, +#endif + errpfx, msg) +#if DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 3 + const DB_ENV *dbenv; + const char *errpfx; + const char *msg; +#else + const char *errpfx; + char *msg; +#endif +{ + /* do not print/log any errors... */ + return; +} + static int smdb_db_open_internal(db_name, db_type, db_flags, db_params, db) char *db_name; @@ -491,41 +509,31 @@ smdb_db_open_internal(db_name, db_type, db_flags, db_params, db) if (result != 0 || *db == NULL) return result; + (*db)->set_errcall(*db, db_err_cb); if (db_params != NULL) { result = (*db)->set_cachesize(*db, 0, db_params->smdbp_cache_size, 0); if (result != 0) - { - (void) (*db)->close((*db), 0); - *db = NULL; - return db2_error_to_smdb(result); - } + goto error; if (db_type == DB_HASH) { result = (*db)->set_h_nelem(*db, db_params->smdbp_num_elements); if (result != 0) - { - (void) (*db)->close(*db, 0); - *db = NULL; - return db2_error_to_smdb(result); - } + goto error; } if (db_params->smdbp_allow_dup) { result = (*db)->set_flags(*db, DB_DUP); if (result != 0) - { - (void) (*db)->close(*db, 0); - *db = NULL; - return db2_error_to_smdb(result); - } + goto error; } } result = (*db)->open(*db, DBTXN /* transaction for DB 4.1 */ db_name, NULL, db_type, db_flags, DBMMODE); + error: if (result != 0) { (void) (*db)->close(*db, 0); @@ -534,6 +542,7 @@ smdb_db_open_internal(db_name, db_type, db_flags, db_params, db) return db2_error_to_smdb(result); } # endif /* DB_VERSION_MAJOR > 2 */ + /* ** SMDB_DB_OPEN -- Opens a db database. ** diff --git a/libsmdb/smndbm.c b/libsmdb/smndbm.c index 579c5f55171e..bd7bce54cf7f 100644 --- a/libsmdb/smndbm.c +++ b/libsmdb/smndbm.c @@ -19,7 +19,6 @@ SM_RCSID("@(#)$Id: smndbm.c,v 8.55 2013-11-22 20:51:49 ca Exp $") #ifdef NDBM -# define SMNDB_DIR_FILE_EXTENSION "dir" # define SMNDB_PAG_FILE_EXTENSION "pag" struct smdb_dbm_database_struct diff --git a/libsmutil/Makefile b/libsmutil/Makefile index baffab14d0d4..3bf1c4ba9b39 100644 --- a/libsmutil/Makefile +++ b/libsmutil/Makefile @@ -8,6 +8,8 @@ all: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ clean: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ +check: FRC + $(SHELL) $(BUILD) $(OPTIONS) $@ install: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ diff --git a/libsmutil/cf.c b/libsmutil/cf.c index e447aca4f79d..f803b95ef607 100644 --- a/libsmutil/cf.c +++ b/libsmutil/cf.c @@ -39,7 +39,7 @@ getcfname(opmode, submitmode, cftype, conffile) { #if NETINFO char *cflocation; -#endif /* NETINFO */ +#endif if (conffile != NULL) return conffile; @@ -71,6 +71,6 @@ getcfname(opmode, submitmode, cftype, conffile) "sendmail.cf", '\0'); if (cflocation != NULL) return cflocation; -#endif /* NETINFO */ +#endif return _PATH_SENDMAILCF; } diff --git a/libsmutil/safefile.c b/libsmutil/safefile.c index 43d66eceee11..1c70c24440e5 100644 --- a/libsmutil/safefile.c +++ b/libsmutil/safefile.c @@ -25,8 +25,7 @@ SM_RCSID("@(#)$Id: safefile.c,v 8.130 2013-11-22 20:51:50 ca Exp $") ** fn -- filename to check. ** uid -- user id to compare against. ** gid -- group id to compare against. -** user -- user name to compare against (used for group -** sets). +** user -- user name to compare against (used for group sets). ** flags -- modifiers: ** SFF_MUSTOWN -- "uid" must own this file. ** SFF_NOSLINK -- file cannot be a symbolic link. @@ -82,9 +81,9 @@ safefile(fn, uid, gid, user, flags, mode, st) # if HASLSTAT if ((bitset(SFF_NOSLINK, flags) ? lstat(fn, st) : stat(fn, st)) < 0) -# else /* HASLSTAT */ +# else if (stat(fn, st) < 0) -# endif /* HASLSTAT */ +# endif { file_errno = errno; } @@ -100,19 +99,19 @@ safefile(fn, uid, gid, user, flags, mode, st) # ifdef SUID_ROOT_FILES_OK if (bitset(S_ISUID, st->st_mode)) -# else /* SUID_ROOT_FILES_OK */ +# else if (bitset(S_ISUID, st->st_mode) && st->st_uid != 0 && st->st_uid != TrustedUid) -# endif /* SUID_ROOT_FILES_OK */ +# endif { uid = st->st_uid; user = NULL; } # ifdef SUID_ROOT_FILES_OK if (bitset(S_ISGID, st->st_mode)) -# else /* SUID_ROOT_FILES_OK */ +# else if (bitset(S_ISGID, st->st_mode) && st->st_gid != 0) -# endif /* SUID_ROOT_FILES_OK */ +# endif gid = st->st_gid; } @@ -473,9 +472,9 @@ safedirpath(fn, uid, gid, user, flags, level, offset) # if HASLSTAT ret = lstat(s, &stbuf); -# else /* HASLSTAT */ +# else ret = stat(s, &stbuf); -# endif /* HASLSTAT */ +# endif if (ret < 0) { ret = errno; @@ -590,7 +589,7 @@ safedirpath(fn, uid, gid, user, flags, level, offset) #ifdef S_ISVTX !(bitnset(DBS_TRUSTSTICKYBIT, DontBlameSendmail) && bitset(S_ISVTX, stbuf.st_mode)) && -#endif /* S_ISVTX */ +#endif bitset(mode, stbuf.st_mode)) { if (tTd(44, 4)) @@ -686,7 +685,7 @@ safeopen(fn, omode, cmode, sff) { #if !NOFTRUNCATE bool truncate; -#endif /* !NOFTRUNCATE */ +#endif int rval; int fd; int smode; @@ -741,7 +740,7 @@ safeopen(fn, omode, cmode, sff) truncate = bitset(O_TRUNC, omode); if (truncate) omode &= ~O_TRUNC; -#endif /* !NOFTRUNCATE */ +#endif fd = dfopen(fn, omode, cmode, sff); if (fd < 0) @@ -874,9 +873,9 @@ filechanged(fn, fd, stb) /* only necessary if exclusive open follows symbolic links */ if (lstat(fn, stb) < 0 || stb->st_nlink != 1) return true; -# else /* HASLSTAT && BOGUS_O_EXCL */ +# else return false; -# endif /* HASLSTAT && BOGUS_O_EXCL */ +# endif } if (fstat(fd, &sta) < 0) return true; @@ -886,7 +885,7 @@ filechanged(fn, fd, stb) sta.st_ino != stb->st_ino || # if HAS_ST_GEN && 0 /* AFS returns garbage in st_gen */ sta.st_gen != stb->st_gen || -# endif /* HAS_ST_GEN && 0 */ +# endif sta.st_uid != stb->st_uid || sta.st_gid != stb->st_gid) { @@ -903,7 +902,7 @@ filechanged(fn, fd, stb) # if HAS_ST_GEN sm_dprintf(" gen = %ld/%ld\n", (long) stb->st_gen, (long) sta.st_gen); -# endif /* HAS_ST_GEN */ +# endif sm_dprintf(" uid = %ld/%ld\n", (long) stb->st_uid, (long) sta.st_uid); sm_dprintf(" gid = %ld/%ld\n", @@ -947,7 +946,7 @@ dfopen(filename, omode, cmode, sff) case EINTR: /* interrupted syscall */ #ifdef ETXTBSY case ETXTBSY: /* Apollo: net file locked */ -#endif /* ETXTBSY */ +#endif continue; } break; diff --git a/mail.local/Makefile b/mail.local/Makefile index f3776a9d502a..6cd2bc10511b 100644 --- a/mail.local/Makefile +++ b/mail.local/Makefile @@ -8,6 +8,8 @@ all: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ clean: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ +check: FRC + $(SHELL) $(BUILD) $(OPTIONS) $@ install: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ force-install: FRC diff --git a/mail.local/mail.local.0 b/mail.local/mail.local.0 index ec11d50a3eb8..454261106dca 100644 --- a/mail.local/mail.local.0 +++ b/mail.local/mail.local.0 @@ -2,56 +2,56 @@ MAIL.LOCAL(8) MAIL.LOCAL(8) -NNAAMMEE +NAME mail.local - store mail in a mailbox -SSYYNNOOPPSSIISS - mmaaiill..llooccaall [--77] [--bb] [--dd] [--DD _m_b_d_b] [--ll] [--ff _f_r_o_m|--rr _f_r_o_m] [--hh _f_i_l_e_n_a_m_e - ] _u_s_e_r _._._. +SYNOPSIS + mail.local [-7] [-b] [-d] [-D mbdb] [-l] [-f from|-r from] [-h filename + ] user ... -DDEESSCCRRIIPPTTIIOONN - MMaaiill..llooccaall reads the standard input up to an end-of-file and appends it - to each _u_s_e_r_'_s mmaaiill file. The _u_s_e_r must be a valid user name. +DESCRIPTION + Mail.local reads the standard input up to an end-of-file and appends it + to each user's mail file. The user must be a valid user name. The options are as follows: - --77 Do not advertise 8BITMIME support in LMTP mode. + -7 Do not advertise 8BITMIME support in LMTP mode. - --bb Return a permanent error instead of a temporary error if a + -b Return a permanent error instead of a temporary error if a mailbox exceeds quota. - --dd Specify this is a delivery (for backward compatibility). + -d Specify this is a delivery (for backward compatibility). This option has no effect. - --DD _m_b_d_b Specify the name of the mailbox database which is used to + -D mbdb Specify the name of the mailbox database which is used to look up local recipient names. This option defaults to "pw", which means use getpwnam(). - --ff _f_r_o_m Specify the sender's name. + -f from Specify the sender's name. - --ll Turn on LMTP mode. + -l Turn on LMTP mode. - --rr _f_r_o_m Specify the sender's name (for backward compatibility). Same + -r from Specify the sender's name (for backward compatibility). Same as -f. - --hh _f_i_l_e_n_a_m_e - Store incoming mail in _f_i_l_e_n_a_m_e in the user's home directory + -h filename + Store incoming mail in filename in the user's home directory instead of a system mail spool directory. - The next options are only available if mmaaiill..llooccaall has been compiled + The next options are only available if mail.local has been compiled with -DHASHSPOOL. - --HH _h_a_s_h_t_y_p_e_h_a_s_h_d_e_p_t_h - Select hashed mail directories. Valid hash types are uu for user - name and mm for MD5 (requires compilation with -DHASHSPOOLMD5). - Example: --HH _u_2 selects user name hashing with a hash depth of 2. + -H hashtypehashdepth + Select hashed mail directories. Valid hash types are u for user + name and m for MD5 (requires compilation with -DHASHSPOOLMD5). + Example: -H u2 selects user name hashing with a hash depth of 2. Note: there must be no space between the hash type and the depth. - --pp _p_a_t_h + -p path Specify an alternate mail spool path. - --nn Specify that the domain part of recipient addresses in LMTP mode + -n Specify that the domain part of recipient addresses in LMTP mode should not be stripped. Individual mail messages in the mailbox are delimited by an empty line @@ -64,33 +64,33 @@ DDEESSCCRRIIPPTTIIOONN lowing a blank line). The mail files are exclusively locked with flock(2) while mail is - appended, and a uusseerr..lloocckk file also is created while the mailbox is + appended, and a user.lock file also is created while the mailbox is locked for compatibility with older MUAs. If the ``biff'' service is returned by getservbyname(3), the biff server is notified of delivered mail. - The mmaaiill..llooccaall utility exits 0 on success, and >0 if an error occurs. + The mail.local utility exits 0 on success, and >0 if an error occurs. -EENNVVIIRROONNMMEENNTT +ENVIRONMENT TZ Used to set the appropriate time zone on the timestamp. -FFIILLEESS +FILES /tmp/local.XXXXXX temporary files /var/mail/user user's default mailbox directory /var/mail/user.lock lock file for a user's default mailbox -SSEEEE AALLSSOO +SEE ALSO mail(1), xsend(1), flock(2), getservbyname(3), comsat(8), sendmail(8) -WWAARRNNIINNGG - mmaaiill..llooccaall escapes only "^From " lines that follow an empty line. If +WARNING + mail.local escapes only "^From " lines that follow an empty line. If all lines starting with "From " should be escaped, use the 'E' flag for the local mailer in the sendmail.cf file. -HHIISSTTOORRYY - A superset of mmaaiill..llooccaall (handling mailbox reading as well as mail - delivery) appeared in Version 7 AT&T UNIX as the program mmaaiill. +HISTORY + A superset of mail.local (handling mailbox reading as well as mail + delivery) appeared in Version 7 AT&T UNIX as the program mail. diff --git a/mail.local/mail.local.c b/mail.local/mail.local.c index fc60792e7daf..5a5659b2068b 100644 --- a/mail.local/mail.local.c +++ b/mail.local/mail.local.c @@ -27,17 +27,17 @@ SM_IDSTR(id, "@(#)$Id: mail.local.c,v 8.257 2013-11-22 20:51:51 ca Exp $") # include # ifdef EX_OK # undef EX_OK /* unistd.h may have another use for this */ -# endif /* EX_OK */ +# endif # define LOCKFILE_PMODE 0 #include #include #ifndef HASHSPOOL # define HASHSPOOL 0 -#endif /* ! HASHSPOOL */ +#endif #ifndef HASHSPOOLMD5 # define HASHSPOOLMD5 0 -#endif /* ! HASHSPOOLMD5 */ +#endif /* ** This is not intended to work on System V derived systems @@ -76,7 +76,7 @@ SM_IDSTR(id, "@(#)$Id: mail.local.c,v 8.257 2013-11-22 20:51:51 ca Exp $") # if HASHSPOOLMD5 # define HASH_MD5 2 # include -# endif /* HASHSPOOLMD5 */ +# endif #endif /* HASHSPOOL */ #if _FFR_SPOOL_PATH @@ -91,10 +91,10 @@ SM_IDSTR(id, "@(#)$Id: mail.local.c,v 8.257 2013-11-22 20:51:51 ca Exp $") #ifndef LOCKTO_RM # define LOCKTO_RM 300 /* timeout for stale lockfile removal */ -#endif /* ! LOCKTO_RM */ +#endif #ifndef LOCKTO_GLOB # define LOCKTO_GLOB 400 /* global timeout for lockfile creation */ -#endif /* ! LOCKTO_GLOB */ +#endif /* define a realloc() which works for NULL pointers */ #define REALLOC(ptr, size) (((ptr) == NULL) ? malloc(size) : realloc(ptr, size)) @@ -107,13 +107,13 @@ SM_IDSTR(id, "@(#)$Id: mail.local.c,v 8.257 2013-11-22 20:51:51 ca Exp $") # define flock(a, b) lockf(a, b, 0) # ifdef LOCK_EX # undef LOCK_EX -# endif /* LOCK_EX */ +# endif # define LOCK_EX F_LOCK #endif /* LDA_USE_LOCKF */ #ifndef LOCK_EX # include -#endif /* ! LOCK_EX */ +#endif /* ** If you don't have setreuid, and you have saved uids, and you have @@ -123,29 +123,29 @@ SM_IDSTR(id, "@(#)$Id: mail.local.c,v 8.257 2013-11-22 20:51:51 ca Exp $") #ifdef LDA_USE_SETEUID # define setreuid(r, e) seteuid(e) -#endif /* LDA_USE_SETEUID */ +#endif #ifdef LDA_CONTENTLENGTH # define CONTENTLENGTH 1 -#endif /* LDA_CONTENTLENGTH */ +#endif #ifndef INADDRSZ # define INADDRSZ 4 /* size of an IPv4 address in bytes */ -#endif /* ! INADDRSZ */ +#endif #ifdef MAILLOCK # include -#endif /* MAILLOCK */ +#endif #ifndef MAILER_DAEMON # define MAILER_DAEMON "MAILER-DAEMON" -#endif /* ! MAILER_DAEMON */ +#endif #ifdef CONTENTLENGTH char ContentHdr[40] = "Content-Length: "; off_t HeaderLength; off_t BodyLength; -#endif /* CONTENTLENGTH */ +#endif bool EightBitMime = true; /* advertise 8BITMIME in LMTP */ char ErrBuf[10240]; /* error buffer */ @@ -160,9 +160,9 @@ char *HomeMailFile = NULL; /* store mail in homedir */ int HashType = HASH_NONE; int HashDepth = 0; bool StripRcptDomain = true; -#else /* HASHSPOOL */ +#else # define StripRcptDomain true -#endif /* HASHSPOOL */ +#endif char SpoolPath[MAXPATHLEN]; char *parseaddr __P((char *, bool)); @@ -179,7 +179,7 @@ void mailerr __P((const char *, const char *, ...)); void flush_error __P((void)); #if HASHSPOOL const char *hashname __P((char *)); -#endif /* HASHSPOOL */ +#endif static void sm_exit __P((int)); @@ -220,9 +220,9 @@ main(argc, argv) # ifdef LOG_MAIL openlog("mail.local", 0, LOG_MAIL); -# else /* LOG_MAIL */ +# else openlog("mail.local", 0); -# endif /* LOG_MAIL */ +# endif from = NULL; @@ -238,9 +238,9 @@ main(argc, argv) #else /* HASHSPOOL */ # if _FFR_SPOOL_PATH while ((ch = getopt(argc, argv, "7bdD:f:h:r:lp:")) != -1) -# else /* _FFR_SPOOL_PATH */ +# else while ((ch = getopt(argc, argv, "7bdD:f:h:r:l")) != -1) -# endif /* _FFR_SPOOL_PATH */ +# endif #endif /* HASHSPOOL */ { switch(ch) @@ -302,7 +302,7 @@ main(argc, argv) case 'm': HashType = HASH_MD5; break; -# endif /* HASHSPOOLMD5 */ +# endif default: mailerr(NULL, "-H: unknown hash type"); @@ -381,7 +381,7 @@ main(argc, argv) } /* Non-LMTP from here on out */ - if (*argv == '\0') + if (*argv == NULL) usage(); /* @@ -803,7 +803,7 @@ store(from, inbody) #ifdef CONTENTLENGTH HeaderLength = 0; BodyLength = -1; -#endif /* CONTENTLENGTH */ +#endif line[0] = '\0'; eline = true; @@ -983,7 +983,7 @@ deliver(fd, name) #ifdef CONTENTLENGTH off_t headerbytes; int readamount; -#endif /* CONTENTLENGTH */ +#endif char biffmsg[100], buf[8 * 1024]; SM_MBDB_T user; @@ -1049,13 +1049,13 @@ deliver(fd, name) if (sm_strlcpyn(path, sizeof(path), #if HASHSPOOL 4, -#else /* HASHSPOOL */ +#else 3, -#endif /* HASHSPOOL */ +#endif SpoolPath, "/", #if HASHSPOOL hashname(name), -#endif /* HASHSPOOL */ +#endif name) >= sizeof(path)) { exitval = EX_UNAVAILABLE; @@ -1103,9 +1103,9 @@ deliver(fd, name) tryagain: #ifdef MAILLOCK p = name; -#else /* MAILLOCK */ +#else p = path; -#endif /* MAILLOCK */ +#endif if ((off = lockmbox(p)) != 0) { if (off == EX_TEMPFAIL || e_to_sys(off) == EX_TEMPFAIL) @@ -1131,7 +1131,7 @@ deliver(fd, name) (void) umask(0007); gid = MAILGID; mode |= S_IRGRP|S_IWGRP; -#endif /* MAILGID */ +#endif mbfd = open(path, O_APPEND|O_CREAT|O_EXCL|O_WRONLY, mode); @@ -1202,7 +1202,7 @@ deliver(fd, name) } #ifdef DEBUG fprintf(stderr, "new euid = %d\n", (int) geteuid()); -#endif /* DEBUG */ +#endif mbfd = open(path, O_APPEND|O_WRONLY, 0); if (mbfd < 0) { @@ -1217,7 +1217,7 @@ deliver(fd, name) sb.st_ino != fsb.st_ino || # if HAS_ST_GEN && 0 /* AFS returns random values for st_gen */ sb.st_gen != fsb.st_gen || -# endif /* HAS_ST_GEN && 0 */ +# endif sb.st_uid != fsb.st_uid) { ExitVal = EX_TEMPFAIL; @@ -1285,7 +1285,7 @@ deliver(fd, name) } #ifdef DEBUG fprintf(stderr, "before writing: euid = %d\n", (int) geteuid()); -#endif /* DEBUG */ +#endif #ifdef CONTENTLENGTH headerbytes = (BodyLength >= 0) ? HeaderLength : -1 ; for (;;) @@ -1320,7 +1320,7 @@ deliver(fd, name) #ifdef EDQUOT if (errno == EDQUOT && BounceQuota) errcode = "552 5.2.2"; -#endif /* EDQUOT */ +#endif mailerr(errcode, "%s: %s", path, sm_errstring(errno)); goto err3; @@ -1341,7 +1341,7 @@ deliver(fd, name) err3: #ifdef DEBUG fprintf(stderr, "reset euid = %d\n", (int) geteuid()); -#endif /* DEBUG */ +#endif if (mbfd >= 0) (void) ftruncate(mbfd, curoff); err1: if (mbfd >= 0) @@ -1373,7 +1373,7 @@ err0: (void) setreuid(0, 0); #ifdef EDQUOT if (errno == EDQUOT && BounceQuota) errcode = "552 5.2.2"; -#endif /* EDQUOT */ +#endif mailerr(errcode, "%s: %s", path, sm_errstring(errno)); mbfd = open(path, O_WRONLY, 0); if (mbfd < 0 || @@ -1387,7 +1387,7 @@ err0: (void) setreuid(0, 0); sb.st_ino != fsb.st_ino || # if HAS_ST_GEN && 0 /* AFS returns random values for st_gen */ sb.st_gen != fsb.st_gen || -# endif /* HAS_ST_GEN && 0 */ +# endif sb.st_uid != fsb.st_uid ) { @@ -1413,7 +1413,7 @@ err0: (void) setreuid(0, 0); } #ifdef DEBUG fprintf(stderr, "reset euid = %d\n", (int) geteuid()); -#endif /* DEBUG */ +#endif unlockmbox(); if (LMTPMode) printf("250 2.1.5 %s Ok\r\n", name); @@ -1583,9 +1583,9 @@ usage() ExitVal = EX_USAGE; # if _FFR_SPOOL_PATH mailerr(NULL, "usage: mail.local [-7] [-b] [-d] [-l] [-f from|-r from] [-h filename] [-p path] user ..."); -# else /* _FFR_SPOOL_PATH */ +# else mailerr(NULL, "usage: mail.local [-7] [-b] [-d] [-l] [-f from|-r from] [-h filename] user ..."); -# endif /* _FFR_SPOOL_PATH */ +# endif sm_exit(ExitVal); } @@ -1651,7 +1651,7 @@ hashname(name) unsigned char md5[18]; # if MAXPATHLEN <= 24 ERROR _MAXPATHLEN <= 24 -# endif /* MAXPATHLEN <= 24 */ +# endif char b64[24]; MD5_LONG bits; int j; @@ -1735,73 +1735,73 @@ e_to_sys(num) #endif /* EDQUOT */ #ifdef EAGAIN case EAGAIN: /* Resource temporarily unavailable */ -#endif /* EAGAIN */ +#endif #ifdef EBUSY case EBUSY: /* Device busy */ -#endif /* EBUSY */ +#endif #ifdef EPROCLIM case EPROCLIM: /* Too many processes */ -#endif /* EPROCLIM */ +#endif #ifdef EUSERS case EUSERS: /* Too many users */ -#endif /* EUSERS */ +#endif #ifdef ECONNABORTED case ECONNABORTED: /* Software caused connection abort */ -#endif /* ECONNABORTED */ +#endif #ifdef ECONNREFUSED case ECONNREFUSED: /* Connection refused */ -#endif /* ECONNREFUSED */ +#endif #ifdef ECONNRESET case ECONNRESET: /* Connection reset by peer */ -#endif /* ECONNRESET */ +#endif #ifdef EDEADLK case EDEADLK: /* Resource deadlock avoided */ -#endif /* EDEADLK */ +#endif #ifdef EFBIG case EFBIG: /* File too large */ -#endif /* EFBIG */ +#endif #ifdef EHOSTDOWN case EHOSTDOWN: /* Host is down */ -#endif /* EHOSTDOWN */ +#endif #ifdef EHOSTUNREACH case EHOSTUNREACH: /* No route to host */ -#endif /* EHOSTUNREACH */ +#endif #ifdef EMFILE case EMFILE: /* Too many open files */ -#endif /* EMFILE */ +#endif #ifdef ENETDOWN case ENETDOWN: /* Network is down */ -#endif /* ENETDOWN */ +#endif #ifdef ENETRESET case ENETRESET: /* Network dropped connection on reset */ -#endif /* ENETRESET */ +#endif #ifdef ENETUNREACH case ENETUNREACH: /* Network is unreachable */ -#endif /* ENETUNREACH */ +#endif #ifdef ENFILE case ENFILE: /* Too many open files in system */ -#endif /* ENFILE */ +#endif #ifdef ENOBUFS case ENOBUFS: /* No buffer space available */ -#endif /* ENOBUFS */ +#endif #ifdef ENOMEM case ENOMEM: /* Cannot allocate memory */ -#endif /* ENOMEM */ +#endif #ifdef ENOSPC case ENOSPC: /* No space left on device */ -#endif /* ENOSPC */ +#endif #ifdef EROFS case EROFS: /* Read-only file system */ -#endif /* EROFS */ +#endif #ifdef ESTALE case ESTALE: /* Stale NFS file handle */ -#endif /* ESTALE */ +#endif #ifdef ETIMEDOUT case ETIMEDOUT: /* Connection timed out */ -#endif /* ETIMEDOUT */ +#endif #if defined(EWOULDBLOCK) && EWOULDBLOCK != EAGAIN && EWOULDBLOCK != EDEADLK case EWOULDBLOCK: /* Operation would block. */ -#endif /* defined(EWOULDBLOCK) && EWOULDBLOCK != EAGAIN && EWOULDBLOCK != EDEADLK */ +#endif ExitVal = EX_TEMPFAIL; break; @@ -1848,7 +1848,7 @@ e_to_sys(num) # if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)mktemp.c 8.1 (Berkeley) 6/4/93"; -# endif /* defined(LIBC_SCCS) && !defined(lint) */ +# endif # include # include diff --git a/mailstats/Makefile b/mailstats/Makefile index b4137b7c451b..526cd161efd1 100644 --- a/mailstats/Makefile +++ b/mailstats/Makefile @@ -8,6 +8,8 @@ all: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ clean: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ +check: FRC + $(SHELL) $(BUILD) $(OPTIONS) $@ install: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ diff --git a/mailstats/mailstats.0 b/mailstats/mailstats.0 index 36de15a6d1fa..f733c56ba5fa 100644 --- a/mailstats/mailstats.0 +++ b/mailstats/mailstats.0 @@ -2,29 +2,29 @@ MAILSTATS(8) MAILSTATS(8) -NNAAMMEE +NAME mailstats - display mail statistics -SSYYNNOOPPSSIISS - mmaaiillssttaattss [--cc] [--oo] [--pp] [--PP] [--CC _c_f_f_i_l_e] [--ff _s_t_f_i_l_e] +SYNOPSIS + mailstats [-c] [-o] [-p] [-P] [-C cffile] [-f stfile] -DDEESSCCRRIIPPTTIIOONN - The mmaaiillssttaattss utility displays the current mail statistics. +DESCRIPTION + The mailstats utility displays the current mail statistics. First, the time at which statistics started being kept is displayed, in the format specified by ctime(3). Then, the statistics for each mailer are displayed on a single line, each with the following white space separated fields: - MM The mailer number. - mmssggssffrr Number of messages from the mailer. - bbyytteess__ffrroomm Kbytes from the mailer. - mmssggssttoo Number of messages to the mailer. - bbyytteess__ttoo Kbytes to the mailer. - mmssggssrreejj Number of messages rejected. - mmssggssddiiss Number of messages discarded. - mmssggssqquurr Number of messages quarantined. - MMaaiilleerr The name of the mailer. + M The mailer number. + msgsfr Number of messages from the mailer. + bytes_from Kbytes from the mailer. + msgsto Number of messages to the mailer. + bytes_to Kbytes to the mailer. + msgsrej Number of messages rejected. + msgsdis Number of messages discarded. + msgsqur Number of messages quarantined. + Mailer The name of the mailer. After this display, a line totaling the values for all of the mailers is displayed (preceded with a ``T''), separated from the previous @@ -33,30 +33,30 @@ DDEESSCCRRIIPPTTIIOONN The options are as follows: - --CC Read the specified file instead of the default sseennddmmaaiill configu- + -C Read the specified file instead of the default sendmail configu- ration file. - --cc Try to use submit.cf instead of the default sseennddmmaaiill configura- + -c Try to use submit.cf instead of the default sendmail configura- tion file. - --ff Read the specified statistics file instead of the statistics - file specified in the sseennddmmaaiill configuration file. + -f Read the specified statistics file instead of the statistics + file specified in the sendmail configuration file. - --PP Output information in program-readable mode without clearing + -P Output information in program-readable mode without clearing statistics. - --pp Output information in program-readable mode and clear statis- + -p Output information in program-readable mode and clear statis- tics. - --oo Don't display the name of the mailer in the output. + -o Don't display the name of the mailer in the output. - The mmaaiillssttaattss utility exits 0 on success, and >0 if an error occurs. + The mailstats utility exits 0 on success, and >0 if an error occurs. -FFIILLEESS - /etc/mail/sendmail.cf The default sseennddmmaaiill configuration file. - /etc/mail/statistics The default sseennddmmaaiill statistics file. +FILES + /etc/mail/sendmail.cf The default sendmail configuration file. + /etc/mail/statistics The default sendmail statistics file. -SSEEEE AALLSSOO +SEE ALSO mailq(1), sendmail(8) diff --git a/mailstats/mailstats.c b/mailstats/mailstats.c index 7107e62744b5..6b34a576e851 100644 --- a/mailstats/mailstats.c +++ b/mailstats/mailstats.c @@ -30,7 +30,7 @@ SM_IDSTR(id, "@(#)$Id: mailstats.c,v 8.103 2013-11-22 20:51:51 ca Exp $") #include #ifdef EX_OK # undef EX_OK /* unistd.h may have another use for this */ -#endif /* EX_OK */ +#endif #include #include diff --git a/makemap/Makefile b/makemap/Makefile index 953d28b37e7e..301a639d437e 100644 --- a/makemap/Makefile +++ b/makemap/Makefile @@ -8,6 +8,8 @@ all: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ clean: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ +check: FRC + $(SHELL) $(BUILD) $(OPTIONS) $@ install: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ diff --git a/makemap/Makefile.m4 b/makemap/Makefile.m4 index c6dffd0f57f5..9ff01cd25491 100644 --- a/makemap/Makefile.m4 +++ b/makemap/Makefile.m4 @@ -21,4 +21,5 @@ bldPRODUCT_START(`manpage', `makemap') define(`bldSOURCES', `makemap.8') bldPRODUCT_END + bldFINISH diff --git a/makemap/makemap.0 b/makemap/makemap.0 index 73d6ef09a37e..61f4d6f868dc 100644 --- a/makemap/makemap.0 +++ b/makemap/makemap.0 @@ -2,20 +2,20 @@ MAKEMAP(8) MAKEMAP(8) -NNAAMMEE +NAME makemap - create database maps for sendmail -SSYYNNOOPPSSIISS - mmaakkeemmaapp [--CC _f_i_l_e] [--NN] [--cc _c_a_c_h_e_s_i_z_e] [--dd] [--DD _c_o_m_m_e_n_t_c_h_a_r] [--ee] [--ff] - [--ll] [--oo] [--rr] [--ss] [--tt _d_e_l_i_m] [--uu] [--vv] _m_a_p_t_y_p_e _m_a_p_n_a_m +SYNOPSIS + makemap [-C file] [-N] [-c cachesize] [-d] [-D commentchar] [-e] [-f] + [-l] [-o] [-r] [-s] [-t delim] [-u] [-v] maptype mapnam -DDEESSCCRRIIPPTTIIOONN - MMaakkeemmaapp creates the database maps used by the keyed map lookups in +DESCRIPTION + Makemap creates the database maps used by the keyed map lookups in sendmail(8). It reads input from the standard input and outputs them - to the indicated _m_a_p_n_a_m_e_. + to the indicated mapname. - Depending on how it is compiled, mmaakkeemmaapp handles up to three different - database formats, selected using the _m_a_p_t_y_p_e parameter. They may be + Depending on how it is compiled, makemap handles different database + formats, selected using the maptype parameter. They may be dbm DBM format maps. This requires the ndbm(3) library. @@ -23,67 +23,79 @@ DDEESSCCRRIIPPTTIIOONN hash Hash format maps. This also requires the Berkeley DB library. - In all cases, mmaakkeemmaapp reads lines from the standard input consisting of + cdb CDB (Constant DataBase) format maps. This requires the tinycdb + library. + + implicit + The first available format in the following order: hash, dbm, + and cdb. + + In all cases, makemap reads lines from the standard input consisting of two words separated by white space. The first is the database key, the - second is the value. The value may contain ``%_n'' strings to indicate + second is the value. The value may contain ``%n'' strings to indicate parameter substitution. Literal percents should be doubled (``%%''). Blank lines and lines beginning with ``#'' are ignored. - Notice: do nnoott use mmaakkeemmaapp to create the aliases data base, but - nneewwaalliiaasseess which puts a special token into the data base that is - required by sseennddmmaaiill.. + Notice: do not use makemap to create the aliases data base, but + newaliases which puts a special token into the data base that is + required by sendmail. - If the _T_r_u_s_t_e_d_U_s_e_r option is set in the sendmail configuration file and - mmaakkeemmaapp is invoked as root, the generated files will be owned by the - specified _T_r_u_s_t_e_d_U_s_e_r_. + If the TrustedUser option is set in the sendmail configuration file and + makemap is invoked as root, the generated files will be owned by the + specified TrustedUser. - FFllaaggss - --CC Use the specified sseennddmmaaiill configuration file for looking up the + Flags + -C Use the specified sendmail configuration file for looking up the TrustedUser option. - --NN Include the null byte that terminates strings in the map. This + -N Include the null byte that terminates strings in the map. This must match the -N flag in the sendmail.cf ``K'' line. - --cc Use the specified hash and B-Tree cache size. + -c Use the specified hash and B-Tree cache size. - --DD Use to specify the character to use to indicate a comment (which + -D Use to specify the character to use to indicate a comment (which is ignored) instead of the default of '#'. - --dd Allow duplicate keys in the map. This is only allowed on B-Tree + -d Allow duplicate keys in the map. This is only allowed on B-Tree format maps. If two identical keys are read, they will both be inserted into the map. - --ee Allow empty value (right hand side). + -e Allow empty value (right hand side). - --ff Normally all upper case letters in the key are folded to lower + -f Normally all upper case letters in the key are folded to lower case. This flag disables that behaviour. This is intended to - mesh with the -f flag in the KK line in sendmail.cf. The value + mesh with the -f flag in the K line in sendmail.cf. The value is never case folded. - --ll List supported map types. + -l List supported map types. - --oo Append to an old file. This allows you to augment an existing - file. + -o Append to an old file. This allows you to augment an existing + file. Note: this might not be supported by all database types, + e.g., cdb. - --rr Allow replacement of existing keys. Normally mmaakkeemmaapp complains + -r Allow replacement of existing keys. Normally makemap complains if you repeat a key, and does not do the insert. - --ss Ignore safety checks on maps being created. This includes - checking for hard or symbolic links in world writable directo- + -s Ignore safety checks on maps being created. This includes + checking for hard or symbolic links in world writable directo- ries. - --tt Use the specified delimiter instead of white space (also for + -t Use the specified delimiter instead of white space (also for dumping a map). - --uu dump (unmap) the content of the database to standard output. + -u dump (unmap) the content of the database to standard output. - --vv Verbosely print what it is doing. + -v Verbosely print what it is doing. -SSEEEE AALLSSOO + +Example + makemap hash /etc/mail/access < /etc/mail/access + +SEE ALSO sendmail(8), newaliases(1) -HHIISSTTOORRYY - The mmaakkeemmaapp command appeared in 4.4BSD. +HISTORY + The makemap command appeared in 4.4BSD. diff --git a/makemap/makemap.8 b/makemap/makemap.8 index a6bfd21462c4..fa250109b842 100644 --- a/makemap/makemap.8 +++ b/makemap/makemap.8 @@ -46,7 +46,7 @@ and outputs them to the indicated .PP Depending on how it is compiled, .B makemap -handles up to three different database formats, +handles different database formats, selected using the .I maptype parameter. @@ -67,6 +67,14 @@ hash Hash format maps. This also requires the Berkeley DB library. +.TP +cdb +CDB (Constant DataBase) format maps. +This requires the tinycdb library. +.TP +implicit +The first available format in the following order: +hash, dbm, and cdb. .PP In all cases, .B makemap @@ -142,6 +150,8 @@ List supported map types. .B \-o Append to an old file. This allows you to augment an existing file. +Note: this might not be supported by all database types, +e.g., cdb. .TP .B \-r Allow replacement of existing keys. @@ -164,6 +174,9 @@ dump (unmap) the content of the database to standard output. .TP .B \-v Verbosely print what it is doing. +.P +.SH Example +makemap hash /etc/mail/access < /etc/mail/access .SH SEE ALSO sendmail(8), newaliases(1) .SH HISTORY diff --git a/makemap/makemap.c b/makemap/makemap.c index cf1f62c8ea9e..4aa8d6ddab38 100644 --- a/makemap/makemap.c +++ b/makemap/makemap.c @@ -26,15 +26,16 @@ SM_IDSTR(id, "@(#)$Id: makemap.c,v 8.183 2013-11-22 20:51:52 ca Exp $") #include #ifndef ISC_UNIX # include -#endif /* ! ISC_UNIX */ +#endif #include #include #include #ifdef EX_OK # undef EX_OK /* unistd.h may have another use for this */ -#endif /* EX_OK */ +#endif #include #include +#include #include #include @@ -50,13 +51,15 @@ uid_t TrustedUid = 0; BITMAP256 DontBlameSendmail; #define BUFSIZE 1024 -#define ISSEP(c) (sep == '\0' ? isascii(c) && isspace(c) : (c) == sep) +#define ISASCII(c) isascii((unsigned char)(c)) +#define ISSEP(c) (sep == '\0' ? ISASCII(c) && isspace(c) : (c) == sep) -static void usage __P((char *)); +static void usage __P((const char *)); +static char *readcf __P((const char *, char *, bool)); static void usage(progname) - char *progname; + const char *progname; { sm_io_fprintf(smioerr, SM_TIME_DEFAULT, "Usage: %s [-C cffile] [-N] [-c cachesize] [-D commentchar]\n", @@ -70,6 +73,181 @@ usage(progname) exit(EX_USAGE); } +/* +** READCF -- read some settings from configuration file. +** +** Parameters: +** cfile -- configuration file name. +** mapfile -- file name of map to look up (if not NULL/empty) +** Note: this finds the first match, so in case someone +** uses the same map file for different maps, they are +** hopefully using the same map type. +** fullpath -- compare the full paths or just the "basename"s? +** (even excluding any .ext !) +** +** Returns: +** pointer to map class name (static!) +*/ + +static char * +readcf(cfile, mapfile, fullpath) + const char *cfile; + char *mapfile; + bool fullpath; +{ + SM_FILE_T *cfp; + char buf[MAXLINE]; + static char classbuf[MAXLINE]; + char *classname; + char *p; + + if ((cfp = sm_io_open(SmFtStdio, SM_TIME_DEFAULT, cfile, + SM_IO_RDONLY, NULL)) == NULL) + { + sm_io_fprintf(smioerr, SM_TIME_DEFAULT, + "makemap: %s: %s\n", + cfile, sm_errstring(errno)); + exit(EX_NOINPUT); + } + classname = NULL; + classbuf[0] = '\0'; + + if (!fullpath && mapfile != NULL) + { + p = strrchr(mapfile, '/'); + if (p != NULL) + mapfile = ++p; + p = strrchr(mapfile, '.'); + if (p != NULL) + *p = '\0'; + } + + while (sm_io_fgets(cfp, SM_TIME_DEFAULT, buf, sizeof(buf)) >= 0) + { + char *b; + + if ((b = strchr(buf, '\n')) != NULL) + *b = '\0'; + + b = buf; + switch (*b++) + { + case 'O': /* option */ +#if HASFCHOWN + if (strncasecmp(b, " TrustedUser", 12) == 0 && + !(ISASCII(b[12]) && isalnum(b[12]))) + { + b = strchr(b, '='); + if (b == NULL) + continue; + while (ISASCII(*++b) && isspace(*b)) + continue; + if (ISASCII(*b) && isdigit(*b)) + TrustedUid = atoi(b); + else + { + struct passwd *pw; + + TrustedUid = 0; + pw = getpwnam(b); + if (pw == NULL) + (void) sm_io_fprintf(smioerr, + SM_TIME_DEFAULT, + "TrustedUser: unknown user %s\n", b); + else + TrustedUid = pw->pw_uid; + } + +# ifdef UID_MAX + if (TrustedUid > UID_MAX) + { + (void) sm_io_fprintf(smioerr, + SM_TIME_DEFAULT, + "TrustedUser: uid value (%ld) > UID_MAX (%ld)", + (long) TrustedUid, + (long) UID_MAX); + TrustedUid = 0; + } +# endif /* UID_MAX */ + } +#endif /* HASFCHOWN */ + break; + + case 'K': /* Keyfile (map) */ + if (classname != NULL) /* found it already */ + continue; + if (mapfile == NULL || *mapfile == '\0') + continue; + + /* cut off trailing spaces */ + for (p = buf + strlen(buf) - 1; ISASCII(*p) && isspace(*p) && p > buf; p--) + *p = '\0'; + + /* find the last argument */ + p = strrchr(buf, ' '); + if (p == NULL) + continue; + b = strstr(p, mapfile); + if (b == NULL) + continue; + if (b <= buf) + continue; + if (!fullpath) + { + p = strrchr(b, '.'); + if (p != NULL) + *p = '\0'; + } + + /* allow trailing white space? */ + if (strcmp(mapfile, b) != 0) + continue; + /* SM_ASSERT(b > buf); */ + --b; + if (!ISASCII(*b)) + continue; + if (!isspace(*b) && fullpath) + continue; + if (!fullpath && !(SM_IS_DIR_DELIM(*b) || isspace(*b))) + continue; + + /* basically from readcf.c */ + for (b = buf + 1; ISASCII(*b) && isspace(*b); b++) + ; + if (!(ISASCII(*b) && isalnum(*b))) + { + /* syserr("readcf: config K line: no map name"); */ + return NULL; + } + + while ((ISASCII(*++b) && isalnum(*b)) || *b == '_' || *b == '.') + ; + if (*b != '\0') + *b++ = '\0'; + while (ISASCII(*b) && isspace(*b)) + b++; + if (!(ISASCII(*b) && isalnum(*b))) + { + /* syserr("readcf: config K line, map %s: no map class", b); */ + return NULL; + } + classname = b; + while (ISASCII(*++b) && isalnum(*b)) + ; + if (*b != '\0') + *b++ = '\0'; + (void) sm_strlcpy(classbuf, classname, sizeof classbuf); + break; + + default: + continue; + } + } + (void) sm_io_close(cfp, SM_TIME_DEFAULT); + + return classbuf; +} + int main(argc, argv) int argc; @@ -84,11 +262,13 @@ main(argc, argv) bool verbose = false; bool foldcase = true; bool unmake = false; + bool didreadcf = false; char sep = '\0'; char comment = '#'; int exitstat; int opt; char *typename = NULL; + char *fallback = NULL; char *mapname = NULL; unsigned int lineno; int st; @@ -103,10 +283,6 @@ main(argc, argv) SMDB_DBPARAMS params; SMDB_USER_INFO user_info; char ibuf[BUFSIZE]; -#if HASFCHOWN - SM_FILE_T *cfp; - char buf[MAXLINE]; -#endif /* HASFCHOWN */ static char rnamebuf[MAXNAME]; /* holds RealUserName */ extern char *optarg; extern int optind; @@ -136,7 +312,7 @@ main(argc, argv) (void) sm_strlcpy(user_info.smdbu_name, RunAsUserName, SMDB_MAX_USER_NAME_LEN); -#define OPTIONS "C:D:Nc:deflorst:uv" +#define OPTIONS "C:D:Nc:defi:Llorst:uvx" while ((opt = getopt(argc, argv, OPTIONS)) != -1) { switch (opt) @@ -165,12 +341,23 @@ main(argc, argv) foldcase = false; break; + case 'i': + fallback =optarg; + break; + case 'D': comment = *optarg; break; + case 'L': + smdb_print_available_types(false); + sm_io_fprintf(smioout, SM_TIME_DEFAULT, + "cf\nCF\n"); + exit(EX_OK); + break; + case 'l': - smdb_print_available_types(); + smdb_print_available_types(false); exit(EX_OK); break; @@ -206,6 +393,11 @@ main(argc, argv) case 'v': verbose = true; break; + + case 'x': + smdb_print_available_types(true); + exit(EX_OK); + break; default: usage(progname); @@ -233,68 +425,18 @@ main(argc, argv) mapname = argv[1]; } +#define TYPEFROMCF (strcasecmp(typename, "cf") == 0) +#define FULLPATHFROMCF (strcmp(typename, "cf") == 0) + #if HASFCHOWN - /* Find TrustedUser value in sendmail.cf */ - if ((cfp = sm_io_open(SmFtStdio, SM_TIME_DEFAULT, cfile, SM_IO_RDONLY, - NULL)) == NULL) + if (geteuid() == 0) { - sm_io_fprintf(smioerr, SM_TIME_DEFAULT, "makemap: %s: %s\n", - cfile, sm_errstring(errno)); - exit(EX_NOINPUT); + if (TYPEFROMCF) + typename = readcf(cfile, mapname, FULLPATHFROMCF); + else + (void) readcf(cfile, NULL, false); + didreadcf = true; } - while (sm_io_fgets(cfp, SM_TIME_DEFAULT, buf, sizeof(buf)) >= 0) - { - register char *b; - - if ((b = strchr(buf, '\n')) != NULL) - *b = '\0'; - - b = buf; - switch (*b++) - { - case 'O': /* option */ - if (strncasecmp(b, " TrustedUser", 12) == 0 && - !(isascii(b[12]) && isalnum(b[12]))) - { - b = strchr(b, '='); - if (b == NULL) - continue; - while (isascii(*++b) && isspace(*b)) - continue; - if (isascii(*b) && isdigit(*b)) - TrustedUid = atoi(b); - else - { - TrustedUid = 0; - pw = getpwnam(b); - if (pw == NULL) - (void) sm_io_fprintf(smioerr, - SM_TIME_DEFAULT, - "TrustedUser: unknown user %s\n", b); - else - TrustedUid = pw->pw_uid; - } - -# ifdef UID_MAX - if (TrustedUid > UID_MAX) - { - (void) sm_io_fprintf(smioerr, - SM_TIME_DEFAULT, - "TrustedUser: uid value (%ld) > UID_MAX (%ld)", - (long) TrustedUid, - (long) UID_MAX); - TrustedUid = 0; - } -# endif /* UID_MAX */ - break; - } - - - default: - continue; - } - } - (void) sm_io_close(cfp, SM_TIME_DEFAULT); #endif /* HASFCHOWN */ if (!params.smdbp_allow_dup && !allowreplace) @@ -318,6 +460,36 @@ main(argc, argv) params.smdbp_num_elements = 4096; + if (!didreadcf && TYPEFROMCF) + { + typename = readcf(cfile, mapname, FULLPATHFROMCF); + didreadcf = true; + } + if (didreadcf && (typename == NULL || *typename == '\0')) + { + if (fallback != NULL && *fallback != '\0') + { + typename = fallback; + if (verbose) + (void) sm_io_fprintf(smioerr, SM_TIME_DEFAULT, + "%s: mapfile %s: not found in %s, using fallback %s\n", + progname, mapname, cfile, fallback); + } + else + { + (void) sm_io_fprintf(smioerr, SM_TIME_DEFAULT, + "%s: mapfile %s: not found in %s\n", + progname, mapname, cfile); + exit(EX_DATAERR); + } + } + + /* + ** Note: if "implicit" is selected it does not work like + ** sendmail: it will just use the first available DB type, + ** it won't try several (for -u) to find one that "works". + */ + errno = smdb_open_database(&database, mapname, mode, smode, sff, typename, &user_info, ¶ms); if (errno != SMDBE_OK) @@ -417,7 +589,7 @@ main(argc, argv) if (ibuf[0] == '\0' || ibuf[0] == comment) continue; - if (sep == '\0' && isascii(ibuf[0]) && isspace(ibuf[0])) + if (sep == '\0' && ISASCII(ibuf[0]) && isspace(ibuf[0])) { (void) sm_io_fprintf(smioerr, SM_TIME_DEFAULT, "%s: %s: line %u: syntax error (leading space)\n", @@ -432,7 +604,7 @@ main(argc, argv) for (p = ibuf; *p != '\0' && !(ISSEP(*p)); p++) { - if (foldcase && isascii(*p) && isupper(*p)) + if (foldcase && ISASCII(*p) && isupper(*p)) *p = tolower(*p); } db_key.size = p - ibuf; diff --git a/praliases/Makefile b/praliases/Makefile index adf435249c19..b7e69043d074 100644 --- a/praliases/Makefile +++ b/praliases/Makefile @@ -8,6 +8,8 @@ all: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ clean: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ +check: FRC + $(SHELL) $(BUILD) $(OPTIONS) $@ install: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ diff --git a/praliases/praliases.0 b/praliases/praliases.0 index 7cca6e5c68b1..c6b03b0c512f 100644 --- a/praliases/praliases.0 +++ b/praliases/praliases.0 @@ -2,36 +2,36 @@ PRALIASES(8) PRALIASES(8) -NNAAMMEE +NAME praliases - display system mail aliases -SSYYNNOOPPSSIISS - pprraalliiaasseess [--CC _f_i_l_e] [--ff _f_i_l_e] [_k_e_y _._._.] +SYNOPSIS + praliases [-C file] [-f file] [key ...] -DDEESSCCRRIIPPTTIIOONN - The pprraalliiaasseess utility displays the current system aliases, one per +DESCRIPTION + The praliases utility displays the current system aliases, one per line, in no particular order. The special internal @:@ alias will be displayed if present. The options are as follows: - --CC _f_i_l_e + -C file Read the specified sendmail configuration file instead of the - default sseennddmmaaiill configuration file. + default sendmail configuration file. - --ff _f_i_l_e - Read the specified file instead of the configured sseennddmmaaiill sys- + -f file + Read the specified file instead of the configured sendmail sys- tem aliases file(s). If one or more keys are specified on the command line, only entries which match those keys are displayed. - The pprraalliiaasseess utility exits 0 on success, and >0 if an error occurs. + The praliases utility exits 0 on success, and >0 if an error occurs. -FFIILLEESS - /etc/mail/sendmail.cf The default sseennddmmaaiill configuration file. +FILES + /etc/mail/sendmail.cf The default sendmail configuration file. -SSEEEE AALLSSOO +SEE ALSO mailq(1), sendmail(8) diff --git a/praliases/praliases.c b/praliases/praliases.c index 67b28eaec91c..682d4e14d2ea 100644 --- a/praliases/praliases.c +++ b/praliases/praliases.c @@ -28,13 +28,13 @@ SM_IDSTR(id, "@(#)$Id: praliases.c,v 8.98 2013-11-22 20:51:53 ca Exp $") #include #ifdef EX_OK # undef EX_OK /* unistd.h may have another use for this */ -#endif /* EX_OK */ +#endif #include #ifndef NOT_SENDMAIL # define NOT_SENDMAIL -#endif /* ! NOT_SENDMAIL */ +#endif #include #include #include @@ -274,9 +274,7 @@ praliases(filename, argc, argv) if (db_type != NULL && *db_type != '\0') { if (db_type != SMDB_TYPE_DEFAULT && - strcmp(db_type, "hash") != 0 && - strcmp(db_type, "btree") != 0 && - strcmp(db_type, "dbm") != 0) + !smdb_is_db_type(db_type)) { sm_io_fprintf(smioerr, SM_TIME_DEFAULT, "praliases: Skipping non-file based alias type %s\n", diff --git a/rmail/Makefile b/rmail/Makefile index eeace604b1d7..059e4c188b6d 100644 --- a/rmail/Makefile +++ b/rmail/Makefile @@ -8,6 +8,8 @@ all: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ clean: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ +check: FRC + $(SHELL) $(BUILD) $(OPTIONS) $@ install: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ force-install: FRC diff --git a/rmail/rmail.0 b/rmail/rmail.0 index 6a7b83d3c23e..011c2846b545 100644 --- a/rmail/rmail.0 +++ b/rmail/rmail.0 @@ -2,34 +2,34 @@ RMAIL(8) RMAIL(8) -NNAAMMEE +NAME rmail - handle remote mail received via uucp -SSYYNNOOPPSSIISS - rrmmaaiill [--DD _d_o_m_a_i_n] [--TT] _u_s_e_r _._._. +SYNOPSIS + rmail [-D domain] [-T] user ... -DDEESSCCRRIIPPTTIIOONN - RRmmaaiill interprets incoming mail received via uucp(1), collapsing +DESCRIPTION + Rmail interprets incoming mail received via uucp(1), collapsing ``From'' lines in the form generated by mail.local(8) into a single line of the form ``return-path!sender'', and passing the processed mail on to sendmail(8). - RRmmaaiill is explicitly designed for use with uucp and sendmail. + Rmail is explicitly designed for use with uucp and sendmail. - FFllaaggss - --DD Use the specified _d_o_m_a_i_n instead of the default domain of + Flags + -D Use the specified domain instead of the default domain of ``UUCP''. - --TT Turn on debugging. + -T Turn on debugging. -SSEEEE AALLSSOO +SEE ALSO uucp(1), mail.local(8), sendmail(8) -HHIISSTTOORRYY - The rrmmaaiill program appeared in 4.2BSD. +HISTORY + The rmail program appeared in 4.2BSD. -BBUUGGSS - RRmmaaiill should not reside in /bin. +BUGS + Rmail should not reside in /bin. diff --git a/rmail/rmail.c b/rmail/rmail.c index 178cc3560f8c..154d772a81da 100644 --- a/rmail/rmail.c +++ b/rmail/rmail.c @@ -58,7 +58,7 @@ SM_IDSTR(id, "@(#)$Id: rmail.c,v 8.63 2013-11-22 20:51:53 ca Exp $") #include #ifdef EX_OK # undef EX_OK /* unistd.h may have another use for this */ -#endif /* EX_OK */ +#endif #include #include diff --git a/smrsh/Makefile b/smrsh/Makefile index e5dd03089f19..90487fb2a24c 100644 --- a/smrsh/Makefile +++ b/smrsh/Makefile @@ -8,6 +8,8 @@ all: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ clean: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ +check: FRC + $(SHELL) $(BUILD) $(OPTIONS) $@ install: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ diff --git a/smrsh/smrsh.0 b/smrsh/smrsh.0 index 40ac9bc55297..ca30a62ae516 100644 --- a/smrsh/smrsh.0 +++ b/smrsh/smrsh.0 @@ -2,22 +2,22 @@ SMRSH(8) SMRSH(8) -NNAAMMEE +NAME smrsh - restricted shell for sendmail -SSYYNNOOPPSSIISS - ssmmrrsshh --cc command +SYNOPSIS + smrsh -c command -DDEESSCCRRIIPPTTIIOONN - The _s_m_r_s_h program is intended as a replacement for _s_h for use in the - ``prog'' mailer in _s_e_n_d_m_a_i_l(8) configuration files. It sharply limits - the commands that can be run using the ``|program'' syntax of _s_e_n_d_m_a_i_l +DESCRIPTION + The smrsh program is intended as a replacement for sh for use in the + ``prog'' mailer in sendmail(8) configuration files. It sharply limits + the commands that can be run using the ``|program'' syntax of sendmail in order to improve the over all security of your system. Briefly, even if a ``bad guy'' can get sendmail to run a program without going - through an alias or forward file, _s_m_r_s_h limits the set of programs that + through an alias or forward file, smrsh limits the set of programs that he or she can execute. - Briefly, _s_m_r_s_h limits programs to be in a single directory, by default + Briefly, smrsh limits programs to be in a single directory, by default /usr/adm/sm.bin, allowing the system administrator to choose the set of acceptable commands, and to the shell builtin commands ``exec'', ``exit'', and ``echo''. It also rejects any commands with the charac- @@ -32,22 +32,22 @@ DDEESSCCRRIIPPTTIIOONN ward to ``/usr/adm/sm.bin/vacation''. System administrators should be conservative about populating the - sm.bin directory. For example, a reasonable additions is _v_a_c_a_t_i_o_n(1), + sm.bin directory. For example, a reasonable additions is vacation(1), and the like. No matter how brow-beaten you may be, never include any - shell or shell-like program (such as _p_e_r_l(1)) in the sm.bin directory. + shell or shell-like program (such as perl(1)) in the sm.bin directory. Note that this does not restrict the use of shell or perl scripts in the sm.bin directory (using the ``#!'' syntax); it simply disallows execution of arbitrary programs. Also, including mail filtering pro- - grams such as _p_r_o_c_m_a_i_l(1) is a very bad idea. _p_r_o_c_m_a_i_l(1) allows users - to run arbitrary programs in their _p_r_o_c_m_a_i_l_r_c(5). + grams such as procmail(1) is a very bad idea. procmail(1) allows users + to run arbitrary programs in their procmailrc(5). -CCOOMMPPIILLAATTIIOONN +COMPILATION Compilation should be trivial on most systems. You may need to use - -DSMRSH_PATH=\"_p_a_t_h\" to adjust the default search path (defaults to - ``/bin:/usr/bin:/usr/ucb'') and/or -DSMRSH_CMDDIR=\"_d_i_r\" to change the + -DSMRSH_PATH=\"path\" to adjust the default search path (defaults to + ``/bin:/usr/bin:/usr/ucb'') and/or -DSMRSH_CMDDIR=\"dir\" to change the default program directory (defaults to ``/usr/adm/sm.bin''). -FFIILLEESS +FILES /usr/adm/sm.bin - default directory for restricted programs on most OSs /var/adm/sm.bin - directory for restricted programs on HP UX and @@ -57,7 +57,7 @@ FFIILLEESS 3.3) and DragonFly BSD -SSEEEE AALLSSOO +SEE ALSO sendmail(8) diff --git a/smrsh/smrsh.c b/smrsh/smrsh.c index 86e20a4cf537..8c4e47ca200b 100644 --- a/smrsh/smrsh.c +++ b/smrsh/smrsh.c @@ -64,7 +64,7 @@ SM_IDSTR(id, "@(#)$Id: smrsh.c,v 8.66 2013-11-22 20:52:00 ca Exp $") #include #ifdef EX_OK # undef EX_OK -#endif /* EX_OK */ +#endif #include #include #include @@ -76,9 +76,9 @@ SM_IDSTR(id, "@(#)$Id: smrsh.c,v 8.66 2013-11-22 20:52:00 ca Exp $") #ifndef CMDDIR # ifdef SMRSH_CMDDIR # define CMDDIR SMRSH_CMDDIR -# else /* SMRSH_CMDDIR */ +# else # define CMDDIR "/usr/adm/sm.bin" -# endif /* SMRSH_CMDDIR */ +# endif #endif /* ! CMDDIR */ /* characters disallowed in the shell "-c" argument */ @@ -88,9 +88,9 @@ SM_IDSTR(id, "@(#)$Id: smrsh.c,v 8.66 2013-11-22 20:52:00 ca Exp $") #ifndef PATH # ifdef SMRSH_PATH # define PATH SMRSH_PATH -# else /* SMRSH_PATH */ +# else # define PATH "/bin:/usr/bin:/usr/ucb" -# endif /* SMRSH_PATH */ +# endif #endif /* ! PATH */ char newcmdbuf[1000]; @@ -128,7 +128,7 @@ addcmd(s, cmd, len) "%s: command too long: %s\n", prg, par); #ifndef DEBUG syslog(LOG_WARNING, "command too long: %.40s", par); -#endif /* ! DEBUG */ +#endif exit(EX_UNAVAILABLE); } if (cmd) @@ -155,9 +155,9 @@ main(argc, argv) #ifndef DEBUG # ifndef LOG_MAIL openlog("smrsh", 0); -# else /* ! LOG_MAIL */ +# else openlog("smrsh", LOG_ODELAY|LOG_CONS, LOG_MAIL); -# endif /* ! LOG_MAIL */ +# endif #endif /* ! DEBUG */ (void) sm_strlcpyn(pathbuf, sizeof pathbuf, 2, "PATH=", PATH); @@ -176,7 +176,7 @@ main(argc, argv) "Usage: %s -c command\n", prg); #ifndef DEBUG syslog(LOG_ERR, "usage"); -#endif /* ! DEBUG */ +#endif exit(EX_USAGE); } @@ -193,7 +193,7 @@ main(argc, argv) { #ifndef DEBUG syslog(LOG_ERR, "too many specials: %.40s", SPECIALS); -#endif /* ! DEBUG */ +#endif exit(EX_UNAVAILABLE); } (void) sm_strlcpy(specialbuf, SPECIALS, sizeof specialbuf); @@ -211,7 +211,7 @@ main(argc, argv) "%s: command too long: %s\n", prg, par); #ifndef DEBUG syslog(LOG_WARNING, "command too long: %.40s", par); -#endif /* ! DEBUG */ +#endif exit(EX_UNAVAILABLE); } @@ -238,7 +238,7 @@ main(argc, argv) prg); #ifndef DEBUG syslog(LOG_CRIT, "uid %d: missing command to exec", (int) getuid()); -#endif /* ! DEBUG */ +#endif exit(EX_UNAVAILABLE); } break; @@ -300,14 +300,14 @@ main(argc, argv) #ifndef DEBUG syslog(LOG_CRIT, "uid %d: attempt to use \"%s\" (filename too long)", (int) getuid(), cmd); -#endif /* ! DEBUG */ +#endif exit(EX_UNAVAILABLE); } #ifdef DEBUG (void) sm_io_fprintf(smioout, SM_TIME_DEFAULT, "Trying %s\n", cmdbuf); -#endif /* DEBUG */ +#endif if (stat(cmdbuf, &st) < 0) { /* can't stat it */ @@ -319,13 +319,13 @@ main(argc, argv) #ifndef DEBUG syslog(LOG_CRIT, "uid %d: attempt to use \"%s\" (stat failed)", (int) getuid(), cmd); -#endif /* ! DEBUG */ +#endif exit(EX_UNAVAILABLE); } if (!S_ISREG(st.st_mode) #ifdef S_ISLNK && !S_ISLNK(st.st_mode) -#endif /* S_ISLNK */ +#endif ) { /* can't stat it */ @@ -337,12 +337,12 @@ main(argc, argv) #ifndef DEBUG syslog(LOG_CRIT, "uid %d: attempt to use \"%s\" (not a file)", (int) getuid(), cmd); -#endif /* ! DEBUG */ +#endif exit(EX_UNAVAILABLE); } if (access(cmdbuf, X_OK) < 0) { - /* oops.... crack attack possiblity */ + /* oops.... crack attack possibility */ (void) sm_io_fprintf(smioerr, SM_TIME_DEFAULT, "%s: \"%s\" not available for sendmail programs\n", prg, cmd); @@ -351,7 +351,7 @@ main(argc, argv) #ifndef DEBUG syslog(LOG_CRIT, "uid %d: attempt to use \"%s\"", (int) getuid(), cmd); -#endif /* ! DEBUG */ +#endif exit(EX_UNAVAILABLE); } @@ -395,7 +395,7 @@ main(argc, argv) #ifndef DEBUG syslog(LOG_CRIT, "uid %d: attempt to use %c in command: %s", (int) getuid(), *r, par); -#endif /* ! DEBUG */ +#endif exit(EX_UNAVAILABLE); } if (isexec) @@ -405,7 +405,7 @@ main(argc, argv) #ifndef DEBUG syslog(LOG_CRIT, "uid %d: missing command to exec", (int) getuid()); -#endif /* ! DEBUG */ +#endif exit(EX_UNAVAILABLE); } /* make sure we created something */ @@ -415,7 +415,7 @@ main(argc, argv) "Usage: %s -c command\n", prg); #ifndef DEBUG syslog(LOG_ERR, "usage"); -#endif /* ! DEBUG */ +#endif exit(EX_USAGE); } @@ -425,13 +425,13 @@ main(argc, argv) #ifdef DEBUG (void) sm_io_fprintf(smioout, SM_TIME_DEFAULT, "%s\n", newcmdbuf); -#endif /* DEBUG */ +#endif (void) execle("/bin/sh", "/bin/sh", "-c", newcmdbuf, (char *)NULL, newenv); save_errno = errno; #ifndef DEBUG syslog(LOG_CRIT, "Cannot exec /bin/sh: %s", sm_errstring(errno)); -#endif /* ! DEBUG */ +#endif errno = save_errno; sm_perror("/bin/sh"); exit(EX_OSFILE); diff --git a/src/Makefile b/src/Makefile index 2326faf113ba..63554abaf1e0 100644 --- a/src/Makefile +++ b/src/Makefile @@ -6,10 +6,10 @@ OPTIONS= $(CONFIG) $(FLAGS) all: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ -check: FRC - $(SHELL) $(BUILD) $(OPTIONS) $@ clean: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ +check: FRC + $(SHELL) $(BUILD) $(OPTIONS) $@ install: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ diff --git a/src/Makefile.m4 b/src/Makefile.m4 index a666aa276e5b..e7f185162778 100644 --- a/src/Makefile.m4 +++ b/src/Makefile.m4 @@ -6,7 +6,7 @@ define(`confREQUIRE_SM_OS_H', `true') bldPRODUCT_START(`executable', `sendmail') define(`bldBIN_TYPE', `G') define(`bldINSTALL_DIR', `') -define(`bldSOURCES', `main.c alias.c arpadate.c bf.c collect.c conf.c control.c convtime.c daemon.c deliver.c domain.c envelope.c err.c headers.c macro.c map.c mci.c milter.c mime.c parseaddr.c queue.c ratectrl.c readcf.c recipient.c sasl.c savemail.c sfsasl.c shmticklib.c sm_resolve.c srvrsmtp.c stab.c stats.c sysexits.c timers.c tls.c trace.c udb.c usersmtp.c util.c version.c ') +define(`bldSOURCES', `main.c alias.c arpadate.c bf.c collect.c conf.c control.c convtime.c daemon.c deliver.c domain.c envelope.c err.c headers.c macro.c map.c mci.c milter.c mime.c parseaddr.c queue.c ratectrl.c readcf.c recipient.c sasl.c savemail.c sfsasl.c shmticklib.c sm_resolve.c srvrsmtp.c stab.c stats.c sysexits.c timers.c tlsh.c tls.c trace.c udb.c usersmtp.c util.c version.c ') PREPENDDEF(`confENVDEF', `confMAPDEF') bldPUSH_SMLIB(`sm') bldPUSH_SMLIB(`smutil') @@ -52,7 +52,7 @@ MSPQ=ifdef(`confMSP_QUEUE_DIR', `confMSP_QUEUE_DIR', `/var/spool/clientmqueue') ${DESTDIR}${MSPQ}: @echo "Please read INSTALL if anything fails while installing the binary." - @echo "You must have setup a new user ${MSPQOWN} and a new group ${GBINGRP}" + @echo "You must have set up a new user ${MSPQOWN} and a new group ${GBINGRP}" @echo "as explained in sendmail/SECURITY." mkdir -p ${DESTDIR}${MSPQ} chown ${MSPQOWN} ${DESTDIR}${MSPQ} diff --git a/src/README b/src/README index fddce9d36f3b..06d727de4baf 100644 --- a/src/README +++ b/src/README @@ -91,6 +91,14 @@ attempt to be backward compatible. The options are: +CDB Constant DataBase, requires tinycdb (0.75), see + http://www.corpit.ru/mjt/tinycdb.html + CDB is included automatically if the Build script can find + a library named libcdb.a or libcdb.so. + By default, .cdb is used as extension for cdb maps, however, + if CDB is set to 2, then .db is used to make transition from + hash maps easier. Note: this usually requires to exclude cdb + from confLIBSEARCH, see devtools/README. NEWDB The new Berkeley DB package. Some systems (e.g., BSD/OS and Digital UNIX 4.0) have some version of this package pre-installed. If your system does not have Berkeley DB @@ -129,7 +137,7 @@ PH_MAP PH map support. You will need the libphclient library from the nph package (http://www-dev.cites.uiuc.edu/ph/nph/). MAP_NSD nsd map support (IRIX 6.5 and later). SOCKETMAP Support for a trivial query protocol over UNIX domain or TCP - sockets. + sockets. >>> NOTE WELL for NEWDB support: If you want to get ndbm support, for >>> Berkeley DB versions under 2.0, it is CRITICAL that you remove @@ -292,6 +300,8 @@ HASULIMIT Define this if you have the ulimit(2) syscall (System V HASWAITPID Define this if you have the waitpid(2) syscall. HASGETDTABLESIZE Define this if you have the getdtablesize(2) syscall. +HAS_GETHOSTBYNAME2 Define this to 1 if your system supports + gethostbyname2(2). HAS_ST_GEN Define this to 1 if your system has the st_gen field in the stat structure (see stat(2)). HASSRANDOMDEV Define this if your system has the srandomdev(3) function @@ -525,6 +535,7 @@ Several are assumed based on other compilation flags -- if you want to "un-assume" something, you probably need to edit conf.h. Compilation flags that add support for special features include: +CDB Include support for tinycdb. NDBM Include support for "new" DBM library for aliases and maps. Normally defined in the Makefile. NEWDB Include support for Berkeley DB package (hash & btree) @@ -634,6 +645,16 @@ STARTTLS Enables SMTP STARTTLS (RFC 2487). This requires OpenSSL (http://www.OpenSSL.org/); use OpenSSL 0.9.8zc or later. See STARTTLS COMPILATION AND CONFIGURATION for further information. +TLS_EC Enable use of elliptic curve cryptography in STARTTLS. + If set to 2 sendmail uses SSL_CTX_set_ecdh_auto(), + if set to 1 it selects the NID_X9_62_prime256v1 curve + (created via EC_KEY_new_by_curve_name()) and uses + SSL_CTX_set_tmp_ecdh(). + Support offered by different TLS libraries varies + greatly: some old versions do not support elliptic curve + cryptography at all, some new versions have it enabled + by default (i.e., no need to set TLS_EC at all), while + others may require one of the above settings. TLS_NO_RSA Turn off support for RSA algorithms in STARTTLS. MILTER Turn on support for external filters using the Milter API; this option is set by default, to turn it off use @@ -1673,13 +1694,6 @@ Listproc 6.0c cause it to use "HELO hostname" (which Z-mail apparently requires as well. :) -OpenSSL - OpenSSL versions prior to 0.9.6 use a macro named Free which - conflicts with existing macro names on some platforms, such as - AIX. - Do not use 0.9.3, but OpenSSL 0.9.5a or later if compatible with - 0.9.5a. - PH PH support is provided by Mark Roth . The map is described at http://www-dev.cites.uiuc.edu/sendmail/ . diff --git a/src/TRACEFLAGS b/src/TRACEFLAGS index 06efaa91c75f..df5df6bded58 100644 --- a/src/TRACEFLAGS +++ b/src/TRACEFLAGS @@ -77,19 +77,23 @@ 63 queue.c runqueue process watching 64 multiple Milter 65 main.c permission checks -#if _FFR_ADAPTIVE_EOL -66 srvrsmtp.c conformance checks -#endif /* _FFR_ADAPTIVE_EOL */ +#if DANE +67 domain.c TLSA RR lookups +#endif #if _FFR_QUEUE_SCHED_DBG 69 queue.c scheduling -#endif /* _FFR_QUEUE_SCHED_DBG */ +#endif 70 queue.c quarantining 71,>99 milter.c quarantine on errors 73 queue.c shared memory updates 74,>99 map.c LDAP map defer #if _FFR_XCNCT 75 debug FFR_XC* -#endif /* _FFR_XCNCT */ +#endif +#if _FFR_TESTS +76,>99 queue.c run_work_group: sleep +77,>99 daemon.c change delivery host/port +#endif 80 content length 81 sun remote mode 83 collect.c timeout @@ -100,6 +104,7 @@ #endif 89 conf.c >=8 use sm_dprintf() instead of syslog() 91 mci.c syslogging of MCI cache information +92 EF_LOGSENDER 93,>99 * Prevent daemon connection fork for profiling/debugging 94,>99 srvrsmtp.c cause commands to fail (for protocol testing) 95 srvrsmtp.c AUTH diff --git a/src/alias.c b/src/alias.c index c31d8d09317e..70d8452eb08c 100644 --- a/src/alias.c +++ b/src/alias.c @@ -215,7 +215,7 @@ aliaslookup(name, pstat, av) #if _FFR_ALIAS_DETAIL int i; char *argv[4]; -#endif /* _FFR_ALIAS_DETAIL */ +#endif if (map == NULL) { @@ -273,7 +273,7 @@ setalias(spec) { char buf[50]; - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; if (*p == '\0') break; @@ -507,7 +507,7 @@ rebuildaliases(map, automatic) sigfunc_t oldsigint, oldsigquit; #ifdef SIGTSTP sigfunc_t oldsigtstp; -#endif /* SIGTSTP */ +#endif if (!bitset(MCF_REBUILDABLE, map->map_class->map_cflags)) return false; @@ -569,7 +569,7 @@ rebuildaliases(map, automatic) oldsigquit = sm_signal(SIGQUIT, SIG_IGN); #ifdef SIGTSTP oldsigtstp = sm_signal(SIGTSTP, SIG_IGN); -#endif /* SIGTSTP */ +#endif if (map->map_class->map_open(map, O_RDWR)) { @@ -611,7 +611,7 @@ rebuildaliases(map, automatic) (void) sm_signal(SIGQUIT, oldsigquit); #ifdef SIGTSTP (void) sm_signal(SIGTSTP, oldsigtstp); -#endif /* SIGTSTP */ +#endif return success; } /* @@ -736,7 +736,7 @@ readaliases(map, af, announcestats, logstats) ** 'p' points to the text of the RHS. */ - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; rhs = p; for (;;) @@ -754,8 +754,7 @@ readaliases(map, af, announcestats, logstats) { auto char *delimptr; - while ((isascii(*p) && isspace(*p)) || - *p == ',') + while ((SM_ISSPACE(*p)) || *p == ',') p++; if (*p == '\0') break; @@ -821,7 +820,7 @@ readaliases(map, af, announcestats, logstats) { /* is RHS empty (just spaces)? */ p = rhs; - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; } if (rhssize == 0 || *p == '\0') @@ -840,19 +839,6 @@ readaliases(map, af, announcestats, logstats) if (rhssize > longest) longest = rhssize; } - -#if 0 - /* - ** address strings are now stored in the envelope rpool, - ** and therefore cannot be freed. - */ - if (al.q_paddr != NULL) - sm_free(al.q_paddr); /* disabled */ - if (al.q_host != NULL) - sm_free(al.q_host); /* disabled */ - if (al.q_user != NULL) - sm_free(al.q_user); /* disabled */ -#endif /* 0 */ } CurEnv->e_to = NULL; diff --git a/src/aliases.0 b/src/aliases.0 index cfdbe17e860a..ba855d4807e9 100644 --- a/src/aliases.0 +++ b/src/aliases.0 @@ -2,45 +2,45 @@ ALIASES(5) ALIASES(5) -NNAAMMEE +NAME aliases - aliases file for sendmail -SSYYNNOOPPSSIISS - aalliiaasseess +SYNOPSIS + aliases -DDEESSCCRRIIPPTTIIOONN +DESCRIPTION This file describes user ID aliases used by sendmail. The file resides in /etc/mail and is formatted as a series of lines of the form name: addr_1, addr_2, addr_3, . . . - The _n_a_m_e is the name to alias, and the _a_d_d_r___n are the aliases for that - name. _a_d_d_r___n can be another alias, a local username, a local filename, + The name is the name to alias, and the addr_n are the aliases for that + name. addr_n can be another alias, a local username, a local filename, a command, an include file, or an external address. - LLooccaall UUsseerrnnaammee + Local Username username The username must be available via getpwnam(3). - LLooccaall FFiilleennaammee + Local Filename /path/name Messages are appended to the file specified by the full pathname (starting with a slash (/)) - CCoommmmaanndd + Command |command A command starts with a pipe symbol (|), it receives messages via standard input. - IInncclluuddee FFiillee + Include File :include: /path/name - The aliases in pathname are added to the aliases for _n_a_m_e_. + The aliases in pathname are added to the aliases for name. - EE--MMaaiill AAddddrreessss + E-Mail Address user@domain An e-mail address in RFC 822 format. @@ -52,11 +52,11 @@ DDEESSCCRRIIPPTTIIOONN Aliasing occurs only on local names. Loops can not occur, since no message will be sent to any person more than once. - If an alias is found for _n_a_m_e, sendmail then checks for an alias for - _o_w_n_e_r_-_n_a_m_e. If it is found and the result of the lookup expands to a + If an alias is found for name, sendmail then checks for an alias for + owner-name. If it is found and the result of the lookup expands to a single address, the envelope sender address of the message is rewritten to that address. If it is found and the result expands to more than - one address, the envelope sender address is changed to _o_w_n_e_r_-_n_a_m_e. + one address, the envelope sender address is changed to owner-name. After aliasing has been done, local and valid recipients who have a ``.forward'' file in their home directory have messages forwarded to @@ -67,22 +67,22 @@ DDEESSCCRRIIPPTTIIOONN program newaliases(1). A newaliases command should be executed each time the aliases file is changed for the change to take effect. -SSEEEE AALLSSOO +SEE ALSO newaliases(1), dbm(3), dbopen(3), db_open(3), sendmail(8) - _S_E_N_D_M_A_I_L _I_n_s_t_a_l_l_a_t_i_o_n _a_n_d _O_p_e_r_a_t_i_o_n _G_u_i_d_e_. + SENDMAIL Installation and Operation Guide. - _S_E_N_D_M_A_I_L _A_n _I_n_t_e_r_n_e_t_w_o_r_k _M_a_i_l _R_o_u_t_e_r_. + SENDMAIL An Internetwork Mail Router. -BBUUGGSS +BUGS If you have compiled sendmail with DBM support instead of NEWDB, you may have encountered problems in dbm(3) restricting a single alias to about 1000 bytes of information. You can get longer aliases by ``chaining''; that is, make the last name in the alias be a dummy name which is a continuation alias. -HHIISSTTOORRYY - The aalliiaasseess file format appeared in 4.0BSD. +HISTORY + The aliases file format appeared in 4.0BSD. diff --git a/src/arpadate.c b/src/arpadate.c index 57d5a06ff7db..0458363c6a4c 100644 --- a/src/arpadate.c +++ b/src/arpadate.c @@ -43,7 +43,7 @@ SM_RCSID("@(#)$Id: arpadate.c,v 8.32 2013-11-22 20:51:55 ca Exp $") #ifndef TZNAME_MAX # define TZNAME_MAX 50 /* max size of timezone */ -#endif /* ! TZNAME_MAX */ +#endif /* values for TZ_TYPE */ #define TZ_NONE 0 /* no character timezone support */ @@ -149,10 +149,10 @@ arpadate(ud) tz = NULL; #if TZ_TYPE == TZ_TM_NAME tz = lt->tm_name; -#endif /* TZ_TYPE == TZ_TM_NAME */ +#endif #if TZ_TYPE == TZ_TM_ZONE tz = lt->tm_zone; -#endif /* TZ_TYPE == TZ_TM_ZONE */ +#endif #if TZ_TYPE == TZ_TZNAME { extern char *tzname[]; diff --git a/src/bf.c b/src/bf.c index 0f2c9c0195eb..6fb10c9252bd 100644 --- a/src/bf.c +++ b/src/bf.c @@ -67,9 +67,9 @@ struct bf #ifdef BF_STANDALONE # define OPEN(fn, omode, cmode, sff) open(fn, omode, cmode) -#else /* BF_STANDALONE */ +#else # define OPEN(fn, omode, cmode, sff) safeopen(fn, omode, cmode, sff) -#endif /* BF_STANDALONE */ +#endif struct bf_info { @@ -566,7 +566,7 @@ sm_bfwrite(fp, buf, nbytes) if (!(errno == ENOSPC #ifdef EDQUOT || errno == EDQUOT -#endif /* EDQUOT */ +#endif )) errno = EIO; @@ -804,9 +804,9 @@ sm_bftruncate(fp) /* XXX: Not much we can do except rewind it */ errno = EINVAL; return -1; -#else /* NOFTRUNCATE */ +#else return ftruncate(bfp->bf_disk_fd, 0); -#endif /* NOFTRUNCATE */ +#endif } return 0; } diff --git a/src/collect.c b/src/collect.c index 5f090b23a042..526519050ca6 100644 --- a/src/collect.c +++ b/src/collect.c @@ -303,7 +303,7 @@ collect(fp, smtpmode, hdrp, e, rsetsize) char bufbuf[MAXLINE]; #if _FFR_REJECT_NUL_BYTE bool hasNUL; /* has at least one NUL input byte */ -#endif /* _FFR_REJECT_NUL_BYTE */ +#endif df = NULL; ignrdot = smtpmode ? false : IgnrDot; @@ -321,7 +321,7 @@ collect(fp, smtpmode, hdrp, e, rsetsize) HasEightBits = false; #if _FFR_REJECT_NUL_BYTE hasNUL = false; -#endif /* _FFR_REJECT_NUL_BYTE */ +#endif buf = bp = bufbuf; buflen = sizeof(bufbuf); pbp = peekbuf; @@ -413,7 +413,7 @@ collect(fp, smtpmode, hdrp, e, rsetsize) #if _FFR_REJECT_NUL_BYTE if (c == '\0') hasNUL = true; -#endif /* _FFR_REJECT_NUL_BYTE */ +#endif if (c == SM_IO_EOF) goto readerr; if (SevenBitInput) @@ -435,11 +435,9 @@ collect(fp, smtpmode, hdrp, e, rsetsize) break; case IS_DOT: - if (c == '\n' && !ignrdot && - !bitset(EF_NL_NOT_EOL, e->e_flags)) + if (c == '\n' && !ignrdot) goto readerr; - else if (c == '\r' && - !bitset(EF_CRLF_NOT_EOL, e->e_flags)) + else if (c == '\r') { istate = IS_DOTCR; continue; @@ -494,13 +492,12 @@ collect(fp, smtpmode, hdrp, e, rsetsize) goto bufferchar; } - if (c == '\r' && !bitset(EF_CRLF_NOT_EOL, e->e_flags)) + if (c == '\r') { istate = IS_CR; continue; } - else if (c == '\n' && !bitset(EF_NL_NOT_EOL, - e->e_flags)) + else if (c == '\n') istate = IS_BOL; else istate = IS_NORM; @@ -683,10 +680,8 @@ collect(fp, smtpmode, hdrp, e, rsetsize) bp = buf; /* toss blank line */ - if ((!bitset(EF_CRLF_NOT_EOL, e->e_flags) && - bp[0] == '\r' && bp[1] == '\n') || - (!bitset(EF_NL_NOT_EOL, e->e_flags) && - bp[0] == '\n')) + if ((bp[0] == '\r' && bp[1] == '\n') || + (bp[0] == '\n')) { break; } @@ -981,9 +976,9 @@ dferror(df, msg, e) { #if STAT64 > 0 struct stat64 st; -#else /* STAT64 > 0 */ +#else struct stat st; -#endif /* STAT64 > 0 */ +#endif long avail; long bsize; @@ -992,9 +987,9 @@ dferror(df, msg, e) if ( #if STAT64 > 0 fstat64(sm_io_getinfo(df, SM_IO_WHAT_FD, NULL), &st) -#else /* STAT64 > 0 */ +#else fstat(sm_io_getinfo(df, SM_IO_WHAT_FD, NULL), &st) -#endif /* STAT64 > 0 */ +#endif < 0) st.st_size = 0; (void) sm_io_reopen(SmFtStdio, SM_TIME_DEFAULT, dfname, diff --git a/src/conf.c b/src/conf.c index 8c7c94b15cfd..63c545cb27e1 100644 --- a/src/conf.c +++ b/src/conf.c @@ -19,10 +19,11 @@ SM_RCSID("@(#)$Id: conf.c,v 8.1192 2014-01-27 18:23:21 ca Exp $") #include #if NEWDB # include "sm/bdb.h" -#endif /* NEWDB */ +#endif #include #include "map.h" +#include #ifdef DEC # if NETINET6 @@ -38,10 +39,13 @@ SM_RCSID("@(#)$Id: conf.c,v 8.1192 2014-01-27 18:23:21 ca Exp $") #include #if NETINET || NETINET6 # include -#endif /* NETINET || NETINET6 */ +#endif #if HASULIMIT && defined(HPUX11) # include -#endif /* HASULIMIT && defined(HPUX11) */ +#endif +#if STARTTLS +# include "tls.h" +#endif static void setupmaps __P((void)); static void setupmailers __P((void)); @@ -117,8 +121,10 @@ struct hdrinfo HdrInfo[] = /* message identification and control */ { "message-id", 0, NULL }, { "resent-message-id", H_RESENT, NULL }, +#if !NO_EOH_FIELDS { "message", H_EOH, NULL }, { "text", H_EOH, NULL }, +#endif /* date fields */ { "date", 0, NULL }, @@ -262,7 +268,7 @@ int DtableSize = 50; /* max open files; reset in 4.2bsd */ #ifndef MAXRULERECURSION # define MAXRULERECURSION 50 /* max ruleset recursion depth */ -#endif /* ! MAXRULERECURSION */ +#endif void setdefaults(e) @@ -314,13 +320,16 @@ setdefaults(e) e->e_xfqgrp = NOQGRP; e->e_xfqdir = NOQDIR; e->e_ctime = curtime(); +#if _FFR_EAI + e->e_smtputf8 = false; +#endif SevenBitInput = false; /* option 7 */ MaxMciCache = 1; /* option k */ MciCacheTimeout = 5 MINUTES; /* option K */ LogLevel = 9; /* option L */ #if MILTER MilterLogLevel = -1; -#endif /* MILTER */ +#endif inittimeouts(NULL, false); /* option r */ PrivacyFlags = PRIV_PUBLIC; /* option p */ MeToo = true; /* option m */ @@ -329,9 +338,9 @@ setdefaults(e) clrbitmap(DontBlameSendmail); /* DontBlameSendmail option */ #if MIME8TO7 MimeMode = MM_CVTMIME|MM_PASS8BIT; /* option 8 */ -#else /* MIME8TO7 */ +#else MimeMode = MM_PASS8BIT; -#endif /* MIME8TO7 */ +#endif for (i = 0; i < MAXTOCLASS; i++) { TimeOuts.to_q_return[i] = 5 DAYS; /* option T */ @@ -360,11 +369,14 @@ setdefaults(e) AuthMechanisms = newstr(AUTH_MECHANISMS); AuthRealm = NULL; MaxSLBits = INT_MAX; -#endif /* SASL */ +#endif #if STARTTLS TLS_Srv_Opts = TLS_I_SRV; if (NULL == EVP_digest) EVP_digest = EVP_md5(); +# if _FFR_TLSFB2CLEAR + TLSFallbacktoClear = true; +# endif Srv_SSL_Options = SSL_OP_ALL; Clt_SSL_Options = SSL_OP_ALL # ifdef SSL_OP_NO_SSLv2 @@ -382,7 +394,7 @@ setdefaults(e) #endif /* STARTTLS */ #ifdef HESIOD_INIT HesiodContext = NULL; -#endif /* HESIOD_INIT */ +#endif #if NETINET6 /* Detect if IPv6 is available at run time */ i = socket(AF_INET6, SOCK_STREAM, 0); @@ -407,25 +419,24 @@ setdefaults(e) RuleSetNames[i] = NULL; #if MILTER InputFilters[0] = NULL; -#endif /* MILTER */ +#endif RejectLogInterval = 3 HOURS; #if REQUIRES_DIR_FSYNC RequiresDirfsync = true; -#endif /* REQUIRES_DIR_FSYNC */ +#endif #if _FFR_RCPTTHROTDELAY BadRcptThrottleDelay = 1; -#endif /* _FFR_RCPTTHROTDELAY */ +#endif ConnectionRateWindowSize = 60; #if _FFR_BOUNCE_QUEUE BounceQueue = NOQGRP; -#endif /* _FFR_BOUNCE_QUEUE */ +#endif setupmaps(); setupqueues(); setupmailers(); setupheaders(); } - /* ** SETDEFUSER -- set/reset DefUser using DefUid (for initgroups()) */ @@ -539,50 +550,56 @@ setupmaps() MAPDEF("dbm", ".dir", MCF_ALIASOK|MCF_REBUILDABLE, map_parseargs, ndbm_map_open, ndbm_map_close, ndbm_map_lookup, ndbm_map_store); -#endif /* NDBM */ +#endif + +#if CDB + MAPDEF("cdb", CDBEXT, MCF_ALIASOK|MCF_REBUILDABLE, + map_parseargs, cdb_map_open, cdb_map_close, + cdb_map_lookup, cdb_map_store); +#endif #if NIS MAPDEF("nis", NULL, MCF_ALIASOK, map_parseargs, nis_map_open, null_map_close, nis_map_lookup, null_map_store); -#endif /* NIS */ +#endif #if NISPLUS MAPDEF("nisplus", NULL, MCF_ALIASOK, map_parseargs, nisplus_map_open, null_map_close, nisplus_map_lookup, null_map_store); -#endif /* NISPLUS */ +#endif #if LDAPMAP MAPDEF("ldap", NULL, MCF_ALIASOK|MCF_NOTPERSIST, ldapmap_parseargs, ldapmap_open, ldapmap_close, ldapmap_lookup, null_map_store); -#endif /* LDAPMAP */ +#endif #if PH_MAP MAPDEF("ph", NULL, MCF_NOTPERSIST, ph_map_parseargs, ph_map_open, ph_map_close, ph_map_lookup, null_map_store); -#endif /* PH_MAP */ +#endif #if MAP_NSD /* IRIX 6.5 nsd support */ MAPDEF("nsd", NULL, MCF_ALIASOK, map_parseargs, null_map_open, null_map_close, nsd_map_lookup, null_map_store); -#endif /* MAP_NSD */ +#endif #if HESIOD - MAPDEF("hesiod", NULL, MCF_ALIASOK|MCF_ALIASONLY, + MAPDEF("hesiod", NULL, MCF_ALIASOK, map_parseargs, hes_map_open, hes_map_close, hes_map_lookup, null_map_store); -#endif /* HESIOD */ +#endif #if NETINFO MAPDEF("netinfo", NULL, MCF_ALIASOK, map_parseargs, ni_map_open, null_map_close, ni_map_lookup, null_map_store); -#endif /* NETINFO */ +#endif #if 0 MAPDEF("dns", NULL, 0, @@ -609,7 +626,7 @@ setupmaps() MAPDEF("bestmx", NULL, MCF_OPTFILE, map_parseargs, null_map_open, null_map_close, bestmx_map_lookup, null_map_store); -#endif /* NAMED_BIND */ +#endif MAPDEF("host", NULL, 0, host_map_init, null_map_open, null_map_close, @@ -619,11 +636,11 @@ setupmaps() map_parseargs, text_map_open, null_map_close, text_map_lookup, null_map_store); - MAPDEF("stab", NULL, MCF_ALIASOK|MCF_ALIASONLY, + MAPDEF("stab", NULL, MCF_ALIASOK, map_parseargs, stab_map_open, null_map_close, stab_map_lookup, stab_map_store); - MAPDEF("implicit", NULL, MCF_ALIASOK|MCF_ALIASONLY|MCF_REBUILDABLE, + MAPDEF("implicit", NULL, MCF_ALIASOK|MCF_REBUILDABLE, map_parseargs, impl_map_open, impl_map_close, impl_map_lookup, impl_map_store); @@ -641,14 +658,14 @@ setupmaps() MAPDEF("regex", NULL, 0, regex_map_init, null_map_open, null_map_close, regex_map_lookup, null_map_store); -#endif /* MAP_REGEX */ +#endif #if USERDB /* user database */ MAPDEF("userdb", ".db", 0, map_parseargs, null_map_open, null_map_close, udb_map_lookup, null_map_store); -#endif /* USERDB */ +#endif /* arbitrary programs */ MAPDEF("program", NULL, MCF_ALIASOK, @@ -695,14 +712,28 @@ setupmaps() MAPDEF("socket", NULL, MCF_ALIASOK, map_parseargs, socket_map_open, socket_map_close, socket_map_lookup, null_map_store); -#endif /* SOCKETMAP */ +#endif #if _FFR_DPRINTF_MAP /* dprintf map -- logs information to syslog */ MAPDEF("dprintf", NULL, 0, dprintf_map_parseargs, null_map_open, null_map_close, dprintf_map_lookup, null_map_store); -#endif /* _FFR_DPRINTF_MAP */ +#endif + +#if _FFR_SETDEBUG_MAP + /* setdebug map -- set debug levels */ + MAPDEF("setdebug", NULL, 0, + dequote_init, null_map_open, null_map_close, + setdebug_map_lookup, null_map_store); +#endif + +#if _FFR_SETOPT_MAP + /* setopt map -- set option */ + MAPDEF("setopt", NULL, 0, + dequote_init, null_map_open, null_map_close, + setopt_map_lookup, null_map_store); +#endif if (tTd(38, 2)) { @@ -754,7 +785,7 @@ inithostmaps() #if NAMED_BIND if (ConfigLevel >= 2) (void) sm_strlcat(buf, " -a. -D", sizeof(buf)); -#endif /* NAMED_BIND */ +#endif (void) makemapentry(buf); } @@ -772,6 +803,14 @@ inithostmaps() sizeof(buf)); (void) makemapentry(buf); } +#if CDB + else if (strcmp(maptype[i], "cdb") == 0 && + stab("aliases.cdb", ST_MAP, ST_FIND) == NULL) + { + (void) sm_strlcpy(buf, "aliases.cdb null", sizeof(buf)); + (void) makemapentry(buf); + } +#endif /* CDB */ #if NISPLUS else if (strcmp(maptype[i], "nisplus") == 0 && stab("aliases.nisplus", ST_MAP, ST_FIND) == NULL) @@ -848,25 +887,25 @@ inithostmaps() #if defined(SOLARIS) || (defined(sony_news) && defined(__svr4)) # define _USE_SUN_NSSWITCH_ -#endif /* defined(SOLARIS) || (defined(sony_news) && defined(__svr4)) */ +#endif #if _FFR_HPUX_NSSWITCH # ifdef __hpux # define _USE_SUN_NSSWITCH_ -# endif /* __hpux */ +# endif #endif /* _FFR_HPUX_NSSWITCH */ #ifdef _USE_SUN_NSSWITCH_ # include -#endif /* _USE_SUN_NSSWITCH_ */ +#endif #if defined(ultrix) || (defined(__osf__) && defined(__alpha)) # define _USE_DEC_SVC_CONF_ -#endif /* defined(ultrix) || (defined(__osf__) && defined(__alpha)) */ +#endif #ifdef _USE_DEC_SVC_CONF_ # include -#endif /* _USE_DEC_SVC_CONF_ */ +#endif int switch_map_find(service, maptype, mapreturn) @@ -951,7 +990,7 @@ switch_map_find(service, maptype, mapreturn) case SVC_HESIOD: maptype[svcno] = "hesiod"; break; -# endif /* SVC_HESIOD */ +# endif case SVC_LAST: errno = save_errno; @@ -1001,7 +1040,7 @@ switch_map_find(service, maptype, mapreturn) *p = '\0'; #ifndef SM_NSSWITCH_DELIMS # define SM_NSSWITCH_DELIMS " \t" -#endif /* SM_NSSWITCH_DELIMS */ +#endif p = strpbrk(buf, SM_NSSWITCH_DELIMS); if (p != NULL) *p++ = '\0'; @@ -1015,7 +1054,7 @@ switch_map_find(service, maptype, mapreturn) buf); continue; } - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; if (*p == '\0') continue; @@ -1041,7 +1080,7 @@ switch_map_find(service, maptype, mapreturn) if (p == NULL) break; *p++ = '\0'; - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; } if (svcno < MAXMAPSTACK) @@ -1072,23 +1111,31 @@ switch_map_find(service, maptype, mapreturn) /* if the service file doesn't work, use an absolute fallback */ # ifdef _USE_DEC_SVC_CONF_ punt: -# endif /* _USE_DEC_SVC_CONF_ */ +# endif for (svcno = 0; svcno < MAXMAPACTIONS; svcno++) mapreturn[svcno] = 0; svcno = 0; if (strcmp(service, "aliases") == 0) { + SM_ASSERT(svcno < MAXMAPSTACK); maptype[svcno++] = "files"; +# if CDB + SM_ASSERT(svcno < MAXMAPSTACK); + maptype[svcno++] = "cdb"; +# endif # if defined(AUTO_NETINFO_ALIASES) && defined (NETINFO) + SM_ASSERT(svcno < MAXMAPSTACK); maptype[svcno++] = "netinfo"; -# endif /* defined(AUTO_NETINFO_ALIASES) && defined (NETINFO) */ +# endif # ifdef AUTO_NIS_ALIASES # if NISPLUS + SM_ASSERT(svcno < MAXMAPSTACK); maptype[svcno++] = "nisplus"; -# endif /* NISPLUS */ +# endif # if NIS + SM_ASSERT(svcno < MAXMAPSTACK); maptype[svcno++] = "nis"; -# endif /* NIS */ +# endif # endif /* AUTO_NIS_ALIASES */ errno = save_errno; return svcno; @@ -1096,16 +1143,20 @@ switch_map_find(service, maptype, mapreturn) if (strcmp(service, "hosts") == 0) { # if NAMED_BIND + SM_ASSERT(svcno < MAXMAPSTACK); maptype[svcno++] = "dns"; # else /* NAMED_BIND */ # if defined(sun) && !defined(BSD) /* SunOS */ + SM_ASSERT(svcno < MAXMAPSTACK); maptype[svcno++] = "nis"; # endif /* defined(sun) && !defined(BSD) */ # endif /* NAMED_BIND */ # if defined(AUTO_NETINFO_HOSTS) && defined (NETINFO) + SM_ASSERT(svcno < MAXMAPSTACK); maptype[svcno++] = "netinfo"; -# endif /* defined(AUTO_NETINFO_HOSTS) && defined (NETINFO) */ +# endif + SM_ASSERT(svcno < MAXMAPSTACK); maptype[svcno++] = "files"; errno = save_errno; return svcno; @@ -1306,11 +1357,11 @@ init_md_sun() #ifdef _AUX_SOURCE # include -#endif /* _AUX_SOURCE */ +#endif #if SHARE_V1 # include -#endif /* SHARE_V1 */ +#endif void init_md(argc, argv) @@ -1319,16 +1370,16 @@ init_md(argc, argv) { #ifdef _AUX_SOURCE setcompat(getcompat() | COMPAT_BSDPROT); -#endif /* _AUX_SOURCE */ +#endif #ifdef SUN_EXTENSIONS init_md_sun(); -#endif /* SUN_EXTENSIONS */ +#endif #if _CONVEX_SOURCE /* keep gethostby*() from stripping the local domain name */ set_domain_trim_off(); -#endif /* _CONVEX_SOURCE */ +#endif #if defined(__QNX__) && !defined(__QNXNTO__) /* ** Due to QNX's network distributed nature, you can target a tcpip @@ -1356,9 +1407,9 @@ init_md(argc, argv) #ifdef VENDOR_DEFAULT VendorCode = VENDOR_DEFAULT; -#else /* VENDOR_DEFAULT */ +#else VendorCode = VENDOR_BERKELEY; -#endif /* VENDOR_DEFAULT */ +#endif } /* ** INIT_VENDOR_MACROS -- vendor-dependent macro initializations @@ -1416,39 +1467,39 @@ init_vendor_macros(e) /* do guesses based on general OS type */ #ifndef LA_TYPE # define LA_TYPE LA_ZERO -#endif /* ! LA_TYPE */ +#endif #ifndef FSHIFT # if defined(unixpc) # define FSHIFT 5 -# endif /* defined(unixpc) */ +# endif # if defined(__alpha) || defined(IRIX) # define FSHIFT 10 -# endif /* defined(__alpha) || defined(IRIX) */ +# endif #endif /* ! FSHIFT */ #ifndef FSHIFT # define FSHIFT 8 -#endif /* ! FSHIFT */ +#endif #ifndef FSCALE # define FSCALE (1 << FSHIFT) -#endif /* ! FSCALE */ +#endif #ifndef LA_AVENRUN # ifdef SYSTEM5 # define LA_AVENRUN "avenrun" -# else /* SYSTEM5 */ +# else # define LA_AVENRUN "_avenrun" -# endif /* SYSTEM5 */ +# endif #endif /* ! LA_AVENRUN */ /* _PATH_KMEM should be defined in */ #ifndef _PATH_KMEM # define _PATH_KMEM "/dev/kmem" -#endif /* ! _PATH_KMEM */ +#endif #if (LA_TYPE == LA_INT) || (LA_TYPE == LA_FLOAT) || (LA_TYPE == LA_SHORT) || (LA_TYPE == LA_LONGLONG) @@ -1458,9 +1509,9 @@ init_vendor_macros(e) # ifndef _PATH_UNIX # if defined(SYSTEM5) # define _PATH_UNIX "/unix" -# else /* defined(SYSTEM5) */ +# else # define _PATH_UNIX "/vmunix" -# endif /* defined(SYSTEM5) */ +# endif # endif /* ! _PATH_UNIX */ # ifdef _AUX_SOURCE @@ -1487,9 +1538,9 @@ getla() # else # if LA_TYPE == LA_LONGLONG long long avenrun[3]; -# else /* LA_TYPE == LA_LONGLONG */ +# else double avenrun[3]; -# endif /* LA_TYPE == LA_LONGLONG */ +# endif # endif /* LA_TYPE == LA_SHORT */ # endif /* LA_TYPE == LA_INT */ extern off_t lseek(); @@ -1504,9 +1555,9 @@ getla() # if defined(_AIX3) || defined(_AIX4) if (knlist(Nl, 1, sizeof(Nl[0])) < 0) -# else /* defined(_AIX3) || defined(_AIX4) */ +# else if (nlist(_PATH_UNIX, Nl) < 0) -# endif /* defined(_AIX3) || defined(_AIX4) */ +# endif { if (tTd(3, 1)) sm_dprintf("getla: nlist(%s): %s\n", _PATH_UNIX, @@ -1522,7 +1573,7 @@ getla() } # ifdef NAMELISTMASK Nl[X_AVENRUN].n_value &= NAMELISTMASK; -# endif /* NAMELISTMASK */ +# endif kmem = open(_PATH_KMEM, 0, 0); if (kmem < 0) @@ -1734,9 +1785,9 @@ getla() # if defined(NX_CURRENT_COMPILER_RELEASE) && NX_CURRENT_COMPILER_RELEASE > NX_COMPILER_RELEASE_3_0 # include -# else /* defined(NX_CURRENT_COMPILER_RELEASE) && NX_CURRENT_COMPILER_RELEASE > NX_COMPILER_RELEASE_3_0 */ +# else # include -# endif /* defined(NX_CURRENT_COMPILER_RELEASE) && NX_CURRENT_COMPILER_RELEASE > NX_COMPILER_RELEASE_3_0 */ +# endif int getla() @@ -1792,7 +1843,7 @@ getla() # ifndef _PATH_LOADAVG # define _PATH_LOADAVG "/proc/loadavg" -# endif /* ! _PATH_LOADAVG */ +# endif int getla() @@ -1834,9 +1885,9 @@ getla() # ifdef _UNICOSMP # define CAST_SYSMP(x) (x) -# else /* _UNICOSMP */ +# else # define CAST_SYSMP(x) ((x) & 0x7fffffff) -# endif /* _UNICOSMP */ +# endif int getla(void) @@ -1950,7 +2001,7 @@ getla() # ifndef _PATH_AVENRUN # define _PATH_AVENRUN "/dev/table/avenrun" -# endif /* ! _PATH_AVENRUN */ +# endif int getla() @@ -2090,7 +2141,7 @@ getla() /* Non Apollo stuff removed by Don Lewis 11/15/93 */ #ifndef lint SM_UNUSED(static char rcsid[]) = "@(#)$OrigId: getloadavg.c,v 1.16 1991/06/21 12:51:15 paul Exp $"; -#endif /* ! lint */ +#endif #ifdef apollo # undef volatile @@ -2163,7 +2214,7 @@ shouldqueue(pri, ct) bool rval; #if _FFR_MEMSTAT long memfree; -#endif /* _FFR_MEMSTAT */ +#endif if (tTd(3, 30)) sm_dprintf("shouldqueue: CurrentLA=%d, pri=%ld: ", @@ -2222,12 +2273,12 @@ refuseconnections(e, dn, active) int limit; #if _FFR_MEMSTAT long memfree; -#endif /* _FFR_MEMSTAT */ +#endif #if XLA if (!xla_smtp_ok()) return true; -#endif /* XLA */ +#endif SM_ASSERT(dn >= 0); SM_ASSERT(dn < MAXDAEMONS); @@ -2374,14 +2425,14 @@ refuseconnections(e, dn, active) #ifndef SPT_TYPE # define SPT_TYPE SPT_REUSEARGV -#endif /* ! SPT_TYPE */ +#endif #if SPT_TYPE != SPT_NONE && SPT_TYPE != SPT_BUILTIN # if SPT_TYPE == SPT_PSTAT # include -# endif /* SPT_TYPE == SPT_PSTAT */ +# endif # if SPT_TYPE == SPT_PSSTRINGS # include # include @@ -2398,14 +2449,14 @@ typedef unsigned int *pt_entry_t; # if SPT_TYPE == SPT_PSSTRINGS || SPT_TYPE == SPT_CHANGEARGV # define SETPROC_STATIC static -# else /* SPT_TYPE == SPT_PSSTRINGS || SPT_TYPE == SPT_CHANGEARGV */ +# else # define SETPROC_STATIC -# endif /* SPT_TYPE == SPT_PSSTRINGS || SPT_TYPE == SPT_CHANGEARGV */ +# endif # if SPT_TYPE == SPT_SYSMIPS # include # include -# endif /* SPT_TYPE == SPT_SYSMIPS */ +# endif # if SPT_TYPE == SPT_SCO # include @@ -2414,18 +2465,18 @@ typedef unsigned int *pt_entry_t; # include # if PSARGSZ > MAXLINE # define SPT_BUFSIZE PSARGSZ -# endif /* PSARGSZ > MAXLINE */ +# endif # endif /* SPT_TYPE == SPT_SCO */ # ifndef SPT_PADCHAR # define SPT_PADCHAR ' ' -# endif /* ! SPT_PADCHAR */ +# endif #endif /* SPT_TYPE != SPT_NONE && SPT_TYPE != SPT_BUILTIN */ #ifndef SPT_BUFSIZE # define SPT_BUFSIZE MAXLINE -#endif /* ! SPT_BUFSIZE */ +#endif #if _FFR_SPT_ALIGN @@ -2439,9 +2490,9 @@ typedef unsigned int *pt_entry_t; # ifdef SPT_ALIGN_SIZE # define SPT_ALIGN(x, align) (((((x) + SPT_ALIGN_SIZE) >> (align)) << (align)) - 1) -# else /* SPT_ALIGN_SIZE */ +# else # define SPT_ALIGN(x, align) (x) -# endif /* SPT_ALIGN_SIZE */ +# endif #else /* _FFR_SPT_ALIGN */ # define SPT_ALIGN(x, align) (x) #endif /* _FFR_SPT_ALIGN */ @@ -2455,7 +2506,7 @@ static char **Argv = NULL; /* pointer to argument vector */ static char *LastArgv = NULL; /* end of argv */ #if SPT_TYPE != SPT_BUILTIN static void setproctitle __P((const char *, ...)); -#endif /* SPT_TYPE != SPT_BUILTIN */ +#endif void initsetproctitle(argc, argv, envp) @@ -2464,7 +2515,9 @@ initsetproctitle(argc, argv, envp) char **envp; { register int i; +#if _FFR_SPT_ALIGN int align; +#endif extern char **environ; /* @@ -2493,12 +2546,12 @@ initsetproctitle(argc, argv, envp) ** Use all contiguous argv and envp pointers starting at argv[0] */ - align = -1; # if _FFR_SPT_ALIGN + align = -1; # ifdef SPT_ALIGN_SIZE for (i = SPT_ALIGN_SIZE; i > 0; i >>= 1) align++; -# endif /* SPT_ALIGN_SIZE */ +# endif # endif /* _FFR_SPT_ALIGN */ for (i = 0; i < argc; i++) @@ -2532,7 +2585,7 @@ setproctitle(fmt, va_alist) SM_VA_LOCAL_DECL # if SPT_TYPE == SPT_PSTAT union pstun pst; -# endif /* SPT_TYPE == SPT_PSTAT */ +# endif # if SPT_TYPE == SPT_SCO int j; off_t seek_off; @@ -2559,14 +2612,14 @@ setproctitle(fmt, va_alist) # if SPT_TYPE == SPT_PSTAT pst.pst_command = buf; pstat(PSTAT_SETCMD, pst, i, 0, 0); -# endif /* SPT_TYPE == SPT_PSTAT */ +# endif # if SPT_TYPE == SPT_PSSTRINGS PS_STRINGS->ps_nargvstr = 1; PS_STRINGS->ps_argvstr = buf; -# endif /* SPT_TYPE == SPT_PSSTRINGS */ +# endif # if SPT_TYPE == SPT_SYSMIPS sysmips(SONY_SYSNEWS, NEWS_SETPSARGS, buf); -# endif /* SPT_TYPE == SPT_SYSMIPS */ +# endif # if SPT_TYPE == SPT_SCO if (kmem < 0 || kmempid != CurrentPid) { @@ -2606,12 +2659,12 @@ setproctitle(fmt, va_alist) # endif /* SPT_TYPE == SPT_REUSEARGV */ # if SPT_TYPE == SPT_CHANGEARGV Argv[0] = buf; - Argv[1] = 0; -# endif /* SPT_TYPE == SPT_CHANGEARGV */ + Argv[1] = NULL; +# endif # endif /* SPT_TYPE != SPT_NONE */ } - #endif /* SPT_TYPE != SPT_BUILTIN */ + /* ** SM_SETPROCTITLE -- set process task and set process title for ps ** @@ -2709,27 +2762,27 @@ sm_wait(status) { # ifdef WAITUNION union wait st; -# else /* WAITUNION */ +# else auto int st; -# endif /* WAITUNION */ +# endif pid_t i; # if defined(ISC_UNIX) || defined(_SCO_unix_) int savesig; -# endif /* defined(ISC_UNIX) || defined(_SCO_unix_) */ +# endif # if defined(ISC_UNIX) || defined(_SCO_unix_) savesig = sm_releasesignal(SIGCHLD); -# endif /* defined(ISC_UNIX) || defined(_SCO_unix_) */ +# endif i = wait(&st); # if defined(ISC_UNIX) || defined(_SCO_unix_) if (savesig > 0) sm_blocksignal(SIGCHLD); -# endif /* defined(ISC_UNIX) || defined(_SCO_unix_) */ +# endif # ifdef WAITUNION *status = st.w_status; -# else /* WAITUNION */ +# else *status = st; -# endif /* WAITUNION */ +# endif return i; } /* @@ -2814,7 +2867,7 @@ reapchild(sig) #ifdef SOLARIS # include -#endif /* SOLARIS */ +#endif int getdtsize() @@ -2831,9 +2884,9 @@ getdtsize() # else /* HASGETDTABLESIZE */ # ifdef _SC_OPEN_MAX return sysconf(_SC_OPEN_MAX); -# else /* _SC_OPEN_MAX */ +# else return NOFILE; -# endif /* _SC_OPEN_MAX */ +# endif # endif /* HASGETDTABLESIZE */ } /* @@ -2894,15 +2947,14 @@ uname(name) */ #if !HASINITGROUPS - initgroups(name, basegid) char *name; int basegid; { return 0; } - #endif /* !HASINITGROUPS */ + /* ** SETGROUPS -- set group list ** @@ -2910,7 +2962,6 @@ initgroups(name, basegid) */ #ifndef NGROUPS_MAX - int setgroups(ngroups, grouplist) int ngroups; @@ -2918,8 +2969,8 @@ setgroups(ngroups, grouplist) { return 0; } - #endif /* ! NGROUPS_MAX */ + /* ** SETSID -- set session id (for non-POSIX systems) */ @@ -2941,9 +2992,9 @@ setsid __P ((void)) # endif /* TIOCNOTTY */ # ifdef SYS5SETPGRP return setpgrp(); -# else /* SYS5SETPGRP */ +# else return setpgid(0, CurrentPid); -# endif /* SYS5SETPGRP */ +# endif } #endif /* !HASSETSID */ @@ -2958,13 +3009,13 @@ fsync(fd) { # ifdef O_SYNC return fcntl(fd, F_SETFL, O_SYNC); -# else /* O_SYNC */ +# else /* nothing we can do */ return 0; -# endif /* O_SYNC */ +# endif } - #endif /* NEEDFSYNC */ + /* ** DGUX_INET_ADDR -- inet_addr for DG/UX ** @@ -3008,7 +3059,7 @@ dgux_inet_addr(host) # if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)getopt.c 4.3 (Berkeley) 3/9/86"; -# endif /* defined(LIBC_SCCS) && !defined(lint) */ +# endif /* ** get option letter from argument vector @@ -3095,13 +3146,13 @@ getopt(nargc,nargv,ostr) # ifndef _PATH_SHELLS # define _PATH_SHELLS "/etc/shells" -# endif /* ! _PATH_SHELLS */ +# endif # if defined(_AIX3) || defined(_AIX4) # include # if _AIX4 >= 40200 # include -# endif /* _AIX4 >= 40200 */ +# endif # include # endif /* defined(_AIX3) || defined(_AIX4) */ @@ -3193,7 +3244,7 @@ usershellok(user, shell) # else /* HASGETUSERSHELL */ # if USEGETCONFATTR auto char *v; -# endif /* USEGETCONFATTR */ +# endif register SM_FILE_T *shellf; char buf[MAXLINE]; @@ -3257,7 +3308,7 @@ usershellok(user, shell) if (*p == '#' || *p == '\0') continue; q = p; - while (*p != '\0' && *p != '#' && !(isascii(*p) && isspace(*p))) + while (*p != '\0' && *p != '#' && !(SM_ISSPACE(*p))) p++; *p = '\0'; if (strcmp(shell, q) == 0 || strcmp(WILDCARD_SHELL, q) == 0) @@ -3299,23 +3350,23 @@ usershellok(user, shell) # ifndef SFS_TYPE # define SFS_TYPE SFS_NONE -# endif /* ! SFS_TYPE */ +# endif # if SFS_TYPE == SFS_USTAT # include -# endif /* SFS_TYPE == SFS_USTAT */ +# endif # if SFS_TYPE == SFS_4ARGS || SFS_TYPE == SFS_STATFS # include -# endif /* SFS_TYPE == SFS_4ARGS || SFS_TYPE == SFS_STATFS */ +# endif # if SFS_TYPE == SFS_VFS # include -# endif /* SFS_TYPE == SFS_VFS */ +# endif # if SFS_TYPE == SFS_MOUNT # include -# endif /* SFS_TYPE == SFS_MOUNT */ +# endif # if SFS_TYPE == SFS_STATVFS # include -# endif /* SFS_TYPE == SFS_STATVFS */ +# endif long freediskspace(dir, bsize) @@ -3351,7 +3402,7 @@ freediskspace(dir, bsize) # endif /* SFS_TYPE == SFS_USTAT */ # ifndef SFS_BAVAIL # define SFS_BAVAIL f_bavail -# endif /* ! SFS_BAVAIL */ +# endif # if SFS_TYPE == SFS_USTAT if (stat(dir, &statbuf) == 0 && ustat(statbuf.st_dev, &fs) == 0) @@ -3412,7 +3463,7 @@ enoughdiskspace(msize, e) #if _FFR_TESTS if (tTd(4, 101)) return false; -#endif /* _FFR_TESTS */ +#endif if (MinBlocksFree <= 0 && msize <= 0) { if (tTd(4, 80)) @@ -3459,73 +3510,73 @@ transienterror(err) case ETIMEDOUT: /* Connection timed out */ #ifdef ESTALE case ESTALE: /* Stale NFS file handle */ -#endif /* ESTALE */ +#endif #ifdef ENETDOWN case ENETDOWN: /* Network is down */ -#endif /* ENETDOWN */ +#endif #ifdef ENETUNREACH case ENETUNREACH: /* Network is unreachable */ -#endif /* ENETUNREACH */ +#endif #ifdef ENETRESET case ENETRESET: /* Network dropped connection on reset */ -#endif /* ENETRESET */ +#endif #ifdef ECONNABORTED case ECONNABORTED: /* Software caused connection abort */ -#endif /* ECONNABORTED */ +#endif #ifdef ECONNRESET case ECONNRESET: /* Connection reset by peer */ -#endif /* ECONNRESET */ +#endif #ifdef ENOBUFS case ENOBUFS: /* No buffer space available */ -#endif /* ENOBUFS */ +#endif #ifdef ESHUTDOWN case ESHUTDOWN: /* Can't send after socket shutdown */ -#endif /* ESHUTDOWN */ +#endif #ifdef ECONNREFUSED case ECONNREFUSED: /* Connection refused */ -#endif /* ECONNREFUSED */ +#endif #ifdef EHOSTDOWN case EHOSTDOWN: /* Host is down */ -#endif /* EHOSTDOWN */ +#endif #ifdef EHOSTUNREACH case EHOSTUNREACH: /* No route to host */ -#endif /* EHOSTUNREACH */ +#endif #ifdef EDQUOT case EDQUOT: /* Disc quota exceeded */ -#endif /* EDQUOT */ +#endif #ifdef EPROCLIM case EPROCLIM: /* Too many processes */ -#endif /* EPROCLIM */ +#endif #ifdef EUSERS case EUSERS: /* Too many users */ -#endif /* EUSERS */ +#endif #ifdef EDEADLK case EDEADLK: /* Resource deadlock avoided */ -#endif /* EDEADLK */ +#endif #ifdef EISCONN case EISCONN: /* Socket already connected */ -#endif /* EISCONN */ +#endif #ifdef EINPROGRESS case EINPROGRESS: /* Operation now in progress */ -#endif /* EINPROGRESS */ +#endif #ifdef EALREADY case EALREADY: /* Operation already in progress */ -#endif /* EALREADY */ +#endif #ifdef EADDRINUSE case EADDRINUSE: /* Address already in use */ -#endif /* EADDRINUSE */ +#endif #ifdef EADDRNOTAVAIL case EADDRNOTAVAIL: /* Can't assign requested address */ -#endif /* EADDRNOTAVAIL */ +#endif #ifdef ETXTBSY case ETXTBSY: /* (Apollo) file locked */ -#endif /* ETXTBSY */ +#endif #if defined(ENOSR) && (!defined(ENOBUFS) || (ENOBUFS != ENOSR)) case ENOSR: /* Out of streams resources */ -#endif /* defined(ENOSR) && (!defined(ENOBUFS) || (ENOBUFS != ENOSR)) */ +#endif #ifdef ENOLCK case ENOLCK: /* No locks available */ -#endif /* ENOLCK */ +#endif case E_SM_OPENTIMEOUT: /* PSEUDO: open timed out */ return true; } @@ -3714,7 +3765,7 @@ lockfile(fd, filename, ext, type) #ifndef IS_SAFE_CHOWN # define IS_SAFE_CHOWN > 0 -#endif /* ! IS_SAFE_CHOWN */ +#endif bool chownsafe(fd, safedir) @@ -3739,9 +3790,9 @@ chownsafe(fd, safedir) rval = fpathconf(fd, _PC_CHOWN_RESTRICTED); # if SAFENFSPATHCONF return errno == 0 && rval IS_SAFE_CHOWN; -# else /* SAFENFSPATHCONF */ +# else return safedir && errno == 0 && rval IS_SAFE_CHOWN; -# endif /* SAFENFSPATHCONF */ +# endif # else /* (!defined(_POSIX_CHOWN_RESTRICTED) || _POSIX_CHOWN_RESTRICTED != -1) && ... */ return bitnset(DBS_ASSUMESAFECHOWN, DontBlameSendmail); # endif /* (!defined(_POSIX_CHOWN_RESTRICTED) || _POSIX_CHOWN_RESTRICTED != -1) && ... */ @@ -3761,7 +3812,7 @@ chownsafe(fd, safedir) #if HASSETRLIMIT # ifdef RLIMIT_NEEDS_SYS_TIME_H # include -# endif /* RLIMIT_NEEDS_SYS_TIME_H */ +# endif # include #endif /* HASSETRLIMIT */ @@ -3777,12 +3828,12 @@ resetlimits() # ifdef RLIMIT_NOFILE lim.rlim_cur = lim.rlim_max = FD_SETSIZE; (void) setrlimit(RLIMIT_NOFILE, &lim); -# endif /* RLIMIT_NOFILE */ +# endif #else /* HASSETRLIMIT */ # if HASULIMIT (void) ulimit(2, 0x3fffff); (void) ulimit(4, FD_SETSIZE); -# endif /* HASULIMIT */ +# endif #endif /* HASSETRLIMIT */ errno = 0; } @@ -3901,7 +3952,7 @@ getvendor(vendorcode) #if SHARE_V1 int DefShareUid; /* default share uid to run as -- unused??? */ -#endif /* SHARE_V1 */ +#endif void vendor_pre_defaults(e) @@ -3910,10 +3961,10 @@ vendor_pre_defaults(e) #if SHARE_V1 /* OTHERUID is defined in shares.h, do not be alarmed */ DefShareUid = OTHERUID; -#endif /* SHARE_V1 */ +#endif #if defined(SUN_EXTENSIONS) && defined(SUN_DEFAULT_VALUES) sun_pre_defaults(e); -#endif /* defined(SUN_EXTENSIONS) && defined(SUN_DEFAULT_VALUES) */ +#endif #ifdef apollo /* ** stupid domain/os can't even open @@ -3933,10 +3984,10 @@ vendor_post_defaults(e) #ifdef __QNX__ /* Makes sure the SOCK environment variable remains */ sm_setuserenv("SOCK", NULL); -#endif /* __QNX__ */ +#endif #if defined(SUN_EXTENSIONS) && defined(SUN_DEFAULT_VALUES) sun_post_defaults(e); -#endif /* defined(SUN_EXTENSIONS) && defined(SUN_DEFAULT_VALUES) */ +#endif } /* ** VENDOR_DAEMON_SETUP -- special vendor setup needed for daemon mode @@ -3948,7 +3999,7 @@ vendor_daemon_setup(e) { #if HASSETLOGIN (void) setlogin(RunAsUserName); -#endif /* HASSETLOGIN */ +#endif #if SECUREWARE if (getluid() != -1) { @@ -3981,10 +4032,10 @@ vendor_set_uid(uid) #if SHARE_V1 if (setupshares(uid, syserr) != 0) syserr("Unable to set up shares"); -#endif /* SHARE_V1 */ +#endif #if SECUREWARE (void) setup_secure(uid); -#endif /* SECUREWARE */ +#endif } /* ** VALIDATE_CONNECTION -- check connection for rationality @@ -4085,7 +4136,7 @@ validate_connection(sap, hostname, e) # if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)strtol.c 8.1 (Berkeley) 6/4/93"; -# endif /* defined(LIBC_SCCS) && !defined(lint) */ +# endif /* ** Convert a string to a long integer. @@ -4113,7 +4164,7 @@ strtol(nptr, endptr, base) */ do { c = *s++; - } while (isascii(c) && isspace(c)); + } while (SM_ISSPACE(c)); if (c == '-') { neg = 1; c = *s++; @@ -4170,7 +4221,7 @@ strtol(nptr, endptr, base) errno = ERANGE; } else if (neg) acc = -acc; - if (endptr != 0) + if (endptr != NULL) *endptr = (char *)(any ? s - 1 : nptr); return acc; } @@ -4228,16 +4279,16 @@ strstr(big, little) # ifndef AI_DEFAULT # define AI_DEFAULT 0 /* dummy */ -# endif /* ! AI_DEFAULT */ +# endif # ifndef AI_ADDRCONFIG # define AI_ADDRCONFIG 0 /* dummy */ -# endif /* ! AI_ADDRCONFIG */ +# endif # ifndef AI_V4MAPPED # define AI_V4MAPPED 0 /* dummy */ -# endif /* ! AI_V4MAPPED */ +# endif # ifndef AI_ALL # define AI_ALL 0 /* dummy */ -# endif /* ! AI_ALL */ +# endif static struct hostent * sm_getipnodebyname(name, family, flags, err) @@ -4255,6 +4306,7 @@ sm_getipnodebyname(name, family, flags, err) return h; # else /* HAS_GETHOSTBYNAME2 */ +# ifdef RES_USE_INET6 bool resv6 = true; if (family == AF_INET6) @@ -4263,17 +4315,20 @@ sm_getipnodebyname(name, family, flags, err) resv6 = bitset(RES_USE_INET6, _res.options); _res.options |= RES_USE_INET6; } +# endif /* RES_USE_INET6 */ SM_SET_H_ERRNO(0); h = gethostbyname(name); +# ifdef RES_USE_INET6 if (!resv6) _res.options &= ~RES_USE_INET6; +# endif /* the function is supposed to return only the requested family */ if (h != NULL && h->h_addrtype != family) { # if NETINET6 freehostent(h); -# endif /* NETINET6 */ +# endif h = NULL; *err = NO_DATA; } @@ -4342,7 +4397,7 @@ sm_gethostbyname(name, family) # ifndef SM_IPNODEBYNAME_FLAGS /* For IPv4-mapped addresses, use: AI_DEFAULT|AI_ALL */ # define SM_IPNODEBYNAME_FLAGS AI_ADDRCONFIG -# endif /* SM_IPNODEBYNAME_FLAGS */ +# endif int flags = SM_IPNODEBYNAME_FLAGS; int err; @@ -4357,7 +4412,7 @@ sm_gethostbyname(name, family) # if NETINET6 # if ADDRCONFIG_IS_BROKEN flags &= ~AI_ADDRCONFIG; -# endif /* ADDRCONFIG_IS_BROKEN */ +# endif h = sm_getipnodebyname(name, family, flags, &err); SM_SET_H_ERRNO(err); # else /* NETINET6 */ @@ -4414,7 +4469,7 @@ sm_gethostbyname(name, family) { # if NETINET6 freehostent(h); -# endif /* NETINET6 */ +# endif h = NULL; SM_SET_H_ERRNO(NO_DATA); } @@ -4433,7 +4488,7 @@ sm_gethostbyname(name, family) #if NETINET6 struct in6_addr ia6; char buf6[INET6_ADDRSTRLEN]; -#endif /* NETINET6 */ +#endif if (h->h_aliases != NULL) for (i = 0; h->h_aliases[i] != NULL; @@ -4672,20 +4727,20 @@ add_hostnames(sa) #if NETINET && defined(IN_LINKLOCAL) !(sa->sa.sa_family == AF_INET && IN_LINKLOCAL(ntohl(sa->sin.sin_addr.s_addr))) && -#endif /* NETINET && defined(IN_LINKLOCAL) */ +#endif #if NETINET6 !(sa->sa.sa_family == AF_INET6 && IN6_IS_ADDR_LINKLOCAL(&sa->sin6.sin6_addr)) && -#endif /* NETINET6 */ +#endif true) sm_syslog(LOG_WARNING, NOQID, "gethostbyaddr(%.100s) failed: %d", anynet_ntoa(sa), #if NAMED_BIND h_errno -#else /* NAMED_BIND */ +#else -1 -#endif /* NAMED_BIND */ +#endif ); errno = save_errno; return -1; @@ -4731,7 +4786,7 @@ add_hostnames(sa) } #if NETINET6 freehostent(hp); -#endif /* NETINET6 */ +#endif return 0; } /* @@ -4749,17 +4804,17 @@ add_hostnames(sa) #if !NETINET # define SIOCGIFCONF_IS_BROKEN 1 /* XXX */ -#endif /* !NETINET */ +#endif #if defined(SIOCGIFCONF) && !SIOCGIFCONF_IS_BROKEN struct rtentry; struct mbuf; # ifndef SUNOS403 # include -# endif /* ! SUNOS403 */ +# endif # if (_AIX4 >= 40300) && !defined(_NET_IF_H) # undef __P -# endif /* (_AIX4 >= 40300) && !defined(_NET_IF_H) */ +# endif # include #endif /* defined(SIOCGIFCONF) && !SIOCGIFCONF_IS_BROKEN */ @@ -4793,7 +4848,7 @@ load_if_names() struct lifconf lifc; # ifdef SIOCGLIFNUM struct lifnum lifn; -# endif /* SIOCGLIFNUM */ +# endif s = socket(InetMode, SOCK_DGRAM, 0); if (s == -1) @@ -4802,7 +4857,7 @@ load_if_names() /* get the list of known IP address from the kernel */ # ifdef __hpux i = ioctl(s, SIOCGIFNUM, (char *) &numifs); -# endif /* __hpux */ +# endif # ifdef SIOCGLIFNUM lifn.lifn_family = AF_UNSPEC; lifn.lifn_flags = 0; @@ -4836,7 +4891,7 @@ load_if_names() # ifndef __hpux lifc.lifc_family = AF_UNSPEC; lifc.lifc_flags = 0; -# endif /* ! __hpux */ +# endif if (ioctl(s, SIOCGLIFCONF, (char *)&lifc) < 0) { if (tTd(0, 4)) @@ -4864,7 +4919,7 @@ load_if_names() struct in_addr ia; # ifdef SIOCGLIFFLAGS struct lifreq ifrf; -# endif /* SIOCGLIFFLAGS */ +# endif char ip_addr[256]; char buf6[INET6_ADDRSTRLEN]; @@ -5063,15 +5118,15 @@ load_if_names() # if NETINET6 char *addr; struct in6_addr ia6; -# endif /* NETINET6 */ +# endif struct in_addr ia; # ifdef SIOCGIFFLAGS struct ifreq ifrf; -# endif /* SIOCGIFFLAGS */ +# endif char ip_addr[256]; # if NETINET6 char buf6[INET6_ADDRSTRLEN]; -# endif /* NETINET6 */ +# endif /* ** If we don't have a complete ifr structure, @@ -5095,7 +5150,7 @@ load_if_names() if (af != AF_INET # if NETINET6 && af != AF_INET6 -# endif /* NETINET6 */ +# endif ) continue; @@ -5214,17 +5269,26 @@ bool isloopback(sa) SOCKADDR sa; { -#if NETINET6 - if (IN6_IS_ADDR_LOOPBACK(&sa.sin6.sin6_addr)) - return true; -#else /* NETINET6 */ /* XXX how to correctly extract IN_LOOPBACKNET part? */ - if (((ntohl(sa.sin.sin_addr.s_addr) & IN_CLASSA_NET) +#define SM_IS_IPV4_LOOP(a) (((ntohl(a) & IN_CLASSA_NET) \ >> IN_CLASSA_NSHIFT) == IN_LOOPBACKNET) +#if NETINET6 + if (sa.sa.sa_family == AF_INET6 && + IN6_IS_ADDR_V4MAPPED(&sa.sin6.sin6_addr) && + SM_IS_IPV4_LOOP(((uint32_t *) (&sa.sin6.sin6_addr))[3])) return true; -#endif /* NETINET6 */ + if (sa.sa.sa_family == AF_INET6 && + IN6_IS_ADDR_LOOPBACK(&sa.sin6.sin6_addr)) + return true; +#endif +#if NETINET + if (sa.sa.sa_family == AF_INET && + SM_IS_IPV4_LOOP(sa.sin.sin_addr.s_addr)) + return true; +#endif return false; } + /* ** GET_NUM_PROCS_ONLINE -- return the number of processors currently online ** @@ -5367,9 +5431,9 @@ seed_random() # if HASRANDOM (void) srandom(seed); -# else /* HASRANDOM */ +# else (void) srand((unsigned int) seed); -# endif /* HASRANDOM */ +# endif #endif /* HASSRANDOMDEV */ } /* @@ -5579,10 +5643,10 @@ sm_syslog(level, id, fmt, va_alist) # ifdef V4FS # define XCNST const # define CAST (const char *) -# else /* V4FS */ +# else # define XCNST # define CAST -# endif /* V4FS */ +# endif void # ifdef __STDC__ @@ -5750,11 +5814,21 @@ link(source, target) ** Compile-Time options */ +#define SM_STR(x) #x +#define SM_XSTR(x) SM_STR(x) + char *CompileOptions[] = { #if ALLOW_255 "ALLOW_255", #endif +#if DANE +# if STARTTLS + "DANE", +# else +# error "DANE set but STARTTLS not defined" +# endif +#endif #if NAMED_BIND # if DNSMAP "DNSMAP", @@ -5779,6 +5853,14 @@ char *CompileOptions[] = #if LDAPMAP "LDAPMAP", #endif +#if LDAP_NETWORK_TIMEOUT +# if LDAPMAP && defined(LDAP_OPT_NETWORK_TIMEOUT) + /* set LDAP_OPT_NETWORK_TIMEOUT if available (-c) */ + "LDAP_NETWORK_TIMEOUT", +# else +# ERROR: _LDAP_NETWORK_TIMEOUT requires _LDAPMAP +# endif +#endif #if LDAP_REFERRALS "LDAP_REFERRALS", #endif @@ -5794,6 +5876,12 @@ char *CompileOptions[] = #if MATCHGECOS "MATCHGECOS", #endif +#if MAXDAEMONS != 10 + "MAXDAEMONS=" SM_XSTR(MAXDAEMONS), +#endif +#if defined(MSGIDLOGLEN) + "MSGIDLOGLEN=" SM_XSTR(MSGIDLOGLEN), +#endif #if MILTER "MILTER", #endif @@ -5833,8 +5921,18 @@ char *CompileOptions[] = #if NETX25 "NETX25", #endif +#if NO_EOH_FIELDS + "NO_EOH_FIELDS", +#endif #if NEWDB +# if defined(DB_VERSION_MAJOR) && defined(DB_VERSION_MINOR) + "NEWDB=" SM_XSTR(DB_VERSION_MAJOR) "." SM_XSTR(DB_VERSION_MINOR), +# else "NEWDB", +# endif +#endif +#if CDB + "CDB=" SM_XSTR(CDB), #endif #if NIS "NIS", @@ -5857,7 +5955,7 @@ char *CompileOptions[] = #if SASL # if SASL >= 20000 "SASLv2", -# else /* SASL >= 20000 */ +# else "SASL", # endif #endif @@ -5879,12 +5977,19 @@ char *CompileOptions[] = #if SUID_ROOT_FILES_OK "SUID_ROOT_FILES_OK", #endif +#if SYSLOG_BUFSIZE > 1024 + "SYSLOG_BUFSIZE=" SM_XSTR(SYSLOG_BUFSIZE), +#endif #if TCPWRAPPERS "TCPWRAPPERS", #endif #if TLS_NO_RSA "TLS_NO_RSA", #endif +#if TLS_EC + /* elliptic curves */ + "TLS_EC", +#endif #if TLS_VRFY_PER_CTX "TLS_VRFY_PER_CTX", #endif @@ -5934,6 +6039,9 @@ char *OsCompileOptions[] = #if DEC_OSF_BROKEN_GETPWENT "DEC_OSF_BROKEN_GETPWENT", #endif +#if DNSSEC_TEST + "DNSSEC_TEST", +#endif #if FAST_PID_RECYCLE "FAST_PID_RECYCLE", #endif @@ -5955,6 +6063,9 @@ char *OsCompileOptions[] = #if HASGETDTABLESIZE "HASGETDTABLESIZE", #endif +#if HAS_GETHOSTBYNAME2 + "HAS_GETHOSTBYNAME2", +#endif #if HASGETUSERSHELL "HASGETUSERSHELL", #endif @@ -6138,8 +6249,17 @@ char *OsCompileOptions[] = "USESYSCTL", #endif #if USE_OPENSSL_ENGINE + /* + ** 0: OpenSSL ENGINE? + ** 1: Support Sun OpenSSL patch for SPARC T4 pkcs11 + ** 2: none + */ +# if USE_OPENSSL_ENGINE != 1 + "USE_OPENSSL_ENGINE=" SM_XSTR(USE_OPENSSL_ENGINE), +# else "USE_OPENSSL_ENGINE", #endif +#endif #if USING_NETSCAPE_LDAP "USING_NETSCAPE_LDAP", #endif @@ -6156,6 +6276,7 @@ char *OsCompileOptions[] = char *FFRCompileOptions[] = { #if _FFR_ADD_BCC + /* see cf/feature/bcc.m4 */ "_FFR_ADD_BCC", #endif #if _FFR_ADDR_TYPE_MODES @@ -6179,6 +6300,10 @@ char *FFRCompileOptions[] = /* Better truncation of list of MX records for dns map. */ "_FFR_BESTMX_BETTER_TRUNCATION", #endif +#if _FFR_BLANKENV_MACV + /* also look up macros in BlankEnvelope */ + "_FFR_BLANKENV_MACV", +#endif #if _FFR_BOUNCE_QUEUE /* Separate, unprocessed queue for DSNs */ /* John Gardiner Myers of Proofpoint */ @@ -6192,14 +6317,28 @@ char *FFRCompileOptions[] = /* Stricter checks about queue directory permissions. */ "_FFR_CHK_QUEUE", #endif +#if _FFR_CLIENTCA + /* + ** Allow to set client specific CA values. + ** CACertFile: see doc/op.*: + ** "The DNs of these certificates are sent to the client + ** during the TLS handshake (as part of the CertificateRequest) + ** as the list of acceptable CAs. + ** However, do not list too many root CAs in that file, + ** otherwise the TLS handshake may fail;" + ** In TLSv1.3 the certs in CACertFile are also sent by + ** the client to the server and there is seemingly a + ** 16KB limit (just in OpenSSL?). + ** Having a separate CACertFile for the client + ** helps to avoid this problem. + */ + + "_FFR_CLIENTCA", +#endif #if _FFR_CLIENT_SIZE /* Don't try to send mail if its size exceeds SIZE= of server. */ "_FFR_CLIENT_SIZE", #endif -#if _FFR_CRLPATH - /* CRLPath; needs documentation; Al Smith */ - "_FFR_CRLPATH", -#endif #if _FFR_DM_ONE /* deliver first TA in background, then queue */ "_FFR_DM_ONE", @@ -6254,6 +6393,10 @@ char *FFRCompileOptions[] = /* EightBitAddrOK: allow 8-bit e-mail addresses */ "_FFR_EIGHT_BIT_ADDR_OK", #endif +#if _FFR_EXPAND_HELONAME + /* perform macro expansion for heloname */ + "_FFR_EXPAND_HELONAME", +#endif #if _FFR_EXTRA_MAP_CHECK /* perform extra checks on $( $) in R lines */ "_FFR_EXTRA_MAP_CHECK", @@ -6320,9 +6463,9 @@ char *FFRCompileOptions[] = /* Ignore extensions offered in response to HELO */ "_FFR_IGNORE_EXT_ON_HELO", #endif -#if _FFR_LINUX_MHNL - /* Set MAXHOSTNAMELEN to 256 (Linux) */ - "_FFR_LINUX_MHNL", +#if _FFR_KEEPBCC + /* Keep Bcc header */ + "_FFR_KEEPBCC", #endif #if _FFR_LOCAL_DAEMON /* Local daemon mode (-bl) which only accepts loopback connections */ @@ -6330,16 +6473,19 @@ char *FFRCompileOptions[] = #endif #if _FFR_LOG_MORE1 /* log some TLS/AUTH info in from= too */ - "_FFR_LOG_MORE1", + "_FFR_LOG_MORE1=" SM_XSTR(_FFR_LOG_MORE1), #endif #if _FFR_LOG_MORE2 /* log some TLS info in to= too */ - "_FFR_LOG_MORE2", + "_FFR_LOG_MORE2=" SM_XSTR(_FFR_LOG_MORE2), #endif -#if _FFR_LOGREPLY - "_FFR_LOGREPLY", +#if _FFR_LOG_MORE1 > 1 || _FFR_LOG_MORE2 > 1 +# if _FFR_LOG_MORE1 != _FFR_LOG_MORE2 + ERROR: FFR_LOG_MORE1 != FFR_LOG_MORE2 +# endif #endif #if _FFR_MAIL_MACRO + /* make the "real" sender address available in {mail_from} */ "_FFR_MAIL_MACRO", #endif #if _FFR_MAXDATASIZE @@ -6363,7 +6509,7 @@ char *FFRCompileOptions[] = "_FFR_MAX_SLEEP_TIME", #endif #if _FFR_MDS_NEGOTIATE - /* MaxDataSize negotation with libmilter */ + /* MaxDataSize negotiation with libmilter */ "_FFR_MDS_NEGOTIATE", #endif #if _FFR_MEMSTAT @@ -6429,19 +6575,43 @@ char *FFRCompileOptions[] = /* Disable PIPELINING, delay client if used. */ "_FFR_NO_PIPE", #endif -#if _FFR_LDAP_NETWORK_TIMEOUT - /* set LDAP_OPT_NETWORK_TIMEOUT if available (-c) */ - "_FFR_LDAP_NETWORK_TIMEOUT", +#if _FFR_LDAP_SINGLEDN + /* + ** The LDAP database map code in Sendmail 8.12.10, when + ** given the -1 switch, would match only a single DN, + ** but was able to return multiple attributes for that + ** DN. In Sendmail 8.13 this "bug" was corrected to + ** only return if exactly one attribute matched. + ** + ** Unfortunately, our configuration uses the former + ** behaviour. Attached is a relatively simple patch + ** to 8.13.4 which adds a -2 switch (for lack of a + ** better option) which returns the single dn/multiple + ** attributes. + ** + ** Jeffrey T. Eaton, Carnegie-Mellon University + */ + + "_FFR_LDAP_SINGLEDN", #endif #if _FFR_LOG_NTRIES /* log ntries=, from Nik Clayton of FreeBSD */ "_FFR_LOG_NTRIES", #endif +#if _FFR_OCC +# if SM_CONF_SHM + /* outgoing connection control (not yet working) */ + "_FFR_OCC", +# else +# ERROR: FFR_OCC requires _SM_CONF_SHM +# endif +#endif #if _FFR_PROXY /* "proxy" (synchronous) delivery mode */ "_FFR_PROXY", #endif #if _FFR_QF_PARANOIA + /* Check to make sure key fields were read from qf */ "_FFR_QF_PARANOIA", #endif #if _FFR_QUEUE_GROUP_SORTORDER @@ -6462,6 +6632,7 @@ char *FFRCompileOptions[] = "_FFR_QUEUE_SCHED_DBG", #endif #if _FFR_RCPTFLAGS + /* dynamic mailer modifications via {rcpt_flags}*/ "_FFR_RCPTFLAGS", #endif #if _FFR_RCPTTHROTDELAY @@ -6498,32 +6669,22 @@ char *FFRCompileOptions[] = "_FFR_RUNPQG", #endif #if _FFR_SESSID - /* session id (for logging) */ + /* session id (for logging): WIP, no logging yet! */ "_FFR_SESSID", #endif +#if _FFR_SETANYOPT + "_FFR_SETANYOPT", +#endif +#if _FFR_SETDEBUG_MAP + "_FFR_SETDEBUG_MAP", +#endif +#if _FFR_SETOPT_MAP + "_FFR_SETOPT_MAP", +#endif #if _FFR_SHM_STATUS /* Donated code (unused). */ "_FFR_SHM_STATUS", #endif -#if _FFR_LDAP_SINGLEDN - /* - ** The LDAP database map code in Sendmail 8.12.10, when - ** given the -1 switch, would match only a single DN, - ** but was able to return multiple attributes for that - ** DN. In Sendmail 8.13 this "bug" was corrected to - ** only return if exactly one attribute matched. - ** - ** Unfortunately, our configuration uses the former - ** behaviour. Attached is a relatively simple patch - ** to 8.13.4 which adds a -2 switch (for lack of a - ** better option) which returns the single dn/multiple - ** attributes. - ** - ** Jeffrey T. Eaton, Carnegie-Mellon University - */ - - "_FFR_LDAP_SINGLEDN", -#endif #if _FFR_SKIP_DOMAINS /* process every N'th domain instead of every N'th message */ "_FFR_SKIP_DOMAINS", @@ -6532,6 +6693,14 @@ char *FFRCompileOptions[] = /* Use select(2) in libsm/clock.c to emulate sleep(2) */ "_FFR_SLEEP_USE_SELECT ", #endif +#if _FFR_SM_LDAP_DBG +# if LDAPMAP && defined(LBER_OPT_LOG_PRINT_FN) + /* LDAP debugging */ + "_FFR_SM_LDAP_DBG", +# else +# ERROR: FFR_SM_LDAP_DBG requires _LDAPMAP and LBER_OPT_LOG_PRINT_FN +# endif +#endif #if _FFR_SPT_ALIGN /* ** It looks like the Compaq Tru64 5.1A now aligns argv and envp to 64 @@ -6556,8 +6725,21 @@ char *FFRCompileOptions[] = /* Donated code (unused). */ "_FFR_TIMERS", #endif -#if _FFR_TLS_EC - "_FFR_TLS_EC", +#if _FFR_TLS_ALTNAMES + /* store subjectAltNames in class {cert_altnames} */ +# if STARTTLS + "_FFR_TLS_ALTNAMES", +# else +# error "_FFR_TLS_ALTNAMES set but STARTTLS not defined" +# endif +#endif +#if _FFR_TLSFB2CLEAR + /* set default for TLSFallbacktoClear to true */ +# if STARTTLS + "_FFR_TLSFB2CLEAR", +# else +# error "_FFR_TLSFB2CLEAR set but STARTTLS not defined" +# endif #endif #if _FFR_TLS_USE_CERTIFICATE_CHAIN_FILE /* @@ -6565,11 +6747,11 @@ char *FFRCompileOptions[] = ** instead of SSL_CTX_use_certificate_file() */ +# if STARTTLS "_FFR_TLS_USE_CERTIFICATE_CHAIN_FILE", -#endif -#if _FFR_TLS_SE_OPTS - /* TLS session options */ - "_FFR_TLS_SE_OPTS", +# else +# error "_FFR_TLS_USE_CERTIFICATE_CHAIN_FILE set but STARTTLS not defined" +# endif #endif #if _FFR_TRUSTED_QF /* @@ -6590,7 +6772,30 @@ char *FFRCompileOptions[] = "_FFR_USE_GETPWNAM_ERRNO", #endif +#if _FFR_VRFY_TRUSTED_FIRST + /* + ** Sets X509_V_FLAG_TRUSTED_FIRST if -d88;.101 is used. + ** X509_VERIFY_PARAM_set_flags(3) + ** When X509_V_FLAG_TRUSTED_FIRST is set, construction of the + ** certificate chain in X509_verify_cert(3) will search the trust + ** store for issuer certificates before searching the provided + ** untrusted certificates. Local issuer certificates are often more + ** likely to satisfy local security requirements and lead to a locally + ** trusted root. This is especially important when some certificates + ** in the trust store have explicit trust settings (see "TRUST + ** SETTINGS" in x509(1)). + ** As of OpenSSL 1.1.0 this option is on by default. + */ + +# if defined(X509_V_FLAG_TRUSTED_FIRST) + "_FFR_VRFY_TRUSTED_FIRST", +# else +# error "FFR_VRFY_TRUSTED_FIRST set but X509_V_FLAG_TRUSTED_FIRST not defined" +# endif +#endif + #if _FFR_USE_SEM_LOCKING + /* Use semaphore locking */ "_FFR_USE_SEM_LOCKING", #endif #if _FFR_USE_SETLOGIN @@ -6599,8 +6804,27 @@ char *FFRCompileOptions[] = "_FFR_USE_SETLOGIN", #endif #if _FFR_XCNCT + /* X-Connect support */ "_FFR_XCNCT", +#endif +#if _FFR_EAI + + /* + ** Initial/Partial/Experimental EAI (SMTPUTF8) support. + ** NOTE: This is currently BROKEN as the handling of + ** envelope addresses in sendmail is NOT 8-bit clean + ** (in contrast to header addresses/values). + ** Requires ICU include files and library depending on the OS. + ** Patch from Arnt Gulbrandsen. + */ + +# if !ALLOW_255 +# ERROR FFR_EAI requires _ALLOW_255 +# endif +# if _FFR_EIGHT_BIT_ADDR_OK +# error "Cannot enable both of these FFRs: FFR_EAI FFR_EIGHT_BIT_ADDR_OK" +# endif + "_FFR_EAI", #endif NULL }; - diff --git a/src/conf.h b/src/conf.h index 54b1d09fc0ac..b5b368f48d68 100644 --- a/src/conf.h +++ b/src/conf.h @@ -16,8 +16,9 @@ /* ** CONF.H -- All user-configurable parameters for sendmail ** -** Send updates to sendmail@Sendmail.ORG so they will be -** included in the next release. +** Send updates to sendmail-YYYY@support.sendmail.org +** (replace YYYY with the current year) +** so they will be included in the next release. */ #ifndef CONF_H @@ -25,7 +26,7 @@ #ifdef __GNUC__ struct rusage; /* forward declaration to get gcc to shut up in wait.h */ -#endif /* __GNUC__ */ +#endif # include # include @@ -33,7 +34,7 @@ struct rusage; /* forward declaration to get gcc to shut up in wait.h */ # ifndef __QNX__ /* in QNX this grabs bogus LOCK_* manifests */ # include -# endif /* ! __QNX__ */ +# endif # include # include # include @@ -46,12 +47,12 @@ struct rusage; /* forward declaration to get gcc to shut up in wait.h */ #ifdef ARG_MAX # if ARG_MAX > 4096 # define SM_ARG_MAX 4096 -# else /* ARG_MAX > 4096 */ +# else # define SM_ARG_MAX ARG_MAX -# endif /* ARG_MAX > 4096 */ -#else /* ARG_MAX */ +# endif +#else # define SM_ARG_MAX 4096 -#endif /* ARG_MAX */ +#endif /********************************************************************** ** Table sizes, etc.... @@ -62,13 +63,13 @@ struct rusage; /* forward declaration to get gcc to shut up in wait.h */ #define MAXLINE 2048 /* max line length */ #if SASL # define MAXINPLINE 12288 /* max input line length (for AUTH) */ -#else /* SASL */ +#else # define MAXINPLINE MAXLINE /* max input line length */ -#endif /* SASL */ +#endif #define MAXNAME 256 /* max length of a name */ #ifndef MAXAUTHINFO # define MAXAUTHINFO 100 /* max length of authinfo token */ -#endif /* ! MAXAUTHINFO */ +#endif #define MAXPV 256 /* max # of parms to mailers */ #define MAXATOM 1000 /* max atoms per address */ #define MAXRWSETS 200 /* max # of sets of rewriting rules */ @@ -83,7 +84,7 @@ struct rusage; /* forward declaration to get gcc to shut up in wait.h */ #if MILTER # define MAXFILTERS 25 /* max # of milter filters */ # define MAXFILTERMACROS 50 /* max # of macros per milter cmd */ -#endif /* MILTER */ +#endif #define MAXSMTPARGS 20 /* max # of ESMTP args for MAIL/RCPT */ #define MAXTOCLASS 8 /* max # of message timeout classes */ #define MAXRESTOTYPES 3 /* max # of resolver timeout types */ @@ -93,7 +94,7 @@ struct rusage; /* forward declaration to get gcc to shut up in wait.h */ #ifndef MAXNOOPCOMMANDS # define MAXNOOPCOMMANDS 20 /* max "noise" commands before slowdown */ -#endif /* ! MAXNOOPCOMMANDS */ +#endif /* ** MAXQFNAME == 2 (size of "qf", "df" prefix) @@ -111,16 +112,17 @@ struct rusage; /* forward declaration to get gcc to shut up in wait.h */ /* Must match (BITMAPBITS - 1) */ #ifndef MAXHDRSLEN # define MAXHDRSLEN (32 * 1024) /* max size of message headers */ -#endif /* ! MAXHDRSLEN */ +#endif #ifndef MAXDAEMONS # define MAXDAEMONS 10 /* max number of ports to listen to */ -#endif /* MAXDAEMONS */ + /* XREF: conf.c: MAXDAEMONS != 10 */ +#endif #ifndef MAXINTERFACES # define MAXINTERFACES 512 /* number of interfaces to probe */ -#endif /* MAXINTERFACES */ +#endif #ifndef MAXSYMLINKS # define MAXSYMLINKS 32 /* max number of symlinks in a path */ -#endif /* ! MAXSYMLINKS */ +#endif #define MAXLINKPATHLEN (MAXPATHLEN * MAXSYMLINKS) /* max link-expanded file */ #define DATA_PROGRESS_TIMEOUT 300 /* how often to check DATA progress */ #define ENHSCLEN 10 /* max len of enhanced status code */ @@ -128,32 +130,32 @@ struct rusage; /* forward declaration to get gcc to shut up in wait.h */ #ifndef MAXQUEUEGROUPS # define MAXQUEUEGROUPS 50 /* max # of queue groups */ /* must be less than BITMAPBITS for DoQueueRun */ -#endif /* MAXQUEUEGROUPS */ +#endif #if MAXQUEUEGROUPS >= BITMAPBITS ERROR _MAXQUEUEGROUPS must be less than _BITMAPBITS -#endif /* MAXQUEUEGROUPS >= BITMAPBITS */ +#endif #ifndef MAXWORKGROUPS # define MAXWORKGROUPS 50 /* max # of work groups */ -#endif /* MAXWORKGROUPS */ +#endif #define MAXFILESYS BITMAPBITS /* max # of queue file systems * must be <= BITMAPBITS */ #ifndef FILESYS_UPDATE_INTERVAL # define FILESYS_UPDATE_INTERVAL 300 /* how often to update FileSys table */ -#endif /* FILESYS_UPDATE_INTERVAL */ +#endif #ifndef SM_DEFAULT_TTL # define SM_DEFAULT_TTL 3600 /* default TTL for services that don't have one */ -#endif /* SM_DEFAULT_TTL */ +#endif #if SASL # ifndef AUTH_MECHANISMS # if STARTTLS # define AUTH_MECHANISMS "EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5" -# else /* STARTTLS */ +# else # define AUTH_MECHANISMS "GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5" -# endif /* STARTTLS */ +# endif # endif /* ! AUTH_MECHANISMS */ #endif /* SASL */ @@ -164,7 +166,7 @@ struct rusage; /* forward declaration to get gcc to shut up in wait.h */ #ifndef DBMMODE # define DBMMODE 0640 -#endif /* ! DBMMODE */ +#endif /* ** Value which means a uid or gid value should not change @@ -172,10 +174,10 @@ struct rusage; /* forward declaration to get gcc to shut up in wait.h */ #ifndef NO_UID # define NO_UID -1 -#endif /* ! NO_UID */ +#endif #ifndef NO_GID # define NO_GID -1 -#endif /* ! NO_GID */ +#endif /********************************************************************** ** Compilation options. @@ -186,58 +188,66 @@ struct rusage; /* forward declaration to get gcc to shut up in wait.h */ #ifndef NETINET # define NETINET 1 /* include internet support */ -#endif /* ! NETINET */ +#endif #ifndef NETINET6 # define NETINET6 0 /* do not include IPv6 support */ -#endif /* ! NETINET6 */ +#endif #ifndef NETISO # define NETISO 0 /* do not include ISO socket support */ -#endif /* ! NETISO */ +#endif #ifndef NAMED_BIND # define NAMED_BIND 1 /* use Berkeley Internet Domain Server */ -#endif /* ! NAMED_BIND */ +#endif #ifndef XDEBUG # define XDEBUG 1 /* enable extended debugging */ -#endif /* ! XDEBUG */ +#endif #ifndef MATCHGECOS # define MATCHGECOS 1 /* match user names from gecos field */ -#endif /* ! MATCHGECOS */ +#endif #ifndef DSN # define DSN 1 /* include delivery status notification code */ -#endif /* ! DSN */ +#endif #if !defined(USERDB) && (defined(NEWDB) || defined(HESIOD)) # define USERDB 1 /* look in user database */ -#endif /* !defined(USERDB) && (defined(NEWDB) || defined(HESIOD)) */ +#endif #ifndef MIME8TO7 # define MIME8TO7 1 /* 8->7 bit MIME conversions */ -#endif /* ! MIME8TO7 */ +#endif #ifndef MIME7TO8 # define MIME7TO8 1 /* 7->8 bit MIME conversions */ -#endif /* ! MIME7TO8 */ +#endif #if NAMED_BIND # ifndef DNSMAP # define DNSMAP 1 /* DNS map type */ -# endif /* ! DNSMAP */ -#endif /* NAMED_BIND */ +# endif +#endif #ifndef PIPELINING # define PIPELINING 1 /* SMTP PIPELINING */ -#endif /* PIPELINING */ +#endif /********************************************************************** ** End of site-specific configuration. **********************************************************************/ +#if CDB >= 2 +# define CDBEXT ".db" +# define CDBext "db" +#else +# define CDBEXT ".cdb" +# define CDBext "cdb" +#endif + #include #endif /* ! CONF_H */ diff --git a/src/control.c b/src/control.c index 254197389476..a6d8ad631335 100644 --- a/src/control.c +++ b/src/control.c @@ -314,17 +314,16 @@ control_command(sock, e) sm_setproctitle(false, e, "control: %s", inp); /* break off command */ - for (p = inp; isascii(*p) && isspace(*p); p++) + for (p = inp; SM_ISSPACE(*p); p++) continue; cmd = cmdbuf; while (*p != '\0' && - !(isascii(*p) && isspace(*p)) && - cmd < &cmdbuf[sizeof(cmdbuf) - 2]) + !(SM_ISSPACE(*p)) && cmd < &cmdbuf[sizeof(cmdbuf) - 2]) *cmd++ = *p++; *cmd = '\0'; /* throw away leading whitespace */ - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; /* decode command */ diff --git a/src/daemon.c b/src/daemon.c index 42883658db89..19a937815cbd 100644 --- a/src/daemon.c +++ b/src/daemon.c @@ -18,22 +18,40 @@ SM_RCSID("@(#)$Id: daemon.c,v 8.698 2013-11-22 20:51:55 ca Exp $") #if defined(SOCK_STREAM) || defined(__GNU_LIBRARY__) # define USE_SOCK_STREAM 1 -#endif /* defined(SOCK_STREAM) || defined(__GNU_LIBRARY__) */ +#endif #if defined(USE_SOCK_STREAM) # if NETINET || NETINET6 # include -# endif /* NETINET || NETINET6 */ +# endif # if NAMED_BIND # ifndef NO_DATA # define NO_DATA NO_ADDRESS -# endif /* ! NO_DATA */ +# endif # endif /* NAMED_BIND */ #endif /* defined(USE_SOCK_STREAM) */ #if STARTTLS # include -#endif /* STARTTLS */ +# if DANE +# include "tls.h" +# include "sm_resolve.h" +# endif +#endif + +#if NETINET6 +# define FREEHOSTENT(h, s) \ + do \ + { \ + if ((h) != (s) && (h) != NULL) \ + { \ + freehostent((h)); \ + (h) = NULL; \ + } \ + } while (0) +#else +# define FREEHOSTENT(h, s) +#endif #include @@ -59,6 +77,8 @@ SM_RCSID("@(#)$Id: daemon.c,v 8.698 2013-11-22 20:51:55 ca Exp $") #include +#include + #define DAEMON_C 1 #include @@ -133,16 +153,16 @@ getrequests(e) int i, olddaemon = 0; #if XDEBUG bool j_has_dot; -#endif /* XDEBUG */ +#endif char status[MAXLINE]; SOCKADDR sa; SOCKADDR_LEN_T len = sizeof(sa); #if _FFR_QUEUE_RUN_PARANOIA time_t lastrun; -#endif /* _FFR_QUEUE_RUN_PARANOIA */ -# if NETUNIX +#endif +#if NETUNIX extern int ControlSocket; -# endif /* NETUNIX */ +#endif extern ENVELOPE BlankEnvelope; @@ -215,7 +235,7 @@ getrequests(e) time_t now; #if STARTTLS long seed; -#endif /* STARTTLS */ +#endif /* see if we are rejecting connections */ (void) sm_blocksignal(SIGALRM); @@ -353,7 +373,7 @@ getrequests(e) (void) runqueue(true, false, false, false); #if _FFR_QUEUE_RUN_PARANOIA lastrun = now; -#endif /* _FFR_QUEUE_RUN_PARANOIA */ +#endif } #if _FFR_QUEUE_RUN_PARANOIA else if (CheckQueueRunners > 0 && QueueIntvl > 0 && @@ -405,9 +425,9 @@ getrequests(e) if (t >= 0 && (lotherend == 0 || -# ifdef BSD4_4_SOCKADDR +#ifdef BSD4_4_SOCKADDR RealHostAddr.sa.sa_len == 0 || -# endif /* BSD4_4_SOCKADDR */ +#endif RealHostAddr.sa.sa_family != Daemons[idx].d_addr.sa.sa_family)) { (void) close(t); @@ -442,7 +462,7 @@ getrequests(e) (lotherend == 0 || # ifdef BSD4_4_SOCKADDR sa_un.sun_len == 0 || -# endif /* BSD4_4_SOCKADDR */ +# endif sa_un.sun_family != AF_UNIX)) { (void) close(t); @@ -477,13 +497,13 @@ getrequests(e) if (save_errno == EINTR #ifdef EAGAIN || save_errno == EAGAIN -#endif /* EAGAIN */ +#endif #ifdef ECONNABORTED || save_errno == ECONNABORTED -#endif /* ECONNABORTED */ +#endif #ifdef EWOULDBLOCK || save_errno == EWOULDBLOCK -#endif /* EWOULDBLOCK */ +#endif ) continue; @@ -522,37 +542,37 @@ getrequests(e) macdefine(&BlankEnvelope.e_macro, A_PERM, macid("{daemon_family}"), "local"); break; -#endif /* NETUNIX */ +#endif #if NETINET case AF_INET: macdefine(&BlankEnvelope.e_macro, A_PERM, macid("{daemon_family}"), "inet"); break; -#endif /* NETINET */ +#endif #if NETINET6 case AF_INET6: macdefine(&BlankEnvelope.e_macro, A_PERM, macid("{daemon_family}"), "inet6"); break; -#endif /* NETINET6 */ +#endif #if NETISO case AF_ISO: macdefine(&BlankEnvelope.e_macro, A_PERM, macid("{daemon_family}"), "iso"); break; -#endif /* NETISO */ +#endif #if NETNS case AF_NS: macdefine(&BlankEnvelope.e_macro, A_PERM, macid("{daemon_family}"), "ns"); break; -#endif /* NETNS */ +#endif #if NETX25 case AF_CCITT: macdefine(&BlankEnvelope.e_macro, A_PERM, macid("{daemon_family}"), "x.25"); break; -#endif /* NETX25 */ +#endif } macdefine(&BlankEnvelope.e_macro, A_PERM, macid("{daemon_name}"), @@ -1179,24 +1199,24 @@ opendaemonsocket(d, firsttime) case AF_UNIX: socksize = sizeof(d->d_addr.sunix); break; -#endif /* NETUNIX */ +#endif #if NETINET case AF_INET: socksize = sizeof(d->d_addr.sin); break; -#endif /* NETINET */ +#endif #if NETINET6 case AF_INET6: socksize = sizeof(d->d_addr.sin6); break; -#endif /* NETINET6 */ +#endif #if NETISO case AF_ISO: socksize = sizeof(d->d_addr.siso); break; -#endif /* NETISO */ +#endif default: socksize = sizeof(d->d_addr); @@ -1255,7 +1275,7 @@ setupdaemon(daemonaddr) memset(daemonaddr, '\0', sizeof(*daemonaddr)); #if NETINET daemonaddr->sa.sa_family = AF_INET; -#endif /* NETINET */ +#endif } switch (daemonaddr->sa.sa_family) @@ -1310,13 +1330,13 @@ setupdaemon(daemonaddr) case AF_INET: daemonaddr->sin.sin_port = port; break; -#endif /* NETINET */ +#endif #if NETINET6 case AF_INET6: daemonaddr->sin6.sin6_port = port; break; -#endif /* NETINET6 */ +#endif default: /* unknown protocol */ @@ -1442,17 +1462,17 @@ setsockaddroptions(p, d) { #if NETISO short portno; -#endif /* NETISO */ +#endif char *port = NULL; char *addr = NULL; #if NETINET if (d->d_addr.sa.sa_family == AF_UNSPEC) d->d_addr.sa.sa_family = AF_INET; -#endif /* NETINET */ +#endif #if _FFR_SS_PER_DAEMON d->d_supersafe = DPO_NOTSET; -#endif /* _FFR_SS_PER_DAEMON */ +#endif d->d_dm = DM_NOTSET; d->d_refuseLA = DPO_NOTSET; d->d_queueLA = DPO_NOTSET; @@ -1464,7 +1484,7 @@ setsockaddroptions(p, d) register char *f; register char *v; - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; if (*p == '\0') break; @@ -1483,7 +1503,7 @@ setsockaddroptions(p, d) case 'A': /* address */ #if !_FFR_DPO_CS case 'a': -#endif /* !_FFR_DPO_CS */ +#endif addr = v; break; @@ -1500,7 +1520,7 @@ setsockaddroptions(p, d) case SM_FORK: #if _FFR_PROXY case SM_PROXY_REQ: -#endif /* _FFR_PROXY */ +#endif d->d_dm = *v; break; default: @@ -1517,34 +1537,34 @@ setsockaddroptions(p, d) case 'F': /* address family */ #if !_FFR_DPO_CS case 'f': -#endif /* !_FFR_DPO_CS */ +#endif if (isascii(*v) && isdigit(*v)) d->d_addr.sa.sa_family = atoi(v); #ifdef NETUNIX else if (sm_strcasecmp(v, "unix") == 0 || sm_strcasecmp(v, "local") == 0) d->d_addr.sa.sa_family = AF_UNIX; -#endif /* NETUNIX */ +#endif #if NETINET else if (sm_strcasecmp(v, "inet") == 0) d->d_addr.sa.sa_family = AF_INET; -#endif /* NETINET */ +#endif #if NETINET6 else if (sm_strcasecmp(v, "inet6") == 0) d->d_addr.sa.sa_family = AF_INET6; -#endif /* NETINET6 */ +#endif #if NETISO else if (sm_strcasecmp(v, "iso") == 0) d->d_addr.sa.sa_family = AF_ISO; -#endif /* NETISO */ +#endif #if NETNS else if (sm_strcasecmp(v, "ns") == 0) d->d_addr.sa.sa_family = AF_NS; -#endif /* NETNS */ +#endif #if NETX25 else if (sm_strcasecmp(v, "x.25") == 0) d->d_addr.sa.sa_family = AF_CCITT; -#endif /* NETX25 */ +#endif else syserr("554 5.3.5 Unknown address family %s in Family=option", v); @@ -1554,7 +1574,7 @@ setsockaddroptions(p, d) case 'I': # if !_FFR_DPO_CS case 'i': -# endif /* !_FFR_DPO_CS */ +# endif d->d_inputfilterlist = v; break; #endif /* MILTER */ @@ -1562,28 +1582,28 @@ setsockaddroptions(p, d) case 'L': /* listen queue size */ #if !_FFR_DPO_CS case 'l': -#endif /* !_FFR_DPO_CS */ +#endif d->d_listenqueue = atoi(v); break; case 'M': /* modifiers (flags) */ #if !_FFR_DPO_CS case 'm': -#endif /* !_FFR_DPO_CS */ +#endif d->d_mflags = getmodifiers(v, d->d_flags); break; case 'N': /* name */ #if !_FFR_DPO_CS case 'n': -#endif /* !_FFR_DPO_CS */ +#endif d->d_name = v; break; case 'P': /* port */ #if !_FFR_DPO_CS case 'p': -#endif /* !_FFR_DPO_CS */ +#endif port = v; break; @@ -1602,7 +1622,7 @@ setsockaddroptions(p, d) case 'S': /* send buffer size */ #if !_FFR_DPO_CS case 's': -#endif /* !_FFR_DPO_CS */ +#endif d->d_tcpsndbufsize = atoi(v); break; @@ -1677,10 +1697,7 @@ setsockaddroptions(p, d) memmove(&d->d_addr.sin.sin_addr, *(hp->h_addr_list), INADDRSZ); -# if NETINET6 - freehostent(hp); - hp = NULL; -# endif /* NETINET6 */ + FREEHOSTENT(hp, NULL); } } break; @@ -1709,8 +1726,7 @@ setsockaddroptions(p, d) memmove(&d->d_addr.sin6.sin6_addr, *(hp->h_addr_list), IN6ADDRSZ); - freehostent(hp); - hp = NULL; + FREEHOSTENT(hp, NULL); } } break; @@ -1885,7 +1901,7 @@ setdaemonoptions(p) #if MILTER if (Daemons[NDaemons].d_inputfilterlist != NULL) Daemons[NDaemons].d_inputfilterlist = newstr(Daemons[NDaemons].d_inputfilterlist); -#endif /* MILTER */ +#endif if (Daemons[NDaemons].d_name != NULL) Daemons[NDaemons].d_name = newstr(Daemons[NDaemons].d_name); @@ -1985,7 +2001,7 @@ addr_family(addr) { #if NETINET6 SOCKADDR clt_addr; -#endif /* NETINET6 */ +#endif #if NETINET if (inet_addr(addr) != INADDR_NONE) @@ -2104,12 +2120,19 @@ static jmp_buf CtxConnectTimeout; SOCKADDR CurHostAddr; /* address of current host */ int -makeconnection(host, port, mci, e, enough) +makeconnection(host, port, mci, e, enough +#if DANE + , ptlsa_flags +#endif + ) char *host; volatile unsigned int port; register MCI *mci; ENVELOPE *e; time_t enough; +#if DANE + unsigned long *ptlsa_flags; +#endif { register volatile int addrno = 0; volatile int s; @@ -2122,7 +2145,7 @@ makeconnection(host, port, mci, e, enough) SM_EVENT *volatile ev = NULL; #if NETINET6 volatile bool v6found = false; -#endif /* NETINET6 */ +#endif volatile int family = InetMode; SOCKADDR_LEN_T len; volatile SOCKADDR_LEN_T socksize = 0; @@ -2130,6 +2153,20 @@ makeconnection(host, port, mci, e, enough) BITMAP256 d_flags; char *p; extern ENVELOPE BlankEnvelope; +#if DANE + unsigned long tlsa_flags; +#endif +#if DANE && NETINET6 + struct hostent *volatile hs = (struct hostent *) NULL; +#else +# define hs ((struct hostent *) NULL) +#endif + +#if DANE + SM_REQUIRE(ptlsa_flags != NULL); + tlsa_flags = *ptlsa_flags; + *ptlsa_flags &= ~(TLSAFLALWAYS|TLSAFLSECURE); +#endif /* retranslate {daemon_flags} into bitmap */ clrbitmap(d_flags); @@ -2137,14 +2174,14 @@ makeconnection(host, port, mci, e, enough) { for (; *p != '\0'; p++) { - if (!(isascii(*p) && isspace(*p))) + if (!(SM_ISSPACE(*p))) setbitn(bitidx(*p), d_flags); } } #if NETINET6 v4retry: -#endif /* NETINET6 */ +#endif clt_bind = false; /* Set up the address for outgoing connection. */ @@ -2154,7 +2191,7 @@ makeconnection(host, port, mci, e, enough) { #if NETINET6 char p6[INET6_ADDRSTRLEN]; -#endif /* NETINET6 */ +#endif memset(&clt_addr, '\0', sizeof(clt_addr)); @@ -2264,15 +2301,15 @@ makeconnection(host, port, mci, e, enough) { #if NETINET unsigned long hid = INADDR_NONE; -#endif /* NETINET */ +#endif #if NETINET6 struct sockaddr_in6 hid6; -#endif /* NETINET6 */ +#endif *p = '\0'; #if NETINET6 memset(&hid6, '\0', sizeof(hid6)); -#endif /* NETINET6 */ +#endif #if NETINET if (family == AF_INET && (hid = inet_addr(&host[1])) != INADDR_NONE) @@ -2308,7 +2345,7 @@ makeconnection(host, port, mci, e, enough) p[-1] = '.'; #if NAMED_BIND _res.options = oldopts; -#endif /* NAMED_BIND */ +#endif } *p = ']'; goto gothostent; @@ -2332,20 +2369,67 @@ makeconnection(host, port, mci, e, enough) /* contortion to get around SGI cc complaints */ { p = &host[strlen(host) - 1]; - hp = sm_gethostbyname(host, family); +#if DANE + if (tTd(16, 40)) + sm_dprintf("makeconnection: tlsa_flags=%lX, host=%s\n", + tlsa_flags, host); + if (DANEMODE(tlsa_flags) == DANE_SECURE +# if DNSSEC_TEST + || tTd(8, 120) +# endif + ) + { + DNS_REPLY_T *rr; + int err, herr; + + rr = dns_lookup_int(host, C_IN, FAM2T_(family), + 0, 0, SM_RES_DNSSEC, 0, &err, &herr); + + /* + ** Check for errors! + ** If no ad: turn off TLSA. + ** permail: use "normal" method? + ** tempfail: delay or use "normal" method? + */ + + if (rr != NULL && rr->dns_r_h.ad == 1) + { + *ptlsa_flags |= DANE_SECURE; + if ((TLSAFLTEMP & *ptlsa_flags) != 0) + { + dns_free_data(rr); + rr = NULL; + return EX_TEMPFAIL; + } + hp = dns2he(rr, family); +#if NETINET6 + hs = hp; +#endif + } + + /* other possible "tempfails"? */ + if (rr == NULL && h_errno == TRY_AGAIN) + goto gothostent; + + dns_free_data(rr); + rr = NULL; + } +#endif + if (hp == NULL) + hp = sm_gethostbyname(host, family); if (hp == NULL && *p == '.') { #if NAMED_BIND int oldopts = _res.options; _res.options &= ~(RES_DEFNAMES|RES_DNSRCH); -#endif /* NAMED_BIND */ +#endif *p = '\0'; hp = sm_gethostbyname(host, family); *p = '.'; #if NAMED_BIND _res.options = oldopts; -#endif /* NAMED_BIND */ +#endif } } gothostent: @@ -2374,10 +2458,10 @@ makeconnection(host, port, mci, e, enough) # if _FFR_GETHBN_ExFILE # ifdef EMFILE errno == EMFILE || -# endif /* EMFILE */ +# endif # ifdef ENFILE errno == ENFILE || -# endif /* ENFILE */ +# endif # endif /* _FFR_GETHBN_ExFILE */ h_errno == TRY_AGAIN || (errno == ECONNREFUSED && UseNameServer)) @@ -2444,6 +2528,24 @@ makeconnection(host, port, mci, e, enough) addrno = 1; } +#if _FFR_TESTS + /* + ** Hack for testing. + ** Hardcoded: + ** 10.1.1.12: see meta1.tns XREF IP address + ** 8754: see common.sh XREF SNKPORT2 + */ + + if (tTd(77, 101) && hp->h_addrtype == AF_INET && + addr.sin.sin_addr.s_addr == inet_addr("10.1.1.12")) + { + addr.sin.sin_addr.s_addr = inet_addr("127.0.0.1"); + port = htons(8754); + sm_dprintf("hack host=%s addr=[%s].%d\n", host, + anynet_ntoa(&addr), ntohs(port)); + } +#endif + /* ** Determine the port number. */ @@ -2510,10 +2612,7 @@ makeconnection(host, port, mci, e, enough) syserr("Can't connect to address family %d", addr.sa.sa_family); mci_setstat(mci, EX_NOHOST, "5.1.2", NULL); errno = EINVAL; -#if NETINET6 - if (hp != NULL) - freehostent(hp); -#endif /* NETINET6 */ + FREEHOSTENT(hp, hs); return EX_NOHOST; } @@ -2525,14 +2624,34 @@ makeconnection(host, port, mci, e, enough) /* if too many connections, don't bother trying */ if (!xla_noqueue_ok(host)) { -# if NETINET6 - if (hp != NULL) - freehostent(hp); -# endif /* NETINET6 */ + FREEHOSTENT(hp, hs); return EX_TEMPFAIL; } #endif /* XLA */ +#if _FFR_OCC +# define OCC_CLOSE occ_close(e, mci, host, &addr) + /* HACK!!!! just to see if this can work at all... */ + if (occ_exceeded(e, mci, host, &addr)) + { + FREEHOSTENT(hp, hs); + sm_syslog(LOG_DEBUG, e->e_id, + "stat=occ_exceeded, host=%s, addr=%s", + host, anynet_ntoa(&addr)); + + /* + ** to get a more specific stat= message set errno + ** or make up one in sm, see sm_errstring() + */ + + mci_setstat(mci, EX_TEMPFAIL, "4.4.5", "450 occ_exceeded"); /* check D.S.N */ + errno = EAGAIN; + return EX_TEMPFAIL; + } +#else /* _FFR_OCC */ +# define OCC_CLOSE +#endif /* _FFR_OCC */ + for (;;) { if (tTd(16, 1)) @@ -2561,13 +2680,11 @@ makeconnection(host, port, mci, e, enough) syserr("makeconnection: cannot create socket"); #if XLA xla_host_end(host); -#endif /* XLA */ +#endif mci_setstat(mci, EX_TEMPFAIL, "4.4.5", NULL); -#if NETINET6 - if (hp != NULL) - freehostent(hp); -#endif /* NETINET6 */ + FREEHOSTENT(hp, hs); errno = save_errno; + OCC_CLOSE; return EX_TEMPFAIL; } @@ -2639,11 +2756,9 @@ makeconnection(host, port, mci, e, enough) errno = save_errno; syserr("makeconnection: cannot bind socket [%s]", anynet_ntoa(&clt_addr)); -#if NETINET6 - if (hp != NULL) - freehostent(hp); -#endif /* NETINET6 */ + FREEHOSTENT(hp, hs); errno = save_errno; + OCC_CLOSE; return EX_TEMPFAIL; } } @@ -2672,6 +2787,11 @@ makeconnection(host, port, mci, e, enough) case AF_INET: addr.sin.sin_addr.s_addr = ConnectOnlyTo.sin.sin_addr.s_addr; addr.sa.sa_family = ConnectOnlyTo.sa.sa_family; + if (ConnectOnlyTo.sin.sin_port != 0) + { + port = ConnectOnlyTo.sin.sin_port; + addr.sin.sin_port = port; + } break; #endif /* NETINET */ @@ -2680,11 +2800,18 @@ makeconnection(host, port, mci, e, enough) memmove(&addr.sin6.sin6_addr, &ConnectOnlyTo.sin6.sin6_addr, IN6ADDRSZ); + if (ConnectOnlyTo.sin6.sin6_port != 0) + { + port = ConnectOnlyTo.sin6.sin6_port; + addr.sin6.sin6_port = port; + } break; #endif /* NETINET6 */ } if (tTd(16, 1)) - sm_dprintf("Connecting to [%s]...\n", anynet_ntoa(&addr)); + sm_dprintf("Connecting to [%s].%d...\n", + anynet_ntoa(&addr), ntohs(port)); + i = connect(s, (struct sockaddr *) &addr, addrlen); save_errno = errno; if (ev != NULL) @@ -2712,8 +2839,9 @@ makeconnection(host, port, mci, e, enough) if (LogLevel > 13) sm_syslog(LOG_INFO, e->e_id, - "makeconnection (%s [%s]) failed: %s", - host, anynet_ntoa(&addr), + "makeconnection (%s [%s].%d (%d)) failed: %s", + host, anynet_ntoa(&addr), ntohs(port), + (int) addr.sa.sa_family, sm_errstring(save_errno)); #if NETINET6 @@ -2761,11 +2889,7 @@ makeconnection(host, port, mci, e, enough) sm_errstring(save_errno)); v6found = true; family = AF_INET; - if (hp != NULL) - { - freehostent(hp); - hp = NULL; - } + FREEHOSTENT(hp, hs); goto v4retry; } v6tempfail: @@ -2774,30 +2898,22 @@ makeconnection(host, port, mci, e, enough) #if NETINET6 /* Don't clobber an already saved errno from v4retry */ if (errno > 0) -#endif /* NETINET6 */ +#endif save_errno = errno; if (tTd(16, 1)) sm_dprintf("Connect failed (%s)\n", sm_errstring(save_errno)); #if XLA xla_host_end(host); -#endif /* XLA */ +#endif mci_setstat(mci, EX_TEMPFAIL, "4.4.1", NULL); -#if NETINET6 - if (hp != NULL) - freehostent(hp); -#endif /* NETINET6 */ + FREEHOSTENT(hp, hs); errno = save_errno; + OCC_CLOSE; return EX_TEMPFAIL; } -#if NETINET6 - if (hp != NULL) - { - freehostent(hp); - hp = NULL; - } -#endif /* NETINET6 */ + FREEHOSTENT(hp, hs); /* connection ok, put it into canonical form */ mci->mci_out = NULL; @@ -2816,6 +2932,7 @@ makeconnection(host, port, mci, e, enough) (void) sm_io_close(mci->mci_out, SM_TIME_DEFAULT); (void) close(s); errno = save_errno; + OCC_CLOSE; return EX_TEMPFAIL; } sm_io_automode(mci->mci_out, mci->mci_in); @@ -2843,14 +2960,25 @@ makeconnection(host, port, mci, e, enough) if (getsockname(s, &addr.sa, &len) == 0) { char *name; - char family[5]; - macdefine(&BlankEnvelope.e_macro, A_TEMP, - macid("{if_addr_out}"), anynet_ntoa(&addr)); - (void) sm_snprintf(family, sizeof(family), "%d", - addr.sa.sa_family); - macdefine(&BlankEnvelope.e_macro, A_TEMP, - macid("{if_family_out}"), family); + if (!isloopback(addr)) + { + char familystr[5]; + + macdefine(&BlankEnvelope.e_macro, A_TEMP, + macid("{if_addr_out}"), anynet_ntoa(&addr)); + (void) sm_snprintf(familystr, sizeof(familystr), "%d", + addr.sa.sa_family); + macdefine(&BlankEnvelope.e_macro, A_TEMP, + macid("{if_family_out}"), familystr); + } + else + { + macdefine(&BlankEnvelope.e_macro, A_PERM, + macid("{if_addr_out}"), NULL); + macdefine(&BlankEnvelope.e_macro, A_PERM, + macid("{if_family_out}"), NULL); + } name = hostnamebyanyaddr(&addr); macdefine(&BlankEnvelope.e_macro, A_TEMP, @@ -2880,7 +3008,7 @@ makeconnection(host, port, mci, e, enough) /* Use the configured HeloName as appropriate */ if (HeloName != NULL && HeloName[0] != '\0') { - SM_FREE_CLR(mci->mci_heloname); + SM_FREE(mci->mci_heloname); mci->mci_heloname = newstr(HeloName); } @@ -3041,7 +3169,7 @@ shutdown_daemon() closecontrolsocket(true); #if XLA xla_all_end(); -#endif /* XLA */ +#endif for (i = 0; i < NDaemons; i++) { @@ -3133,7 +3261,7 @@ restart_daemon() closecontrolsocket(true); #if SM_CONF_SHM cleanup_shm(DaemonPid == getpid()); -#endif /* SM_CONF_SHM */ +#endif /* close locked pid file */ close_sendmail_pid(); @@ -3175,7 +3303,7 @@ restart_daemon() SM_NOOP_SIGNAL(SIGTERM, ignore); #ifdef SIGUSR1 SM_NOOP_SIGNAL(SIGUSR1, ousr1); -#endif /* SIGUSR1 */ +#endif /* Turn back on signals */ sm_allsignals(false); @@ -3192,7 +3320,7 @@ restart_daemon() #ifdef SIGUSR1 /* For debugging finis() */ (void) sm_signal(SIGUSR1, ousr1); -#endif /* SIGUSR1 */ +#endif errno = save_errno; if (LogLevel > 0) @@ -3285,7 +3413,7 @@ myhostname(hostbuf, size) */ if (strchr(hostbuf, '.') == NULL && - !getcanonname(hostbuf, size, true, NULL)) + getcanonname(hostbuf, size, true, NULL) == HOST_NOTFOUND) { sm_syslog(LocalDaemon ? LOG_WARNING : LOG_CRIT, NOQID, "My unqualified host name (%s) unknown; sleeping for retry", @@ -3293,7 +3421,7 @@ myhostname(hostbuf, size) message("My unqualified host name (%s) unknown; sleeping for retry", hostbuf); (void) sleep(60); - if (!getcanonname(hostbuf, size, true, NULL)) + if (getcanonname(hostbuf, size, true, NULL) == HOST_NOTFOUND) { sm_syslog(LocalDaemon ? LOG_WARNING : LOG_ALERT, NOQID, "unable to qualify my own domain name (%s) -- using short name", @@ -3325,7 +3453,7 @@ addrcmp(hp, ha, sa) { #if NETINET6 unsigned char *a; -#endif /* NETINET6 */ +#endif switch (sa->sa.sa_family) { @@ -3334,7 +3462,7 @@ addrcmp(hp, ha, sa) if (hp->h_addrtype == AF_INET) return memcmp(ha, (char *) &sa->sin.sin_addr, INADDRSZ); break; -#endif /* NETINET */ +#endif #if NETINET6 case AF_INET6: @@ -3398,10 +3526,10 @@ getauthinfo(fd, may_be_forged) register struct servent *sp; # if NETINET static unsigned short port4 = 0; -# endif /* NETINET */ +# endif # if NETINET6 static unsigned short port6 = 0; -# endif /* NETINET6 */ +# endif #endif /* ! NO_GETSERVBYNAME */ volatile int s; int i = 0; @@ -3488,10 +3616,7 @@ getauthinfo(fd, may_be_forged) break; } } -#if NETINET6 - freehostent(hp); - hp = NULL; -#endif /* NETINET6 */ + FREEHOSTENT(hp, NULL); } } @@ -3667,7 +3792,7 @@ getauthinfo(fd, may_be_forged) goto noident; } p += 6; - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; if (*p++ != ':') { @@ -3676,7 +3801,7 @@ getauthinfo(fd, may_be_forged) } /* p now points to the OSTYPE field */ - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; ostype = p; p = strchr(p, ':'); @@ -3748,7 +3873,7 @@ getauthinfo(fd, may_be_forged) #if IP_SRCROUTE # ifndef GET_IPOPT_DST # define GET_IPOPT_DST(dst) (dst) -# endif /* ! GET_IPOPT_DST */ +# endif /* ** Extract IP source routing information. ** @@ -3922,17 +4047,17 @@ host_map_lookup(map, name, av, statp) register struct hostent *hp; #if NETINET struct in_addr in_addr; -#endif /* NETINET */ +#endif #if NETINET6 struct in6_addr in6_addr; -#endif /* NETINET6 */ +#endif char *cp, *ans = NULL; register STAB *s; time_t now; #if NAMED_BIND time_t SM_NONVOLATILE retrans = 0; int SM_NONVOLATILE retry = 0; -#endif /* NAMED_BIND */ +#endif char hbuf[MAXNAME + 1]; /* @@ -3970,6 +4095,10 @@ host_map_lookup(map, name, av, statp) s->s_namecanon.nc_herrno); return NULL; } + if (bitset(NCF_SECURE, s->s_namecanon.nc_flags)) + map->map_mflags |= MF_SECURE; + else + map->map_mflags &= ~MF_SECURE; if (bitset(MF_MATCHONLY, map->map_mflags)) cp = map_rewrite(map, name, strlen(name), NULL); else @@ -4021,15 +4150,28 @@ host_map_lookup(map, name, av, statp) s->s_namecanon.nc_exp = now + SM_DEFAULT_TTL; if (*name != '[') { - int ttl; + int ttl, r; (void) sm_strlcpy(hbuf, name, sizeof(hbuf)); - if (getcanonname(hbuf, sizeof(hbuf) - 1, !HasWildcardMX, &ttl)) + + r = getcanonname(hbuf, sizeof(hbuf) - 1, !HasWildcardMX, &ttl); + if (r != HOST_NOTFOUND) { ans = hbuf; if (ttl > 0) s->s_namecanon.nc_exp = now + SM_MIN(ttl, SM_DEFAULT_TTL); + + if (HOST_SECURE == r) + { + s->s_namecanon.nc_flags |= NCF_SECURE; + map->map_mflags |= MF_SECURE; + } + else + { + s->s_namecanon.nc_flags &= ~NCF_SECURE; + map->map_mflags &= ~MF_SECURE; + } } } else @@ -4043,6 +4185,9 @@ host_map_lookup(map, name, av, statp) *cp = '\0'; hp = NULL; + + /* should this be considered secure? */ + map->map_mflags &= ~MF_SECURE; #if NETINET if ((in_addr.s_addr = inet_addr(&name[1])) != INADDR_NONE) hp = sm_gethostbyaddr((char *)&in_addr, @@ -4069,8 +4214,7 @@ host_map_lookup(map, name, av, statp) (void) sm_strlcpy(n, ans, sizeof(n)); ans = n; } - freehostent(hp); - hp = NULL; + FREEHOSTENT(hp, NULL); #endif /* NETINET6 */ } } @@ -4159,7 +4303,7 @@ host_map_init(map, args) for (;;) { - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; if (*p != '-') break; @@ -4210,7 +4354,7 @@ host_map_init(map, args) map->map_retry = atoi(p); break; } - while (*p != '\0' && !(isascii(*p) && isspace(*p))) + while (*p != '\0' && !(SM_ISSPACE(*p))) p++; if (*p != '\0') *p++ = '\0'; @@ -4284,7 +4428,7 @@ anynet_ntop(s6a, dst, dst_len) ** ** Returns: ** 1 if the address was valid -** 0 if the address wasn't parseable +** 0 if the address wasn't parsable ** -1 if error */ @@ -4313,7 +4457,7 @@ anynet_pton(family, src, dst) # if NETLINK # include -# endif /* NETLINK */ +# endif char * anynet_ntoa(sap) @@ -4345,7 +4489,7 @@ anynet_ntoa(sap) # if NETINET case AF_INET: return (char *) inet_ntoa(sap->sin.sin_addr); -# endif /* NETINET */ +# endif # if NETINET6 case AF_INET6: @@ -4400,7 +4544,7 @@ hostnamebyanyaddr(sap) register struct hostent *hp; # if NAMED_BIND int saveretry; -# endif /* NAMED_BIND */ +# endif # if NETINET6 struct in6_addr in6_addr; # endif /* NETINET6 */ @@ -4451,7 +4595,7 @@ hostnamebyanyaddr(sap) # if NAMED_BIND _res.retry = saveretry; -# endif /* NAMED_BIND */ +# endif # if NETINET || NETINET6 if (hp != NULL && hp->h_name[0] != '[' @@ -4460,7 +4604,7 @@ hostnamebyanyaddr(sap) # endif /* NETINET6 */ # if NETINET && inet_addr(hp->h_name) == INADDR_NONE -# endif /* NETINET */ +# endif ) { char *name; @@ -4475,24 +4619,18 @@ hostnamebyanyaddr(sap) (void) sm_strlcpy(n, name, sizeof(n)); name = n; } - freehostent(hp); + FREEHOSTENT(hp, NULL); # endif /* NETINET6 */ return name; } # endif /* NETINET || NETINET6 */ -# if NETINET6 - if (hp != NULL) - { - freehostent(hp); - hp = NULL; - } -# endif /* NETINET6 */ + FREEHOSTENT(hp, NULL); # if NETUNIX if (sap->sa.sa_family == AF_UNIX && sap->sunix.sun_path[0] == '\0') return "localhost"; -# endif /* NETUNIX */ +# endif { static char buf[203]; diff --git a/src/daemon.h b/src/daemon.h index 649b4d5279a7..fa4e681a10b8 100644 --- a/src/daemon.h +++ b/src/daemon.h @@ -43,10 +43,10 @@ struct daemon #if MILTER char *d_inputfilterlist; struct milter *d_inputfilters[MAXFILTERS]; -#endif /* MILTER */ +#endif #if _FFR_SS_PER_DAEMON int d_supersafe; -#endif /* _FFR_SS_PER_DAEMON */ +#endif }; typedef struct daemon DAEMON_T; diff --git a/src/deliver.c b/src/deliver.c index 62d02b168b7f..ff4b21487700 100644 --- a/src/deliver.c +++ b/src/deliver.c @@ -18,15 +18,16 @@ SM_RCSID("@(#)$Id: deliver.c,v 8.1030 2013-11-22 20:51:55 ca Exp $") #if HASSETUSERCONTEXT # include -#endif /* HASSETUSERCONTEXT */ +#endif #if NETINET || NETINET6 # include -#endif /* NETINET || NETINET6 */ +#endif #if STARTTLS || SASL # include "sfsasl.h" -#endif /* STARTTLS || SASL */ +# include "tls.h" +#endif static int deliver __P((ENVELOPE *, ADDRESS *)); static void dup_queue_file __P((ENVELOPE *, ENVELOPE *, int)); @@ -38,12 +39,20 @@ static int coloncmp __P((const char *, const char *)); #if STARTTLS # include +# if DANE +static int starttls __P((MAILER *, MCI *, ENVELOPE *, dane_vrfy_ctx_P)); +# else static int starttls __P((MAILER *, MCI *, ENVELOPE *)); +# endif static int endtlsclt __P((MCI *)); #endif /* STARTTLS */ -# if STARTTLS || SASL +#if STARTTLS || SASL static bool iscltflgset __P((ENVELOPE *, int)); -# endif /* STARTTLS || SASL */ +#endif + +#if _FFR_OCC +# include +#endif /* ** SENDALL -- actually send all the messages. @@ -529,9 +538,9 @@ sendall(e, mode) #if !HASFLOCK msync = false; -#else /* !HASFLOCK */ +#else msync = mode == SM_FORK; -#endif /* !HASFLOCK */ +#endif for (ee = splitenv; ee != NULL; ee = ee->e_sibling) queueup(ee, WILL_BE_QUEUED(mode), msync); @@ -573,7 +582,7 @@ sendall(e, mode) case SM_DEFER: #if HASFLOCK queueonly: -#endif /* HASFLOCK */ +#endif if (e->e_nrcpts > 0) e->e_flags |= EF_INQUEUE; (void) dropenvelope(e, splitenv != NULL, true); @@ -672,7 +681,7 @@ sendall(e, mode) #if USE_DOUBLE_FORK /* catch intermediate zombie */ (void) waitfor(pid); -#endif /* USE_DOUBLE_FORK */ +#endif return; } @@ -719,9 +728,9 @@ sendall(e, mode) syserr("deliver: fork 2"); #if HASFLOCK e->e_flags |= EF_INQUEUE; -#else /* HASFLOCK */ +#else e->e_id = NULL; -#endif /* HASFLOCK */ +#endif finis(true, true, ExitStat); } @@ -928,7 +937,7 @@ sendenvelope(e, mode) #if XDEBUG checkfd012("end of sendenvelope"); -#endif /* XDEBUG */ +#endif } #if REQUIRES_DIR_FSYNC @@ -1073,7 +1082,7 @@ dup_queue_file(e, ee, type) #ifndef FORK # define FORK fork -#endif /* ! FORK */ +#endif #define DOFORK(fORKfN) \ {\ @@ -1231,8 +1240,7 @@ should_try_fbsh(e, tried_fallbacksmarthost, hostbuf, hbsz, status) ** user on the head of the list. It is clever about mailers ** that don't handle multiple users. It is NOT guaranteed ** that it will deliver to all these addresses however -- so -** deliver should be called once for each address on the -** list. +** deliver should be called once for each address on the list. ** Deliver tries to be as opportunistic as possible about piggybacking ** messages. Some definitions to make understanding easier follow below. ** Piggybacking occurs when an existing connection to a mail host can @@ -1299,7 +1307,7 @@ deliver(e, firstto) ADDRESS *volatile ctladdr; #if HASSETUSERCONTEXT ADDRESS *volatile contextaddr = NULL; -#endif /* HASSETUSERCONTEXT */ +#endif register MCI *volatile mci; register ADDRESS *SM_NONVOLATILE to = firstto; volatile bool clever = false; /* running user smtp to this mailer */ @@ -1315,13 +1323,43 @@ deliver(e, firstto) SM_NONVOLATILE time_t enough = 0; #if NETUNIX char *SM_NONVOLATILE mux_path = NULL; /* path to UNIX domain socket */ -#endif /* NETUNIX */ +#endif time_t xstart; bool suidwarn; bool anyok; /* at least one address was OK */ SM_NONVOLATILE bool goodmxfound = false; /* at least one MX was OK */ bool ovr; bool quarantine; +#if STARTTLS + /* 0: try TLS, 1: try without TLS again, >1: don't try again */ + int tlsstate; +# if DANE + dane_vrfy_ctx_T dane_vrfy_ctx; + STAB *ste; +# endif +#endif +#if STARTTLS || SASL + int dotpos; + +# define RM_TRAIL_DOT(name) \ + do { \ + dotpos = strlen(name) - 1; \ + if (dotpos >= 0) \ + { \ + if (name[dotpos] == '.') \ + name[dotpos] = '\0'; \ + else \ + dotpos = -1; \ + } \ + } while (0) + +# define FIX_TRAIL_DOT(name) \ + do { \ + if (dotpos >= 0) \ + name[dotpos] = '.'; \ + } while (0) + +#endif int strsize; int rcptcount; int ret; @@ -1349,6 +1387,13 @@ deliver(e, firstto) e->e_statmsg = NULL; SmtpError[0] = '\0'; xstart = curtime(); +#if STARTTLS + tlsstate = 0; +# if DANE + memset(&dane_vrfy_ctx, '\0', sizeof(dane_vrfy_ctx)); + ste = NULL; +# endif +#endif if (tTd(10, 1)) sm_dprintf("\n--deliver, id=%s, mailer=%s, host=`%s', first user=`%s'\n", @@ -1495,7 +1540,8 @@ deliver(e, firstto) ctladdr = NULL; if (firstto->q_signature == NULL) firstto->q_signature = hostsignature(firstto->q_mailer, - firstto->q_host); + firstto->q_host, + firstto->q_flags & QSECURE); firstsig = firstto->q_signature; for (; to != NULL; to = to->q_next) @@ -1519,7 +1565,8 @@ deliver(e, firstto) if (to->q_signature == NULL) /* for safety */ to->q_signature = hostsignature(to->q_mailer, - to->q_host); + to->q_host, + to->q_flags & QSECURE); /* ** This is for coincidental and tailcoat piggybacking messages @@ -1558,11 +1605,11 @@ deliver(e, firstto) /* compute effective uid/gid when sending */ if (bitnset(M_RUNASRCPT, to->q_mailer->m_flags)) -# if HASSETUSERCONTEXT +#if HASSETUSERCONTEXT contextaddr = ctladdr = getctladdr(to); -# else /* HASSETUSERCONTEXT */ +#else ctladdr = getctladdr(to); -# endif /* HASSETUSERCONTEXT */ +#endif if (tTd(10, 2)) { @@ -1816,7 +1863,7 @@ deliver(e, firstto) strsize = TOBUFSIZE; if (strsize > tobufsize) { - SM_FREE_CLR(tobuf); + SM_FREE(tobuf); tobuf = sm_pmalloc_x(strsize); tobufsize = strsize; } @@ -1863,7 +1910,7 @@ deliver(e, firstto) #if NAMED_BIND if (ConfigLevel < 2) _res.options &= ~(RES_DEFNAMES | RES_DNSRCH); /* XXX */ -#endif /* NAMED_BIND */ +#endif if (tTd(11, 1)) { @@ -1965,17 +2012,18 @@ deliver(e, firstto) goto give_up; } -# if NETUNIX +#if NETUNIX if (strcmp(pv[0], "FILE") == 0) { curhost = CurHostName = "localhost"; mux_path = pv[1]; } else -# endif /* NETUNIX */ +#endif /* NETUNIX */ { CurHostName = pv[1]; - curhost = hostsignature(m, pv[1]); + /* XXX ??? */ + curhost = hostsignature(m, pv[1], firstto->q_flags & QSECURE); } if (curhost == NULL || curhost[0] == '\0') @@ -1992,24 +2040,24 @@ deliver(e, firstto) goto give_up; } if (pv[2] != NULL -# if NETUNIX +#if NETUNIX && mux_path == NULL -# endif /* NETUNIX */ +#endif ) { port = htons((unsigned short) atoi(pv[2])); if (port == 0) { -# ifdef NO_GETSERVBYNAME +#ifdef NO_GETSERVBYNAME syserr("Invalid port number: %s", pv[2]); -# else /* NO_GETSERVBYNAME */ +#else /* NO_GETSERVBYNAME */ struct servent *sp = getservbyname(pv[2], "tcp"); if (sp == NULL) syserr("Service %s unknown", pv[2]); else port = sp->s_port; -# endif /* NO_GETSERVBYNAME */ +#endif /* NO_GETSERVBYNAME */ } } @@ -2023,8 +2071,13 @@ deliver(e, firstto) char *endp; static char hostbuf[MAXNAME + 1]; bool tried_fallbacksmarthost = false; +#if DANE + unsigned long tlsa_flags; -# if NETINET6 + ste = NULL; + tlsa_flags = 0; +#endif +#if NETINET6 if (*mxhosts[hostnum] == '[') { endp = strchr(mxhosts[hostnum] + 1, ']'); @@ -2033,9 +2086,9 @@ deliver(e, firstto) } else endp = strpbrk(mxhosts[hostnum], ":,"); -# else /* NETINET6 */ +#else /* NETINET6 */ endp = strpbrk(mxhosts[hostnum], ":,"); -# endif /* NETINET6 */ +#endif /* NETINET6 */ if (endp != NULL) { sep = *endp; @@ -2073,6 +2126,9 @@ deliver(e, firstto) hostnum++; if (endp != NULL) *endp = sep; +#if STARTTLS + tlsstate = 0; +#endif one_last_try: /* see if we already know that this host is fried */ @@ -2100,6 +2156,23 @@ deliver(e, firstto) break; } mci->mci_mailer = m; +#if DANE + tlsa_flags = 0; + if (CHK_DANE(Dane)) + (void) GETTLSA(hostbuf, &ste, m->m_port); + + /* XXX: check expiration! */ + if (ste != NULL && TLSA_RR_TEMPFAIL(ste->s_tlsa)) + { + if (tTd(11, 1)) + sm_dprintf("skip: host=%s, TLSA_RR_lookup=%d\n" + , hostbuf + , ste->s_tlsa->dane_tlsa_dnsrc); + + tlsa_flags |= TLSAFLTEMP; + } +#endif /* DANE */ + if (mci->mci_exitstat != EX_OK) { if (mci->mci_exitstat == EX_TEMPFAIL) @@ -2125,7 +2198,7 @@ deliver(e, firstto) sm_setproctitle(true, e, "%s %s: %s", qid_printname(e), hostbuf, "user open"); -# if NETUNIX +#if NETUNIX if (mux_path != NULL) { message("Connecting to %s via %s...", @@ -2133,7 +2206,7 @@ deliver(e, firstto) i = makeconnection_ds((char *) mux_path, mci); } else -# endif /* NETUNIX */ +#endif /* NETUNIX */ { if (port == 0) message("Connecting to %s via %s...", @@ -2142,17 +2215,45 @@ deliver(e, firstto) message("Connecting to %s port %d via %s...", hostbuf, ntohs(port), m->m_name); +#if DANE + tlsa_flags |= (ste != NULL) ? Dane : DANE_NEVER; + dane_vrfy_ctx.dane_vrfy_chk = tlsa_flags; + dane_vrfy_ctx.dane_vrfy_port = m->m_port; + if (tTd(11, 11)) + sm_dprintf("makeconnection: before: chk=%d, mode=%lX\n", dane_vrfy_ctx.dane_vrfy_chk, tlsa_flags); +#endif i = makeconnection(hostbuf, port, mci, e, - enough); + enough +#if DANE + , &tlsa_flags +#endif + ); +#if DANE + if (tTd(11, 11)) + sm_dprintf("makeconnection: after: chk=%d, mode=%lX\n", dane_vrfy_ctx.dane_vrfy_chk, tlsa_flags); + if (dane_vrfy_ctx.dane_vrfy_chk != DANE_ALWAYS) + dane_vrfy_ctx.dane_vrfy_chk = DANEMODE(tlsa_flags); + if (EX_TEMPFAIL == i && + ((tlsa_flags & (TLSAFLTEMP|DANE_SECURE)) == + (TLSAFLTEMP|DANE_SECURE))) + { + (void) sm_strlcpy(SmtpError, + " for TLSA RR", + sizeof(SmtpError)); +# if NAMED_BIND + SM_SET_H_ERRNO(TRY_AGAIN); +# endif + } +#endif } mci->mci_errno = errno; mci->mci_lastuse = curtime(); mci->mci_deliveries = 0; mci->mci_exitstat = i; mci_clr_extensions(mci); -# if NAMED_BIND +#if NAMED_BIND mci->mci_herrno = h_errno; -# endif /* NAMED_BIND */ +#endif /* ** Have we tried long enough to get a connection? @@ -2163,11 +2264,11 @@ deliver(e, firstto) if (enough > 0 && mci->mci_lastuse >= enough) { int h; -# if NAMED_BIND +#if NAMED_BIND extern int NumFallbackMXHosts; -# else /* NAMED_BIND */ +#else const int NumFallbackMXHosts = 0; -# endif /* NAMED_BIND */ +#endif if (hostnum < nummxhosts && LogLevel > 9) sm_syslog(LOG_INFO, e->e_id, @@ -2267,7 +2368,7 @@ deliver(e, firstto) #if XDEBUG checkfd012("before creating mail pipe"); -#endif /* XDEBUG */ +#endif /* create a pipe to shove the mail through */ if (pipe(mpvect) < 0) @@ -2333,7 +2434,7 @@ deliver(e, firstto) #if XDEBUG checkfdopen(rpvect[0], "rpvect[0]"); checkfdopen(rpvect[1], "rpvect[1]"); -#endif /* XDEBUG */ +#endif /* ** Actually fork the mailer process. @@ -2399,14 +2500,14 @@ deliver(e, firstto) (void) sm_signal(SIGHUP, SIG_IGN); (void) sm_signal(SIGINT, SIG_IGN); (void) sm_signal(SIGTERM, SIG_DFL); -# ifdef SIGUSR1 +#ifdef SIGUSR1 (void) sm_signal(SIGUSR1, sm_signal_noop); -# endif /* SIGUSR1 */ +#endif if (m != FileMailer || stat(tochain->q_user, &stb) < 0) stb.st_mode = 0; -# if HASSETUSERCONTEXT +#if HASSETUSERCONTEXT /* ** Set user resources. */ @@ -2421,15 +2522,15 @@ deliver(e, firstto) else pwd = sm_getpwnam(contextaddr->q_user); sucflags = LOGIN_SETRESOURCES|LOGIN_SETPRIORITY; -#ifdef LOGIN_SETCPUMASK +# ifdef LOGIN_SETCPUMASK sucflags |= LOGIN_SETCPUMASK; -#endif /* LOGIN_SETCPUMASK */ -#ifdef LOGIN_SETLOGINCLASS +# endif +# ifdef LOGIN_SETLOGINCLASS sucflags |= LOGIN_SETLOGINCLASS; -#endif /* LOGIN_SETLOGINCLASS */ -#ifdef LOGIN_SETMAC +# endif +# ifdef LOGIN_SETMAC sucflags |= LOGIN_SETMAC; -#endif /* LOGIN_SETMAC */ +# endif if (pwd != NULL && setusercontext(NULL, pwd, pwd->pw_uid, sucflags) == -1 && @@ -2439,7 +2540,7 @@ deliver(e, firstto) exit(EX_TEMPFAIL); } } -# endif /* HASSETUSERCONTEXT */ +#endif /* HASSETUSERCONTEXT */ #if HASNICE /* tweak niceness */ @@ -2579,19 +2680,19 @@ deliver(e, firstto) if (RealUid != 0 && RealUid != getuid()) { -# if MAILER_SETUID_METHOD == USE_SETEUID -# if HASSETREUID +#if MAILER_SETUID_METHOD == USE_SETEUID +# if HASSETREUID if (setreuid(RealUid, geteuid()) < 0) { syserr("openmailer: setreuid(%d, %d) failed", (int) RealUid, (int) geteuid()); exit(EX_OSERR); } -# endif /* HASSETREUID */ -# endif /* MAILER_SETUID_METHOD == USE_SETEUID */ -# if MAILER_SETUID_METHOD == USE_SETREUID +# endif /* HASSETREUID */ +#endif /* MAILER_SETUID_METHOD == USE_SETEUID */ +#if MAILER_SETUID_METHOD == USE_SETREUID new_ruid = RealUid; -# endif /* MAILER_SETUID_METHOD == USE_SETREUID */ +#endif } } else if (bitset(S_ISUID, stb.st_mode)) @@ -2603,7 +2704,7 @@ deliver(e, firstto) else new_ruid = DefUid; -# if _FFR_USE_SETLOGIN +#if _FFR_USE_SETLOGIN /* run disconnected from terminal and set login name */ if (setsid() >= 0 && ctladdr != NULL && ctladdr->q_uid != 0 && @@ -2616,7 +2717,7 @@ deliver(e, firstto) (void) setlogin(pwd->pw_name); endpwent(); } -# endif /* _FFR_USE_SETLOGIN */ +#endif /* _FFR_USE_SETLOGIN */ if (new_euid != NO_UID) { @@ -2629,30 +2730,30 @@ deliver(e, firstto) } vendor_set_uid(new_euid); -# if MAILER_SETUID_METHOD == USE_SETEUID +#if MAILER_SETUID_METHOD == USE_SETEUID if (seteuid(new_euid) < 0 && suidwarn) { syserr("openmailer: seteuid(%ld) failed", (long) new_euid); exit(EX_TEMPFAIL); } -# endif /* MAILER_SETUID_METHOD == USE_SETEUID */ -# if MAILER_SETUID_METHOD == USE_SETREUID +#endif /* MAILER_SETUID_METHOD == USE_SETEUID */ +#if MAILER_SETUID_METHOD == USE_SETREUID if (setreuid(new_ruid, new_euid) < 0 && suidwarn) { syserr("openmailer: setreuid(%ld, %ld) failed", (long) new_ruid, (long) new_euid); exit(EX_TEMPFAIL); } -# endif /* MAILER_SETUID_METHOD == USE_SETREUID */ -# if MAILER_SETUID_METHOD == USE_SETUID +#endif /* MAILER_SETUID_METHOD == USE_SETREUID */ +#if MAILER_SETUID_METHOD == USE_SETUID if (new_euid != geteuid() && setuid(new_euid) < 0 && suidwarn) { syserr("openmailer: setuid(%ld) failed", (long) new_euid); exit(EX_TEMPFAIL); } -# endif /* MAILER_SETUID_METHOD == USE_SETUID */ +#endif /* MAILER_SETUID_METHOD == USE_SETUID */ } else if (new_ruid != NO_UID) { @@ -2742,10 +2843,10 @@ deliver(e, firstto) /* arrange for all the files to be closed */ sm_close_on_exec(STDERR_FILENO + 1, DtableSize); -# if !_FFR_USE_SETLOGIN +#if !_FFR_USE_SETLOGIN /* run disconnected from terminal */ (void) setsid(); -# endif /* !_FFR_USE_SETLOGIN */ +#endif /* try to execute the mailer */ (void) execve(m->m_mailer, (ARGV_T) pv, @@ -2835,35 +2936,27 @@ deliver(e, firstto) mci->mci_flags |= MCIF_7BIT; if (clever && mci->mci_state != MCIS_CLOSED) { -# if STARTTLS || SASL - int dotpos; +#if STARTTLS || SASL char *srvname; extern SOCKADDR CurHostAddr; -# endif /* STARTTLS || SASL */ +#endif /* STARTTLS || SASL */ -# if SASL -# define DONE_AUTH(f) bitset(MCIF_AUTHACT, f) -# endif /* SASL */ -# if STARTTLS -# define DONE_STARTTLS(f) bitset(MCIF_TLSACT, f) -# endif /* STARTTLS */ -# define ONLY_HELO(f) bitset(MCIF_ONLY_EHLO, f) -# define SET_HELO(f) f |= MCIF_ONLY_EHLO -# define CLR_HELO(f) f &= ~MCIF_ONLY_EHLO +#if SASL +# define DONE_AUTH(f) bitset(MCIF_AUTHACT, f) +#endif +#if STARTTLS +# define DONE_STARTTLS(f) bitset(MCIF_TLSACT, f) +#endif +#define ONLY_HELO(f) bitset(MCIF_ONLY_EHLO, f) +#define SET_HELO(f) f |= MCIF_ONLY_EHLO +#define CLR_HELO(f) f &= ~MCIF_ONLY_EHLO -# if STARTTLS || SASL +#if STARTTLS || SASL /* don't use CurHostName, it is changed in many places */ if (mci->mci_host != NULL) { srvname = mci->mci_host; - dotpos = strlen(srvname) - 1; - if (dotpos >= 0) - { - if (srvname[dotpos] == '.') - srvname[dotpos] = '\0'; - else - dotpos = -1; - } + RM_TRAIL_DOT(srvname); } else if (mci->mci_mailer != NULL) { @@ -2901,18 +2994,38 @@ deliver(e, firstto) macid("{server_addr}"), "0"); } +# if DANE + SM_FREE(dane_vrfy_ctx.dane_vrfy_host); + SM_FREE(dane_vrfy_ctx.dane_vrfy_sni); + dane_vrfy_ctx.dane_vrfy_fp[0] = '\0'; + if (ste != NULL && ste->s_tlsa != NULL && + ste->s_tlsa->dane_tlsa_sni != NULL) + dane_vrfy_ctx.dane_vrfy_sni = sm_strdup(ste->s_tlsa->dane_tlsa_sni); + dane_vrfy_ctx.dane_vrfy_host = sm_strdup(srvname); +# endif + /* undo change of srvname (mci->mci_host) */ - if (dotpos >= 0) - srvname[dotpos] = '.'; + FIX_TRAIL_DOT(srvname); reconnect: /* after switching to an encrypted connection */ -# endif /* STARTTLS || SASL */ +# if DANE + if (DONE_STARTTLS(mci->mci_flags)) + { + /* use a "reset" function? */ + SM_FREE(dane_vrfy_ctx.dane_vrfy_host); + SM_FREE(dane_vrfy_ctx.dane_vrfy_sni); + dane_vrfy_ctx.dane_vrfy_fp[0] = '\0'; + dane_vrfy_ctx.dane_vrfy_res = 0; + } +# endif + +#endif /* STARTTLS || SASL */ /* set the current connection information */ e->e_mci = mci; -# if SASL +#if SASL mci->mci_saslcap = NULL; -# endif /* SASL */ +#endif smtpinit(m, mci, e, ONLY_HELO(mci->mci_flags)); CLR_HELO(mci->mci_flags); @@ -2938,14 +3051,15 @@ deliver(e, firstto) e->e_status = "5.4.7"; usrerrenh(e->e_status, "554 Message can't be delivered in time; %ld < %ld", - e->e_deliver_by - (curtime() - e->e_ctime), + e->e_deliver_by - (long) (curtime() - + e->e_ctime), mci->mci_min_by); rcode = EX_UNAVAILABLE; goto give_up; } } -# if STARTTLS +#if STARTTLS /* first TLS then AUTH to provide a security layer */ if (mci->mci_state != MCIS_CLOSED && !DONE_STARTTLS(mci->mci_flags)) @@ -2960,6 +3074,8 @@ deliver(e, firstto) usetls = bitset(MCIF_TLS, mci->mci_flags); if (usetls) usetls = !iscltflgset(e, D_NOTLS); + if (usetls) + usetls = tlsstate == 0; host = macvalue(macid("{server_name}"), e); if (usetls) @@ -2980,7 +3096,11 @@ deliver(e, firstto) if (usetls) { - if ((rcode = starttls(m, mci, e)) == EX_OK) + if ((rcode = starttls(m, mci, e +# if DANE + , &dane_vrfy_ctx +# endif + )) == EX_OK) { /* start again without STARTTLS */ mci->mci_flags |= MCIF_TLSACT; @@ -3025,8 +3145,32 @@ deliver(e, firstto) } } else + { + p = tlsstate == 0 ? "NONE": "CLEAR"; +# if DANE + /* + ** TLSA found but STARTTLS not offered? + ** What is the best way to "fail"? + ** XXX: check expiration! + */ + + if (!bitset(MCIF_TLS, mci->mci_flags) && + ste != NULL && + ste->s_tlsa != NULL && + ste->s_tlsa->dane_tlsa_n > 0) + { + if (LogLevel > 8) + sm_syslog(LOG_NOTICE, NOQID, + "STARTTLS=client, relay=%.100s, warning=DANE configured in DNS but no STARTTLS available", + host); + /* XXX include TLSA RR from DNS? */ + + p = "DANE_FAIL"; + } +# endif /* DANE */ macdefine(&e->e_macro, A_PERM, - macid("{verify}"), "NONE"); + macid("{verify}"), p); + } olderrors = Errors; QuickAbort = false; SuprErrs = true; @@ -3077,6 +3221,20 @@ deliver(e, firstto) } mci->mci_flags &= ~MCIF_TLSACT; (void) endmailer(mci, e, pv); + + if ((TLSFallbacktoClear || + SM_TLSI_IS(&(mci->mci_tlsi), + TLSI_FL_FB2CLR)) && + !SM_TLSI_IS(&(mci->mci_tlsi), + TLSI_FL_NOFB2CLR) +# if DANE + && dane_vrfy_ctx.dane_vrfy_chk != + DANE_SECURE +# endif + ) + { + ++tlsstate; + } } else { @@ -3119,9 +3277,31 @@ deliver(e, firstto) mci_clr_extensions(mci); goto reconnect; } + if (tlsstate == 1) + { + if (tTd(11, 1)) + { + sm_syslog(LOG_DEBUG, NOQID, + "STARTTLS=client, relay=%.100s, tlsstate=%d, status=trying_again", + mci->mci_host, tlsstate); + mci_dump(NULL, mci, true); + } + ++tlsstate; + + /* + ** Fake the status so a new connection is + ** tried, otherwise the TLS error will + ** "persist" during this delivery attempt. + */ + + mci->mci_errno = 0; + rcode = EX_OK; + mci_setstat(mci, rcode, NULL, NULL); + goto one_last_try; +} } -# endif /* STARTTLS */ -# if SASL +#endif /* STARTTLS */ +#if SASL /* if other server supports authentication let's authenticate */ if (mci->mci_state != MCIS_CLOSED && mci->mci_saslcap != NULL && @@ -3137,9 +3317,9 @@ deliver(e, firstto) result = sasl_getprop(mci->mci_conn, SASL_SSF, # if SASL >= 20000 (const void **) &ssf); -# else /* SASL >= 20000 */ +# else (void **) &ssf); -# endif /* SASL >= 20000 */ +# endif /* XXX authid? */ if (LogLevel > 9) @@ -3203,10 +3383,9 @@ deliver(e, firstto) sizeof(SmtpError)); } } -# endif /* SASL */ +#endif /* SASL */ } - do_transfer: /* clear out per-message flags from connection structure */ mci->mci_flags &= ~(MCIF_CVT7TO8|MCIF_CVT8TO7); @@ -3344,18 +3523,18 @@ deliver(e, firstto) if (rcode == EX_OK) { register int i; -# if PIPELINING +#if PIPELINING ADDRESS *volatile pchain; -# endif /* PIPELINING */ +#endif /* send the recipient list */ tobuf[0] = '\0'; mci->mci_retryrcpt = false; mci->mci_tolist = tobuf; -# if PIPELINING +#if PIPELINING pchain = NULL; mci->mci_nextaddr = NULL; -# endif /* PIPELINING */ +#endif for (to = tochain; to != NULL; to = to->q_tchain) { @@ -3365,7 +3544,7 @@ deliver(e, firstto) /* mark recipient state as "ok so far" */ to->q_state = QS_OK; e->e_to = to->q_paddr; -# if STARTTLS +#if STARTTLS i = rscheck("tls_rcpt", to->q_user, NULL, e, RSF_RMCOMM|RSF_COUNT, 3, mci->mci_host, e->e_id, NULL, NULL); @@ -3381,10 +3560,10 @@ deliver(e, firstto) } continue; } -# endif /* STARTTLS */ +#endif /* STARTTLS */ i = smtprcpt(to, m, mci, e, ctladdr, xstart); -# if PIPELINING +#if PIPELINING if (i == EX_OK && bitset(MCIF_PIPELINED, mci->mci_flags)) { @@ -3404,7 +3583,7 @@ deliver(e, firstto) pchain = pchain->q_pchain; } } -# endif /* PIPELINING */ +#endif /* PIPELINING */ if (i != EX_OK) { markfailure(e, to, mci, i, false); @@ -3417,10 +3596,10 @@ deliver(e, firstto) /* No recipients in list and no missing responses? */ if (tobuf[0] == '\0' -# if PIPELINING +#if PIPELINING && bitset(MCIF_PIPELINED, mci->mci_flags) && mci->mci_nextaddr == NULL -# endif /* PIPELINING */ +#endif ) { rcode = EX_OK; @@ -3443,7 +3622,7 @@ deliver(e, firstto) #if NAMED_BIND if (ConfigLevel < 2) _res.options |= RES_DEFNAMES | RES_DNSRCH; /* XXX */ -#endif /* NAMED_BIND */ +#endif if (tTd(62, 1)) checkfds("after delivery"); @@ -3621,6 +3800,23 @@ deliver(e, firstto) markstats(e, tochain, STATS_NORMAL); mci_store_persistent(mci); +#if _FFR_OCC + /* + ** HACK: this is NOT the right place to "close" a connection! + ** use smtpquit? + ** add a flag to mci to indicate that rate/conc. was increased? + */ + + if (clever) + { + extern SOCKADDR CurHostAddr; + + /* check family... {} */ + /* r = anynet_pton(AF_INET, p, dst); */ + occ_close(e, mci, host, &CurHostAddr); + } +#endif /* _FFR_OCC */ + /* Some recipients were tempfailed, try them on the next host */ if (mci != NULL && mci->mci_retryrcpt && nummxhosts > hostnum) { @@ -3722,13 +3918,10 @@ markfailure(e, q, mci, rcode, ovr) if (mci->mci_rstatus != NULL) rstatus = sm_rpool_strdup_x(e->e_rpool, mci->mci_rstatus); - else - rstatus = NULL; } else if (e->e_status != NULL) { status = e->e_status; - rstatus = NULL; } else { @@ -3879,7 +4072,7 @@ endmailer(mci, e, pv) #if STARTTLS /* shutdown TLS */ (void) endtlsclt(mci); -#endif /* STARTTLS */ +#endif /* now close the input */ if (mci->mci_in != NULL) @@ -4050,22 +4243,22 @@ giveresponse(status, dsn, m, mci, ctladdr, xstart, e, to) { #ifdef ENETDOWN case ENETDOWN: /* Network is down */ -#endif /* ENETDOWN */ +#endif #ifdef ENETUNREACH case ENETUNREACH: /* Network is unreachable */ -#endif /* ENETUNREACH */ +#endif #ifdef ENETRESET case ENETRESET: /* Network dropped connection on reset */ -#endif /* ENETRESET */ +#endif #ifdef ECONNABORTED case ECONNABORTED: /* Software caused connection abort */ -#endif /* ECONNABORTED */ +#endif #ifdef EHOSTDOWN case EHOSTDOWN: /* Host is down */ -#endif /* EHOSTDOWN */ +#endif #ifdef EHOSTUNREACH case EHOSTUNREACH: /* No route to host */ -#endif /* EHOSTUNREACH */ +#endif if (mci != NULL && mci->mci_host != NULL) { (void) sm_strlcpyn(bp, @@ -4078,6 +4271,16 @@ giveresponse(status, dsn, m, mci, ctladdr, xstart, e, to) } (void) sm_strlcpyn(bp, SPACELEFT(buf, bp), 2, ": ", statmsg); +#if DANE + if (errnum == 0 && SmtpError[0] != '\0' && + h_errno == TRY_AGAIN && + mci->mci_exitstat == EX_TEMPFAIL) + { + (void) sm_strlcat(bp, SmtpError, + SPACELEFT(buf, bp)); + bp += strlen(bp); + } +#endif /* DANE */ usestat = true; } statmsg = buf; @@ -4284,14 +4487,8 @@ logdelivery(m, mci, dsn, status, ctladdr, xstart, e, to, rcode) } # if _FFR_LOG_MORE2 -# if STARTTLS - p = macvalue(macid("{verify}"), e); - if (p == NULL || *p == '\0') - p = "NONE"; - (void) sm_snprintf(bp, SPACELEFT(buf, bp), ", tls_verify=%.20s", p); - bp += strlen(bp); -# endif /* STARTTLS */ -# endif /* _FFR_LOG_MORE2 */ + LOG_MORE(buf, bp); +# endif /* pri: changes with each delivery attempt */ (void) sm_snprintf(bp, SPACELEFT(buf, bp), ", pri=%ld", @@ -4339,7 +4536,7 @@ logdelivery(m, mci, dsn, status, ctladdr, xstart, e, to, rcode) bp += strlen(bp); } -#if _FFR_LOG_NTRIES +# if _FFR_LOG_NTRIES /* ntries */ if (e->e_ntries >= 0) { @@ -4347,7 +4544,7 @@ logdelivery(m, mci, dsn, status, ctladdr, xstart, e, to, rcode) ", ntries=%d", e->e_ntries + 1); bp += strlen(bp); } -#endif /* _FFR_LOG_NTRIES */ +# endif /* _FFR_LOG_NTRIES */ # define STATLEN (((SYSLOG_BUFSIZE) - 100) / 4) # if (STATLEN) < 63 @@ -4359,7 +4556,6 @@ logdelivery(m, mci, dsn, status, ctladdr, xstart, e, to, rcode) # define STATLEN 203 # endif /* (STATLEN) > 203 */ -#if _FFR_LOGREPLY /* ** Notes: ** per-rcpt status: to->q_rstatus @@ -4373,6 +4569,9 @@ logdelivery(m, mci, dsn, status, ctladdr, xstart, e, to, rcode) ** Note: this doesn't show the stage at which the error happened. ** can/should we log that? ** XS_* in reply() basically encodes the state. + ** + ** Note: in some case the normal logging might show the same server + ** reply - how to avoid that? */ /* only show errors */ @@ -4394,7 +4593,6 @@ logdelivery(m, mci, dsn, status, ctladdr, xstart, e, to, rcode) shortenstring(e->e_text, STATLEN)); bp += strlen(bp); } -#endif /* stat: max 210 bytes */ if ((bp - buf) > (sizeof(buf) - ((STATLEN) + 20))) @@ -4633,7 +4831,7 @@ putbody(mci, e, separator) char buf[MAXLINE]; #if MIME8TO7 char *boundaries[MAXMIMENESTING + 1]; -#endif /* MIME8TO7 */ +#endif /* ** Output the body of the message @@ -5671,7 +5869,7 @@ mailfile(filename, mailer, ctladdr, sfflags, e) #if !NOFTRUNCATE (void) ftruncate(sm_io_getinfo(f, SM_IO_WHAT_FD, NULL), curoff); -#endif /* !NOFTRUNCATE */ +#endif } /* reset ISUID & ISGID bits for paranoid systems */ @@ -5728,6 +5926,58 @@ mailfiletimeout(ignore) errno = ETIMEDOUT; longjmp(CtxMailfileTimeout, 1); } + +#if DANE + +/* +** GETMPORT -- return the port of a mailer +** +** Parameters: +** m -- the mailer describing this host. +** +** Returns: +** the port of the mailer if defined. +** 0 otherwise +** <0 error +*/ + +static int getmport __P((MAILER *)); + +static int +getmport(m) + MAILER *m; +{ + unsigned long ulval; + char *buf, *ep; + + if (m->m_port > 0) + return m->m_port; + + if (NULL == m->m_argv[0] ||NULL == m->m_argv[1]) + return -1; + buf = m->m_argv[2]; + if (NULL == buf) + return 0; + + errno = 0; + ulval = strtoul(buf, &ep, 0); + if (buf[0] == '\0' || *ep != '\0') + return -1; + if (errno == ERANGE && ulval == ULONG_MAX) + return -1; + if (ulval > USHRT_MAX) + return -1; + m->m_port = (unsigned short) ulval; + if (tTd(17, 30)) + sm_dprintf("getmport: mailer=%s, port=%d\n", m->m_name, + m->m_port); + return m->m_port; +} +# define GETMPORT(m) getmport(m) +#else /* DANE */ +# define GETMPORT(m) 25 +#endif /* DANE */ + /* ** HOSTSIGNATURE -- return the "signature" for a host. ** @@ -5738,6 +5988,7 @@ mailfiletimeout(ignore) ** Parameters: ** m -- the mailer describing this host. ** host -- the host name. +** ad -- DNSSEC: ad ** ** Returns: ** The signature for this host. @@ -5749,9 +6000,10 @@ mailfiletimeout(ignore) #define MAXHOSTSIGNATURE 8192 /* max len of hostsignature */ char * -hostsignature(m, host) +hostsignature(m, host, ad) register MAILER *m; char *host; + bool ad; { register char *p; register STAB *s; @@ -5771,7 +6023,7 @@ hostsignature(m, host) #endif /* NAMED_BIND */ if (tTd(17, 3)) - sm_dprintf("hostsignature(%s)\n", host); + sm_dprintf("hostsignature(%s), ad=%d\n", host, ad); /* ** If local delivery (and not remote), just return a constant. @@ -5839,7 +6091,7 @@ hostsignature(m, host) for (hp = host; hp != NULL; hp = endp) { -#if NETINET6 +# if NETINET6 if (*hp == '[') { endp = strchr(hp + 1, ']'); @@ -5848,9 +6100,9 @@ hostsignature(m, host) } else endp = strpbrk(hp, ":,"); -#else /* NETINET6 */ +# else /* NETINET6 */ endp = strpbrk(hp, ":,"); -#endif /* NETINET6 */ +# endif /* NETINET6 */ if (endp != NULL) { sep = *endp; @@ -5868,8 +6120,10 @@ hostsignature(m, host) auto int rcode; int ttl; - nmx = getmxrr(hp, mxhosts, mxprefs, true, &rcode, true, - &ttl); + GETMPORT(m); + nmx = getmxrr(hp, mxhosts, mxprefs, + DROPLOCALHOST|TRYFALLBACK|(ad ? ISAD :0), + &rcode, &ttl, M_PORT(m)); if (nmx <= 0) { int save_errno; @@ -5881,7 +6135,10 @@ hostsignature(m, host) mci->mci_errno = save_errno; mci->mci_herrno = h_errno; mci->mci_lastuse = now; - if (rcode == EX_NOHOST) + if (nmx == NULLMX) + mci_setstat(mci, rcode, "5.7.27", + "550 Host does not accept mail"); + else if (rcode == EX_NOHOST) mci_setstat(mci, rcode, "5.1.2", "550 Host unknown"); else @@ -6090,7 +6347,7 @@ parse_hostsignature(sig, mxhosts, mailer) return nmx; } -# if STARTTLS +#if STARTTLS static SSL_CTX *clt_ctx = NULL; static bool tls_ok_clt = true; @@ -6139,8 +6396,16 @@ initclttls(tls_ok) if (clt_ctx != NULL) return true; /* already done */ tls_ok_clt = inittls(&clt_ctx, TLS_I_CLT, Clt_SSL_Options, false, - CltCertFile, CltKeyFile, - CACertPath, CACertFile, DHParams); + CltCertFile, CltKeyFile, +# if _FFR_CLIENTCA + (CltCACertPath != NULL) ? CltCACertPath : +# endif + CACertPath, +# if _FFR_CLIENTCA + (CltCACertFile != NULL) ? CltCACertFile : +# endif + CACertFile, + DHParams); return tls_ok_clt; } @@ -6159,29 +6424,35 @@ initclttls(tls_ok) */ static int -starttls(m, mci, e) +starttls(m, mci, e +# if DANE + , dane_vrfy_ctx +# endif + ) MAILER *m; MCI *mci; ENVELOPE *e; +# if DANE + dane_vrfy_ctx_P dane_vrfy_ctx; +# endif { int smtpresult; int result = 0; int rfd, wfd; SSL *clt_ssl = NULL; time_t tlsstart; + extern int TLSsslidx; if (clt_ctx == NULL && !initclttls(true)) return EX_TEMPFAIL; -# if USE_OPENSSL_ENGINE - if (!SSLEngineInitialized && !SSL_set_engine(NULL)) + if (!TLS_set_engine(SSLEngine, false)) { sm_syslog(LOG_ERR, NOQID, - "STARTTLS=client, SSL_set_engine=failed"); + "STARTTLS=client, engine=%s, TLS_set_engine=failed", + SSLEngine); return EX_TEMPFAIL; } - SSLEngineInitialized = true; -# endif /* USE_OPENSSL_ENGINE */ smtpmessage("STARTTLS", m, mci); @@ -6213,19 +6484,60 @@ starttls(m, mci, e) { sm_syslog(LOG_ERR, NOQID, "STARTTLS=client, error: SSL_new failed"); - if (LogLevel > 9) - tlslogerr(LOG_WARNING, "client"); + tlslogerr(LOG_WARNING, 9, "client"); } return EX_SOFTWARE; } /* SSL_clear(clt_ssl); ? */ - if (get_tls_se_options(e, clt_ssl, false) != 0) + if (get_tls_se_options(e, clt_ssl, &mci->mci_tlsi, false) != 0) { sm_syslog(LOG_ERR, NOQID, "STARTTLS=client, get_tls_se_options=fail"); return EX_SOFTWARE; } + result = SSL_set_ex_data(clt_ssl, TLSsslidx, &mci->mci_tlsi); + if (0 == result) + { + if (LogLevel > 5) + { + sm_syslog(LOG_ERR, NOQID, + "STARTTLS=client, error: SSL_set_ex_data failed=%d, idx=%d", + result, TLSsslidx); + tlslogerr(LOG_WARNING, 9, "client"); + } + return EX_SOFTWARE; + } +# if DANE + if (SM_TLSI_IS(&(mci->mci_tlsi), TLSI_FL_NODANE)) + dane_vrfy_ctx->dane_vrfy_chk = DANE_NEVER; + else + { + int r; + +# define SM_IS_EMPTY(s) (NULL == (s) || '\0' == *(s)) + + /* set SNI only if there is a TLSA RR */ + if (dane_get_tlsa(dane_vrfy_ctx) != NULL && + !(SM_IS_EMPTY(dane_vrfy_ctx->dane_vrfy_host) && + SM_IS_EMPTY(dane_vrfy_ctx->dane_vrfy_sni)) && + (r = SSL_set_tlsext_host_name(clt_ssl, + (!SM_IS_EMPTY(dane_vrfy_ctx->dane_vrfy_sni) + ? dane_vrfy_ctx->dane_vrfy_sni + : dane_vrfy_ctx->dane_vrfy_host))) <= 0) + { + if (LogLevel > 5) + { + sm_syslog(LOG_ERR, NOQID, + "STARTTLS=client, host=%s, SSL_set_tlsext_host_name=%d", + dane_vrfy_ctx->dane_vrfy_host, r); + } + tlslogerr(LOG_ERR, 5, "client"); + /* return EX_SOFTWARE; */ + } + } + memcpy(&mci->mci_tlsi.tlsi_dvc, dane_vrfy_ctx, sizeof(*dane_vrfy_ctx)); +# endif /* DANE */ rfd = sm_io_getinfo(mci->mci_in, SM_IO_WHAT_FD, NULL); wfd = sm_io_getinfo(mci->mci_out, SM_IO_WHAT_FD, NULL); @@ -6239,8 +6551,7 @@ starttls(m, mci, e) sm_syslog(LOG_ERR, NOQID, "STARTTLS=client, error: SSL_set_xfd failed=%d", result); - if (LogLevel > 9) - tlslogerr(LOG_WARNING, "client"); + tlslogerr(LOG_WARNING, 9, "client"); } return EX_SOFTWARE; } @@ -6270,12 +6581,10 @@ starttls(m, mci, e) "STARTTLS=client, error: connect failed=%d, reason=%s, SSL_error=%d, errno=%d, retry=%d", result, sr == NULL ? "unknown" : sr, ssl_err, save_errno, i); - if (LogLevel > 9) - tlslogerr(LOG_WARNING, "client"); + tlslogerr(LOG_WARNING, 9, "client"); } - SSL_free(clt_ssl); - clt_ssl = NULL; + SM_SSL_FREE(clt_ssl); return EX_SOFTWARE; } mci->mci_ssl = clt_ssl; @@ -6287,8 +6596,7 @@ starttls(m, mci, e) return EX_OK; /* failure */ - SSL_free(clt_ssl); - clt_ssl = NULL; + SM_SSL_FREE(clt_ssl); return EX_SOFTWARE; } /* @@ -6309,12 +6617,12 @@ endtlsclt(mci) if (!bitset(MCIF_TLSACT, mci->mci_flags)) return EX_OK; - r = endtls(mci->mci_ssl, "client"); + r = endtls(&mci->mci_ssl, "client"); mci->mci_flags &= ~MCIF_TLSACT; return r; } -# endif /* STARTTLS */ -# if STARTTLS || SASL +#endif /* STARTTLS */ +#if STARTTLS || SASL /* ** ISCLTFLGSET -- check whether client flag is set. ** @@ -6344,4 +6652,4 @@ iscltflgset(e, flag) } return false; } -# endif /* STARTTLS || SASL */ +#endif /* STARTTLS || SASL */ diff --git a/src/domain.c b/src/domain.c index 4d1b92d05c88..c45abf1acc09 100644 --- a/src/domain.c +++ b/src/domain.c @@ -13,54 +13,380 @@ #include #include "map.h" +#if _FFR_EAI +#include +#endif #if NAMED_BIND SM_RCSID("@(#)$Id: domain.c,v 8.205 2013-11-22 20:51:55 ca Exp $ (with name server)") -#else /* NAMED_BIND */ +#else SM_RCSID("@(#)$Id: domain.c,v 8.205 2013-11-22 20:51:55 ca Exp $ (without name server)") -#endif /* NAMED_BIND */ +#endif #if NAMED_BIND # include +# include +# if DANE +# include +# ifndef SM_NEG_TTL +# define SM_NEG_TTL 60 /* "negative" TTL */ +# endif +# endif # ifndef MXHOSTBUFSIZE # define MXHOSTBUFSIZE (128 * MAXMXHOSTS) -# endif /* ! MXHOSTBUFSIZE */ +# endif static char MXHostBuf[MXHOSTBUFSIZE]; -#if (MXHOSTBUFSIZE < 2) || (MXHOSTBUFSIZE >= INT_MAX/2) +# if (MXHOSTBUFSIZE < 2) || (MXHOSTBUFSIZE >= INT_MAX/2) ERROR: _MXHOSTBUFSIZE is out of range -#endif /* (MXHOSTBUFSIZE < 2) || (MXHOSTBUFSIZE >= INT_MAX/2) */ +# endif # ifndef MAXDNSRCH # define MAXDNSRCH 6 /* number of possible domains to search */ -# endif /* ! MAXDNSRCH */ +# endif # ifndef RES_DNSRCH_VARIABLE # define RES_DNSRCH_VARIABLE _res.dnsrch -# endif /* ! RES_DNSRCH_VARIABLE */ +# endif # ifndef NO_DATA # define NO_DATA NO_ADDRESS -# endif /* ! NO_DATA */ +# endif # ifndef HFIXEDSZ # define HFIXEDSZ 12 /* sizeof(HEADER) */ -# endif /* ! HFIXEDSZ */ +# endif # define MAXCNAMEDEPTH 10 /* maximum depth of CNAME recursion */ # if defined(__RES) && (__RES >= 19940415) # define RES_UNC_T char * -# else /* defined(__RES) && (__RES >= 19940415) */ +# else # define RES_UNC_T unsigned char * -# endif /* defined(__RES) && (__RES >= 19940415) */ +# endif static int mxrand __P((char *)); static int fallbackmxrr __P((int, unsigned short *, char **)); +# if DANE + +/* +** TLSAADD -- add TLSA records to dane_tlsa entry +** +** Parameters: +** name -- key for stab entry (for debugging output) +** dr -- DNS reply +** dane_tlsa -- dane_tlsa entry +** dnsrc -- DNS lookup return code (h_errno) +** n -- current number of TLSA records in dane_tlsa entry +** pttl -- (pointer to) TTL (in/out) +** level -- recursion level (CNAMEs) +** +** Returns: +** new number of TLSA records +*/ + +static int tlsaadd __P((const char *, DNS_REPLY_T *, dane_tlsa_P, int, int, + unsigned int *, int)); + +static int +tlsaadd(name, dr, dane_tlsa, dnsrc, n, pttl, level) + const char *name; + DNS_REPLY_T *dr; + dane_tlsa_P dane_tlsa; + int dnsrc; + int n; + unsigned int *pttl; + int level; +{ + RESOURCE_RECORD_T *rr; + unsigned int ttl; + int nprev; + + if (dnsrc != 0) + { + if (tTd(8, 2)) + sm_dprintf("tlsaadd(%s), prev=%d, dnsrc=%d\n", + name, dane_tlsa->dane_tlsa_dnsrc, dnsrc); + + /* check previous error and keep the "most important" one? */ + dane_tlsa->dane_tlsa_dnsrc = dnsrc; +# if DNSSEC_TEST + if (tTd(8, 110)) + *pttl = tTdlevel(8)-110; /* how to make this an option? */ + else +# else + *pttl = SM_NEG_TTL; +# endif + + return n; + } + if (dr == NULL) + return n; + if (dr->dns_r_h.ad != 1 && Dane == DANE_SECURE) /* not secure? */ + return n; + ttl = *pttl; + + /* first: try to find TLSA records */ + nprev = n; + for (rr = dr->dns_r_head; rr != NULL && n < MAX_TLSA_RR; + rr = rr->rr_next) + { + int tlsa_chk; + + if (rr->rr_type != T_TLSA) + { + if (rr->rr_type != T_CNAME && tTd(8, 8)) + sm_dprintf("tlsaadd(%s), type=%s\n", name, + dns_type_to_string(rr->rr_type)); + continue; + } + tlsa_chk = dane_tlsa_chk(rr->rr_u.rr_data, rr->rr_size, name, + true); + if (!TLSA_IS_VALID(tlsa_chk)) + continue; + + /* + ** To do: the RRs should be sorted (by "complexity") -- + ** when more than one type is supported. + */ + + dane_tlsa->dane_tlsa_rr[n] = rr->rr_u.rr_data; + dane_tlsa->dane_tlsa_len[n] = rr->rr_size; + if (tTd(8, 2)) + { + unsigned char *p; + + p = rr->rr_u.rr_data; + sm_dprintf("tlsaadd(%s), n=%d, %d-%d-%d:%02x\n", name, + n, (int)p[0], (int)p[1], (int)p[2], (int)p[3]); + } + + /* require some minimum TTL? */ + if (ttl > rr->rr_ttl && rr->rr_ttl > 0) + ttl = rr->rr_ttl; + + /* hack: instead of copying the data, just "take it over" */ + rr->rr_u.rr_data = NULL; + ++n; + } + + /* second: check for CNAME records, but only if no TLSA RR was added */ + for (rr = dr->dns_r_head; rr != NULL && n < MAX_TLSA_RR && nprev == n; + rr = rr->rr_next) + { + DNS_REPLY_T *drc; + int err, herr; + + if (rr->rr_type != T_CNAME) + continue; + if (level > 1) + { + if (tTd(8, 2)) + sm_dprintf("tlsaadd(%s), CNAME=%s, level=%d\n", + name, rr->rr_u.rr_txt, level); + continue; + } + + drc = dns_lookup_int(rr->rr_u.rr_txt, C_IN, T_TLSA, 0, 0, + (Dane == DANE_SECURE && + !TLSA_IS_FL(dane_tlsa, TLSAFLNOADMX)) + ? SM_RES_DNSSEC : 0, + RR_RAW, &err, &herr); + + if (tTd(8, 2)) + sm_dprintf("tlsaadd(%s), CNAME=%s, level=%d, dr=%p, ad=%d, err=%d, herr=%d\n", + name, rr->rr_u.rr_txt, level, + (void *)drc, drc != NULL ? drc->dns_r_h.ad : -1, + err, herr); + nprev = n = tlsaadd(name, drc, dane_tlsa, herr, n, pttl, + level + 1); + dns_free_data(drc); + drc = NULL; + } + + *pttl = ttl; + return n; +} + +/* +** GETTLSA -- get TLSA records for named host using DNS +** +** Parameters: +** host -- host +** name -- name for stab entry key (if NULL: host) +** pste -- (pointer to) stab entry (output) +** flags -- TLSAFL* +** mxttl -- TTL of MX (or host) +** port -- port +** +** Returns: +** The number of TLSA records found. +** <0 if there is an internal failure. +** +** Side effects: +** Enters TLSA RRs into stab(). +** If the DNS lookup fails temporarily, an "empty" entry is +** created with that DNS error code. +*/ + +int +gettlsa(host, name, pste, flags, mxttl, port) + char *host; + char *name; + STAB **pste; + unsigned long flags; + unsigned int mxttl; + unsigned int port; +{ + DNS_REPLY_T *dr; + dane_tlsa_P dane_tlsa; + STAB *ste; + time_t now; + unsigned int ttl; + int n_rrs, len, err, herr; + bool isrname; + char nbuf[MAXDNAME]; + char key[MAXDNAME]; + + SM_REQUIRE(host != NULL); + if (pste != NULL) + *pste = NULL; + if ('\0' == *host) + return 0; + + isrname = NULL == name; + if (isrname) + name = host; + now = 0; + n_rrs = 0; + dr = NULL; + dane_tlsa = NULL; + len = strlen(name); + if (len > 1 && name[len - 1] == '.') + { + len--; + name[len] = '\0'; + } + else + len = -1; + if (0 == port || tTd(66, 10)) + port = 25; + (void) sm_snprintf(key, sizeof(key), "_%u..%s", port, name); + ste = stab(key, ST_TLSA_RR, ST_FIND); + if (tTd(8, 2)) + sm_dprintf("gettlsa(%s, %s, ste=%p, pste=%p, flags=%lX, port=%d)\n", + host, isrname ? "" : name, (void *)ste, (void *)pste, + flags, port); + + if (ste != NULL) + { + dane_tlsa = ste->s_tlsa; + if ((TLSAFLADMX & flags) != 0) + TLSA_CLR_FL(ste->s_tlsa, TLSAFLNOADMX); + } + + /* Do not reload TLSA RRs if the MX RRs were not securely retrieved. */ + if (pste != NULL + && dane_tlsa != NULL && TLSA_IS_FL(dane_tlsa, TLSAFLNOADMX) + && DANE_SECURE == Dane) + goto end; + + if (ste != NULL) + { + SM_ASSERT(dane_tlsa != NULL); + now = curtime(); + if (dane_tlsa->dane_tlsa_exp <= now + && 0 == (TLSAFLNOEXP & flags)) + dane_tlsa_clr(dane_tlsa); + else + { + n_rrs = dane_tlsa->dane_tlsa_n; + goto end; + } + } + + if (dane_tlsa == NULL) + { + dane_tlsa = (dane_tlsa_P) sm_malloc(sizeof(*dane_tlsa)); + if (dane_tlsa == NULL) + { + n_rrs = -ENOMEM; + goto end; + } + memset(dane_tlsa, '\0', sizeof(*dane_tlsa)); + } + + /* There are flags to store -- just set those, do nothing else. */ + if (TLSA_STORE_FL(flags)) + { + dane_tlsa->dane_tlsa_flags = flags; + ttl = mxttl > 0 ? mxttl: SM_DEFAULT_TTL; + goto done; + } + + (void) sm_snprintf(nbuf, sizeof(nbuf), "_%u._tcp.%s", port, host); + dr = dns_lookup_int(nbuf, C_IN, T_TLSA, 0, 0, + TLSA_IS_FL(dane_tlsa, TLSAFLNOADMX) ? 0 : SM_RES_DNSSEC, + RR_RAW, &err, &herr); + if (tTd(8, 2)) + sm_dprintf("gettlsa(%s), dr=%p, ad=%d, err=%d, herr=%d\n", host, + (void *)dr, dr != NULL ? dr->dns_r_h.ad : -1, err, herr); + ttl = UINT_MAX; + n_rrs = tlsaadd(key, dr, dane_tlsa, herr, n_rrs, &ttl, 0); + + /* no valid entries found? */ + if (n_rrs == 0 && !TLSA_RR_TEMPFAIL(dane_tlsa)) + { + if (tTd(8, 2)) + sm_dprintf("gettlsa(%s), n_rrs=%d, herr=%d, status=NOT_ADDED\n", + host, n_rrs, dane_tlsa->dane_tlsa_dnsrc); + goto cleanup; + } + + done: + dane_tlsa->dane_tlsa_n = n_rrs; + if (!isrname) + { + SM_FREE(dane_tlsa->dane_tlsa_sni); + dane_tlsa->dane_tlsa_sni = sm_strdup(host); + } + if (NULL == ste) + { + ste = stab(key, ST_TLSA_RR, ST_ENTER); + if (NULL == ste) + goto error; + } + ste->s_tlsa = dane_tlsa; + if (now == 0) + now = curtime(); + dane_tlsa->dane_tlsa_exp = now + SM_MIN(ttl, SM_DEFAULT_TTL); + dns_free_data(dr); + dr = NULL; + goto end; + + error: + if (tTd(8, 2)) + sm_dprintf("gettlsa(%s, %s), status=error\n", host, key); + n_rrs = -1; + cleanup: + if (NULL == ste) + dane_tlsa_free(dane_tlsa); + dns_free_data(dr); + dr = NULL; + + end: + if (pste != NULL && ste != NULL) + *pste = ste; + if (len > 0) + host[len] = '.'; + return n_rrs; +} +# endif /* DANE */ + /* ** GETFALLBACKMXRR -- get MX resource records for fallback MX host. ** @@ -99,24 +425,39 @@ getfallbackmxrr(host) #endif /* 0 */ if (NumFallbackMXHosts > 0 && renew > curtime()) return NumFallbackMXHosts; + + /* for DANE we need to invoke getmxrr() to get the TLSA RRs. */ +#if !DANE if (host[0] == '[') { fbhosts[0] = host; NumFallbackMXHosts = 1; } else +#endif { /* free old data */ for (i = 0; i < NumFallbackMXHosts; i++) sm_free(fbhosts[i]); - /* get new data */ - NumFallbackMXHosts = getmxrr(host, fbhosts, NULL, false, - &rcode, false, &ttl); + /* + ** Get new data. + ** Note: passing 0 as port is not correct but we cannot + ** determine the port number as there is no mailer. + */ + + NumFallbackMXHosts = getmxrr(host, fbhosts, NULL, +#if DANE + (DANE_SECURE == Dane) ? ISAD : +#endif + 0, + &rcode, &ttl, 0); renew = curtime() + ttl; for (i = 0; i < NumFallbackMXHosts; i++) fbhosts[i] = newstr(fbhosts[i]); } + if (NumFallbackMXHosts == NULLMX) + NumFallbackMXHosts = 0; return NumFallbackMXHosts; } @@ -163,11 +504,13 @@ fallbackmxrr(nmx, prefs, mxhosts) ** mxhosts -- a pointer to a return buffer of MX records. ** mxprefs -- a pointer to a return buffer of MX preferences. ** If NULL, don't try to populate. -** droplocalhost -- If true, all MX records less preferred +** flags -- flags: +** DROPLOCALHOSt -- If true, all MX records less preferred ** than the local host (as determined by $=w) will ** be discarded. +** TRYFALLBACK -- add also fallback MX host? +** ISAD -- host lookup was secure? ** rcode -- a pointer to an EX_ status code. -** tryfallback -- add also fallback MX host? ** pttl -- pointer to return TTL (can be NULL). ** ** Returns: @@ -183,14 +526,14 @@ fallbackmxrr(nmx, prefs, mxhosts) */ int -getmxrr(host, mxhosts, mxprefs, droplocalhost, rcode, tryfallback, pttl) +getmxrr(host, mxhosts, mxprefs, flags, rcode, pttl, port) char *host; char **mxhosts; unsigned short *mxprefs; - bool droplocalhost; + unsigned int flags; int *rcode; - bool tryfallback; int *pttl; + int port; { register unsigned char *eom, *cp; register int i, j, n; @@ -209,19 +552,34 @@ getmxrr(host, mxhosts, mxprefs, droplocalhost, rcode, tryfallback, pttl) unsigned short prefer[MAXMXHOSTS]; int weight[MAXMXHOSTS]; int ttl = 0; + bool ad; + bool seennullmx = false; extern int res_query(), res_search(); +# if DANE + bool cname2mx; + char qname[MAXNAME]; + unsigned long old_options = 0; +# endif if (tTd(8, 2)) - sm_dprintf("getmxrr(%s, droplocalhost=%d)\n", - host, droplocalhost); + sm_dprintf("getmxrr(%s, droplocalhost=%d, flags=%X, port=%d)\n", + host, (flags & DROPLOCALHOST) != 0, flags, port); + ad = (flags & ISAD) != 0; *rcode = EX_OK; if (pttl != NULL) *pttl = SM_DEFAULT_TTL; if (*host == '\0') return 0; +# if DANE + cname2mx = false; + qname[0] = '\0'; + old_options = _res.options; + if (ad) + _res.options |= SM_RES_DNSSEC; +# endif - if ((fallbackMX != NULL && droplocalhost && - wordinclass(fallbackMX, 'w')) || !tryfallback) + if ((fallbackMX != NULL && (flags & DROPLOCALHOST) != 0 && + wordinclass(fallbackMX, 'w')) || (flags & TRYFALLBACK) == 0) { /* don't use fallback for this pass */ fallbackMX = NULL; @@ -236,6 +594,34 @@ getmxrr(host, mxhosts, mxprefs, droplocalhost, rcode, tryfallback, pttl) if (host[0] == '[') goto punt; +# if DANE + /* + ** NOTE: This only works if nocanonify is used, + ** otherwise the name is already rewritten. + */ + + /* always or only when "needed"? */ + if (DANE_ALWAYS == Dane || (ad && DANE_SECURE == Dane)) + (void) sm_strlcpy(qname, host, sizeof(qname)); +# endif /* DANE */ + +# if _FFR_EAI + if (!addr_is_ascii(host)) + { + char buf[1024]; + UErrorCode error = U_ZERO_ERROR; + UIDNAInfo info = UIDNA_INFO_INITIALIZER; + UIDNA *idna; + + idna = uidna_openUTS46(UIDNA_NONTRANSITIONAL_TO_ASCII, &error); + (void) uidna_nameToASCII_UTF8(idna, host, strlen(host), + buf, sizeof(buf) - 1, + &info, &error); + uidna_close(idna); + host = sm_rpool_strdup_x(CurEnv->e_rpool, buf); + } +# endif /* _FFR_EAI */ + /* ** If we don't have MX records in our host switch, don't ** try for MX records. Note that this really isn't "right", @@ -250,15 +636,26 @@ getmxrr(host, mxhosts, mxprefs, droplocalhost, rcode, tryfallback, pttl) resfunc = res_query; else resfunc = res_search; +# if DNSSEC_TEST + if (tTd(8, 110)) + resfunc = tstdns_search; +# endif errno = 0; + hp = (HEADER *)&answer; n = (*resfunc)(host, C_IN, T_MX, (unsigned char *) &answer, sizeof(answer)); if (n < 0) { if (tTd(8, 1)) - sm_dprintf("getmxrr: res_search(%s) failed (errno=%d, h_errno=%d)\n", - host, errno, h_errno); +# if DNSSEC_TEST + sm_dprintf("getmxrr: res_search(%s) failed (errno=%d (%s), h_errno=%d (%s))\n", + host, errno, strerror(errno), + h_errno, herrno2txt(h_errno)); +# else + sm_dprintf("getmxrr: res_search(%s) failed, h_errno=%d\n", + host, h_errno); +# endif switch (h_errno) { case NO_DATA: @@ -271,8 +668,8 @@ getmxrr(host, mxhosts, mxprefs, droplocalhost, rcode, tryfallback, pttl) case HOST_NOT_FOUND: # if BROKEN_RES_SEARCH - case 0: /* Ultrix resolver retns failure w/ h_errno=0 */ -# endif /* BROKEN_RES_SEARCH */ + case 0: /* Ultrix resolver returns failure w/ h_errno=0 */ +# endif /* host doesn't exist in DNS; might be in /etc/hosts */ trycanon = true; *rcode = EX_NOHOST; @@ -284,7 +681,8 @@ getmxrr(host, mxhosts, mxprefs, droplocalhost, rcode, tryfallback, pttl) if (fallbackMX != NULL) { /* name server is hosed -- push to fallback */ - return fallbackmxrr(nmx, prefs, mxhosts); + nmx = fallbackmxrr(nmx, prefs, mxhosts); + goto done; } /* it might come up later; better queue it up */ *rcode = EX_TEMPFAIL; @@ -298,17 +696,21 @@ getmxrr(host, mxhosts, mxprefs, droplocalhost, rcode, tryfallback, pttl) } /* irreconcilable differences */ - return -1; + goto error; } + ad = ad && hp->ad; + if (tTd(8, 2)) + sm_dprintf("getmxrr(%s), hp=%p, ad=%d\n", host, (void*)hp, ad); + /* avoid problems after truncation in tcp packets */ if (n > sizeof(answer)) n = sizeof(answer); /* find first satisfactory answer */ - hp = (HEADER *)&answer; cp = (unsigned char *)&answer + HFIXEDSZ; eom = (unsigned char *)&answer + n; + for (qdcount = ntohs((unsigned short) hp->qdcount); qdcount--; cp += n + QFIXEDSZ) @@ -335,11 +737,19 @@ getmxrr(host, mxhosts, mxprefs, droplocalhost, rcode, tryfallback, pttl) cp += INT16SZ; /* skip over class */ GETLONG(ttl, cp); GETSHORT(n, cp); /* rdlength */ +# if DANE + if (type == T_CNAME) + cname2mx = true; +# endif if (type != T_MX) { - if (tTd(8, 8) || _res.options & RES_DEBUG) - sm_dprintf("unexpected answer type %d, size %d\n", - type, n); + if ((tTd(8, 8) || _res.options & RES_DEBUG) +# if DANE + && type != T_RRSIG +# endif + ) + sm_dprintf("unexpected answer type %s, size %d\n", + dns_type_to_string(type), n); cp += n; continue; } @@ -349,23 +759,17 @@ getmxrr(host, mxhosts, mxprefs, droplocalhost, rcode, tryfallback, pttl) break; cp += n; n = strlen(bp); -# if 0 - /* Can this happen? */ - if (n == 0) - { - if (LogLevel > 4) - sm_syslog(LOG_ERR, NOQID, - "MX records for %s contain empty string", - host); - continue; - } -# endif /* 0 */ + + /* Support for RFC7505 "MX 0 ." */ + if (pref == 0 && *bp == '\0') + seennullmx = true; + if (wordinclass(bp, 'w')) { if (tTd(8, 3)) sm_dprintf("found localhost (%s) in MX list, pref=%d\n", bp, pref); - if (droplocalhost) + if ((flags & DROPLOCALHOST) != 0) { if (!seenlocal || pref < localpref) localpref = pref; @@ -378,8 +782,31 @@ getmxrr(host, mxhosts, mxprefs, droplocalhost, rcode, tryfallback, pttl) weight[nmx] = mxrand(bp); prefs[nmx] = pref; mxhosts[nmx++] = bp; +# if DANE + if (CHK_DANE(Dane) && port >= 0) + { + int nrr; + unsigned long flags; + + flags = ad ? TLSAFLADMX : TLSAFLNOADMX; + nrr = gettlsa(bp, NULL, NULL, flags, ttl, port); + + /* Only check qname if no TLSA RRs were found */ + if (0 == nrr && cname2mx && '\0' != qname[0] && + strcmp(qname, bp)) + gettlsa(qname, bp, NULL, flags, ttl, port); + /* XXX is this the right ad flag? */ + } +# endif + + /* + ** Note: n can be 0 for something like: + ** host MX 0 . + ** See RFC 7505 + */ + bp += n; - if (bp[-1] != '.') + if (0 == n || bp[-1] != '.') { *bp++ = '.'; n++; @@ -393,6 +820,15 @@ getmxrr(host, mxhosts, mxprefs, droplocalhost, rcode, tryfallback, pttl) buflen -= n + 1; } + /* Support for RFC7505 "MX 0 ." */ + if (seennullmx && nmx == 1) + { + if (tTd(8, 4)) + sm_dprintf("getmxrr: Null MX record found, domain doesn't accept mail (RFC7505)\n"); + *rcode = EX_UNAVAILABLE; + return NULLMX; + } + /* return only one TTL entry, that should be sufficient */ if (ttl > 0 && pttl != NULL) *pttl = ttl; @@ -475,7 +911,7 @@ getmxrr(host, mxhosts, mxprefs, droplocalhost, rcode, tryfallback, pttl) UseNameServer)) { *rcode = EX_TEMPFAIL; - return -1; + goto error; } # if NETINET6 SM_SET_H_ERRNO(0); @@ -488,7 +924,7 @@ getmxrr(host, mxhosts, mxprefs, droplocalhost, rcode, tryfallback, pttl) UseNameServer))) { *rcode = EX_TEMPFAIL; - return -1; + goto error; } # endif /* NETINET6 */ } @@ -499,19 +935,19 @@ getmxrr(host, mxhosts, mxprefs, droplocalhost, rcode, tryfallback, pttl) *rcode = EX_CONFIG; syserr("MX list for %s points back to %s", host, MyHostName); - return -1; + goto error; } # if NETINET6 freehostent(h); h = NULL; -# endif /* NETINET6 */ +# endif } if (strlen(host) >= sizeof(MXHostBuf)) { *rcode = EX_CONFIG; syserr("Host name %s too long", shortenstring(host, MAXSHORTSTR)); - return -1; + goto error; } (void) sm_strlcpy(MXHostBuf, host, sizeof(MXHostBuf)); mxhosts[0] = MXHostBuf; @@ -521,7 +957,7 @@ getmxrr(host, mxhosts, mxprefs, droplocalhost, rcode, tryfallback, pttl) register char *p; # if NETINET6 struct sockaddr_in6 tmp6; -# endif /* NETINET6 */ +# endif /* this may be an MX suppression-style address */ p = strchr(MXHostBuf, ']'); @@ -550,7 +986,8 @@ getmxrr(host, mxhosts, mxprefs, droplocalhost, rcode, tryfallback, pttl) } } if (trycanon && - getcanonname(mxhosts[0], sizeof(MXHostBuf) - 2, false, pttl)) + (n = getcanonname(mxhosts[0], sizeof(MXHostBuf) - 2, false, + pttl)) != HOST_NOTFOUND) { /* XXX MXHostBuf == "" ? is that possible? */ bp = &MXHostBuf[strlen(MXHostBuf)]; @@ -560,16 +997,62 @@ getmxrr(host, mxhosts, mxprefs, droplocalhost, rcode, tryfallback, pttl) *bp = '\0'; } nmx = 1; +# if DANE + if (tTd(8, 3)) + sm_dprintf("getmxrr=%s, getcanonname=%d\n", + mxhosts[0], n); + if (CHK_DANE(Dane) && port >= 0) + { + int nrr; + unsigned long flags; + unsigned int cttl; + + if (pttl != NULL) + cttl = *pttl; + else if (ttl > 0) + cttl = ttl; + else + cttl = SM_DEFAULT_TTL; + + flags = (ad && n == HOST_SECURE) + ? TLSAFLADMX : TLSAFLNOADMX; + nrr = gettlsa(mxhosts[0], NULL, NULL, flags, + cttl, port); + + /* + ** Only check qname if no TLSA RRs were found + ** XXX: what about (temp) DNS errors? + */ + + if (0 == nrr && '\0' != qname[0] && + strcmp(qname, mxhosts[0])) + gettlsa(qname, mxhosts[0], NULL, flags, + cttl, port); + /* XXX is this the right ad flag? */ + } +# endif } } /* if we have a default lowest preference, include that */ if (fallbackMX != NULL && !seenlocal) { + /* TODO: DNSsec status of fallbacks */ nmx = fallbackmxrr(nmx, prefs, mxhosts); } + done: +# if DANE + _res.options = old_options; +# endif return nmx; + + error: +# if DANE + _res.options = old_options; +# endif + return -1; } + /* ** MXRAND -- create a randomizer for equal MX preferences ** @@ -640,15 +1123,15 @@ bestmx_map_lookup(map, name, av, statp) ssize_t len = 0; char *result; char *mxhosts[MAXMXHOSTS + 1]; -#if _FFR_BESTMX_BETTER_TRUNCATION +# if _FFR_BESTMX_BETTER_TRUNCATION char *buf; -#else /* _FFR_BESTMX_BETTER_TRUNCATION */ +# else char *p; char buf[PSBUFSIZE / 2]; -#endif /* _FFR_BESTMX_BETTER_TRUNCATION */ +# endif _res.options &= ~(RES_DNSRCH|RES_DEFNAMES); - nmx = getmxrr(name, mxhosts, NULL, false, statp, false, NULL); + nmx = getmxrr(name, mxhosts, NULL, 0, statp, NULL, -1); _res.options = saveopts; if (nmx <= 0) return NULL; @@ -662,7 +1145,7 @@ bestmx_map_lookup(map, name, av, statp) ** ones. We need to build them all into a list. */ -#if _FFR_BESTMX_BETTER_TRUNCATION +# if _FFR_BESTMX_BETTER_TRUNCATION for (i = 0; i < nmx; i++) { if (strchr(mxhosts[i], map->map_coldelim) != NULL) @@ -699,7 +1182,7 @@ bestmx_map_lookup(map, name, av, statp) /* Cleanly truncate for rulesets */ truncate_at_delim(buf, PSBUFSIZE / 2, map->map_coldelim); -#else /* _FFR_BESTMX_BETTER_TRUNCATION */ +# else /* _FFR_BESTMX_BETTER_TRUNCATION */ p = buf; for (i = 0; i < nmx; i++) { @@ -723,12 +1206,12 @@ bestmx_map_lookup(map, name, av, statp) p += slen; len += slen; } -#endif /* _FFR_BESTMX_BETTER_TRUNCATION */ +# endif /* _FFR_BESTMX_BETTER_TRUNCATION */ result = map_rewrite(map, buf, len, av); -#if _FFR_BESTMX_BETTER_TRUNCATION +# if _FFR_BESTMX_BETTER_TRUNCATION sm_free(buf); -#endif /* _FFR_BESTMX_BETTER_TRUNCATION */ +# endif return result; } /* @@ -758,11 +1241,11 @@ bestmx_map_lookup(map, name, av, statp) ** pttl -- pointer to return TTL (can be NULL). ** ** Returns: -** true -- if the host matched. -** false -- otherwise. +** >0 -- if the host was found. +** 0 -- otherwise. */ -bool +int dns_getcanonname(host, hbsize, trymx, statp, pttl) char *host; int hbsize; @@ -775,31 +1258,48 @@ dns_getcanonname(host, hbsize, trymx, statp, pttl) register int n; HEADER *hp; querybuf answer; - int ancount, qdcount; - int ret; + int ancount, qdcount, ret, type, qtype, initial, loopcnt, ttl, sli; char **domain; - int type; - int ttl = 0; - char **dp; + char *dp; char *mxmatch; - bool amatch; - bool gotmx = false; - int qtype; - int initial; - int loopcnt; + bool amatch, gotmx, ad; char nbuf[SM_MAX(MAXPACKET, MAXDNAME*2+2)]; - char *searchlist[MAXDNSRCH + 2]; +# if DNSSEC_TEST +# define ADDSL 1 /* NameSearchList may add another entry to searchlist! */ +# else +# define ADDSL 0 +# endif + char *searchlist[MAXDNSRCH + 2 + ADDSL]; +# define SLSIZE SM_ARRAY_SIZE(searchlist) + int (*resqdomain) __P((const char *, const char *, int, int, unsigned char *, int)); +# if DANE + unsigned long old_options = 0; +# endif + ttl = 0; + gotmx = false; + ad = true; if (tTd(8, 2)) sm_dprintf("dns_getcanonname(%s, trymx=%d)\n", host, trymx); if ((_res.options & RES_INIT) == 0 && res_init() == -1) { *statp = EX_UNAVAILABLE; - return false; + return HOST_NOTFOUND; } +# if DANE + old_options = _res.options; + if (DANE_SECURE == Dane) + _res.options |= SM_RES_DNSSEC; +# endif + *statp = EX_OK; + resqdomain = res_querydomain; +# if DNSSEC_TEST + if (tTd(8, 110)) + resqdomain = tstdns_querydomain; +# endif /* ** Initialize domain search list. If there is at least one @@ -831,26 +1331,35 @@ dns_getcanonname(host, hbsize, trymx, statp, pttl) ** else if name ends in a dot, remove that dot. */ - dp = searchlist; + sli = 0; if (n > 0) - *dp++ = ""; + searchlist[sli++] = ""; +# if DNSSEC_TEST + if (NameSearchList != NULL) + { + SM_ASSERT(sli < SLSIZE); + searchlist[sli++] = NameSearchList; + } +# endif if (n >= 0 && *--cp != '.' && bitset(RES_DNSRCH, _res.options)) { /* make sure there are less than MAXDNSRCH domains */ for (domain = RES_DNSRCH_VARIABLE, ret = 0; - *domain != NULL && ret < MAXDNSRCH; + *domain != NULL && ret < MAXDNSRCH && sli < SLSIZE; ret++) - *dp++ = *domain++; + searchlist[sli++] = *domain++; } else if (n == 0 && bitset(RES_DEFNAMES, _res.options)) { - *dp++ = _res.defdname; + SM_ASSERT(sli < SLSIZE); + searchlist[sli++] = _res.defdname; } else if (*cp == '.') { *cp = '\0'; } - *dp = NULL; + SM_ASSERT(sli < SLSIZE); + searchlist[sli] = NULL; /* ** Now loop through the search list, appending each domain in turn @@ -862,24 +1371,28 @@ dns_getcanonname(host, hbsize, trymx, statp, pttl) # if NETINET6 if (InetMode == AF_INET6) initial = T_AAAA; -# endif /* NETINET6 */ +# endif qtype = initial; - for (dp = searchlist; *dp != NULL; ) + for (sli = 0; sli < SLSIZE; ) { + dp = searchlist[sli]; + if (NULL == dp) + break; if (qtype == initial) gotmx = false; if (tTd(8, 5)) sm_dprintf("dns_getcanonname: trying %s.%s (%s)\n", - host, *dp, + host, dp, # if NETINET6 qtype == T_AAAA ? "AAAA" : -# endif /* NETINET6 */ +# endif qtype == T_A ? "A" : qtype == T_MX ? "MX" : "???"); errno = 0; - ret = res_querydomain(host, *dp, C_IN, qtype, + hp = (HEADER *) &answer; + ret = (*resqdomain)(host, dp, C_IN, qtype, answer.qb2, sizeof(answer.qb2)); if (ret <= 0) { @@ -896,7 +1409,7 @@ dns_getcanonname(host, hbsize, trymx, statp, pttl) */ SM_SET_H_ERRNO(TRY_AGAIN); - if (**dp == '\0') + if (*dp == '\0') { if (*statp == EX_OK) *statp = EX_TEMPFAIL; @@ -917,10 +1430,10 @@ dns_getcanonname(host, hbsize, trymx, statp, pttl) */ if (save_errno != ETIMEDOUT) - return false; + goto error; } else - return false; + goto error; } nexttype: @@ -936,7 +1449,7 @@ dns_getcanonname(host, hbsize, trymx, statp, pttl) else # endif /* NETINET6 */ if (qtype == T_A && !gotmx && - (trymx || **dp == '\0')) + (trymx || *dp == '\0')) { qtype = T_MX; continue; @@ -944,7 +1457,7 @@ dns_getcanonname(host, hbsize, trymx, statp, pttl) } /* definite no -- try the next domain */ - dp++; + sli++; qtype = initial; continue; } @@ -962,10 +1475,12 @@ dns_getcanonname(host, hbsize, trymx, statp, pttl) ** wild card MX record, we will accept MX as well. */ - hp = (HEADER *) &answer; ap = (unsigned char *) &answer + HFIXEDSZ; eom = (unsigned char *) &answer + ret; + if (0 == hp->ad) + ad = false; + /* skip question part of response -- we know what we asked */ for (qdcount = ntohs((unsigned short) hp->qdcount); qdcount--; @@ -977,7 +1492,7 @@ dns_getcanonname(host, hbsize, trymx, statp, pttl) sm_dprintf("qdcount failure (%d)\n", ntohs((unsigned short) hp->qdcount)); *statp = EX_SOFTWARE; - return false; /* ???XXX??? */ + goto error; } } @@ -999,7 +1514,7 @@ dns_getcanonname(host, hbsize, trymx, statp, pttl) { case T_MX: gotmx = true; - if (**dp != '\0' && HasWildcardMX) + if (*dp != '\0' && HasWildcardMX) { /* ** If we are using MX matches and have @@ -1009,7 +1524,7 @@ dns_getcanonname(host, hbsize, trymx, statp, pttl) */ if (trymx && mxmatch == NULL) - mxmatch = *dp; + mxmatch = dp; continue; } @@ -1026,7 +1541,7 @@ dns_getcanonname(host, hbsize, trymx, statp, pttl) # if NETINET6 case T_AAAA: -# endif /* NETINET6 */ +# endif case T_A: /* Flag that a good match was found */ amatch = true; @@ -1061,7 +1576,7 @@ dns_getcanonname(host, hbsize, trymx, statp, pttl) } SM_SET_H_ERRNO(NO_RECOVERY); *statp = EX_CONFIG; - return false; + goto error; } /* value points at name */ @@ -1092,7 +1607,7 @@ dns_getcanonname(host, hbsize, trymx, statp, pttl) ** exact MX record. Save it and get out of here. */ - mxmatch = *dp; + mxmatch = dp; break; } @@ -1107,13 +1622,13 @@ dns_getcanonname(host, hbsize, trymx, statp, pttl) if (qtype == T_AAAA) qtype = T_A; else -# endif /* NETINET6 */ - if (qtype == T_A && !gotmx && (trymx || **dp == '\0')) +# endif + if (qtype == T_A && !gotmx && (trymx || *dp == '\0')) qtype = T_MX; else { qtype = initial; - dp++; + sli++; } } @@ -1122,7 +1637,7 @@ dns_getcanonname(host, hbsize, trymx, statp, pttl) { if (*statp == EX_OK) *statp = EX_NOHOST; - return false; + goto error; } /* @@ -1142,6 +1657,16 @@ dns_getcanonname(host, hbsize, trymx, statp, pttl) /* return only one TTL entry, that should be sufficient */ if (ttl > 0 && pttl != NULL) *pttl = ttl; - return true; +# if DANE + _res.options = old_options; +# endif + return ad ? HOST_SECURE : HOST_OK; + + error: +# if DANE + _res.options = old_options; +# endif + return HOST_NOTFOUND; } + #endif /* NAMED_BIND */ diff --git a/src/envelope.c b/src/envelope.c index bae6b0010db7..08d48b171e6a 100644 --- a/src/envelope.c +++ b/src/envelope.c @@ -105,7 +105,7 @@ newenvelope(e, parent, rpool) e->e_ctime = curtime(); #if _FFR_SESSID e->e_sessid = e->e_id; -#endif /* _FFR_SESSID */ +#endif if (parent != NULL) { e->e_msgpriority = parent->e_msgsize; @@ -113,7 +113,7 @@ newenvelope(e, parent, rpool) if (parent->e_sessid != NULL) e->e_sessid = sm_rpool_strdup_x(rpool, parent->e_sessid); -#endif /* _FFR_SESSID */ +#endif if (parent->e_quarmsg == NULL) { @@ -189,7 +189,7 @@ dropenvelope(e, fulldrop, split) if (tTd(50, 1)) { - sm_dprintf("dropenvelope %p: id=", e); + sm_dprintf("dropenvelope %p: id=", (void *)e); xputs(sm_debug_file(), e->e_id); sm_dprintf(", flags="); printenvflags(e); @@ -264,7 +264,7 @@ dropenvelope(e, fulldrop, split) #if _FFR_PROXY if (queueit && e->e_sendmode == SM_PROXY) queueit = false; -#endif /* _FFR_PROXY */ +#endif /* see if a notification is needed */ if (bitset(QPINGONFAILURE, q->q_flags) && @@ -323,7 +323,7 @@ dropenvelope(e, fulldrop, split) /* don't free, allocated from e_rpool */ e->e_message = sm_rpool_strdup_x(e->e_rpool, buf); - message(buf); + message("%s", buf); e->e_flags |= EF_CLRQUEUE; } if (msg_timeout == MSG_NOT_BY) @@ -380,7 +380,7 @@ dropenvelope(e, fulldrop, split) #if _FFR_NODELAYDSN_ON_HOLD && !bitnset(M_HOLD, q->q_mailer->m_flags) -#endif /* _FFR_NODELAYDSN_ON_HOLD */ +#endif ) { if (msg_timeout == @@ -420,7 +420,7 @@ dropenvelope(e, fulldrop, split) /* don't free, allocated from e_rpool */ e->e_message = sm_rpool_strdup_x(e->e_rpool, buf); - message(buf); + message("%s", buf); e->e_flags |= EF_WARNING; } if (msg_timeout == MSG_WARN_BY) @@ -446,8 +446,8 @@ dropenvelope(e, fulldrop, split) failure_return, delay_return, success_return, queueit); /* - ** If we had some fatal error, but no addresses are marked as - ** bad, mark them _all_ as bad. + ** If we had some fatal error, but no addresses are marked as bad, + ** mark all OK/VERIFIED addresses as bad (if QPINGONFAILURE). */ if (bitset(EF_FATALERRS, e->e_flags) && !failure_return) @@ -455,8 +455,21 @@ dropenvelope(e, fulldrop, split) for (q = e->e_sendqueue; q != NULL; q = q->q_next) { if ((QS_IS_OK(q->q_state) || - QS_IS_VERIFIED(q->q_state)) && - bitset(QPINGONFAILURE, q->q_flags)) + QS_IS_VERIFIED(q->q_state)) + && bitset(QPINGONFAILURE, q->q_flags) + + /* + ** do not mark an address as bad if + ** - the address itself is stored in the queue + ** - the DeliveryMode requires queueing + ** - the envelope is queued + */ + + && !(bitset(QQUEUED, q->q_flags) + && WILL_BE_QUEUED(e->e_sendmode) + && bitset(EF_INQUEUE, e->e_flags) + ) + ) { failure_return = true; q->q_state = QS_BADADDR; @@ -737,7 +750,7 @@ clearenvelope(e, fullclear, rpool) } #if _FFR_MILTER_ENHSC e->e_enhsc[0] = '\0'; -#endif /* _FFR_MILTER_ENHSC */ +#endif } /* ** INITSYS -- initialize instantiation of system @@ -878,7 +891,7 @@ settime(e) #ifndef O_APPEND # define O_APPEND 0 -#endif /* ! O_APPEND */ +#endif void openxscript(e) @@ -892,7 +905,7 @@ openxscript(e) #if 0 if (e->e_lockfp == NULL && bitset(EF_INQUEUE, e->e_flags)) syserr("openxscript: job not locked"); -#endif /* 0 */ +#endif p = queuename(e, XSCRPT_LETTER); e->e_xfp = bfopen(p, FileMode, XscriptFileBufferSize, @@ -936,7 +949,7 @@ closexscript(e) #if 0 if (e->e_lockfp == NULL) syserr("closexscript: job not locked"); -#endif /* 0 */ +#endif (void) sm_io_close(e->e_xfp, SM_TIME_DEFAULT); e->e_xfp = NULL; } @@ -1271,8 +1284,6 @@ static struct eflags EnvelopeFlags[] = { "LOGSENDER", EF_LOGSENDER }, { "NORECEIPT", EF_NORECEIPT }, { "HAS8BIT", EF_HAS8BIT }, - { "NL_NOT_EOL", EF_NL_NOT_EOL }, - { "CRLF_NOT_EOL", EF_CRLF_NOT_EOL }, { "RET_PARAM", EF_RET_PARAM }, { "HAS_DF", EF_HAS_DF }, { "IS_MIME", EF_IS_MIME }, @@ -1281,6 +1292,8 @@ static struct eflags EnvelopeFlags[] = { "TOOBIG", EF_TOOBIG }, { "SPLIT", EF_SPLIT }, { "UNSAFE", EF_UNSAFE }, + { "TOODEEP", EF_TOODEEP }, + { "SECURE", EF_SECURE }, { NULL, 0 } }; diff --git a/src/err.c b/src/err.c index 0594eb9ba16c..8bd02669c5e0 100644 --- a/src/err.c +++ b/src/err.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998-2003, 2010 Proofpoint, Inc. and its suppliers. + * Copyright (c) 1998-2003, 2010, 2015 Proofpoint, Inc. and its suppliers. * All rights reserved. * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved. * Copyright (c) 1988, 1993 @@ -18,7 +18,7 @@ SM_RCSID("@(#)$Id: err.c,v 8.206 2013-11-22 20:51:55 ca Exp $") #if LDAPMAP # include # include /* for LDAP error codes */ -#endif /* LDAPMAP */ +#endif static void putoutmsg __P((char *, bool, bool)); static void puterrmsg __P((char *)); @@ -113,7 +113,7 @@ static char HeldMessageBuf[sizeof(MsgBuf)]; /* for held messages */ #if NAMED_BIND && !defined(NO_DATA) # define NO_DATA NO_ADDRESS -#endif /* NAMED_BIND && !defined(NO_DATA) */ +#endif void /*VARARGS1*/ @@ -224,19 +224,19 @@ syserr(fmt, va_alist) case ENOTTY: #ifdef EFBIG case EFBIG: -#endif /* EFBIG */ +#endif #ifdef ESPIPE case ESPIPE: -#endif /* ESPIPE */ +#endif #ifdef EPIPE case EPIPE: -#endif /* EPIPE */ +#endif #ifdef ENOBUFS case ENOBUFS: -#endif /* ENOBUFS */ +#endif #ifdef ESTALE case ESTALE: -#endif /* ESTALE */ +#endif printopenfds(true); mci_dump_all(smioout, true); break; @@ -245,7 +245,7 @@ syserr(fmt, va_alist) { #if XLA xla_all_end(); -#endif /* XLA */ +#endif sync_queue_time(); if (tTd(0, 1)) abort(); @@ -255,6 +255,7 @@ syserr(fmt, va_alist) if (QuickAbort) sm_exc_raisenew_x(&EtypeQuickAbort, 2); } + /* ** USRERR -- Signal user error. ** @@ -340,6 +341,7 @@ usrerr(fmt, va_alist) if (QuickAbort) sm_exc_raisenew_x(&EtypeQuickAbort, 1); } + /* ** USRERRENH -- Signal user error. ** @@ -438,9 +440,6 @@ usrerrenh(enhsc, fmt, va_alist) ** ** Returns: ** none -** -** Side Effects: -** none. */ /*VARARGS1*/ @@ -493,9 +492,6 @@ message(msg, va_alist) ** ** Returns: ** none -** -** Side Effects: -** none. */ /*VARARGS3*/ @@ -595,9 +591,6 @@ extsc(msg, delim, replycode, enhsc) ** ** Returns: ** none -** -** Side Effects: -** none. */ /*VARARGS1*/ @@ -636,6 +629,7 @@ nmessage(msg, va_alist) break; } } + /* ** PUTOUTMSG -- output error message to transcript and channel ** @@ -761,6 +755,7 @@ putoutmsg(msg, holdmsg, heldmsg) shortenstring(msg, MAXSHORTSTR), sm_errstring(errno)); #endif /* !PIPELINING */ } + /* ** PUTERRMSG -- like putoutmsg, but does special processing for error messages ** @@ -804,6 +799,7 @@ puterrmsg(msg) CurEnv->e_flags |= EF_FATALERRS; } } + /* ** ISENHSC -- check whether a string contains an enhanced status code ** @@ -814,10 +810,8 @@ puterrmsg(msg) ** Returns: ** 0 -- no enhanced status code. ** >4 -- length of enhanced status code. -** -** Side Effects: -** none. */ + int isenhsc(s, delim) const char *s; @@ -843,6 +837,7 @@ isenhsc(s, delim) return 0; return l + h; } + /* ** EXTENHSC -- check and extract an enhanced status code ** @@ -897,6 +892,7 @@ extenhsc(s, delim, e) e[l + h] = '\0'; return l + h; } + /* ** FMTMSG -- format a message into buffer. ** @@ -906,14 +902,15 @@ extenhsc(s, delim, e) ** num -- default three digit SMTP reply code. ** enhsc -- enhanced status code. ** en -- the error number to display. -** fmt -- format of string. +** fmt -- format of string: See NOTE below. ** ap -- arguments for fmt. ** ** Returns: ** pointer to error text beyond status codes. ** -** Side Effects: -** none. +** NOTE: +** Do NOT use "%s" as fmt if the argument starts with an SMTP +** reply code! */ static char * @@ -1010,15 +1007,23 @@ fmtmsg(eb, to, num, enhsc, eno, fmt, ap) (void) sm_strlcpyn(eb, spaceleft, 2, shortenstring(to, MAXSHORTSTR), "... "); spaceleft -= strlen(eb); +#if _FFR_EAI + eb += strlen(eb); +#else while (*eb != '\0') *eb++ &= 0177; +#endif } /* output the message */ (void) sm_vsnprintf(eb, spaceleft, fmt, ap); spaceleft -= strlen(eb); +#if _FFR_EAI + eb += strlen(eb); +#else while (*eb != '\0') *eb++ &= 0177; +#endif /* output the error code, if any */ if (eno != 0) @@ -1026,6 +1031,7 @@ fmtmsg(eb, to, num, enhsc, eno, fmt, ap) return errtxt; } + /* ** BUFFER_ERRORS -- arrange to buffer future error messages ** @@ -1042,6 +1048,7 @@ buffer_errors() HeldMessageBuf[0] = '\0'; HoldErrs = true; } + /* ** FLUSH_ERRORS -- flush the held error message buffer ** @@ -1070,9 +1077,6 @@ flush_errors(print) ** ** Returns: ** A string description of errnum. -** -** Side Effects: -** none. */ const char * @@ -1085,11 +1089,11 @@ sm_errstring(errnum) #if HASSTRERROR char *err; char errbuf[30]; -#endif /* HASSTRERROR */ +#endif #if !HASSTRERROR && !defined(ERRLIST_PREDEFINED) extern char *sys_errlist[]; extern int sys_nerr; -#endif /* !HASSTRERROR && !defined(ERRLIST_PREDEFINED) */ +#endif /* ** Handle special network error codes. @@ -1242,7 +1246,7 @@ sm_errstring(errnum) #if LDAPMAP if (errnum >= E_LDAPBASE - E_LDAP_SHIM) return ldap_err2string(errnum - E_LDAPBASE); -#endif /* LDAPMAP */ +#endif #if HASSTRERROR err = strerror(errnum); diff --git a/src/headers.c b/src/headers.c index 0af72436f7f2..da84a8009328 100644 --- a/src/headers.c +++ b/src/headers.c @@ -174,7 +174,7 @@ dochompheader(line, pflag, hdrp, e) while (isascii(*p) && isgraph(*p) && *p != ':') p++; fvalue = p; - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; if (*p++ != ':' || fname == fvalue) { @@ -186,7 +186,7 @@ dochompheader(line, pflag, hdrp, e) fvalue = p; /* if the field is null, go ahead and use the default */ - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; if (*p == '\0') nullheader = true; @@ -201,7 +201,7 @@ dochompheader(line, pflag, hdrp, e) char hbuf[50]; (void) expand(fvalue, hbuf, sizeof(hbuf), e); - for (p = hbuf; isascii(*p) && isspace(*p); ) + for (p = hbuf; SM_ISSPACE(*p); ) p++; if ((*p++ & 0377) == CALLSUBR) { @@ -735,7 +735,7 @@ hvalue(field, header) s = h->h_value; if (s == NULL) return NULL; - while (isascii(*s) && isspace(*s)) + while (SM_ISSPACE(*s)) s++; return s; } @@ -783,7 +783,7 @@ isheader(h) return false; /* following technically violates RFC822 */ - while (isascii(*s) && isspace(*s)) + while (SM_ISSPACE(*s)) s++; return (*s == ':'); @@ -900,7 +900,7 @@ eatheader(e, full, log) { #if 0 int saveflags = e->e_flags; -#endif /* 0 */ +#endif (void) sendtolist(denlstring(h->h_value, true, false), NULLADDR, &e->e_sendqueue, 0, e); @@ -1119,24 +1119,7 @@ logsender(e, msgid) register char *sbp; register char *p; char hbuf[MAXNAME + 1]; - char sbuf[MAXLINE + 1]; - char mbuf[MAXNAME + 1]; - - /* don't allow newlines in the message-id */ - /* XXX do we still need this? sm_syslog() replaces control chars */ - if (msgid != NULL) - { - size_t l; - - l = strlen(msgid); - if (l > sizeof(mbuf) - 1) - l = sizeof(mbuf) - 1; - memmove(mbuf, msgid, l); - mbuf[l] = '\0'; - p = mbuf; - while ((p = strchr(p, '\n')) != NULL) - *p++ = ' '; - } + char sbuf[MAXLINE + 1]; /* XREF: see below MSGIDLOGLEN */ if (bitset(EF_RESPONSE, e->e_flags)) name = "[RESPONSE]"; @@ -1160,7 +1143,6 @@ logsender(e, msgid) } } - /* some versions of syslog only take 5 printf args */ #if (SYSLOG_BUFSIZE) >= 256 sbp = sbuf; (void) sm_snprintf(sbp, SPACELEFT(sbuf, sbp), @@ -1170,8 +1152,29 @@ logsender(e, msgid) sbp += strlen(sbp); if (msgid != NULL) { + +#ifndef MSGIDLOGLEN +# define MSGIDLOGLEN 100 +# define FIRSTLOGLEN 850 +# else +# if MSGIDLOGLEN < 100 + ERROR MSGIDLOGLEN too short +# endif +/* XREF: this is "sizeof(sbuf)", see above */ +# if MSGIDLOGLEN >= MAXLINE / 2 + ERROR MSGIDLOGLEN too long +# endif + +/* 850 - 100 for original MSGIDLOGLEN */ +# define FIRSTLOGLEN (750 + MSGIDLOGLEN) + +/* check that total length is ok */ +# if FIRSTLOGLEN + 200 >= MAXLINE + ERROR MSGIDLOGLEN too long +# endif +#endif (void) sm_snprintf(sbp, SPACELEFT(sbuf, sbp), - ", msgid=%.100s", mbuf); + ", msgid=%.*s", MSGIDLOGLEN, msgid); sbp += strlen(sbp); } if (e->e_bodytype != NULL) @@ -1195,13 +1198,7 @@ logsender(e, msgid) sbp += strlen(sbp); } # if _FFR_LOG_MORE1 -# if STARTTLS - p = macvalue(macid("{verify}"), e); - if (p == NULL || *p == '\0') - p = "NONE"; - (void) sm_snprintf(sbp, SPACELEFT(sbuf, sbp), ", tls_verify=%.20s", p); - sbp += strlen(sbp); -# endif /* STARTTLS */ + LOG_MORE(sbuf, sbp); # if SASL p = macvalue(macid("{auth_type}"), e); if (p == NULL || *p == '\0') @@ -1210,7 +1207,7 @@ logsender(e, msgid) sbp += strlen(sbp); # endif /* SASL */ # endif /* _FFR_LOG_MORE1 */ - sm_syslog(LOG_INFO, e->e_id, "%.850s, relay=%s", sbuf, name); + sm_syslog(LOG_INFO, e->e_id, "%.*s, relay=%s", FIRSTLOGLEN, sbuf, name); #else /* (SYSLOG_BUFSIZE) >= 256 */ @@ -1225,7 +1222,7 @@ logsender(e, msgid) if (msgid != NULL) sm_syslog(LOG_INFO, e->e_id, "msgid=%s", - shortenstring(mbuf, 83)); + shortenstring(msgid, 83)); sbp = sbuf; *sbp = '\0'; if (e->e_bodytype != NULL) @@ -1326,7 +1323,7 @@ priencode(p) #if MAXNAME < 10 ERROR MAXNAME must be at least 10 -#endif /* MAXNAME < 10 */ +#endif char * crackaddr(addr, e) @@ -1361,7 +1358,7 @@ crackaddr(addr, e) bp = bufhead = buf; /* skip over leading spaces but preserve them */ - while (*addr != '\0' && isascii(*addr) && isspace(*addr)) + while (*addr != '\0' && SM_ISSPACE(*addr)) { SM_APPEND_CHAR(*addr); addr++; @@ -1527,7 +1524,7 @@ crackaddr(addr, e) } /* any trailing white space is part of group: */ - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) { SM_APPEND_CHAR(*p); p++; @@ -1879,7 +1876,7 @@ putheader(mci, hdr, e, flags) } } - if (bitset(H_BCC, h->h_flags)) + if (bitset(H_BCC, h->h_flags) && !KeepBcc) { /* Bcc: field -- either truncate or delete */ if (bitset(EF_DELETE_BCC, e->e_flags)) @@ -2067,7 +2064,7 @@ commaize(h, p, oldstyle, mci, e, putflags) obp += opos; spaces = 0; - while (*p != '\0' && isascii(*p) && isspace(*p)) + while (*p != '\0' && SM_ISSPACE(*p)) { ++spaces; ++p; @@ -2116,7 +2113,7 @@ commaize(h, p, oldstyle, mci, e, putflags) */ /* find end of name */ - while ((isascii(*p) && isspace(*p)) || *p == ',') + while ((SM_ISSPACE(*p)) || *p == ',') p++; name = p; res = NULL; @@ -2138,7 +2135,7 @@ commaize(h, p, oldstyle, mci, e, putflags) #endif /* _FFR_IGNORE_BOGUS_ADDR */ /* look to see if we have an at sign */ - while (*p != '\0' && isascii(*p) && isspace(*p)) + while (*p != '\0' && SM_ISSPACE(*p)) p++; if (*p != '@') @@ -2147,14 +2144,14 @@ commaize(h, p, oldstyle, mci, e, putflags) break; } ++p; - while (*p != '\0' && isascii(*p) && isspace(*p)) + while (*p != '\0' && SM_ISSPACE(*p)) p++; } /* at the end of one complete name */ /* strip off trailing white space */ while (p >= name && - ((isascii(*p) && isspace(*p)) || *p == ',' || *p == '\0')) + ((SM_ISSPACE(*p)) || *p == ',' || *p == '\0')) p--; if (++p == name) continue; @@ -2165,7 +2162,7 @@ commaize(h, p, oldstyle, mci, e, putflags) */ if (res == NULL && p > name && - !((isascii(*p) && isspace(*p)) || *p == ',' || *p == '\0')) + !((SM_ISSPACE(*p)) || *p == ',' || *p == '\0')) --p; savechar = *p; *p = '\0'; diff --git a/src/macro.c b/src/macro.c index cb7daf8cf690..83438563151b 100644 --- a/src/macro.c +++ b/src/macro.c @@ -18,7 +18,7 @@ SM_RCSID("@(#)$Id: macro.c,v 8.108 2013-11-22 20:51:55 ca Exp $") #include #if MAXMACROID != (BITMAPBITS - 1) ERROR Read the comment in conf.h -#endif /* MAXMACROID != (BITMAPBITS - 1) */ +#endif static char *MacroName[MAXMACROID + 1]; /* macro id to name table */ @@ -361,6 +361,33 @@ expand(s, buf, bufsize, e) doexpand(s, buf, bufsize, 0, e); } +/* +** MACTABCLEAR -- clear entire macro table +** +** Parameters: +** mac -- Macro table. +** +** Returns: +** none. +** +** Side Effects: +** clears entire mac structure including rpool pointer! +*/ + +void +mactabclear(mac) + MACROS_T *mac; +{ + int i; + + if (mac->mac_rpool == NULL) + { + for (i = 0; i < MAXMACROID; i++) + SM_FREE(mac->mac_table[i]); + } + memset((char *) mac, '\0', sizeof(*mac)); +} + /* ** MACDEFINE -- bind a macro name to a value ** @@ -439,9 +466,9 @@ macdefine(mac, vclass, id, value) { #if SM_HEAP_CHECK newvalue = sm_strdup_tagged_x(value, file, line, 0); -#else /* SM_HEAP_CHECK */ +#else newvalue = sm_strdup_x(value); -#endif /* SM_HEAP_CHECK */ +#endif setbitn(id, mac->mac_allocated); } mac->mac_table[id] = newvalue; @@ -539,6 +566,15 @@ macvalue(n, e) break; e = e->e_parent; } +#if _FFR_BLANKENV_MACV + if (LOOKUP_MACRO_IN_BLANKENV && e != &BlankEnvelope) + { + char *p = BlankEnvelope.e_macro.mac_table[n]; + + if (p != NULL) + return p; + } +#endif return GlobalMacros.mac_table[n]; } diff --git a/src/mailq.0 b/src/mailq.0 index 950796c15aa9..4e0c5a6d4317 100644 --- a/src/mailq.0 +++ b/src/mailq.0 @@ -2,14 +2,14 @@ MAILQ(1) MAILQ(1) -NNAAMMEE +NAME mailq - print the mail queue -SSYYNNOOPPSSIISS - mmaaiillqq [--AAcc] [--qq......] [--vv] +SYNOPSIS + mailq [-Ac] [-q...] [-v] -DDEESSCCRRIIPPTTIIOONN - MMaaiillqq prints a summary of the mail messages queued for future delivery. +DESCRIPTION + Mailq prints a summary of the mail messages queued for future delivery. The first line printed for each message shows the internal identifier used on this host for the message with a possible status character, the @@ -17,41 +17,41 @@ DDEESSCCRRIIPPTTIIOONN accepted into the queue, and the envelope sender of the message. The second line shows the error message that caused this message to be retained in the queue; it will not be present if the message is being - processed for the first time. The status characters are either ** to - indicate the job is being processed; XX to indicate that the load is too - high to process the job; and -- to indicate that the job is too young to + processed for the first time. The status characters are either * to + indicate the job is being processed; X to indicate that the load is too + high to process the job; and - to indicate that the job is too young to process. The following lines show message recipients, one per line. - MMaaiillqq is identical to ``sendmail -bp''. + Mailq is identical to ``sendmail -bp''. The relevant options are as follows: - --AAcc Show the mail submission queue specified in _/_e_t_c_/_m_a_i_l_/_s_u_b_m_i_t_._c_f - instead of the MTA queue specified in _/_e_t_c_/_m_a_i_l_/_s_e_n_d_m_a_i_l_._c_f. + -Ac Show the mail submission queue specified in /etc/mail/submit.cf + instead of the MTA queue specified in /etc/mail/sendmail.cf. - --qqLL Show the "lost" items in the mail queue instead of the normal + -qL Show the "lost" items in the mail queue instead of the normal queue items. - --qqQQ Show the quarantined items in the mail queue instead of the nor- + -qQ Show the quarantined items in the mail queue instead of the nor- mal queue items. - --qq[_!]I substr - Limit processed jobs to those containing _s_u_b_s_t_r as a substring - of the queue id or not when _! is specified. + -q[!]I substr + Limit processed jobs to those containing substr as a substring + of the queue id or not when ! is specified. - --qq[_!]Q substr - Limit processed jobs to quarantined jobs containing _s_u_b_s_t_r as a - substring of the quarantine reason or not when _! is specified. + -q[!]Q substr + Limit processed jobs to quarantined jobs containing substr as a + substring of the quarantine reason or not when ! is specified. - --qq[_!]R substr - Limit processed jobs to those containing _s_u_b_s_t_r as a substring - of one of the recipients or not when _! is specified. + -q[!]R substr + Limit processed jobs to those containing substr as a substring + of one of the recipients or not when ! is specified. - --qq[_!]S substr - Limit processed jobs to those containing _s_u_b_s_t_r as a substring - of the sender or not when _! is specified. + -q[!]S substr + Limit processed jobs to those containing substr as a substring + of the sender or not when ! is specified. - --vv Print verbose information. This adds the priority of the mes- + -v Print verbose information. This adds the priority of the mes- sage and a single character indicator (``+'' or blank) indicat- ing whether a warning message has been sent on the first line of the message. Additionally, extra lines may be intermixed with @@ -61,20 +61,20 @@ DDEESSCCRRIIPPTTIIOONN from, if any. Moreover, status messages for each recipient are printed if available. - Several sendmail.cf options influence the behavior of the mmaaiillqq util- + Several sendmail.cf options influence the behavior of the mailq util- ity: The number of items printed per queue group is restricted by - MMaaxxQQuueeuueeRRuunnSSiizzee if that value is set. The status character ** is not - printed for some values of QQuueeuueeSSoorrttOOrrddeerr,, e.g., filename, random, mod- - ification, and none, unless a --qq option is used to limit the processed + MaxQueueRunSize if that value is set. The status character * is not + printed for some values of QueueSortOrder, e.g., filename, random, mod- + ification, and none, unless a -q option is used to limit the processed jobs. - The mmaaiillqq utility exits 0 on success, and >0 if an error occurs. + The mailq utility exits 0 on success, and >0 if an error occurs. -SSEEEE AALLSSOO +SEE ALSO sendmail(8) -HHIISSTTOORRYY - The mmaaiillqq command appeared in 4.0BSD. +HISTORY + The mailq command appeared in 4.0BSD. diff --git a/src/main.c b/src/main.c index 38eebbfe2945..a79733448039 100644 --- a/src/main.c +++ b/src/main.c @@ -16,6 +16,7 @@ #include #include #include +#include #ifndef lint SM_UNUSED(static char copyright[]) = @@ -31,10 +32,14 @@ SM_RCSID("@(#)$Id: main.c,v 8.988 2013-11-23 02:52:37 gshapiro Exp $") #if NETINET || NETINET6 # include -#endif /* NETINET || NETINET6 */ +# if DANE +# include "sm_resolve.h" +# endif +#endif /* for getcfname() */ #include +#include static SM_DEBUG_T DebugNoPRestart = SM_DEBUG_INITIALIZER("no_persistent_restart", @@ -51,7 +56,7 @@ static SIGFUNC_DECL sigpipe __P((int)); static SIGFUNC_DECL sigterm __P((int)); #ifdef SIGUSR1 static SIGFUNC_DECL sigusr1 __P((int)); -#endif /* SIGUSR1 */ +#endif /* ** SENDMAIL -- Post mail to a set of destinations. @@ -104,7 +109,7 @@ char *Mbdb = "pw"; /* mailbox database defaults to /etc/passwd */ #ifdef NGROUPS_MAX GIDSET_T InitialGidSet[NGROUPS_MAX]; -#endif /* NGROUPS_MAX */ +#endif #define MAXCONFIGLEVEL 10 /* highest config version level known */ @@ -122,7 +127,7 @@ int SyslogPrefixLen; /* estimated length of syslog prefix */ #define PIDLEN 6 /* pid length for computing SyslogPrefixLen */ #ifndef SL_FUDGE # define SL_FUDGE 10 /* fudge offset for SyslogPrefixLen */ -#endif /* ! SL_FUDGE */ +#endif #define SLDLL 8 /* est. length of default syslog label */ @@ -194,7 +199,7 @@ main(argc, argv, envp) char *emptyenviron[1]; #if STARTTLS bool tls_ok; -#endif /* STARTTLS */ +#endif QUEUE_CHAR *new; ENVELOPE *e; extern int DtableSize; @@ -204,11 +209,11 @@ main(argc, argv, envp) extern char **environ; #if SASL extern void sm_sasl_init __P((void)); -#endif /* SASL */ +#endif #if USE_ENVIRON envp = environ; -#endif /* USE_ENVIRON */ +#endif /* turn off profiling */ SM_PROF(0); @@ -277,12 +282,12 @@ main(argc, argv, envp) #if LOG # ifndef SM_LOG_STR # define SM_LOG_STR "sendmail" -# endif /* ! SM_LOG_STR */ -# ifdef LOG_MAIL +# endif +# ifdef LOG_MAIL openlog(SM_LOG_STR, LOG_PID, LOG_MAIL); -# else /* LOG_MAIL */ +# else openlog(SM_LOG_STR, LOG_PID); -# endif /* LOG_MAIL */ +# endif #endif /* LOG */ /* @@ -308,11 +313,11 @@ main(argc, argv, envp) LocalDaemon = false; # if NETINET6 V6LoopbackAddrFound = false; -# endif /* NETINET6 */ -#endif /* _FFR_LOCAL_DAEMON */ +# endif +#endif #if XDEBUG checkfd012("after openlog"); -#endif /* XDEBUG */ +#endif tTsetup(tTdvect, sizeof(tTdvect), "0-99.1,*_trace_*.1"); @@ -382,7 +387,7 @@ main(argc, argv, envp) #endif /* defined(sony_news) */ #ifndef OPTIONS # define OPTIONS "A:B:b:C:cD:d:e:F:f:Gh:IiL:M:mN:nO:o:p:Q:q:R:r:sTtV:vX:" -#endif /* ! OPTIONS */ +#endif /* Set to 0 to allow -b; need to check optarg before using it! */ opterr = 0; @@ -507,11 +512,11 @@ main(argc, argv, envp) *p = '*'; } closelog(); -# ifdef LOG_MAIL +# ifdef LOG_MAIL openlog(sysloglabel, LOG_PID, LOG_MAIL); -# else /* LOG_MAIL */ +# else openlog(sysloglabel, LOG_PID); -# endif /* LOG_MAIL */ +# endif } #endif /* LOG */ @@ -616,7 +621,7 @@ main(argc, argv, envp) sm_printoptions(OsCompileOptions); #ifdef _PATH_UNIX sm_dprintf("Kernel symbols:\t%s\n", _PATH_UNIX); -#endif /* _PATH_UNIX */ +#endif sm_dprintf(" Conf file:\t%s (default for MSP)\n", getcfname(OpMode, SubmitMode, SM_GET_SUBMIT_CF, @@ -650,7 +655,7 @@ main(argc, argv, envp) sm_dprintf(" OpenSSL: compiled 0x%08x\n", (uint) OPENSSL_VERSION_NUMBER); sm_dprintf(" OpenSSL: linked 0x%08x\n", - (uint) SSLeay()); + (uint) TLS_version_num()); } #endif /* STARTTLS */ @@ -700,7 +705,7 @@ main(argc, argv, envp) _res.options &= ~RES_DEBUG; # ifdef RES_NOALIASES _res.options |= RES_NOALIASES; -# endif /* RES_NOALIASES */ +# endif TimeOuts.res_retry[RES_TO_DEFAULT] = _res.retry; TimeOuts.res_retry[RES_TO_FIRST] = _res.retry; TimeOuts.res_retry[RES_TO_NORMAL] = _res.retry; @@ -768,7 +773,7 @@ main(argc, argv, envp) # endif /* NETINET6 */ # if NETINET struct in_addr ia; -# endif /* NETINET */ +# endif char ipbuf[103]; ipbuf[0] = '\0'; @@ -809,7 +814,7 @@ main(argc, argv, envp) #if NETINET6 freehostent(hp); hp = NULL; -#endif /* NETINET6 */ +#endif } /* current time */ @@ -1193,7 +1198,7 @@ main(argc, argv, envp) #if defined(__osf__) || defined(_AIX3) case 'x': /* random flag that OSF/1 & AIX mailx passes */ break; -#endif /* defined(__osf__) || defined(_AIX3) */ +#endif #if defined(sony_news) case 'E': case 'J': /* ignore flags for Japanese code conversion @@ -1241,14 +1246,14 @@ main(argc, argv, envp) #if XDEBUG checkfd012("before readcf"); -#endif /* XDEBUG */ +#endif vendor_pre_defaults(&BlankEnvelope); readcf(getcfname(OpMode, SubmitMode, cftype, conffile), safecf, &BlankEnvelope); #if !defined(_USE_SUN_NSSWITCH_) && !defined(_USE_DEC_SVC_CONF_) ConfigFileRead = true; -#endif /* !defined(_USE_SUN_NSSWITCH_) && !defined(_USE_DEC_SVC_CONF_) */ +#endif vendor_post_defaults(&BlankEnvelope); /* now we can complain about missing fds */ @@ -1320,7 +1325,7 @@ main(argc, argv, envp) #if NAMED_BIND if (FallbackMX != NULL) (void) getfallbackmxrr(FallbackMX); -#endif /* NAMED_BIND */ +#endif if (SuperSafe == SAFE_INTERACTIVE && !SM_IS_INTERACTIVE(CurEnv->e_sendmode)) { @@ -1391,7 +1396,7 @@ main(argc, argv, envp) #if NAMED_BIND _res.retry = TimeOuts.res_retry[RES_TO_DEFAULT]; _res.retrans = TimeOuts.res_retrans[RES_TO_DEFAULT]; -#endif /* NAMED_BIND */ +#endif /* ** Find our real host name for future logging. @@ -1854,6 +1859,9 @@ main(argc, argv, envp) /* MIME message/xxx subtypes that can be treated as messages */ setclass('s', "rfc822"); +#if _FFR_EAI + setclass('s', "global"); +#endif /* MIME Content-Transfer-Encodings that can be encoded */ setclass('e', "7bit"); @@ -1964,11 +1972,11 @@ main(argc, argv, envp) #if SASL /* sendmail specific SASL initialization */ sm_sasl_init(); -#endif /* SASL */ +#endif #if XDEBUG checkfd012("before main() initmaps"); -#endif /* XDEBUG */ +#endif /* ** Do operation-mode-dependent initialization. @@ -1983,8 +1991,6 @@ main(argc, argv, envp) (void) sm_signal(SIGPIPE, sigpipe); if (qgrp != NOQGRP) { - int j; - /* Selecting a particular queue group to run */ for (j = 0; j < Queue[qgrp]->qg_numqueues; j++) { @@ -2164,13 +2170,15 @@ main(argc, argv, envp) if (tls_ok) { /* basic TLS initialization */ - tls_ok = init_tls_library(FipsMode); - if (!tls_ok && FipsMode) + j = init_tls_library(FipsMode); + if (j < 0) { (void) sm_io_fprintf(smioout, SM_TIME_DEFAULT, - "ERROR: FIPSMode failed to initialize\n"); + "ERROR: TLS failed to initialize\n"); exit(EX_USAGE); } + if (j > 0) + tls_ok = false; } if (!tls_ok && (OpMode == MD_QUEUERUN || OpMode == MD_DELIVER)) @@ -2191,7 +2199,7 @@ main(argc, argv, envp) #if STARTTLS /* init TLS for client, ignore result for now */ (void) initclttls(tls_ok); -#endif /* STARTTLS */ +#endif /* ** The parent process of the caller of runqueue() needs @@ -2295,7 +2303,7 @@ main(argc, argv, envp) /* NOTREACHED */ } -# if SASL +#if SASL if (OpMode == MD_SMTP || OpMode == MD_DAEMON) { /* check whether AUTH is turned off for the server */ @@ -2304,7 +2312,7 @@ main(argc, argv, envp) syserr("!sasl_server_init failed! [%s]", sasl_errstring(i, NULL, NULL)); } -# endif /* SASL */ +#endif /* SASL */ if (OpMode == MD_SMTP) { @@ -2382,7 +2390,7 @@ main(argc, argv, envp) "starting daemon (%s): %s", Version, dtype + 1); #if XLA xla_create_file(); -#endif /* XLA */ +#endif /* save daemon type in a macro for possible PidFile use */ macdefine(&BlankEnvelope.e_macro, A_TEMP, @@ -2562,7 +2570,7 @@ main(argc, argv, envp) #if STARTTLS /* init TLS for server, ignore result for now */ (void) initsrvtls(tls_ok); -#endif /* STARTTLS */ +#endif nextreq: p_flags = getrequests(&MainEnvelope); @@ -2623,8 +2631,19 @@ main(argc, argv, envp) if (LogLevel > 9) { + p = authinfo; + if (NULL == p) + { + if (NULL != RealHostName) + p = RealHostName; + else + p = anynet_ntoa(&RealHostAddr); + if (NULL == p) + p = "unknown"; + } + /* log connection information */ - sm_syslog(LOG_INFO, NULL, "connect from %s", authinfo); + sm_syslog(LOG_INFO, NULL, "connect from %s", p); } /* @@ -2704,7 +2723,7 @@ main(argc, argv, envp) #if STARTTLS if (OpMode == MD_SMTP) (void) initsrvtls(tls_ok); -#endif /* STARTTLS */ +#endif /* turn off profiling */ SM_PROF(1); @@ -2748,7 +2767,7 @@ main(argc, argv, envp) RealUserName, from, warn_f_flag); #if SASL auth = false; -#endif /* SASL */ +#endif } if (auth) { @@ -2927,7 +2946,7 @@ main(argc, argv, envp) #if NAMED_BIND _res.retry = TimeOuts.res_retry[RES_TO_FIRST]; _res.retrans = TimeOuts.res_retrans[RES_TO_FIRST]; -#endif /* NAMED_BIND */ +#endif next = e->e_sibling; e->e_sibling = NULL; @@ -2994,6 +3013,17 @@ finis(drop, cleanup, exitstat) sm_clear_events(); (void) sm_releasesignal(SIGALRM); +#if RATECTL_DEBUG || _FFR_OCC + /* do this only in "main" process */ + if (DaemonPid == getpid()) + { + SM_FILE_T *fp; + + fp = sm_debug_file(); + if (fp != NULL) + dump_ch(fp); + } +#endif if (tTd(2, 1)) { sm_dprintf("\n====finis: stat %d e_id=%s e_flags=", @@ -3046,16 +3076,16 @@ finis(drop, cleanup, exitstat) #if USERDB /* close UserDatabase */ _udbx_close(); -#endif /* USERDB */ +#endif #if SASL stop_sasl_client(); -#endif /* SASL */ +#endif #if XLA /* clean up extended load average stuff */ xla_all_end(); -#endif /* XLA */ +#endif SM_FINALLY /* @@ -3074,7 +3104,7 @@ finis(drop, cleanup, exitstat) pid = getpid(); #if SM_CONF_SHM cleanup_shm(DaemonPid == pid); -#endif /* SM_CONF_SHM */ +#endif /* close locked pid file */ close_sendmail_pid(); @@ -3091,14 +3121,14 @@ finis(drop, cleanup, exitstat) sm_mbdb_terminate(); #if _FFR_MEMSTAT (void) sm_memstat_close(); -#endif /* _FFR_MEMSTAT */ +#endif (void) setuid(RealUid); #if SM_HEAP_CHECK /* dump the heap, if we are checking for memory leaks */ if (sm_debug_active(&SmHeapCheck, 2)) sm_heap_report(smioout, sm_debug_level(&SmHeapCheck) - 1); -#endif /* SM_HEAP_CHECK */ +#endif if (sm_debug_active(&SmXtrapReport, 1)) sm_dprintf("xtrap count = %d\n", SmXtrapCount); if (cleanup) @@ -3333,7 +3363,8 @@ disconnect(droplev, e) if (tTd(52, 1)) sm_dprintf("disconnect: In %d Out %d, e=%p\n", sm_io_getinfo(InChannel, SM_IO_WHAT_FD, NULL), - sm_io_getinfo(OutChannel, SM_IO_WHAT_FD, NULL), e); + sm_io_getinfo(OutChannel, SM_IO_WHAT_FD, NULL), + (void *)e); if (tTd(52, 100)) { sm_dprintf("don't\n"); @@ -3422,7 +3453,7 @@ disconnect(droplev, e) #if XDEBUG checkfd012("disconnect"); -#endif /* XDEBUG */ +#endif if (LogLevel > 71) sm_syslog(LOG_DEBUG, e->e_id, "in background, pid=%d", @@ -3460,7 +3491,7 @@ obsolete(argv) ap[1] != 'd' && #if defined(sony_news) ap[1] != 'E' && ap[1] != 'J' && -#endif /* defined(sony_news) */ +#endif argv[1] != NULL && argv[1][0] != '-') { argv++; @@ -3711,7 +3742,7 @@ sigusr1(sig) dumpstate("user signal"); # if SM_HEAP_CHECK dumpstab(); -# endif /* SM_HEAP_CHECK */ +# endif errno = save_errno; return SIGFUNC_RETURN; } @@ -4156,10 +4187,10 @@ testmodeline(line, e) register char *wd; char delim; - while (*p != '\0' && isascii(*p) && isspace(*p)) + while (*p != '\0' && SM_ISSPACE(*p)) p++; wd = p; - while (*p != '\0' && !(isascii(*p) && isspace(*p))) + while (*p != '\0' && !(SM_ISSPACE(*p))) p++; delim = *p; *p = '\0'; @@ -4286,12 +4317,12 @@ testmodeline(line, e) case '/': /* miscellaneous commands */ p = &line[strlen(line)]; - while (--p >= line && isascii(*p) && isspace(*p)) + while (--p >= line && SM_ISSPACE(*p)) *p = '\0'; p = strpbrk(line, " \t"); if (p != NULL) { - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) *p++ = '\0'; } else @@ -4322,11 +4353,16 @@ testmodeline(line, e) "Usage: /mx address\n"); return; } - nmx = getmxrr(p, mxhosts, NULL, false, &rcode, true, - NULL); - (void) sm_io_fprintf(smioout, SM_TIME_DEFAULT, - "getmxrr(%s) returns %d value(s):\n", - p, nmx); + nmx = getmxrr(p, mxhosts, NULL, TRYFALLBACK, &rcode, + NULL, -1); + if (nmx == NULLMX) + (void) sm_io_fprintf(smioout, SM_TIME_DEFAULT, + "getmxrr(%s) returns null MX (See RFC7505)\n", + p); + else + (void) sm_io_fprintf(smioout, SM_TIME_DEFAULT, + "getmxrr(%s) returns %d value(s):\n", + p, nmx); for (i = 0; i < nmx; i++) (void) sm_io_fprintf(smioout, SM_TIME_DEFAULT, "\t%s\n", mxhosts[i]); @@ -4368,7 +4404,7 @@ testmodeline(line, e) "Usage: /map mapname key\n"); return; } - for (q = p; *q != '\0' && !(isascii(*q) && isspace(*q)); q++) + for (q = p; *q != '\0' && !(SM_ISSPACE(*q)); q++) continue; if (*q == '\0') { @@ -4415,7 +4451,7 @@ testmodeline(line, e) q = strpbrk(p, " \t"); if (q != NULL) { - while (isascii(*q) && isspace(*q)) + while (SM_ISSPACE(*q)) *q++ = '\0'; } if (q == NULL || *q == '\0') @@ -4535,7 +4571,7 @@ testmodeline(line, e) q = strpbrk(p, " \t"); if (q != NULL) { - while (isascii(*q) && isspace(*q)) + while (SM_ISSPACE(*q)) *q++ = '\0'; # if NETINET6 if (*q != '\0' && (strcmp(q, "inet6") == 0 || @@ -4546,6 +4582,58 @@ testmodeline(line, e) (void) sm_gethostbyname(p, family); } #endif /* NETINET || NETINET6 */ +#if DANE + else if (sm_strcasecmp(&line[1], "dnslookup") == 0) + { + DNS_REPLY_T *r; + int rr_type, family; + unsigned int flags; + + rr_type = T_A; + family = AF_INET; + flags = RR_AS_TEXT; + q = strpbrk(p, " \t"); + if (q != NULL) + { + char *pflags; + + while (SM_ISSPACE(*q)) + *q++ = '\0'; + pflags = strpbrk(q, " \t"); + if (pflags != NULL) + { + while (SM_ISSPACE(*pflags)) + *pflags++ = '\0'; + } + rr_type = dns_string_to_type(q); + if (rr_type == T_A) + family = AF_INET; +# if NETINET6 + if (rr_type == T_AAAA) + family = AF_INET6; +# endif + while (pflags != NULL && *pflags != '\0' && + !SM_ISSPACE(*pflags)) + { + if (*pflags == 'c') + flags |= RR_NO_CNAME; + else if (*pflags == 'o') + flags |= RR_ONLY_CNAME; + else if (*pflags == 'T') + flags &= ~RR_AS_TEXT; + ++pflags; + } + } + r = dns_lookup_int(p, C_IN, rr_type, + 0, 0, 0, flags, NULL, NULL); + if (r != NULL && family >= 0) + { + (void) dns2he(r, family); + dns_free_data(r); + r = NULL; + } + } +#endif /* DANE */ else { (void) sm_io_fprintf(smioout, SM_TIME_DEFAULT, @@ -4556,10 +4644,10 @@ testmodeline(line, e) return; } - for (p = line; isascii(*p) && isspace(*p); p++) + for (p = line; SM_ISSPACE(*p); p++) continue; q = p; - while (*p != '\0' && !(isascii(*p) && isspace(*p))) + while (*p != '\0' && !(SM_ISSPACE(*p))) p++; if (*p == '\0') { diff --git a/src/map.c b/src/map.c index 2cc283e5f52c..0931ea69235b 100644 --- a/src/map.c +++ b/src/map.c @@ -17,7 +17,7 @@ SM_RCSID("@(#)$Id: map.c,v 8.713 2013-11-22 20:51:55 ca Exp $") #if LDAPMAP # include -#endif /* LDAPMAP */ +#endif #if NDBM # include @@ -30,43 +30,46 @@ SM_RCSID("@(#)$Id: map.c,v 8.713 2013-11-22 20:51:55 ca Exp $") #endif /* NDBM */ #if NEWDB # include "sm/bdb.h" -#endif /* NEWDB */ +#endif #if NIS struct dom_binding; /* forward reference needed on IRIX */ # include # if NDBM # define NDBM_YP_COMPAT /* create YP-compatible NDBM files */ -# endif /* NDBM */ +# endif #endif /* NIS */ +#if CDB +# include +#endif #include "map.h" #if NEWDB # if DB_VERSION_MAJOR < 2 static bool db_map_open __P((MAP *, int, char *, DBTYPE, const void *)); -# endif /* DB_VERSION_MAJOR < 2 */ +# endif # if DB_VERSION_MAJOR == 2 static bool db_map_open __P((MAP *, int, char *, DBTYPE, DB_INFO *)); -# endif /* DB_VERSION_MAJOR == 2 */ +# endif # if DB_VERSION_MAJOR > 2 static bool db_map_open __P((MAP *, int, char *, DBTYPE, void **)); -# endif /* DB_VERSION_MAJOR > 2 */ +# endif #endif /* NEWDB */ static bool extract_canonname __P((char *, char *, char *, char[], int)); static void map_close __P((STAB *, int)); static void map_init __P((STAB *, int)); #ifdef LDAPMAP static STAB * ldapmap_findconn __P((SM_LDAP_STRUCT *)); -#endif /* LDAPMAP */ +#endif #if NISPLUS static bool nisplus_getcanonname __P((char *, int, int *)); -#endif /* NISPLUS */ +#endif #if NIS static bool nis_getcanonname __P((char *, int, int *)); -#endif /* NIS */ +#endif #if NETINFO static bool ni_getcanonname __P((char *, int, int *)); -#endif /* NETINFO */ +#endif static bool text_getcanonname __P((char *, int, int *)); #if SOCKETMAP static STAB *socket_map_findconn __P((const char*)); @@ -81,9 +84,9 @@ static STAB *socket_map_findconn __P((const char*)); #else /* ENOSYS */ # ifdef EFTYPE # define SM_EMAPCANTWRITE EFTYPE -# else /* EFTYPE */ +# else # define SM_EMAPCANTWRITE ENXIO -# endif /* EFTYPE */ +# endif #endif /* ENOSYS */ /* @@ -128,9 +131,9 @@ static STAB *socket_map_findconn __P((const char*)); #if O_EXLOCK && HASFLOCK && !BOGUS_O_EXCL # define LOCK_ON_OPEN 1 /* we can open/create a locked file */ -#else /* O_EXLOCK && HASFLOCK && !BOGUS_O_EXCL */ +#else # define LOCK_ON_OPEN 0 /* no such luck -- bend over backwards */ -#endif /* O_EXLOCK && HASFLOCK && !BOGUS_O_EXCL */ +#endif /* ** MAP_PARSEARGS -- parse config line arguments for database lookup @@ -165,45 +168,24 @@ map_parseargs(map, ap) map->map_spacesub = SpaceSub; /* default value */ for (;;) { - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; if (*p != '-') break; switch (*++p) { - case 'N': - map->map_mflags |= MF_INCLNULL; - map->map_mflags &= ~MF_TRY0NULL; - break; - - case 'O': - map->map_mflags &= ~MF_TRY1NULL; - break; - - case 'o': - map->map_mflags |= MF_OPTIONAL; - break; - - case 'f': - map->map_mflags |= MF_NOFOLDCASE; - break; - - case 'm': - map->map_mflags |= MF_MATCHONLY; - break; - case 'A': map->map_mflags |= MF_APPEND; break; - case 'q': - map->map_mflags |= MF_KEEPQUOTES; - break; - case 'a': map->map_app = ++p; break; + case 'D': + map->map_mflags |= MF_DEFER; + break; + case 'd': { char *h; @@ -218,8 +200,8 @@ map_parseargs(map, ap) } break; - case 'T': - map->map_tapp = ++p; + case 'f': + map->map_mflags |= MF_NOFOLDCASE; break; case 'k': @@ -228,6 +210,39 @@ map_parseargs(map, ap) map->map_keycolnm = p; break; + case 'm': + map->map_mflags |= MF_MATCHONLY; + break; + + case 'N': + map->map_mflags |= MF_INCLNULL; + map->map_mflags &= ~MF_TRY0NULL; + break; + + case 'O': + map->map_mflags &= ~MF_TRY1NULL; + break; + + case 'o': + map->map_mflags |= MF_OPTIONAL; + break; + + case 'q': + map->map_mflags |= MF_KEEPQUOTES; + break; + + case 'S': + map->map_spacesub = *++p; + break; + + case 'T': + map->map_tapp = ++p; + break; + + case 't': + map->map_mflags |= MF_NODEFER; + break; + case 'v': while (isascii(*++p) && isspace(*p)) continue; @@ -255,24 +270,11 @@ map_parseargs(map, ap) } break; - case 't': - map->map_mflags |= MF_NODEFER; - break; - - - case 'S': - map->map_spacesub = *++p; - break; - - case 'D': - map->map_mflags |= MF_DEFER; - break; - default: syserr("Illegal option %c map %s", *p, map->map_mname); break; } - while (*p != '\0' && !(isascii(*p) && isspace(*p))) + while (*p != '\0' && !(SM_ISSPACE(*p))) p++; if (*p != '\0') *p++ = '\0'; @@ -289,14 +291,14 @@ map_parseargs(map, ap) if (*p != '\0') { map->map_file = p; - while (*p != '\0' && !(isascii(*p) && isspace(*p))) + while (*p != '\0' && !(SM_ISSPACE(*p))) p++; if (*p != '\0') *p++ = '\0'; map->map_file = newstr(map->map_file); } - while (*p != '\0' && isascii(*p) && isspace(*p)) + while (*p != '\0' && SM_ISSPACE(*p)) p++; if (*p != '\0') map->map_rebuild = newstr(p); @@ -454,11 +456,11 @@ initmaps() { #if XDEBUG checkfd012("entering initmaps"); -#endif /* XDEBUG */ +#endif stabapply(map_init, 0); #if XDEBUG checkfd012("exiting initmaps"); -#endif /* XDEBUG */ +#endif } /* ** MAP_INIT -- rebuild a map @@ -629,7 +631,6 @@ closemaps(bogus) ** none. */ -/* ARGSUSED1 */ static void map_close(s, bogus) register STAB *s; @@ -729,11 +730,11 @@ sun_init_domain() ** pttl -- pointer to return TTL (can be NULL). ** ** Returns: -** true -- if the host was found. -** false -- otherwise. +** >0 -- if the host was found. +** 0 -- otherwise. */ -bool +int getcanonname(host, hbsize, trymx, pttl) char *host; int hbsize; @@ -751,9 +752,10 @@ getcanonname(host, hbsize, trymx, pttl) bool should_try_nis_domain = false; static char *nis_domain = NULL; #endif + bool secure = true; /* consider all maps secure by default */ nmaps = switch_map_find("hosts", maptype, mapreturn); - if (pttl != 0) + if (pttl != NULL) *pttl = SM_DEFAULT_TTL; for (mapno = 0; mapno < nmaps; mapno++) { @@ -773,7 +775,7 @@ getcanonname(host, hbsize, trymx, pttl) # if defined(SUN_EXTENSIONS) && defined(SUN_INIT_DOMAIN) if (nis_domain == NULL) nis_domain = sun_init_domain(); -# endif /* defined(SUN_EXTENSIONS) && defined(SUN_INIT_DOMAIN) */ +# endif } #endif /* NIS */ #if NISPLUS @@ -783,13 +785,18 @@ getcanonname(host, hbsize, trymx, pttl) # if defined(SUN_EXTENSIONS) && defined(SUN_INIT_DOMAIN) if (nis_domain == NULL) nis_domain = sun_init_domain(); -# endif /* defined(SUN_EXTENSIONS) && defined(SUN_INIT_DOMAIN) */ +# endif } #endif /* NISPLUS */ #if NAMED_BIND else if (strcmp("dns", maptype[mapno]) == 0) { - found = dns_getcanonname(host, hbsize, trymx, &status, pttl); + int r; + + r = dns_getcanonname(host, hbsize, trymx, &status, + pttl); + secure = HOST_SECURE == r; + found = r > 0; } #endif /* NAMED_BIND */ #if NETINFO @@ -841,7 +848,7 @@ getcanonname(host, hbsize, trymx, pttl) char *d; if (tTd(38, 20)) - sm_dprintf("getcanonname(%s), found\n", host); + sm_dprintf("getcanonname(%s), found, ad=%d\n", host, secure); /* ** If returned name is still single token, compensate @@ -870,10 +877,10 @@ getcanonname(host, hbsize, trymx, pttl) goto try_nis_domain; } #endif /* defined(SUN_EXTENSIONS) && defined(SUN_INIT_DOMAIN) */ - return false; + return HOST_NOTFOUND; } } - return true; + return secure ? HOST_SECURE : HOST_OK; } #if defined(SUN_EXTENSIONS) && defined(SUN_INIT_DOMAIN) @@ -884,7 +891,7 @@ getcanonname(host, hbsize, trymx, pttl) strlen(nis_domain) + strlen(host) + 1 < hbsize) { (void) sm_strlcat2(host, ".", nis_domain, hbsize); - return true; + return HOST_OK; } } #endif /* defined(SUN_EXTENSIONS) && defined(SUN_INIT_DOMAIN) */ @@ -898,7 +905,7 @@ getcanonname(host, hbsize, trymx, pttl) else SM_SET_H_ERRNO(HOST_NOT_FOUND); - return false; + return HOST_NOTFOUND; } /* ** EXTRACT_CANONNAME -- extract canonical name from /etc/hosts entry @@ -982,7 +989,7 @@ extract_canonname(name, dot, line, cbuf, cbuflen) # include "sm_resolve.h" # if NETINET || NETINET6 # include -# endif /* NETINET || NETINET6 */ +# endif /* ** DNS_MAP_OPEN -- stub to check proper value for dns map type @@ -1023,6 +1030,7 @@ dns_map_open(map, mode) struct dns_map { int dns_m_type; + unsigned int dns_m_options; }; bool @@ -1034,56 +1042,54 @@ dns_map_parseargs(map,args) struct dns_map *map_p; map_p = (struct dns_map *) xalloc(sizeof(*map_p)); + memset(map_p, '\0', sizeof(*map_p)); map_p->dns_m_type = -1; map->map_mflags |= MF_TRY0NULL|MF_TRY1NULL; for (;;) { - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; if (*p != '-') break; switch (*++p) { - case 'N': - map->map_mflags |= MF_INCLNULL; - map->map_mflags &= ~MF_TRY0NULL; - break; - - case 'O': - map->map_mflags &= ~MF_TRY1NULL; - break; - - case 'o': - map->map_mflags |= MF_OPTIONAL; - break; - - case 'f': - map->map_mflags |= MF_NOFOLDCASE; - break; - - case 'm': - map->map_mflags |= MF_MATCHONLY; +#if DNSSEC_TEST + case '@': + ++p; + if (nsportip(p) < 0) + syserr("dns map %s: nsportip(%s)=failed", + map->map_mname, p); break; +#endif /* DNSSEC_TEST */ case 'A': map->map_mflags |= MF_APPEND; break; - case 'q': - map->map_mflags |= MF_KEEPQUOTES; - break; - - case 't': - map->map_mflags |= MF_NODEFER; - break; - case 'a': map->map_app = ++p; break; - case 'T': - map->map_tapp = ++p; + case 'B': /* base domain */ + { + char *h; + + while (isascii(*++p) && isspace(*p)) + continue; + h = strchr(p, ' '); + if (h != NULL) + *h = '\0'; + + /* + ** slight abuse of map->map_file; it isn't + ** used otherwise in this map type. + */ + + map->map_file = newstr(p); + if (h != NULL) + *h = ' '; + } break; case 'd': @@ -1100,12 +1106,51 @@ dns_map_parseargs(map,args) } break; + case 'f': + map->map_mflags |= MF_NOFOLDCASE; + break; + + case 'm': + map->map_mflags |= MF_MATCHONLY; + break; + + case 'N': + map->map_mflags |= MF_INCLNULL; + map->map_mflags &= ~MF_TRY0NULL; + break; + + case 'O': + map->map_mflags &= ~MF_TRY1NULL; + break; + + case 'o': + map->map_mflags |= MF_OPTIONAL; + break; + + case 'q': + map->map_mflags |= MF_KEEPQUOTES; + break; + + case 'S': +#if defined(RES_USE_EDNS0) && defined(RES_USE_DNSSEC) + map_p->dns_m_options |= SM_RES_DNSSEC; +#endif + break; + case 'r': while (isascii(*++p) && isspace(*p)) continue; map->map_retry = atoi(p); break; + case 't': + map->map_mflags |= MF_NODEFER; + break; + + case 'T': + map->map_tapp = ++p; + break; + case 'z': if (*++p != '\\') map->map_coldelim = *p; @@ -1152,28 +1197,8 @@ dns_map_parseargs(map,args) } break; - case 'B': /* base domain */ - { - char *h; - - while (isascii(*++p) && isspace(*p)) - continue; - h = strchr(p, ' '); - if (h != NULL) - *h = '\0'; - - /* - ** slight abuse of map->map_file; it isn't - ** used otherwise in this map type. - */ - - map->map_file = newstr(p); - if (h != NULL) - *h = ' '; - } - break; } - while (*p != '\0' && !(isascii(*p) && isspace(*p))) + while (*p != '\0' && !(SM_ISSPACE(*p))) p++; if (*p != '\0') *p++ = '\0'; @@ -1222,15 +1247,17 @@ dns_map_lookup(map, name, av, statp) struct dns_map *map_p; RESOURCE_RECORD_T *rr = NULL; DNS_REPLY_T *r = NULL; + unsigned int options; # if NETINET6 static char buf6[INET6_ADDRSTRLEN]; -# endif /* NETINET6 */ +# endif if (tTd(38, 20)) sm_dprintf("dns_map_lookup(%s, %s)\n", map->map_mname, name); map_p = (struct dns_map *)(map->map_db1); + options = map_p->dns_m_options; if (map->map_file != NULL && *map->map_file != '\0') { size_t len; @@ -1244,14 +1271,14 @@ dns_map_lookup(map, name, av, statp) return NULL; } (void) sm_strlcpyn(appdomain, len, 3, name, ".", map->map_file); - r = dns_lookup_int(appdomain, C_IN, map_p->dns_m_type, - map->map_timeout, map->map_retry); + r = dns_lookup_map(appdomain, C_IN, map_p->dns_m_type, + map->map_timeout, map->map_retry, options); sm_free(appdomain); } else { - r = dns_lookup_int(name, C_IN, map_p->dns_m_type, - map->map_timeout, map->map_retry); + r = dns_lookup_map(name, C_IN, map_p->dns_m_type, + map->map_timeout, map->map_retry, options); } if (r == NULL) @@ -1312,6 +1339,12 @@ dns_map_lookup(map, name, av, statp) sizeof(buf6)); break; # endif /* NETINET6 */ +# ifdef T_TLSA + case T_TLSA: + type = "T_TLSA"; + value = rr->rr_u.rr_txt; + break; +# endif /* T_TLSA */ } (void) strreplnonprt(value, 'X'); @@ -1396,8 +1429,7 @@ dns_map_lookup(map, name, av, statp) cleanup: if (vp != NULL) sm_free(vp); - if (r != NULL) - dns_free_data(r); + dns_free_data(r); return result; } # endif /* DNSMAP */ @@ -1582,7 +1614,7 @@ ndbm_map_open(map, mode) # if !LOCK_ON_OPEN && !NOFTRUNCATE if (map->map_lockfd >= 0) (void) close(map->map_lockfd); -# endif /* !LOCK_ON_OPEN && !NOFTRUNCATE */ +# endif errno = save_errno; if (!bitset(MF_OPTIONAL, map->map_mflags)) syserr("Cannot open DBM database %s", map->map_file); @@ -1597,7 +1629,7 @@ ndbm_map_open(map, mode) # if !LOCK_ON_OPEN && !NOFTRUNCATE if (map->map_lockfd >= 0) (void) close(map->map_lockfd); -# endif /* !LOCK_ON_OPEN && !NOFTRUNCATE */ +# endif errno = 0; syserr("dbm map \"%s\": cannot support GDBM", map->map_mname); @@ -1612,7 +1644,7 @@ ndbm_map_open(map, mode) # if !LOCK_ON_OPEN && !NOFTRUNCATE if (map->map_lockfd >= 0) (void) close(map->map_lockfd); -# endif /* !LOCK_ON_OPEN && !NOFTRUNCATE */ +# endif errno = save_errno; syserr("ndbm_map_open(%s): file changed after open", map->map_file); @@ -1840,7 +1872,7 @@ ndbm_map_store(map, lhs, rhs) data.dptr = buf; if (tTd(38, 9)) sm_dprintf("ndbm_map_store append=%s\n", - (char *)data.dptr); + data.dptr); } } status = dbm_store((DBM *) map->map_db1, @@ -1900,7 +1932,7 @@ ndbm_map_close(map) # if !LOCK_ON_OPEN if (map->map_lockfd >= 0) (void) close(map->map_lockfd); -# endif /* !LOCK_ON_OPEN */ +# endif } #endif /* NDBM */ @@ -1928,10 +1960,10 @@ ndbm_map_close(map) # define h_nelem nelem # ifndef DB_CACHE_SIZE # define DB_CACHE_SIZE (1024 * 1024) /* database memory cache size */ -# endif /* ! DB_CACHE_SIZE */ +# endif # ifndef DB_HASH_NELEM # define DB_HASH_NELEM 4096 /* (starting) size of hash table */ -# endif /* ! DB_HASH_NELEM */ +# endif # endif /* DB_VERSION_MAJOR < 2 */ bool @@ -1941,13 +1973,13 @@ bt_map_open(map, mode) { # if DB_VERSION_MAJOR < 2 BTREEINFO btinfo; -# endif /* DB_VERSION_MAJOR < 2 */ +# endif # if DB_VERSION_MAJOR == 2 DB_INFO btinfo; -# endif /* DB_VERSION_MAJOR == 2 */ +# endif # if DB_VERSION_MAJOR > 2 void *btinfo = NULL; -# endif /* DB_VERSION_MAJOR > 2 */ +# endif if (tTd(38, 2)) sm_dprintf("bt_map_open(%s, %s, %d)\n", @@ -1957,7 +1989,7 @@ bt_map_open(map, mode) memset(&btinfo, '\0', sizeof(btinfo)); # ifdef DB_CACHE_SIZE btinfo.db_cachesize = DB_CACHE_SIZE; -# endif /* DB_CACHE_SIZE */ +# endif # endif /* DB_VERSION_MAJOR < 3 */ return db_map_open(map, mode, "btree", DB_BTREE, &btinfo); @@ -1970,13 +2002,13 @@ hash_map_open(map, mode) { # if DB_VERSION_MAJOR < 2 HASHINFO hinfo; -# endif /* DB_VERSION_MAJOR < 2 */ +# endif # if DB_VERSION_MAJOR == 2 DB_INFO hinfo; -# endif /* DB_VERSION_MAJOR == 2 */ +# endif # if DB_VERSION_MAJOR > 2 void *hinfo = NULL; -# endif /* DB_VERSION_MAJOR > 2 */ +# endif if (tTd(38, 2)) sm_dprintf("hash_map_open(%s, %s, %d)\n", @@ -1986,10 +2018,10 @@ hash_map_open(map, mode) memset(&hinfo, '\0', sizeof(hinfo)); # ifdef DB_HASH_NELEM hinfo.h_nelem = DB_HASH_NELEM; -# endif /* DB_HASH_NELEM */ +# endif # ifdef DB_CACHE_SIZE hinfo.db_cachesize = DB_CACHE_SIZE; -# endif /* DB_CACHE_SIZE */ +# endif # endif /* DB_VERSION_MAJOR < 3 */ return db_map_open(map, mode, "hash", DB_HASH, &hinfo); @@ -2003,13 +2035,13 @@ db_map_open(map, mode, mapclassname, dbtype, openinfo) DBTYPE dbtype; # if DB_VERSION_MAJOR < 2 const void *openinfo; -# endif /* DB_VERSION_MAJOR < 2 */ +# endif # if DB_VERSION_MAJOR == 2 DB_INFO *openinfo; -# endif /* DB_VERSION_MAJOR == 2 */ +# endif # if DB_VERSION_MAJOR > 2 void **openinfo; -# endif /* DB_VERSION_MAJOR > 2 */ +# endif { DB *db = NULL; int i; @@ -2143,7 +2175,7 @@ db_map_open(map, mode, mapclassname, dbtype, openinfo) int flags = 0; # if DB_VERSION_MAJOR > 2 int ret; -# endif /* DB_VERSION_MAJOR > 2 */ +# endif if (mode == O_RDONLY) flags |= DB_RDONLY; @@ -2216,7 +2248,7 @@ db_map_open(map, mode, mapclassname, dbtype, openinfo) # if !LOCK_ON_OPEN if (map->map_lockfd >= 0) (void) close(map->map_lockfd); -# endif /* !LOCK_ON_OPEN */ +# endif errno = save_errno; if (!bitset(MF_OPTIONAL, map->map_mflags)) syserr("Cannot open %s database %s", @@ -2226,7 +2258,7 @@ db_map_open(map, mode, mapclassname, dbtype, openinfo) # if DB_VERSION_MAJOR < 2 fd = db->fd(db); -# else /* DB_VERSION_MAJOR < 2 */ +# else fd = -1; errno = db->fd(db, &fd); # endif /* DB_VERSION_MAJOR < 2 */ @@ -2235,13 +2267,13 @@ db_map_open(map, mode, mapclassname, dbtype, openinfo) save_errno = errno; # if DB_VERSION_MAJOR < 2 (void) db->close(db); -# else /* DB_VERSION_MAJOR < 2 */ +# else errno = db->close(db, 0); # endif /* DB_VERSION_MAJOR < 2 */ # if !LOCK_ON_OPEN if (map->map_lockfd >= 0) (void) close(map->map_lockfd); -# endif /* !LOCK_ON_OPEN */ +# endif errno = save_errno; syserr("db_map_open(%s): file changed after open", buf); return false; @@ -2352,7 +2384,7 @@ db_map_lookup(map, name, av, statp) lockdb: # if DB_VERSION_MAJOR < 2 fd = db->fd(db); -# else /* DB_VERSION_MAJOR < 2 */ +# else fd = -1; errno = db->fd(db, &fd); # endif /* DB_VERSION_MAJOR < 2 */ @@ -2564,7 +2596,7 @@ db_map_store(map, lhs, rhs) } # if DB_VERSION_MAJOR < 2 status = db->put(db, &key, &data, 0); -# else /* DB_VERSION_MAJOR < 2 */ +# else status = errno = db->put(db, NULL, &key, &data, 0); # endif /* DB_VERSION_MAJOR < 2 */ } @@ -2633,6 +2665,389 @@ db_map_close(map) map->map_mname, map->map_file, map->map_mflags); } #endif /* NEWDB */ + +#if CDB +/* +** CDB Modules +*/ + +static bool smdb_add_extension __P((char *, int, char *, char *)); + +/* +** SMDB_ADD_EXTENSION -- Adds an extension to a file name. +** +** Just adds a . followed by a string to a db_name if there +** is room and the db_name does not already have that extension. +** +** Parameters: +** full_name -- The final file name. +** max_full_name_len -- The max length for full_name. +** db_name -- The name of the db. +** extension -- The extension to add. +** +** Returns: +** SMDBE_OK -- Success. +** Anything else is an error. Look up more info about the +** error in the comments for the specific open() used. +*/ + +static bool +smdb_add_extension(full_name, max_full_name_len, db_name, extension) + char *full_name; + int max_full_name_len; + char *db_name; + char *extension; +{ + int extension_len; + int db_name_len; + + if (full_name == NULL || db_name == NULL || extension == NULL) + return false; /* SMDBE_INVALID_PARAMETER; */ + + extension_len = strlen(extension); + db_name_len = strlen(db_name); + + if (extension_len + db_name_len + 2 > max_full_name_len) + return false; /* SMDBE_DB_NAME_TOO_LONG; */ + + if (db_name_len < extension_len + 1 || + db_name[db_name_len - extension_len - 1] != '.' || + strcmp(&db_name[db_name_len - extension_len], extension) != 0) + (void) sm_snprintf(full_name, max_full_name_len, "%s.%s", + db_name, extension); + else + (void) sm_strlcpy(full_name, db_name, max_full_name_len); + + return true; +} + +bool +cdb_map_open(map, mode) + MAP *map; + int mode; +{ + int fd, status, omode, smode; + long sff; + struct stat st; + char buf[MAXPATHLEN]; + + if (tTd(38, 2)) + sm_dprintf("cdb_map_open(%s, %s, %d)\n", + map->map_mname, map->map_file, mode); + map->map_db1 = (ARBPTR_T)NULL; + map->map_db2 = (ARBPTR_T)NULL; + + mode &= O_ACCMODE; + omode = mode; + + /* + ** Notes: + ** If a temporary file is used, then there must be some check + ** that the rename() is "safe" (i.e., does not overwrite some + ** "other" file created by an attacker). + ** + ** The code to add the extension and to set up safefile() + ** and open() should be in a common function + ** (it would be nice to re-use libsmdb?) + */ + + if (!smdb_add_extension(buf, sizeof(buf), map->map_file, CDBext)) + { + errno = 0; + if (!bitset(MF_OPTIONAL, map->map_mflags)) + syserr("cdb map \"%s\": map file %s name too long", + map->map_mname, map->map_file); + return false; + } + + sff = SFF_ROOTOK|SFF_REGONLY; + if (mode == O_RDWR) + { + if (sm_strlcat(buf, ".tmp", sizeof buf) >= sizeof buf) + { + errno = 0; + if (!bitset(MF_OPTIONAL, map->map_mflags)) + syserr("cdb map \"%s\": map file %s name too long", + map->map_mname, map->map_file); + return false; + } + sff |= SFF_CREAT; + if (!bitnset(DBS_WRITEMAPTOSYMLINK, DontBlameSendmail)) + sff |= SFF_NOSLINK; + if (!bitnset(DBS_WRITEMAPTOHARDLINK, DontBlameSendmail)) + sff |= SFF_NOHLINK; + smode = S_IWRITE; + } + else + { + smode = S_IREAD; + if (!bitnset(DBS_LINKEDMAPINWRITABLEDIR, DontBlameSendmail)) + sff |= SFF_NOWLINK; + } + if (!bitnset(DBS_MAPINUNSAFEDIRPATH, DontBlameSendmail)) + sff |= SFF_SAFEDIRPATH; + status = safefile(buf, RunAsUid, RunAsGid, RunAsUserName, sff, smode, &st); + if (status != 0) + { + char *prob = "unsafe"; + + /* cannot open this map */ + if (status == ENOENT) + prob = "missing"; + errno = status; + if (tTd(38, 2)) + sm_dprintf("\t%s map file: %s\n", prob, sm_errstring(status)); + if (!bitset(MF_OPTIONAL, map->map_mflags)) + syserr("%s map \"%s\": %s map file %s", + map->map_mname, prob, buf, sm_errstring(status)); + return false; + } + + if (st.st_mode == ST_MODE_NOFILE) + omode |= O_CREAT|O_EXCL; +# if LOCK_ON_OPEN + if (mode == O_RDWR) + omode |= O_TRUNC|O_EXLOCK; + else + omode |= O_SHLOCK; +# else + if (mode == O_RDWR) + omode |= O_TRUNC; +# endif /* LOCK_ON_OPEN */ + + fd = open(buf, omode, DBMMODE); + if (fd < 0) + { + if (!bitset(MF_OPTIONAL, map->map_mflags)) + syserr("cdb_map_open: cannot open database %s", buf); + return false; + } + +# if !LOCK_ON_OPEN + /* make sure no baddies slipped in just before the open... */ + if (filechanged(buf, fd, &st)) + { + int save_errno; + + save_errno = errno; + (void) close(fd); + errno = save_errno; + syserr("cdb_map_open(%s): file changed after open", buf); + return false; + } + + /* actually lock the opened file */ + if (!lockfile(fd, buf, NULL, mode == O_RDONLY ? LOCK_SH : LOCK_EX)) + syserr("cdb_map_open: cannot lock %s", buf); +# endif /* !LOCK_ON_OPEN */ + + /* only for aliases! */ + if (mode == O_RDWR) + { + struct cdb_make *cdbmp; + + cdbmp = (struct cdb_make *) xalloc(sizeof(*cdbmp)); + status = cdb_make_start(cdbmp, fd); + if (status != 0) + { + close(fd); + if (!bitset(MF_OPTIONAL, map->map_mflags)) + syserr("initialization of cdb map (make) failed"); + return false; + } + + map->map_db2 = (ARBPTR_T)cdbmp; + return true; + } + else + { + struct cdb *cdbp; + + cdbp = (struct cdb *) xalloc(sizeof(*cdbp)); + status = cdb_init(cdbp, fd); + if (status != 0) + { + close(fd); + if (!bitset(MF_OPTIONAL, map->map_mflags)) + syserr("initialization of cdb map failed"); + return false; + } + map->map_db1 = (ARBPTR_T)cdbp; + return true; + } + + /* NOTREACHED */ + return false; +} + +char * +cdb_map_lookup (map, name, av, statp) + MAP * map; + char *name; + char **av; + int *statp; +{ + char * data; + struct cdb *cdbmap; + unsigned int klen, dlen; + int st; + char key[MAXNAME+1]; + + data = NULL; + cdbmap = map->map_db1; + if (tTd(38, 20)) + sm_dprintf("cdb_map_lookup(%s, %s)\n", map->map_mname, name); + + klen = strlen(name); + if (klen > sizeof(key) - 1) + klen = sizeof(key) - 1; + memmove(key, name, klen); + key[klen] = '\0'; + + if (!bitset(MF_NOFOLDCASE, map->map_mflags)) + makelower(key); + + st = 0; + if (bitset(MF_TRY0NULL, map->map_mflags)) + { + st = cdb_find(cdbmap, key, klen); + if (st == 1) + map->map_mflags &= ~MF_TRY1NULL; + } + if (st != 1 && bitset(MF_TRY1NULL, map->map_mflags)) + { + st = cdb_find(cdbmap, key, klen + 1); + if (st == 1) + map->map_mflags &= ~MF_TRY0NULL; + } + if (st != 1) + { + if (st < 0) + syserr("cdb_map_lookup: get (%s)", name); + return NULL; + } + else + { + dlen = cdb_datalen(cdbmap); + data = malloc(dlen + 1); + cdb_read(cdbmap, data, dlen, cdb_datapos(cdbmap)); + data[dlen] = '\0'; + } + if (bitset(MF_MATCHONLY, map->map_mflags)) + return map_rewrite(map, name, strlen(name), NULL); + else + return map_rewrite(map, data, dlen, av); +} + +/* +** CDB_MAP_STORE -- store a datum in the CDB database +*/ + +void +cdb_map_store(map, lhs, rhs) + MAP *map; + char *lhs; + char *rhs; +{ + struct cdb_make *cdbmp; + size_t klen; + size_t vlen; + int status; + char keybuf[MAXNAME + 1]; + + cdbmp = map->map_db2; + if (cdbmp == NULL) + return; /* XXX */ + + klen = strlen(lhs); + vlen = strlen(rhs); + if (!bitset(MF_NOFOLDCASE, map->map_mflags)) + { + if (klen > sizeof(keybuf) - 1) + klen = sizeof(keybuf) - 1; + memmove(keybuf, lhs, klen); + keybuf[klen] = '\0'; + makelower(keybuf); + lhs = keybuf; + } + + if (bitset(MF_INCLNULL, map->map_mflags)) + { + klen++; + vlen++; + } + + /* flags? */ + status = cdb_make_put(cdbmp, lhs, klen, rhs, vlen, 0); + /* and now? */ +} + +void +cdb_map_close(map) + MAP * map; +{ + struct cdb *cdbp; + struct cdb_make *cdbmp; + int fd; + + fd = -1; + cdbp = map->map_db1; + if (cdbp != NULL) + { + if (tTd(38, 20)) + sm_dprintf("cdb_map_close(%p)\n", (void *)cdbp); + fd = cdb_fileno(cdbp); + cdb_free(cdbp); + sm_free(cdbp); + cdbp = NULL; + } + cdbmp = map->map_db2; + if (cdbmp != NULL) + { + char tmpfn[MAXPATHLEN], cdbfn[MAXPATHLEN]; + + if (tTd(38, 20)) + sm_dprintf("cdb_map_close(%p)\n", (void *)cdbmp); + fd = cdb_fileno(cdbmp); + + /* write out the distinguished alias */ + /* XXX Why isn't this in a common place? */ + cdb_map_store(map, "@", "@"); + + if (cdb_make_finish(cdbmp) != 0) + syserr("cdb: failed to write %s", map->map_file); + if (fd >=0) + { + if (fsync(fd) == -1) + syserr("cdb: fsync(%s) failed", map->map_file); + if (close(fd) == -1) + syserr("cdb: close(%s) failed", map->map_file); + } + + if (!smdb_add_extension(cdbfn, sizeof(cdbfn), map->map_file, + CDBext)) + { + syserr("cdb: add extension to %s failed", + map->map_file); + } + if (sm_strlcpy(tmpfn, cdbfn, sizeof tmpfn) >= sizeof tmpfn || + sm_strlcat(tmpfn, ".tmp", sizeof tmpfn) >= sizeof tmpfn) + { + syserr("cdb: set temp filename for %s failed", + map->map_file); + } + if (tTd(38, 80)) + sm_dprintf("rename(%s, %s)\n", tmpfn, cdbfn); + if (rename(tmpfn, cdbfn) == -1) + syserr("cdb: rename(%s, %s) failed", tmpfn, cdbfn); + sm_free(cdbmp); + cdbmp = NULL; + } + if (fd >=0) + close(fd); +} +#endif /* CDB */ + /* ** NIS Modules */ @@ -2641,7 +3056,7 @@ db_map_close(map) # ifndef YPERR_BUSY # define YPERR_BUSY 16 -# endif /* ! YPERR_BUSY */ +# endif /* ** NIS_MAP_OPEN -- open DBM map @@ -2706,7 +3121,7 @@ nis_map_open(map, mode) { /* ** We ought to be calling aliaswait() here if this is an - ** alias file, but powerful HP-UX NIS servers apparently + ** alias file, but powerful HP-UX NIS servers apparently ** don't insert the @:@ token into the alias map when it ** is rebuilt, so aliaswait() just hangs. I hate HP-UX. */ @@ -2714,7 +3129,7 @@ nis_map_open(map, mode) # if 0 if (!bitset(MF_ALIAS, map->map_mflags) || aliaswait(map, NULL, true)) -# endif /* 0 */ +# endif return true; } @@ -2769,7 +3184,7 @@ nis_map_lookup(map, name, av, statp) } if (yperr == YPERR_KEY && bitset(MF_TRY1NULL, map->map_mflags)) { - SM_FREE_CLR(vp); + SM_FREE(vp); buflen++; yperr = yp_match(map->map_domain, map->map_file, keybuf, buflen, &vp, &vsize); @@ -2843,7 +3258,7 @@ nis_getcanonname(name, hbsize, statp) } if (yperr == YPERR_KEY && try1null) { - SM_FREE_CLR(vp); + SM_FREE(vp); keylen++; yperr = yp_match(yp_domain, "hosts.byname", nbuf, keylen, &vp, &vsize); @@ -2899,7 +3314,7 @@ nis_getcanonname(name, hbsize, statp) # include # ifndef NIS_TABLE_OBJ # define NIS_TABLE_OBJ TABLE_OBJ -# endif /* NIS_TABLE_OBJ */ +# endif # define EN_col(col) zo_data.objdata_u.en_data.en_cols.en_cols_val[(col)].ec_value.ec_value_val # define COL_NAME(res,i) ((res->objects.objects_val)->TA_data.ta_cols.ta_cols_val)[i].tc_name @@ -3331,7 +3746,7 @@ nisplus_default_domain() # if PH_MAP # define ph_map_dequote ldapmap_dequote -# endif /* PH_MAP */ +# endif static char *ldapmap_dequote __P((char *)); @@ -3462,9 +3877,9 @@ ldapmap_open(map, mode) syserr("%s failed to %s in map %s", # if USE_LDAP_INIT "ldap_init/ldap_bind", -# else /* USE_LDAP_INIT */ +# else "ldap_open", -# endif /* USE_LDAP_INIT */ +# endif id, map->map_mname); } else @@ -3472,9 +3887,9 @@ ldapmap_open(map, mode) syserr("451 4.3.5 %s failed to %s in map %s", # if USE_LDAP_INIT "ldap_init/ldap_bind", -# else /* USE_LDAP_INIT */ +# else "ldap_open", -# endif /* USE_LDAP_INIT */ +# endif id, map->map_mname); } } @@ -3589,7 +4004,7 @@ ldapmap_lookup(map, name, av, statp) char keybuf[MAXKEY]; #if SM_LDAP_ARGS != MAX_MAP_ARGS # ERROR _SM_LDAP_ARGS must be the same as _MAX_MAP_ARGS -#endif /* SM_LDAP_ARGS != MAX_MAP_ARGS */ +#endif #if defined(SUN_EXTENSIONS) && defined(SUN_SIMPLIFIED_LDAP) && \ HASLDAPGETALIASBYNAME @@ -3717,7 +4132,7 @@ ldapmap_lookup(map, name, av, statp) { # ifdef LDAP_SERVER_DOWN case LDAP_SERVER_DOWN: -# endif /* LDAP_SERVER_DOWN */ +# endif case LDAP_TIMEOUT: case LDAP_UNAVAILABLE: /* server disappeared, try reopen on next search */ @@ -3752,7 +4167,7 @@ ldapmap_lookup(map, name, av, statp) # if _FFR_LDAP_SINGLEDN if (bitset(MF_SINGLEDN, map->map_mflags)) flags |= SM_LDAP_SINGLEDN; -# endif /* _FFR_LDAP_SINGLEDN */ +# endif /* Create an rpool for search related memory usage */ rpool = sm_rpool_new_x(NULL); @@ -3876,7 +4291,7 @@ static struct lamvalues LDAPAuthMethods[] = { "simple", LDAP_AUTH_SIMPLE }, # ifdef LDAP_AUTH_KRBV4 { "krbv4", LDAP_AUTH_KRBV4 }, -# endif /* LDAP_AUTH_KRBV4 */ +# endif { NULL, 0 } }; @@ -3996,13 +4411,15 @@ ldapmap_parseargs(map, args) map->map_coldelim = ' '; } -# if _FFR_LDAP_NETWORK_TIMEOUT - lmap->ldap_networktmo = 120; -# endif /* _FFR_LDAP_NETWORK_TIMEOUT */ +# if LDAP_NETWORK_TIMEOUT + if (0 == lmap->ldap_networktmo) + lmap->ldap_networktmo = (LDAP_NETWORK_TIMEOUT > 1) + ? LDAP_NETWORK_TIMEOUT : 60; +# endif for (;;) { - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; if (*p != '-') break; @@ -4095,13 +4512,13 @@ ldapmap_parseargs(map, args) lmap->ldap_base = p; break; -# if _FFR_LDAP_NETWORK_TIMEOUT +# if LDAP_NETWORK_TIMEOUT case 'c': /* network (connect) timeout */ while (isascii(*++p) && isspace(*p)) continue; lmap->ldap_networktmo = atoi(p); break; -# endif /* _FFR_LDAP_NETWORK_TIMEOUT */ +# endif /* LDAP_NETWORK_TIMEOUT */ case 'd': /* Dn to bind to server as */ while (isascii(*++p) && isspace(*p)) @@ -4217,7 +4634,7 @@ ldapmap_parseargs(map, args) case 'R': /* don't auto chase referrals */ # ifdef LDAP_REFERRALS lmap->ldap_options &= ~LDAP_OPT_REFERRALS; -# else /* LDAP_REFERRALS */ +# else syserr("compile with -DLDAP_REFERRALS for referral support"); # endif /* LDAP_REFERRALS */ break; @@ -4345,6 +4762,14 @@ ldapmap_parseargs(map, args) # endif /* LDAP_VERSION_MIN */ break; + case 'x': +# if _FFR_SM_LDAP_DBG + while (isascii(*++p) && isspace(*p)) + continue; + lmap->ldap_debug = atoi(p); +# endif + break; + case 'Z': while (isascii(*++p) && isspace(*p)) continue; @@ -4357,7 +4782,7 @@ ldapmap_parseargs(map, args) } /* need to account for quoted strings here */ - while (*p != '\0' && !(isascii(*p) && isspace(*p))) + while (*p != '\0' && !(SM_ISSPACE(*p))) { if (*p == '"') { @@ -4542,7 +4967,7 @@ ldapmap_parseargs(map, args) { char *v; - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; if (*p == '\0') break; @@ -4719,8 +5144,8 @@ ldapmap_set_defaults(spec) map.map_tapp != NULL) { syserr("readcf: option LDAPDefaultSpec: Do not set non-LDAP specific flags"); - SM_FREE_CLR(map.map_app); - SM_FREE_CLR(map.map_tapp); + SM_FREE(map.map_app); + SM_FREE(map.map_tapp); } if (LDAPDefaults->ldap_filter != NULL) @@ -4801,7 +5226,7 @@ ph_map_parseargs(map, args) map->map_mflags |= MF_TRY0NULL|MF_TRY1NULL; for (;;) { - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; if (*p != '-') break; @@ -4879,7 +5304,7 @@ ph_map_parseargs(map, args) } /* try to account for quoted strings */ - done = isascii(*p) && isspace(*p); + done = SM_ISSPACE(*p); while (*p != '\0' && !done) { if (*p == '"') @@ -4891,7 +5316,7 @@ ph_map_parseargs(map, args) } else p++; - done = isascii(*p) && isspace(*p); + done = SM_ISSPACE(*p); } if (*p != '\0') @@ -5196,7 +5621,7 @@ syslog_map_parseargs(map, args) /* there is no check whether there is really an argument */ while (*p != '\0') { - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; if (*p != '-') break; @@ -5214,12 +5639,12 @@ syslog_map_parseargs(map, args) } else if (*p == 'L') { - while (*++p != '\0' && isascii(*p) && isspace(*p)) + while (*++p != '\0' && SM_ISSPACE(*p)) continue; if (*p == '\0') break; priority = p; - while (*p != '\0' && !(isascii(*p) && isspace(*p))) + while (*p != '\0' && !(SM_ISSPACE(*p))) p++; if (*p != '\0') *p++ = '\0'; @@ -5335,7 +5760,7 @@ dprintf_map_parseargs(map, args) /* there is no check whether there is really an argument */ while (*p != '\0') { - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; if (*p != '-') break; @@ -5353,12 +5778,12 @@ dprintf_map_parseargs(map, args) } else if (*p == 'd') { - while (*++p != '\0' && isascii(*p) && isspace(*p)) + while (*++p != '\0' && SM_ISSPACE(*p)) continue; if (*p == '\0') break; dbg_level = p; - while (*p != '\0' && !(isascii(*p) && isspace(*p))) + while (*p != '\0' && !(SM_ISSPACE(*p))) p++; if (*p != '\0') *p++ = '\0'; @@ -5481,7 +5906,7 @@ hes_map_lookup(map, name, av, statp) (void) sm_strlcpy(&np[1], name, (sizeof(nbuf)) - 1); # ifdef HESIOD_INIT hp = hesiod_resolve(HesiodContext, np, map->map_file); -# else /* HESIOD_INIT */ +# else hp = hes_resolve(np, map->map_file); # endif /* HESIOD_INIT */ save_errno = errno; @@ -5493,7 +5918,7 @@ hes_map_lookup(map, name, av, statp) { # ifdef HESIOD_INIT hp = hesiod_resolve(HesiodContext, name, map->map_file); -# else /* HESIOD_INIT */ +# else hp = hes_resolve(name, map->map_file); # endif /* HESIOD_INIT */ } @@ -6069,11 +6494,15 @@ impl_map_lookup(map, name, av, pstat) #if NEWDB if (bitset(MF_IMPL_HASH, map->map_mflags)) return db_map_lookup(map, name, av, pstat); -#endif /* NEWDB */ +#endif #if NDBM if (bitset(MF_IMPL_NDBM, map->map_mflags)) return ndbm_map_lookup(map, name, av, pstat); -#endif /* NDBM */ +#endif +#if CDB + if (bitset(MF_IMPL_CDB, map->map_mflags)) + return cdb_map_lookup(map, name, av, pstat); +#endif return stab_map_lookup(map, name, av, pstat); } @@ -6093,11 +6522,15 @@ impl_map_store(map, lhs, rhs) #if NEWDB if (bitset(MF_IMPL_HASH, map->map_mflags)) db_map_store(map, lhs, rhs); -#endif /* NEWDB */ +#endif #if NDBM if (bitset(MF_IMPL_NDBM, map->map_mflags)) ndbm_map_store(map, lhs, rhs); -#endif /* NDBM */ +#endif +#if CDB + if (bitset(MF_IMPL_CDB, map->map_mflags)) + cdb_map_store(map, lhs, rhs); +#endif stab_map_store(map, lhs, rhs); } @@ -6110,19 +6543,25 @@ impl_map_open(map, mode) MAP *map; int mode; { + bool wasopt; + if (tTd(38, 2)) sm_dprintf("impl_map_open(%s, %s, %d)\n", map->map_mname, map->map_file, mode); mode &= O_ACCMODE; + wasopt = bitset(MF_OPTIONAL, map->map_mflags); + + /* suppress error msgs */ + map->map_mflags |= MF_OPTIONAL; #if NEWDB map->map_mflags |= MF_IMPL_HASH; if (hash_map_open(map, mode)) { # ifdef NDBM_YP_COMPAT if (mode == O_RDONLY || strstr(map->map_file, "/yp/") == NULL) -# endif /* NDBM_YP_COMPAT */ - return true; +# endif + goto ok; } else map->map_mflags &= ~MF_IMPL_HASH; @@ -6130,27 +6569,43 @@ impl_map_open(map, mode) #if NDBM map->map_mflags |= MF_IMPL_NDBM; if (ndbm_map_open(map, mode)) - { - return true; - } + goto ok; else map->map_mflags &= ~MF_IMPL_NDBM; #endif /* NDBM */ -#if defined(NEWDB) || defined(NDBM) +#if CDB + map->map_mflags |= MF_IMPL_CDB; + if (cdb_map_open(map, mode)) + goto ok; + else + map->map_mflags &= ~MF_IMPL_CDB; +#endif /* CDB */ + + if (!bitset(MF_ALIAS, map->map_mflags)) + goto fail; +#if NEWDB || NDBM || CDB if (Verbose) message("WARNING: cannot open alias database %s%s", map->map_file, mode == O_RDONLY ? "; reading text version" : ""); -#else /* defined(NEWDB) || defined(NDBM) */ +#else if (mode != O_RDONLY) usrerr("Cannot rebuild aliases: no database format defined"); -#endif /* defined(NEWDB) || defined(NDBM) */ +#endif - if (mode == O_RDONLY) - return stab_map_open(map, mode); - else - return false; + if (mode == O_RDONLY && stab_map_open(map, mode)) + goto ok; + + fail: + if (!wasopt) + map->map_mflags &= ~MF_OPTIONAL; + return false; + + ok: + if (!wasopt) + map->map_mflags &= ~MF_OPTIONAL; + return true; } @@ -6180,7 +6635,15 @@ impl_map_close(map) map->map_mflags &= ~MF_IMPL_NDBM; } #endif /* NDBM */ +#if CDB + if (bitset(MF_IMPL_CDB, map->map_mflags)) + { + cdb_map_close(map); + map->map_mflags &= ~MF_IMPL_CDB; + } +#endif /* CDB */ } + /* ** User map class. ** @@ -6468,7 +6931,7 @@ seq_map_parse(map, ap) STAB *s; /* find beginning of map name */ - while (isascii(*ap) && isspace(*ap)) + while (SM_ISSPACE(*ap)) ap++; for (p = ap; (isascii(*p) && isalnum(*p)) || *p == '_' || *p == '.'; @@ -6880,7 +7343,7 @@ regex_map_init(map, ap) for (;;) { - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; if (*p != '-') break; @@ -6929,7 +7392,7 @@ regex_map_init(map, ap) break; } - while (*p != '\0' && !(isascii(*p) && isspace(*p))) + while (*p != '\0' && !(SM_ISSPACE(*p))) p++; if (*p != '\0') *p++ = '\0'; @@ -7250,7 +7713,7 @@ nsd_map_lookup(map, name, av, statp) if (r == NS_BADREQ # ifdef NS_NOPERM || r == NS_NOPERM -# endif /* NS_NOPERM */ +# endif ) { *statp = EX_CONFIG; @@ -7459,11 +7922,88 @@ arpa_map_lookup(map, name, av, statp) return rval; } +#if _FFR_SETDEBUG_MAP +char * +setdebug_map_lookup(map, name, av, statp) + MAP *map; + char *name; + char **av; + int *statp; +{ + + if (tTd(38, 2)) + { + char **cpp; + + sm_dprintf("setdebug_map_lookup: key '%s'\n", name); + for (cpp = av; cpp != NULL && *cpp != NULL; cpp++) + sm_dprintf("setdebug_map_lookup: arg '%s'\n", *cpp); + } + *statp = EX_OK; + tTflag(name); + return NULL; +} +#endif + +#if _FFR_SETOPT_MAP +char * +setopt_map_lookup(map, name, av, statp) + MAP *map; + char *name; + char **av; + int *statp; +{ +# if !_FFR_SETANYOPT + int val; +# endif + char **cpp; + + if (tTd(38, 2)) + { + sm_dprintf("setopt_map_lookup: key '%s'\n", name); + for (cpp = av; cpp != NULL && *cpp != NULL; cpp++) + sm_dprintf("setopt_map_lookup: arg '%s'\n", *cpp); + } +# if _FFR_SETANYOPT + /* + ** API screwed up... + ** first arg is the "short" name and second is the entire string... + */ + + sm_dprintf("setoption: name=%s\n", name); + setoption(' ', name, true, false, CurEnv); + *statp = EX_OK; + return NULL; +# else /* _FFR_SETANYOPT */ + *statp = EX_CONFIG; + + cpp = av; + if (cpp == NULL || ++cpp == NULL || *cpp == NULL) + return NULL; + *statp = EX_OK; + errno = 0; + val = strtol(*cpp, NULL, 0); + /* check for valid number? */ + + /* use a table? */ + if (sm_strcasecmp(name, "LogLevel") == 0) + { + LogLevel = val; + sm_dprintf("LogLevel=%d\n", val); + return NULL; + } +# endif /* _FFR_SETANYOPT */ + *statp = EX_CONFIG; + return NULL; +} +#endif + + #if SOCKETMAP # if NETINET || NETINET6 # include -# endif /* NETINET || NETINET6 */ +# endif # define socket_map_next map_stack[0] @@ -7577,7 +8117,7 @@ socket_map_open(map, mode) { # ifdef EPROTONOSUPPORT errno = EPROTONOSUPPORT; -# else /* EPROTONOSUPPORT */ +# else errno = EINVAL; # endif /* EPROTONOSUPPORT */ syserr("socket map \"%s\": unknown socket type %s", @@ -7642,10 +8182,10 @@ socket_map_open(map, mode) if (false # if NETINET || addr.sa.sa_family == AF_INET -# endif /* NETINET */ +# endif # if NETINET6 || addr.sa.sa_family == AF_INET6 -# endif /* NETINET6 */ +# endif ) { unsigned short port; @@ -7691,10 +8231,10 @@ socket_map_open(map, mode) bool found = false; # if NETINET unsigned long hid = INADDR_NONE; -# endif /* NETINET */ +# endif # if NETINET6 struct sockaddr_in6 hid6; -# endif /* NETINET6 */ +# endif *end = '\0'; # if NETINET @@ -7769,7 +8309,7 @@ socket_map_open(map, mode) map->map_mname, at, hp->h_addrtype); # if NETINET6 freehostent(hp); -# endif /* NETINET6 */ +# endif return false; } } @@ -7841,7 +8381,7 @@ socket_map_open(map, mode) hp->h_addrtype); # if NETINET6 freehostent(hp); -# endif /* NETINET6 */ +# endif return false; } continue; @@ -7855,7 +8395,7 @@ socket_map_open(map, mode) # if NETINET6 if (hp != NULL) freehostent(hp); -# endif /* NETINET6 */ +# endif return false; } # if NETINET6 @@ -7979,6 +8519,7 @@ socket_map_lookup(map, name, av, statp) int *statp; { unsigned int nettolen, replylen, recvlen; + int ret; char *replybuf, *rval, *value, *status, *key; SM_FILE_T *f; char keybuf[MAXNAME + 1]; @@ -8017,13 +8558,20 @@ socket_map_lookup(map, name, av, statp) goto errcl; } - if (sm_io_fscanf(f, SM_TIME_DEFAULT, "%9u", &replylen) != 1) + if ((ret = sm_io_fscanf(f, SM_TIME_DEFAULT, "%9u", &replylen)) != 1) { if (errno == EAGAIN) { syserr("451 4.3.0 socket_map_lookup(%s): read timeout", map->map_mname); } + else if (SM_IO_EOF == ret) + { + if (LogLevel > 9) + sm_syslog(LOG_INFO, CurEnv->e_id, + "socket_map_lookup(%s): EOF", + map->map_mname); + } else { syserr("451 4.3.0 socket_map_lookup(%s): failed to read length parameter of reply %d", diff --git a/src/map.h b/src/map.h index f20cf647706c..d93c971a7c03 100644 --- a/src/map.h +++ b/src/map.h @@ -14,16 +14,19 @@ extern char *arith_map_lookup __P((MAP *, char *, char **, int *)); +extern char *arpa_map_lookup __P((MAP *, char *, char **, int *)); + extern char *bestmx_map_lookup __P((MAP *, char *, char **, int *)); extern char *bogus_map_lookup __P((MAP *, char *, char **, int *)); +#if NEWDB extern bool bt_map_open __P((MAP *, int)); extern char *db_map_lookup __P((MAP *, char *, char **, int *)); - extern void db_map_store __P((MAP *, char *, char *)); extern void db_map_close __P((MAP *)); +#endif /* NEWDB */ extern bool dequote_init __P((MAP *, char *)); extern char *dequote_map __P((MAP *, char *, char **, int *)); @@ -35,7 +38,9 @@ extern char *dns_map_lookup __P((MAP *, char *, char **, int *)); extern bool dprintf_map_parseargs __P((MAP *, char *)); extern char *dprintf_map_lookup __P((MAP *, char *, char **, int *)); +#if NEWDB extern bool hash_map_open __P((MAP *, int)); +#endif extern bool host_map_init __P((MAP *, char *)); extern char *host_map_lookup __P((MAP *, char *, char **, int *)); @@ -49,6 +54,12 @@ extern char *macro_map_lookup __P((MAP *, char *, char **, int *)); extern bool map_parseargs __P((MAP *, char *)); +#if NDBM +extern char *ndbm_map_lookup __P((MAP *, char *, char **, int *)); +extern void ndbm_map_store __P((MAP *, char *, char *)); +extern void ndbm_map_close __P((MAP *)); +#endif /* NDBM */ + extern bool nis_map_open __P((MAP *, int)); extern char *nis_map_lookup __P((MAP *, char *, char **, int *)); @@ -66,6 +77,19 @@ extern char *seq_map_lookup __P((MAP *, char *, char **, int *)); extern void seq_map_store __P((MAP *, char *, char *)); extern bool seq_map_parse __P((MAP *, char *)); +#if _FFR_SETDEBUG_MAP +extern char *setdebug_map_lookup __P((MAP *, char *, char **, int *)); +#endif +#if _FFR_SETOPT_MAP +extern char *setopt_map_lookup __P((MAP *, char *, char **, int *)); +#endif + +#if SOCKETMAP +extern bool socket_map_open __P((MAP *, int)); +extern void socket_map_close __P((MAP *)); +extern char *socket_map_lookup __P((MAP *, char *, char **, int *)); +#endif + extern char *stab_map_lookup __P((MAP *, char *, char **, int *)); extern void stab_map_store __P((MAP *, char *, char *)); extern bool stab_map_open __P((MAP *, int)); @@ -83,4 +107,11 @@ extern char *udb_map_lookup __P((MAP *, char *, char **, int *)); extern bool user_map_open __P((MAP *, int)); extern char *user_map_lookup __P((MAP *, char *, char **, int *)); +#if CDB +extern bool cdb_map_open __P((MAP *, int)); +extern char *cdb_map_lookup __P((MAP *, char *, char **, int *)); +extern void cdb_map_store __P((MAP *, char *, char *)); +extern void cdb_map_close __P((MAP *)); +#endif /* CDB */ + #endif /* ! _MAP_H */ diff --git a/src/mci.c b/src/mci.c index c3f925f3cb25..a50fd8ed0fe2 100644 --- a/src/mci.c +++ b/src/mci.c @@ -17,14 +17,18 @@ SM_RCSID("@(#)$Id: mci.c,v 8.225 2013-11-22 20:51:56 ca Exp $") #if NETINET || NETINET6 # include -#endif /* NETINET || NETINET6 */ +#endif #include +#if STARTTLS +# include +#endif static int mci_generate_persistent_path __P((const char *, char *, int, bool)); static bool mci_load_persistent __P((MCI *)); static void mci_uncache __P((MCI **, bool)); +static void mci_clear __P((MCI *)); static int mci_lock_host_statfile __P((MCI *)); static int mci_read_persistent __P((SM_FILE_T *, MCI *)); @@ -102,7 +106,7 @@ mci_cache(mci) if (tTd(42, 5)) sm_dprintf("mci_cache: caching %p (%s) in slot %d\n", - mci, mci->mci_host, (int) (mcislot - MciCache)); + (void *)mci, mci->mci_host, (int) (mcislot - MciCache)); if (tTd(91, 100)) sm_syslog(LOG_DEBUG, CurEnv->e_id, "mci_cache: caching %lx (%.100s) in slot %d", @@ -209,7 +213,7 @@ mci_uncache(mcislot, doquit) if (tTd(42, 5)) sm_dprintf("mci_uncache: uncaching %p (%s) from slot %d (%d)\n", - mci, mci->mci_host, (int) (mcislot - MciCache), + (void *)mci, mci->mci_host, (int) (mcislot - MciCache), doquit); if (tTd(91, 100)) sm_syslog(LOG_DEBUG, CurEnv->e_id, @@ -229,7 +233,7 @@ mci_uncache(mcislot, doquit) smtpquit(mci->mci_mailer, mci, &BlankEnvelope); #if XLA xla_host_end(mci->mci_host); -#endif /* XLA */ +#endif } else { @@ -247,12 +251,13 @@ mci_uncache(mcislot, doquit) mci->mci_tolist = NULL; #if PIPELINING mci->mci_okrcpts = 0; -#endif /* PIPELINING */ +#endif } - SM_FREE_CLR(mci->mci_status); - SM_FREE_CLR(mci->mci_rstatus); - SM_FREE_CLR(mci->mci_heloname); + SM_FREE(mci->mci_status); + SM_FREE(mci->mci_rstatus); + SM_FREE(mci->mci_heloname); + mci_clear(mci); if (mci->mci_rpool != NULL) { sm_rpool_free(mci->mci_rpool); @@ -311,9 +316,44 @@ mci_clr_extensions(mci) mci->mci_min_by = 0; #if SASL mci->mci_saslcap = NULL; -#endif /* SASL */ +#endif } +/* +** MCI_CLEAR -- clear mci +** +** Parameters: +** mci -- the connection to clear. +** +** Returns: +** none. +*/ + +static void +mci_clear(mci) + MCI *mci; +{ + if (mci == NULL) + return; + + mci->mci_maxsize = 0; + mci->mci_min_by = 0; + mci->mci_deliveries = 0; +#if SASL + if (bitset(MCIF_AUTHACT, mci->mci_flags)) + sasl_dispose(&mci->mci_conn); +#endif +#if STARTTLS + if (bitset(MCIF_TLSACT, mci->mci_flags) && mci->mci_ssl != NULL) + SM_SSL_FREE(mci->mci_ssl); +#endif + + /* which flags to preserve? */ + mci->mci_flags &= MCIF_CACHED; + mactabclear(&mci->mci_macro); +} + + /* ** MCI_GET -- get information about a particular host ** @@ -351,7 +391,7 @@ mci_get(host, m) mci->mci_tolist = NULL; #if PIPELINING mci->mci_okrcpts = 0; -#endif /* PIPELINING */ +#endif mci->mci_flags &= ~MCIF_NOTSTICKY; if (mci->mci_rpool == NULL) @@ -419,6 +459,7 @@ mci_get(host, m) mci->mci_errno = 0; mci->mci_exitstat = EX_OK; } + mci_clear(mci); } return mci; @@ -551,11 +592,11 @@ mci_setstat(mci, xstat, dstat, rstat) if (xstat != EX_NOTSTICKY && xstat != EX_PROTOCOL) mci->mci_exitstat = xstat; - SM_FREE_CLR(mci->mci_status); + SM_FREE(mci->mci_status); if (dstat != NULL) mci->mci_status = sm_strdup_x(dstat); - SM_FREE_CLR(mci->mci_rstatus); + SM_FREE(mci->mci_rstatus); if (rstat != NULL) mci->mci_rstatus = sm_strdup_x(rstat); } @@ -580,7 +621,6 @@ struct mcifbits }; static struct mcifbits MciFlags[] = { - { MCIF_VALID, "VALID" }, { MCIF_CACHED, "CACHED" }, { MCIF_ESMTP, "ESMTP" }, { MCIF_EXPN, "EXPN" }, @@ -598,11 +638,14 @@ static struct mcifbits MciFlags[] = { MCIF_AUTHACT, "AUTHACT" }, { MCIF_ENHSTAT, "ENHSTAT" }, { MCIF_PIPELINED, "PIPELINED" }, + { MCIF_VERB, "VERB" }, #if STARTTLS { MCIF_TLS, "TLS" }, { MCIF_TLSACT, "TLSACT" }, -#endif /* STARTTLS */ +#endif { MCIF_DLVR_BY, "DLVR_BY" }, + { MCIF_INLONGLINE, "INLONGLINE" }, + { MCIF_NOTSTICKY, "NOTSTICKY" }, { 0, NULL } }; @@ -618,7 +661,7 @@ mci_dump(fp, mci, logit) sep = logit ? " " : "\n\t"; p = buf; - (void) sm_snprintf(p, SPACELEFT(buf, p), "MCI@%p: ", mci); + (void) sm_snprintf(p, SPACELEFT(buf, p), "MCI@%p: ", (void *)mci); p += strlen(p); if (mci == NULL) { @@ -967,8 +1010,8 @@ mci_read_persistent(fp, mci) (unsigned long) fp); } - SM_FREE_CLR(mci->mci_status); - SM_FREE_CLR(mci->mci_rstatus); + SM_FREE(mci->mci_status); + SM_FREE(mci->mci_rstatus); sm_io_rewind(fp, SM_TIME_DEFAULT); ver = -1; @@ -1077,7 +1120,7 @@ mci_store_persistent(mci) #if !NOFTRUNCATE (void) ftruncate(sm_io_getinfo(mci->mci_statfile, SM_IO_WHAT_FD, NULL), (off_t) 0); -#endif /* !NOFTRUNCATE */ +#endif (void) sm_io_fprintf(mci->mci_statfile, SM_TIME_DEFAULT, "V0\n"); (void) sm_io_fprintf(mci->mci_statfile, SM_TIME_DEFAULT, "E%d\n", @@ -1162,7 +1205,7 @@ mci_traverse_persistent(action, pathname) char newpath[MAXPATHLEN]; #if MAXPATHLEN <= MAXNAMLEN - 3 ERROR "MAXPATHLEN <= MAXNAMLEN - 3" -#endif /* MAXPATHLEN <= MAXNAMLEN - 3 */ +#endif if ((d = opendir(pathname)) == NULL) { @@ -1502,7 +1545,7 @@ mci_generate_persistent_path(host, path, pathlen, createflag) char t_host[MAXHOSTNAMELEN]; #if NETINET6 struct in6_addr in6_addr; -#endif /* NETINET6 */ +#endif /* ** Rationality check the arguments. @@ -1550,11 +1593,11 @@ mci_generate_persistent_path(host, path, pathlen, createflag) # if NETINET6 if (anynet_pton(AF_INET6, t_host, &in6_addr) == 1) good = true; -# endif /* NETINET6 */ +# endif # if NETINET if (inet_addr(t_host) != INADDR_NONE) good = true; -# endif /* NETINET */ +# endif if (!good) return -1; } diff --git a/src/milter.c b/src/milter.c index 9b3667dc573a..ba783c4c61db 100644 --- a/src/milter.c +++ b/src/milter.c @@ -25,7 +25,7 @@ SM_RCSID("@(#)$Id: milter.c,v 8.281 2013-11-22 20:51:56 ca Exp $") # include # if MILTER_NO_NAGLE # include -# endif /* MILTER_NO_NAGLE */ +# endif # endif /* NETINET || NETINET6 */ # include @@ -61,11 +61,11 @@ static void milter_insheader __P((struct milter *, char *, ssize_t, ENVELOPE *)); static void milter_changeheader __P((struct milter *, char *, ssize_t, ENVELOPE *)); -static void milter_chgfrom __P((char *, ssize_t, ENVELOPE *)); -static void milter_addrcpt __P((char *, ssize_t, ENVELOPE *)); -static void milter_addrcpt_par __P((char *, ssize_t, ENVELOPE *)); -static void milter_delrcpt __P((char *, ssize_t, ENVELOPE *)); -static int milter_replbody __P((char *, ssize_t, bool, ENVELOPE *)); +static void milter_chgfrom __P((char *, ssize_t, ENVELOPE *, const char *)); +static void milter_addrcpt __P((char *, ssize_t, ENVELOPE *, const char *)); +static void milter_addrcpt_par __P((char *, ssize_t, ENVELOPE *, const char *)); +static void milter_delrcpt __P((char *, ssize_t, ENVELOPE *, const char *)); +static int milter_replbody __P((char *, ssize_t, bool, ENVELOPE *, const char *)); static int milter_set_macros __P((char *, char **, char *, int)); @@ -397,7 +397,7 @@ milter_read(m, cmd, rlen, to, e, where) mi_int32 i; # if MILTER_NO_NAGLE && defined(TCP_CORK) int cork = 0; -# endif /* MILTER_NO_NAGLE && defined(TCP_CORK) */ +# endif char *buf; char data[MILTER_LEN_BYTES + 1]; @@ -420,7 +420,7 @@ milter_read(m, cmd, rlen, to, e, where) # if MILTER_NO_NAGLE && defined(TCP_CORK) setsockopt(m->mf_sock, IPPROTO_TCP, TCP_CORK, (char *)&cork, sizeof(cork)); -# endif /* MILTER_NO_NAGLE && defined(TCP_CORK) */ +# endif if (milter_sysread(m, data, sizeof(data), to, e, where) == NULL) return NULL; @@ -429,7 +429,7 @@ milter_read(m, cmd, rlen, to, e, where) cork = 1; setsockopt(m->mf_sock, IPPROTO_TCP, TCP_CORK, (char *)&cork, sizeof(cork)); -# endif /* MILTER_NO_NAGLE && defined(TCP_CORK) */ +# endif /* reset timeout */ if (to > 0) @@ -690,7 +690,7 @@ milter_open(m, parseonly, e) # if NETUNIX /* default to AF_UNIX */ addr.sa.sa_family = AF_UNIX; -# else /* NETUNIX */ +# else # if NETINET /* default to AF_INET */ addr.sa.sa_family = AF_INET; @@ -714,22 +714,22 @@ milter_open(m, parseonly, e) else if (sm_strcasecmp(p, "unix") == 0 || sm_strcasecmp(p, "local") == 0) addr.sa.sa_family = AF_UNIX; -# endif /* NETUNIX */ +# endif # if NETINET else if (sm_strcasecmp(p, "inet") == 0) addr.sa.sa_family = AF_INET; -# endif /* NETINET */ +# endif # if NETINET6 else if (sm_strcasecmp(p, "inet6") == 0) addr.sa.sa_family = AF_INET6; -# endif /* NETINET6 */ +# endif else { # ifdef EPROTONOSUPPORT errno = EPROTONOSUPPORT; -# else /* EPROTONOSUPPORT */ +# else errno = EINVAL; -# endif /* EPROTONOSUPPORT */ +# endif if (tTd(64, 5)) sm_dprintf("X%s: unknown socket type %s\n", m->mf_name, p); @@ -820,10 +820,10 @@ milter_open(m, parseonly, e) if (false # if NETINET || addr.sa.sa_family == AF_INET -# endif /* NETINET */ +# endif # if NETINET6 || addr.sa.sa_family == AF_INET6 -# endif /* NETINET6 */ +# endif ) { unsigned short port; @@ -898,10 +898,10 @@ milter_open(m, parseonly, e) bool found = false; # if NETINET unsigned long hid = INADDR_NONE; -# endif /* NETINET */ +# endif # if NETINET6 struct sockaddr_in6 hid6; -# endif /* NETINET6 */ +# endif *end = '\0'; # if NETINET @@ -1016,7 +1016,7 @@ milter_open(m, parseonly, e) milter_error(m, e); # if NETINET6 freehostent(hp); -# endif /* NETINET6 */ +# endif return -1; } } @@ -1044,7 +1044,7 @@ milter_open(m, parseonly, e) # if NETINET6 if (hp != NULL) freehostent(hp); -# endif /* NETINET6 */ +# endif return 0; } @@ -1060,7 +1060,7 @@ milter_open(m, parseonly, e) # if NETINET6 if (hp != NULL) freehostent(hp); -# endif /* NETINET6 */ +# endif return -1; } @@ -1083,7 +1083,7 @@ milter_open(m, parseonly, e) # if NETINET6 if (hp != NULL) freehostent(hp); -# endif /* NETINET6 */ +# endif return -1; } @@ -1153,7 +1153,7 @@ milter_open(m, parseonly, e) milter_error(m, e); # if NETINET6 freehostent(hp); -# endif /* NETINET6 */ +# endif return -1; } continue; @@ -1172,7 +1172,7 @@ milter_open(m, parseonly, e) # if NETINET6 if (hp != NULL) freehostent(hp); -# endif /* NETINET6 */ +# endif return -1; } m->mf_state = SMFS_OPEN; @@ -1230,7 +1230,7 @@ milter_setup(line) /* collect the filter name */ for (p = line; - *p != '\0' && *p != ',' && !(isascii(*p) && isspace(*p)); + *p != '\0' && *p != ',' && !(SM_ISSPACE(*p)); p++) continue; if (*p != '\0') @@ -1261,7 +1261,7 @@ milter_setup(line) char *delimptr; while (*p != '\0' && - (*p == ',' || (isascii(*p) && isspace(*p)))) + (*p == ',' || (SM_ISSPACE(*p)))) p++; /* p now points to field code */ @@ -1273,7 +1273,7 @@ milter_setup(line) syserr("X%s: `=' expected", m->mf_name); return; } - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; /* p now points to the field body */ @@ -1292,7 +1292,7 @@ milter_setup(line) case 'F': /* Milter flags configured on MTA */ for (; *p != '\0'; p++) { - if (!(isascii(*p) && isspace(*p))) + if (!(SM_ISSPACE(*p))) setbitn(bitidx(*p), m->mf_flags); } break; @@ -1365,7 +1365,7 @@ milter_config(spec, list, max) { STAB *s; - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; if (*p == '\0') break; @@ -1427,8 +1427,7 @@ milter_parse_timeouts(spec, m) { char *delimptr; - while (*p != '\0' && - (*p == ';' || (isascii(*p) && isspace(*p)))) + while (*p != '\0' && (*p == ';' || (SM_ISSPACE(*p)))) p++; /* p now points to field code */ @@ -1440,7 +1439,7 @@ milter_parse_timeouts(spec, m) syserr("X%s, T=: `:' expected", m->mf_name); return; } - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; /* p now points to the field body */ @@ -1514,8 +1513,7 @@ milter_set_macros(name, macros, val, nummac) char *macro; /* Skip leading commas, spaces */ - while (*p != '\0' && - (*p == ',' || (isascii(*p) && isspace(*p)))) + while (*p != '\0' && (*p == ',' || (SM_ISSPACE(*p)))) p++; if (*p == '\0') @@ -1577,7 +1575,7 @@ static struct milteropt # if _FFR_MAXDATASIZE || _FFR_MDS_NEGOTIATE # define MO_MAXDATASIZE 0x08 { "maxdatasize", MO_MAXDATASIZE }, -# endif /* _FFR_MAXDATASIZE || _FFR_MDS_NEGOTIATE */ +# endif { NULL, (unsigned char)-1 }, }; @@ -1686,7 +1684,7 @@ milter_set_option(name, val, sticky) ** e -- current envelope. ** ** Returns: -** 0 if succesful, -1 otherwise +** 0 if successful, -1 otherwise */ static int @@ -1741,7 +1739,7 @@ milter_reopen_df(e) ** e -- current envelope. ** ** Returns: -** 0 if succesful, -1 otherwise +** 0 if successful, -1 otherwise */ static int @@ -2332,18 +2330,14 @@ milter_getsymlist(m, buf, rlen, offset) macros = MilterMacros[i][m->mf_idx]; m->mf_lflags |= MI_LFLAGS_SYM(i); len = strlen(buf + offset); - if (len >= 0) - { - r = milter_set_macros(m->mf_name, macros, - buf + offset, nummac); - if (r >= 0) - nummac = r; - if (tTd(64, 5)) - sm_dprintf("milter_getsymlist(%s, %s, \"%s\")=%d\n", - m->mf_name, - SM_M_MACRO_NAME(i), - buf + offset, r); - } + r = milter_set_macros(m->mf_name, macros, buf + offset, + nummac); + if (r >= 0) + nummac = r; + if (tTd(64, 5)) + sm_dprintf("milter_getsymlist(%s, %s, \"%s\")=%d\n", + m->mf_name, SM_M_MACRO_NAME(i), + buf + offset, r); break; default: @@ -2441,8 +2435,7 @@ milter_negotiate(m, e, milters) sm_syslog(LOG_ERR, e->e_id, "Milter (%s): negotiate: returned %c instead of %c", m->mf_name, rcmd, SMFIC_OPTNEG); - if (response != NULL) - sm_free(response); /* XXX */ + SM_FREE(response); milter_error(m, e); return -1; } @@ -2457,8 +2450,7 @@ milter_negotiate(m, e, milters) sm_syslog(LOG_ERR, e->e_id, "Milter (%s): negotiate: did not return valid info", m->mf_name); - if (response != NULL) - sm_free(response); /* XXX */ + SM_FREE(response); milter_error(m, e); return -1; } @@ -2476,8 +2468,7 @@ milter_negotiate(m, e, milters) sm_syslog(LOG_ERR, e->e_id, "Milter (%s): negotiate: did not return enough info", m->mf_name); - if (response != NULL) - sm_free(response); /* XXX */ + SM_FREE(response); milter_error(m, e); return -1; } @@ -2523,38 +2514,36 @@ milter_negotiate(m, e, milters) } #if _FFR_MDS_NEGOTIATE +#define MDSWARNING(sz) \ + do \ + { \ + sm_syslog(LOG_WARNING, NOQID, \ + "WARNING: Milter.maxdatasize: configured=%lu, set by milter(%s)=%d", \ + (unsigned long) MilterMaxDataSize, m->mf_name, sz); \ + MilterMaxDataSize = sz; \ + } while (0) + /* use a table instead of sequence? */ if (bitset(SMFIP_MDS_1M, m->mf_pflags)) { if (MilterMaxDataSize != MILTER_MDS_1M) - { - /* this should not happen... */ - sm_syslog(LOG_WARNING, NOQID, - "WARNING: Milter.maxdatasize: configured=%lu, set by libmilter=%d", - (unsigned long) MilterMaxDataSize, - MILTER_MDS_1M); - MilterMaxDataSize = MILTER_MDS_1M; - } + MDSWARNING(MILTER_MDS_1M); } else if (bitset(SMFIP_MDS_256K, m->mf_pflags)) { if (MilterMaxDataSize != MILTER_MDS_256K) - { - sm_syslog(LOG_WARNING, NOQID, - "WARNING: Milter.maxdatasize: configured=%lu, set by libmilter=%d", - (unsigned long) MilterMaxDataSize, - MILTER_MDS_256K); - MilterMaxDataSize = MILTER_MDS_256K; - } + MDSWARNING(MILTER_MDS_256K); } + + /* + ** Note: it is not possible to distinguish between + ** - milter requested 64K + ** - milter did not request anything + ** as there is no SMFIP_MDS_64K flag. + */ + else if (MilterMaxDataSize != MILTER_MDS_64K) - { - sm_syslog(LOG_WARNING, NOQID, - "WARNING: Milter.maxdatasize: configured=%lu, set by libmilter=%d", - (unsigned long) MilterMaxDataSize, - MILTER_MDS_64K); - MilterMaxDataSize = MILTER_MDS_64K; - } + MDSWARNING(MILTER_MDS_64K); m->mf_pflags &= ~SMFI_INTERNAL; #endif /* _FFR_MDS_NEGOTIATE */ @@ -2593,11 +2582,11 @@ milter_negotiate(m, e, milters) if (tTd(64, 5)) sm_dprintf("milter_negotiate(%s): received: version %u, fflags 0x%x, pflags 0x%x\n", m->mf_name, m->mf_fvers, m->mf_fflags, m->mf_pflags); + SM_FREE(response); return 0; error: - if (response != NULL) - sm_free(response); /* XXX */ + SM_FREE(response); return -1; } @@ -2799,7 +2788,7 @@ milter_body(m, e, state) #if !_FFR_MILTER_CONVERT_ALL_LF_TO_CRLF /* Not a CRLF already? */ if (prevchar != '\r') -#endif /* !_FFR_MILTER_CONVERT_ALL_LF_TO_CRLF */ +#endif { /* Room for CR now? */ if (bp + 2 > &buf[sizeof(buf)]) @@ -3003,8 +2992,8 @@ milter_addheader(m, response, rlen, e) h->h_field, mh_value); if (MilterLogLevel > 8) sm_syslog(LOG_INFO, e->e_id, - "Milter change: default header %s value with %s", - h->h_field, mh_value); + "Milter (%s) change: default header %s value with %s", + m->mf_name, h->h_field, mh_value); if (bitset(SMFIP_HDR_LEADSPC, m->mf_pflags)) h->h_value = mh_value; else @@ -3020,8 +3009,8 @@ milter_addheader(m, response, rlen, e) sm_dprintf("Add %s: %s\n", response, mh_value); if (MilterLogLevel > 8) sm_syslog(LOG_INFO, e->e_id, - "Milter add: header: %s: %s", - response, mh_value); + "Milter (%s) add: header: %s: %s", + m->mf_name, response, mh_value); addheader(newstr(response), mh_value, H_USER, e, !bitset(SMFIP_HDR_LEADSPC, m->mf_pflags)); SM_FREE(mh_value); @@ -3104,8 +3093,8 @@ milter_insheader(m, response, rlen, e) sm_dprintf("Insert (%d) %s: %s\n", idx, field, val); if (MilterLogLevel > 8) sm_syslog(LOG_INFO, e->e_id, - "Milter insert (%d): header: %s: %s", - idx, field, val); + "Milter (%s) insert (%d): header: %s: %s", + m->mf_name, idx, field, val); mh_v_len = 0; mh_value = quote_internal_chars(val, NULL, &mh_v_len); insheader(idx, newstr(field), mh_value, H_USER, e, @@ -3195,8 +3184,9 @@ milter_changeheader(m, response, rlen, e) !bitset(H_TRACE, h->h_flags)) { /* - ** DRUMS msg-fmt draft says can only have - ** multiple occurences of trace fields, + ** RFC 2822: + ** 27. No multiple occurrences of fields + ** (except resent and received).* ** so make sure we replace any non-trace, ** non-user field. */ @@ -3218,8 +3208,8 @@ milter_changeheader(m, response, rlen, e) sm_dprintf("Delete (noop) %s\n", field); if (MilterLogLevel > 8) sm_syslog(LOG_INFO, e->e_id, - "Milter delete (noop): header: %s" - , field); + "Milter (%s) delete (noop): header: %s" + , m->mf_name, field); } else { @@ -3228,11 +3218,12 @@ milter_changeheader(m, response, rlen, e) sm_dprintf("Add %s: %s\n", field, mh_value); if (MilterLogLevel > 8) sm_syslog(LOG_INFO, e->e_id, - "Milter change (add): header: %s: %s" - , field, mh_value); + "Milter (%s) change (add): header: %s: %s" + , m->mf_name, field, mh_value); addheader(newstr(field), mh_value, H_USER, e, !bitset(SMFIP_HDR_LEADSPC, m->mf_pflags)); } + SM_FREE(mh_value); return; } @@ -3260,7 +3251,8 @@ milter_changeheader(m, response, rlen, e) if (*val == '\0') { sm_syslog(LOG_INFO, e->e_id, - "Milter delete: header%s %s:%s", + "Milter (%s) delete: header%s %s:%s", + m->mf_name, h == sysheader ? " (default header)" : "", field, h->h_value == NULL ? "" : h->h_value); @@ -3268,7 +3260,8 @@ milter_changeheader(m, response, rlen, e) else { sm_syslog(LOG_INFO, e->e_id, - "Milter change: header%s %s: from %s to %s", + "Milter (%s) change: header%s %s: from %s to %s", + m->mf_name, h == sysheader ? " (default header)" : "", field, h->h_value == NULL ? "" : h->h_value, @@ -3398,16 +3391,18 @@ milter_split_response(response, rlen, pargc) ** response -- encoded form of recipient address. ** rlen -- length of response. ** e -- current envelope. +** mname -- name of milter. ** ** Returns: ** none */ static void -milter_chgfrom(response, rlen, e) +milter_chgfrom(response, rlen, e, mname) char *response; ssize_t rlen; ENVELOPE *e; + const char *mname; { int olderrors, argc; char **argv; @@ -3435,12 +3430,15 @@ milter_chgfrom(response, rlen, e) if (tTd(64, 10)) sm_dprintf("%s\n", response); if (MilterLogLevel > 8) - sm_syslog(LOG_INFO, e->e_id, "Milter chgfrom: %s", response); + sm_syslog(LOG_INFO, e->e_id, "Milter (%s) chgfrom: %s", + mname, response); argv = milter_split_response(response, rlen, &argc); if (argc < 1 || argc > 2) { if (tTd(64, 10)) sm_dprintf("didn't follow protocol argc=%d\n", argc); + if (argv != NULL) + free(argv); return; } @@ -3459,6 +3457,7 @@ milter_chgfrom(response, rlen, e) mail_esmtp_args); } Errors = olderrors; + free(argv); return; } @@ -3469,16 +3468,18 @@ milter_chgfrom(response, rlen, e) ** response -- encoded form of recipient address. ** rlen -- length of response. ** e -- current envelope. +** mname -- name of milter. ** ** Returns: ** none */ static void -milter_addrcpt_par(response, rlen, e) +milter_addrcpt_par(response, rlen, e, mname) char *response; ssize_t rlen; ENVELOPE *e; + const char *mname; { int olderrors, argc; char *delimptr; @@ -3499,13 +3500,16 @@ milter_addrcpt_par(response, rlen, e) if (tTd(64, 10)) sm_dprintf("%s\n", response); if (MilterLogLevel > 8) - sm_syslog(LOG_INFO, e->e_id, "Milter add: rcpt: %s", response); + sm_syslog(LOG_INFO, e->e_id, "Milter (%s) add: rcpt: %s", + mname, response); argv = milter_split_response(response, rlen, &argc); if (argc < 1 || argc > 2) { if (tTd(64, 10)) sm_dprintf("didn't follow protocol argc=%d\n", argc); + if (argv != NULL) + free(argv); return; } olderrors = Errors; @@ -3526,10 +3530,11 @@ milter_addrcpt_par(response, rlen, e) else { sm_dprintf("a=%p, olderrors=%d, Errors=%d\n", - a, olderrors, Errors); + (void *)a, olderrors, Errors); } Errors = olderrors; + free(argv); return; } @@ -3540,16 +3545,18 @@ milter_addrcpt_par(response, rlen, e) ** response -- encoded form of recipient address. ** rlen -- length of response. ** e -- current envelope. +** mname -- name of milter. ** ** Returns: ** none */ static void -milter_addrcpt(response, rlen, e) +milter_addrcpt(response, rlen, e, mname) char *response; ssize_t rlen; ENVELOPE *e; + const char *mname; { int olderrors; @@ -3576,7 +3583,8 @@ milter_addrcpt(response, rlen, e) if (tTd(64, 10)) sm_dprintf("%s\n", response); if (MilterLogLevel > 8) - sm_syslog(LOG_INFO, e->e_id, "Milter add: rcpt: %s", response); + sm_syslog(LOG_INFO, e->e_id, "Milter (%s) add: rcpt: %s", + mname, response); olderrors = Errors; (void) sendtolist(response, NULLADDR, &e->e_sendqueue, 0, e); Errors = olderrors; @@ -3590,17 +3598,21 @@ milter_addrcpt(response, rlen, e) ** response -- encoded form of recipient address. ** rlen -- length of response. ** e -- current envelope. +** mname -- name of milter. ** ** Returns: ** none */ static void -milter_delrcpt(response, rlen, e) +milter_delrcpt(response, rlen, e, mname) char *response; ssize_t rlen; ENVELOPE *e; + const char *mname; { + int r; + if (tTd(64, 10)) sm_dprintf("milter_delrcpt: "); @@ -3623,10 +3635,10 @@ milter_delrcpt(response, rlen, e) if (tTd(64, 10)) sm_dprintf("%s\n", response); + r = removefromlist(response, &e->e_sendqueue, e); if (MilterLogLevel > 8) - sm_syslog(LOG_INFO, e->e_id, "Milter delete: rcpt %s", - response); - (void) removefromlist(response, &e->e_sendqueue, e); + sm_syslog(LOG_INFO, e->e_id, "Milter (%s) delete: rcpt %s, naddrs=%d", + mname, response, r); return; } @@ -3638,17 +3650,19 @@ milter_delrcpt(response, rlen, e) ** rlen -- length of response. ** newfilter -- if first time called by a new filter ** e -- current envelope. +** mname -- name of milter. ** ** Returns: ** 0 upon success, -1 upon failure */ static int -milter_replbody(response, rlen, newfilter, e) +milter_replbody(response, rlen, newfilter, e, mname) char *response; ssize_t rlen; bool newfilter; ENVELOPE *e; + const char *mname; { static char prevchar; int i; @@ -3730,7 +3744,8 @@ milter_replbody(response, rlen, newfilter, e) } if (newfilter && MilterLogLevel > 8) - sm_syslog(LOG_INFO, e->e_id, "Milter message: body replaced"); + sm_syslog(LOG_INFO, e->e_id, "Milter (%s) message: body replaced", + mname); if (response == NULL) { @@ -3898,7 +3913,7 @@ milter_connect(hostname, addr, e, state) ssize_t s; # if NETINET6 char buf6[INET6_ADDRSTRLEN]; -# endif /* NETINET6 */ +# endif if (tTd(64, 10)) sm_dprintf("milter_connect(%s)\n", hostname); @@ -4164,7 +4179,7 @@ milter_envfrom(args, e, state) ** MILTER_ENVRCPT -- send SMTP RCPT command info to milter filters ** ** Parameters: -** args -- SMTP MAIL command args (args[0] == recipient). +** args -- SMTP RCPT command args (args[0] == recipient). ** e -- current envelope. ** state -- return state from response. ** rcpt_error -- does RCPT have an error? @@ -4553,7 +4568,7 @@ milter_data(e, state) "milter_data(%s) lied about changing sender, honoring request anyway", m->mf_name); } - milter_chgfrom(response, rlen, e); + milter_chgfrom(response, rlen, e, m->mf_name); break; case SMFIR_ADDRCPT: @@ -4564,7 +4579,7 @@ milter_data(e, state) "milter_data(%s) lied about adding recipients, honoring request anyway", m->mf_name); } - milter_addrcpt(response, rlen, e); + milter_addrcpt(response, rlen, e, m->mf_name); break; case SMFIR_ADDRCPT_PAR: @@ -4575,7 +4590,7 @@ milter_data(e, state) "milter_data(%s) lied about adding recipients with parameters, honoring request anyway", m->mf_name); } - milter_addrcpt_par(response, rlen, e); + milter_addrcpt_par(response, rlen, e, m->mf_name); break; case SMFIR_DELRCPT: @@ -4586,7 +4601,7 @@ milter_data(e, state) "milter_data(%s): lied about removing recipients, honoring request anyway", m->mf_name); } - milter_delrcpt(response, rlen, e); + milter_delrcpt(response, rlen, e, m->mf_name); break; case SMFIR_REPLBODY: @@ -4615,8 +4630,8 @@ milter_data(e, state) rewind = true; } - if (milter_replbody(response, rlen, - newfilter, e) < 0) + if (milter_replbody(response, rlen, newfilter, + e, m->mf_name) < 0) replfailed = true; newfilter = false; replbody = true; @@ -4644,7 +4659,7 @@ milter_data(e, state) if (replbody && !replfailed) { /* flush possible buffered character */ - milter_replbody(NULL, 0, !replbody, e); + milter_replbody(NULL, 0, !replbody, e, m->mf_name); replbody = false; } @@ -4663,7 +4678,7 @@ milter_data(e, state) *state == SMFIR_ACCEPT) { *state = SMFIR_TEMPFAIL; - SM_FREE_CLR(response); + SM_FREE(response); } if (dfopen) @@ -4687,11 +4702,10 @@ milter_data(e, state) ** an error, we can't really keep it, tempfail it. */ - if (*state == SMFIR_CONTINUE || - *state == SMFIR_ACCEPT) + if (*state == SMFIR_CONTINUE || *state == SMFIR_ACCEPT) { *state = SMFIR_TEMPFAIL; - SM_FREE_CLR(response); + SM_FREE(response); } errno = save_errno; diff --git a/src/mime.c b/src/mime.c index ecfc761dd2e3..48849d6a48ea 100644 --- a/src/mime.c +++ b/src/mime.c @@ -36,7 +36,7 @@ SM_RCSID("@(#)$Id: mime.c,v 8.149 2013-11-22 20:51:56 ca Exp $") /* use "old" mime 7 to 8 algorithm by default */ #ifndef MIME7TO8_OLD # define MIME7TO8_OLD 1 -#endif /* ! MIME7TO8_OLD */ +#endif #if MIME8TO7 static int isboundary __P((char *, char **)); @@ -246,7 +246,7 @@ mime8to7(mci, header, e, boundaries, flags, level) # ifdef USE_B_CLASS if (wordinclass(buf, 'b') || wordinclass(type, 'b')) MapNLtoCRLF = false; -# endif /* USE_B_CLASS */ +# endif if (wordinclass(buf, 'q') || wordinclass(type, 'q')) use_qp = true; @@ -282,7 +282,7 @@ mime8to7(mci, header, e, boundaries, flags, level) else { p = argv[i].a_value; - stripquotes(p); + unfoldstripquotes(p); } if (sm_strlcpy(bbuf, p, sizeof(bbuf)) >= sizeof(bbuf)) { @@ -904,7 +904,7 @@ mimeboundary(line, boundaries) while (i > 0 && (line[i - 1] == ' ' || line[i - 1] == '\t' #if _FFR_MIME_CR_OK || line[i - 1] == '\r' -#endif /* _FFR_MIME_CR_OK */ +#endif )) i--; savec = line[i]; @@ -1103,27 +1103,27 @@ mime7to8(mci, header, e) while ((c1 = sm_io_getc(e->e_dfp, SM_TIME_DEFAULT)) != SM_IO_EOF) { - if (isascii(c1) && isspace(c1)) + if (SM_ISSPACE(c1)) continue; do { c2 = sm_io_getc(e->e_dfp, SM_TIME_DEFAULT); - } while (isascii(c2) && isspace(c2)); + } while (SM_ISSPACE(c2)); if (c2 == SM_IO_EOF) break; do { c3 = sm_io_getc(e->e_dfp, SM_TIME_DEFAULT); - } while (isascii(c3) && isspace(c3)); + } while (SM_ISSPACE(c3)); if (c3 == SM_IO_EOF) break; do { c4 = sm_io_getc(e->e_dfp, SM_TIME_DEFAULT); - } while (isascii(c4) && isspace(c4)); + } while (SM_ISSPACE(c4)); if (c4 == SM_IO_EOF) break; diff --git a/src/newaliases.0 b/src/newaliases.0 index c77f40136ec6..49ff2b0cba3b 100644 --- a/src/newaliases.0 +++ b/src/newaliases.0 @@ -2,33 +2,33 @@ NEWALIASES(1) NEWALIASES(1) -NNAAMMEE +NAME newaliases - rebuild the data base for the mail aliases file -SSYYNNOOPPSSIISS - nneewwaalliiaasseess +SYNOPSIS + newaliases -DDEESSCCRRIIPPTTIIOONN - NNeewwaalliiaasseess rebuilds the random access data base for the mail aliases +DESCRIPTION + Newaliases rebuilds the random access data base for the mail aliases file /etc/mail/aliases. It must be run each time this file is changed in order for the change to take effect. - NNeewwaalliiaasseess is identical to ``sendmail -bi''. + Newaliases is identical to ``sendmail -bi''. - The nneewwaalliiaasseess utility exits 0 on success, and >0 if an error occurs. + The newaliases utility exits 0 on success, and >0 if an error occurs. - Notice: do nnoott use mmaakkeemmaapp to create the aliases data base, because - nneewwaalliiaasseess puts a special token into the data base that is required by - sseennddmmaaiill.. + Notice: do not use makemap to create the aliases data base, because + newaliases puts a special token into the data base that is required by + sendmail. -FFIILLEESS +FILES /etc/mail/aliases The mail aliases file -SSEEEE AALLSSOO +SEE ALSO aliases(5), sendmail(8) -HHIISSTTOORRYY - The nneewwaalliiaasseess command appeared in 4.0BSD. +HISTORY + The newaliases command appeared in 4.0BSD. diff --git a/src/parseaddr.c b/src/parseaddr.c index 2adb39caf0c4..58dde0f92465 100644 --- a/src/parseaddr.c +++ b/src/parseaddr.c @@ -134,6 +134,7 @@ parseaddr(addr, a, flags, delim, delimptr, e, isrcpt) */ qup = false; + e->e_flags |= EF_SECURE; if (REWRITE(pvp, 3, e) == EX_TEMPFAIL) qup = true; if (REWRITE(pvp, 0, e) == EX_TEMPFAIL) @@ -165,6 +166,7 @@ parseaddr(addr, a, flags, delim, delimptr, e, isrcpt) */ allocaddr(a, flags, addr, e); + e->e_flags &= ~EF_SECURE; if (QS_IS_BADADDR(a->q_state)) { /* weed out bad characters in the printable address too */ @@ -218,7 +220,7 @@ parseaddr(addr, a, flags, delim, delimptr, e, isrcpt) msg = "Deferring message until queue run"; if (tTd(20, 1)) sm_dprintf("parseaddr: queueing message\n"); - message(msg); + message("%s", msg); if (e->e_message == NULL && e->e_sendmode != SM_DEFER) e->e_message = sm_rpool_strdup_x(e->e_rpool, msg); a->q_state = QS_QUEUEUP; @@ -273,12 +275,14 @@ invalidaddr(addr, delimptr, isrcpt) } for (; *addr != '\0'; addr++) { +#if !_FFR_EAI if (!EightBitAddrOK && (*addr & 0340) == 0200) { setstat(EX_USAGE); result = true; *addr = BAD_CHAR_REPLACEMENT; } +#endif if (++len > MAXNAME - 1) { char saved = *addr; @@ -350,7 +354,7 @@ hasctrlchar(addr, isrcpt, complain) } result = "too long"; } - if (!EightBitAddrOK && !quoted && (*addr < 32 || *addr == 127)) + if (!quoted && ((unsigned char)*addr < 32 || *addr == 127)) { result = "non-printable character"; *addr = BAD_CHAR_REPLACEMENT; @@ -368,6 +372,7 @@ hasctrlchar(addr, isrcpt, complain) break; } } +#if !_FFR_EAI if (!EightBitAddrOK && (*addr & 0340) == 0200) { setstat(EX_USAGE); @@ -375,6 +380,7 @@ hasctrlchar(addr, isrcpt, complain) *addr = BAD_CHAR_REPLACEMENT; continue; } +#endif } if (quoted) result = "unbalanced quote"; /* unbalanced quote */ @@ -416,7 +422,7 @@ allocaddr(a, flags, paddr, e) ENVELOPE *e; { if (tTd(24, 4)) - sm_dprintf("allocaddr(flags=%x, paddr=%s)\n", flags, paddr); + sm_dprintf("allocaddr(flags=%x, paddr=%s, ad=%d)\n", flags, paddr, bitset(EF_SECURE, e->e_flags)); a->q_paddr = paddr; @@ -425,6 +431,9 @@ allocaddr(a, flags, paddr, e) if (a->q_host == NULL) a->q_host = ""; + if (bitset(EF_SECURE, e->e_flags)) + a->q_flags |= QSECURE; + if (bitset(RF_COPYPARSE, flags)) { a->q_host = sm_rpool_strdup_x(e->e_rpool, a->q_host); @@ -869,7 +878,7 @@ prescan(addr, delim, pvpbuf, pvpbsize, delimptr, toktab, ignore) char *ptr = p; anglecnt++; - while (isascii(*ptr) && isspace(*ptr)) + while (SM_ISSPACE(*ptr)) ptr++; if (*ptr == '@') route_syntax = true; @@ -888,7 +897,7 @@ prescan(addr, delim, pvpbuf, pvpbsize, delimptr, toktab, ignore) anglecnt--; route_syntax = false; } - else if (delim == ' ' && isascii(c) && isspace(c)) + else if (delim == ' ' && SM_ISSPACE(c)) c = ' '; if (c == NOCHAR) @@ -1351,7 +1360,7 @@ rewrite(pvp, ruleset, reclevel, e, maxatom) pp = m->match_first; while (pp <= m->match_last) { - sm_dprintf(" %p=\"", *pp); + sm_dprintf(" %p=\"", (void *)*pp); sm_dflush(); sm_dprintf("%s\"", *pp++); } @@ -1805,6 +1814,7 @@ map_lookup(smap, key, argvect, pstat, e) map = &smap->s_map; DYNOPENMAP(map); + map->map_mflags |= MF_SECURE; /* default: secure */ if (e->e_sendmode == SM_DEFER && bitset(MF_DEFER, map->map_mflags)) @@ -1834,10 +1844,15 @@ map_lookup(smap, key, argvect, pstat, e) sm_dprintf(") => "); } replac = (*map->map_class->map_lookup)(map, key, argvect, &status); + if (bitset(MF_SECURE, map->map_mflags)) + map->map_mflags &= ~MF_SECURE; + else + e->e_flags &= ~EF_SECURE; + if (tTd(60, 1)) - sm_dprintf("%s (%d)\n", + sm_dprintf("%s (%d), ad=%d\n", replac != NULL ? replac : "NOT FOUND", - status); + status, bitset(MF_SECURE, map->map_mflags)); /* should recover if status == EX_TEMPFAIL */ if (status == EX_TEMPFAIL && !bitset(MF_NODEFER, map->map_mflags)) @@ -2287,8 +2302,8 @@ cataddr(pvp, evp, buf, sz, spacesub, external) ** If the current character (c) is METAQUOTE and we ** want the "external" form and the next character ** is not NUL, then overwrite METAQUOTE with that - ** character (i.e., METAQUOTE ch is changed to - ** ch). p[-1] is used because p is advanced (above). + ** character (i.e., METAQUOTE ch is changed to ch). + ** p[-1] is used because p is advanced (above). */ if ((c & 0377) == METAQUOTE && external && *q != '\0') @@ -2439,6 +2454,10 @@ static struct qflags AddressFlags[] = { "QINTBCC", QINTBCC }, { "QDYNMAILER", QDYNMAILER }, { "QRCPTOK", QRCPTOK }, + { "QSECURE", QSECURE }, + { "QTHISPASS", QTHISPASS }, + { "QRCPTOK", QRCPTOK }, + { "QQUEUED", QQUEUED }, { NULL, 0 } }; @@ -2461,7 +2480,7 @@ printaddr(fp, a, follow) while (a != NULL) { - (void) sm_io_fprintf(fp, SM_TIME_DEFAULT, "%p=", a); + (void) sm_io_fprintf(fp, SM_TIME_DEFAULT, "%p=", (void *)a); (void) sm_io_flush(fp, SM_TIME_DEFAULT); /* find the mailer -- carefully */ @@ -2564,7 +2583,7 @@ printaddr(fp, a, follow) } (void) sm_io_fprintf(fp, SM_TIME_DEFAULT, ", next=%p, alias %p, uid %d, gid %d\n", - a->q_next, a->q_alias, + (void *)a->q_next, (void *)a->q_alias, (int) a->q_uid, (int) a->q_gid); (void) sm_io_fprintf(fp, SM_TIME_DEFAULT, "\tflags=%lx<", a->q_flags); @@ -2931,7 +2950,7 @@ dequote_init(map, args) map->map_mflags |= MF_KEEPQUOTES; for (;;) { - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; if (*p != '-') break; @@ -2950,7 +2969,7 @@ dequote_init(map, args) map->map_spacesub = *++p; break; } - while (*p != '\0' && !(isascii(*p) && isspace(*p))) + while (*p != '\0' && !(SM_ISSPACE(*p))) p++; if (*p != '\0') *p = '\0'; @@ -3064,7 +3083,7 @@ dequote_map(map, name, av, statp) ** Parameters: ** rwset -- the rewriting set to use. ** p1 -- the first string to check. -** p2 -- the second string to check -- may be null. +** p2 -- the second string to check -- may be NULL. ** e -- the current envelope. ** flags -- control some behavior, see RSF_ in sendmail.h ** logl -- logging level. @@ -3083,13 +3102,13 @@ dequote_map(map, name, av, statp) int rscheck(rwset, p1, p2, e, flags, logl, host, logid, addr, addrstr) char *rwset; - char *p1; - char *p2; + const char *p1; + const char *p2; ENVELOPE *e; int flags; int logl; - char *host; - char *logid; + const char *host; + const char *logid; ADDRESS *addr; char **addrstr; { @@ -3239,7 +3258,7 @@ rscheck(rwset, p1, p2, e, flags, logl, host, logid, addr, addrstr) if (LogLevel > logl) { - char *relay; + const char *relay; char *p; char lbuf[MAXLINE]; @@ -3296,13 +3315,14 @@ rscheck(rwset, p1, p2, e, flags, logl, host, logid, addr, addrstr) sm_exc_raisenew_x(&EtypeQuickAbort, 2); return rstat; } + /* ** RSCAP -- call rewriting set to return capabilities ** ** Parameters: ** rwset -- the rewriting set to use. ** p1 -- the first string to check. -** p2 -- the second string to check -- may be null. +** p2 -- the second string to check -- may be NULL. ** e -- the current envelope. ** pvp -- pointer to token vector. ** pvpbuf -- buffer space. diff --git a/src/queue.c b/src/queue.c index a323301fd62b..526b40469486 100644 --- a/src/queue.c +++ b/src/queue.c @@ -26,13 +26,13 @@ SM_RCSID("@(#)$Id: queue.c,v 8.1000 2013-11-22 20:51:56 ca Exp $") # if HASFLOCK && defined(O_EXLOCK) # define SM_OPEN_EXLOCK 1 # define TF_OPEN_FLAGS (O_CREAT|O_WRONLY|O_EXCL|O_EXLOCK) -# else /* HASFLOCK && defined(O_EXLOCK) */ +# else # define TF_OPEN_FLAGS (O_CREAT|O_WRONLY|O_EXCL) -# endif /* HASFLOCK && defined(O_EXLOCK) */ +# endif #ifndef SM_OPEN_EXLOCK # define SM_OPEN_EXLOCK 0 -#endif /* ! SM_OPEN_EXLOCK */ +#endif /* ** Historical notes: @@ -123,7 +123,7 @@ static WORKGRP volatile WorkGrp[MAXWORKGROUPS + 1]; /* work groups */ #if SM_HEAP_CHECK static SM_DEBUG_T DebugLeakQ = SM_DEBUG_INITIALIZER("leak_q", "@(#)$Debug: leak_q - trace memory leaks during queue processing $"); -#endif /* SM_HEAP_CHECK */ +#endif static void grow_wlist __P((int, int)); static int multiqueue_cache __P((char *, int, QUEUEGRP *, int, unsigned int *)); @@ -139,7 +139,7 @@ static ADDRESS *setctluser __P((char *, int, ENVELOPE *)); #if _FFR_RHS static int sm_strshufflecmp __P((char *, char *)); static void init_shuffle_alphabet __P(()); -#endif /* _FFR_RHS */ +#endif /* ** Note: workcmpf?() don't use a prototype because it will cause a conflict @@ -157,13 +157,13 @@ static int workcmpf5(); static int workcmpf6(); #if _FFR_RHS static int workcmpf7(); -#endif /* _FFR_RHS */ +#endif #if RANDOMSHIFT # define get_rand_mod(m) ((get_random() >> RANDOMSHIFT) % (m)) -#else /* RANDOMSHIFT */ +#else # define get_rand_mod(m) (get_random() % (m)) -#endif /* RANDOMSHIFT */ +#endif /* ** File system definition. @@ -185,6 +185,7 @@ static FILESYS FileSys[MAXFILESYS]; /* queue file systems */ static const char *FSPath[MAXFILESYS]; /* pathnames for file systems */ #if SM_CONF_SHM +# include /* ** Shared memory data @@ -198,7 +199,9 @@ static const char *FSPath[MAXFILESYS]; /* pathnames for file systems */ ** NumFileSys -- number of file systems. ** FileSys -- (array of) structure for used file systems. ** RSATmpCnt -- counter for number of uses of ephemeral RSA key. +** [OCC -- ...] ** QShm -- (array of) structure for information about queue directories. +** this must be last as the size is depending on the config. */ /* @@ -236,13 +239,21 @@ static size_t shms; # define OFF_RSA_TMP_CNT(p) (((char *) (p)) + SHM_OFF_HEAD + sizeof(FileSys) + sizeof(int)) int *PRSATmpCnt; +# if _FFR_OCC +# define OFF_OCC_SHM(p) (((char *) (p)) + SHM_OFF_HEAD + sizeof(FileSys) + sizeof(int) * 2) +# define OCC_SIZE (sizeof(CHash_T) * CPMHSIZE) +static CHash_T *occ = NULL; +# else +# define OCC_SIZE 0 +# endif + /* offset for queue_shm */ -# define OFF_QUEUE_SHM(p) (((char *) (p)) + SHM_OFF_HEAD + sizeof(FileSys) + sizeof(int) * 2) +# define OFF_QUEUE_SHM(p) (((char *) (p)) + SHM_OFF_HEAD + sizeof(FileSys) + sizeof(int) * 2 + OCC_SIZE) # define QSHM_ENTRIES(i) QShm[i].qs_entries /* basic size of shared memory segment */ -# define SM_T_SIZE (SHM_OFF_HEAD + sizeof(FileSys) + sizeof(int) * 2) +# define SM_T_SIZE (SHM_OFF_HEAD + sizeof(FileSys) + sizeof(int) * 2 + OCC_SIZE) static unsigned int hash_q __P((char *, unsigned int)); @@ -275,7 +286,6 @@ hash_q(p, h) return h; } - #else /* SM_CONF_SHM */ # define FILE_SYS(i) FileSys[i] #endif /* SM_CONF_SHM */ @@ -293,11 +303,10 @@ hash_q(p, h) ** A AUTH= parameter ** B body type ** C controlling user -** D data file name +** D data file name (obsolete) ** d data file directory name (added in 8.12) ** E error recipient ** F flag bits -** G free ** H header ** I data file's inode number ** K time of last delivery attempt @@ -313,7 +322,6 @@ hash_q(p, h) ** T init time ** V queue file version ** X free (was: character set if _FFR_SAVE_CHARSET) -** Y free ** Z original envelope id from ESMTP ** ! deliver by (added in 8.12) ** $ define macro @@ -388,7 +396,7 @@ queueup(e, announce, msync) if (tfd < 0 || #if !SM_OPEN_EXLOCK !lockfile(tfd, tf, NULL, LOCK_EX|LOCK_NB) || -#endif /* !SM_OPEN_EXLOCK */ +#endif (tfp = sm_io_open(SmFtStdiofd, SM_TIME_DEFAULT, (void *) &tfd, SM_IO_WRONLY, NULL)) == NULL) @@ -398,7 +406,7 @@ queueup(e, announce, msync) printopenfds(true); errno = save_errno; syserr("!queueup: cannot create queue file %s, euid=%ld, fd=%d, fp=%p", - tf, (long) geteuid(), tfd, tfp); + tf, (long) geteuid(), tfd, (void *)tfp); /* NOTREACHED */ } e->e_lockfp = tfp; @@ -427,18 +435,18 @@ queueup(e, announce, msync) #if SM_OPEN_EXLOCK else break; -#endif /* SM_OPEN_EXLOCK */ +#endif } if (tfd >= 0) { #if SM_OPEN_EXLOCK /* file is locked by open() */ break; -#else /* SM_OPEN_EXLOCK */ +#else if (lockfile(tfd, tf, NULL, LOCK_EX|LOCK_NB)) break; else -#endif /* SM_OPEN_EXLOCK */ +#endif if (LogLevel > 0 && (i % 32) == 0) sm_syslog(LOG_ALERT, e->e_id, "queueup: cannot lock %s: %s", @@ -665,6 +673,10 @@ queueup(e, announce, msync) *p++ = 'n'; if (bitset(EF_SPLIT, e->e_flags)) *p++ = 's'; +#if _FFR_EAI + if (e->e_smtputf8) + *p++ = 'e'; +#endif *p++ = '\0'; if (buf[0] != '\0') (void) sm_io_fprintf(tfp, SM_TIME_DEFAULT, "F%s\n", buf); @@ -697,6 +709,7 @@ queueup(e, announce, msync) printctladdr(NULL, NULL); for (q = e->e_sendqueue; q != NULL; q = q->q_next) { + q->q_flags &= ~QQUEUED; if (!QS_IS_UNDELIVERED(q->q_state)) continue; @@ -752,6 +765,14 @@ queueup(e, announce, msync) tag, NULL, (time_t) 0, e, q, EX_OK); e->e_to = NULL; } + + /* + ** This is only "valid" when the msg is safely in the queue, + ** i.e., EF_INQUEUE needs to be set. + */ + + q->q_flags |= QQUEUED; + if (tTd(40, 1)) { sm_dprintf("queueing "); @@ -1288,7 +1309,7 @@ schedule_queue_runs(runall, wgrp, didit) #if _FFR_QUEUE_SCHED_DBG time_t lastsched; bool sched; -#endif /* _FFR_QUEUE_SCHED_DBG */ +#endif time_t now; time_t minqintvl; @@ -1307,7 +1328,7 @@ schedule_queue_runs(runall, wgrp, didit) #if _FFR_QUEUE_SCHED_DBG lastsched = 0; sched = false; -#endif /* _FFR_QUEUE_SCHED_DBG */ +#endif qgrp = WorkGrp[wgrp].wg_qgs[cgrp]->qg_index; if (Queue[qgrp]->qg_queueintvl > 0) qintvl = Queue[qgrp]->qg_queueintvl; @@ -1317,12 +1338,12 @@ schedule_queue_runs(runall, wgrp, didit) qintvl = (time_t) 0; #if _FFR_QUEUE_SCHED_DBG lastsched = Queue[qgrp]->qg_nextrun; -#endif /* _FFR_QUEUE_SCHED_DBG */ +#endif if ((runall || Queue[qgrp]->qg_nextrun <= now) && qintvl > 0) { #if _FFR_QUEUE_SCHED_DBG sched = true; -#endif /* _FFR_QUEUE_SCHED_DBG */ +#endif if (minqintvl == 0 || qintvl < minqintvl) minqintvl = qintvl; @@ -1340,9 +1361,10 @@ schedule_queue_runs(runall, wgrp, didit) if (tTd(69, 10)) sm_syslog(LOG_INFO, NOQID, "sqr: wgrp=%d, cgrp=%d, qgrp=%d, intvl=%ld, QI=%ld, runall=%d, lastrun=%ld, nextrun=%ld, sched=%d", - wgrp, cgrp, qgrp, Queue[qgrp]->qg_queueintvl, - QueueIntvl, runall, lastsched, - Queue[qgrp]->qg_nextrun, sched); + wgrp, cgrp, qgrp, + (long) Queue[qgrp]->qg_queueintvl, + (long) QueueIntvl, runall, (long) lastsched, + (long) Queue[qgrp]->qg_nextrun, sched); #endif /* _FFR_QUEUE_SCHED_DBG */ INCR_MOD(cgrp, WorkGrp[wgrp].wg_numqgrp); } while (endgrp != cgrp); @@ -1394,7 +1416,7 @@ checkqueuerunner() "checkqueuerunner: queue %d should have been run at %s, queue interval %ld", qgrp, arpadate(ctime(&Queue[qgrp]->qg_nextrun)), - qintvl); + (long) qintvl); } } if (minqintvl > 0) @@ -1584,7 +1606,7 @@ runqueue(forkflag, verbose, persistent, runall) #if SM_HEAP_CHECK if (sm_debug_active(&DebugLeakQ, 1)) sm_heap_setgroup(oldgroup); -#endif /* SM_HEAP_CHECK */ +#endif return ret; } @@ -1722,7 +1744,7 @@ runner_work(e, sequenceno, didfork, skip, njobs) #if _FFR_SKIP_DOMAINS ** In the case of the BYHOST Queue Sort Order, the 'item' ** is a domain, so we work on every 'skip'th (N-th) domain. -#endif * _FFR_SKIP_DOMAINS * +#endif */ #if _FFR_SKIP_DOMAINS @@ -1840,7 +1862,17 @@ runner_work(e, sequenceno, didfork, skip, njobs) #if SM_HEAP_CHECK if (sm_debug_active(&DebugLeakQ, 1)) sm_heap_setgroup(oldgroup); -#endif /* SM_HEAP_CHECK */ +#endif +#if _FFR_TESTS + if (tTd(76, 101)) + { + int sl; + + sl = tTdlevel(76) - 100; + sm_dprintf("run_work_group: sleep=%d\n", sl); + sleep(sl); + } +#endif } BlockOldsh = false; @@ -2095,7 +2127,7 @@ run_work_group(wgrp, flags) /* tweak niceness of queue runs */ if (Queue[qgrp]->qg_nice > 0) (void) nice(Queue[qgrp]->qg_nice); -#endif /* HASNICE */ +#endif /* XXX running queue group... */ sm_setproctitle(true, CurEnv, "running queue: %s", @@ -2120,7 +2152,7 @@ run_work_group(wgrp, flags) #if SM_CONF_SHM if (ShmId != SM_SHM_NO_ID) QSHM_ENTRIES(Queue[qgrp]->qg_qpaths[qdir].qp_idx) = h; -#endif /* SM_CONF_SHM */ +#endif /* If there are no more items in this queue advance */ if (!more) { @@ -2332,12 +2364,12 @@ run_work_group(wgrp, flags) /* Update MX records for FallbackMX. */ if (FallbackMX != NULL) (void) getfallbackmxrr(FallbackMX); -#endif /* NAMED_BIND */ +#endif #if USERDB /* close UserDatabase */ _udbx_close(); -#endif /* USERDB */ +#endif #if SM_HEAP_CHECK if (sm_debug_active(&SmHeapCheck, 2) @@ -2441,7 +2473,7 @@ runqueueevent(ignore) #if _FFR_QUEUE_SCHED_DBG if (tTd(69, 10)) sm_syslog(LOG_INFO, NOQID, "rqe: done"); -#endif /* _FFR_QUEUE_SCHED_DBG */ +#endif errno = save_errno; if (errno == EINTR) @@ -2514,7 +2546,7 @@ gatherq(qgrp, qdir, doall, full, more, pnentries) if (tTd(41, 1)) { - sm_dprintf("gatherq:\n"); + sm_dprintf("gatherq: %s\n", qd); check = QueueLimitId; while (check != NULL) @@ -2729,7 +2761,7 @@ gatherq(qgrp, qdir, doall, full, more, pnentries) if (QueueSortOrder == QSO_BYHOST #if _FFR_RHS || QueueSortOrder == QSO_BYSHUFFLE -#endif /* _FFR_RHS */ +#endif ) { /* need w_host set for host sort order */ @@ -2816,7 +2848,7 @@ gatherq(qgrp, qdir, doall, full, more, pnentries) if (QueueSortOrder == QSO_BYSHUFFLE) w->w_host = newstr(&p[1]); else -#endif /* _FFR_RHS */ +#endif w->w_host = strrev(&p[1]); makelower(w->w_host); i &= ~NEED_H; @@ -4020,7 +4052,7 @@ readqf(e, openonly) ST_INODE(st) != ST_INODE(stf) || #if HAS_ST_GEN && 0 /* AFS returns garbage in st_gen */ st.st_gen != stf.st_gen || -#endif /* HAS_ST_GEN && 0 */ +#endif st.st_uid != stf.st_uid || st.st_gid != stf.st_gid || st.st_size != stf.st_size) @@ -4163,7 +4195,7 @@ readqf(e, openonly) #if _FFR_QUEUE_MACRO macdefine(&e->e_macro, A_TEMP, macid("{queue}"), qid_printqueue(e->e_qgrp, e->e_qdir)); -#endif /* _FFR_QUEUE_MACRO */ +#endif e->e_dfino = -1; e->e_msgsize = -1; while (bufsize = sizeof(buf), @@ -4217,7 +4249,7 @@ readqf(e, openonly) /* forbid queue groups in MSP? */ if (UseMSP) goto hackattack; -#endif /* _FFR_MSP_PARANOIA */ +#endif for (qgrp = 0; qgrp < NumQueue && Queue[qgrp] != NULL; ++qgrp) @@ -4285,6 +4317,12 @@ readqf(e, openonly) case 'w': /* warning sent */ e->e_flags |= EF_WARNING; break; + +#if _FFR_EAI + case 'e': /* message requires EAI */ + e->e_smtputf8 = true; + break; +#endif /* _FFR_EAI */ } } break; @@ -4493,14 +4531,11 @@ readqf(e, openonly) case '$': /* define macro */ { - char *p; - - /* XXX elimate p? */ r = macid_parse(&bp[1], &ep); if (r == 0) break; - p = sm_rpool_strdup_x(e->e_rpool, ep); - macdefine(&e->e_macro, A_PERM, r, p); + macdefine(&e->e_macro, A_PERM, r, + sm_rpool_strdup_x(e->e_rpool, ep)); } break; @@ -4550,6 +4585,26 @@ readqf(e, openonly) /* other checks? */ #endif /* _FFR_QF_PARANOIA */ +#if _FFR_EAI + /* + ** If this message originates from something other than + ** srvrsmtp.c, then it might use UTF8 addresses but not be + ** marked. We'll just add the mark so we're sure that it + ** either can be delivered or will be returned. + */ + + if (!e->e_smtputf8) + { + ADDRESS *q; + + for (q = e->e_sendqueue; q != NULL; q = q->q_next) + if (!addr_is_ascii(q->q_paddr) && !e->e_smtputf8) + e->e_smtputf8 = true; + if (!addr_is_ascii(e->e_from.q_paddr) && !e->e_smtputf8) + e->e_smtputf8 = true; + } +#endif /* _FFR_EAI */ + /* possibly set ${dsn_ret} macro */ if (bitset(EF_RET_PARAM, e->e_flags)) { @@ -4626,11 +4681,13 @@ readqf(e, openonly) static void prtstr __P((char *, int)); #if _FFR_BOUNCE_QUEUE -# define SKIP_BOUNCE_QUEUE \ - if (i == BounceQueue) \ +# define IS_BOUNCE_QUEUE(i) ((i) == BounceQueue) +# define SKIP_BOUNCE_QUEUE(i) \ + if (IS_BOUNCE_QUEUE(i)) \ continue; #else -# define SKIP_BOUNCE_QUEUE +# define IS_BOUNCE_QUEUE(i) false +# define SKIP_BOUNCE_QUEUE(i) #endif static void @@ -4696,7 +4753,7 @@ printnqe(out, prefix) { int j; - SKIP_BOUNCE_QUEUE + SKIP_BOUNCE_QUEUE(i) k++; for (j = 0; j < Queue[i]->qg_numqueues; j++) { @@ -4837,7 +4894,7 @@ print_single_queue(qgrp, qdir) #ifdef NGROUPS_MAX int n; extern GIDSET_T InitialGidSet[NGROUPS_MAX]; -#endif /* NGROUPS_MAX */ +#endif if (stat(qd, &st) < 0) { @@ -5448,7 +5505,7 @@ assign_queueid(e) if (tTd(7, 1)) sm_dprintf("assign_queueid: assigned id %s, e=%p\n", - e->e_id, e); + e->e_id, (void *)e); if (LogLevel > 93) sm_syslog(LOG_DEBUG, e->e_id, "assigned id"); } @@ -5787,7 +5844,7 @@ pickqdir(qg, fsize, e) #if _FFR_TESTS if (tTd(4, 101)) return NOQDIR; -#endif /* _FFR_TESTS */ +#endif if (MinBlocksFree <= 0 && fsize <= 0) return qdir; @@ -5963,9 +6020,9 @@ chkqdir(name, sff) return false; #if HASLSTAT if (lstat(name, &statb) < 0) -#else /* HASLSTAT */ +#else if (stat(name, &statb) < 0) -#endif /* HASLSTAT */ +#endif { if (tTd(41, 2)) sm_dprintf("chkqdir: stat(\"%s\"): %s\n", @@ -6081,7 +6138,7 @@ multiqueue_cache(basedir, blen, qg, qn, phash) sff |= SFF_SAFEDIRPATH|SFF_NOWWFILES; if (!UseMSP) sff |= SFF_NOGWFILES; -#endif /* _FFR_CHK_QUEUE */ +#endif if (!SM_IS_DIR_START(qg->qg_qdir)) { @@ -6288,7 +6345,7 @@ multiqueue_cache(basedir, blen, qg, qn, phash) #if SM_CONF_SHM qg->qg_qpaths[qg->qg_numqueues].qp_idx = qn; *phash = hash_q(relpath, *phash); -#endif /* SM_CONF_SHM */ +#endif qg->qg_numqueues++; ++qn; slotsleft--; @@ -6345,7 +6402,7 @@ multiqueue_cache(basedir, blen, qg, qn, phash) #if SM_CONF_SHM qg->qg_qpaths[0].qp_idx = qn; *phash = hash_q(qg->qg_qpaths[0].qp_name, *phash); -#endif /* SM_CONF_SHM */ +#endif ++qn; } return qn; @@ -6625,12 +6682,25 @@ disk_status(out, prefix) ** none. */ -#if _FFR_USE_SEM_LOCKING -#if SM_CONF_SEM +#if _FFR_USE_SEM_LOCKING && SM_CONF_SEM static int SemId = -1; /* Semaphore Id */ int SemKey = SM_SEM_KEY; -#endif /* SM_CONF_SEM */ -#endif /* _FFR_USE_SEM_LOCKING */ +# define SEM_LOCK(r) \ + do \ + { \ + if (SemId >= 0) \ + r = sm_sem_acq(SemId, 0, 1); \ + } while (0) +# define SEM_UNLOCK(r) \ + do \ + { \ + if (SemId >= 0 && r >= 0) \ + r = sm_sem_rel(SemId, 0, 1); \ + } while (0) +#else /* _FFR_USE_SEM_LOCKING && SM_CONF_SEM */ +# define SEM_LOCK(r) +# define SEM_UNLOCK(r) +#endif /* _FFR_USE_SEM_LOCKING && SM_CONF_SEM */ static void init_sem __P((bool)); @@ -6683,11 +6753,118 @@ stop_sem(owner) #if SM_CONF_SEM if (owner && SemId >= 0) sm_sem_stop(SemId); -#endif /* SM_CONF_SEM */ +#endif #endif /* _FFR_USE_SEM_LOCKING */ return; } +# if _FFR_OCC +/* +** Todo: call occ_close() +** when closing a connection to decrease #open connections (and rate!) +** (currently done as hack in deliver()) +** must also be done if connection couldn't be opened (see daemon.c: OCC_CLOSE) +*/ + +/* +** OCC_EXCEEDED -- is an outgoing connection limit exceeded? +** +** Parameters: +** e -- envelope +** mci -- mail connection information +** host -- name of host +** addr -- address of host +** +** Returns: +** true iff an outgoing connection limit is exceeded +*/ + +bool +occ_exceeded(e, mci, host, addr) + ENVELOPE *e; + MCI *mci; + const char *host; + SOCKADDR *addr; +{ + time_t now; + bool exc; + int r, ratelimit, conclimit; + char *limit; /* allocated from e_rpool by rscheck(), no need to free() */ + +/* if necessary, some error checking for a number could be done here */ +#define STR2INT(r, limit, val) \ + do \ + { \ + if ((r) == EX_OK && (limit) != NULL) \ + (val) = atoi((limit)); \ + } while (0); + + if (occ == NULL || e == NULL) + return false; + ratelimit = conclimit = 0; + limit = NULL; + r = rscheck("oc_rate", host, anynet_ntoa(addr), e, RSF_ADDR, + 12, NULL, NOQID, NULL, &limit); + STR2INT(r, limit, ratelimit); + limit = NULL; + r = rscheck("oc_conc", host, anynet_ntoa(addr), e, RSF_ADDR, + 12, NULL, NOQID, NULL, &limit); + STR2INT(r, limit, conclimit); + now = curtime(); + + /* lock occ: lock entire shared memory segment */ + SEM_LOCK(r); + exc = (bool) conn_limits(e, now, addr, SM_CLFL_EXC, occ, ratelimit, + conclimit); + SEM_UNLOCK(r); + if (!exc && mci != NULL) + mci->mci_flags |= MCIF_OCC_INCR; + return exc; +} + +/* +** OCC_CLOSE -- "close" an outgoing connection: up connection status +** +** Parameters: +** e -- envelope +** mci -- mail connection information +** host -- name of host +** addr -- address of host +** +** Returns: +** true after successful update +*/ + +bool +occ_close(e, mci, host, addr) + ENVELOPE *e; + MCI *mci; + const char *host; + SOCKADDR *addr; +{ + time_t now; +# if _FFR_USE_SEM_LOCKING && SM_CONF_SEM + int r; +# endif + + if (occ == NULL || e == NULL) + return false; + if (mci == NULL || mci->mci_state == MCIS_CLOSED || + bitset(MCIF_CACHED, mci->mci_flags) || + !bitset(MCIF_OCC_INCR, mci->mci_flags)) + return false; + mci->mci_flags &= ~MCIF_OCC_INCR; + + now = curtime(); + + /* lock occ: lock entire shared memory segment */ + SEM_LOCK(r); + (void) conn_limits(e, now, addr, SM_CLFL_EXC, occ, -1, -1); + SEM_UNLOCK(r); + return true; +} +# endif /* _FFR_OCC */ + /* ** UPD_QS -- update information about queue when adding/deleting an entry ** @@ -6717,7 +6894,7 @@ upd_qs(e, count, space, where) int idx; # if _FFR_USE_SEM_LOCKING int r; -# endif /* _FFR_USE_SEM_LOCKING */ +# endif long s; if (ShmId == SM_SHM_NO_ID || e == NULL) @@ -6732,15 +6909,9 @@ upd_qs(e, count, space, where) /* XXX in theory this needs to be protected with a mutex */ if (QSHM_ENTRIES(idx) >= 0 && count != 0) { -# if _FFR_USE_SEM_LOCKING - if (SemId >= 0) - r = sm_sem_acq(SemId, 0, 1); -# endif /* _FFR_USE_SEM_LOCKING */ + SEM_LOCK(r); QSHM_ENTRIES(idx) += count; -# if _FFR_USE_SEM_LOCKING - if (SemId >= 0 && r >= 0) - r = sm_sem_rel(SemId, 0, 1); -# endif /* _FFR_USE_SEM_LOCKING */ + SEM_UNLOCK(r); } fidx = Queue[e->e_qgrp]->qg_qpaths[e->e_qdir].qp_fsysidx; @@ -7007,12 +7178,18 @@ init_shm(qn, owner, hash) QShm = (QUEUE_SHM_T *) OFF_QUEUE_SHM(Pshm); PRSATmpCnt = (int *) OFF_RSA_TMP_CNT(Pshm); *PRSATmpCnt = 0; +# if _FFR_OCC + occ = (CHash_T *) OFF_OCC_SHM(Pshm); +# endif if (owner) { /* initialize values in shared memory */ NumFileSys = 0; for (i = 0; i < qn; i++) QShm[i].qs_entries = -1; +# if _FFR_OCC + memset(occ, 0, OCC_SIZE); +# endif } init_sem(owner); return; @@ -7120,7 +7297,7 @@ setup_queues(owner) } #if SM_CONF_SHM hashval = hash_q(basedir, hashval); -#endif /* SM_CONF_SHM */ +#endif /* initialize for queue runs */ DoQueueRun = false; @@ -7163,7 +7340,7 @@ setup_queues(owner) #if _FFR_MSP_PARANOIA syserr("dangerous permissions=%o on queue directory %s", (unsigned int) st.st_mode, basedir); -#else /* _FFR_MSP_PARANOIA */ +#else if (LogLevel > 0) sm_syslog(LOG_ERR, NOQID, "dangerous permissions=%o on queue directory %s", @@ -7173,7 +7350,7 @@ setup_queues(owner) #if _FFR_MSP_PARANOIA if (NumQueue > 1) syserr("can not use multiple queues for MSP"); -#endif /* _FFR_MSP_PARANOIA */ +#endif } /* initial number of queue directories */ @@ -7279,7 +7456,7 @@ set_def_queueval(qg, all) qg->qg_qdir = QueueDir; #if _FFR_QUEUE_GROUP_SORTORDER qg->qg_sortorder = QueueSortOrder; -#endif /* _FFR_QUEUE_GROUP_SORTORDER */ +#endif qg->qg_maxqrun = all ? MaxRunnersPerQueue : -1; qg->qg_nice = NiceQueueRun; } @@ -7331,7 +7508,7 @@ makequeue(line, qdef) /* collect the queue name */ for (p = line; - *p != '\0' && *p != ',' && !(isascii(*p) && isspace(*p)); + *p != '\0' && *p != ',' && !(SM_ISSPACE(*p)); p++) continue; if (*p != '\0') @@ -7346,8 +7523,7 @@ makequeue(line, qdef) { auto char *delimptr; - while (*p != '\0' && - (*p == ',' || (isascii(*p) && isspace(*p)))) + while (*p != '\0' && (*p == ',' || (SM_ISSPACE(*p)))) p++; /* p now points to field code */ @@ -7359,7 +7535,7 @@ makequeue(line, qdef) syserr("queue %s: `=' expected", qg->qg_name); return; } - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; /* p now points to the field body */ @@ -7378,7 +7554,7 @@ makequeue(line, qdef) case 'F': /* flags */ for (; *p != '\0'; p++) - if (!(isascii(*p) && isspace(*p))) + if (!(SM_ISSPACE(*p))) setbitn(*p, qg->qg_flags); break; @@ -7685,13 +7861,17 @@ makeworkgroups() { si[i].sg_maxqrun = Queue[i]->qg_maxqrun; si[i].sg_idx = i; + + /* Hack to make sure BounceQueue ends up last */ + if (IS_BOUNCE_QUEUE(i)) + si[i].sg_maxqrun = INT_MIN; } qsort(si, NumQueue, sizeof(si[0]), cmpidx); NumWorkGroups = 0; for (i = 0; i < NumQueue; i++) { - SKIP_BOUNCE_QUEUE + SKIP_BOUNCE_QUEUE(i) total_runners += si[i].sg_maxqrun; if (MaxQueueChildren <= 0 || total_runners <= MaxQueueChildren) NumWorkGroups++; @@ -7717,7 +7897,11 @@ makeworkgroups() dir = 1; for (i = 0; i < NumQueue; i++) { - SKIP_BOUNCE_QUEUE + h = si[i].sg_idx; + if (tTd(41, 49)) + sm_dprintf("sortqg: i=%d, j=%d, h=%d, skip=%d\n", + i, j, h, IS_BOUNCE_QUEUE(h)); + SKIP_BOUNCE_QUEUE(h); /* a to-and-fro packing scheme, continue from last position */ if (j >= NumWorkGroups) @@ -7745,7 +7929,6 @@ makeworkgroups() (WorkGrp[j].wg_numqgrp + 1))); } - h = si[i].sg_idx; WorkGrp[j].wg_qgs[WorkGrp[j].wg_numqgrp] = Queue[h]; WorkGrp[j].wg_numqgrp++; WorkGrp[j].wg_runners += Queue[h]->qg_maxqrun; @@ -7782,6 +7965,9 @@ makeworkgroups() sm_dprintf("%s, ", WorkGrp[i].wg_qgs[j]->qg_name); } + if (tTd(41, 12)) + sm_dprintf("lowqintvl=%d", + (int) WorkGrp[i].wg_lowqintvl); sm_dprintf("\n"); } } @@ -8143,7 +8329,7 @@ split_across_queue_groups(e) es = splits[i]; #if 0 es->e_qdir = pickqdir(Queue[es->e_qgrp], es->e_msgsize, es); -#endif /* 0 */ +#endif if (!setnewqueue(es)) goto failure; } @@ -8433,6 +8619,7 @@ split_by_recipient(e) if (split_within_queue(ee) == SM_SPLIT_FAIL) { e->e_sibling = firstsibling; + SM_FREE(lsplits); return false; } ee->e_flags |= EF_SPLIT; @@ -8447,8 +8634,7 @@ split_by_recipient(e) if (p == NULL) { /* let's try to get this done */ - sm_free(lsplits); - lsplits = NULL; + SM_FREE(lsplits); } else lsplits = p; @@ -8470,7 +8656,7 @@ split_by_recipient(e) { sm_syslog(LOG_NOTICE, e->e_id, "split: count=%d, id%s=%s", n - 1, n > 2 ? "s" : "", lsplits); - sm_free(lsplits); + SM_FREE(lsplits); } split = split_within_queue(e) != SM_SPLIT_FAIL; if (split) diff --git a/src/ratectrl.c b/src/ratectrl.c index cb7dca58b539..6b9d5c4af3fa 100644 --- a/src/ratectrl.c +++ b/src/ratectrl.c @@ -44,57 +44,38 @@ * SUCH DAMAGE. */ -#include +#include SM_RCSID("@(#)$Id: ratectrl.c,v 8.14 2013-11-22 20:51:56 ca Exp $") -/* -** stuff included - given some warnings (inet_ntoa) -** - surely not everything is needed -*/ - -#if NETINET || NETINET6 -# include -#endif /* NETINET || NETINET6 */ - -#include - -#ifndef HASH_ALG -# define HASH_ALG 2 -#endif /* HASH_ALG */ - -#ifndef RATECTL_DEBUG -# define RATECTL_DEBUG 0 -#endif /* RATECTL_DEBUG */ - -/* forward declarations */ -static int client_rate __P((time_t, SOCKADDR *, bool)); +static int client_rate __P((time_t, SOCKADDR *, int)); static int total_rate __P((time_t, bool)); +static unsigned int gen_hash __P((SOCKADDR *)); +static void rate_init __P((void)); /* ** CONNECTION_RATE_CHECK - updates connection history data ** and computes connection rate for the given host ** -** Parameters: -** hostaddr -- ip address of smtp client -** e -- envelope +** Parameters: +** hostaddr -- IP address of SMTP client +** e -- envelope ** -** Returns: -** true (always) +** Returns: +** none ** -** Side Effects: -** updates connection history -** -** Warnings: -** For each connection, this call shall be -** done only once with the value true for the -** update parameter. -** Typically, this call is done with the value -** true by the father, and once again with -** the value false by the children. +** Side Effects: +** updates connection history ** +** Warnings: +** For each connection, this call shall be +** done only once with the value true for the +** update parameter. +** Typically, this call is done with the value +** true by the father, and once again with +** the value false by the children. */ -bool +void connection_rate_check(hostaddr, e) SOCKADDR *hostaddr; ENVELOPE *e; @@ -106,16 +87,16 @@ connection_rate_check(hostaddr, e) now = time(NULL); #if RATECTL_DEBUG sm_syslog(LOG_INFO, NOQID, "connection_rate_check entering..."); -#endif /* RATECTL_DEBUG */ +#endif /* update server connection rate */ totalrate = total_rate(now, e == NULL); #if RATECTL_DEBUG sm_syslog(LOG_INFO, NOQID, "global connection rate: %d", totalrate); -#endif /* RATECTL_DEBUG */ +#endif /* update client connection rate */ - clientrate = client_rate(now, hostaddr, e == NULL); + clientrate = client_rate(now, hostaddr, e == NULL ? SM_CLFL_UPDATE : SM_CLFL_NONE); if (e == NULL) clientconn = count_open_connections(hostaddr); @@ -132,7 +113,7 @@ connection_rate_check(hostaddr, e) macdefine(&e->e_macro, A_TEMP, macid("{client_connections}"), s); } - return true; + return; } /* @@ -141,17 +122,6 @@ connection_rate_check(hostaddr, e) static int CollTime = 60; -/* this should be a power of 2, otherwise CPMHMASK doesn't work well */ -#ifndef CPMHSIZE -# define CPMHSIZE 1024 -#endif /* CPMHSIZE */ - -#define CPMHMASK (CPMHSIZE-1) - -#ifndef MAX_CT_STEPS -# define MAX_CT_STEPS 10 -#endif /* MAX_CT_STEPS */ - /* ** time granularity: 10s (that's one "tick") ** will be initialised to ConnectionRateWindowSize/CHTSIZE @@ -159,151 +129,165 @@ static int CollTime = 60; */ static int ChtGran = -1; - -#define CHTSIZE 6 - -/* Number of connections for a certain "tick" */ -typedef struct CTime -{ - unsigned long ct_Ticks; - int ct_Count; -} -CTime_T; - -typedef struct CHash -{ -#if NETINET6 && NETINET - union - { - struct in_addr c4_Addr; - struct in6_addr c6_Addr; - } cu_Addr; -# define ch_Addr4 cu_Addr.c4_Addr -# define ch_Addr6 cu_Addr.c6_Addr -#else /* NETINET6 && NETINET */ -# if NETINET6 - struct in6_addr ch_Addr; -# define ch_Addr6 ch_Addr -# else /* NETINET6 */ - struct in_addr ch_Addr; -# define ch_Addr4 ch_Addr -# endif /* NETINET6 */ -#endif /* NETINET6 && NETINET */ - - int ch_Family; - time_t ch_LTime; - unsigned long ch_colls; - - /* 6 buckets for ticks: 60s */ - CTime_T ch_Times[CHTSIZE]; -} -CHash_T; - static CHash_T CHashAry[CPMHSIZE]; -static bool CHashAryOK = false; +static CTime_T srv_Times[CHTSIZE]; + +#ifndef MAX_CT_STEPS +# define MAX_CT_STEPS 10 +#endif /* -** CLIENT_RATE - Evaluate connection rate per smtp client +** RATE_INIT - initialize local data ** ** Parameters: -** now - current time in secs -** saddr - client address -** update - update data / check only +** none ** ** Returns: -** connection rate (connections / ConnectionRateWindowSize) +** none ** ** Side effects: -** update static global data -** +** initializes static global data */ -static int -client_rate(now, saddr, update) - time_t now; - SOCKADDR *saddr; - bool update; +static void +rate_init() +{ + if (ChtGran > 0) + return; + ChtGran = ConnectionRateWindowSize / CHTSIZE; + if (ChtGran <= 0) + ChtGran = 10; + memset(CHashAry, 0, sizeof(CHashAry)); + memset(srv_Times, 0, sizeof(srv_Times)); + return; +} + +/* +** GEN_HASH - calculate a hash value +** +** Parameters: +** saddr - client address +** +** Returns: +** hash value +*/ + +static unsigned int +gen_hash(saddr) + SOCKADDR *saddr; { unsigned int hv; + int i; + int addrlen; + char *p; +#if HASH_ALG != 1 + int c, d; +#endif + + hv = 0xABC3D20F; + switch (saddr->sa.sa_family) + { +#if NETINET + case AF_INET: + p = (char *)&saddr->sin.sin_addr; + addrlen = sizeof(struct in_addr); + break; +#endif /* NETINET */ +#if NETINET6 + case AF_INET6: + p = (char *)&saddr->sin6.sin6_addr; + addrlen = sizeof(struct in6_addr); + break; +#endif /* NETINET6 */ + default: + /* should not happen */ + return -1; + } + + /* compute hash value */ + for (i = 0; i < addrlen; ++i, ++p) +#if HASH_ALG == 1 + hv = (hv << 5) ^ (hv >> 23) ^ *p; + hv = (hv ^ (hv >> 16)); +#elif HASH_ALG == 2 + { + d = *p; + c = d; + c ^= c<<6; + hv += (c<<11) ^ (c>>1); + hv ^= (d<<14) + (d<<7) + (d<<4) + d; + } +#elif HASH_ALG == 3 + { + hv = (hv << 4) + *p; + d = hv & 0xf0000000; + if (d != 0) + { + hv ^= (d >> 24); + hv ^= d; + } + } +#else /* HASH_ALG == 1 */ +# ERROR: unsupported HASH_ALG + hv = ((hv << 1) ^ (*p & 0377)) % cctx->cc_size; ??? +#endif /* HASH_ALG == 1 */ + + return hv; +} + +/* +** CONN_LIMIT - Evaluate connection limits +** +** Parameters: +** e -- envelope (_FFR_OCC, for logging only) +** now - current time in secs +** saddr - client address +** clflags - update data / check only / ... +** hashary - hash array +** ratelimit - rate limit (_FFR_OCC only) +** conclimit - concurrency limit (_FFR_OCC only) +** +** Returns: +#if _FFR_OCC +** outgoing: limit exceeded? +#endif +** incoming: +** connection rate (connections / ConnectionRateWindowSize) +*/ + +int +conn_limits(e, now, saddr, clflags, hashary, ratelimit, conclimit) + ENVELOPE *e; + time_t now; + SOCKADDR *saddr; + int clflags; + CHash_T hashary[]; + int ratelimit; + int conclimit; +{ int i; int cnt; bool coll; CHash_T *chBest = NULL; + CTime_T *ct = NULL; unsigned int ticks; + unsigned int hv; +#if _FFR_OCC + bool exceeded = false; + int *prv, *pcv; +#endif +#if RATECTL_DEBUG || _FFR_OCC + bool logit = false; +#endif cnt = 0; - hv = 0xABC3D20F; - if (ChtGran < 0) - ChtGran = ConnectionRateWindowSize / CHTSIZE; - if (ChtGran <= 0) - ChtGran = 10; - + hv = gen_hash(saddr); ticks = now / ChtGran; - if (!CHashAryOK) - { - memset(CHashAry, 0, sizeof(CHashAry)); - CHashAryOK = true; - } - - { - char *p; - int addrlen; -#if HASH_ALG != 1 - int c, d; -#endif /* HASH_ALG != 1 */ - - switch (saddr->sa.sa_family) - { -#if NETINET - case AF_INET: - p = (char *)&saddr->sin.sin_addr; - addrlen = sizeof(struct in_addr); - break; -#endif /* NETINET */ -#if NETINET6 - case AF_INET6: - p = (char *)&saddr->sin6.sin6_addr; - addrlen = sizeof(struct in6_addr); - break; -#endif /* NETINET6 */ - default: - /* should not happen */ - return -1; - } - - /* compute hash value */ - for (i = 0; i < addrlen; ++i, ++p) -#if HASH_ALG == 1 - hv = (hv << 5) ^ (hv >> 23) ^ *p; - hv = (hv ^ (hv >> 16)); -#elif HASH_ALG == 2 - { - d = *p; - c = d; - c ^= c<<6; - hv += (c<<11) ^ (c>>1); - hv ^= (d<<14) + (d<<7) + (d<<4) + d; - } -#elif HASH_ALG == 3 - { - hv = (hv << 4) + *p; - d = hv & 0xf0000000; - if (d != 0) - { - hv ^= (d >> 24); - hv ^= d; - } - } -#else /* HASH_ALG == 1 */ - hv = ((hv << 1) ^ (*p & 0377)) % cctx->cc_size; -#endif /* HASH_ALG == 1 */ - } - coll = true; for (i = 0; i < MAX_CT_STEPS; ++i) { - CHash_T *ch = &CHashAry[(hv + i) & CPMHMASK]; + CHash_T *ch = &hashary[(hv + i) & CPMHMASK]; #if NETINET if (saddr->sa.sa_family == AF_INET && @@ -334,7 +318,7 @@ client_rate(now, saddr, update) } /* Let's update data... */ - if (update) + if ((clflags & (SM_CLFL_UPDATE|SM_CLFL_EXC)) != 0) { if (coll && (now - chBest->ch_LTime < CollTime)) { @@ -362,7 +346,7 @@ client_rate(now, saddr, update) ** ** Alternative approach: just use the old data, which may ** cause false positives however. - ** To activate this, change deactivate following memset call. + ** To activate this, deactivate the memset() call. */ if (coll) @@ -381,42 +365,126 @@ client_rate(now, saddr, update) chBest->ch_Addr6 = saddr->sin6.sin6_addr; } #endif /* NETINET6 */ -#if 1 memset(chBest->ch_Times, '\0', sizeof(chBest->ch_Times)); -#endif /* 1 */ } chBest->ch_LTime = now; - { - CTime_T *ct = &chBest->ch_Times[ticks % CHTSIZE]; + ct = &chBest->ch_Times[ticks % CHTSIZE]; - if (ct->ct_Ticks != ticks) - { - ct->ct_Ticks = ticks; - ct->ct_Count = 0; - } - ++ct->ct_Count; + if (ct->ct_Ticks != ticks) + { + ct->ct_Ticks = ticks; + ct->ct_Count = 0; } + if ((clflags & SM_CLFL_UPDATE) != 0) + ++ct->ct_Count; } /* Now let's count connections on the window */ for (i = 0; i < CHTSIZE; ++i) { - CTime_T *ct = &chBest->ch_Times[i]; + CTime_T *cth; - if (ct->ct_Ticks <= ticks && ct->ct_Ticks >= ticks - CHTSIZE) - cnt += ct->ct_Count; + cth = &chBest->ch_Times[i]; + if (cth->ct_Ticks <= ticks && cth->ct_Ticks >= ticks - CHTSIZE) + cnt += cth->ct_Count; + } +#if _FFR_OCC + prv = pcv = NULL; + if (ct != NULL && ((clflags & SM_CLFL_EXC) != 0)) + { + if (ratelimit > 0) + { + if (cnt < ratelimit) + prv = &(ct->ct_Count); + else + exceeded = true; + } + else if (ratelimit < 0 && ct->ct_Count > 0) + --ct->ct_Count; } + if (chBest != NULL && ((clflags & SM_CLFL_EXC) != 0)) + { + if (conclimit > 0) + { + if (chBest->ch_oc < conclimit) + pcv = &(chBest->ch_oc); + else + exceeded = true; + } + else if (conclimit < 0 && chBest->ch_oc > 0) + --chBest->ch_oc; + } +#endif + + #if RATECTL_DEBUG - sm_syslog(LOG_WARNING, NOQID, - "cln: cnt=(%d), CHTSIZE=(%d), ChtGran=(%d)", - cnt, CHTSIZE, ChtGran); -#endif /* RATECTL_DEBUG */ + logit = true; +#endif +#if RATECTL_DEBUG || _FFR_OCC +#if _FFR_OCC + if (!exceeded) + { + if (prv != NULL) + ++*prv, ++cnt; + if (pcv != NULL) + ++*pcv; + } + logit = exceeded || LogLevel > 11; +#endif + if (logit) + sm_syslog(LOG_DEBUG, e != NULL ? e->e_id : NOQID, + "conn_limits: addr=%s, flags=0x%x, rate=%d/%d, conc=%d/%d, exc=%d", + saddr->sa.sa_family == AF_INET + ? inet_ntoa(saddr->sin.sin_addr) : "???", + clflags, cnt, ratelimit, +# if _FFR_OCC + chBest != NULL ? chBest->ch_oc : -1 +# else + -2 +# endif + , conclimit +# if _FFR_OCC + , exceeded +# else + , 0 +# endif + ); +#endif +#if _FFR_OCC + if ((clflags & SM_CLFL_EXC) != 0) + return exceeded; +#endif return cnt; } +/* +** CLIENT_RATE - Evaluate connection rate per SMTP client +** +** Parameters: +** now - current time in secs +** saddr - client address +** clflags - update data / check only +** +** Returns: +** connection rate (connections / ConnectionRateWindowSize) +** +** Side effects: +** update static global data +*/ + +static int +client_rate(now, saddr, clflags) + time_t now; + SOCKADDR *saddr; + int clflags; +{ + rate_init(); + return conn_limits(NULL, now, saddr, clflags, CHashAry, 0, 0); +} + /* ** TOTAL_RATE - Evaluate global connection rate ** @@ -428,29 +496,18 @@ client_rate(now, saddr, update) ** connection rate (connections / ConnectionRateWindowSize) */ -static CTime_T srv_Times[CHTSIZE]; -static bool srv_Times_OK = false; - static int total_rate(now, update) - time_t now; - bool update; + time_t now; + bool update; { int i; int cnt = 0; CTime_T *ct; unsigned int ticks; - if (ChtGran < 0) - ChtGran = ConnectionRateWindowSize / CHTSIZE; - if (ChtGran == 0) - ChtGran = 10; + rate_init(); ticks = now / ChtGran; - if (!srv_Times_OK) - { - memset(srv_Times, 0, sizeof(srv_Times)); - srv_Times_OK = true; - } /* Let's update data */ if (update) @@ -476,9 +533,68 @@ total_rate(now, update) #if RATECTL_DEBUG sm_syslog(LOG_WARNING, NOQID, - "srv: cnt=(%d), CHTSIZE=(%d), ChtGran=(%d)", - cnt, CHTSIZE, ChtGran); -#endif /* RATECTL_DEBUG */ + "total: cnt=%d, CHTSIZE=%d, ChtGran=%d", + cnt, CHTSIZE, ChtGran); +#endif return cnt; } + +#if RATECTL_DEBUG || _FFR_OCC +void +dump_ch(fp) + SM_FILE_T *fp; +{ + int i, j, cnt; + unsigned int ticks; + + ticks = time(NULL) / ChtGran; + sm_io_fprintf(fp, SM_TIME_DEFAULT, "dump_ch\n"); + for (i = 0; i < CPMHSIZE; i++) + { + CHash_T *ch = &CHashAry[i]; + bool valid; + + valid = false; +#if NETINET + valid = (ch->ch_Family == AF_INET); + if (valid) + sm_io_fprintf(fp, SM_TIME_DEFAULT, "ip=%s ", + inet_ntoa(ch->ch_Addr4)); +#endif /* NETINET */ +#if NETINET6 + if (ch->ch_Family == AF_INET6) + { + char buf[64], *str; + + valid = true; + str = anynet_ntop(&ch->ch_Addr6, buf, sizeof(buf)); + if (str != NULL) + sm_io_fprintf(fp, SM_TIME_DEFAULT, "ip=%s ", + str); + } +#endif /* NETINET6 */ + if (!valid) + continue; + + cnt = 0; + for (j = 0; j < CHTSIZE; ++j) + { + CTime_T *cth; + + cth = &ch->ch_Times[j]; + if (cth->ct_Ticks <= ticks && cth->ct_Ticks >= ticks - CHTSIZE) + cnt += cth->ct_Count; + } + + sm_io_fprintf(fp, SM_TIME_DEFAULT, "time=%ld cnt=%d ", + (long) ch->ch_LTime, cnt); +#if _FFR_OCC + sm_io_fprintf(fp, SM_TIME_DEFAULT, "oc=%d", ch->ch_oc); +#endif + sm_io_fprintf(fp, SM_TIME_DEFAULT, "\n"); + } + sm_io_flush(fp, SM_TIME_DEFAULT); +} + +#endif /* RATECTL_DEBUG || _FFR_OCC */ diff --git a/src/ratectrl.h b/src/ratectrl.h new file mode 100644 index 000000000000..f1946c905603 --- /dev/null +++ b/src/ratectrl.h @@ -0,0 +1,128 @@ +/* + * Copyright (c) 2003 Proofpoint, 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. + * + * Contributed by Jose Marcio Martins da Cruz - Ecole des Mines de Paris + * Jose-Marcio.Martins@ensmp.fr + */ + +/* a part of this code is based on inetd.c for which this copyright applies: */ +/* + * Copyright (c) 1983, 1991, 1993, 1994 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef RATECTRL_H +#define RATECTRL_H 1 + +#include + +/* +** stuff included - given some warnings (inet_ntoa) +** - surely not everything is needed +*/ + +#if NETINET || NETINET6 +# include +#endif + +#include + +#ifndef HASH_ALG +# define HASH_ALG 2 +#endif + +#ifndef RATECTL_DEBUG +# define RATECTL_DEBUG 0 +#endif + +/* this should be a power of 2, otherwise CPMHMASK doesn't work well */ +#ifndef CPMHSIZE +# define CPMHSIZE 1024 +#endif + +#define CPMHMASK (CPMHSIZE-1) +#define CHTSIZE 6 + +/* Number of connections for a certain "tick" */ +typedef struct CTime +{ + unsigned long ct_Ticks; + int ct_Count; +} +CTime_T; + +typedef struct CHash +{ +#if NETINET6 && NETINET + union + { + struct in_addr c4_Addr; + struct in6_addr c6_Addr; + } cu_Addr; +# define ch_Addr4 cu_Addr.c4_Addr +# define ch_Addr6 cu_Addr.c6_Addr +#else /* NETINET6 && NETINET */ +# if NETINET6 + struct in6_addr ch_Addr; +# define ch_Addr6 ch_Addr +# else /* NETINET6 */ + struct in_addr ch_Addr; +# define ch_Addr4 ch_Addr +# endif /* NETINET6 */ +#endif /* NETINET6 && NETINET */ + + int ch_Family; + time_t ch_LTime; + unsigned long ch_colls; + + /* 6 buckets for ticks: 60s */ + CTime_T ch_Times[CHTSIZE]; +#if _FFR_OCC + int ch_oc; /* open connections */ +#endif +} +CHash_T; + +#define SM_CLFL_NONE 0x00 +#define SM_CLFL_UPDATE 0x01 +#define SM_CLFL_EXC 0x02 /* check if limit is exceeded */ + +extern void connection_rate_check __P((SOCKADDR *, ENVELOPE *)); +extern int conn_limits __P((ENVELOPE *, time_t, SOCKADDR *, int, CHash_T *, int, int)); +extern bool occ_exceeded __P((ENVELOPE *, MCI *, const char *, SOCKADDR *)); +extern bool occ_close __P((ENVELOPE *, MCI *, const char *, SOCKADDR *)); +extern void dump_ch __P((SM_FILE_T *)); +#endif /* ! RATECTRL_H */ diff --git a/src/readcf.c b/src/readcf.c index 10eac0bc6724..e6f62961f220 100644 --- a/src/readcf.c +++ b/src/readcf.c @@ -13,12 +13,18 @@ #include #include +#if STARTTLS +# include +#endif +#if DNSSEC_TEST +# include +#endif SM_RCSID("@(#)$Id: readcf.c,v 8.692 2013-11-22 20:51:56 ca Exp $") #if NETINET || NETINET6 # include -#endif /* NETINET || NETINET6 */ +#endif #define SECONDS @@ -194,7 +200,7 @@ readcf(cfname, safe, e) #if XLA xla_zero(); -#endif /* XLA */ +#endif while (bufsize = sizeof(buf), (bp = fgetfolded(buf, &bufsize, cf)) != NULL) @@ -351,7 +357,7 @@ readcf(cfname, safe, e) int args, endtoken; #if _FFR_EXTRA_MAP_CHECK int nexttoken; -#endif /* _FFR_EXTRA_MAP_CHECK */ +#endif bool inmap; rwp->r_rhs = copyplist(rwp->r_rhs, true, NULL); @@ -424,7 +430,7 @@ readcf(cfname, safe, e) nexttoken = ap[1][0] & 0377; if (nexttoken == CANONHOST || nexttoken == CANONUSER || - nexttoken == endtoken)) + nexttoken == endtoken) { syserr("missing map name for lookup"); break; @@ -434,7 +440,7 @@ readcf(cfname, safe, e) syserr("syntax error in map lookup"); break; } - if (ap[0][0] == HOSTBEGIN) + if ((unsigned char) ap[0][0] == HOSTBEGIN) break; nexttoken = ap[2][0] & 0377; if (nexttoken == CANONHOST || @@ -553,10 +559,10 @@ readcf(cfname, safe, e) register char *wd; char delim; - while (*p != '\0' && isascii(*p) && isspace(*p)) + while (*p != '\0' && SM_ISSPACE(*p)) p++; wd = p; - while (*p != '\0' && !(isascii(*p) && isspace(*p))) + while (*p != '\0' && !(SM_ISSPACE(*p))) p++; delim = *p; *p = '\0'; @@ -570,15 +576,15 @@ readcf(cfname, safe, e) mid = macid_parse(&bp[1], &ep); if (mid == 0) break; - for (p = ep; isascii(*p) && isspace(*p); ) + for (p = ep; SM_ISSPACE(*p); ) p++; if (p[0] == '-' && p[1] == 'o') { optional = true; while (*p != '\0' && - !(isascii(*p) && isspace(*p))) + !(SM_ISSPACE(*p))) p++; - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; } else @@ -635,7 +641,7 @@ readcf(cfname, safe, e) case 'L': /* extended load average description */ xla_init(&bp[1]); break; -#endif /* XLA */ +#endif #if defined(SUN_EXTENSIONS) && defined(SUN_LOOKUP_MACRO) case 'L': /* lookup macro */ @@ -676,7 +682,7 @@ readcf(cfname, safe, e) break; case 'V': /* configuration syntax version */ - for (p = &bp[1]; isascii(*p) && isspace(*p); p++) + for (p = &bp[1]; SM_ISSPACE(*p); p++) continue; if (!isascii(*p) || !isdigit(*p)) { @@ -849,7 +855,7 @@ translate_dollars(ibp, obp, bsp) default: /* delete leading white space */ - while (isascii(*p) && isspace(*p) && + while (SM_ISSPACE(*p) && *p != '\n' && p > bp) { p--; @@ -887,7 +893,7 @@ translate_dollars(ibp, obp, bsp) } /* strip trailing white space from the line */ - while (--p > bp && isascii(*p) && isspace(*p)) + while (--p > bp && SM_ISSPACE(*p)) *p = '\0'; if (tTd(37, 53)) @@ -954,14 +960,14 @@ parse_class_words(class, line) register char *q; /* strip leading spaces */ - while (isascii(*line) && isspace(*line)) + while (SM_ISSPACE(*line)) line++; if (*line == '\0') break; /* find the end of the word */ q = line; - while (*line != '\0' && !(isascii(*line) && isspace(*line))) + while (*line != '\0' && !(SM_ISSPACE(*line))) line++; if (*line != '\0') *line++ = '\0'; @@ -1184,7 +1190,7 @@ fileclass(class, filename, fmt, ismap, safe, optional) { #if SCANF char wordbuf[MAXLINE + 1]; -#endif /* SCANF */ +#endif if (buf[0] == '#') continue; @@ -1226,7 +1232,7 @@ static char frst[MAXMAILERS + 1]; ** ** Returns: ** none -** +** ** Note: space is not valid in cf defined mailers hence the function ** will always find a char. It's not nice, but this is for ** internal names only. @@ -1381,7 +1387,7 @@ makemailer(line) /* collect the mailer name */ for (p = line; - *p != '\0' && *p != ',' && !(isascii(*p) && isspace(*p)); + *p != '\0' && *p != ',' && !(SM_ISSPACE(*p)); p++) continue; if (*p != '\0') @@ -1405,7 +1411,7 @@ makemailer(line) auto char *delimptr; while (*p != '\0' && - (*p == ',' || (isascii(*p) && isspace(*p)))) + (*p == ',' || (SM_ISSPACE(*p)))) p++; /* p now points to field code */ @@ -1417,7 +1423,7 @@ makemailer(line) syserr("mailer %s: `=' expected", m->m_name); return; } - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; /* p now points to the field body */ @@ -1434,7 +1440,7 @@ makemailer(line) case 'F': /* flags */ for (; *p != '\0'; p++) { - if (!(isascii(*p) && isspace(*p))) + if (!(SM_ISSPACE(*p))) { if (*p == M_INTERNAL) sm_syslog(LOG_WARNING, NOQID, @@ -1573,11 +1579,11 @@ makemailer(line) while (*p != '\0' && isascii(*p) && # if _FFR_DOTTED_USERNAMES (isalnum(*p) || strchr(SM_PWN_CHARS, *p) != NULL)) -# else /* _FFR_DOTTED_USERNAMES */ +# else (isalnum(*p) || strchr("-_", *p) != NULL)) -# endif /* _FFR_DOTTED_USERNAMES */ +# endif p++; - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) *p++ = '\0'; if (*p != '\0') *p++ = '\0'; @@ -1605,12 +1611,12 @@ makemailer(line) m->m_uid = strtol(p, &q, 0); p = q; - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; if (*p != '\0') p++; } - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; if (*p == '\0') break; @@ -1732,7 +1738,7 @@ makemailer(line) if (strcmp(m->m_argv[0], "TCP") != 0 #if NETUNIX && strcmp(m->m_argv[0], "FILE") != 0 -#endif /* NETUNIX */ +#endif ) { (void) sm_io_fprintf(smioout, SM_TIME_DEFAULT, @@ -1740,9 +1746,9 @@ makemailer(line) m->m_name, m->m_mailer, #if NETUNIX "TCP or FILE" -#else /* NETUNIX */ +#else "TCP" -#endif /* NETUNIX */ +#endif ); } if (m->m_mtatype == NULL) @@ -1972,9 +1978,9 @@ makeargv(p) while (*p != '\0' && i < MAXPV) { q = p; - while (*p != '\0' && !(isascii(*p) && isspace(*p))) + while (*p != '\0' && !(SM_ISSPACE(*p))) p++; - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) *p++ = '\0'; argv[i++] = newstr(q); } @@ -2189,6 +2195,9 @@ static struct ssl_options #ifdef SSL_OP_NO_TLSv1 { "SSL_OP_NO_TLSv1", SSL_OP_NO_TLSv1 }, #endif +#ifdef SSL_OP_NO_TLSv1_3 + { "SSL_OP_NO_TLSv1_3", SSL_OP_NO_TLSv1_3 }, +#endif #ifdef SSL_OP_NO_TLSv1_2 { "SSL_OP_NO_TLSv1_2", SSL_OP_NO_TLSv1_2 }, #endif @@ -2212,6 +2221,24 @@ static struct ssl_options #endif #ifdef SSL_OP_TLSEXT_PADDING { "SSL_OP_TLSEXT_PADDING", SSL_OP_TLSEXT_PADDING }, +#endif +#ifdef SSL_OP_NO_RENEGOTIATION + { "SSL_OP_NO_RENEGOTIATION", SSL_OP_NO_RENEGOTIATION }, +#endif +#ifdef SSL_OP_NO_ANTI_REPLAY + { "SSL_OP_NO_ANTI_REPLAY", SSL_OP_NO_ANTI_REPLAY }, +#endif +#ifdef SSL_OP_ALLOW_NO_DHE_KEX + { "SSL_OP_ALLOW_NO_DHE_KEX", SSL_OP_ALLOW_NO_DHE_KEX }, +#endif +#ifdef SSL_OP_NO_ENCRYPT_THEN_MAC + { "SSL_OP_NO_ENCRYPT_THEN_MAC", SSL_OP_NO_ENCRYPT_THEN_MAC }, +#endif +#ifdef SSL_OP_ENABLE_MIDDLEBOX_COMPAT + { "SSL_OP_ENABLE_MIDDLEBOX_COMPAT", SSL_OP_ENABLE_MIDDLEBOX_COMPAT }, +#endif +#ifdef SSL_OP_PRIORITIZE_CHACHA + { "SSL_OP_PRIORITIZE_CHACHA", SSL_OP_PRIORITIZE_CHACHA }, #endif { NULL, 0 } }; @@ -2231,7 +2258,8 @@ static struct ssl_options #define SSLOPERR_NAN 1 #define SSLOPERR_NOTFOUND 2 -#define SM_ISSPACE(c) (isascii(c) && isspace(c)) + +static int readssloptions __P((char *, char *, unsigned long *, int )); static int readssloptions(opt, val, pssloptions, delim) @@ -2312,13 +2340,13 @@ readssloptions(opt, val, pssloptions, delim) return ret; } -# if _FFR_TLS_SE_OPTS /* ** GET_TLS_SE_OPTIONS -- get TLS session options (from ruleset) ** ** Parameters: ** e -- envelope ** ssl -- TLS session context +** tlsi_ctx -- TLS info context ** srv -- server? ** ** Returns: @@ -2326,9 +2354,10 @@ readssloptions(opt, val, pssloptions, delim) */ int -get_tls_se_options(e, ssl, srv) +get_tls_se_options(e, ssl, tlsi_ctx, srv) ENVELOPE *e; SSL *ssl; + tlsi_ctx_T *tlsi_ctx; bool srv; { bool saveQuickAbort, saveSuprErrs, ok; @@ -2374,7 +2403,7 @@ get_tls_se_options(e, ssl, srv) if (LogLevel > 9) sm_syslog(LOG_INFO, NOQID, "tls_%s_features=empty, relay=%s [%s]", - WHICH, NAME_C_S, ADDR_C_S); + WHICH, NAME_C_S, ADDR_C_S); return ok ? 0 : 1; } @@ -2389,7 +2418,7 @@ get_tls_se_options(e, ssl, srv) if (LogLevel > 9 && len > 1) sm_syslog(LOG_INFO, NOQID, "tls_%s_features=too_short, relay=%s [%s]", - WHICH, NAME_C_S, ADDR_C_S); + WHICH, NAME_C_S, ADDR_C_S); /* this is not treated as error! */ return 0; @@ -2402,7 +2431,7 @@ get_tls_se_options(e, ssl, srv) if (LogLevel > 7) \ sm_syslog(LOG_INFO, NOQID, \ "tls_%s_features=invalid_syntax, opt=%s, relay=%s [%s]", \ - WHICH, opt, NAME_C_S, ADDR_C_S); \ + WHICH, opt, NAME_C_S, ADDR_C_S); \ return -1; \ } while (0) @@ -2483,11 +2512,20 @@ get_tls_se_options(e, ssl, srv) "STARTTLS=%s, error: SSL_set_cipher_list(%s) failed", who, val); - if (LogLevel > 9) - tlslogerr(LOG_WARNING, who); + tlslogerr(LOG_WARNING, 9, who); } } } + else if (sm_strcasecmp(opt, "flags") == 0) + { + char *p; + + for (p = val; *p != '\0'; p++) + { + if (isascii(*p) && isalnum(*p)) + setbitn(bitidx(*p), tlsi_ctx->tlsi_flags); + } + } else if (sm_strcasecmp(opt, "keyfile") == 0) keyfile = val; else if (sm_strcasecmp(opt, "certfile") == 0) @@ -2499,7 +2537,7 @@ get_tls_se_options(e, ssl, srv) { sm_syslog(LOG_INFO, NOQID, "tls_%s_features=unknown_option, opt=%s, relay=%s [%s]", - WHICH, opt, NAME_C_S, ADDR_C_S); + WHICH, opt, NAME_C_S, ADDR_C_S); } } @@ -2519,7 +2557,7 @@ get_tls_se_options(e, ssl, srv) { sm_syslog(LOG_INFO, NOQID, "tls_%s_features=only_one_of_CertFile/KeyFile_specified, relay=%s [%s]", - WHICH, NAME_C_S, ADDR_C_S); + WHICH, NAME_C_S, ADDR_C_S); } } @@ -2529,7 +2567,6 @@ get_tls_se_options(e, ssl, srv) # undef ADDR_C_S # undef WHICH } -# endif /* _FFR_TLS_SE_OPTS */ #endif /* STARTTLS */ /* @@ -2573,7 +2610,17 @@ static struct resolverflags { "dnsrch", RES_DNSRCH }, # ifdef RES_USE_INET6 { "use_inet6", RES_USE_INET6 }, -# endif /* RES_USE_INET6 */ +# endif +# ifdef RES_USE_EDNS0 + { "use_edns0", RES_USE_EDNS0 }, +# endif +# ifdef RES_USE_DNSSEC + { "use_dnssec", RES_USE_DNSSEC }, +# endif +# if RES_TRUSTAD + { "trustad", RES_TRUSTAD }, +# endif + { "true", 0 }, /* avoid error on old syntax */ { "true", 0 }, /* avoid error on old syntax */ { NULL, 0 } }; @@ -2593,7 +2640,7 @@ static struct optioninfo { #if defined(SUN_EXTENSIONS) && defined(REMOTE_MODE) { "RemoteMode", '>', OI_NONE }, -#endif /* defined(SUN_EXTENSIONS) && defined(REMOTE_MODE) */ +#endif { "SevenBitInput", '7', OI_SAFE }, { "EightBitMode", '8', OI_SAFE }, { "AliasFile", 'A', OI_NONE }, @@ -2716,7 +2763,7 @@ static struct optioninfo #if _FFR_DONTLOCKFILESFORREAD_OPTION # define O_DONTLOCK 0xa4 { "DontLockFilesForRead", O_DONTLOCK, OI_NONE }, -#endif /* _FFR_DONTLOCKFILESFORREAD_OPTION */ +#endif #define O_MAXALIASRCSN 0xa5 { "MaxAliasRecursion", O_MAXALIASRCSN, OI_NONE }, #define O_CNCTONLYTO 0xa6 @@ -2732,15 +2779,15 @@ static struct optioninfo #if _FFR_MAX_FORWARD_ENTRIES # define O_MAXFORWARD 0xab { "MaxForwardEntries", O_MAXFORWARD, OI_NONE }, -#endif /* _FFR_MAX_FORWARD_ENTRIES */ +#endif #define O_PROCTITLEPREFIX 0xac { "ProcessTitlePrefix", O_PROCTITLEPREFIX, OI_NONE }, #define O_SASLINFO 0xad #if _FFR_ALLOW_SASLINFO { "DefaultAuthInfo", O_SASLINFO, OI_SAFE }, -#else /* _FFR_ALLOW_SASLINFO */ +#else { "DefaultAuthInfo", O_SASLINFO, OI_NONE }, -#endif /* _FFR_ALLOW_SASLINFO */ +#endif #define O_SASLMECH 0xae { "AuthMechanisms", O_SASLMECH, OI_NONE }, #define O_CLIENTPORT 0xaf @@ -2821,10 +2868,8 @@ static struct optioninfo { "FallbackSmartHost", O_FALLBACKSMARTHOST, OI_NONE }, #define O_SASLREALM 0xd6 { "AuthRealm", O_SASLREALM, OI_NONE }, -#if _FFR_CRLPATH -# define O_CRLPATH 0xd7 +#define O_CRLPATH 0xd7 { "CRLPath", O_CRLPATH, OI_NONE }, -#endif /* _FFR_CRLPATH */ #define O_HELONAME 0xd8 { "HeloName", O_HELONAME, OI_NONE }, #if _FFR_MEMSTAT @@ -2840,22 +2885,22 @@ static struct optioninfo #if _FFR_MSG_ACCEPT # define O_MSG_ACCEPT 0xdd { "MessageAccept", O_MSG_ACCEPT, OI_NONE }, -#endif /* _FFR_MSG_ACCEPT */ +#endif #if _FFR_QUEUE_RUN_PARANOIA # define O_CHK_Q_RUNNERS 0xde { "CheckQueueRunners", O_CHK_Q_RUNNERS, OI_NONE }, -#endif /* _FFR_QUEUE_RUN_PARANOIA */ +#endif #if _FFR_EIGHT_BIT_ADDR_OK # if !ALLOW_255 # ERROR FFR_EIGHT_BIT_ADDR_OK requires _ALLOW_255 -# endif /* !ALLOW_255 */ +# endif # define O_EIGHT_BIT_ADDR_OK 0xdf { "EightBitAddrOK", O_EIGHT_BIT_ADDR_OK, OI_NONE }, #endif /* _FFR_EIGHT_BIT_ADDR_OK */ #if _FFR_ADDR_TYPE_MODES # define O_ADDR_TYPE_MODES 0xe0 { "AddrTypeModes", O_ADDR_TYPE_MODES, OI_NONE }, -#endif /* _FFR_ADDR_TYPE_MODES */ +#endif #if _FFR_BADRCPT_SHUTDOWN # define O_RCPTSHUTD 0xe1 { "BadRcptShutdown", O_RCPTSHUTD, OI_SAFE }, @@ -2871,7 +2916,7 @@ static struct optioninfo #if _FFR_RCPTTHROTDELAY # define O_RCPTTHROTDELAY 0xe6 { "BadRcptThrottleDelay", O_RCPTTHROTDELAY, OI_SAFE }, -#endif /* _FFR_RCPTTHROTDELAY */ +#endif #if 0 && _FFR_QOS && defined(SOL_IP) && defined(IP_TOS) # define O_INETQOS 0xe7 /* reserved for FFR_QOS */ { "InetQoS", O_INETQOS, OI_NONE }, @@ -2879,21 +2924,60 @@ static struct optioninfo #if STARTTLS && _FFR_FIPSMODE # define O_FIPSMODE 0xe8 { "FIPSMode", O_FIPSMODE, OI_NONE }, -#endif /* STARTTLS && _FFR_FIPSMODE */ +#endif #if _FFR_REJECT_NUL_BYTE # define O_REJECTNUL 0xe9 { "RejectNUL", O_REJECTNUL, OI_SAFE }, -#endif /* _FFR_REJECT_NUL_BYTE */ +#endif #if _FFR_BOUNCE_QUEUE # define O_BOUNCEQUEUE 0xea { "BounceQueue", O_BOUNCEQUEUE, OI_NONE }, -#endif /* _FFR_BOUNCE_QUEUE */ +#endif #if _FFR_ADD_BCC # define O_ADDBCC 0xeb { "AddBcc", O_ADDBCC, OI_NONE }, #endif #define O_USECOMPRESSEDIPV6ADDRESSES 0xec { "UseCompressedIPv6Addresses", O_USECOMPRESSEDIPV6ADDRESSES, OI_NONE }, +#if STARTTLS +# define O_SSLENGINE 0xed + { "SSLEngine", O_SSLENGINE, OI_NONE }, +# define O_SSLENGINEPATH 0xee + { "SSLEnginePath", O_SSLENGINEPATH, OI_NONE }, +# define O_TLSFB2CLEAR 0xef + { "TLSFallbacktoClear", O_TLSFB2CLEAR, OI_NONE }, +#endif +#if DNSSEC_TEST +# define O_NSPORTIP 0xf0 + { "NameServer", O_NSPORTIP, OI_NONE }, +#endif +#if DANE +# define O_DANE 0xf1 + { "DANE", O_DANE, OI_NONE }, +#endif +#if DNSSEC_TEST +# define O_NSSRCHLIST 0xf2 + { "NameSearchList", O_NSSRCHLIST, OI_NONE }, +#endif +#if _FFR_BLANKENV_MACV +# define O_HACKS 0xf4 + { "Hacks", O_HACKS, OI_NONE }, +#endif +#if _FFR_KEEPBCC +# define O_KEEPBCC 0xf3 + { "KeepBcc", O_KEEPBCC, OI_NONE }, +#endif + +#if _FFR_CLIENTCA +#define O_CLTCACERTFILE 0xf5 + { "ClientCACertFile", O_CLTCACERTFILE, OI_NONE }, +#define O_CLTCACERTPATH 0xf6 + { "ClientCACertPath", O_CLTCACERTPATH, OI_NONE }, +#endif +#if _FFR_TLS_ALTNAMES +# define O_CHECKALTNAMES 0xf7 + { "SetCertAltnames", O_CHECKALTNAMES, OI_NONE }, +#endif { NULL, '\0', OI_NONE } }; @@ -2926,18 +3010,18 @@ setoption(opt, val, safe, sticky, e) register char *p; register struct optioninfo *o; char *subopt; - int mid; + int i; bool can_setuid = RunAsUid == 0; auto char *ep; char buf[50]; extern bool Warn_Q_option; #if _FFR_ALLOW_SASLINFO extern unsigned int SubmitMode; -#endif /* _FFR_ALLOW_SASLINFO */ +#endif #if STARTTLS || SM_CONF_SHM char *newval; char exbuf[MAXLINE]; -#endif /* STARTTLS || SM_CONF_SHM */ +#endif #if STARTTLS unsigned long *pssloptions = NULL; #endif @@ -3181,7 +3265,7 @@ setoption(opt, val, safe, sticky, e) #if _FFR_DM_ONE /* deliver first TA in background, then queue */ case SM_DM_ONE: -#endif /* _FFR_DM_ONE */ +#endif set_delivery_mode(*val, e); break; @@ -3280,7 +3364,7 @@ setoption(opt, val, safe, sticky, e) p--; p++; q = p; - while (*p != '\0' && !(isascii(*p) && isspace(*p))) + while (*p != '\0' && !(SM_ISSPACE(*p))) p++; if (*p != '\0') *p++ = '\0'; @@ -3348,13 +3432,13 @@ setoption(opt, val, safe, sticky, e) case 'M': /* define macro */ sticky = false; - mid = macid_parse(val, &ep); - if (mid == 0) + i = macid_parse(val, &ep); + if (i == 0) break; p = newstr(ep); if (!safe) cleanstrcpy(p, p, strlen(p) + 1); - macdefine(&CurEnv->e_macro, A_TEMP, mid, p); + macdefine(&CurEnv->e_macro, A_TEMP, i, p); break; case 'm': /* send to me too */ @@ -3490,9 +3574,9 @@ setoption(opt, val, safe, sticky, e) { # if _FFR_DOTTED_USERNAMES if (*p == '/' || *p == ':') -# else /* _FFR_DOTTED_USERNAMES */ +# else if (*p == '.' || *p == '/' || *p == ':') -# endif /* _FFR_DOTTED_USERNAMES */ +# endif { *p++ = '\0'; break; @@ -3583,7 +3667,7 @@ setoption(opt, val, safe, sticky, e) #if _FFR_QUEUE_GROUP_SORTORDER /* coordinate this with makequeue() */ -#endif /* _FFR_QUEUE_GROUP_SORTORDER */ +#endif case O_QUEUESORTORD: /* queue sorting order */ switch (*val) { @@ -3718,7 +3802,7 @@ setoption(opt, val, safe, sticky, e) #if !HASNICE (void) sm_io_fprintf(smioout, SM_TIME_DEFAULT, "Warning: NiceQueueRun set on system that doesn't support nice()\n"); -#endif /* !HASNICE */ +#endif /* XXX do we want to check the range? > 0 ? */ NiceQueueRun = atoi(val); @@ -3748,7 +3832,7 @@ setoption(opt, val, safe, sticky, e) case O_MAXFORWARD: /* max # of forward entries */ MaxForwardEntries = atoi(val); break; -#endif /* _FFR_MAX_FORWARD_ENTRIES */ +#endif case O_KEEPCNAMES: /* don't expand CNAME records */ DontExpandCnames = atobool(val); @@ -3826,9 +3910,9 @@ setoption(opt, val, safe, sticky, e) { # if _FFR_DOTTED_USERNAMES if (*p == '/' || *p == ':') -# else /* _FFR_DOTTED_USERNAMES */ +# else if (*p == '.' || *p == '/' || *p == ':') -# endif /* _FFR_DOTTED_USERNAMES */ +# endif { *p++ = '\0'; break; @@ -3973,7 +4057,7 @@ setoption(opt, val, safe, sticky, e) case O_RCPTTHROTDELAY: BadRcptThrottleDelay = atoi(val); break; -#endif /* _FFR_RCPTTHROTDELAY */ +#endif case O_DEADLETTER: CANONIFY(val); @@ -3984,7 +4068,7 @@ setoption(opt, val, safe, sticky, e) case O_DONTLOCK: DontLockReadFiles = atobool(val); break; -#endif /* _FFR_DONTLOCKFILESFORREAD_OPTION */ +#endif case O_MAXALIASRCSN: MaxAliasRecursion = atoi(val); @@ -3993,11 +4077,30 @@ setoption(opt, val, safe, sticky, e) case O_CNCTONLYTO: /* XXX should probably use gethostbyname */ #if NETINET || NETINET6 + i = 0; + if ((subopt = strchr(val, '@')) != NULL) + { + *subopt = '\0'; + i = (int) strtoul(val, NULL, 0); + + /* stricter checks? probably not useful. */ + if (i > USHRT_MAX) + { + syserr("readcf: option ConnectOnlyTo: invalid port %s", + val); + break; + } + val = subopt + 1; + } ConnectOnlyTo.sa.sa_family = AF_UNSPEC; # if NETINET6 if (anynet_pton(AF_INET6, val, &ConnectOnlyTo.sin6.sin6_addr) == 1) + { ConnectOnlyTo.sa.sa_family = AF_INET6; + if (i != 0) + ConnectOnlyTo.sin6.sin6_port = htons(i); + } else # endif /* NETINET6 */ # if NETINET @@ -4005,6 +4108,8 @@ setoption(opt, val, safe, sticky, e) ConnectOnlyTo.sin.sin_addr.s_addr = inet_addr(val); if (ConnectOnlyTo.sin.sin_addr.s_addr != INADDR_NONE) ConnectOnlyTo.sa.sa_family = AF_INET; + if (i != 0) + ConnectOnlyTo.sin.sin_port = htons(i); } # endif /* NETINET */ @@ -4217,6 +4322,9 @@ setoption(opt, val, safe, sticky, e) #endif /* SASL */ #if STARTTLS + case O_TLSFB2CLEAR: + TLSFallbacktoClear = atobool(val); + break; case O_SRVCERTFILE: SET_STRING_EXP(SrvCertFile); case O_SRVKEYFILE: @@ -4229,12 +4337,34 @@ setoption(opt, val, safe, sticky, e) SET_STRING_EXP(CACertFile); case O_CACERTPATH: SET_STRING_EXP(CACertPath); +#if _FFR_CLIENTCA + case O_CLTCACERTFILE: + SET_STRING_EXP(CltCACertFile); + case O_CLTCACERTPATH: + SET_STRING_EXP(CltCACertPath); +#endif case O_DHPARAMS: SET_STRING_EXP(DHParams); case O_CIPHERLIST: SET_STRING_EXP(CipherList); case O_DIG_ALG: SET_STRING_EXP(CertFingerprintAlgorithm); + case O_SSLENGINEPATH: + SET_STRING_EXP(SSLEnginePath); + case O_SSLENGINE: + newval = sm_pstrdup_x(val); + if (SSLEngine != NULL) + sm_free(SSLEngine); + SSLEngine = newval; + + /* + ** Which engines need to be initialized before fork()? + ** XXX hack, should be an option? + */ + + if (strcmp(SSLEngine, "chil") == 0) + SSLEngineprefork = true; + break; case O_SRV_SSL_OPTIONS: pssloptions = &Srv_SSL_Options; case O_CLT_SSL_OPTIONS: @@ -4248,26 +4378,12 @@ setoption(opt, val, safe, sticky, e) break; case O_CRLFILE: -# if OPENSSL_VERSION_NUMBER > 0x00907000L SET_STRING_EXP(CRLFile); -# else /* OPENSSL_VERSION_NUMBER > 0x00907000L */ - (void) sm_io_fprintf(smioout, SM_TIME_DEFAULT, - "Warning: Option: %s requires at least OpenSSL 0.9.7\n", - OPTNAME); break; -# endif /* OPENSSL_VERSION_NUMBER > 0x00907000L */ -# if _FFR_CRLPATH case O_CRLPATH: -# if OPENSSL_VERSION_NUMBER > 0x00907000L SET_STRING_EXP(CRLPath); -# else /* OPENSSL_VERSION_NUMBER > 0x00907000L */ - (void) sm_io_fprintf(smioout, SM_TIME_DEFAULT, - "Warning: Option: %s requires at least OpenSSL 0.9.7\n", - OPTNAME); break; -# endif /* OPENSSL_VERSION_NUMBER > 0x00907000L */ -# endif /* _FFR_CRLPATH */ /* ** XXX How about options per daemon/client instead of globally? @@ -4329,14 +4445,17 @@ setoption(opt, val, safe, sticky, e) case O_CLTKEYFILE: case O_CACERTFILE: case O_CACERTPATH: +#if _FFR_CLIENTCA + case O_CLTCACERTFILE: + case O_CLTCACERTPATH: +#endif case O_DHPARAMS: case O_SRV_SSL_OPTIONS: case O_CLT_SSL_OPTIONS: case O_CIPHERLIST: + case O_DIG_ALG: case O_CRLFILE: -# if _FFR_CRLPATH case O_CRLPATH: -# endif /* _FFR_CRLPATH */ case O_RANDFILE: (void) sm_io_fprintf(smioout, SM_TIME_DEFAULT, "Warning: Option: %s requires TLS support\n", @@ -4348,7 +4467,7 @@ setoption(opt, val, safe, sticky, e) case O_FIPSMODE: FipsMode = atobool(val); break; -#endif /* STARTTLS && _FFR_FIPSMODE */ +#endif case O_CLIENTPORT: setclientoptions(val); @@ -4435,9 +4554,9 @@ setoption(opt, val, safe, sticky, e) case O_REQUIRES_DIR_FSYNC: #if REQUIRES_DIR_FSYNC RequiresDirfsync = atobool(val); -#else /* REQUIRES_DIR_FSYNC */ +#else /* silently ignored... required for cf file option */ -#endif /* REQUIRES_DIR_FSYNC */ +#endif break; case O_CONNECTION_RATE_WINDOW_SIZE: @@ -4473,25 +4592,25 @@ setoption(opt, val, safe, sticky, e) case O_MSG_ACCEPT: MessageAccept = newstr(val); break; -#endif /* _FFR_MSG_ACCEPT */ +#endif #if _FFR_QUEUE_RUN_PARANOIA case O_CHK_Q_RUNNERS: CheckQueueRunners = atoi(val); break; -#endif /* _FFR_QUEUE_RUN_PARANOIA */ +#endif #if _FFR_EIGHT_BIT_ADDR_OK case O_EIGHT_BIT_ADDR_OK: EightBitAddrOK = atobool(val); break; -#endif /* _FFR_EIGHT_BIT_ADDR_OK */ +#endif #if _FFR_ADDR_TYPE_MODES case O_ADDR_TYPE_MODES: AddrTypeModes = atobool(val); break; -#endif /* _FFR_ADDR_TYPE_MODES */ +#endif #if _FFR_BADRCPT_SHUTDOWN case O_RCPTSHUTD: @@ -4507,13 +4626,13 @@ setoption(opt, val, safe, sticky, e) case O_REJECTNUL: RejectNUL = atobool(val); break; -#endif /* _FFR_REJECT_NUL_BYTE */ +#endif #if _FFR_BOUNCE_QUEUE case O_BOUNCEQUEUE: bouncequeue = newstr(val); break; -#endif /* _FFR_BOUNCE_QUEUE */ +#endif #if _FFR_ADD_BCC case O_ADDBCC: @@ -4524,6 +4643,42 @@ setoption(opt, val, safe, sticky, e) UseCompressedIPv6Addresses = atobool(val); break; +#if DNSSEC_TEST + case O_NSPORTIP: + nsportip(val); + break; + case O_NSSRCHLIST: + NameSearchList = sm_strdup(val); + break; +#endif + +#if DANE + case O_DANE: + if (sm_strcasecmp(val, "always") == 0) + Dane = DANE_ALWAYS; + else + Dane = atobool(val) ? DANE_SECURE : DANE_NEVER; + break; +#endif + +#if _FFR_BLANKENV_MACV + case O_HACKS: + Hacks = (int) strtol(val, NULL, 0); + break; +#endif + +#if _FFR_KEEPBCC + case O_KEEPBCC: + KeepBcc = atobool(val); + break; +#endif + +# if _FFR_TLS_ALTNAMES + case O_CHECKALTNAMES: + SetCertAltnames = atobool(val); + break; +# endif + default: if (tTd(37, 1)) { @@ -4614,7 +4769,7 @@ makemapentry(line) register STAB *s; STAB *class; - for (p = line; isascii(*p) && isspace(*p); p++) + for (p = line; SM_ISSPACE(*p); p++) continue; if (!(isascii(*p) && isalnum(*p))) { @@ -4627,7 +4782,7 @@ makemapentry(line) continue; if (*p != '\0') *p++ = '\0'; - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; if (!(isascii(*p) && isalnum(*p))) { @@ -4639,7 +4794,7 @@ makemapentry(line) continue; if (*p != '\0') *p++ = '\0'; - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; /* look up the class */ @@ -4693,7 +4848,7 @@ strtorwset(p, endp, stabmode) int ruleset; static int nextruleset = MAXRWSETS; - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; if (!isascii(*p)) { @@ -4725,7 +4880,7 @@ strtorwset(p, endp, stabmode) syserr("invalid ruleset name: \"%.20s\"", q); return -1; } - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) *p++ = '\0'; delim = *p; if (delim != '\0') @@ -5114,13 +5269,13 @@ settimeout(name, val, sticky) case TO_AUTH: TimeOuts.to_auth = toval; break; -#endif /* SASL */ +#endif #if STARTTLS case TO_STARTTLS: TimeOuts.to_starttls = toval; break; -#endif /* STARTTLS */ +#endif default: syserr("settimeout: invalid timeout %s", name); @@ -5176,18 +5331,18 @@ inittimeouts(val, sticky) TimeOuts.to_miscshort = (time_t) 2 MINUTES; #if IDENTPROTO TimeOuts.to_ident = (time_t) 5 SECONDS; -#else /* IDENTPROTO */ +#else TimeOuts.to_ident = (time_t) 0 SECONDS; -#endif /* IDENTPROTO */ +#endif TimeOuts.to_fileopen = (time_t) 60 SECONDS; TimeOuts.to_control = (time_t) 2 MINUTES; TimeOuts.to_lhlo = (time_t) 2 MINUTES; #if SASL TimeOuts.to_auth = (time_t) 10 MINUTES; -#endif /* SASL */ +#endif #if STARTTLS TimeOuts.to_starttls = (time_t) 1 HOUR; -#endif /* STARTTLS */ +#endif if (tTd(37, 5)) { sm_dprintf("Timeouts:\n"); @@ -5225,7 +5380,7 @@ inittimeouts(val, sticky) for (;; val = p) { - while (isascii(*val) && isspace(*val)) + while (SM_ISSPACE(*val)) val++; if (*val == '\0') break; diff --git a/src/recipient.c b/src/recipient.c index 3fad95717d6b..eb325a6de385 100644 --- a/src/recipient.c +++ b/src/recipient.c @@ -44,9 +44,9 @@ sorthost(xx, yy) #if _FFR_HOST_SORT_REVERSE /* XXX maybe compare hostnames from the end? */ return sm_strrevcasecmp(xx->q_host, yy->q_host); -#else /* _FFR_HOST_SORT_REVERSE */ +#else return sm_strcasecmp(xx->q_host, yy->q_host); -#endif /* _FFR_HOST_SORT_REVERSE */ +#endif } /* @@ -82,9 +82,9 @@ sortexpensive(xx, yy) #if _FFR_HOST_SORT_REVERSE /* XXX maybe compare hostnames from the end? */ return sm_strrevcasecmp(xx->q_host, yy->q_host); -#else /* _FFR_HOST_SORT_REVERSE */ +#else return sm_strcasecmp(xx->q_host, yy->q_host); -#endif /* _FFR_HOST_SORT_REVERSE */ +#endif } /* @@ -112,9 +112,9 @@ sortbysignature(xx, yy) /* Let's avoid redoing the signature over and over again */ if (xx->q_signature == NULL) - xx->q_signature = hostsignature(xx->q_mailer, xx->q_host); + xx->q_signature = hostsignature(xx->q_mailer, xx->q_host, xx->q_flags & QSECURE); if (yy->q_signature == NULL) - yy->q_signature = hostsignature(yy->q_mailer, yy->q_host); + yy->q_signature = hostsignature(yy->q_mailer, yy->q_host, yy->q_flags & QSECURE); ret = strcmp(xx->q_signature, yy->q_signature); /* @@ -222,7 +222,7 @@ sendtolist(list, ctladdr, sendq, aliaslevel, e) SM_ASSERT(p < endp); /* parse the address */ - while ((isascii(*p) && isspace(*p)) || *p == ',') + while ((SM_ISSPACE(*p)) || *p == ',') p++; SM_ASSERT(p < endp); a = parseaddr(p, NULLADDR, RF_COPYALL, delimiter, @@ -392,7 +392,7 @@ removefromlist(list, sendq, e) char *delimptr; /* parse the address */ - while ((isascii(*p) && isspace(*p)) || *p == ',') + while ((SM_ISSPACE(*p)) || *p == ',') p++; if (parseaddr(p, &a, RF_COPYALL|RF_RM_ADDR, delimiter, &delimptr, e, true) == NULL) @@ -508,6 +508,11 @@ recipient(new, sendq, aliaslevel, e) p = e->e_from.q_mailer->m_addrtype; if (p == NULL) p = "rfc822"; +#if _FFR_EAI + if (sm_strcasecmp(p, "rfc822") == 0 && + !addr_is_ascii(q->q_user)) + p = "utf-8"; +#endif if (sm_strcasecmp(p, "rfc822") != 0) { (void) sm_snprintf(frbuf, sizeof(frbuf), "%s; %.800s", @@ -949,7 +954,7 @@ recipient(new, sendq, aliaslevel, e) if (tTd(29, 5)) { sm_dprintf("recipient: testing local? cl=%d, rr5=%p\n\t", - ConfigLevel, RewriteRules[5]); + ConfigLevel, (void *)RewriteRules[5]); printaddr(sm_debug_file(), new, false); } if (ConfigLevel >= 2 && RewriteRules[5] != NULL && @@ -1164,7 +1169,7 @@ finduser(name, fuzzyp, user) { #if MATCHGECOS register struct passwd *pw; -#endif /* MATCHGECOS */ +#endif register char *p; bool tryagain; int status; @@ -1258,7 +1263,7 @@ finduser(name, fuzzyp, user) sm_dprintf("no fuzzy match found\n"); # if DEC_OSF_BROKEN_GETPWENT /* DEC OSF/1 3.2 or earlier */ endpwent(); -# endif /* DEC_OSF_BROKEN_GETPWENT */ +# endif if (pw == NULL) return EX_NOUSER; sm_mbdb_frompw(user, pw); @@ -1838,7 +1843,7 @@ include(fname, forwarding, ctladdr, sendq, aliaslevel, e) { if (p[1] == '@' && p[2] == '#' && isascii(p[-1]) && isspace(p[-1]) && - (p[3] == '\0' || (isascii(p[3]) && isspace(p[3])))) + (p[3] == '\0' || (SM_ISSPACE(p[3])))) { --p; while (p > buf && isascii(p[-1]) && diff --git a/src/sasl.c b/src/sasl.c index bd2d908a11ad..71575f8dd1af 100644 --- a/src/sasl.c +++ b/src/sasl.c @@ -26,9 +26,9 @@ SM_RCSID("@(#)$Id: sasl.c,v 8.24 2013-11-22 20:51:56 ca Exp $") # if defined(SASL_VERSION_FULL) && SASL_VERSION_FULL >= 0x02011a # define SM_SASL_SIZE_T size_t -# else /* defined(SASL_VERSION_FULL) && SASL_VERSION_FULL >= 0x02011a */ +# else # define SM_SASL_SIZE_T unsigned long -# endif /* defined(SASL_VERSION_FULL) && SASL_VERSION_FULL >= 0x02011a */ +# endif void *sm_sasl_malloc __P((SM_SASL_SIZE_T)); static void *sm_sasl_calloc __P((SM_SASL_SIZE_T, SM_SASL_SIZE_T)); @@ -249,7 +249,7 @@ iptostring(addr, addrlen, out, outlen) char hbuf[NI_MAXHOST], pbuf[NI_MAXSERV]; # if NETINET6 int niflags; -# endif /* NETINET6 */ +# endif if (addr == NULL || out == NULL) { @@ -262,7 +262,7 @@ iptostring(addr, addrlen, out, outlen) # ifdef NI_WITHSCOPEID if (addr->sa.sa_family == AF_INET6) niflags |= NI_WITHSCOPEID; -# endif /* NI_WITHSCOPEID */ +# endif if (getnameinfo((struct sockaddr *) addr, addrlen, hbuf, sizeof(hbuf), pbuf, sizeof(pbuf), niflags) != 0) return false; diff --git a/src/savemail.c b/src/savemail.c index 6de8f2f1957e..945bcd702e51 100644 --- a/src/savemail.c +++ b/src/savemail.c @@ -180,9 +180,9 @@ savemail(e, sendbody) #if USE_TTYPATH p = ttypath(); -#else /* USE_TTYPATH */ +#else p = NULL; -#endif /* USE_TTYPATH */ +#endif if (p == NULL || sm_io_reopen(SmFtStdio, SM_TIME_DEFAULT, @@ -524,7 +524,7 @@ returntosender(msg, returnq, flags, e) if (tTd(6, 1)) { sm_dprintf("\n*** Return To Sender: msg=\"%s\", depth=%d, e=%p, returnq=", - msg, returndepth, e); + msg, returndepth, (void *)e); printaddr(sm_debug_file(), returnq, true); if (tTd(6, 20)) { @@ -584,7 +584,7 @@ returntosender(msg, returnq, flags, e) #if _FFR_BOUNCE_QUEUE if (BounceQueue != NOQGRP) ee->e_qgrp = ee->e_dfqgrp = BounceQueue; -#endif /* _FFR_BOUNCE_QUEUE */ +#endif if (!setnewqueue(ee)) { syserr("554 5.3.0 returntosender: cannot select queue for %s", @@ -598,7 +598,7 @@ returntosender(msg, returnq, flags, e) #if NAMED_BIND _res.retry = TimeOuts.res_retry[RES_TO_FIRST]; _res.retrans = TimeOuts.res_retrans[RES_TO_FIRST]; -#endif /* NAMED_BIND */ +#endif for (q = returnq; q != NULL; q = q->q_next) { if (QS_IS_BADADDR(q->q_state)) @@ -637,9 +637,9 @@ returntosender(msg, returnq, flags, e) (void) sm_snprintf(buf, sizeof(buf), #if DSN "multipart/report; report-type=delivery-status;\n\tboundary=\"%s\"", -#else /* DSN */ +#else "multipart/mixed; boundary=\"%s\"", -#endif /* DSN */ +#endif ee->e_msgboundary); addheader("Content-Type", buf, 0, ee, true); @@ -744,6 +744,44 @@ returntosender(msg, returnq, flags, e) return ret; } + +/* +** DSNTYPENAME -- Returns the DSN name of the addrtype for this address +** +** Sendmail's addrtypes are largely in different universes, and +** 'fred' may be a valid address in different addrtype +** universes. +** +** EAI extends the rfc822 universe rather than introduce a new +** universe. Because of that, sendmail uses the rfc822 addrtype, +** but names it utf-8 when the EAI DSN extension requires that. +** +** Parameters: +** addrtype -- address type +** addr -- the address +** +** Returns: +** type for DSN +** +*/ + +static const char *dsntypename __P((const char *, const char *)); + +static const char * +dsntypename(addrtype, addr) + const char *addrtype; + const char *addr; +{ + if (sm_strcasecmp(addrtype, "rfc822") != 0) + return addrtype; +#if _FFR_EAI + if (!addr_is_ascii(addr)) + return "utf-8"; +#endif + return "rfc822"; +} + + /* ** ERRBODY -- output the body of an error message. ** @@ -1082,7 +1120,13 @@ errbody(mci, e, separator) (void) sm_strlcpyn(buf, sizeof(buf), 2, "--", e->e_msgboundary); if (!putline("", mci) || !putline(buf, mci) || +#if _FFR_EAI + !putline(e->e_parent->e_smtputf8 + ? "Content-Type: message/global-delivery-status" + : "Content-Type: message/delivery-status", mci) || +#else !putline("Content-Type: message/delivery-status", mci) || +#endif !putline("", mci)) goto writeerr; @@ -1223,7 +1267,8 @@ errbody(mci, e, separator) (void) sm_snprintf(actual, sizeof(actual), "%s; %.700s@%.100s", - p, q->q_user, + dsntypename(p, q->q_user), + q->q_user, MyHostName); } else @@ -1231,7 +1276,8 @@ errbody(mci, e, separator) (void) sm_snprintf(actual, sizeof(actual), "%s; %.800s", - p, q->q_user); + dsntypename(p, q->q_user), + q->q_user); } } @@ -1248,6 +1294,23 @@ errbody(mci, e, separator) actual); } +#if _FFR_EAI + if (sm_strncasecmp("rfc822;", q->q_finalrcpt, 7) == 0 && + !addr_is_ascii(q->q_user)) + { + char *a; + char utf8rcpt[1024]; + + a = strchr(q->q_finalrcpt, ';'); + while(*a == ';' || *a == ' ') + a++; + sm_snprintf(utf8rcpt, sizeof(utf8rcpt), + "utf-8; %.800s", a); + q->q_finalrcpt = sm_rpool_strdup_x(e->e_rpool, + utf8rcpt); + } +#endif + if (q->q_finalrcpt != NULL) { (void) sm_snprintf(buf, sizeof(buf), @@ -1373,9 +1436,21 @@ errbody(mci, e, separator) if (!putline(buf, mci)) goto writeerr; +#if _FFR_EAI + if (e->e_parent->e_smtputf8) + (void) sm_strlcpyn(buf, sizeof(buf), 2, + "Content-Type: message/global", + sendbody ? "" : "-headers"); + else + (void) sm_strlcpyn(buf, sizeof(buf), 2, + "Content-Type: ", + sendbody ? "message/rfc822" + : "text/rfc822-headers"); +#else /* _FFR_EAI */ (void) sm_strlcpyn(buf, sizeof(buf), 2, "Content-Type: ", sendbody ? "message/rfc822" : "text/rfc822-headers"); +#endif /* _FFR_EAI */ if (!putline(buf, mci)) goto writeerr; @@ -1804,8 +1879,8 @@ pruneroute(addr) while (start != NULL) { - if (getmxrr(hostbuf, mxhosts, NULL, false, - &rcode, true, NULL) > 0) + if (getmxrr(hostbuf, mxhosts, NULL, TRYFALLBACK, &rcode, NULL, -1) + > 0) { (void) sm_strlcpy(addr + 1, start + 1, strlen(addr) - 1); diff --git a/src/sendmail.0 b/src/sendmail.0 index 515d5f7bd0b9..60ab1cd02314 100644 --- a/src/sendmail.0 +++ b/src/sendmail.0 @@ -2,27 +2,27 @@ SENDMAIL(8) SENDMAIL(8) -NNAAMMEE +NAME sendmail - an electronic mail transport agent -SSYYNNOOPPSSIISS - sseennddmmaaiill [_f_l_a_g_s] [_a_d_d_r_e_s_s _._._.] - nneewwaalliiaasseess - mmaaiillqq [--vv] - hhoossttssttaatt - ppuurrggeessttaatt - ssmmttppdd +SYNOPSIS + sendmail [flags] [address ...] + newaliases + mailq [-v] + hoststat + purgestat + smtpd -DDEESSCCRRIIPPTTIIOONN - SSeennddmmaaiill sends a message to one or more _r_e_c_i_p_i_e_n_t_s_, routing the message - over whatever networks are necessary. SSeennddmmaaiill does internetwork for- +DESCRIPTION + Sendmail sends a message to one or more recipients, routing the message + over whatever networks are necessary. Sendmail does internetwork for- warding as necessary to deliver the message to the correct place. - SSeennddmmaaiill is not intended as a user interface routine; other programs - provide user-friendly front ends; sseennddmmaaiill is used only to deliver pre- + Sendmail is not intended as a user interface routine; other programs + provide user-friendly front ends; sendmail is used only to deliver pre- formatted messages. - With no flags, sseennddmmaaiill reads its standard input up to an end-of-file + With no flags, sendmail reads its standard input up to an end-of-file or a line consisting only of a single dot and sends a copy of the mes- sage found there to all of the addresses listed. It determines the network(s) to use based on the syntax and contents of the addresses. @@ -33,231 +33,231 @@ DDEESSCCRRIIPPTTIIOONN e.g., if `john' sends to `group', and `group' includes `john' in the expansion, then the letter will also be delivered to `john'. - PPaarraammeetteerrss - --AAcc Use submit.cf even if the operation mode does not indicate an + Parameters + -Ac Use submit.cf even if the operation mode does not indicate an initial mail submission. - --AAmm Use sendmail.cf even if the operation mode indicates an initial + -Am Use sendmail.cf even if the operation mode indicates an initial mail submission. - --BB_t_y_p_e Set the body type to _t_y_p_e. Current legal values are 7BIT or + -Btype Set the body type to type. Current legal values are 7BIT or 8BITMIME. - --bbaa Go into ARPANET mode. All input lines must end with a CR-LF, + -ba Go into ARPANET mode. All input lines must end with a CR-LF, and all messages will be generated with a CR-LF at the end. Also, the ``From:'' and ``Sender:'' fields are examined for the name of the sender. - --bbCC Check the configuration file. + -bC Check the configuration file. - --bbdd Run as a daemon. SSeennddmmaaiill will fork and run in background lis- + -bd Run as a daemon. Sendmail will fork and run in background lis- tening on socket 25 for incoming SMTP connections. This is nor- mally run from /etc/rc. - --bbDD Same as --bbdd except runs in foreground. + -bD Same as -bd except runs in foreground. - --bbhh Print the persistent host status database. + -bh Print the persistent host status database. - --bbHH Purge expired entries from the persistent host status database. + -bH Purge expired entries from the persistent host status database. - --bbii Initialize the alias database. + -bi Initialize the alias database. - --bbmm Deliver mail in the usual way (default). + -bm Deliver mail in the usual way (default). - --bbpp Print a listing of the queue(s). + -bp Print a listing of the queue(s). - --bbPP Print number of entries in the queue(s); only available with + -bP Print number of entries in the queue(s); only available with shared memory support. - --bbss Use the SMTP protocol as described in RFC821 on standard input - and output. This flag implies all the operations of the --bbaa + -bs Use the SMTP protocol as described in RFC821 on standard input + and output. This flag implies all the operations of the -ba flag that are compatible with SMTP. - --bbtt Run in address test mode. This mode reads addresses and shows + -bt Run in address test mode. This mode reads addresses and shows the steps in parsing; it is used for debugging configuration tables. - --bbvv Verify names only - do not try to collect or deliver a message. + -bv Verify names only - do not try to collect or deliver a message. Verify mode is normally used for validating users or mailing lists. - --CC_f_i_l_e Use alternate configuration file. SSeennddmmaaiill gives up any + -Cfile Use alternate configuration file. Sendmail gives up any enhanced (set-user-ID or set-group-ID) privileges if an alter- nate configuration file is specified. - --DD _l_o_g_f_i_l_e + -D logfile Send debugging output to the indicated log file instead of std- out. - --dd_c_a_t_e_g_o_r_y.._l_e_v_e_l_._._. - Set the debugging flag for _c_a_t_e_g_o_r_y to _l_e_v_e_l. _C_a_t_e_g_o_r_y is - either an integer or a name specifying the topic, and _l_e_v_e_l an + -dcategory.level... + Set the debugging flag for category to level. Category is + either an integer or a name specifying the topic, and level an integer specifying the level of debugging output desired. Higher levels generally mean more output. More than one flag can be specified by separating them with commas. A list of numeric debugging categories can be found in the TRACEFLAGS file in the sendmail source distribution. - The option --dd00..11 prints the version of sseennddmmaaiill and the options + The option -d0.1 prints the version of sendmail and the options it was compiled with. Most other categories are only useful with, and documented in, - sseennddmmaaiill's source code. + sendmail's source code. - --FF_f_u_l_l_n_a_m_e + -Ffullname Set the full name of the sender. - --ff_n_a_m_e Sets the name of the ``from'' person (i.e., the envelope sender + -fname Sets the name of the ``from'' person (i.e., the envelope sender of the mail). This address may also be used in the From: header if that header is missing during initial submission. The enve- lope sender address is used as the recipient for delivery status - notifications and may also appear in a Return-Path: header. --ff - should only be used by ``trusted'' users (normally _r_o_o_t, _d_a_e_m_o_n, - and _n_e_t_w_o_r_k) or if the person you are trying to become is the + notifications and may also appear in a Return-Path: header. -f + should only be used by ``trusted'' users (normally root, daemon, + and network) or if the person you are trying to become is the same as the person you are. Otherwise, an X-Authentication- Warning header will be added to the message. - --GG Relay (gateway) submission of a message, e.g., when rrmmaaiill calls - sseennddmmaaiill .. + -G Relay (gateway) submission of a message, e.g., when rmail calls + sendmail . - --hh_N Set the hop count to _N. The hop count is incremented every time + -hN Set the hop count to N. The hop count is incremented every time the mail is processed. When it reaches a limit, the mail is returned with an error message, the victim of an aliasing loop. If not specified, ``Received:'' lines in the message are counted. - --ii Do not strip a leading dot from lines in incoming messages, and + -i Do not strip a leading dot from lines in incoming messages, and do not treat a dot on a line by itself as the end of an incoming message. This should be set if you are reading data from a file. - --LL _t_a_g Set the identifier used in syslog messages to the supplied _t_a_g. + -L tag Set the identifier used in syslog messages to the supplied tag. - --NN _d_s_n Set delivery status notification conditions to _d_s_n, which can be + -N dsn Set delivery status notification conditions to dsn, which can be `never' for no notifications or a comma separated list of the values `failure' to be notified if delivery failed, `delay' to be notified if delivery is delayed, and `success' to be notified when the message is successfully delivered. - --nn Don't do aliasing. + -n Don't do aliasing. - --OO _o_p_t_i_o_n=_v_a_l_u_e - Set option _o_p_t_i_o_n to the specified _v_a_l_u_e. This form uses long + -O option=value + Set option option to the specified value. This form uses long names. See below for more details. - --oo_x _v_a_l_u_e - Set option _x to the specified _v_a_l_u_e. This form uses single + -ox value + Set option x to the specified value. This form uses single character names only. The short names are not described in this - manual page; see the _S_e_n_d_m_a_i_l _I_n_s_t_a_l_l_a_t_i_o_n _a_n_d _O_p_e_r_a_t_i_o_n _G_u_i_d_e + manual page; see the Sendmail Installation and Operation Guide for details. - --pp_p_r_o_t_o_c_o_l + -pprotocol Set the name of the protocol used to receive the message. This can be a simple protocol name such as ``UUCP'' or a protocol and hostname, such as ``UUCP:ucbvax''. - --qq[_t_i_m_e] - Process saved messages in the queue at given intervals. If _t_i_m_e - is omitted, process the queue once. _T_i_m_e is given as a tagged + -q[time] + Process saved messages in the queue at given intervals. If time + is omitted, process the queue once. Time is given as a tagged number, with `s' being seconds, `m' being minutes (default), `h' being hours, `d' being days, and `w' being weeks. For example, `-q1h30m' or `-q90m' would both set the timeout to one hour - thirty minutes. By default, sseennddmmaaiill will run in the back- - ground. This option can be used safely with --bbdd. + thirty minutes. By default, sendmail will run in the back- + ground. This option can be used safely with -bd. - --qqpp[_t_i_m_e] - Similar to --qq_t_i_m_e, except that instead of periodically forking a + -qp[time] + Similar to -qtime, except that instead of periodically forking a child to process the queue, sendmail forks a single persistent child for each queue that alternates between processing the queue and sleeping. The sleep time is given as the argument; it defaults to 1 second. The process will always sleep at least 5 seconds if the queue was empty in the previous queue run. - --qqf Process saved messages in the queue once and do not fork(), but + -qf Process saved messages in the queue once and do not fork(), but run in the foreground. - --qqG_n_a_m_e - Process jobs in queue group called _n_a_m_e only. + -qGname + Process jobs in queue group called name only. - --qq[_!]I_s_u_b_s_t_r - Limit processed jobs to those containing _s_u_b_s_t_r as a substring - of the queue id or not when _! is specified. + -q[!]Isubstr + Limit processed jobs to those containing substr as a substring + of the queue id or not when ! is specified. - --qq[_!]Q_s_u_b_s_t_r - Limit processed jobs to quarantined jobs containing _s_u_b_s_t_r as a - substring of the quarantine reason or not when _! is specified. + -q[!]Qsubstr + Limit processed jobs to quarantined jobs containing substr as a + substring of the quarantine reason or not when ! is specified. - --qq[_!]R_s_u_b_s_t_r - Limit processed jobs to those containing _s_u_b_s_t_r as a substring - of one of the recipients or not when _! is specified. + -q[!]Rsubstr + Limit processed jobs to those containing substr as a substring + of one of the recipients or not when ! is specified. - --qq[_!]S_s_u_b_s_t_r - Limit processed jobs to those containing _s_u_b_s_t_r as a substring - of the sender or not when _! is specified. + -q[!]Ssubstr + Limit processed jobs to those containing substr as a substring + of the sender or not when ! is specified. - --QQ[reason] + -Q[reason] Quarantine a normal queue items with the given reason or unquar- antine quarantined queue items if no reason is given. This should only be used with some sort of item matching using as described above. - --RR _r_e_t_u_r_n + -R return Set the amount of the message to be returned if the message - bounces. The _r_e_t_u_r_n parameter can be `full' to return the + bounces. The return parameter can be `full' to return the entire message or `hdrs' to return only the headers. In the latter case also local bounces return only the headers. - --rr_n_a_m_e An alternate and obsolete form of the --ff flag. + -rname An alternate and obsolete form of the -f flag. - --tt Read message for recipients. To:, Cc:, and Bcc: lines will be + -t Read message for recipients. To:, Cc:, and Bcc: lines will be scanned for recipient addresses. The Bcc: line will be deleted before transmission. - --VV _e_n_v_i_d + -V envid Set the original envelope id. This is propagated across SMTP to servers that support DSNs and is returned in DSN-compliant error messages. - --vv Go into verbose mode. Alias expansions will be announced, etc. + -v Go into verbose mode. Alias expansions will be announced, etc. - --XX _l_o_g_f_i_l_e + -X logfile Log all traffic in and out of mailers in the indicated log file. This should only be used as a last resort for debugging mailer bugs. It will log a lot of data very quickly. - ---- Stop processing command flags and use the rest of the arguments + -- Stop processing command flags and use the rest of the arguments as addresses. - OOppttiioonnss + Options There are also a number of processing options that may be set. Nor- mally these will only be used by a system administrator. Options may - be set either on the command line using the --oo flag (for short names), - the --OO flag (for long names), or in the configuration file. This is a + be set either on the command line using the -o flag (for short names), + the -O flag (for long names), or in the configuration file. This is a partial list limited to those options that are likely to be useful on the command line and only shows the long names; for a complete list - (and details), consult the _S_e_n_d_m_a_i_l _I_n_s_t_a_l_l_a_t_i_o_n _a_n_d _O_p_e_r_a_t_i_o_n _G_u_i_d_e. + (and details), consult the Sendmail Installation and Operation Guide. The options are: - AliasFile=_f_i_l_e + AliasFile=file Use alternate alias file. HoldExpensive On mailers that are considered ``expensive'' to connect to, don't initiate immediate connection. This requires queueing. - CheckpointInterval=_N - Checkpoint the queue file after every _N successful deliveries + CheckpointInterval=N + Checkpoint the queue file after every N successful deliveries (default 10). This avoids excessive duplicate deliveries when sending to long mailing lists interrupted by system crashes. - DeliveryMode=_x - Set the delivery mode to _x. Delivery modes are `i' for interac- + DeliveryMode=x + Set the delivery mode to x. Delivery modes are `i' for interac- tive (synchronous) delivery, `b' for background (asynchronous) delivery, `q' for queue only - i.e., actual delivery is done the next time the queue is run, and `d' for deferred - the same as `q' except that database lookups for maps which have set the -D option (default for the host map) are avoided. - ErrorMode=_x - Set error processing to mode _x. Valid modes are `m' to mail + ErrorMode=x + Set error processing to mode x. Valid modes are `m' to mail back the error message, `w' to ``write'' back the error message (or mail it back if the sender is not logged in), `p' to print the errors on the terminal (default), `q' to throw away error @@ -265,12 +265,12 @@ DDEESSCCRRIIPPTTIIOONN processing for the BerkNet. If the text of the message is not mailed back by modes `m' or `w' and if the sender is local to this machine, a copy of the message is appended to the file - _d_e_a_d_._l_e_t_t_e_r in the sender's home directory. + dead.letter in the sender's home directory. SaveFromLine Save UNIX-style From lines at the front of messages. - MaxHopCount=_N + MaxHopCount=N The maximum number of times a message is allowed to ``hop'' before we decide it is in a loop. @@ -282,16 +282,16 @@ DDEESSCCRRIIPPTTIIOONN Send error messages in MIME format. If not set, the DSN (Deliv- ery Status Notification) SMTP extension is disabled. - ConnectionCacheTimeout=_t_i_m_e_o_u_t + ConnectionCacheTimeout=timeout Set connection cache timeout. - ConnectionCacheSize=_N + ConnectionCacheSize=N Set connection cache size. - LogLevel=_n + LogLevel=n The log level. - MeToo=_F_a_l_s_e + MeToo=False Don't send to ``me'' (the sender) if I am in an alias expansion. CheckAliases @@ -305,19 +305,19 @@ DDEESSCCRRIIPPTTIIOONN algorithm is used that will correctly determine the header for- mat in most cases. - QueueDirectory=_q_u_e_u_e_d_i_r + QueueDirectory=queuedir Select the directory in which to queue messages. - StatusFile=_f_i_l_e + StatusFile=file Save statistics in the named file. - Timeout.queuereturn=_t_i_m_e + Timeout.queuereturn=time Set the timeout on undelivered messages in the queue to the specified time. After delivery has failed (e.g., because of a host being down) for this amount of time, failed messages will be returned to the sender. The default is five days. - UserDatabaseSpec=_u_s_e_r_d_a_t_a_b_a_s_e + UserDatabaseSpec=userdatabase If set, a user database is consulted to get forwarding informa- tion. You can consider this an adjunct to the aliasing mecha- nism, except that the database is intended to be distributed; @@ -332,60 +332,60 @@ DDEESSCCRRIIPPTTIIOONN SevenBitInput Strip incoming messages to seven bits. - EightBitMode=_m_o_d_e + EightBitMode=mode Set the handling of eight bit input to seven bit destinations to - _m_o_d_e: m (mimefy) will convert to seven-bit MIME format, p (pass) + mode: m (mimefy) will convert to seven-bit MIME format, p (pass) will pass it as eight bits (but violates protocols), and s (strict) will bounce the message. - MinQueueAge=_t_i_m_e_o_u_t + MinQueueAge=timeout Sets how long a job must ferment in the queue between attempts to send it. - DefaultCharSet=_c_h_a_r_s_e_t + DefaultCharSet=charset Sets the default character set used to label 8-bit data that is not otherwise labelled. - DialDelay=_s_l_e_e_p_t_i_m_e - If opening a connection fails, sleep for _s_l_e_e_p_t_i_m_e seconds and + DialDelay=sleeptime + If opening a connection fails, sleep for sleeptime seconds and try again. Useful on dial-on-demand sites. - NoRecipientAction=_a_c_t_i_o_n + NoRecipientAction=action Set the behaviour when there are no recipient headers (To:, Cc: - or Bcc:) in the message to _a_c_t_i_o_n: none leaves the message + or Bcc:) in the message to action: none leaves the message unchanged, add-to adds a To: header with the envelope recipi- ents, add-apparently-to adds an Apparently-To: header with the envelope recipients, add-bcc adds an empty Bcc: header, and add- to-undisclosed adds a header reading `To: undisclosed-recipi- ents:;'. - MaxDaemonChildren=_N + MaxDaemonChildren=N Sets the maximum number of children that an incoming SMTP daemon - will allow to spawn at any time to _N. + will allow to spawn at any time to N. - ConnectionRateThrottle=_N + ConnectionRateThrottle=N Sets the maximum number of connections per second to the SMTP - port to _N. + port to N. In aliases, the first character of a name may be a vertical bar to cause interpretation of the rest of the name as a command to pipe the - mail to. It may be necessary to quote the name to keep sseennddmmaaiill from + mail to. It may be necessary to quote the name to keep sendmail from suppressing the blanks from between arguments. For example, a common alias is: msgs: "|/usr/bin/msgs -s" - Aliases may also have the syntax ``:include:_f_i_l_e_n_a_m_e'' to ask sseennddmmaaiill + Aliases may also have the syntax ``:include:filename'' to ask sendmail to read the named file for a list of recipients. For example, an alias such as: poets: ":include:/usr/local/lib/poets.list" - would read _/_u_s_r_/_l_o_c_a_l_/_l_i_b_/_p_o_e_t_s_._l_i_s_t for the list of addresses making + would read /usr/local/lib/poets.list for the list of addresses making up the group. - SSeennddmmaaiill returns an exit status describing what it did. The codes are - defined in <_s_y_s_e_x_i_t_s_._h>: + Sendmail returns an exit status describing what it did. The codes are + defined in <sysexits.h>: EX_OK Successful completion on all addresses. @@ -410,27 +410,27 @@ DDEESSCCRRIIPPTTIIOONN EX_TEMPFAIL Message could not be sent immediately, but was queued. - If invoked as nneewwaalliiaasseess, sseennddmmaaiill will rebuild the alias database. If - invoked as mmaaiillqq, sseennddmmaaiill will print the contents of the mail queue. - If invoked as hhoossttssttaatt, sseennddmmaaiill will print the persistent host status - database. If invoked as ppuurrggeessttaatt, sseennddmmaaiill will purge expired entries - from the persistent host status database. If invoked as ssmmttppdd, sseenndd-- - mmaaiill will act as a daemon, as if the --bbdd option were specified. + If invoked as newaliases, sendmail will rebuild the alias database. If + invoked as mailq, sendmail will print the contents of the mail queue. + If invoked as hoststat, sendmail will print the persistent host status + database. If invoked as purgestat, sendmail will purge expired entries + from the persistent host status database. If invoked as smtpd, send- + mail will act as a daemon, as if the -bd option were specified. -NNOOTTEESS - sseennddmmaaiill often gets blamed for many problems that are actually the +NOTES + sendmail often gets blamed for many problems that are actually the result of other problems, such as overly permissive modes on directo- - ries. For this reason, sseennddmmaaiill checks the modes on system directories + ries. For this reason, sendmail checks the modes on system directories and files to determine if they can be trusted. Although these checks - can be turned off and your system security reduced by setting the DDoonntt-- - BBllaammeeSSeennddmmaaiill option, the permission problems should be fixed. For + can be turned off and your system security reduced by setting the Dont- + BlameSendmail option, the permission problems should be fixed. For more information, see: - _h_t_t_p_:_/_/_w_w_w_._s_e_n_d_m_a_i_l_._o_r_g_/_t_i_p_s_/_D_o_n_t_B_l_a_m_e_S_e_n_d_m_a_i_l_._h_t_m_l + http://www.sendmail.org/tips/DontBlameSendmail.html -FFIILLEESS - Except for the file _/_e_t_c_/_m_a_i_l_/_s_e_n_d_m_a_i_l_._c_f itself the following path- - names are all specified in _/_e_t_c_/_m_a_i_l_/_s_e_n_d_m_a_i_l_._c_f. Thus, these values +FILES + Except for the file /etc/mail/sendmail.cf itself the following path- + names are all specified in /etc/mail/sendmail.cf. Thus, these values are only approximations. @@ -452,19 +452,19 @@ FFIILLEESS /var/spool/mqueue/* temp files -SSEEEE AALLSSOO +SEE ALSO binmail(1), mail(1), rmail(1), syslog(3), aliases(5), mailaddr(7), rc(8) - DARPA Internet Request For Comments _R_F_C_8_1_9, _R_F_C_8_2_1, _R_F_C_8_2_2. _S_e_n_d_m_a_i_l - _I_n_s_t_a_l_l_a_t_i_o_n _a_n_d _O_p_e_r_a_t_i_o_n _G_u_i_d_e, No. 8, SMM. + DARPA Internet Request For Comments RFC819, RFC821, RFC822. Sendmail + Installation and Operation Guide, No. 8, SMM. http://www.sendmail.org/ US Patent Numbers 6865671, 6986037. -HHIISSTTOORRYY - The sseennddmmaaiill command appeared in 4.2BSD. +HISTORY + The sendmail command appeared in 4.2BSD. diff --git a/src/sendmail.h b/src/sendmail.h index b2d0211ee0f5..e6cf45df0151 100644 --- a/src/sendmail.h +++ b/src/sendmail.h @@ -19,14 +19,13 @@ #ifndef MILTER # define MILTER 1 /* turn on MILTER by default */ -#endif /* MILTER */ +#endif #ifdef _DEFINE # define EXTERN -#else /* _DEFINE */ +#else # define EXTERN extern -#endif /* _DEFINE */ - +#endif #include @@ -37,24 +36,31 @@ #include #include #include -# ifdef EX_OK -# undef EX_OK /* for SVr4.2 SMP */ -# endif /* EX_OK */ +#ifdef EX_OK +# undef EX_OK /* for SVr4.2 SMP */ +#endif #include "sendmail/sendmail.h" +#if STARTTLS +# include +# if _FFR_TLSA_DANE && !defined(DANE) +# define DANE _FFR_TLSA_DANE +# endif +#endif + /* profiling? */ #if MONCONTROL # define SM_PROF(x) moncontrol(x) -#else /* MONCONTROL */ +#else # define SM_PROF(x) -#endif /* MONCONTROL */ +#endif #ifdef _DEFINE # ifndef lint SM_UNUSED(static char SmailId[]) = "@(#)$Id: sendmail.h,v 8.1104 2013-11-22 20:51:56 ca Exp $"; -# endif /* ! lint */ -#endif /* _DEFINE */ +# endif +#endif #include "bf.h" #include "timers.h" @@ -74,81 +80,139 @@ SM_UNUSED(static char SmailId[]) = "@(#)$Id: sendmail.h,v 8.1104 2013-11-22 20:5 #ifdef LOG # include -#endif /* LOG */ +#endif - - -# if NETINET || NETINET6 || NETUNIX || NETISO || NETNS || NETX25 -# include -# endif /* NETINET || NETINET6 || NETUNIX || NETISO || NETNS || NETX25 */ -# if NETUNIX -# include -# endif /* NETUNIX */ -# if NETINET || NETINET6 -# include -# endif /* NETINET || NETINET6 */ -# if NETINET6 +#if NETINET || NETINET6 || NETUNIX || NETISO || NETNS || NETX25 +# include +#endif +#if NETUNIX +# include +#endif +#if NETINET || NETINET6 +# include +#endif +#if NETINET6 /* ** There is no standard yet for IPv6 includes. ** Specify OS specific implementation in conf.h */ -# endif /* NETINET6 */ -# if NETISO -# include -# endif /* NETISO */ -# if NETNS -# include -# endif /* NETNS */ -# if NETX25 -# include -# endif /* NETX25 */ +#endif /* NETINET6 */ +#if NETISO +# include +#endif +#if NETNS +# include +#endif +#if NETX25 +# include +#endif -# if NAMED_BIND -# include -# ifdef NOERROR -# undef NOERROR /* avoid conflict */ -# endif /* NOERROR */ -# include -# else /* NAMED_BIND */ -# undef SM_SET_H_ERRNO -# define SM_SET_H_ERRNO(err) -# endif /* NAMED_BIND */ +#if NAMED_BIND +# include +# ifdef NOERROR +# undef NOERROR /* avoid conflict */ +# endif +# include +#else /* NAMED_BIND */ +# undef SM_SET_H_ERRNO +# define SM_SET_H_ERRNO(err) +#endif /* NAMED_BIND */ -# if HESIOD -# include -# if !defined(HES_ER_OK) || defined(HESIOD_INTERFACES) -# define HESIOD_INIT /* support for the new interface */ -# endif /* !defined(HES_ER_OK) || defined(HESIOD_INTERFACES) */ -# endif /* HESIOD */ +#if HESIOD +# include +# if !defined(HES_ER_OK) || defined(HESIOD_INTERFACES) +# define HESIOD_INIT /* support for the new interface */ +# endif +#endif /* HESIOD */ + +#if _FFR_EAI && !defined(ALLOW_255) +# define ALLOW_255 1 +#endif #if STARTTLS -# include -# if !TLS_NO_RSA -# if _FFR_FIPSMODE -# define RSA_KEYLENGTH 1024 -# else /* _FFR_FIPSMODE */ -# define RSA_KEYLENGTH 512 -# endif /* _FFR_FIPSMODE */ -# endif /* !TLS_NO_RSA */ +# if DANE +struct dane_vrfy_ctx_S +{ + int dane_vrfy_chk; + int dane_vrfy_res; + int dane_vrfy_port; + + /* look up TLSA RRs, SNI unless dane_tlsa_sni is set. */ + char *dane_vrfy_host; + char *dane_vrfy_sni; /* if not NULL: use for SNI */ + + /* full fingerprint in printable format */ + char dane_vrfy_fp[1024]; +}; + +typedef struct dane_tlsa_S dane_tlsa_T, *dane_tlsa_P; +typedef struct dane_vrfy_ctx_S dane_vrfy_ctx_T, *dane_vrfy_ctx_P; +# endif + +/* TLS information context */ +struct tlsi_ctx_S +{ + /* use unsigned long? */ + BITMAP256 tlsi_flags; +# if DANE + dane_vrfy_ctx_T tlsi_dvc; +# endif +}; +typedef struct tlsi_ctx_S tlsi_ctx_T, *tlsi_ctx_P; + +/* TLS information context flags */ +#define TLSI_FL_CRLREQ 'R' /* CRL required */ +#define TLSI_FL_FB2CLR 'C' /* fall back to clear text is ok */ +#define TLSI_FL_NOFB2CLR 'c' /* do not fall back to clear text */ +#define TLSI_FL_NODANE 'd' /* do not use/lookup DANE */ +#define SM_TLSI_IS(tlsi_ctx, flag) \ + (((tlsi_ctx) != NULL) && bitnset((flag), (tlsi_ctx)->tlsi_flags)) + +/* ugly hack, is it worth using different values? */ +# if _FFR_LOG_MORE1 > 1 || _FFR_LOG_MORE2 > 1 +# define LOG_MORE_2(buf, bp) \ + p = macvalue(macid("{tls_version}"), e); \ + if (p == NULL || *p == '\0') \ + p = "NONE"; \ + (void) sm_snprintf(bp, SPACELEFT(buf, bp), ", tls_version=%.10s", p); \ + bp += strlen(bp); \ + p = macvalue(macid("{cipher}"), e); \ + if (p == NULL || *p == '\0') \ + p = "NONE"; \ + (void) sm_snprintf(bp, SPACELEFT(buf, bp), ", cipher=%.20s", p); \ + bp += strlen(bp); +# else +# define LOG_MORE_2(buf, bp) +# endif + +# define LOG_MORE(buf, bp) \ + p = macvalue(macid("{verify}"), e); \ + if (p == NULL || *p == '\0') \ + p = "NONE"; \ + (void) sm_snprintf(bp, SPACELEFT(buf, bp), ", tls_verify=%.20s", p); \ + bp += strlen(bp); \ + LOG_MORE_2(buf, bp) + +#else +# define LOG_MORE(buf, bp) #endif /* STARTTLS */ -#if SASL /* include the sasl include files if we have them */ - - +#if SASL +/* include the sasl include files if we have them */ # if SASL == 2 || SASL >= 20000 # include # include # include # if SASL_VERSION_FULL < 0x020119 typedef int (*sasl_callback_ft)(void); -# endif /* SASL_VERSION_FULL < 0x020119 */ +# endif # else /* SASL == 2 || SASL >= 20000 */ # include # include typedef int (*sasl_callback_ft)(void); # endif /* SASL == 2 || SASL >= 20000 */ # if defined(SASL_VERSION_MAJOR) && defined(SASL_VERSION_MINOR) && defined(SASL_VERSION_STEP) -# define SASL_VERSION (SASL_VERSION_MAJOR * 10000) + (SASL_VERSION_MINOR * 100) + SASL_VERSION_STEP +# define SASL_VERSION (SASL_VERSION_MAJOR * 10000) + (SASL_VERSION_MINOR * 100) + SASL_VERSION_STEP # if SASL == 1 || SASL == 2 # undef SASL # define SASL SASL_VERSION @@ -177,19 +241,19 @@ typedef int (*sasl_callback_ft)(void); #ifndef INADDRSZ # define INADDRSZ 4 /* size of an IPv4 address in bytes */ -#endif /* ! INADDRSZ */ +#endif #ifndef IN6ADDRSZ # define IN6ADDRSZ 16 /* size of an IPv6 address in bytes */ -#endif /* ! IN6ADDRSZ */ +#endif #ifndef INT16SZ # define INT16SZ 2 /* size of a 16 bit integer in bytes */ -#endif /* ! INT16SZ */ +#endif #ifndef INT32SZ # define INT32SZ 4 /* size of a 32 bit integer in bytes */ -#endif /* ! INT32SZ */ +#endif #ifndef INADDR_LOOPBACK # define INADDR_LOOPBACK 0x7f000001 /* loopback address */ -#endif /* ! INADDR_LOOPBACK */ +#endif /* ** Error return from inet_addr(3), in case not defined in /usr/include. @@ -197,7 +261,7 @@ typedef int (*sasl_callback_ft)(void); #ifndef INADDR_NONE # define INADDR_NONE 0xffffffff -#endif /* ! INADDR_NONE */ +#endif /* By default use uncompressed IPv6 address format (no "::") */ #ifndef IPV6_FULL @@ -207,11 +271,7 @@ typedef int (*sasl_callback_ft)(void); /* (f)open() modes for queue files */ #define QF_O_EXTRA 0 -#if _FFR_PROXY || _FFR_LOGREPLY -# define _FFR_ERRCODE 1 -#endif - -#define SM_ARRAY_SIZE(array) (sizeof(array) / sizeof((array)[0])) +#define SM_ARRAY_SIZE(array) (sizeof(array) / sizeof((array)[0])) /* ** An 'argument class' describes the storage allocation status @@ -245,6 +305,9 @@ struct address char *q_user; /* user name */ char *q_ruser; /* real user name, or NULL if q_user */ char *q_host; /* host name */ +#if DANE + char *q_qname; /* original query (host) name */ +#endif struct mailer *q_mailer; /* mailer to use */ unsigned long q_flags; /* status flags, see below */ uid_t q_uid; /* user-id of receiver (if known) */ @@ -257,7 +320,7 @@ struct address struct address *q_tchain; /* temporary use chain */ #if PIPELINING struct address *q_pchain; /* chain for pipelining */ -#endif /* PIPELINING */ +#endif char *q_finalrcpt; /* Final-Recipient: DSN header */ char *q_orcpt; /* ORCPT parameter from RCPT TO: line */ char *q_status; /* status code for DSNs */ @@ -267,7 +330,6 @@ struct address short q_state; /* address state, see below */ char *q_signature; /* MX-based sorting value */ int q_qgrp; /* index into queue groups */ - int q_qdir; /* queue directory inside group */ char *q_message; /* error message */ }; @@ -294,6 +356,8 @@ typedef struct address ADDRESS; #define QBYNRELAY 0x00020000 /* DeliverBy: notify, relayed */ #define QINTBCC 0x00040000 /* internal Bcc */ #define QDYNMAILER 0x00080000 /* "dynamic mailer" */ +#define QSECURE 0x00100000 /* DNSSEC ok */ +#define QQUEUED 0x00200000 /* queued */ #define QTHISPASS 0x40000000 /* temp: address set this pass */ #define QRCPTOK 0x80000000 /* recipient() processed address */ @@ -384,7 +448,7 @@ extern bool sameaddr __P((ADDRESS *, ADDRESS *)); extern int sendtolist __P((char *, ADDRESS *, ADDRESS **, int, ENVELOPE *)); #if MILTER extern int removefromlist __P((char *, ADDRESS **, ENVELOPE *)); -#endif /* MILTER */ +#endif extern void setsender __P((char *, ENVELOPE *, char **, int, bool)); typedef void esmtp_args_F __P((ADDRESS *, char *, char *, ENVELOPE *)); extern void parse_esmtp_args __P((ENVELOPE *, ADDRESS *, char *, char *, @@ -443,6 +507,12 @@ struct mailer time_t m_wait; /* timeout to wait for end */ int m_maxrcpt; /* max recipients per envelope client-side */ short m_qgrp; /* queue group for this mailer */ +#if DANE + unsigned short m_port; /* port (if appropriate for mailer) */ +# define M_PORT(m) ((m)->m_port) +#else +# define M_PORT(m) (-1) +#endif }; /* bits for m_flags */ @@ -521,7 +591,7 @@ extern void makequeue __P((char *, bool)); extern void runqueueevent __P((int)); #if _FFR_QUEUE_RUN_PARANOIA extern bool checkqueuerunner __P((void)); -#endif /* _FFR_QUEUE_RUN_PARANOIA */ +#endif EXTERN MAILER *FileMailer; /* ptr to *file* mailer */ EXTERN MAILER *InclMailer; /* ptr to *include* mailer */ @@ -545,9 +615,9 @@ struct qpaths_s char *qp_name; /* name of queue dir, relative path */ short qp_subdirs; /* use subdirs? */ short qp_fsysidx; /* file system index of this directory */ -# if SM_CONF_SHM +#if SM_CONF_SHM int qp_idx; /* index into array for queue information */ -# endif /* SM_CONF_SHM */ +#endif }; typedef struct qpaths_s QPATHS; @@ -577,14 +647,14 @@ struct queuegrp BITMAP256 qg_flags; /* status flags, see below */ short qg_nice; /* niceness for queue run */ int qg_wgrp; /* Assigned to this work group */ - int qg_maxlist; /* max items in work queue for this group */ - int qg_curnum; /* current number of queue for queue runs */ + int qg_maxlist; /* max items in work queue for this group */ + int qg_curnum; /* current number of queue for queue runs */ int qg_maxrcpt; /* max recipients per envelope, 0==no limit */ time_t qg_nextrun; /* time for next queue runs */ #if _FFR_QUEUE_GROUP_SORTORDER short qg_sortorder; /* how do we sort this queuerun */ -#endif /* _FFR_QUEUE_GROUP_SORTORDER */ +#endif #if 0 long qg_wkrcptfact; /* multiplier for # recipients -> priority */ long qg_qfactor; /* slope of queue function */ @@ -599,7 +669,7 @@ struct queuegrp extern void filesys_update __P((void)); #if _FFR_ANY_FREE_FS extern bool filesys_free __P((long)); -#endif /* _FFR_ANY_FREE_FS */ +#endif #if SASL /* @@ -724,7 +794,7 @@ MCI #if PIPELINING int mci_okrcpts; /* number of valid recipients */ ADDRESS *mci_nextaddr; /* next address for pipelined status */ -#endif /* PIPELINING */ +#endif #if SASL SASL_AI_T mci_sai; /* authentication info */ bool mci_sasl_auth; /* authenticated? */ @@ -735,14 +805,16 @@ MCI #endif /* SASL */ #if STARTTLS SSL *mci_ssl; /* SSL connection */ -#endif /* STARTTLS */ + tlsi_ctx_T mci_tlsi; +#endif MACROS_T mci_macro; /* macro definitions */ }; -/* flag bits */ -#define MCIF_VALID 0x00000001 /* this entry is valid */ -/* 0x00000002 unused, was MCIF_TEMP */ +/* MCI flag bits */ +/* XREF: mci.c: MciFlags[]: needs to be kept in sync! */ +/* 0x00000001 unused, was MCIF_VALID: this entry is valid */ +#define MCIF_OCC_INCR 0x00000002 /* occ values increased */ #define MCIF_CACHED 0x00000004 /* currently in open cache */ #define MCIF_ESMTP 0x00000008 /* this host speaks ESMTP */ #define MCIF_EXPN 0x00000010 /* EXPN command supported */ @@ -771,7 +843,7 @@ MCI #define MCIF_DLVR_BY 0x00400000 /* DELIVERBY */ #if _FFR_IGNORE_EXT_ON_HELO # define MCIF_HELO 0x00800000 /* we used HELO: ignore extensions */ -#endif /* _FFR_IGNORE_EXT_ON_HELO */ +#endif #define MCIF_INLONGLINE 0x01000000 /* in the middle of a long line */ #define MCIF_AUTH2 0x02000000 /* got 2 AUTH lines */ #define MCIF_ONLY_EHLO 0x10000000 /* use only EHLO in smtpinit */ @@ -781,8 +853,13 @@ MCI #else # define MCIF_NOTSTICKY 0 #endif +#if _FFR_EAI +# define MCIF_EAI 0x40000000 /* SMTPUTF8 supported */ +#else +# define MCIF_EAI 0x00000000 /* for MCIF_EXTENS */ +#endif -#define MCIF_EXTENS (MCIF_EXPN | MCIF_SIZE | MCIF_8BITMIME | MCIF_DSN | MCIF_8BITOK | MCIF_AUTH | MCIF_ENHSTAT | MCIF_TLS | MCIF_AUTH2) +#define MCIF_EXTENS (MCIF_EXPN|MCIF_SIZE|MCIF_8BITMIME|MCIF_DSN|MCIF_8BITOK|MCIF_AUTH|MCIF_ENHSTAT|MCIF_PIPELINED|MCIF_VERB|MCIF_TLS|MCIF_DLVR_BY|MCIF_AUTH2|MCIF_EAI) /* states */ #define MCIS_CLOSED 0 /* no traffic on this connection */ @@ -921,6 +998,9 @@ struct envelope ADDRESS e_from; /* the person it is from */ char *e_sender; /* e_from.q_paddr w comments stripped */ char **e_fromdomain; /* the domain part of the sender */ +#if _FFR_EAI + bool e_smtputf8; /* whether the sender demanded SMTPUTF8 */ +#endif ADDRESS *e_sendqueue; /* list of message recipients */ ADDRESS *e_errorqueue; /* the queue for error responses */ @@ -951,7 +1031,7 @@ struct envelope char *e_id; /* code for this entry in queue */ #if _FFR_SESSID char *e_sessid; /* session ID for this envelope */ -#endif /* _FFR_SESSID */ +#endif int e_qgrp; /* queue group (index into queues) */ int e_qdir; /* index into queue directories */ int e_dfqgrp; /* data file queue group index */ @@ -987,13 +1067,11 @@ struct envelope #define ENHSC_LEN 11 #if _FFR_MILTER_ENHSC char e_enhsc[ENHSC_LEN]; /* enhanced status code */ -#endif /* _FFR_MILTER_ENHSC */ -#if _FFR_ERRCODE +#endif /* smtp error codes during delivery */ int e_rcode; /* reply code */ char e_renhsc[ENHSC_LEN]; /* enhanced status code */ char *e_text; /* reply text */ -#endif /* _FFR_ERRCODE */ }; #define PRT_NONNEGL(v) ((v) < 0 ? LONG_MAX : (v)) @@ -1017,8 +1095,8 @@ struct envelope #define EF_LOGSENDER 0x00008000L /* need to log the sender */ #define EF_NORECEIPT 0x00010000L /* suppress all return-receipts */ #define EF_HAS8BIT 0x00020000L /* at least one 8-bit char in body */ -#define EF_NL_NOT_EOL 0x00040000L /* don't accept raw NL as EOLine */ -#define EF_CRLF_NOT_EOL 0x00080000L /* don't accept CR-LF as EOLine */ +/* was: EF_NL_NOT_EOL 0x00040000L * don't accept raw NL as EOLine */ +/* was: EF_CRLF_NOT_EOL 0x00080000L * don't accept CR-LF as EOLine */ #define EF_RET_PARAM 0x00100000L /* RCPT command had RET argument */ #define EF_HAS_DF 0x00200000L /* set when data file is instantiated */ #define EF_IS_MIME 0x00400000L /* really is a MIME message */ @@ -1028,6 +1106,7 @@ struct envelope #define EF_SPLIT 0x04000000L /* envelope has been split */ #define EF_UNSAFE 0x08000000L /* unsafe: read from untrusted source */ #define EF_TOODEEP 0x10000000L /* message is nested too deep */ +#define EF_SECURE 0x20000000L /* DNSSEC for currently parsed addr */ #define DLVR_NOTIFY 0x01 #define DLVR_RETURN 0x02 @@ -1183,10 +1262,11 @@ extern void macset __P((MACROS_T *, int, char *)); #define macget(mac, i) (mac)->mac_table[i] extern void expand __P((char *, char *, size_t, ENVELOPE *)); extern int macid_parse __P((char *, char **)); -#define macid(name) macid_parse(name, NULL) +#define macid(name) macid_parse(name, NULL) extern char *macname __P((int)); extern char *macvalue __P((int, ENVELOPE *)); -extern int rscheck __P((char *, char *, char *, ENVELOPE *, int, int, char *, char *, ADDRESS *, char **)); +extern void mactabclear __P((MACROS_T *)); +extern int rscheck __P((char *, const char *, const char *, ENVELOPE *, int, int, const char *, const char *, ADDRESS *, char **)); extern int rscap __P((char *, char *, char *, ENVELOPE *, char ***, char *, int)); extern void setclass __P((int, char *)); extern int strtorwset __P((char *, char **, int)); @@ -1217,6 +1297,8 @@ NAMECANON /* values for nc_flags */ #define NCF_VALID 0x0001 /* entry valid */ +#define NCF_VALID 0x0001 /* entry valid */ +#define NCF_SECURE 0x0002 /* entry secure (DNSSEC) */ /* hostsignature structure */ @@ -1237,9 +1319,9 @@ typedef struct hostsig_t HOSTSIG_T; ** it not big enough to accommodate the entire answer. */ -# ifndef MAXPACKET -# define MAXPACKET 8192 /* max packet size used internally by BIND */ -# endif /* ! MAXPACKET */ +#ifndef MAXPACKET +# define MAXPACKET 8192 /* max packet size used internally by BIND */ +#endif /* ** The resolver functions res_{send,query,querydomain} expect the @@ -1255,10 +1337,24 @@ typedef union unsigned char qb2[MAXPACKET]; } querybuf; + +/* result values for getcanonname() etc */ +#define HOST_NOTFOUND 0 +#define HOST_OK 1 +#define HOST_SECURE 2 + +/* flags for getmxrr() */ +#define DROPLOCALHOST 0x01 +#define TRYFALLBACK 0x02 +#define ISAD 0x04 + +/* RFC7505: Null MX */ +#define NULLMX (-2) + /* functions */ -extern bool getcanonname __P((char *, int, bool, int *)); -extern int getmxrr __P((char *, char **, unsigned short *, bool, int *, bool, int *)); -extern char *hostsignature __P((MAILER *, char *)); +extern int getcanonname __P((char *, int, bool, int *)); +extern int getmxrr __P((char *, char **, unsigned short *, unsigned int, int *, int *, int)); +extern char *hostsignature __P((MAILER *, char *, bool)); extern int getfallbackmxrr __P((char *)); /* @@ -1301,7 +1397,6 @@ MAP int map_retry; /* # of retries for map accesses */ pid_t map_pid; /* PID of process which opened map */ int map_lockfd; /* auxiliary lock file descriptor */ - short map_specificity; /* specificity of aliases */ MAP *map_stack[MAXMAPSTACK]; /* list for stacked maps */ short map_return[MAXMAPACTIONS]; /* return bitmaps for stacked maps */ }; @@ -1322,7 +1417,7 @@ MAP #define MF_ALIASWAIT 0x00000800 /* alias map in aliaswait state */ #define MF_IMPL_HASH 0x00001000 /* implicit: underlying hash database */ #define MF_IMPL_NDBM 0x00002000 /* implicit: underlying NDBM database */ -/* 0x00004000 */ +#define MF_IMPL_CDB 0x00004000 /* implicit: underlying CDB database */ #define MF_APPEND 0x00008000 /* append new entry on rebuild */ #define MF_KEEPQUOTES 0x00010000 /* don't dequote key before lookup */ #define MF_NODEFER 0x00020000 /* don't defer if map lookup fails */ @@ -1333,6 +1428,7 @@ MAP #define MF_FILECLASS 0x00400000 /* this is a file class map */ #define MF_OPENBOGUS 0x00800000 /* open failed, don't call map_close */ #define MF_CLOSING 0x01000000 /* map is being closed */ +#define MF_SECURE 0x02000000 /* DNSSEC result is "secure" */ #define DYNOPENMAP(map) \ do \ @@ -1373,7 +1469,7 @@ MAPCLASS /* bit values for map_cflags */ #define MCF_ALIASOK 0x0001 /* can be used for aliases */ -#define MCF_ALIASONLY 0x0002 /* usable only for aliases */ +/* #define MCF_ALIASONLY 0x0002 * usable only for aliases */ #define MCF_REBUILDABLE 0x0004 /* can rebuild alias files */ #define MCF_OPTFILE 0x0008 /* file name is optional */ #define MCF_NOTPERSIST 0x0010 /* don't keep map open all the time */ @@ -1387,13 +1483,13 @@ extern void maplocaluser __P((ADDRESS *, ADDRESS **, int, ENVELOPE *)); extern char *map_rewrite __P((MAP *, const char *, size_t, char **)); #if NETINFO extern char *ni_propval __P((char *, char *, char *, char *, int)); -#endif /* NETINFO */ +#endif extern bool openmap __P((MAP *)); extern int udbexpand __P((ADDRESS *, ADDRESS **, int, ENVELOPE *)); #if USERDB extern void _udbx_close __P((void)); extern char *udbsender __P((char *, SM_RPOOL_T *)); -#endif /* USERDB */ +#endif /* ** LDAP related items @@ -1456,22 +1552,22 @@ union bigsockaddr struct sockaddr sa; /* general version */ # if NETUNIX struct sockaddr_un sunix; /* UNIX family */ -# endif /* NETUNIX */ +# endif # if NETINET struct sockaddr_in sin; /* INET family */ -# endif /* NETINET */ +# endif # if NETINET6 struct sockaddr_in6 sin6; /* INET/IPv6 */ -# endif /* NETINET6 */ +# endif # if NETISO struct sockaddr_iso siso; /* ISO family */ -# endif /* NETISO */ +# endif # if NETNS struct sockaddr_ns sns; /* XNS family */ -# endif /* NETNS */ +# endif # if NETX25 struct sockaddr_x25 sx25; /* X.25 family */ -# endif /* NETX25 */ +# endif }; # define SOCKADDR union bigsockaddr @@ -1481,12 +1577,12 @@ extern char *anynet_ntoa __P((SOCKADDR *)); # if NETINET6 extern char *anynet_ntop __P((struct in6_addr *, char *, size_t)); extern int anynet_pton __P((int, const char *, void *)); -# endif /* NETINET6 */ +# endif extern char *hostnamebyanyaddr __P((SOCKADDR *)); extern char *validate_connection __P((SOCKADDR *, char *, ENVELOPE *)); # if SASL >= 20000 extern bool iptostring __P((SOCKADDR *, SOCKADDR_LEN_T, char *, unsigned)); -# endif /* SASL >= 20000 */ +# endif #endif /* NETINET || NETINET6 || NETUNIX || NETISO || NETNS || NETX25 */ @@ -1497,7 +1593,7 @@ extern bool iptostring __P((SOCKADDR *, SOCKADDR_LEN_T, char *, unsigned)); #define NO_PID ((pid_t) 0) #ifndef PROC_LIST_SEG # define PROC_LIST_SEG 32 /* number of pids to alloc at a time */ -#endif /* ! PROC_LIST_SEG */ +#endif /* process types */ #define PROC_NONE 0 @@ -1542,14 +1638,17 @@ struct symtab char *sv_service[MAXMAPSTACK]; /* service switch */ #if LDAPMAP MAP *sv_lmap; /* Maps for LDAP connection */ -#endif /* LDAPMAP */ +#endif #if SOCKETMAP MAP *sv_socketmap; /* Maps for SOCKET connection */ -#endif /* SOCKETMAP */ +#endif #if MILTER struct milter *sv_milter; /* milter filter name */ -#endif /* MILTER */ +#endif QUEUEGRP *sv_queue; /* pointer to queue */ +#if DANE + dane_tlsa_P sv_tlsa; /* pointer to TLSA RRs */ +#endif } s_value; }; @@ -1571,18 +1670,22 @@ typedef struct symtab STAB; #define ST_HEADER 12 /* special header flags */ #if LDAPMAP # define ST_LMAP 13 /* List head of maps for LDAP connection */ -#endif /* LDAPMAP */ +#endif #if MILTER # define ST_MILTER 14 /* milter filter */ -#endif /* MILTER */ +#endif #define ST_QUEUE 15 /* a queue entry */ #if SOCKETMAP -# define ST_SOCKETMAP 16 /* List head of maps for SOCKET connection */ -#endif /* SOCKETMAP */ +# define ST_SOCKETMAP 16 /* List head of maps for SOCKET connection */ +#endif + +#if DANE +# define ST_TLSA_RR 17 /* cached TLSA RRs */ +#endif /* This entry must be last */ -#define ST_MCI 17 /* mailer connection info (offset) */ +#define ST_MCI 18 /* mailer connection info (offset) */ #define s_class s_value.sv_class #define s_mailer s_value.sv_mailer @@ -1598,14 +1701,17 @@ typedef struct symtab STAB; #define s_header s_value.sv_header #if LDAPMAP # define s_lmap s_value.sv_lmap -#endif /* LDAPMAP */ +#endif #if SOCKETMAP -# define s_socketmap s_value.sv_socketmap -#endif /* SOCKETMAP */ +# define s_socketmap s_value.sv_socketmap +#endif #if MILTER # define s_milter s_value.sv_milter -#endif /* MILTER */ +#endif #define s_quegrp s_value.sv_queue +#if DANE +# define s_tlsa s_value.sv_tlsa +#endif /* opcodes to stab */ #define ST_FIND 0 /* find entry */ @@ -1672,20 +1778,20 @@ EXTERN bool V6LoopbackAddrFound; /* found an IPv6 loopback address */ #if _FFR_PROXY #define SM_PROXY_REQ 's' /* synchronous mode requested */ #define SM_PROXY 'S' /* synchronous mode activated */ -#endif /* _FFR_PROXY */ +#endif #define SM_FORK 'b' /* deliver in background */ #if _FFR_DM_ONE #define SM_DM_ONE 'o' /* deliver first TA in background, then queue */ -#endif /* _FFR_DM_ONE */ +#endif #define SM_QUEUE 'q' /* queue, don't deliver */ #define SM_DEFER 'd' /* defer map lookups as well as queue */ #define SM_VERIFY 'v' /* verify only (used internally) */ #define DM_NOTSET (-1) /* DeliveryMode (per daemon) option not set */ #if _FFR_PROXY # define SM_IS_INTERACTIVE(m) ((m) == SM_DELIVER || (m) == SM_PROXY_REQ || (m) == SM_PROXY) -#else /* _FFR_PROXY */ +#else # define SM_IS_INTERACTIVE(m) ((m) == SM_DELIVER) -#endif /* _FFR_PROXY */ +#endif #define WILL_BE_QUEUED(m) ((m) == SM_QUEUE || (m) == SM_DEFER) @@ -1839,16 +1945,16 @@ struct milter char mf_lflags; /* "local" flags */ int mf_idx; /* milter number (index) */ time_t mf_timeout[SMFTO_NUM_TO]; /* timeouts */ -#if _FFR_MILTER_CHECK +# if _FFR_MILTER_CHECK /* for testing only */ mi_int32 mf_mta_prot_version; mi_int32 mf_mta_prot_flags; mi_int32 mf_mta_actions; -#endif /* _FFR_MILTER_CHECK */ +# endif /* _FFR_MILTER_CHECK */ }; -#define MI_LFL_NONE 0x00000000 -#define MI_LFLAGS_SYM(st) (1 << (st)) /* has its own symlist for stage st */ +# define MI_LFL_NONE 0x00000000 +# define MI_LFLAGS_SYM(st) (1 << (st)) /* has its own symlist for stage st */ struct milters { @@ -1856,9 +1962,9 @@ struct milters }; typedef struct milters milters_T; -#define MIS_FL_NONE 0x00000000 /* no requirements... */ -#define MIS_FL_DEL_RCPT 0x00000001 /* can delete rcpt */ -#define MIS_FL_REJ_RCPT 0x00000002 /* can reject rcpt */ +# define MIS_FL_NONE 0x00000000 /* no requirements... */ +# define MIS_FL_DEL_RCPT 0x00000001 /* can delete rcpt */ +# define MIS_FL_REJ_RCPT 0x00000002 /* can reject rcpt */ /* MTA flags */ @@ -1885,8 +1991,9 @@ extern void setup_daemon_milters __P((void)); ** -DVENDOR_DEFAULT=VENDOR_xxx ** in the Makefile. ** -** Vendors should apply to sendmail@sendmail.org for -** unique vendor codes. +** Vendors should apply to sendmail-YYYY@support.sendmail.org +** (replace YYYY with the current year) +** for unique vendor codes. */ #define VENDOR_BERKELEY 1 /* Berkeley-native configuration file */ @@ -1928,6 +2035,9 @@ struct termescape #define D_CANONREQ 'c' /* canonification required (cf) */ #define D_IFNHELO 'h' /* use if name for HELO */ #define D_FQMAIL 'f' /* fq sender address required (cf) */ +#if _FFR_EAI +#define D_EAI 'I' /* EAI supported */ +#endif #define D_FQRCPT 'r' /* fq recipient address required (cf) */ #define D_SMTPS 's' /* SMTP over SSL (smtps) */ #define D_UNQUALOK 'u' /* unqualified address is ok (cf) */ @@ -1942,88 +2052,8 @@ struct termescape #if _FFR_XCNCT #define D_XCNCT ((char)0x04) /* X-Connect was used */ #define D_XCNCT_M ((char)0x05) /* X-Connect was used + "forged" */ -#endif /* _FFR_XCNCT */ +#endif -#if STARTTLS -/* -** TLS -*/ - -/* what to do in the TLS initialization */ -#define TLS_I_NONE 0x00000000 /* no requirements... */ -#define TLS_I_CERT_EX 0x00000001 /* cert must exist */ -#define TLS_I_CERT_UNR 0x00000002 /* cert must be g/o unreadable */ -#define TLS_I_KEY_EX 0x00000004 /* key must exist */ -#define TLS_I_KEY_UNR 0x00000008 /* key must be g/o unreadable */ -#define TLS_I_CERTP_EX 0x00000010 /* CA cert path must exist */ -#define TLS_I_CERTP_UNR 0x00000020 /* CA cert path must be g/o unreadable */ -#define TLS_I_CERTF_EX 0x00000040 /* CA cert file must exist */ -#define TLS_I_CERTF_UNR 0x00000080 /* CA cert file must be g/o unreadable */ -#define TLS_I_RSA_TMP 0x00000100 /* RSA TMP must be generated */ -#define TLS_I_USE_KEY 0x00000200 /* private key must usable */ -#define TLS_I_USE_CERT 0x00000400 /* certificate must be usable */ -#define TLS_I_VRFY_PATH 0x00000800 /* load verify path must succeed */ -#define TLS_I_VRFY_LOC 0x00001000 /* load verify default must succeed */ -#define TLS_I_CACHE 0x00002000 /* require cache */ -#define TLS_I_TRY_DH 0x00004000 /* try DH certificate */ -#define TLS_I_REQ_DH 0x00008000 /* require DH certificate */ -#define TLS_I_DHPAR_EX 0x00010000 /* require DH parameters */ -#define TLS_I_DHPAR_UNR 0x00020000 /* DH param. must be g/o unreadable */ -#define TLS_I_DH512 0x00040000 /* generate 512bit DH param */ -#define TLS_I_DH1024 0x00080000 /* generate 1024bit DH param */ -#define TLS_I_DH2048 0x00100000 /* generate 2048bit DH param */ -#define TLS_I_NO_VRFY 0x00200000 /* do not require authentication */ -#define TLS_I_KEY_OUNR 0x00400000 /* Key must be other unreadable */ -#define TLS_I_CRLF_EX 0x00800000 /* CRL file must exist */ -#define TLS_I_CRLF_UNR 0x01000000 /* CRL file must be g/o unreadable */ -#define TLS_I_DHFIXED 0x02000000 /* use fixed DH param */ - -/* require server cert */ -#define TLS_I_SRV_CERT (TLS_I_CERT_EX | TLS_I_KEY_EX | \ - TLS_I_KEY_UNR | TLS_I_KEY_OUNR | \ - TLS_I_CERTP_EX | TLS_I_CERTF_EX | \ - TLS_I_USE_KEY | TLS_I_USE_CERT | TLS_I_CACHE) - -/* server requirements */ -#define TLS_I_SRV (TLS_I_SRV_CERT | TLS_I_RSA_TMP | TLS_I_VRFY_PATH | \ - TLS_I_VRFY_LOC | TLS_I_TRY_DH | TLS_I_CACHE) - -/* client requirements */ -#define TLS_I_CLT (TLS_I_KEY_UNR | TLS_I_KEY_OUNR) - -#define TLS_AUTH_OK 0 -#define TLS_AUTH_NO 1 -#define TLS_AUTH_FAIL (-1) - -/* functions */ -extern bool init_tls_library __P((bool _fipsmode)); -extern bool inittls __P((SSL_CTX **, unsigned long, unsigned long, bool, char *, char *, char *, char *, char *)); -extern bool initclttls __P((bool)); -extern void setclttls __P((bool)); -extern bool initsrvtls __P((bool)); -extern int tls_get_info __P((SSL *, bool, char *, MACROS_T *, bool)); -extern int endtls __P((SSL *, char *)); -extern void tlslogerr __P((int, const char *)); - - -EXTERN char *CACertPath; /* path to CA certificates (dir. with hashes) */ -EXTERN char *CACertFile; /* file with CA certificate */ -EXTERN char *CltCertFile; /* file with client certificate */ -EXTERN char *CltKeyFile; /* file with client private key */ -EXTERN char *CipherList; /* list of ciphers */ -EXTERN char *CertFingerprintAlgorithm; /* name of fingerprint alg */ -EXTERN const EVP_MD *EVP_digest; /* digest for cert fp */ -EXTERN char *DHParams; /* file with DH parameters */ -EXTERN char *RandFile; /* source of random data */ -EXTERN char *SrvCertFile; /* file with server certificate */ -EXTERN char *SrvKeyFile; /* file with server private key */ -EXTERN char *CRLFile; /* file CRLs */ -#if _FFR_CRLPATH -EXTERN char *CRLPath; /* path to CRLs (dir. with hashes) */ -#endif /* _FFR_CRLPATH */ -EXTERN unsigned long TLS_Srv_Opts; /* TLS server options */ -EXTERN unsigned long Srv_SSL_Options, Clt_SSL_Options; /* SSL options */ -#endif /* STARTTLS */ /* ** Queue related items @@ -2050,7 +2080,7 @@ EXTERN unsigned long Srv_SSL_Options, Clt_SSL_Options; /* SSL options */ #define QSO_NONE 6 /* do not sort */ #if _FFR_RHS # define QSO_BYSHUFFLE 7 /* sort by shuffled host name */ -#endif /* _FFR_RHS */ +#endif #define NOQGRP (-1) /* no queue group (yet) */ #define ENVQGRP (-2) /* use queue group of envelope */ @@ -2140,9 +2170,9 @@ extern int print_single_queue __P((int, int)); #if REQUIRES_DIR_FSYNC # define SYNC_DIR(path, panic) sync_dir(path, panic) extern void sync_dir __P((char *, bool)); -#else /* REQUIRES_DIR_FSYNC */ +#else # define SYNC_DIR(path, panic) ((void) 0) -#endif /* REQUIRES_DIR_FSYNC */ +#endif /* ** Timeouts @@ -2174,10 +2204,10 @@ EXTERN struct time_t to_lhlo; /* LMTP: LHLO command */ #if SASL time_t to_auth; /* AUTH dialogue [10m] */ -#endif /* SASL */ +#endif #if STARTTLS time_t to_starttls; /* STARTTLS dialogue [10m] */ -#endif /* STARTTLS */ +#endif /* following are per message */ time_t to_q_return[MAXTOCLASS]; /* queue return timeouts */ time_t to_q_warning[MAXTOCLASS]; /* queue warning timeouts */ @@ -2249,17 +2279,6 @@ extern unsigned char tTdvect[100]; /* trace vector */ #define STRUCTCOPY(s, d) d = s -/* free a pointer if it isn't NULL and set it to NULL */ -#define SM_FREE_CLR(p) \ - do \ - { \ - if ((p) != NULL) \ - { \ - sm_free(p); \ - (p) = NULL; \ - } \ - } while (0) - /* ** Update a permanent string variable with a new value. ** The old value is freed, the new value is strdup'ed. @@ -2272,12 +2291,6 @@ extern unsigned char tTdvect[100]; /* trace vector */ ** If an exception occurs while strdup'ing the new value, ** then the variable remains set to the old value. ** That's why the strdup must occur before we free the old value. -** -** The macro uses a do loop so that this idiom will work: -** if (...) -** PSTRSET(var, val1); -** else -** PSTRSET(var, val2); */ #define PSTRSET(var, val) \ do \ @@ -2336,16 +2349,16 @@ EXTERN bool AddBcc; #endif #if _FFR_ADDR_TYPE_MODES EXTERN bool AddrTypeModes; /* addr_type: extra "mode" information */ -#endif /* _FFR_ADDR_TYPE_MODES */ +#endif EXTERN bool AllowBogusHELO; /* allow syntax errors on HELO command */ EXTERN bool CheckAliases; /* parse addresses during newaliases */ #if _FFR_QUEUE_RUN_PARANOIA EXTERN int CheckQueueRunners; /* check whether queue runners are OK */ -#endif /* _FFR_QUEUE_RUN_PARANOIA */ +#endif EXTERN bool ColonOkInAddr; /* single colon legal in address */ #if !defined(_USE_SUN_NSSWITCH_) && !defined(_USE_DEC_SVC_CONF_) EXTERN bool ConfigFileRead; /* configuration file has been read */ -#endif /* !defined(_USE_SUN_NSSWITCH_) && !defined(_USE_DEC_SVC_CONF_) */ +#endif EXTERN bool DisConnected; /* running with OutChannel redirect to transcript file */ EXTERN bool DontExpandCnames; /* do not $[...$] expand CNAMEs */ EXTERN bool DontInitGroups; /* avoid initgroups() because of NIS cost */ @@ -2355,12 +2368,21 @@ EXTERN bool ForkQueueRuns; /* fork for each job when running the queue */ EXTERN bool FromFlag; /* if set, "From" person is explicit */ EXTERN bool FipsMode; EXTERN bool GrabTo; /* if set, get recipients from msg */ +#if _FFR_EIGHT_BIT_ADDR_OK EXTERN bool EightBitAddrOK; /* we'll let 8-bit addresses through */ +#else +# define EightBitAddrOK false +#endif EXTERN bool HasEightBits; /* has at least one eight bit input byte */ EXTERN bool HasWildcardMX; /* don't use MX records when canonifying */ EXTERN bool HoldErrs; /* only output errors to transcript */ EXTERN bool IgnoreHostStatus; /* ignore long term host status files */ EXTERN bool IgnrDot; /* don't let dot end messages */ +#if _FFR_KEEPBCC +EXTERN bool KeepBcc; +#else +# define KeepBcc false +#endif EXTERN bool LogUsrErrs; /* syslog user errors (e.g., SMTP RCPT cmd) */ EXTERN bool MatchGecos; /* look for user names in gecos field */ EXTERN bool MeToo; /* send to the sender also */ @@ -2370,10 +2392,10 @@ EXTERN bool OnlyOneError; /* .... or only want to give one SMTP reply */ EXTERN bool QuickAbort; /* .... but only if we want a quick abort */ #if _FFR_REJECT_NUL_BYTE EXTERN bool RejectNUL; /* reject NUL input byte? */ -#endif /* _FFR_REJECT_NUL_BYTE */ +#endif #if REQUIRES_DIR_FSYNC EXTERN bool RequiresDirfsync; /* requires fsync() for directory */ -#endif /* REQUIRES_DIR_FSYNC */ +#endif EXTERN bool volatile RestartWorkGroup; /* daemon needs to restart some work groups */ EXTERN bool RrtImpliesDsn; /* turn Return-Receipt-To: into DSN */ EXTERN bool SaveFrom; /* save leading "From" lines */ @@ -2396,18 +2418,24 @@ EXTERN char SpaceSub; /* substitution for */ #if _FFR_BADRCPT_SHUTDOWN EXTERN int BadRcptShutdown; /* Shutdown connection for rejected RCPTs */ EXTERN int BadRcptShutdownGood; /* above even when there are good RCPTs */ -#endif /* _FFR_BADRCPT_SHUTDOWN */ +#endif EXTERN int BadRcptThrottle; /* Throttle rejected RCPTs per SMTP message */ #if _FFR_RCPTTHROTDELAY EXTERN unsigned int BadRcptThrottleDelay; /* delay for BadRcptThrottle */ #else # define BadRcptThrottleDelay 1 -#endif /* _FFR_RCPTTHROTDELAY */ +#endif +#if _FFR_TLS_ALTNAMES +EXTERN bool SetCertAltnames; +#endif EXTERN int CheckpointInterval; /* queue file checkpoint interval */ EXTERN int ConfigLevel; /* config file level */ EXTERN int ConnRateThrottle; /* throttle for SMTP connection rate */ EXTERN int volatile CurChildren; /* current number of daemonic children */ EXTERN int CurrentLA; /* current load average */ +#if DANE +EXTERN int Dane; /* DANE */ +#endif EXTERN int DefaultNotify; /* default DSN notification flags */ EXTERN int DelayLA; /* load average to delay connections */ EXTERN int DontProbeInterfaces; /* don't probe interfaces for names */ @@ -2431,7 +2459,7 @@ EXTERN int MaxRcptPerMsg; /* max recipients per SMTP message */ EXTERN int MaxRuleRecursion; /* maximum depth of ruleset recursion */ #if _FFR_MSG_ACCEPT EXTERN char *MessageAccept; /* "Message accepted for delivery" reply text */ -#endif /* _FFR_MSG_ACCEPT */ +#endif EXTERN int MimeMode; /* MIME processing mode */ EXTERN int NoRecipientAction; @@ -2440,9 +2468,9 @@ EXTERN int NoRecipientAction; EXTERN int Numfilesys; /* number of queue file systems */ EXTERN int *PNumFileSys; # define NumFileSys (*PNumFileSys) -# else /* SM_CONF_SHM */ +#else /* SM_CONF_SHM */ EXTERN int NumFileSys; /* number of queue file systems */ -# endif /* SM_CONF_SHM */ +#endif /* SM_CONF_SHM */ EXTERN int QueueLA; /* load average starting forced queueing */ EXTERN int RefuseLA; /* load average refusing connections */ @@ -2462,7 +2490,7 @@ EXTERN gid_t EffGid; /* effective gid */ #if SM_CONF_SHM EXTERN key_t ShmKey; /* shared memory key */ EXTERN char *ShmKeyFile; /* shared memory key file */ -#endif /* SM_CONF_SHM */ +#endif EXTERN pid_t CurrentPid; /* current process id */ EXTERN pid_t DaemonPid; /* process id of daemon */ EXTERN pid_t PidFilePid; /* daemon/queue runner who wrote pid file */ @@ -2528,7 +2556,7 @@ EXTERN SM_FILE_T *OutChannel; /* output connection */ EXTERN SM_FILE_T *TrafficLogFile; /* file in which to log all traffic */ #if HESIOD EXTERN void *HesiodContext; -#endif /* HESIOD */ +#endif EXTERN ENVELOPE *CurEnv; /* envelope currently being processed */ EXTERN char *RuleSetNames[MAXRWSETS]; /* ruleset number to name */ EXTERN char *UserEnviron[MAXUSERENVIRON + 1]; @@ -2538,11 +2566,15 @@ EXTERN SOCKADDR ConnectOnlyTo; /* override connection address (for testing) */ EXTERN SOCKADDR RealHostAddr; /* address of host we are talking to */ extern const SM_EXC_TYPE_T EtypeQuickAbort; /* type of a QuickAbort exception */ +#if _FFR_BLANKENV_MACV +EXTERN int Hacks; /* bit field of run-time enabled "hacks" */ +# define H_LOOKUP_MACRO_IN_BLANKENV 0x0001 +# define LOOKUP_MACRO_IN_BLANKENV (Hacks & H_LOOKUP_MACRO_IN_BLANKENV) +#else +# define LOOKUP_MACRO_IN_BLANKENV false +#endif EXTERN int ConnectionRateWindowSize; -#if STARTTLS && USE_OPENSSL_ENGINE -EXTERN bool SSLEngineInitialized; -#endif /* STARTTLS && USE_OPENSSL_ENGINE */ /* ** Declarations of useful functions @@ -2552,18 +2584,24 @@ EXTERN bool SSLEngineInitialized; extern void closexscript __P((ENVELOPE *)); extern void openxscript __P((ENVELOPE *)); +#if SM_DEVELOPER +#define NR_PRINTFLIKE(a, b) PRINTFLIKE(a, b) +#else +#define NR_PRINTFLIKE(a, b) +#endif + /* error related */ extern void buffer_errors __P((void)); extern void flush_errors __P((bool)); -extern void PRINTFLIKE(1, 2) message __P((const char *, ...)); -extern void PRINTFLIKE(1, 2) nmessage __P((const char *, ...)); +extern void NR_PRINTFLIKE(1, 2) message __P((const char *, ...)); +extern void NR_PRINTFLIKE(1, 2) nmessage __P((const char *, ...)); #if _FFR_PROXY -extern void PRINTFLIKE(3, 4) emessage __P((const char *, const char *, const char *, ...)); +extern void NR_PRINTFLIKE(3, 4) emessage __P((const char *, const char *, const char *, ...)); extern int extsc __P((const char *, int, char *, char *)); -#endif /* _FFR_PROXY */ -extern void PRINTFLIKE(1, 2) syserr __P((const char *, ...)); -extern void PRINTFLIKE(2, 3) usrerrenh __P((char *, const char *, ...)); -extern void PRINTFLIKE(1, 2) usrerr __P((const char *, ...)); +#endif +extern void NR_PRINTFLIKE(1, 2) syserr __P((const char *, ...)); +extern void NR_PRINTFLIKE(2, 3) usrerrenh __P((char *, const char *, ...)); +extern void NR_PRINTFLIKE(1, 2) usrerr __P((const char *, ...)); extern int isenhsc __P((const char *, int)); extern int extenhsc __P((const char *, int, char *)); @@ -2586,7 +2624,7 @@ extern int reply __P((MAILER *, MCI *, ENVELOPE *, time_t, void (*)__P((char *, extern void smtp __P((char *volatile, BITMAP256, ENVELOPE *volatile)); #if SASL extern int smtpauth __P((MAILER *, MCI *, ENVELOPE *)); -#endif /* SASL */ +#endif extern int smtpdata __P((MAILER *, MCI *, ENVELOPE *, ADDRESS *, time_t)); extern int smtpgetstat __P((MAILER *, MCI *, ENVELOPE *)); extern int smtpmailfrom __P((MAILER *, MCI *, ENVELOPE *)); @@ -2602,10 +2640,11 @@ extern void smtprset __P((MAILER *, MCI *, ENVELOPE *)); #define REPLYCLASS(r) (((r) / 10) % 10) /* second digit of reply code */ #define REPLYMINOR(r) ((r) % 10) /* last digit of reply code */ #define ISSMTPCODE(c) (isascii(c[0]) && isdigit(c[0]) && \ - isascii(c[1]) && isdigit(c[1]) && \ - isascii(c[2]) && isdigit(c[2])) + isascii(c[1]) && isdigit(c[1]) && \ + isascii(c[2]) && isdigit(c[2])) #define ISSMTPREPLY(c) (ISSMTPCODE(c) && \ - (c[3] == ' ' || c[3] == '-' || c[3] == '\0')) + (c[3] == ' ' || c[3] == '-' || c[3] == '\0')) +#define SM_ISSPACE(c) (isascii(c) && isspace(c)) /* delivery */ extern pid_t dowork __P((int, int, char *, bool, bool, ENVELOPE *)); @@ -2625,8 +2664,8 @@ extern void clearstats __P((void)); extern void poststats __P((char *)); /* control socket */ -extern void closecontrolsocket __P((bool)); -extern void clrcontrol __P((void)); +extern void closecontrolsocket __P((bool)); +extern void clrcontrol __P((void)); extern void control_command __P((int, ENVELOPE *)); extern int opencontrolsocket __P((void)); @@ -2663,17 +2702,16 @@ extern int checkcompat __P((ADDRESS *, ENVELOPE *)); #ifdef XDEBUG extern void checkfd012 __P((char *)); extern void checkfdopen __P((int, char *)); -#endif /* XDEBUG */ +#endif extern void checkfds __P((char *)); extern bool chownsafe __P((int, bool)); extern void cleanstrcpy __P((char *, char *, int)); #if SM_CONF_SHM extern void cleanup_shm __P((bool)); -#endif /* SM_CONF_SHM */ +#endif extern void close_sendmail_pid __P((void)); extern void clrdaemon __P((void)); extern void collect __P((SM_FILE_T *, bool, HDR **, ENVELOPE *, bool)); -extern bool connection_rate_check __P((SOCKADDR *, ENVELOPE *)); extern time_t convtime __P((char *, int)); extern char **copyplist __P((char **, bool, SM_RPOOL_T *)); extern void copy_class __P((int, int)); @@ -2684,14 +2722,14 @@ extern char *denlstring __P((char *, bool, bool)); extern void dferror __P((SM_FILE_T *volatile, char *, ENVELOPE *)); extern void disconnect __P((int, ENVELOPE *)); extern void disk_status __P((SM_FILE_T *, char *)); -extern bool dns_getcanonname __P((char *, int, bool, int *, int *)); +extern int dns_getcanonname __P((char *, int, bool, int *, int *)); extern pid_t dofork __P((void)); extern int drop_privileges __P((bool)); extern int dsntoexitstat __P((char *)); extern void dumpfd __P((int, bool, bool)); #if SM_HEAP_CHECK extern void dumpstab __P((void)); -#endif /* SM_HEAP_CHECK */ +#endif extern void dumpstate __P((char *)); extern bool enoughdiskspace __P((long, ENVELOPE *)); extern char *exitstat __P((char *)); @@ -2705,7 +2743,7 @@ extern void fixcrlf __P((char *, bool)); extern long freediskspace __P((const char *, long *)); #if NETINET6 && NEEDSGETIPNODE extern void freehostent __P((struct hostent *)); -#endif /* NETINET6 && NEEDSGETIPNODE */ +#endif extern char *get_column __P((char *, int, int, char *, int)); extern char *getauthinfo __P((int, bool *)); extern int getdtsize __P((void)); @@ -2713,14 +2751,6 @@ extern int getla __P((void)); extern char *getmodifiers __P((char *, BITMAP256)); extern BITMAP256 *getrequests __P((ENVELOPE *)); extern char *getvendor __P((int)); -#if _FFR_TLS_SE_OPTS && STARTTLS -# ifndef TLS_VRFY_PER_CTX -# define TLS_VRFY_PER_CTX 1 -# endif -extern int get_tls_se_options __P((ENVELOPE *, SSL *, bool)); -#else -# define get_tls_se_options(e, s, w) 0 -#endif extern void help __P((char *, ENVELOPE *)); extern void init_md __P((int, char **)); extern void initdaemon __P((void)); @@ -2731,9 +2761,6 @@ extern void init_vendor_macros __P((ENVELOPE *)); extern SIGFUNC_DECL intsig __P((int)); extern bool isatom __P((const char *)); extern bool isloopback __P((SOCKADDR sa)); -#if _FFR_TLS_SE_OPTS && STARTTLS -extern bool load_certkey __P((SSL *, bool, char *, char *)); -#endif extern void load_if_names __P((void)); extern bool lockfile __P((int, char *, char *, int)); extern void log_sendmail_pid __P((ENVELOPE *)); @@ -2741,7 +2768,11 @@ extern void logundelrcpts __P((ENVELOPE *, char *, int, bool)); extern char lower __P((int)); extern void makelower __P((char *)); extern int makeconnection_ds __P((char *, MCI *)); +#if DANE +extern int makeconnection __P((char *, volatile unsigned int, MCI *, ENVELOPE *, time_t, unsigned long *)); +#else extern int makeconnection __P((char *, volatile unsigned int, MCI *, ENVELOPE *, time_t)); +#endif extern void makeworkgroups __P((void)); extern void markfailure __P((ENVELOPE *, ADDRESS *, MCI *, int, bool)); extern void mark_work_group_restart __P((int, int)); @@ -2751,7 +2782,7 @@ extern struct hostent *myhostname __P((char *, int)); extern char *newstr __P((const char *)); #if NISPLUS extern char *nisplus_default_domain __P((void)); /* extern for Sun */ -#endif /* NISPLUS */ +#endif extern bool path_is_dir __P((char *, bool)); extern int pickqdir __P((QUEUEGRP *qg, long fsize, ENVELOPE *e)); extern char *pintvl __P((time_t, bool)); @@ -2813,7 +2844,7 @@ extern bool strcontainedin __P((bool, char *, char *)); extern int switch_map_find __P((char *, char *[], short [])); #if STARTTLS extern void tls_set_verify __P((SSL_CTX *, SSL *, bool)); -#endif /* STARTTLS */ +#endif extern bool transienterror __P((int)); extern void truncate_at_delim __P((char *, size_t, int)); extern void tTflag __P((char *)); @@ -2823,7 +2854,7 @@ extern char *ttypath __P((void)); extern void unlockqueue __P((ENVELOPE *)); #if !HASUNSETENV extern void unsetenv __P((char *)); -#endif /* !HASUNSETENV */ +#endif /* update file system information: +/- some blocks */ #if SM_CONF_SHM @@ -2843,18 +2874,22 @@ extern bool writable __P((char *, ADDRESS *, long)); #if SM_HEAP_CHECK # define xalloc(size) xalloc_tagged(size, __FILE__, __LINE__) extern char *xalloc_tagged __P((int, char *, int)); -#else /* SM_HEAP_CHECK */ +#else extern char *xalloc __P((int)); #endif /* SM_HEAP_CHECK */ #if _FFR_XCNCT extern int xconnect __P((SM_FILE_T *)); -#endif /* _FFR_XCNCT */ +#endif extern void xputs __P((SM_FILE_T *, const char *)); extern char *xtextify __P((char *, char *)); extern bool xtextok __P((char *)); extern int xunlink __P((char *)); extern char *xuntextify __P((char *)); +#if _FFR_EAI +extern bool addr_is_ascii __P((const char *)); +#endif + #if _FFR_RCPTFLAGS extern bool newmodmailer __P((ADDRESS *, int)); #endif diff --git a/src/sfsasl.c b/src/sfsasl.c index 5209dfa1c3b2..3335608e450c 100644 --- a/src/sfsasl.c +++ b/src/sfsasl.c @@ -19,7 +19,7 @@ SM_RCSID("@(#)$Id: sfsasl.c,v 8.121 2013-11-22 20:51:56 ca Exp $") /* allow to disable error handling code just in case... */ #ifndef DEAL_WITH_ERROR_SSL # define DEAL_WITH_ERROR_SSL 1 -#endif /* ! DEAL_WITH_ERROR_SSL */ +#endif #if SASL # include "sfsasl.h" @@ -66,7 +66,7 @@ sasl_getinfo(fp, what, valp) case SM_IO_WHAT_FD: if (so->fp == NULL) return -1; - return so->fp->f_file; /* for stdio fileno() compatability */ + return so->fp->f_file; /* for stdio fileno() compatibility */ case SM_IO_IS_READABLE: if (so->fp == NULL) @@ -193,9 +193,9 @@ sasl_read(fp, buf, size) ssize_t len; # if SASL >= 20000 static const char *outbuf = NULL; -# else /* SASL >= 20000 */ +# else static char *outbuf = NULL; -# endif /* SASL >= 20000 */ +# endif static unsigned int outlen = 0; static unsigned int offset = 0; struct sasl_obj *so = (struct sasl_obj *) fp->f_cookie; @@ -214,9 +214,9 @@ sasl_read(fp, buf, size) # if SASL >= 20000 while (outlen == 0) -# else /* SASL >= 20000 */ +# else while (outbuf == NULL && outlen == 0) -# endif /* SASL >= 20000 */ +# endif { len = sm_io_read(so->fp, SM_TIME_DEFAULT, buf, size); if (len <= 0) @@ -255,7 +255,7 @@ sasl_read(fp, buf, size) (void) memcpy(buf, outbuf + offset, (size_t) len); # if SASL < 20000 SASL_DEALLOC(outbuf); -# endif /* SASL < 20000 */ +# endif outbuf = NULL; offset = 0; outlen = 0; @@ -287,9 +287,9 @@ sasl_write(fp, buf, size) int result; # if SASL >= 20000 const char *outbuf; -# else /* SASL >= 20000 */ +# else char *outbuf; -# endif /* SASL >= 20000 */ +# endif unsigned int outlen, *maxencode; size_t ret = 0, total = 0; struct sasl_obj *so = (struct sasl_obj *) fp->f_cookie; @@ -299,7 +299,7 @@ sasl_write(fp, buf, size) ** This can be less than the size set in attemptauth() ** due to a negotiation with the other side, e.g., ** Cyrus IMAP lmtp program sets maxbuf=4096, - ** digestmd5 substracts 25 and hence we'll get 4071 + ** digestmd5 subtracts 25 and hence we'll get 4071 ** instead of 8192 (MAXOUTLEN). ** Hack (for now): simply reduce the size, callers are (must be) ** able to deal with that and invoke sasl_write() again with @@ -339,7 +339,7 @@ sasl_write(fp, buf, size) } # if SASL < 20000 SASL_DEALLOC(outbuf); -# endif /* SASL < 20000 */ +# endif } return size; } @@ -416,6 +416,7 @@ sfdcsasl(fin, fout, conn, tmo) #if STARTTLS # include "sfsasl.h" +# include # include /* Structure used by the "tls" file type */ @@ -461,7 +462,7 @@ tls_getinfo(fp, what, valp) case SM_IO_WHAT_FD: if (so->fp == NULL) return -1; - return so->fp->f_file; /* for stdio fileno() compatability */ + return so->fp->f_file; /* for stdio fileno() compatibility */ case SM_IO_IS_READABLE: return SSL_pending(so->con) > 0; @@ -627,8 +628,7 @@ tls_retry(ssl, rfd, wfd, tlsstart, timeout, err, where) sm_syslog(LOG_ERR, NOQID, "STARTTLS=%s, error: fd %d/%d too large", where, rfd, wfd); - if (LogLevel > 8) - tlslogerr(LOG_WARNING, where); + tlslogerr(LOG_WARNING, 8, where); } errno = EINVAL; } @@ -674,9 +674,9 @@ tls_retry(ssl, rfd, wfd, tlsstart, timeout, err, where) /* errno to force refill() etc to stop (see IS_IO_ERROR()) */ #ifdef ETIMEDOUT # define SM_ERR_TIMEOUT ETIMEDOUT -#else /* ETIMEDOUT */ +#else # define SM_ERR_TIMEOUT EIO -#endif /* ETIMEDOUT */ +#endif /* ** SET_TLS_RD_TMO -- read secured information for the caller @@ -768,15 +768,12 @@ tls_read(fp, buf, size) if (r == 0 && errno == 0) /* out of protocol EOF found */ break; err = "syscall error"; -/* - get_last_socket_error()); -*/ break; case SSL_ERROR_SSL: #if DEAL_WITH_ERROR_SSL if (r == 0 && errno == 0) /* out of protocol EOF found */ break; -#endif /* DEAL_WITH_ERROR_SSL */ +#endif err = "generic SSL error"; if (LogLevel > 9) @@ -787,14 +784,14 @@ tls_read(fp, buf, size) pri = LOG_DEBUG; else pri = LOG_WARNING; - tlslogerr(pri, "read"); + tlslogerr(pri, 9, "read"); } #if DEAL_WITH_ERROR_SSL /* avoid repeated calls? */ if (r == 0) r = -1; -#endif /* DEAL_WITH_ERROR_SSL */ +#endif break; } if (err != NULL) @@ -893,23 +890,19 @@ tls_write(fp, buf, size) if (r == 0 && errno == 0) /* out of protocol EOF found */ break; err = "syscall error"; -/* - get_last_socket_error()); -*/ break; case SSL_ERROR_SSL: err = "generic SSL error"; /* ERR_GET_REASON(ERR_peek_error())); */ - if (LogLevel > 9) - tlslogerr(LOG_WARNING, "write"); + tlslogerr(LOG_WARNING, 9, "write"); #if DEAL_WITH_ERROR_SSL /* avoid repeated calls? */ if (r == 0) r = -1; -#endif /* DEAL_WITH_ERROR_SSL */ +#endif break; } if (err != NULL) diff --git a/src/sfsasl.h b/src/sfsasl.h index a53ed9d69f38..51e59647b0b8 100644 --- a/src/sfsasl.h +++ b/src/sfsasl.h @@ -14,12 +14,12 @@ # if SASL extern int sfdcsasl __P((SM_FILE_T **, SM_FILE_T **, sasl_conn_t *, int)); -# endif /* SASL */ +# endif # if STARTTLS extern int tls_retry __P((SSL *, int, int, time_t, int, int, const char *)); extern int sfdctls __P((SM_FILE_T **, SM_FILE_T **, SSL *)); -# endif /* STARTTLS */ +# endif #endif /* ! SFSASL_H */ diff --git a/src/sm_resolve.c b/src/sm_resolve.c index 8ec2cb68e6bf..79e4168715a3 100644 --- a/src/sm_resolve.c +++ b/src/sm_resolve.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2004, 2010 Proofpoint, Inc. and its suppliers. + * Copyright (c) 2000-2004, 2010, 2015, 2020 Proofpoint, Inc. and its suppliers. * All rights reserved. * * By using this file, you agree to the terms and conditions set @@ -42,14 +42,17 @@ */ #include -#if DNSMAP +#if DNSMAP || DANE # if NAMED_BIND # if NETINET # include # include -# endif /* NETINET */ +# endif +# define _DEFINE_SMR_GLOBALS 1 # include "sm_resolve.h" +#include + SM_RCSID("$Id: sm_resolve.c,v 8.40 2013-11-22 20:51:56 ca Exp $") static struct stot @@ -60,10 +63,10 @@ static struct stot { # if NETINET { "A", T_A }, -# endif /* NETINET */ +# endif # if NETINET6 { "AAAA", T_AAAA }, -# endif /* NETINET6 */ +# endif { "NS", T_NS }, { "CNAME", T_CNAME }, { "PTR", T_PTR }, @@ -71,10 +74,24 @@ static struct stot { "TXT", T_TXT }, { "AFSDB", T_AFSDB }, { "SRV", T_SRV }, +# ifdef T_DS + { "DS", T_DS }, +# endif + { "RRSIG", T_RRSIG }, +# ifdef T_NSEC + { "NSEC", T_NSEC }, +# endif +# ifdef T_DNSKEY + { "DNSKEY", T_DNSKEY }, +# endif + { "TLSA", T_TLSA }, { NULL, 0 } }; -static DNS_REPLY_T *parse_dns_reply __P((unsigned char *, int)); +static DNS_REPLY_T *parse_dns_reply __P((unsigned char *, int, unsigned int)); +# if DNSSEC_TEST && defined(T_TLSA) +static char *hex2bin __P((const char *, int)); +# endif /* ** DNS_STRING_TO_TYPE -- convert resource record name into type @@ -126,21 +143,23 @@ dns_type_to_string(type) ** DNS_FREE_DATA -- free all components of a DNS_REPLY_T ** ** Parameters: -** r -- pointer to DNS_REPLY_T +** dr -- pointer to DNS_REPLY_T ** ** Returns: ** none. */ void -dns_free_data(r) - DNS_REPLY_T *r; +dns_free_data(dr) + DNS_REPLY_T *dr; { RESOURCE_RECORD_T *rr; - if (r->dns_r_q.dns_q_domain != NULL) - sm_free(r->dns_r_q.dns_q_domain); - for (rr = r->dns_r_head; rr != NULL; ) + if (dr == NULL) + return; + if (dr->dns_r_q.dns_q_domain != NULL) + sm_free(dr->dns_r_q.dns_q_domain); + for (rr = dr->dns_r_head; rr != NULL; ) { RESOURCE_RECORD_T *tmp = rr; @@ -151,7 +170,59 @@ dns_free_data(r) rr = rr->rr_next; sm_free(tmp); } - sm_free(r); + sm_free(dr); +} + +/* +** BIN2HEX -- convert binary TLSA RR to hex string +** +** Parameters: +** tlsa -- pointer to result (allocated here) +** p -- binary data (TLSA RR) +** size -- length of p +** min_size -- minimum expected size +** +** Returns: +** >0: length of string (*tlsa) +** -1: error +*/ + +static int bin2hex __P((char **, unsigned char *, int, int)); + +static int +bin2hex(tlsa, p, size, min_size) + char **tlsa; + unsigned char *p; + int size; + int min_size; +{ + int i, pos, txtlen; + + txtlen = size * 3; + if (txtlen <= size || size < min_size) + { + if (LogLevel > 5) + sm_syslog(LOG_WARNING, NOQID, + "ERROR: bin2hex: size %d wrong", size); + return -1; + } + *tlsa = (char *) sm_malloc(txtlen); + if (*tlsa == NULL) + { + if (tTd(8, 17)) + sm_dprintf("len=%d, rr_data=NULL\n", txtlen); + return -1; + } + snprintf(*tlsa, txtlen, + "%02X %02X %02X", p[0], p[1], p[2]); + pos = strlen(*tlsa); + + /* why isn't there a print function like strlcat? */ + for (i = 3; i < size && pos < txtlen; i++, pos += 3) + snprintf(*tlsa + pos, txtlen - pos, "%c%02X", + (i == 3) ? ' ' : ':', p[i]); + + return i; } /* @@ -160,54 +231,72 @@ dns_free_data(r) ** Parameters: ** data -- pointer to dns data ** len -- len of data +** flags -- flags (RR_*) ** ** Returns: ** pointer to DNS_REPLY_T if succeeded. ** NULL otherwise. +** +** Note: +** use dns_free_data() to free() the result when no longer needed. */ static DNS_REPLY_T * -parse_dns_reply(data, len) +parse_dns_reply(data, len, flags) unsigned char *data; int len; + unsigned int flags; { unsigned char *p; unsigned short ans_cnt, ui; int status; size_t l; char host[MAXHOSTNAMELEN]; - DNS_REPLY_T *r; + DNS_REPLY_T *dr; RESOURCE_RECORD_T **rr; - r = (DNS_REPLY_T *) sm_malloc(sizeof(*r)); - if (r == NULL) + if (tTd(8, 90)) + { + FILE *fp; + + fp = fopen("dns.buffer", "w"); + if (fp != NULL) + { + fwrite(data, 1, len, fp); + fclose(fp); + fp = NULL; + } + else + sm_dprintf("parse_dns_reply: fp=%p, e=%d\n", + (void *)fp, errno); + } + + dr = (DNS_REPLY_T *) sm_malloc(sizeof(*dr)); + if (dr == NULL) return NULL; - memset(r, 0, sizeof(*r)); + memset(dr, 0, sizeof(*dr)); p = data; /* doesn't work on Crays? */ - memcpy(&r->dns_r_h, p, sizeof(r->dns_r_h)); - p += sizeof(r->dns_r_h); + memcpy(&dr->dns_r_h, p, sizeof(dr->dns_r_h)); + p += sizeof(dr->dns_r_h); status = dn_expand(data, data + len, p, host, sizeof(host)); if (status < 0) - { - dns_free_data(r); - return NULL; - } - r->dns_r_q.dns_q_domain = sm_strdup(host); - if (r->dns_r_q.dns_q_domain == NULL) - { - dns_free_data(r); - return NULL; - } + goto error; + dr->dns_r_q.dns_q_domain = sm_strdup(host); + if (dr->dns_r_q.dns_q_domain == NULL) + goto error; - ans_cnt = ntohs((unsigned short) r->dns_r_h.ancount); + ans_cnt = ntohs((unsigned short) dr->dns_r_h.ancount); + if (tTd(8, 17)) + sm_dprintf("parse_dns_reply: ac=%d, ad=%d\n", ans_cnt, + dr->dns_r_h.ad); p += status; - GETSHORT(r->dns_r_q.dns_q_type, p); - GETSHORT(r->dns_r_q.dns_q_class, p); - rr = &r->dns_r_head; + GETSHORT(dr->dns_r_q.dns_q_type, p); + GETSHORT(dr->dns_r_q.dns_q_class, p); + rr = &dr->dns_r_head; ui = 0; while (p < data + len && ui < ans_cnt) { @@ -215,10 +304,7 @@ parse_dns_reply(data, len) status = dn_expand(data, data + len, p, host, sizeof(host)); if (status < 0) - { - dns_free_data(r); - return NULL; - } + goto error; ++ui; p += status; GETSHORT(type, p); @@ -236,22 +322,15 @@ parse_dns_reply(data, len) sm_syslog(LOG_WARNING, NOQID, "ERROR: DNS RDLENGTH=%d > data len=%d", size, len - (int)(p - data)); - dns_free_data(r); - return NULL; + goto error; } *rr = (RESOURCE_RECORD_T *) sm_malloc(sizeof(**rr)); if (*rr == NULL) - { - dns_free_data(r); - return NULL; - } + goto error; memset(*rr, 0, sizeof(**rr)); (*rr)->rr_domain = sm_strdup(host); if ((*rr)->rr_domain == NULL) - { - dns_free_data(r); - return NULL; - } + goto error; (*rr)->rr_type = type; (*rr)->rr_class = class; (*rr)->rr_ttl = ttl; @@ -264,16 +343,13 @@ parse_dns_reply(data, len) status = dn_expand(data, data + len, p, host, sizeof(host)); if (status < 0) - { - dns_free_data(r); - return NULL; - } + goto error; + if (tTd(8, 50)) + sm_dprintf("parse_dns_reply: type=%s, host=%s\n", + dns_type_to_string(type), host); (*rr)->rr_u.rr_txt = sm_strdup(host); if ((*rr)->rr_u.rr_txt == NULL) - { - dns_free_data(r); - return NULL; - } + goto error; break; case T_MX: @@ -281,39 +357,30 @@ parse_dns_reply(data, len) status = dn_expand(data, data + len, p + 2, host, sizeof(host)); if (status < 0) - { - dns_free_data(r); - return NULL; - } + goto error; l = strlen(host) + 1; (*rr)->rr_u.rr_mx = (MX_RECORD_T *) sm_malloc(sizeof(*((*rr)->rr_u.rr_mx)) + l); if ((*rr)->rr_u.rr_mx == NULL) - { - dns_free_data(r); - return NULL; - } + goto error; (*rr)->rr_u.rr_mx->mx_r_preference = (p[0] << 8) | p[1]; (void) sm_strlcpy((*rr)->rr_u.rr_mx->mx_r_domain, host, l); + if (tTd(8, 50)) + sm_dprintf("mx=%s, pref=%d\n", host, + (*rr)->rr_u.rr_mx->mx_r_preference); break; case T_SRV: status = dn_expand(data, data + len, p + 6, host, sizeof(host)); if (status < 0) - { - dns_free_data(r); - return NULL; - } + goto error; l = strlen(host) + 1; (*rr)->rr_u.rr_srv = (SRV_RECORDT_T*) sm_malloc(sizeof(*((*rr)->rr_u.rr_srv)) + l); if ((*rr)->rr_u.rr_srv == NULL) - { - dns_free_data(r); - return NULL; - } + goto error; (*rr)->rr_u.rr_srv->srv_r_priority = (p[0] << 8) | p[1]; (*rr)->rr_u.rr_srv->srv_r_weight = (p[2] << 8) | p[3]; (*rr)->rr_u.rr_srv->srv_r_port = (p[4] << 8) | p[5]; @@ -340,38 +407,850 @@ parse_dns_reply(data, len) sm_syslog(LOG_WARNING, NOQID, "ERROR: DNS TXT record size=%d <= text len=%d", size, txtlen); - dns_free_data(r); - return NULL; + goto error; } (*rr)->rr_u.rr_txt = (char *) sm_malloc(txtlen + 1); if ((*rr)->rr_u.rr_txt == NULL) - { - dns_free_data(r); - return NULL; - } + goto error; (void) sm_strlcpy((*rr)->rr_u.rr_txt, (char*) p + 1, txtlen + 1); break; +# ifdef T_TLSA + case T_TLSA: + if (tTd(8, 61)) + sm_dprintf("parse_dns_reply: TLSA, size=%d, flags=%X\n", + size, flags); + if ((flags & RR_AS_TEXT) != 0) + { + txtlen = bin2hex((char **)&((*rr)->rr_u.rr_data), + p, size, 4); + if (txtlen <= 0) + goto error; + break; + } + /* FALLTHROUGH */ + /* return "raw" data for caller to use as it pleases */ +# endif /* T_TLSA */ + default: (*rr)->rr_u.rr_data = (unsigned char*) sm_malloc(size); if ((*rr)->rr_u.rr_data == NULL) - { - dns_free_data(r); - return NULL; - } + goto error; (void) memcpy((*rr)->rr_u.rr_data, p, size); + if (tTd(8, 61) && type == T_A) + { + SOCKADDR addr; + + (void) memcpy((void *)&addr.sin.sin_addr.s_addr, p, size); + sm_dprintf("parse_dns_reply: IPv4=%s\n", + inet_ntoa(addr.sin.sin_addr)); + } break; } p += size; rr = &(*rr)->rr_next; } *rr = NULL; - return r; + return dr; + + error: + dns_free_data(dr); + return NULL; +} + +# if DNSSEC_TEST + +#include + +static int gen_dns_reply __P((unsigned char *, int, unsigned char *, + const char *, int, const char *, int, int, int, int, + const char *, int, int, int)); +static int dnscrtrr __P((const char *, const char *, int, char *, int, + unsigned int, int *, int *, unsigned char *, int, unsigned char *)); + +/* +** HERRNO2TXT -- return error text for h_errno +** +** Parameters: +** e -- h_errno +** +** Returns: +** DNS error text if available +*/ + +const char * +herrno2txt(e) + int e; +{ + switch (e) + { + case NETDB_INTERNAL: + return "see errno"; + case NETDB_SUCCESS: + return "OK"; + case HOST_NOT_FOUND: + return "HOST_NOT_FOUND"; + case TRY_AGAIN: + return "TRY_AGAIN"; + case NO_RECOVERY: + return "NO_RECOVERY"; + case NO_DATA: + return "NO_DATA"; + } + return "bogus h_errno"; } /* -** DNS_LOOKUP_INT -- perform dns map lookup (internal helper routine) +** GEN_DNS_REPLY -- generate DNS reply data. +** +** Parameters: +** buf -- buffer to which DNS data is written +** buflen -- length of buffer +** bufpos -- position in buffer where DNS RRs are appended +** query -- name of query +** qtype -- resource record type of query +** domain -- name of domain which has been "found" +** class -- resource record class +** type -- resource record type +** ttl -- TTL +** size -- size of data +** data -- data +** txtlen -- length of text +** pref -- MX preference +** ad -- ad flag +** +** Returns: +** >0 length of buffer that has been used. +** <0 error +*/ + +static int +gen_dns_reply(buf, buflen, bufpos, query, qtype, domain, class, type, ttl, size, data, txtlen, pref, ad) + unsigned char *buf; + int buflen; + unsigned char *bufpos; + const char *query; + int qtype; + const char *domain; + int class; + int type; + int ttl; + int size; + const char *data; + int txtlen; + int pref; + int ad; +{ + unsigned short ans_cnt; + HEADER *hp; + unsigned char *cp, *ep; + int n; + static unsigned char *dnptrs[20], **dpp, **lastdnptr; + + SM_REQUIRE(NULL != buf); + SM_REQUIRE(buflen >= HFIXEDSZ); + SM_REQUIRE(query != NULL); + hp = (HEADER *) buf; + ep = buf + buflen; + cp = buf + HFIXEDSZ; + + if (bufpos != NULL) + cp = bufpos; + else + { + sm_dprintf("gen_dns_reply: query=%s, domain=%s, type=%s, size=%d, ad=%d\n", + query, domain, dns_type_to_string(type), size, ad); + dpp = dnptrs; + *dpp++ = buf; + *dpp++ = NULL; + lastdnptr = dnptrs + sizeof dnptrs / sizeof dnptrs[0]; + + memset(buf, 0, HFIXEDSZ); + hp->id = 0xdead; /* HACK */ + hp->qr = 1; + hp->opcode = QUERY; + hp->rd = 0; /* recursion desired? */ + hp->rcode = 0; /* !!! */ + /* hp->aa = ?; * !!! */ + /* hp->tc = ?; * !!! */ + /* hp->ra = ?; * !!! */ + hp->qdcount = htons(1); + hp->ancount = 0; + + n = dn_comp(query, cp, ep - cp - QFIXEDSZ, dnptrs, lastdnptr); + if (n < 0) + return n; + cp += n; + PUTSHORT(qtype, cp); + PUTSHORT(class, cp); + } + hp->ad = ad; + + if (ep - cp < QFIXEDSZ) + return (-1); + n = dn_comp(domain, cp, ep - cp - QFIXEDSZ, dnptrs, lastdnptr); + if (n < 0) + return n; + cp += n; + PUTSHORT(type, cp); + PUTSHORT(class, cp); + PUTLONG(ttl, cp); + + ans_cnt = ntohs((unsigned short) hp->ancount); + ++ans_cnt; + hp->ancount = htons((unsigned short) ans_cnt); + + switch (type) + { + case T_MX: + n = dn_comp(data, cp + 4, ep - cp - QFIXEDSZ, dnptrs, lastdnptr); + if (n < 0) + return n; + PUTSHORT(n + 2, cp); + PUTSHORT(pref, cp); + cp += n; + break; + + case T_TXT: + if (txtlen >= size) + return -1; + PUTSHORT(txtlen, cp); + (void) sm_strlcpy((char *)cp, data, txtlen + 1); + cp += txtlen; + break; + + case T_CNAME: + n = dn_comp(data, cp + 2, ep - cp - QFIXEDSZ, dnptrs, lastdnptr); + if (n < 0) + return n; + PUTSHORT(n, cp); + cp += n; + break; + +# if defined(T_TLSA) + case T_TLSA: + { + char *tlsa; + + tlsa = hex2bin(data, size); + if (tlsa == NULL) + return (-1); + n = size / 2; + PUTSHORT(n, cp); + (void) memcpy(cp, tlsa, n); + cp += n; + } + break; +# endif /* T_TLSA */ + + default: + PUTSHORT(size, cp); + (void) memcpy(cp, data, size); + cp += size; + break; + } + + return (cp - buf); +} + +/* +** SETHERRNOFROMSTRING -- set h_errno based on text +** +** Parameters: +** str -- string which might contain h_errno text +** prc -- pointer to rcode (EX_*) +** +** Returns: +** h_errno if found +** 0 otherwise +*/ + +int +setherrnofromstring(str, prc) + const char *str; + int *prc; +{ + SM_SET_H_ERRNO(0); + if (str == NULL || *str == '\0') + return 0; + if (strstr(str, "herrno:") == NULL) + return 0; + if (prc != NULL) + *prc = EX_NOHOST; + if (strstr(str, "host_not_found")) + SM_SET_H_ERRNO(HOST_NOT_FOUND); + else if (strstr(str, "try_again")) + { + SM_SET_H_ERRNO(TRY_AGAIN); + if (prc != NULL) + *prc = EX_TEMPFAIL; + } + else if (strstr(str, "no_recovery")) + SM_SET_H_ERRNO(NO_RECOVERY); + else if (strstr(str, "no_data")) + SM_SET_H_ERRNO(NO_DATA); + else + SM_SET_H_ERRNO(NETDB_INTERNAL); + return h_errno; +} + +/* +** GETTTLFROMSTRING -- extract ttl from a string +** +** Parameters: +** str -- string which might contain ttl +** +** Returns: +** ttl if found +** 0 otherwise +*/ + +int +getttlfromstring(str) + const char *str; +{ + if (str == NULL || *str == '\0') + return 0; +#define TTL_PRE "ttl=" + if (strstr(str, TTL_PRE) == NULL) + return 0; + return strtoul(str + strlen(TTL_PRE), NULL, 10); +} + +/* +** NSPORTIP -- parse port@IPv4 and set NS accordingly +** +** Parameters: +** p -- port@Ipv4 +** +** Returns: +** <0: error +** >0: ok +** +** Side Effects: +** sets NS for DNS lookups +*/ + +/* +** There should be a generic function for this... +** milter_open(), socket_map_open(), others? +*/ + +int +nsportip(p) + char *p; +{ + char *h; + int r; + unsigned short port; + struct in_addr nsip; + + if (p == NULL || *p == '\0') + return -1; + + port = 0; + while (SM_ISSPACE(*p)) + p++; + if (*p == '\0') + return -1; + h = strchr(p, '@'); + if (h != NULL) + { + *h = '\0'; + if (isascii(*p) && isdigit(*p)) + port = atoi(p); + *h = '@'; + p = h + 1; + } + h = strchr(p, ' '); + if (h != NULL) + *h = '\0'; + r = inet_pton(AF_INET, p, &nsip); + if (r > 0) + { + if ((_res.options & RES_INIT) == 0) + (void) res_init(); + dns_setns(&nsip, port); + } + if (h != NULL) + *h = ' '; + return r > 0 ? 0 : -1; +} + +/* +** DNS_SETNS -- set one NS in resolver context +** +** Parameters: +** ns -- (IPv4 address of) nameserver +** port -- nameserver port +** +** Returns: +** None. +*/ + +void +dns_setns(ns, port) + struct in_addr *ns; + unsigned int port; +{ + _res.nsaddr_list[0].sin_family = AF_INET; + _res.nsaddr_list[0].sin_addr = *ns; + if (port != 0) + _res.nsaddr_list[0].sin_port = htons(port); + _res.nscount = 1; + if (tTd(8, 61)) + sm_dprintf("dns_setns(%s,%u)\n", inet_ntoa(*ns), port); +} + +# if defined(T_TLSA) +/* +** HEX2BIN -- convert hex string to binary TLSA RR +** +** Parameters: +** p -- hex representation of TLSA RR +** size -- length of p +** +** Returns: +** pointer to binary TLSA RR +** NULL: error +*/ + +static char * +hex2bin(p, size) + const char *p; + int size; +{ + int i, pos, txtlen; + char *tlsa; + + txtlen = size / 2; + if (txtlen * 2 == size) + { + if (LogLevel > 5) + sm_syslog(LOG_WARNING, NOQID, + "ERROR: hex2bin: size %d wrong", size); + return NULL; + } + tlsa = sm_malloc(txtlen + 1); + if (tlsa == NULL) + { + if (tTd(8, 17)) + sm_dprintf("len=%d, tlsa=NULL\n", txtlen); + return NULL; + } + +#define CHAR2INT(c) (((c) <= '9') ? ((c) - '0') : (toupper(c) - 'A' + 10)) + for (i = 0, pos = 0; i + 1 < size && pos < txtlen; i += 2, pos++) + tlsa[pos] = CHAR2INT(p[i]) * 16 + CHAR2INT(p[i+1]); + + return tlsa; +} +# endif /* T_TLSA */ + +const char * +rr_type2tag(rr_type) + int rr_type; +{ + switch (rr_type) + { + case T_A: + return "ipv4"; +# if NETINET6 + case T_AAAA: + return "ipv6"; +# endif + case T_CNAME: + return "cname"; + case T_MX: + return "mx"; +# ifdef T_TLSA + case T_TLSA: + return "tlsa"; +# endif + } + return NULL; +} + +/* +** DNSCRTRR -- create DNS RR +** +** Parameters: +** domain -- original query domain +** query -- name of query +** qtype -- resource record type of query +** value -- (list of) data to set +** rr_type -- resource record type +** flags -- flags how to handle various lookups +** herr -- (pointer to) h_errno (output if non-NULL) +** adp -- (pointer to) ad flag +** answer -- buffer for RRs +** anslen -- size of answer +** anspos -- current position in answer +** +** Returns: +** >0: length of data in answer +** <0: error, check *herr +*/ + +static int +dnscrtrr(domain, query, qtype, value, rr_type, flags, herr, adp, answer, anslen, anspos) + const char *domain; + const char *query; + int qtype; + char *value; + int rr_type; + unsigned int flags; + int *herr; + int *adp; + unsigned char *answer; + int anslen; + unsigned char *anspos; +{ + SOCKADDR addr; + int ttl, ad, rlen; + char *p, *token; + char data[IN6ADDRSZ]; + char rhs[MAXLINE]; + + rlen = -1; + if (NULL == value || '\0' == *value) + return rlen; + SM_REQUIRE(adp != NULL); + (void) sm_strlcpy(rhs, value, sizeof(rhs)); + p = rhs; + if (setherrnofromstring(p, NULL) != 0) + { + if (herr != NULL) + *herr = h_errno; + if (tTd(8, 16)) + sm_dprintf("dnscrtrr rhs=%s h_errno=%d (%s)\n", + p, h_errno, herrno2txt(h_errno)); + return rlen; + } + + ttl = 0; + ad = 0; + for (token = p; token != NULL && *token != '\0'; token = p) + { + rlen = 0; + while (p != NULL && *p != '\0' && !SM_ISSPACE(*p)) + ++p; + if (SM_ISSPACE(*p)) + *p++ = '\0'; + sm_dprintf("dnscrtrr: token=%s\n", token); + if (strcmp(token, "ad") == 0) + { + bool adflag; + + adflag = (_res.options & RES_USE_DNSSEC) != 0; + + /* maybe print this only for the final RR? */ + if (tTd(8, 61)) + sm_dprintf("dnscrtrr: ad=1, adp=%d, adflag=%d\n", + *adp, adflag); + if (*adp != 0 && adflag) + { + *adp = 1; + ad = 1; + } + continue; + } + if (ttl == 0 && (ttl = getttlfromstring(token)) > 0) + { + if (tTd(8, 61)) + sm_dprintf("dnscrtrr: ttl=%d\n", ttl); + continue; + } + + if (rr_type == T_A) + { + addr.sin.sin_addr.s_addr = inet_addr(token); + (void) memmove(data, (void *)&addr.sin.sin_addr.s_addr, + INADDRSZ); + rlen = gen_dns_reply(answer, anslen, anspos, + query, qtype, domain, C_IN, rr_type, ttl, + INADDRSZ, data, 0, 0, ad); + } + +# if NETINET6 + if (rr_type == T_AAAA) + { + anynet_pton(AF_INET6, token, &addr.sin6.sin6_addr); + memmove(data, (void *)&addr.sin6.sin6_addr, IN6ADDRSZ); + rlen = gen_dns_reply(answer, anslen, anspos, + query, qtype, domain, C_IN, rr_type, ttl, + IN6ADDRSZ, data, 0, 0, ad); + } +# endif /* NETINET6 */ + + if (rr_type == T_MX) + { + char *endptr; + int pref; + + pref = (int) strtoul(token, &endptr, 10); + if (endptr == NULL || *endptr != ':') + goto error; + token = endptr + 1; + rlen = gen_dns_reply(answer, anslen, anspos, + query, qtype, domain, C_IN, rr_type, ttl, + strlen(token) + 1, token, 0, pref, ad); + if (tTd(8, 50)) + sm_dprintf("dnscrtrr: mx=%s, pref=%d\n", + token, pref); + } + +# ifdef T_TLSA + if (rr_type == T_TLSA) + rlen = gen_dns_reply(answer, anslen, anspos, + query, qtype, domain, C_IN, rr_type, ttl, + strlen(token) + 1, token, 0, 0, ad); +# endif + + if (rr_type == T_CNAME) + rlen = gen_dns_reply(answer, anslen, anspos, + query, qtype, domain, C_IN, rr_type, ttl, + strlen(token), token, 0, 0, ad); + if (rlen < 0) + goto error; + if (rlen > 0) + anspos = answer + rlen; + } + + if (ad != 1) + *adp = 0; + + return rlen; + + error: + if (herr != NULL && 0 == *herr) + *herr = NO_RECOVERY; + return -1; +} + +/* +** TSTDNS_SEARCH -- replacement for res_search() for testing +** +** Parameters: +** domain -- query domain +** class -- class +** type -- resource record type +** answer -- buffer for RRs +** anslen -- size of answer +** +** Returns: +** >0: length of data in answer +** <0: error, check h_errno +*/ + +int +tstdns_search(domain, class, type, answer, anslen) + const char *domain; + int class; + int type; + unsigned char *answer; + int anslen; +{ + int rlen, ad, maprcode, cnt, flags, herr; + bool found_cname; + const char *query; + char *p; + const char *tag; + char *av[2]; + STAB *map; + char key[MAXNAME + 16]; + char rhs[MAXLINE]; + unsigned char *anspos; + + rlen = -1; + herr = 0; + if (class != C_IN) + goto error; + if (NULL == domain || '\0' == *domain) + goto error; + tag = rr_type2tag(type); + if (tag == NULL) + goto error; + maprcode = EX_OK; + ad = -1; + flags = 0; + query = domain; + anspos = NULL; + + map = stab("access", ST_MAP, ST_FIND); + if (NULL == map) + { + sm_dprintf("access map not found\n"); + goto error; + } + if (!bitset(MF_OPEN, map->s_map.map_mflags) && + !openmap(&(map->s_map))) + { + sm_dprintf("access map open failed\n"); + goto error; + } + +/* +** Look up tag:domain, if not found and domain does not end with a dot +** (and the proper debug level is selected), also try with trailing dot. +*/ + +#define SM_LOOKUP2(tag) \ + do { \ + int len; \ + \ + len = strlen(domain); \ + av[0] = key; \ + av[1] = NULL; \ + snprintf(key, sizeof(key), "%s:%s", tag, domain); \ + p = (*map->s_map.map_class->map_lookup)(&map->s_map, key, av, \ + &maprcode); \ + if (p != NULL) \ + break; \ + if (!tTd(8, 112) || (len > 0 && '.' == domain[len - 1])) \ + break; \ + snprintf(key, sizeof(key), "%s:%s.", tag, domain); \ + p = (*map->s_map.map_class->map_lookup)(&map->s_map, key, av, \ + &maprcode); \ + } while (0) + + cnt = 0; + found_cname = false; + while (cnt < 6) + { + char *last; + + /* Should this try with/without trailing dot? */ + SM_LOOKUP2(tag); + if (p != NULL) + { + sm_dprintf("access map lookup key=%s, value=%s\n", key, + p); + break; + } + if (NULL == p && (flags & RR_NO_CNAME) == 0) + { + sm_dprintf("access map lookup failed key=%s, try cname\n", + key); + SM_LOOKUP2("cname"); + if (p != NULL) + { + sm_dprintf("cname lookup key=%s, value=%s, ad=%d\n", + key, p, ad); + rlen = dnscrtrr(domain, query, type, p, T_CNAME, + flags, &herr, &ad, answer, + anslen, anspos); + if (rlen < 0) + goto error; + if (rlen > 0) + anspos = answer + rlen; + found_cname = true; + } + } + if (NULL == p) + break; + + (void) sm_strlcpy(rhs, p, sizeof(rhs)); + p = rhs; + + /* skip (leading) ad/ttl: look for last ' ' */ + if ((last = strrchr(p, ' ')) != NULL && last[1] != '\0') + domain = last + 1; + else + domain = p; + ++cnt; + } + if (NULL == p) + { + int t; + char *tags[] = { "ipv4", "mx", "tlsa", +# if NETINET6 + "ipv6", +# endif + NULL + }; + + for (t = 0; tags[t] != NULL; t++) + { + if (strcmp(tag, tags[t]) == 0) + continue; + SM_LOOKUP2(tags[t]); + if (p != NULL) + { + sm_dprintf("access map lookup failed key=%s:%s, but found key=%s\n", + tag, domain, key); + herr = NO_DATA; + goto error; + } + } + sm_dprintf("access map lookup failed key=%s\n", key); + herr = HOST_NOT_FOUND; + goto error; + } + if (found_cname && (flags & RR_ONLY_CNAME) != 0) + return rlen; + rlen = dnscrtrr(domain, query, type, p, type, flags, &herr, &ad, + answer, anslen, anspos); + if (rlen < 0) + goto error; + return rlen; + + error: + if (0 == herr) + herr = NO_RECOVERY; + SM_SET_H_ERRNO(herr); + sm_dprintf("rlen=%d, herr=%d\n", rlen, herr); + return -1; +} + +/* +** TSTDNS_QUERYDOMAIN -- replacement for res_querydomain() for testing +** +** Parameters: +** name -- query name +** domain -- query domain +** class -- class +** type -- resource record type +** answer -- buffer for RRs +** anslen -- size of answer +** +** Returns: +** >0: length of data in answer +** <0: error, check h_errno +*/ + +int +tstdns_querydomain(name, domain, class, type, answer, anslen) + const char *name; + const char *domain; + int class; + int type; + unsigned char *answer; + int anslen; +{ + char query[MAXNAME]; + int len; + + if (NULL == name) + goto error; + if (NULL == domain || '\0' == *domain) + return tstdns_search(name, class, type, answer, anslen); + + len = snprintf(query, sizeof(query), "%s.%s", name, domain); + if (len >= (int)sizeof(query)) + goto error; + return tstdns_search(query, class, type, answer, anslen); + + error: + SM_SET_H_ERRNO(NO_RECOVERY); + return -1; +} + +# endif /* DNSSEC_TEST */ + +/* +** DNS_LOOKUP_INT -- perform DNS lookup ** ** Parameters: ** domain -- name to lookup @@ -379,6 +1258,10 @@ parse_dns_reply(data, len) ** rr_type -- resource record type ** retrans -- retransmission timeout ** retry -- number of retries +** options -- DNS resolver options +** flags -- currently only passed to parse_dns_reply() +** err -- (pointer to) errno (output if non-NULL) +** herr -- (pointer to) h_errno (output if non-NULL) ** ** Returns: ** result of lookup if succeeded. @@ -386,33 +1269,55 @@ parse_dns_reply(data, len) */ DNS_REPLY_T * -dns_lookup_int(domain, rr_class, rr_type, retrans, retry) +dns_lookup_int(domain, rr_class, rr_type, retrans, retry, options, flags, err, herr) const char *domain; int rr_class; int rr_type; time_t retrans; int retry; + unsigned int options; + unsigned int flags; + int *err; + int *herr; { int len; unsigned long old_options = 0; time_t save_retrans = 0; int save_retry = 0; - DNS_REPLY_T *r = NULL; + DNS_REPLY_T *dr = NULL; querybuf reply_buf; unsigned char *reply; + int (*resfunc) __P((const char *, int, int, u_char *, int)); -#define SMRBSIZE sizeof(reply_buf) -#ifndef IP_MAXPACKET -# define IP_MAXPACKET 65535 -#endif +# define SMRBSIZE ((int) sizeof(reply_buf)) +# ifndef IP_MAXPACKET +# define IP_MAXPACKET 65535 +# endif + resfunc = res_search; +# if DNSSEC_TEST + if (tTd(8, 110)) + resfunc = tstdns_search; +# endif + + old_options = _res.options; + _res.options |= options; + if (err != NULL) + *err = 0; + if (herr != NULL) + *herr = 0; if (tTd(8, 16)) { - old_options = _res.options; _res.options |= RES_DEBUG; - sm_dprintf("dns_lookup(%s, %d, %s)\n", domain, - rr_class, dns_type_to_string(rr_type)); + sm_dprintf("dns_lookup_int(%s, %d, %s, %x)\n", domain, + rr_class, dns_type_to_string(rr_type), options); } +# if DNSSEC_TEST + if (tTd(8, 15)) + sm_dprintf("NS=%s, port=%d\n", + inet_ntoa(_res.nsaddr_list[0].sin_addr), + ntohs(_res.nsaddr_list[0].sin_port)); +# endif if (retrans > 0) { save_retrans = _res.retrans; @@ -426,38 +1331,61 @@ dns_lookup_int(domain, rr_class, rr_type, retrans, retry) errno = 0; SM_SET_H_ERRNO(0); reply = (unsigned char *)&reply_buf; - len = res_search(domain, rr_class, rr_type, reply, SMRBSIZE); + len = (*resfunc)(domain, rr_class, rr_type, reply, SMRBSIZE); if (len >= SMRBSIZE) { if (len >= IP_MAXPACKET) { if (tTd(8, 4)) sm_dprintf("dns_lookup: domain=%s, length=%d, default_size=%d, max=%d, status=response too long\n", - domain, len, (int) SMRBSIZE, - IP_MAXPACKET); + domain, len, SMRBSIZE, IP_MAXPACKET); } else { if (tTd(8, 6)) sm_dprintf("dns_lookup: domain=%s, length=%d, default_size=%d, max=%d, status=response longer than default size, resizing\n", - domain, len, (int) SMRBSIZE, - IP_MAXPACKET); + domain, len, SMRBSIZE, IP_MAXPACKET); reply = (unsigned char *)sm_malloc(IP_MAXPACKET); if (reply == NULL) SM_SET_H_ERRNO(TRY_AGAIN); else - len = res_search(domain, rr_class, rr_type, + { + SM_SET_H_ERRNO(0); + len = (*resfunc)(domain, rr_class, rr_type, reply, IP_MAXPACKET); + } } } - if (tTd(8, 16)) + _res.options = old_options; + if (len < 0) { - _res.options = old_options; - sm_dprintf("dns_lookup(%s, %d, %s) --> %d\n", - domain, rr_class, dns_type_to_string(rr_type), len); + if (err != NULL) + *err = errno; + if (herr != NULL) + *herr = h_errno; + if (tTd(8, 16)) + { + sm_dprintf("dns_lookup_int(%s, %d, %s, %x)=%d, errno=%d, h_errno=%d" +# if DNSSEC_TEST + " (%s)" +# endif + "\n", + domain, rr_class, dns_type_to_string(rr_type), + options, len, errno, h_errno +# if DNSSEC_TEST + , herrno2txt(h_errno) +# endif + ); + } + } + else if (tTd(8, 16)) + { + sm_dprintf("dns_lookup_int(%s, %d, %s, %x)=%d\n", + domain, rr_class, dns_type_to_string(rr_type), + options, len); } if (len >= 0 && len < IP_MAXPACKET && reply != NULL) - r = parse_dns_reply(reply, len); + dr = parse_dns_reply(reply, len, flags); if (reply != (unsigned char *)&reply_buf && reply != NULL) { sm_free(reply); @@ -467,29 +1395,209 @@ dns_lookup_int(domain, rr_class, rr_type, retrans, retry) _res.retrans = save_retrans; if (retry > 0) _res.retry = save_retry; - return r; + return dr; } -# if 0 +/* +** DNS_LOOKUP_MAP -- perform DNS map lookup +** +** Parameters: +** domain -- name to lookup +** rr_class -- resource record class +** rr_type -- resource record type +** retrans -- retransmission timeout +** retry -- number of retries +** options -- DNS resolver options +** +** Returns: +** result of lookup if succeeded. +** NULL otherwise. +*/ + DNS_REPLY_T * -dns_lookup(domain, type_name, retrans, retry) +dns_lookup_map(domain, rr_class, rr_type, retrans, retry, options) const char *domain; - const char *type_name; + int rr_class; + int rr_type; time_t retrans; int retry; + unsigned int options; { - int type; - - type = dns_string_to_type(type_name); - if (type == -1) - { - if (tTd(8, 16)) - sm_dprintf("dns_lookup: unknown resource type: `%s'\n", - type_name); - return NULL; - } - return dns_lookup_int(domain, C_IN, type, retrans, retry); + return dns_lookup_int(domain, rr_class, rr_type, retrans, retry, + options, RR_AS_TEXT, NULL, NULL); } -# endif /* 0 */ + +# if DANE +/* +** DNS2HE -- convert DNS_REPLY_T list to hostent struct +** +** Parameters: +** dr -- DNS lookup result +** family -- address family +** +** Returns: +** hostent struct if succeeded. +** NULL otherwise. +** +** Note: +** this returns a pointer to a static struct! +*/ + +struct hostent * +dns2he(dr, family) + DNS_REPLY_T *dr; + int family; +{ +# define SM_MAX_ADDRS 256 + static struct hostent he; + static char *he_aliases[1]; + static char *he_addr_list[SM_MAX_ADDRS]; +# ifdef IN6ADDRSZ +# define IN_ADDRSZ IN6ADDRSZ +# else +# define IN_ADDRSZ INADDRSZ +# endif + static char he_addrs[SM_MAX_ADDRS * IN_ADDRSZ]; + static char he_name[MAXNAME]; + static bool he_init = false; + struct hostent *h; + struct in_addr ia; + int i; + size_t sz; +# if NETINET6 && DNSSEC_TEST + struct in6_addr ia6; + char buf6[INET6_ADDRSTRLEN]; +# endif + RESOURCE_RECORD_T *rr; + + if (dr == NULL) + return NULL; + + h = &he; + if (!he_init) + { + he_aliases[0] = NULL; + he.h_aliases = he_aliases; + he.h_addr_list = he_addr_list; + he.h_name = he_name; + he_init = true; + } + h->h_addrtype = family; + + if (tTd(8, 17)) + sm_dprintf("dns2he: ad=%d\n", dr->dns_r_h.ad); + + /* do we want/need to copy the name? */ + rr = dr->dns_r_head; + if (rr != NULL && rr->rr_domain != NULL) + sm_strlcpy(h->h_name, rr->rr_domain, sizeof(he_name)); + else + h->h_name[0] = '\0'; + + sz = 0; +# if NETINET + if (family == AF_INET) + sz = INADDRSZ; +# endif +# if NETINET6 + if (family == AF_INET6) + sz = IN6ADDRSZ; +# endif + if (sz == 0) + return NULL; + h->h_length = sz; + + for (rr = dr->dns_r_head, i = 0; rr != NULL && i < SM_MAX_ADDRS - 1; + rr = rr->rr_next) + { + h->h_addr_list[i] = he_addrs + i * h->h_length; + switch (rr->rr_type) + { +# if NETINET + case T_A: + if (family != AF_INET) + continue; + memmove(h->h_addr_list[i], rr->rr_u.rr_a, INADDRSZ); + ++i; + break; +# endif /* NETINET */ +# if NETINET6 + case T_AAAA: + if (family != AF_INET6) + continue; + memmove(h->h_addr_list[i], rr->rr_u.rr_aaaa, IN6ADDRSZ); + ++i; + break; +# endif /* NETINET6 */ + case T_CNAME: +# if DNSSEC_TEST + if (tTd(8, 16)) + sm_dprintf("dns2he: cname: %s ttl=%d\n", + rr->rr_u.rr_txt, rr->rr_ttl); +# endif + break; + case T_MX: +# if DNSSEC_TEST + if (tTd(8, 16)) + sm_dprintf("dns2he: mx: %d %s ttl=%d\n", + rr->rr_u.rr_mx->mx_r_preference, + rr->rr_u.rr_mx->mx_r_domain, + rr->rr_ttl); +# endif + break; + +# if defined(T_TLSA) + case T_TLSA: +# if DNSSEC_TEST + if (tTd(8, 16)) + { + char *tlsa; + int len; + + len = bin2hex(&tlsa, rr->rr_u.rr_data, + rr->rr_size, 4); + if (len > 0) + sm_dprintf("dns2he: tlsa: %s ttl=%d\n", + tlsa, rr->rr_ttl); + } +# endif + break; +# endif /* T_TLSA */ + } + } + + /* complain if list is too long! */ + SM_ASSERT(i < SM_MAX_ADDRS); + h->h_addr_list[i] = NULL; + +# if DNSSEC_TEST + if (tTd(8, 16)) + { + for (i = 0; h->h_addr_list[i] != NULL && i < SM_MAX_ADDRS; i++) + { + char *addr; + + addr = NULL; +# if NETINET6 + if (h->h_addrtype == AF_INET6) + { + memmove(&ia6, h->h_addr_list[i], IN6ADDRSZ); + addr = anynet_ntop(&ia6, buf6, sizeof(buf6)); + } + else +# endif /* NETINET6 */ + /* "else" in #if code above */ + { + memmove(&ia, h->h_addr_list[i], INADDRSZ); + addr = (char *) inet_ntoa(ia); + } + if (addr != NULL) + sm_dprintf("dns2he: addr[%d]: %s\n", i, addr); + } + } +# endif /* DNSSEC_TEST */ + return h; +} +# endif /* DANE */ # endif /* NAMED_BIND */ -#endif /* DNSMAP */ +#endif /* DNSMAP || DANE */ diff --git a/src/sm_resolve.h b/src/sm_resolve.h index 5f3fe21005b7..ffff41168944 100644 --- a/src/sm_resolve.h +++ b/src/sm_resolve.h @@ -43,7 +43,7 @@ /* $Id: sm_resolve.h,v 8.9 2013-11-22 20:51:56 ca Exp $ */ -#if DNSMAP +#if DNSMAP || DANE # ifndef __ROKEN_RESOLVE_H__ # define __ROKEN_RESOLVE_H__ @@ -51,16 +51,22 @@ # ifndef T_TXT # define T_TXT 16 -# endif /* ! T_TXT */ +# endif # ifndef T_AFSDB # define T_AFSDB 18 -# endif /* ! T_AFSDB */ +# endif # ifndef T_SRV # define T_SRV 33 -# endif /* ! T_SRV */ +# endif # ifndef T_NAPTR # define T_NAPTR 35 -# endif /* ! T_NAPTR */ +# endif +# ifndef T_RRSIG +# define T_RRSIG 46 +# endif +# ifndef T_TLSA +# define T_TLSA 52 +# endif typedef struct { @@ -101,10 +107,10 @@ struct resource_record SRV_RECORDT_T *rr_srv; # if NETINET struct in_addr *rr_a; -# endif /* NETINET */ +# endif # if NETINET6 struct in6_addr *rr_aaaa; -# endif /* NETINET6 */ +# endif char *rr_txt; } rr_u; RESOURCE_RECORD_T *rr_next; @@ -113,7 +119,7 @@ struct resource_record # if !defined(T_A) && !defined(T_AAAA) /* XXX if isn't included */ typedef int HEADER; /* will never be used */ -# endif /* !defined(T_A) && !defined(T_AAAA) */ +# endif typedef struct { @@ -122,15 +128,23 @@ typedef struct RESOURCE_RECORD_T *dns_r_head; } DNS_REPLY_T; +#define SM_DNS_FL_EDNS0 0x01 +#define SM_DNS_FL_DNSSEC 0x02 + +/* flags for parse_dns_reply() et.al. */ +#define RR_AS_TEXT 0x01 /* convert some RRs to text, e.g., TLSA */ +#define RR_RAW 0x02 /* return some RRs as "raw" data */ + /* currently not used (set, but not read) */ +#define RR_NO_CNAME 0x04 /* do not try CNAME lookup */ +#define RR_ONLY_CNAME 0x08 /* if !RR_NO_CNAME" return only CNAME */ extern void dns_free_data __P((DNS_REPLY_T *)); extern int dns_string_to_type __P((const char *)); extern const char *dns_type_to_string __P((int)); -extern DNS_REPLY_T *dns_lookup_int __P((const char *, - int, - int, - time_t, - int)); +extern DNS_REPLY_T *dns_lookup_map __P((const char *, int, int, time_t, + int, unsigned int)); +extern DNS_REPLY_T *dns_lookup_int __P((const char *, int, int, time_t, + int, unsigned int, unsigned int, int *, int *)); # if 0 extern DNS_REPLY_T *dns_lookup __P((const char *domain, const char *type_name, @@ -138,5 +152,35 @@ extern DNS_REPLY_T *dns_lookup __P((const char *domain, int retry)); # endif /* 0 */ +# if DANE +struct hostent *dns2he __P((DNS_REPLY_T *, int)); +# endif + +/* what to do if family is not supported? add SM_ASSERT()? */ +#define FAM2T_(family) (((family) == AF_INET) ? T_A : T_AAAA) + +# if DNSSEC_TEST +const char *herrno2txt __P((int)); +int setherrnofromstring __P((const char *, int *)); +int getttlfromstring __P((const char *)); +int tstdns_search __P((const char *, int, int, u_char *, int)); +int tstdns_querydomain __P((const char *, const char *, int, int, unsigned char *, int)); + +# ifdef _DEFINE_SMR_GLOBALS +# define SMR_EXTERN +# else +# define SMR_EXTERN extern +# endif +SMR_EXTERN char *NameSearchList; +# undef SMR_EXTERN +extern void dns_setns __P((struct in_addr *, unsigned int)); +extern int nsportip __P((char *)); +# endif /* DNSSEC_TEST*/ + +#ifndef RES_TRUSTAD +# define RES_TRUSTAD 0 +#endif +#define SM_RES_DNSSEC (RES_USE_EDNS0|RES_USE_DNSSEC|RES_TRUSTAD) + # endif /* ! __ROKEN_RESOLVE_H__ */ -#endif /* DNSMAP */ +#endif /* DNSMAP || DANE */ diff --git a/src/srvrsmtp.c b/src/srvrsmtp.c index b05348d4b2e2..b6263079a90e 100644 --- a/src/srvrsmtp.c +++ b/src/srvrsmtp.c @@ -15,7 +15,7 @@ #if MILTER # include # include -#endif /* MILTER */ +#endif SM_RCSID("@(#)$Id: srvrsmtp.c,v 8.1016 2013-11-22 20:51:56 ca Exp $") @@ -23,18 +23,20 @@ SM_RCSID("@(#)$Id: srvrsmtp.c,v 8.1016 2013-11-22 20:51:56 ca Exp $") #include #if SASL || STARTTLS +# include # include "sfsasl.h" -#endif /* SASL || STARTTLS */ +#endif #if SASL # define ENC64LEN(l) (((l) + 2) * 4 / 3 + 1) static int saslmechs __P((sasl_conn_t *, char **)); -#endif /* SASL */ +#endif #if STARTTLS # include # include static SSL_CTX *srv_ctx = NULL; /* TLS server context */ static SSL *srv_ssl = NULL; /* per connection context */ +static tlsi_ctx_T tlsi_ctx; /* TLS information context */ static bool tls_ok_srv = false; @@ -44,7 +46,7 @@ static bool tls_ok_srv = false; #if _FFR_DM_ONE static bool NotFirstDelivery = false; -#endif /* _FFR_DM_ONE */ +#endif /* server features */ #define SRV_NONE 0x0000 /* none... */ @@ -60,11 +62,14 @@ static bool NotFirstDelivery = false; # define SRV_OFFER_PIPE 0x0100 /* offer PIPELINING */ # if _FFR_NO_PIPE # define SRV_NO_PIPE 0x0200 /* disable PIPELINING, sleep if used */ -# endif /* _FFR_NO_PIPE */ +# endif #endif /* PIPELINING */ #define SRV_REQ_AUTH 0x0400 /* require AUTH */ #define SRV_REQ_SEC 0x0800 /* require security - equiv to AuthOptions=p */ #define SRV_TMP_FAIL 0x1000 /* ruleset caused a temporary failure */ +#if _FFR_EAI +# define SRV_OFFER_EAI 0x2000 /* offer SMTPUTF* */ +#endif static unsigned int srvfeatures __P((ENVELOPE *, char *, unsigned int)); @@ -76,6 +81,32 @@ static char *skipword __P((char *volatile, char *)); static void setup_smtpd_io __P((void)); #if SASL +# ifndef MAX_AUTH_USER_LEN +# define MAX_AUTH_USER_LEN 256 +# endif +# ifndef MAX_AUTH_LOG_LEN +# define MAX_AUTH_LOG_LEN 64 +# endif +static void get_sasl_user __P((char *, unsigned int, const char *, char *out, size_t)); +# define RESET_AUTH_FAIL_LOG_USER \ + do \ + { \ + (void) memset(auth_user, 0, sizeof(auth_user)); \ + (void) memset(auth_user_tmp, 0, sizeof(auth_user_tmp)); \ + auth_user_len = 0; \ + } while (0) +# define SET_AUTH_USER_TMP(s, len) \ + do \ + { \ + auth_user_len = SM_MIN(len, MAX_AUTH_USER_LEN-1); \ + (void) memcpy(auth_user_tmp, s, auth_user_len); \ + } while (0) +# define SET_AUTH_USER \ + get_sasl_user(auth_user_tmp, auth_user_len, auth_type, auth_user, sizeof(auth_user)) +# define SET_AUTH_USER_CONDITIONALLY \ + if ('\0' == auth_user[0]) \ + SET_AUTH_USER; +# define LOG_AUTH_FAIL_USER ", user=", (int)MAX_AUTH_LOG_LEN, auth_user # if SASL >= 20000 static int reset_saslconn __P((sasl_conn_t **_conn, char *_hostname, char *_remoteip, char *_localip, @@ -84,6 +115,7 @@ static int reset_saslconn __P((sasl_conn_t **_conn, char *_hostname, # define RESET_SASLCONN \ do \ { \ + RESET_AUTH_FAIL_LOG_USER; \ result = reset_saslconn(&conn, AuthRealm, remoteip, \ localip, auth_id, &ext_ssf); \ if (result != SASL_OK) \ @@ -98,6 +130,7 @@ static int reset_saslconn __P((sasl_conn_t **_conn, char *_hostname, # define RESET_SASLCONN \ do \ { \ + RESET_AUTH_FAIL_LOG_USER; \ result = reset_saslconn(&conn, AuthRealm, &saddr_r, \ &saddr_l, &ext_ssf); \ if (result != SASL_OK) \ @@ -107,6 +140,10 @@ static int reset_saslconn __P((sasl_conn_t **_conn, char *_hostname, # endif /* SASL >= 20000 */ #endif /* SASL */ +#if !defined(RESET_AUTH_FAIL_LOG_USER) +# define RESET_AUTH_FAIL_LOG_USER +#endif + extern ENVELOPE BlankEnvelope; #define NBADRCPTS \ @@ -119,11 +156,34 @@ extern ENVELOPE BlankEnvelope; macdefine(&e->e_macro, A_TEMP, macid("{nbadrcpts}"), buf); \ } while (0) -#define SKIP_SPACE(s) while (isascii(*s) && isspace(*s)) \ +#define SKIP_SPACE(s) while (SM_ISSPACE(*s)) \ (s)++ +#if _FFR_EAI /* -** PARSE_ESMTP_ARGS -- parse EMSTP arguments (for MAIL, RCPT) +** ADDR_IS_ASCII -- check whether an address is 100% printable ASCII +** +** Parameters: +** a -- an address (or other string) +** +** Returns: +** TRUE if a is non-NULL and points to only printable ASCII +** FALSE if a is NULL and points to printable ASCII +** FALSE if a is non-NULL and points to something containing 8-bittery +*/ + +bool +addr_is_ascii(a) + const char * a; +{ + while (a != NULL && *a != '\0' && *a >= ' ' && (unsigned char)*a < 127) + a++; + return (a != NULL && *a == '\0'); +} +#endif + +/* +** PARSE_ESMTP_ARGS -- parse ESMTP arguments (for MAIL, RCPT) ** ** Parameters: ** e -- the envelope @@ -417,10 +477,10 @@ struct cmd #define CMDETRN 12 /* etrn -- flush queue */ #if SASL # define CMDAUTH 13 /* auth -- SASL authenticate */ -#endif /* SASL */ +#endif #if STARTTLS # define CMDSTLS 14 /* STARTTLS -- start TLS session */ -#endif /* STARTTLS */ +#endif /* non-standard commands */ #define CMDVERB 17 /* verb -- go into verbose mode */ /* unimplemented commands from RFC 821 */ @@ -456,10 +516,10 @@ static struct cmd CmdTab[] = { "turn", CMDUNIMPL }, #if SASL { "auth", CMDAUTH, }, -#endif /* SASL */ +#endif #if STARTTLS { "starttls", CMDSTLS, }, -#endif /* STARTTLS */ +#endif /* remaining commands are here only to trap and log attempts to use them */ { "showq", CMDDBGQSHOW }, { "debug", CMDDBGDEBUG }, @@ -472,19 +532,19 @@ static char *CurSmtpClient; /* who's at the other end of channel */ #ifndef MAXBADCOMMANDS # define MAXBADCOMMANDS 25 /* maximum number of bad commands */ -#endif /* ! MAXBADCOMMANDS */ +#endif #ifndef MAXHELOCOMMANDS # define MAXHELOCOMMANDS 3 /* max HELO/EHLO commands before slowdown */ -#endif /* ! MAXHELOCOMMANDS */ +#endif #ifndef MAXVRFYCOMMANDS # define MAXVRFYCOMMANDS 6 /* max VRFY/EXPN commands before slowdown */ -#endif /* ! MAXVRFYCOMMANDS */ +#endif #ifndef MAXETRNCOMMANDS # define MAXETRNCOMMANDS 8 /* max ETRN commands before slowdown */ -#endif /* ! MAXETRNCOMMANDS */ +#endif #ifndef MAXTIMEOUT # define MAXTIMEOUT (4 * 60) /* max timeout for bad commands */ -#endif /* ! MAXTIMEOUT */ +#endif /* ** Maximum shift value to compute timeout for bad commands. @@ -493,10 +553,10 @@ static char *CurSmtpClient; /* who's at the other end of channel */ #ifndef MAXSHIFT # define MAXSHIFT 8 -#endif /* ! MAXSHIFT */ +#endif #if MAXSHIFT > 31 ERROR _MAXSHIFT > 31 is invalid -#endif /* MAXSHIFT */ +#endif #if MAXBADCOMMANDS > 0 @@ -514,7 +574,7 @@ static char *CurSmtpClient; /* who's at the other end of channel */ #if SM_HEAP_CHECK static SM_DEBUG_T DebugLeakSmtp = SM_DEBUG_INITIALIZER("leak_smtp", "@(#)$Debug: leak_smtp - trace memory leaks during SMTP processing $"); -#endif /* SM_HEAP_CHECK */ +#endif typedef struct { @@ -722,10 +782,21 @@ do \ #else # define auth_active false #endif +#if _FFR_EAI +#define GET_PROTOCOL() \ + (e->e_smtputf8 \ + ? (auth_active \ + ? (tls_active ? "UTF8SMTPSA" : "UTF8SMTPA") \ + : (tls_active ? "UTF8SMTPS" : "UTF8SMTP")) \ + : (auth_active \ + ? (tls_active ? "ESMTPSA" : "ESMTPA") \ + : (tls_active ? "ESMTPS" : "ESMTP"))) +#else /* _FFR_EAI */ #define GET_PROTOCOL() \ (auth_active \ ? (tls_active ? "ESMTPSA" : "ESMTPA") \ : (tls_active ? "ESMTPS" : "ESMTP")) +#endif /* _FFR_EAI */ static bool SevenBitInput_Saved; /* saved version of SevenBitInput */ @@ -770,7 +841,7 @@ smtp(nullserver, d_flags, e) char inp[MAXINPLINE]; #if MAXINPLINE < MAXLINE ERROR _MAXINPLINE must NOT be less than _MAXLINE: MAXINPLINE < MAXLINE -#endif /* MAXINPLINE < MAXLINE */ +#endif char cmdbuf[MAXLINE]; #if SASL sasl_conn_t *conn; @@ -781,6 +852,8 @@ smtp(nullserver, d_flags, e) volatile int authenticating; char *user; char *in, *out2; + char auth_user[MAX_AUTH_USER_LEN], auth_user_tmp[MAX_AUTH_USER_LEN]; + unsigned int auth_user_len; # if SASL >= 20000 char *auth_id = NULL; const char *out; @@ -801,7 +874,6 @@ smtp(nullserver, d_flags, e) char *mechlist; volatile unsigned int n_mechs; unsigned int len; -#else /* SASL */ #endif /* SASL */ int r; #if STARTTLS @@ -811,12 +883,15 @@ smtp(nullserver, d_flags, e) bool saveQuickAbort; bool saveSuprErrs; time_t tlsstart; + int ssl_err, tlsret; + int save_errno; + extern int TLSsslidx; #endif /* STARTTLS */ volatile unsigned int features; #if PIPELINING # if _FFR_NO_PIPE int np_log = 0; -# endif /* _FFR_NO_PIPE */ +# endif #endif /* PIPELINING */ volatile time_t log_delay = (time_t) 0; #if MILTER @@ -830,15 +905,16 @@ smtp(nullserver, d_flags, e) size_t inplen; #if _FFR_BADRCPT_SHUTDOWN int n_badrcpts_adj; -#endif /* _FFR_BADRCPT_SHUTDOWN */ +#endif + RESET_AUTH_FAIL_LOG_USER; SevenBitInput_Saved = SevenBitInput; smtp.sm_nrcpts = 0; #if MILTER smtp.sm_milterize = (nullserver == NULL); smtp.sm_milterlist = false; addr = NULL; -#endif /* MILTER */ +#endif /* setup I/O fd correctly for the SMTP server */ setup_smtpd_io(); @@ -892,12 +968,15 @@ smtp(nullserver, d_flags, e) #endif /* SASL */ #if PIPELINING | SRV_OFFER_PIPE -#endif /* PIPELINING */ +#endif #if STARTTLS | (bitnset(D_NOTLS, d_flags) ? SRV_NONE : SRV_OFFER_TLS) | (bitset(TLS_I_NO_VRFY, TLS_Srv_Opts) ? SRV_NONE : SRV_VRFY_CLT) -#endif /* STARTTLS */ +#endif +#if _FFR_EAI + | SRV_OFFER_EAI +#endif /* _FFR_EAI */ ; if (nullserver == NULL) { @@ -931,6 +1010,7 @@ smtp(nullserver, d_flags, e) } else if (strncmp(nullserver, "421 ", 4) == 0) { + /* Can't use ("%s", ...) due to message() requirements */ message(nullserver); goto doquit; } @@ -985,7 +1065,7 @@ smtp(nullserver, d_flags, e) if (in != NULL && ( # if NETINET6 strcmp(in, "inet6") == 0 || -# endif /* NETINET6 */ +# endif strcmp(in, "inet") == 0)) { SOCKADDR_LEN_T addrsize; @@ -1056,7 +1136,7 @@ smtp(nullserver, d_flags, e) # if 0 macdefine(&BlankEnvelope.e_macro, A_PERM, macid("{auth_author}"), NULL); -# endif /* 0 */ +# endif /* set properties */ (void) memset(&ssp, '\0', sizeof(ssp)); @@ -1267,7 +1347,7 @@ smtp(nullserver, d_flags, e) if ( #if STARTTLS !smtps && -#endif /* STARTTLS */ +#endif *greetcode == '2' && nullserver == NULL) { time_t msecs = 0; @@ -1336,7 +1416,16 @@ smtp(nullserver, d_flags, e) /* If this an smtps connection, start TLS now */ if (smtps) { + if (!tls_ok_srv || srv_ctx == NULL) + { + sm_syslog(LOG_ERR, e->e_id, + "smtps: TLS not available, exiting"); + exit(EX_CONFIG); + } Errors = 0; + first = true; + gothello = false; + smtp.sm_gotmail = false; goto starttls; } @@ -1369,14 +1458,14 @@ smtp(nullserver, d_flags, e) while ((id = p) != NULL && (p = strchr(id, '\n')) != NULL) { *p++ = '\0'; - if (isascii(*id) && isspace(*id)) + if (SM_ISSPACE(*id)) id++; (void) sm_strlcpyn(cmdbuf, sizeof(cmdbuf), 2, greetcode, "-%s"); message(cmdbuf, id); } if (id != NULL) { - if (isascii(*id) && isspace(*id)) + if (SM_ISSPACE(*id)) id++; (void) sm_strlcpyn(cmdbuf, sizeof(cmdbuf), 2, greetcode, " %s"); message(cmdbuf, id); @@ -1409,7 +1498,7 @@ smtp(nullserver, d_flags, e) e->e_flags &= ~(EF_VRFYONLY|EF_GLOBALERRS); #if MILTER milter_cmd_fail = false; -#endif /* MILTER */ +#endif /* setup for the read */ e->e_to = NULL; @@ -1437,7 +1526,7 @@ smtp(nullserver, d_flags, e) #if MILTER /* close out milter filters */ milter_quit(e); -#endif /* MILTER */ +#endif message("421 4.4.1 %s Lost input channel from %s", MyHostName, CurSmtpClient); @@ -1492,7 +1581,7 @@ smtp(nullserver, d_flags, e) cmdlen = strlen(http_cmd); if (cmdlen < inplen && sm_strncasecmp(inp, http_cmd, cmdlen) == 0 && - isascii(inp[cmdlen]) && isspace(inp[cmdlen])) + SM_ISSPACE(inp[cmdlen])) { /* Open proxy, drop it */ message("421 4.7.0 %s Rejecting open proxy %s", @@ -1572,16 +1661,18 @@ smtp(nullserver, d_flags, e) inp); # if SASL >= 20000 sm_free(in); -# endif /* SASL >= 20000 */ +# endif RESET_SASLCONN; continue; } # if SASL >= 20000 + SET_AUTH_USER_TMP(in, inlen); result = sasl_server_step(conn, in, inlen, &out, &outlen); sm_free(in); # else /* SASL >= 20000 */ + SET_AUTH_USER_TMP(out, outlen); result = sasl_server_step(conn, out, outlen, &out, &outlen, &errstr); # endif /* SASL >= 20000 */ @@ -1622,7 +1713,7 @@ smtp(nullserver, d_flags, e) # if 0 /* get realm? */ sasl_getprop(conn, SASL_REALM, (void **) &data); -# endif /* 0 */ +# endif /* get security strength (features) */ result = sasl_getprop(conn, SASL_SSF, @@ -1691,6 +1782,8 @@ smtp(nullserver, d_flags, e) } else if (result == SASL_CONTINUE) { + SET_AUTH_USER; + len = ENC64LEN(outlen); out2 = xalloc(len); result = sasl_encode64(out, outlen, out2, len, @@ -1717,26 +1810,35 @@ smtp(nullserver, d_flags, e) } # if SASL >= 20000 sm_free(out2); -# endif /* SASL >= 20000 */ +# endif } else { - /* not SASL_OK or SASL_CONT */ - message("535 5.7.0 authentication failed"); - if (LogLevel > 9) - sm_syslog(LOG_WARNING, e->e_id, - "AUTH failure (%s): %s (%d) %s, relay=%.100s", - auth_type, - sasl_errstring(result, NULL, - NULL), - result, + # if SASL >= 20000 - sasl_errdetail(conn), -# else /* SASL >= 20000 */ - errstr == NULL ? "" : errstr, -# endif /* SASL >= 20000 */ - CurSmtpClient); - RESET_SASLCONN; +# define SASLERR sasl_errdetail(conn) +# else +# define SASLERR errstr == NULL ? "" : errstr +# endif +#define LOGAUTHFAIL \ + do \ + { \ + SET_AUTH_USER_CONDITIONALLY \ + message("535 5.7.0 authentication failed"); \ + if (LogLevel >= 9) \ + sm_syslog(LOG_WARNING, e->e_id, \ + "AUTH failure (%s): %s (%d) %s%s%.*s, relay=%.100s", \ + (auth_type != NULL) ? auth_type : "unknown", \ + sasl_errstring(result, NULL, NULL), \ + result, \ + SASLERR, \ + LOG_AUTH_FAIL_USER, \ + CurSmtpClient); \ + RESET_SASLCONN; \ + } while (0) + + + LOGAUTHFAIL; authenticating = SASL_NOT_AUTH; } } @@ -1754,11 +1856,11 @@ smtp(nullserver, d_flags, e) sm_syslog(LOG_INFO, e->e_id, "<-- %s", inp); /* break off command */ - for (p = inp; isascii(*p) && isspace(*p); p++) + for (p = inp; SM_ISSPACE(*p); p++) continue; cmd = cmdbuf; while (*p != '\0' && - !(isascii(*p) && isspace(*p)) && + !(SM_ISSPACE(*p)) && cmd < &cmdbuf[sizeof(cmdbuf) - 2]) *cmd++ = *p++; *cmd = '\0'; @@ -1849,10 +1951,15 @@ smtp(nullserver, d_flags, e) if (nullserver != NULL) { if (ISSMTPREPLY(nullserver)) + { + /* Can't use ("%s", ...) due to usrerr() requirements */ usrerr(nullserver); + } else + { usrerr("550 5.0.0 %s", nullserver); + } } else usrerr("452 4.4.5 Insufficient disk space; try again later"); @@ -1902,8 +2009,7 @@ smtp(nullserver, d_flags, e) if (isspace(*q)) { *q = '\0'; - while (*++q != '\0' && - isascii(*q) && isspace(*q)) + while (*++q != '\0' && SM_ISSPACE(*q)) continue; *(q - 1) = '\0'; ismore = (*q != '\0'); @@ -1951,6 +2057,7 @@ smtp(nullserver, d_flags, e) result = sasl_decode64(q, strlen(q), in, &inlen); # endif /* SASL >= 20000 */ + if (result != SASL_OK) { message("501 5.5.4 cannot BASE64 decode '%s'", @@ -1964,11 +2071,12 @@ smtp(nullserver, d_flags, e) authenticating = SASL_NOT_AUTH; # if SASL >= 20000 sm_free(in); -# endif /* SASL >= 20000 */ +# endif in = NULL; inlen = 0; break; } + SET_AUTH_USER_TMP(in, inlen); } else { @@ -1980,33 +2088,19 @@ smtp(nullserver, d_flags, e) # if SASL >= 20000 result = sasl_server_start(conn, p, in, inlen, &out, &outlen); - if (in != NULL) - sm_free(in); + SM_FREE(in); # else /* SASL >= 20000 */ result = sasl_server_start(conn, p, in, inlen, &out, &outlen, &errstr); # endif /* SASL >= 20000 */ + if (p != NULL) + auth_type = newstr(p); if (result != SASL_OK && result != SASL_CONTINUE) { - message("535 5.7.0 authentication failed"); - if (LogLevel > 9) - sm_syslog(LOG_ERR, e->e_id, - "AUTH failure (%s): %s (%d) %s, relay=%.100s", - p, - sasl_errstring(result, NULL, - NULL), - result, -# if SASL >= 20000 - sasl_errdetail(conn), -# else /* SASL >= 20000 */ - errstr, -# endif /* SASL >= 20000 */ - CurSmtpClient); - RESET_SASLCONN; + LOGAUTHFAIL; break; } - auth_type = newstr(p); if (result == SASL_OK) { @@ -2015,6 +2109,8 @@ smtp(nullserver, d_flags, e) /* authenticated by the initial response */ } + SET_AUTH_USER; + /* len is at least 2 */ len = ENC64LEN(outlen); out2 = xalloc(len); @@ -2040,7 +2136,7 @@ smtp(nullserver, d_flags, e) } # if SASL >= 20000 sm_free(out2); -# endif /* SASL >= 20000 */ +# endif break; #endif /* SASL */ @@ -2057,6 +2153,7 @@ smtp(nullserver, d_flags, e) message("503 5.5.0 TLS not available"); break; } + starttls: if (!tls_ok_srv) { message("454 4.3.3 TLS not available after start"); @@ -2076,28 +2173,20 @@ smtp(nullserver, d_flags, e) usrerr("454 4.7.0 Please try again later"); break; } - starttls: -# if USE_OPENSSL_ENGINE - if (!SSLEngineInitialized) + if (!TLS_set_engine(SSLEngine, false)) { - if (!SSL_set_engine(NULL)) - { - sm_syslog(LOG_ERR, NOQID, - "STARTTLS=server, SSL_set_engine=failed"); - tls_ok_srv = false; - message("454 4.3.3 TLS not available right now"); - break; - } - else - SSLEngineInitialized = true; + sm_syslog(LOG_ERR, NOQID, + "STARTTLS=server, engine=%s, TLS_set_engine=failed", + SSLEngine); + tls_ok_srv = false; + message("454 4.3.3 TLS not available right now"); + break; } -# endif /* USE_OPENSSL_ENGINE */ # if TLS_NO_RSA /* ** XXX do we need a temp key ? */ -# else /* TLS_NO_RSA */ -# endif /* TLS_NO_RSA */ +# endif # if TLS_VRFY_PER_CTX /* @@ -2109,22 +2198,37 @@ smtp(nullserver, d_flags, e) TLS_VERIFY_CLIENT(); # endif /* TLS_VRFY_PER_CTX */ +#define SMTLSFAILED \ + do { \ + SM_SSL_FREE(srv_ssl); \ + goto tls_done; \ + } while (0) + if (srv_ssl != NULL) SSL_clear(srv_ssl); else if ((srv_ssl = SSL_new(srv_ctx)) == NULL) { message("454 4.3.3 TLS not available: error generating SSL handle"); - if (LogLevel > 8) - tlslogerr(LOG_WARNING, "server"); + tlslogerr(LOG_WARNING, 8, "server"); goto tls_done; } - - if (get_tls_se_options(e, srv_ssl, true) != 0) + if (get_tls_se_options(e, srv_ssl, &tlsi_ctx, true) + != 0) { message("454 4.3.3 TLS not available: error setting options"); - SSL_free(srv_ssl); - srv_ssl = NULL; - goto tls_done; + SMTLSFAILED; + } + r = SSL_set_ex_data(srv_ssl, TLSsslidx, &tlsi_ctx); + if (0 == r) + { + if (LogLevel > 5) + { + sm_syslog(LOG_ERR, NOQID, + "STARTTLS=server, error: SSL_set_ex_data failed=%d", + r); + tlslogerr(LOG_WARNING, 9, "server"); + } + SMTLSFAILED; } # if !TLS_VRFY_PER_CTX @@ -2145,61 +2249,64 @@ smtp(nullserver, d_flags, e) SSL_set_wfd(srv_ssl, wfd) <= 0) { message("454 4.3.3 TLS not available: error set fd"); - SSL_free(srv_ssl); - srv_ssl = NULL; - goto tls_done; + SMTLSFAILED; } if (!smtps) message("220 2.0.0 Ready to start TLS"); # if PIPELINING (void) sm_io_flush(OutChannel, SM_TIME_DEFAULT); -# endif /* PIPELINING */ +# endif SSL_set_accept_state(srv_ssl); tlsstart = curtime(); - ssl_retry: - if ((r = SSL_accept(srv_ssl)) <= 0) - { - int i, ssl_err; - int save_errno = errno; - ssl_err = SSL_get_error(srv_ssl, r); - i = tls_retry(srv_ssl, rfd, wfd, tlsstart, + ssl_err = SSL_ERROR_WANT_READ; + save_errno = 0; + do + { + tlsret = tls_retry(srv_ssl, rfd, wfd, tlsstart, TimeOuts.to_starttls, ssl_err, "server"); - if (i > 0) - goto ssl_retry; - - if (LogLevel > 5) + if (tlsret <= 0) { - unsigned long l; - const char *sr; + if (LogLevel > 5) + { + unsigned long l; + const char *sr; - l = ERR_peek_error(); - sr = ERR_reason_error_string(l); - sm_syslog(LOG_WARNING, NOQID, - "STARTTLS=server, error: accept failed=%d, reason=%s, SSL_error=%d, errno=%d, retry=%d, relay=%.100s", - r, sr == NULL ? "unknown" - : sr, - ssl_err, save_errno, i, - CurSmtpClient); - if (LogLevel > 9) - tlslogerr(LOG_WARNING, "server"); + l = ERR_peek_error(); + sr = ERR_reason_error_string(l); + + sm_syslog(LOG_WARNING, NOQID, + "STARTTLS=server, error: accept failed=%d, reason=%s, SSL_error=%d, errno=%d, retry=%d, relay=%.100s", + r, sr == NULL ? "unknown" + : sr, + ssl_err, save_errno, + tlsret, CurSmtpClient); + tlslogerr(LOG_WARNING, 9, "server"); + } + tls_ok_srv = false; + SM_SSL_FREE(srv_ssl); + + /* + ** according to the next draft of + ** RFC 2487 the connection should + ** be dropped + ** + ** arrange to ignore any current + ** send list + */ + + e->e_sendqueue = NULL; + goto doquit; } - tls_ok_srv = false; - SSL_free(srv_ssl); - srv_ssl = NULL; - /* - ** according to the next draft of - ** RFC 2487 the connection should be dropped - */ - - /* arrange to ignore any current send list */ - e->e_sendqueue = NULL; - goto doquit; - } + r = SSL_accept(srv_ssl); + save_errno = 0; + if (r <= 0) + ssl_err = SSL_get_error(srv_ssl, r); + } while (r <= 0); /* ignore return code for now, it's in {verify} */ (void) tls_get_info(srv_ssl, true, @@ -2278,7 +2385,7 @@ smtp(nullserver, d_flags, e) tls_active = true; # if PIPELINING (void) sm_io_autoflush(InChannel, OutChannel); -# endif /* PIPELINING */ +# endif } else { @@ -2452,10 +2559,15 @@ smtp(nullserver, d_flags, e) tempfail = true; smtp.sm_milterize = false; if (response != NULL) + { + /* Can't use ("%s", ...) due to usrerr() requirements */ usrerr(response); + } else + { message("421 4.7.0 %s closing connection", MyHostName); + } /* arrange to ignore send list */ e->e_sendqueue = NULL; lognullconnection = false; @@ -2505,7 +2617,7 @@ smtp(nullserver, d_flags, e) #if PIPELINING if (bitset(SRV_OFFER_PIPE, features)) message("250-PIPELINING"); -#endif /* PIPELINING */ +#endif if (bitset(SRV_OFFER_EXPN, features)) { message("250-EXPN"); @@ -2514,7 +2626,7 @@ smtp(nullserver, d_flags, e) } #if MIME8TO7 message("250-8BITMIME"); -#endif /* MIME8TO7 */ +#endif if (MaxMessageSize > 0) message("250-SIZE %ld", MaxMessageSize); else @@ -2522,17 +2634,21 @@ smtp(nullserver, d_flags, e) #if DSN if (SendMIMEErrors && bitset(SRV_OFFER_DSN, features)) message("250-DSN"); -#endif /* DSN */ +#endif +#if _FFR_EAI + if (bitset(SRV_OFFER_EAI, features)) + message("250-SMTPUTF8"); +#endif /* _FFR_EAI */ if (bitset(SRV_OFFER_ETRN, features)) message("250-ETRN"); #if SASL if (sasl_ok && mechlist != NULL && *mechlist != '\0') message("250-AUTH %s", mechlist); -#endif /* SASL */ +#endif #if STARTTLS if (tls_ok_srv && bitset(SRV_OFFER_TLS, features)) message("250-STARTTLS"); -#endif /* STARTTLS */ +#endif if (DeliverByMin > 0) message("250-DELIVERBY %ld", (long) DeliverByMin); @@ -2577,6 +2693,7 @@ smtp(nullserver, d_flags, e) sm_syslog(LOG_INFO, e->e_id, "SMTP MAIL command (%.100s) from %s tempfailed (due to previous checks)", p, CurSmtpClient); + /* Can't use ("%s", ...) due to usrerr() requirements */ usrerr(MSG_TEMPFAIL); break; } @@ -2636,7 +2753,7 @@ smtp(nullserver, d_flags, e) extern char *FullName; QuickAbort = true; - SM_FREE_CLR(FullName); + SM_FREE(FullName); /* must parse sender first */ delimptr = NULL; @@ -2696,6 +2813,21 @@ smtp(nullserver, d_flags, e) if (Errors > 0) sm_exc_raisenew_x(&EtypeQuickAbort, 1); +#if _FFR_EAI + if (e->e_smtputf8) + { + protocol = GET_PROTOCOL(); + macdefine(&e->e_macro, A_PERM, 'r', protocol); + } + + /* UTF8 addresses are only legal with SMTPUTF8 */ + if (!e->e_smtputf8 && !addr_is_ascii(e->e_from.q_paddr)) + { + usrerr("553 5.6.7 That address requires SMTPUTF8"); + sm_exc_raisenew_x(&EtypeQuickAbort, 1); + } +#endif + #if SASL # if _FFR_AUTH_PASSING /* set the default AUTH= if the sender didn't */ @@ -2723,7 +2855,7 @@ smtp(nullserver, d_flags, e) /* make the "real" sender address available */ macdefine(&e->e_macro, A_TEMP, macid("{mail_from}"), e->e_from.q_paddr); -#endif /* _FFR_MAIL_MACRO */ +#endif if (rscheck("check_mail", addr, NULL, e, RSF_RMCOMM|RSF_COUNT, 3, NULL, e->e_id, NULL, NULL) != EX_OK || @@ -2753,7 +2885,7 @@ smtp(nullserver, d_flags, e) !enoughdiskspace(e->e_msgsize, e) #if _FFR_ANY_FREE_FS && !filesys_free(e->e_msgsize) -#endif /* _FFR_ANY_FREE_FS */ +#endif ) { /* @@ -2894,7 +3026,7 @@ smtp(nullserver, d_flags, e) if (!SM_IS_INTERACTIVE(e->e_sendmode) #if _FFR_DM_ONE && (NotFirstDelivery || SM_DM_ONE != e->e_sendmode) -#endif /* _FFR_DM_ONE */ +#endif ) e->e_flags |= EF_VRFYONLY; @@ -2908,8 +3040,8 @@ smtp(nullserver, d_flags, e) ** as QS_DONTSEND. */ - if (!(smtp.sm_milterlist && smtp.sm_milterize && - !bitset(EF_DISCARD, e->e_flags)) && + if (smtp.sm_milterlist && smtp.sm_milterize && + !bitset(EF_DISCARD, e->e_flags) && (smtp.sm_milters.mis_flags & (MIS_FL_DEL_RCPT|MIS_FL_REJ_RCPT)) != 0) e->e_flags |= EF_VRFYONLY; @@ -2933,6 +3065,13 @@ smtp(nullserver, d_flags, e) usrerr("501 5.0.0 Missing recipient"); goto rcpt_done; } +#if _FFR_EAI + if (!e->e_smtputf8 && !addr_is_ascii(a->q_paddr)) + { + usrerr("553 5.6.7 Address requires SMTPUTF8"); + goto rcpt_done; + } +#endif if (delimptr != NULL && *delimptr != '\0') *delimptr++ = '\0'; @@ -3081,8 +3220,8 @@ smtp(nullserver, d_flags, e) /* Is this needed? */ #if !MILTER rcpt_done: -#endif /* !MILTER */ - +#endif + macdefine(&e->e_macro, A_PERM, macid("{rcpt_mailer}"), NULL); macdefine(&e->e_macro, A_PERM, @@ -3226,7 +3365,7 @@ smtp(nullserver, d_flags, e) vrfyqueue = NULL; if (vrfy) e->e_flags |= EF_VRFYONLY; - while (*p != '\0' && isascii(*p) && isspace(*p)) + while (*p != '\0' && SM_ISSPACE(*p)) p++; if (*p == '\0') { @@ -3308,6 +3447,7 @@ smtp(nullserver, d_flags, e) sm_syslog(LOG_INFO, e->e_id, "SMTP ETRN command (%.100s) from %s tempfailed (due to previous checks)", p, CurSmtpClient); + /* Can't use ("%s", ...) due to usrerr() requirements */ usrerr(MSG_TEMPFAIL); break; } @@ -3404,7 +3544,7 @@ smtp(nullserver, d_flags, e) message("221 2.0.0 %s closing connection", MyHostName); #if PIPELINING (void) sm_io_flush(OutChannel, SM_TIME_DEFAULT); -#endif /* PIPELINING */ +#endif if (smtp.sm_nrcpts > 0) logundelrcpts(e, "aborted by sender", 9, false); @@ -3416,7 +3556,7 @@ smtp(nullserver, d_flags, e) /* shutdown TLS connection */ if (tls_active) { - (void) endtls(srv_ssl, "server"); + (void) endtls(&srv_ssl, "server"); tls_active = false; } #endif /* STARTTLS */ @@ -3436,7 +3576,7 @@ smtp(nullserver, d_flags, e) #if MILTER /* close out milter filters */ milter_quit(e); -#endif /* MILTER */ +#endif if (tTd(92, 2)) sm_dprintf("QUIT: e_id=%s, EF_LOGSENDER=%d, LogLevel=%d\n", @@ -3574,7 +3714,7 @@ smtp(nullserver, d_flags, e) } #if SASL } -#endif /* SASL */ +#endif } SM_EXCEPT(exc, "[!F]*") { @@ -3607,7 +3747,7 @@ smtp_data(smtp, e) { #if MILTER bool milteraccept; -#endif /* MILTER */ +#endif bool aborting; bool doublequeue; bool rv = true; @@ -3657,8 +3797,9 @@ smtp_data(smtp, e) #if _FFR_MILTER_ENHSC if (ISSMTPCODE(response)) (void) extenhsc(response + 4, ' ', e->e_enhsc); -#endif /* _FFR_MILTER_ENHSC */ +#endif + /* Can't use ("%s", ...) due to usrerr() requirements */ usrerr(response); if (strncmp(response, "421 ", 4) == 0 || strncmp(response, "421-", 4) == 0) @@ -3678,7 +3819,7 @@ smtp_data(smtp, e) #if _FFR_MILTER_ENHSC (void) sm_strlcpy(e->e_enhsc, "5.7.1", sizeof(e->e_enhsc)); -#endif /* _FFR_MILTER_ENHSC */ +#endif usrerr("550 5.7.1 Command rejected"); return true; @@ -3699,7 +3840,8 @@ smtp_data(smtp, e) } #if _FFR_MILTER_ENHSC (void) extenhsc(MSG_TEMPFAIL + 4, ' ', e->e_enhsc); -#endif /* _FFR_MILTER_ENHSC */ +#endif + /* Can't use ("%s", ...) due to usrerr() requirements */ usrerr(MSG_TEMPFAIL); return true; @@ -3778,7 +3920,8 @@ smtp_data(smtp, e) #if _FFR_MILTER_ENHSC if (ISSMTPCODE(response)) (void) extenhsc(response + 4, ' ', e->e_enhsc); -#endif /* _FFR_MILTER_ENHSC */ +#endif + /* Can't use ("%s", ...) due to usrerr() requirements */ usrerr(response); if (strncmp(response, "421 ", 4) == 0 || strncmp(response, "421-", 4) == 0) @@ -3809,7 +3952,8 @@ smtp_data(smtp, e) milteraccept = false; #if _FFR_MILTER_ENHSC (void) extenhsc(MSG_TEMPFAIL + 4, ' ', e->e_enhsc); -#endif /* _FFR_MILTER_ENHSC */ +#endif + /* Can't use ("%s", ...) due to usrerr() requirements */ usrerr(MSG_TEMPFAIL); break; @@ -3994,7 +4138,7 @@ smtp_data(smtp, e) #if NAMED_BIND _res.retry = TimeOuts.res_retry[RES_TO_FIRST]; _res.retrans = TimeOuts.res_retrans[RES_TO_FIRST]; -#endif /* NAMED_BIND */ +#endif #if _FFR_PROXY if (SM_PROXY_REQ == e->e_sendmode) @@ -4164,7 +4308,7 @@ smtp_data(smtp, e) message("250 2.0.0 %s Message accepted for delivery", id); #if _FFR_PROXY } -#endif /* _FFR_PROXY */ +#endif CurEnv->e_id = oldid; /* if we just queued, poke it */ @@ -4309,7 +4453,7 @@ logundelrcpts(e, msg, level, all) #if _FFR_MILTER_ENHSC (a->q_status == NULL && e->e_enhsc[0] != '\0') ? e->e_enhsc : -#endif /* _FFR_MILTER_ENHSC */ +#endif a->q_status, msg, NULL, (time_t) 0, e, a, EX_OK /* ??? */); } @@ -4483,9 +4627,9 @@ skipword(p, w) q = p; /* find end of word */ - while (*p != '\0' && *p != ':' && !(isascii(*p) && isspace(*p))) + while (*p != '\0' && *p != ':' && !(SM_ISSPACE(*p))) p++; - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) *p++ = '\0'; if (*p != ':') { @@ -4542,7 +4686,7 @@ reset_mail_esmtp_args(e) # if _FFR_AUTH_PASSING macdefine(&BlankEnvelope.e_macro, A_PERM, macid("{auth_author}"), NULL); -# endif /* _FFR_AUTH_PASSING */ +# endif #endif /* SASL */ /* "by" */ @@ -4728,7 +4872,7 @@ mail_esmtp_args(a, kp, vp, e) # if _FFR_AUTH_PASSING macdefine(&BlankEnvelope.e_macro, A_PERM, macid("{auth_author}"), NULL); -# endif /* _FFR_AUTH_PASSING */ +# endif } else { @@ -4820,6 +4964,17 @@ mail_esmtp_args(a, kp, vp, e) /* XXX: check whether more characters follow? */ } +#if _FFR_EAI + else if (sm_strcasecmp(kp, "smtputf8") == 0) + { + if (!bitset(SRV_OFFER_EAI, e->e_features)) + { + usrerr("504 5.7.0 Sorry, SMTPUTF8 not supported/enabled"); + /* NOTREACHED */ + } + e->e_smtputf8 = true; + } +#endif else { usrerr("555 5.5.4 %s parameter unrecognized", kp); @@ -5174,11 +5329,14 @@ static struct { 'C', SRV_REQ_SEC }, { 'D', SRV_OFFER_DSN }, { 'E', SRV_OFFER_ETRN }, +#if _FFR_EAI + { 'I', SRV_OFFER_EAI }, +#endif { 'L', SRV_REQ_AUTH }, #if PIPELINING # if _FFR_NO_PIPE { 'N', SRV_NO_PIPE }, -# endif /* _FFR_NO_PIPE */ +# endif { 'P', SRV_OFFER_PIPE }, #endif /* PIPELINING */ { 'R', SRV_VRFY_CLT }, /* same as V; not documented */ @@ -5453,4 +5611,140 @@ reset_saslconn(sasl_conn_t **conn, char *hostname, # endif /* SASL >= 20000 */ return SASL_OK; } + +/* +** GET_SASL_USER -- extract user part from SASL reply +** +** Parameters: +** val -- sasl reply (may contain NUL) +** len -- length of val +** auth_type -- auth_type (can be NULL) +** user -- output buffer for extract user +** user_len -- length of output buffer (user) +** +** Returns: +** none. +** +** Note: val is supplied by the client and hence may contain "bad" +** (non-printable) characters, but the returned value (user) +** is only used for logging which converts those characters. +*/ + +static void +get_sasl_user(val, len, auth_type, user, user_len) + char *val; + unsigned int len; + const char *auth_type; + char *user; + size_t user_len; +{ + unsigned int u; + + SM_ASSERT(val != NULL); + SM_ASSERT(user != NULL); + SM_ASSERT(user_len > 0); + + *user = '\0'; + if (NULL == auth_type || '\0' == *auth_type) + return; + if (0 == len) + return; + +# define DIGMD5U "username=\"" +# define DIGMD5U_L (sizeof(DIGMD5U) - 1) + if (sm_strcasecmp(auth_type, "digest-md5") == 0 && + strncmp(val, DIGMD5U, DIGMD5U_L) == 0) + { + char *s; + + val += DIGMD5U_L; + if (len <= DIGMD5U_L) + return; + len -= DIGMD5U_L; + + /* format? could there be a quoted '"'? */ + for (s = val, u = 0; *s != '\0' && u < len; s++) + { + if ('"' == *s) + { + *s = '\0'; + break; + } + if ('\\' == *s) + { + ++s; + if ('\0' == *s) + break; + } + } + } + else if (sm_strcasecmp(auth_type, "cram-md5") == 0) + { + char *s; + + for (s = val, u = 0; *s != '\0' && u < len; s++) + { + if (' ' == *s) + { + *s = '\0'; + break; + } + } + } + + else if (sm_strcasecmp(auth_type, "plain") == 0 || + sm_strcasecmp(auth_type, "login") == 0) + { + /* + ** RFC 4616: The PLAIN Simple Authentication and + ** Security Layer (SASL) Mechanism + ** message = [authzid] UTF8NUL authcid UTF8NUL passwd + ** each part: 1*SAFE ; MUST accept up to 255 octets + ** UTF8NUL = %x00 ; UTF-8 encoded NUL character + ** + ** draft-murchison-sasl-login: it's just username by its own + */ + + for (u = 0; u < len; u++) + { + if (val[u] == '\0') + { + val[u] = '/'; + (void) sm_strlcpy(user, + val + ((0 == u) ? 1 : 0), + user_len); + return; + } + } + } + else + { + /* + ** Extracting the "user" from other mechanisms + ** is currently not supported. + */ + + return; + } + + /* + ** Does the input buffer has an NUL in it so it can be treated + ** as a C string? + */ + + /* SM_ASSERT(len > 0); see above */ + u = len - 1; + if (val[u] != '\0') + { + for (u = 0; u < len; u++) + { + if (val[u] == '\0') + break; + } + } + if (val[u] != '\0') + user_len = SM_MIN(len, user_len); + + (void) sm_strlcpy(user, val, user_len); +} #endif /* SASL */ diff --git a/src/stab.c b/src/stab.c index bf8651113b73..6835662ae855 100644 --- a/src/stab.c +++ b/src/stab.c @@ -15,6 +15,10 @@ SM_RCSID("@(#)$Id: stab.c,v 8.92 2013-11-22 20:51:56 ca Exp $") +#if DANE +# include +#endif + /* ** STAB -- manage the symbol table ** @@ -157,13 +161,13 @@ stab(name, type, op) case ST_LMAP: len = sizeof(s->s_lmap); break; -#endif /* LDAPMAP */ +#endif #if MILTER case ST_MILTER: len = sizeof(s->s_milter); break; -#endif /* MILTER */ +#endif case ST_QUEUE: len = sizeof(s->s_quegrp); @@ -173,7 +177,13 @@ stab(name, type, op) case ST_SOCKETMAP: len = sizeof(s->s_socketmap); break; -#endif /* SOCKETMAP */ +#endif + +#if DANE + case ST_TLSA_RR: + len = sizeof(s->s_tlsa); + break; +#endif default: /* @@ -381,6 +391,15 @@ rmexpstab() SM_STAB_FREE(s->s_namecanon.nc_cname); /* XXX */ break; +#if DANE + case ST_TLSA_RR: + if (s->s_tlsa->dane_tlsa_exp >= now) + goto next; /* not expired */ + (void) dane_tlsa_free(s->s_tlsa); + s->s_tlsa = NULL; + break; +#endif /* DANE */ + default: if (s->s_symtype >= ST_MCI) { @@ -396,7 +415,7 @@ rmexpstab() #if SASL /* should always by NULL */ SM_STAB_FREE(s->s_mci.mci_sasl_string); -#endif /* SASL */ +#endif if (s->s_mci.mci_rpool != NULL) { sm_rpool_free(s->s_mci.mci_rpool); diff --git a/src/timers.c b/src/timers.c index 9ceb3a714f7b..5c7e2c7c71ab 100644 --- a/src/timers.c +++ b/src/timers.c @@ -38,7 +38,7 @@ warntimer(msg, va_alist) # if 0 if (!tTd(98, 30)) return; -# endif /* 0 */ +# endif SM_VA_START(ap, msg); (void) sm_vsnprintf(buf, sizeof(buf), msg, ap); SM_VA_END(ap); diff --git a/src/tls.c b/src/tls.c index 6b0ea25da255..696d32fbb6df 100644 --- a/src/tls.c +++ b/src/tls.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2006, 2008, 2009, 2011, 2013 Proofpoint, Inc. and its suppliers. + * Copyright (c) 2000-2006, 2008, 2009, 2011, 2013-2016 Proofpoint, Inc. and its suppliers. * All rights reserved. * * By using this file, you agree to the terms and conditions set @@ -13,37 +13,53 @@ SM_RCSID("@(#)$Id: tls.c,v 8.127 2013-11-27 02:51:11 gshapiro Exp $") #if STARTTLS +# include # include # include # include # ifndef HASURANDOMDEV # include -# endif /* ! HASURANDOMDEV */ -# if !TLS_NO_RSA +# endif +# include +# if _FFR_TLS_ALTNAMES +# include +# endif + +# if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER <= 0x00907000L +# ERROR: OpenSSL version OPENSSL_VERSION_NUMBER is unsupported. +# endif + +# if OPENSSL_VERSION_NUMBER >= 0x10100000L && OPENSSL_VERSION_NUMBER < 0x20000000L +# define MTA_HAVE_DH_set0_pqg 1 +# define MTA_HAVE_DSA_GENERATE_EX 1 + +# define MTA_HAVE_OPENSSL_init_ssl 1 +# define MTA_ASN1_STRING_data ASN1_STRING_get0_data +# include +# include +# else +# define X509_STORE_CTX_get0_cert(ctx) (ctx)->cert +# define MTA_RSA_TMP_CB 1 +# define MTA_ASN1_STRING_data ASN1_STRING_data +# endif + +# if !TLS_NO_RSA && MTA_RSA_TMP_CB static RSA *rsa_tmp = NULL; /* temporary RSA key */ static RSA *tmp_rsa_key __P((SSL *, int, int)); -# endif /* !TLS_NO_RSA */ -# if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x00907000L -static int tls_verify_cb __P((X509_STORE_CTX *)); -# else /* !defined() || OPENSSL_VERSION_NUMBER < 0x00907000L */ +# endif static int tls_verify_cb __P((X509_STORE_CTX *, void *)); -# endif /* !defined() || OPENSSL_VERSION_NUMBER < 0x00907000L */ -# if OPENSSL_VERSION_NUMBER > 0x00907000L static int x509_verify_cb __P((int, X509_STORE_CTX *)); -# endif /* OPENSSL_VERSION_NUMBER > 0x00907000L */ -# if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x00907000L -# define CONST097 -# else /* !defined() || OPENSSL_VERSION_NUMBER < 0x00907000L */ -# define CONST097 const -# endif /* !defined() || OPENSSL_VERSION_NUMBER < 0x00907000L */ -static void apps_ssl_info_cb __P((CONST097 SSL *, int , int)); +static void apps_ssl_info_cb __P((const SSL *, int , int)); static bool tls_ok_f __P((char *, char *, int)); static bool tls_safe_f __P((char *, long, bool)); static int tls_verify_log __P((int, X509_STORE_CTX *, const char *)); +int TLSsslidx = -1; + # if !NO_DH +# include static DH *get_dh512 __P((void)); static unsigned char dh512_p[] = @@ -64,13 +80,30 @@ static DH * get_dh512() { DH *dh = NULL; +# if MTA_HAVE_DH_set0_pqg + BIGNUM *dhp_bn, *dhg_bn; +# endif if ((dh = DH_new()) == NULL) return NULL; +# if MTA_HAVE_DH_set0_pqg + dhp_bn = BN_bin2bn(dh512_p, sizeof (dh512_p), NULL); + dhg_bn = BN_bin2bn(dh512_g, sizeof (dh512_g), NULL); + if (dhp_bn == NULL || dhg_bn == NULL || !DH_set0_pqg(dh, dhp_bn, NULL, dhg_bn)) { + DH_free(dh); + BN_free(dhp_bn); + BN_free(dhg_bn); + return NULL; + } +# else dh->p = BN_bin2bn(dh512_p, sizeof(dh512_p), NULL); dh->g = BN_bin2bn(dh512_g, sizeof(dh512_g), NULL); if ((dh->p == NULL) || (dh->g == NULL)) + { + DH_free(dh); return NULL; + } +# endif return dh; } @@ -117,9 +150,22 @@ get_dh2048() }; static unsigned char dh2048_g[]={ 0x02, }; DH *dh; +# if MTA_HAVE_DH_set0_pqg + BIGNUM *dhp_bn, *dhg_bn; +# endif if ((dh=DH_new()) == NULL) return(NULL); +# if MTA_HAVE_DH_set0_pqg + dhp_bn = BN_bin2bn(dh2048_p, sizeof (dh2048_p), NULL); + dhg_bn = BN_bin2bn(dh2048_g, sizeof (dh2048_g), NULL); + if (dhp_bn == NULL || dhg_bn == NULL || !DH_set0_pqg(dh, dhp_bn, NULL, dhg_bn)) { + DH_free(dh); + BN_free(dhp_bn); + BN_free(dhg_bn); + return NULL; + } +# else dh->p=BN_bin2bn(dh2048_p,sizeof(dh2048_p),NULL); dh->g=BN_bin2bn(dh2048_g,sizeof(dh2048_g),NULL); if ((dh->p == NULL) || (dh->g == NULL)) @@ -127,6 +173,7 @@ get_dh2048() DH_free(dh); return(NULL); } +# endif return(dh); } # endif /* !NO_DH */ @@ -182,7 +229,7 @@ tls_rand_init(randfile, logl) ok = false; done = RI_FAIL; randdef = (randfile == NULL || *randfile == '\0') ? RF_MISS : RF_OK; -# if EGD +# if EGD if (randdef == RF_OK && sm_strncasecmp(randfile, "egd:", 4) == 0) { randfile += 4; @@ -196,7 +243,7 @@ tls_rand_init(randfile, logl) ok = true; } else -# endif /* EGD */ +# endif /* EGD */ if (randdef == RF_OK && sm_strncasecmp(randfile, "file:", 5) == 0) { int fd; @@ -326,25 +373,46 @@ tls_rand_init(randfile, logl) ** fipsmode -- use FIPS? ** ** Returns: -** succeeded? +** 0: OK +** <0: perm.fail +** >0: fail but can continue */ -bool +int init_tls_library(fipsmode) bool fipsmode; { bool bv; + /* + ** OPENSSL_init_ssl(3): "As of version 1.1.0 OpenSSL will + ** automatically allocate all resources that it needs + ** so no explicit initialisation is required." + */ + +# if !MTA_HAVE_OPENSSL_init_ssl /* basic TLS initialization, ignore result for now */ SSL_library_init(); SSL_load_error_strings(); OpenSSL_add_all_algorithms(); -# if 0 - /* this is currently a macro for SSL_library_init */ - SSLeay_add_ssl_algorithms(); -# endif /* 0 */ +# endif - bv = tls_rand_init(RandFile, 7); + bv = true; + if (TLSsslidx < 0) + { + TLSsslidx = SSL_get_ex_new_index(0, 0, 0, 0, 0); + if (TLSsslidx < 0) + { + if (LogLevel > 0) + sm_syslog(LOG_ERR, NOQID, + "STARTTLS=init, SSL_get_ex_new_index=%d", + TLSsslidx); + bv = false; + } + } + + if (bv) + bv = tls_rand_init(RandFile, 7); # if _FFR_FIPSMODE if (bv && fipsmode) { @@ -357,7 +425,7 @@ init_tls_library(fipsmode) sm_syslog(LOG_ERR, NOQID, "STARTTLS=init, FIPSMode=%s", ERR_error_string(err, NULL)); - return false; + return -1; } else { @@ -365,8 +433,20 @@ init_tls_library(fipsmode) sm_syslog(LOG_INFO, NOQID, "STARTTLS=init, FIPSMode=ok"); } + if (CertFingerprintAlgorithm == NULL) + CertFingerprintAlgorithm = "sha1"; } -#endif /* _FFR_FIPSMODE */ +# endif /* _FFR_FIPSMODE */ + + if (!TLS_set_engine(SSLEngine, true)) + { + if (LogLevel > 0) + sm_syslog(LOG_ERR, NOQID, + "STARTTLS=init, engine=%s, TLS_set_engine=failed", + SSLEngine); + return -1; + } + if (bv && CertFingerprintAlgorithm != NULL) { const EVP_MD *md; @@ -383,7 +463,7 @@ init_tls_library(fipsmode) else EVP_digest = md; } - return bv; + return bv ? 0 : 1; } /* @@ -391,7 +471,7 @@ init_tls_library(fipsmode) ** ** Parameters: ** ctx -- TLS context -** ssl -- TLS structure +** ssl -- TLS session context ** vrfy -- request certificate? ** ** Returns: @@ -417,10 +497,10 @@ tls_set_verify(ctx, ssl, vrfy) { # if !TLS_VRFY_PER_CTX SSL_set_verify(ssl, vrfy ? SSL_VERIFY_PEER : SSL_VERIFY_NONE, NULL); -# else /* !TLS_VRFY_PER_CTX */ +# else SSL_CTX_set_verify(ctx, vrfy ? SSL_VERIFY_PEER : SSL_VERIFY_NONE, NULL); -# endif /* !TLS_VRFY_PER_CTX */ +# endif } /* @@ -546,6 +626,7 @@ tls_safe_f(var, sff, srv) ** Returns: ** 0/SFF_NORFILES */ + # define TLS_UNR(bit, req) (bitset(bit, req) ? SFF_NORFILES : 0) # define TLS_OUNR(bit, req) (bitset(bit, req) ? SFF_NOWRFILES : 0) # define TLS_KEYSFF(req) \ @@ -578,12 +659,12 @@ tls_safe_f(var, sff, srv) ok = false; \ } -# if _FFR_TLS_SE_OPTS /* ** LOAD_CERTKEY -- load cert/key for TLS session ** ** Parameters: ** ssl -- TLS session context +** srv -- server side? ** certfile -- filename of certificate ** keyfile -- filename of private key ** @@ -639,8 +720,7 @@ load_certkey(ssl, srv, certfile, keyfile) sm_syslog(LOG_WARNING, NOQID, "STARTTLS=%s, error: %s(%s) failed", who, SSL_USE_CERT, certfile); - if (LogLevel > 9) - tlslogerr(LOG_WARNING, who); + tlslogerr(LOG_WARNING, 9, who); } if (bitset(TLS_I_USE_CERT, req)) return false; @@ -653,8 +733,7 @@ load_certkey(ssl, srv, certfile, keyfile) sm_syslog(LOG_WARNING, NOQID, "STARTTLS=%s, error: SSL_use_PrivateKey_file(%s) failed", who, keyfile); - if (LogLevel > 9) - tlslogerr(LOG_WARNING, who); + tlslogerr(LOG_WARNING, 9, who); } if (bitset(TLS_I_USE_KEY, req)) return false; @@ -670,8 +749,7 @@ load_certkey(ssl, srv, certfile, keyfile) sm_syslog(LOG_WARNING, NOQID, "STARTTLS=%s, error: SSL_check_private_key failed(%s): %d", who, keyfile, r); - if (LogLevel > 9) - tlslogerr(LOG_WARNING, who); + tlslogerr(LOG_WARNING, 9, who); } if (bitset(TLS_I_USE_KEY, req)) return false; @@ -679,7 +757,143 @@ load_certkey(ssl, srv, certfile, keyfile) return true; } -# endif /* _FFR_TLS_SE_OPTS */ + +/* +** LOAD_CRLFILE -- load a file holding a CRL into the TLS context +** +** Parameters: +** ctx -- TLS context +** srv -- server side? +** filename -- filename of CRL +** +** Returns: +** succeeded? +*/ + +static bool load_crlfile __P((SSL_CTX *, bool, char *)); + +static bool +load_crlfile(ctx, srv, filename) + SSL_CTX *ctx; + bool srv; + char *filename; +{ + char *who; + BIO *crl_file; + X509_CRL *crl; + X509_STORE *store; + + who = srv ? "server" : "client"; + crl_file = BIO_new(BIO_s_file()); + if (crl_file == NULL) + { + if (LogLevel > 9) + sm_syslog(LOG_WARNING, NOQID, + "STARTTLS=%s, error: BIO_new=failed", who); + return false; + } + + if (BIO_read_filename(crl_file, filename) < 0) + { + if (LogLevel > 9) + sm_syslog(LOG_WARNING, NOQID, + "STARTTLS=%s, error: BIO_read_filename(%s)=failed", + who, filename); + + /* avoid memory leaks */ + BIO_free(crl_file); + return false; + } + + crl = PEM_read_bio_X509_CRL(crl_file, NULL, NULL, NULL); + if (crl == NULL) + { + if (LogLevel > 9) + sm_syslog(LOG_WARNING, NOQID, + "STARTTLS=%s, error: PEM_read_bio_X509_CRL(%s)=failed", + who, filename); + BIO_free(crl_file); + return true; /* XXX should probably be 'false' */ + } + + BIO_free(crl_file); + + /* get a pointer to the current certificate validation store */ + store = SSL_CTX_get_cert_store(ctx); /* does not fail */ + + if (X509_STORE_add_crl(store, crl) == 0) + { + if (LogLevel > 9) + sm_syslog(LOG_WARNING, NOQID, + "STARTTLS=%s, error: X509_STORE_add_crl=failed", + who); + X509_CRL_free(crl); + return false; + } + + X509_CRL_free(crl); + + X509_STORE_set_flags(store, + X509_V_FLAG_CRL_CHECK|X509_V_FLAG_CRL_CHECK_ALL); + X509_STORE_set_verify_cb_func(store, x509_verify_cb); + + return true; +} + +/* +** LOAD_CRLPATH -- configure the TLS context to lookup CRLs in a directory +** +** Parameters: +** ctx -- TLS context +** srv -- server side? +** path -- path of hashed directory of CRLs +** +** Returns: +** succeeded? +*/ + +static bool load_crlpath __P((SSL_CTX *, bool, char *)); + +static bool +load_crlpath(ctx, srv, path) + SSL_CTX *ctx; + bool srv; + char *path; +{ + char *who; + X509_STORE *store; + X509_LOOKUP *lookup; + + who = srv ? "server" : "client"; + + /* get a pointer to the current certificate validation store */ + store = SSL_CTX_get_cert_store(ctx); /* does not fail */ + + lookup = X509_STORE_add_lookup(store, X509_LOOKUP_hash_dir()); + if (lookup == NULL) + { + if (LogLevel > 9) + sm_syslog(LOG_WARNING, NOQID, + "STARTTLS=%s, error: X509_STORE_add_lookup(hash)=failed", + who); + return false; + } + + if (X509_LOOKUP_add_dir(lookup, path, X509_FILETYPE_PEM) == 0) + { + if (LogLevel > 9) + sm_syslog(LOG_WARNING, NOQID, + "STARTTLS=%s, error: X509_LOOKUP_add_dir(%s)=failed", + who, path); + return false; + } + + X509_STORE_set_flags(store, + X509_V_FLAG_CRL_CHECK|X509_V_FLAG_CRL_CHECK_ALL); + X509_STORE_set_verify_cb_func(store, x509_verify_cb); + + return true; +} /* ** INITTLS -- initialize TLS @@ -709,11 +923,11 @@ load_certkey(ssl, srv, certfile, keyfile) static char server_session_id_context[] = "sendmail8"; /* 0.9.8a and b have a problem with SSL_OP_TLS_BLOCK_PADDING_BUG */ -#if (OPENSSL_VERSION_NUMBER >= 0x0090800fL) -# define SM_SSL_OP_TLS_BLOCK_PADDING_BUG 1 -#else -# define SM_SSL_OP_TLS_BLOCK_PADDING_BUG 0 -#endif +# if (OPENSSL_VERSION_NUMBER >= 0x0090800fL) +# define SM_SSL_OP_TLS_BLOCK_PADDING_BUG 1 +# else +# define SM_SSL_OP_TLS_BLOCK_PADDING_BUG 0 +# endif bool inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhparam) @@ -725,24 +939,19 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar { # if !NO_DH static DH *dh = NULL; -# endif /* !NO_DH */ +# endif int r; bool ok; long sff, status; char *who; char *cf2, *kf2; -# if SM_CONF_SHM +# if SM_CONF_SHM && !TLS_NO_RSA && MTA_RSA_TMP_CB extern int ShmId; -# endif /* SM_CONF_SHM */ -# if OPENSSL_VERSION_NUMBER > 0x00907000L - BIO *crl_file; - X509_CRL *crl; - X509_STORE *store; -# endif /* OPENSSL_VERSION_NUMBER > 0x00907000L */ -#if SM_SSL_OP_TLS_BLOCK_PADDING_BUG +# endif +# if SM_SSL_OP_TLS_BLOCK_PADDING_BUG long rt_version; STACK_OF(SSL_COMP) *comp_methods; -#endif +# endif status = TLS_S_NONE; who = srv ? "server" : "client"; @@ -790,10 +999,8 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar TLS_OK_F(cacertfile, "CACertFile", bitset(TLS_I_CERTF_EX, req), TLS_S_CERTF_EX, TLS_T_OTHER); -# if OPENSSL_VERSION_NUMBER > 0x00907000L TLS_OK_F(CRLFile, "CRLFile", bitset(TLS_I_CRLF_EX, req), TLS_S_CRLF_EX, TLS_T_OTHER); -# endif /* OPENSSL_VERSION_NUMBER > 0x00907000L */ /* ** if the second file is specified it must exist @@ -821,7 +1028,7 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar ** /file/name read parameters from /file/name */ -#define SET_DH_DFL \ +# define SET_DH_DFL \ do { \ dhparam = "I"; \ req |= TLS_I_DHFIXED; \ @@ -888,11 +1095,9 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar if (!bitset(TLS_S_DHPAR_OK, status)) SET_DH_DFL; } -# if OPENSSL_VERSION_NUMBER > 0x00907000L TLS_SAFE_F(CRLFile, sff | TLS_UNR(TLS_I_CRLF_UNR, req), bitset(TLS_I_CRLF_EX, req), bitset(TLS_S_CRLF_EX, status), TLS_S_CRLF_OK, srv); -# endif /* OPENSSL_VERSION_NUMBER > 0x00907000L */ if (!ok) return ok; if (cf2 != NULL) @@ -916,82 +1121,57 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar sm_syslog(LOG_WARNING, NOQID, "STARTTLS=%s, error: SSL_CTX_new(SSLv23_%s_method()) failed", who, who); - if (LogLevel > 9) - tlslogerr(LOG_WARNING, who); + tlslogerr(LOG_WARNING, 9, who); return false; } -# if OPENSSL_VERSION_NUMBER > 0x00907000L - if (CRLFile != NULL) +# if _FFR_VRFY_TRUSTED_FIRST + if (!tTd(88, 101)) { + X509_STORE *store; + /* get a pointer to the current certificate validation store */ store = SSL_CTX_get_cert_store(*ctx); /* does not fail */ - crl_file = BIO_new(BIO_s_file_internal()); - if (crl_file != NULL) - { - if (BIO_read_filename(crl_file, CRLFile) >= 0) - { - crl = PEM_read_bio_X509_CRL(crl_file, NULL, - NULL, NULL); - BIO_free(crl_file); - X509_STORE_add_crl(store, crl); - X509_CRL_free(crl); - X509_STORE_set_flags(store, - X509_V_FLAG_CRL_CHECK|X509_V_FLAG_CRL_CHECK_ALL); - X509_STORE_set_verify_cb_func(store, - x509_verify_cb); - } - else - { - if (LogLevel > 9) - { - sm_syslog(LOG_WARNING, NOQID, - "STARTTLS=%s, error: PEM_read_bio_X509_CRL(%s)=failed", - who, CRLFile); - } + SM_ASSERT(store != NULL); + X509_STORE_set_flags(store, X509_V_FLAG_TRUSTED_FIRST); + } +# endif - /* avoid memory leaks */ - BIO_free(crl_file); - return false; - } + if (CRLFile != NULL && !load_crlfile(*ctx, srv, CRLFile)) + return false; + if (CRLPath != NULL && !load_crlpath(*ctx, srv, CRLPath)) + return false; - } - else if (LogLevel > 9) +# if defined(SSL_MODE_AUTO_RETRY) && OPENSSL_VERSION_NUMBER >= 0x10100000L && OPENSSL_VERSION_NUMBER < 0x20000000L + /* + * Turn off blocking I/O handling in OpenSSL: someone turned + * this on by default in 1.1? should we check first? + */ +# if _FFR_TESTS + if (LogLevel > 9) { + sff = SSL_CTX_get_mode(*ctx); + if (sff & SSL_MODE_AUTO_RETRY) sm_syslog(LOG_WARNING, NOQID, - "STARTTLS=%s, error: BIO_new=failed", who); + "STARTTLS=%s, SSL_MODE_AUTO_RETRY=set, mode=%#lx", + who, sff); } - else - store = NULL; -# if _FFR_CRLPATH - if (CRLPath != NULL && store != NULL) - { - X509_LOOKUP *lookup; - lookup = X509_STORE_add_lookup(store, X509_LOOKUP_hash_dir()); - if (lookup == NULL) - { - if (LogLevel > 9) - { - sm_syslog(LOG_WARNING, NOQID, - "STARTTLS=%s, error: X509_STORE_add_lookup(hash)=failed", - who, CRLFile); - } - return false; - } - X509_LOOKUP_add_dir(lookup, CRLPath, X509_FILETYPE_PEM); - X509_STORE_set_flags(store, - X509_V_FLAG_CRL_CHECK|X509_V_FLAG_CRL_CHECK_ALL); - } -# endif /* _FFR_CRLPATH */ -# endif /* OPENSSL_VERSION_NUMBER > 0x00907000L */ + /* hack for testing! */ + if (tTd(96, 101) || getenv("SSL_MODE_AUTO_RETRY") != NULL) + SSL_CTX_set_mode(*ctx, SSL_MODE_AUTO_RETRY); + else +# endif + SSL_CTX_clear_mode(*ctx, SSL_MODE_AUTO_RETRY); +# endif /* defined(SSL_MODE_AUTO_RETRY) && OPENSSL_VERSION_NUMBER >= 0x10100000L && OPENSSL_VERSION_NUMBER < 0x20000000L */ + # if TLS_NO_RSA /* turn off backward compatibility, required for no-rsa */ SSL_CTX_set_options(*ctx, SSL_OP_NO_SSLv2); -# endif /* TLS_NO_RSA */ +# endif -# if !TLS_NO_RSA +# if !TLS_NO_RSA && MTA_RSA_TMP_CB /* ** Create a temporary RSA key ** XXX Maybe we shouldn't create this always (even though it @@ -1015,12 +1195,11 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar sm_syslog(LOG_WARNING, NOQID, "STARTTLS=%s, error: RSA_generate_key failed", who); - if (LogLevel > 9) - tlslogerr(LOG_WARNING, who); + tlslogerr(LOG_WARNING, 9, who); } return false; } -# endif /* !TLS_NO_RSA */ +# endif /* !TLS_NO_RSA && MTA_RSA_TMP_CB */ /* ** load private key @@ -1036,22 +1215,21 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar sm_syslog(LOG_WARNING, NOQID, "STARTTLS=%s, error: SSL_CTX_use_PrivateKey_file(%s) failed", who, keyfile); - if (LogLevel > 9) - tlslogerr(LOG_WARNING, who); + tlslogerr(LOG_WARNING, 9, who); } if (bitset(TLS_I_USE_KEY, req)) return false; } -#if _FFR_TLS_USE_CERTIFICATE_CHAIN_FILE -# define SSL_CTX_use_cert(ssl_ctx, certfile) \ +# if _FFR_TLS_USE_CERTIFICATE_CHAIN_FILE +# define SSL_CTX_use_cert(ssl_ctx, certfile) \ SSL_CTX_use_certificate_chain_file(ssl_ctx, certfile) -# define SSL_CTX_USE_CERT "SSL_CTX_use_certificate_chain_file" -#else -# define SSL_CTX_use_cert(ssl_ctx, certfile) \ +# define SSL_CTX_USE_CERT "SSL_CTX_use_certificate_chain_file" +# else +# define SSL_CTX_use_cert(ssl_ctx, certfile) \ SSL_CTX_use_certificate_file(ssl_ctx, certfile, SSL_FILETYPE_PEM) -# define SSL_CTX_USE_CERT "SSL_CTX_use_certificate_file" -#endif +# define SSL_CTX_USE_CERT "SSL_CTX_use_certificate_file" +# endif /* get the certificate file */ if (bitset(TLS_S_CERT_OK, status) && @@ -1062,8 +1240,7 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar sm_syslog(LOG_WARNING, NOQID, "STARTTLS=%s, error: %s(%s) failed", who, SSL_CTX_USE_CERT, certfile); - if (LogLevel > 9) - tlslogerr(LOG_WARNING, who); + tlslogerr(LOG_WARNING, 9, who); } if (bitset(TLS_I_USE_CERT, req)) return false; @@ -1079,8 +1256,7 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar sm_syslog(LOG_WARNING, NOQID, "STARTTLS=%s, error: SSL_CTX_check_private_key failed(%s): %d", who, keyfile, r); - if (LogLevel > 9) - tlslogerr(LOG_WARNING, who); + tlslogerr(LOG_WARNING, 9, who); } if (bitset(TLS_I_USE_KEY, req)) return false; @@ -1097,8 +1273,7 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar sm_syslog(LOG_WARNING, NOQID, "STARTTLS=%s, error: SSL_CTX_use_PrivateKey_file(%s) failed", who, kf2); - if (LogLevel > 9) - tlslogerr(LOG_WARNING, who); + tlslogerr(LOG_WARNING, 9, who); } } @@ -1111,8 +1286,7 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar sm_syslog(LOG_WARNING, NOQID, "STARTTLS=%s, error: %s(%s) failed", who, SSL_CTX_USE_CERT, cf2); - if (LogLevel > 9) - tlslogerr(LOG_WARNING, who); + tlslogerr(LOG_WARNING, 9, who); } } @@ -1126,14 +1300,13 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar sm_syslog(LOG_WARNING, NOQID, "STARTTLS=%s, error: SSL_CTX_check_private_key 2 failed: %d", who, r); - if (LogLevel > 9) - tlslogerr(LOG_WARNING, who); + tlslogerr(LOG_WARNING, 9, who); } } /* SSL_CTX_set_quiet_shutdown(*ctx, 1); violation of standard? */ -#if SM_SSL_OP_TLS_BLOCK_PADDING_BUG +# if SM_SSL_OP_TLS_BLOCK_PADDING_BUG /* ** In OpenSSL 0.9.8[ab], enabling zlib compression breaks the @@ -1145,23 +1318,23 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar ** just the compile time version. */ - rt_version = SSLeay(); + rt_version = TLS_version_num(); if (rt_version >= 0x00908000L && rt_version <= 0x0090802fL) { comp_methods = SSL_COMP_get_compression_methods(); if (comp_methods != NULL && sk_SSL_COMP_num(comp_methods) > 0) options &= ~SSL_OP_TLS_BLOCK_PADDING_BUG; } -#endif +# endif SSL_CTX_set_options(*ctx, (long) options); # if !NO_DH /* Diffie-Hellman initialization */ if (bitset(TLS_I_TRY_DH, req)) { -#if _FFR_TLS_EC +# if TLS_EC == 1 EC_KEY *ecdh; -#endif /* _FFR_TLS_EC */ +# endif if (tTd(96, 8)) sm_dprintf("inittls: req=%#lx, status=%#lx\n", @@ -1183,8 +1356,7 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar "STARTTLS=%s, error: cannot read DH parameters(%s): %s", who, dhparam, ERR_error_string(err, NULL)); - if (LogLevel > 9) - tlslogerr(LOG_WARNING, who); + tlslogerr(LOG_WARNING, 9, who); SET_DH_DFL; } } @@ -1195,8 +1367,7 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar sm_syslog(LOG_WARNING, NOQID, "STARTTLS=%s, error: BIO_new_file(%s) failed", who, dhparam); - if (LogLevel > 9) - tlslogerr(LOG_WARNING, who); + tlslogerr(LOG_WARNING, 9, who); } } } @@ -1209,10 +1380,21 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar if (tTd(96, 2)) sm_dprintf("inittls: Generating %d bit DH parameters\n", bits); +# if MTA_HAVE_DSA_GENERATE_EX + dsa = DSA_new(); + if (dsa != NULL) + { + r = DSA_generate_parameters_ex(dsa, bits, NULL, + 0, NULL, NULL, NULL); + if (r != 0) + dh = DSA_dup_DH(dsa); + } +# else /* this takes a while! */ dsa = DSA_generate_parameters(bits, NULL, 0, NULL, NULL, 0, NULL); dh = DSA_dup_DH(dsa); +# endif DSA_free(dsa); } else if (dh == NULL && bitset(TLS_I_DHFIXED, req)) @@ -1256,7 +1438,10 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar DH_free(dh); } -#if _FFR_TLS_EC +# if TLS_EC == 2 + SSL_CTX_set_options(*ctx, SSL_OP_SINGLE_ECDH_USE); + SSL_CTX_set_ecdh_auto(*ctx, 1); +# elif TLS_EC == 1 ecdh = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1); if (ecdh != NULL) { @@ -1264,7 +1449,13 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar SSL_CTX_set_tmp_ecdh(*ctx, ecdh); EC_KEY_free(ecdh); } -#endif /* _FFR_TLS_EC */ + else if (LogLevel > 9) + { + sm_syslog(LOG_WARNING, NOQID, + "STARTTLS=%s, EC_KEY_new_by_curve_name(NID_X9_62_prime256v1)=failed, error=%s", + who, ERR_error_string(ERR_get_error(), NULL)); + } +# endif /* TLS_EC */ } # endif /* !NO_DH */ @@ -1293,10 +1484,10 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar if ((r = SSL_CTX_load_verify_locations(*ctx, cacertfile, cacertpath)) == 1) { -# if !TLS_NO_RSA +# if !TLS_NO_RSA && MTA_RSA_TMP_CB if (bitset(TLS_I_RSA_TMP, req)) SSL_CTX_set_tmp_rsa_callback(*ctx, tmp_rsa_key); -# endif /* !TLS_NO_RSA */ +# endif /* ** We have to install our own verify callback: @@ -1312,16 +1503,19 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar ** but we hope that that function will later on ** only set the mode per connection. */ + SSL_CTX_set_verify(*ctx, bitset(TLS_I_NO_VRFY, req) ? SSL_VERIFY_NONE : SSL_VERIFY_PEER, NULL); - /* install verify callback */ + if (srv) + { + SSL_CTX_set_client_CA_list(*ctx, + SSL_load_client_CA_file(cacertfile)); + } SSL_CTX_set_cert_verify_callback(*ctx, tls_verify_cb, - NULL); - SSL_CTX_set_client_CA_list(*ctx, - SSL_load_client_CA_file(cacertfile)); + NULL); } else { @@ -1331,13 +1525,15 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar ** which in turn would be necessary ** if we want to allow relaying based on it. */ + if (LogLevel > 5) { sm_syslog(LOG_WARNING, NOQID, "STARTTLS=%s, error: load verify locs %s, %s failed: %d", who, cacertpath, cacertfile, r); - if (LogLevel > 9) - tlslogerr(LOG_WARNING, who); + tlslogerr(LOG_WARNING, + bitset(TLS_I_VRFY_LOC, req) ? 8 : 9, + who); } if (bitset(TLS_I_VRFY_LOC, req)) return false; @@ -1359,8 +1555,7 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar "STARTTLS=%s, error: SSL_CTX_set_cipher_list(%s) failed, list ignored", who, CipherList); - if (LogLevel > 9) - tlslogerr(LOG_WARNING, who); + tlslogerr(LOG_WARNING, 9, who); } /* failure if setting to this list is required? */ } @@ -1392,6 +1587,7 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar ** ** Parameters: ** cert -- TLS cert +** evp_digest -- digest algorithm ** mac -- macro storage ** macro -- where to store cert fp ** @@ -1432,12 +1628,117 @@ cert_fp(cert, evp_digest, mac, macro) return 1; } +/* host for logging */ +#define whichhost host == NULL ? "local" : host + +# if _FFR_TLS_ALTNAMES + +/* +** CLEARCLASS -- clear the specified class (called from stabapply) +** +** Parameters: +** s -- STAB +** id -- class id +** +** Returns: +** none. +*/ + +static void +clearclass(s, id) + STAB *s; + int id; +{ + if (s->s_symtype != ST_CLASS) + return; + if (bitnset(bitidx(id), s->s_class)) + clrbitn(bitidx(id), s->s_class); +} + +/* +** GETALTNAMES -- set subject_alt_name +** +** Parameters: +** cert -- cert +** srv -- server side? +** host -- hostname of other side +** +** Returns: +** none. +*/ + +static void +getaltnames(cert, srv, host) + X509 *cert; + bool srv; + const char *host; +{ + STACK_OF(GENERAL_NAME) *gens; + int i, j, len, r; + const GENERAL_NAME *gn; + char *dnsname, *who; + + if (!SetCertAltnames) + return; + who = srv ? "server" : "client"; + gens = X509_get_ext_d2i(cert, NID_subject_alt_name, 0, 0); + if (gens == NULL) + return; + + r = sk_GENERAL_NAME_num(gens); + for (i = 0; i < r; i++) + { + gn = sk_GENERAL_NAME_value(gens, i); + if (gn == NULL || gn->type != GEN_DNS) + continue; + + /* Ensure data is IA5 */ + if (ASN1_STRING_type(gn->d.ia5) != V_ASN1_IA5STRING) + { + if (LogLevel > 6) + sm_syslog(LOG_INFO, NOQID, + "STARTTLS=%s, relay=%.100s, field=AltName, status=value contains non IA5", + who, whichhost); + continue; + } + dnsname = (char *) MTA_ASN1_STRING_data(gn->d.ia5); + if (dnsname == NULL) + continue; + len = ASN1_STRING_length(gn->d.ia5); + + /* + ** "remove" trailing NULs (except for one of course), + ** those can happen and are OK (not a sign of an attack) + */ + + while (len > 0 && '\0' == dnsname[len - 1]) + len--; + +#define ISPRINT(c) (isascii(c) && isprint(c)) + + /* just check for printable char for now */ + for (j = 0; j < len && ISPRINT(dnsname[j]); j++) + ; + if (dnsname[j] != '\0' || len != j) + continue; + + setclass(macid("{cert_altnames}"), xtextify(dnsname, "<>\")")); + if (LogLevel > 14) + sm_syslog(LOG_DEBUG, NOQID, + "STARTTLS=%s, relay=%.100s, AltName=%s", + who, whichhost, xtextify(dnsname, "<>\")")); + } +} +# else +# define getaltnames(cert, srv, host) +# endif /* _FFR_TLS_ALTNAMES */ + /* ** TLS_GET_INFO -- get information about TLS connection ** ** Parameters: -** ssl -- TLS connection structure -** srv -- server or client +** ssl -- TLS session context +** srv -- server side? ** host -- hostname of other side ** mac -- macro storage ** certreq -- did we ask for a cert? @@ -1463,6 +1764,9 @@ tls_get_info(ssl, srv, host, mac, certreq) char *s, *who; char bitstr[16]; X509 *cert; +# if DANE + dane_vrfy_ctx_P dane_vrfy_ctx; +# endif c = SSL_get_current_cipher(ssl); @@ -1486,6 +1790,9 @@ tls_get_info(ssl, srv, host, mac, certreq) sm_syslog(LOG_INFO, NOQID, "STARTTLS=%s, get_verify: %ld get_peer: 0x%lx", who, verifyok, (unsigned long) cert); +# if _FFR_TLS_ALTNAMES + stabapply(clearclass, macid("{cert_altnames}")); +# endif if (cert != NULL) { X509_NAME *subj, *issuer; @@ -1500,7 +1807,7 @@ tls_get_info(ssl, srv, host, mac, certreq) macdefine(mac, A_TEMP, macid("{cert_issuer}"), xtextify(buf, "<>\")")); -# define LL_BADCERT 8 +# define LL_BADCERT 8 #define CERTFPMACRO (CertFingerprintAlgorithm != NULL ? "{cert_fp}" : "{cert_md5}") @@ -1512,9 +1819,7 @@ tls_get_info(ssl, srv, host, mac, certreq) if (LogLevel > LL_BADCERT) \ sm_syslog(LOG_INFO, NOQID, \ "STARTTLS=%s, relay=%.100s, field=%s, status=failed to extract CN", \ - who, \ - host == NULL ? "local" : host, \ - which); \ + who, whichhost, which); \ } \ else if ((size_t)r >= sizeof(buf) - 1) \ { \ @@ -1522,9 +1827,7 @@ tls_get_info(ssl, srv, host, mac, certreq) if (LogLevel > 7) \ sm_syslog(LOG_INFO, NOQID, \ "STARTTLS=%s, relay=%.100s, field=%s, status=CN too long", \ - who, \ - host == NULL ? "local" : host, \ - which); \ + who, whichhost, which); \ } \ else if ((size_t)r > strlen(buf)) \ { \ @@ -1533,9 +1836,7 @@ tls_get_info(ssl, srv, host, mac, certreq) if (LogLevel > 7) \ sm_syslog(LOG_INFO, NOQID, \ "STARTTLS=%s, relay=%.100s, field=%s, status=CN contains NUL", \ - who, \ - host == NULL ? "local" : host, \ - which); \ + who, whichhost, which); \ } \ } while (0) @@ -1550,6 +1851,7 @@ tls_get_info(ssl, srv, host, mac, certreq) macdefine(mac, A_TEMP, macid("{cn_issuer}"), xtextify(buf, "<>\")")); (void) cert_fp(cert, EVP_digest, mac, CERTFPMACRO); + getaltnames(cert, srv, host); } else { @@ -1559,6 +1861,30 @@ tls_get_info(ssl, srv, host, mac, certreq) macdefine(mac, A_PERM, macid("{cn_issuer}"), ""); macdefine(mac, A_TEMP, macid(CERTFPMACRO), ""); } +# if DANE + dane_vrfy_ctx = NULL; + if (TLSsslidx >= 0) + { + tlsi_ctx_T *tlsi_ctx; + + tlsi_ctx = (tlsi_ctx_P) SSL_get_ex_data(ssl, TLSsslidx); + if (tlsi_ctx != NULL) + dane_vrfy_ctx = &(tlsi_ctx->tlsi_dvc); + } +# define DANE_VRFY_RES_IS(r) \ + ((dane_vrfy_ctx != NULL) && dane_vrfy_ctx->dane_vrfy_res == (r)) + if (DANE_VRFY_RES_IS(DANE_VRFY_OK)) + { + s = "TRUSTED"; + r = TLS_AUTH_OK; + } + else if (DANE_VRFY_RES_IS(DANE_VRFY_FAIL)) + { + s = "DANE_FAIL"; + r = TLS_AUTH_FAIL; + } + else +# endif /* if DANE */ switch (verifyok) { case X509_V_OK: @@ -1593,14 +1919,25 @@ tls_get_info(ssl, srv, host, mac, certreq) s1 = macget(mac, macid("{verify}")); s2 = macget(mac, macid("{cipher}")); +# if DANE +# define LOG_DANE_FP \ + ('\0' != dane_vrfy_ctx->dane_vrfy_fp[0] && DANE_VRFY_RES_IS(DANE_VRFY_FAIL)) +# endif /* XXX: maybe cut off ident info? */ sm_syslog(LOG_INFO, NOQID, - "STARTTLS=%s, relay=%.100s, version=%.16s, verify=%.16s, cipher=%.64s, bits=%.6s/%.6s", + "STARTTLS=%s, relay=%.100s, version=%.16s, verify=%.16s, cipher=%.64s, bits=%.6s/%.6s%s%s", who, host == NULL ? "local" : host, vers, s1, s2, /* sm_snprintf() can deal with NULL */ algbits == NULL ? "0" : algbits, - cbits == NULL ? "0" : cbits); + cbits == NULL ? "0" : cbits +# if DANE + , LOG_DANE_FP ? ", pubkey_fp=" : "" + , LOG_DANE_FP ? dane_vrfy_ctx->dane_vrfy_fp : "" +# else + , "", "" +# endif + ); if (LogLevel > 11) { /* @@ -1620,101 +1957,101 @@ tls_get_info(ssl, srv, host, mac, certreq) } return r; } + /* ** ENDTLS -- shutdown secure connection ** ** Parameters: -** ssl -- SSL connection information. -** side -- server/client (for logging). +** pssl -- pointer to TLS session context +** who -- server/client (for logging). ** ** Returns: ** success? (EX_* code) */ int -endtls(ssl, side) - SSL *ssl; - char *side; +endtls(pssl, who) + SSL **pssl; + const char *who; { - int ret = EX_OK; + SSL *ssl; + int ret, r; - if (ssl != NULL) + SM_REQUIRE(pssl != NULL); + ret = EX_OK; + ssl = *pssl; + if (ssl == NULL) + return ret; + + if ((r = SSL_shutdown(ssl)) < 0) { - int r; - - if ((r = SSL_shutdown(ssl)) < 0) + if (LogLevel > 11) { - if (LogLevel > 11) - { - sm_syslog(LOG_WARNING, NOQID, - "STARTTLS=%s, SSL_shutdown failed: %d", - side, r); - tlslogerr(LOG_WARNING, side); - } - ret = EX_SOFTWARE; + sm_syslog(LOG_WARNING, NOQID, + "STARTTLS=%s, SSL_shutdown failed: %d", + who, r); + tlslogerr(LOG_WARNING, 11, who); } -# if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER > 0x0090602fL - - /* - ** Bug in OpenSSL (at least up to 0.9.6b): - ** From: Lutz.Jaenicke@aet.TU-Cottbus.DE - ** Message-ID: <20010723152244.A13122@serv01.aet.tu-cottbus.de> - ** To: openssl-users@openssl.org - ** Subject: Re: SSL_shutdown() woes (fwd) - ** - ** The side sending the shutdown alert first will - ** not care about the answer of the peer but will - ** immediately return with a return value of "0" - ** (ssl/s3_lib.c:ssl3_shutdown()). SSL_get_error will evaluate - ** the value of "0" and as the shutdown alert of the peer was - ** not received (actually, the program did not even wait for - ** the answer), an SSL_ERROR_SYSCALL is flagged, because this - ** is the default rule in case everything else does not apply. - ** - ** For your server the problem is different, because it - ** receives the shutdown first (setting SSL_RECEIVED_SHUTDOWN), - ** then sends its response (SSL_SENT_SHUTDOWN), so for the - ** server the shutdown was successfull. - ** - ** As is by know, you would have to call SSL_shutdown() once - ** and ignore an SSL_ERROR_SYSCALL returned. Then call - ** SSL_shutdown() again to actually get the server's response. - ** - ** In the last discussion, Bodo Moeller concluded that a - ** rewrite of the shutdown code would be necessary, but - ** probably with another API, as the change would not be - ** compatible to the way it is now. Things do not become - ** easier as other programs do not follow the shutdown - ** guidelines anyway, so that a lot error conditions and - ** compitibility issues would have to be caught. - ** - ** For now the recommondation is to ignore the error message. - */ - - else if (r == 0) - { - if (LogLevel > 15) - { - sm_syslog(LOG_WARNING, NOQID, - "STARTTLS=%s, SSL_shutdown not done", - side); - tlslogerr(LOG_WARNING, side); - } - ret = EX_SOFTWARE; - } -# endif /* !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER > 0x0090602fL */ - SSL_free(ssl); - ssl = NULL; + ret = EX_SOFTWARE; } + + /* + ** Bug in OpenSSL (at least up to 0.9.6b): + ** From: Lutz.Jaenicke@aet.TU-Cottbus.DE + ** Message-ID: <20010723152244.A13122@serv01.aet.tu-cottbus.de> + ** To: openssl-users@openssl.org + ** Subject: Re: SSL_shutdown() woes (fwd) + ** + ** The side sending the shutdown alert first will + ** not care about the answer of the peer but will + ** immediately return with a return value of "0" + ** (ssl/s3_lib.c:ssl3_shutdown()). SSL_get_error will evaluate + ** the value of "0" and as the shutdown alert of the peer was + ** not received (actually, the program did not even wait for + ** the answer), an SSL_ERROR_SYSCALL is flagged, because this + ** is the default rule in case everything else does not apply. + ** + ** For your server the problem is different, because it + ** receives the shutdown first (setting SSL_RECEIVED_SHUTDOWN), + ** then sends its response (SSL_SENT_SHUTDOWN), so for the + ** server the shutdown was successful. + ** + ** As is by know, you would have to call SSL_shutdown() once + ** and ignore an SSL_ERROR_SYSCALL returned. Then call + ** SSL_shutdown() again to actually get the server's response. + ** + ** In the last discussion, Bodo Moeller concluded that a + ** rewrite of the shutdown code would be necessary, but + ** probably with another API, as the change would not be + ** compatible to the way it is now. Things do not become + ** easier as other programs do not follow the shutdown + ** guidelines anyway, so that a lot error conditions and + ** compitibility issues would have to be caught. + ** + ** For now the recommondation is to ignore the error message. + */ + + else if (r == 0) + { + if (LogLevel > 15) + { + sm_syslog(LOG_WARNING, NOQID, + "STARTTLS=%s, SSL_shutdown not done", + who); + tlslogerr(LOG_WARNING, 15, who); + } + ret = EX_SOFTWARE; + } + SM_SSL_FREE(*pssl); return ret; } -# if !TLS_NO_RSA +# if !TLS_NO_RSA && MTA_RSA_TMP_CB /* ** TMP_RSA_KEY -- return temporary RSA key ** ** Parameters: -** s -- TLS connection structure +** ssl -- TLS session context ** export -- ** keylength -- ** @@ -1722,9 +2059,9 @@ endtls(ssl, side) ** temporary RSA key. */ -# ifndef MAX_RSA_TMP_CNT -# define MAX_RSA_TMP_CNT 1000 /* XXX better value? */ -# endif /* ! MAX_RSA_TMP_CNT */ +# ifndef MAX_RSA_TMP_CNT +# define MAX_RSA_TMP_CNT 1000 /* XXX better value? */ +# endif /* ARGUSED0 */ static RSA * @@ -1733,14 +2070,14 @@ tmp_rsa_key(s, export, keylength) int export; int keylength; { -# if SM_CONF_SHM +# if SM_CONF_SHM extern int ShmId; extern int *PRSATmpCnt; if (ShmId != SM_SHM_NO_ID && rsa_tmp != NULL && ++(*PRSATmpCnt) < MAX_RSA_TMP_CNT) return rsa_tmp; -# endif /* SM_CONF_SHM */ +# endif /* SM_CONF_SHM */ if (rsa_tmp != NULL) RSA_free(rsa_tmp); @@ -1753,32 +2090,33 @@ tmp_rsa_key(s, export, keylength) } else { -# if SM_CONF_SHM -# if 0 +# if SM_CONF_SHM +# if 0 /* ** XXX we can't (yet) share the new key... ** The RSA structure contains pointers hence it can't be ** easily kept in shared memory. It must be transformed - ** into a continous memory region first, then stored, + ** into a continuous memory region first, then stored, ** and later read out again (each time re-transformed). */ if (ShmId != SM_SHM_NO_ID) *PRSATmpCnt = 0; -# endif /* 0 */ -# endif /* SM_CONF_SHM */ +# endif /* 0 */ +# endif /* SM_CONF_SHM */ if (LogLevel > 9) sm_syslog(LOG_ERR, NOQID, "STARTTLS=server, tmp_rsa_key: new temp RSA key"); } return rsa_tmp; } -# endif /* !TLS_NO_RSA */ +# endif /* !TLS_NO_RSA && MTA_RSA_TMP_CB */ + /* ** APPS_SSL_INFO_CB -- info callback for TLS connections ** ** Parameters: -** s -- TLS connection structure +** ssl -- TLS session context ** where -- state in handshake ** ret -- return code of last operation ** @@ -1787,8 +2125,8 @@ tmp_rsa_key(s, export, keylength) */ static void -apps_ssl_info_cb(s, where, ret) - CONST097 SSL *s; +apps_ssl_info_cb(ssl, where, ret) + const SSL *ssl; int where; int ret; { @@ -1817,7 +2155,7 @@ apps_ssl_info_cb(s, where, ret) if (LogLevel > 12) sm_syslog(LOG_NOTICE, NOQID, "STARTTLS: %s:%s", - str, SSL_state_string_long(s)); + str, SSL_state_string_long(ssl)); } else if (bitset(SSL_CB_ALERT, where)) { @@ -1835,23 +2173,24 @@ apps_ssl_info_cb(s, where, ret) if (LogLevel > 7) sm_syslog(LOG_WARNING, NOQID, "STARTTLS: %s:failed in %s", - str, SSL_state_string_long(s)); + str, SSL_state_string_long(ssl)); } else if (ret < 0) { if (LogLevel > 7) sm_syslog(LOG_WARNING, NOQID, "STARTTLS: %s:error in %s", - str, SSL_state_string_long(s)); + str, SSL_state_string_long(ssl)); } } } + /* ** TLS_VERIFY_LOG -- log verify error for TLS certificates ** ** Parameters: ** ok -- verify ok? -** ctx -- x509 context +** ctx -- X509 context ** name -- from where is this called? ** ** Returns: @@ -1878,11 +2217,204 @@ tls_verify_log(ok, ctx, name) return 1; } +/* +** Declaration and access to tlsi_ctx in callbacks. +** Currently only used in one of them. +*/ + +#define SM_DECTLSI \ + tlsi_ctx_T *tlsi_ctx; \ + SSL *ssl +#define SM_GETTLSI \ + do { \ + tlsi_ctx = NULL; \ + if (TLSsslidx >= 0) \ + { \ + ssl = (SSL *) X509_STORE_CTX_get_ex_data(ctx, \ + SSL_get_ex_data_X509_STORE_CTX_idx()); \ + if (ssl != NULL) \ + tlsi_ctx = (tlsi_ctx_P) SSL_get_ex_data(ssl, TLSsslidx); \ + } \ + } \ + while (0) + + +# if DANE + +/* +** DANE_GET_TLSA -- Retrieve TLSA RR for DANE +** +** Parameters: +** dane -- dane verify context +** +** Returns: +** dane_tlsa if TLSA RR is available +** NULL otherwise +*/ + +dane_tlsa_P +dane_get_tlsa(dane_vrfy_ctx) + dane_vrfy_ctx_P dane_vrfy_ctx; +{ + STAB *s; + dane_tlsa_P dane_tlsa; + + dane_tlsa = NULL; + if (NULL == dane_vrfy_ctx) + return NULL; + if (dane_vrfy_ctx->dane_vrfy_chk == DANE_NEVER || + dane_vrfy_ctx->dane_vrfy_host == NULL) + return NULL; + + GETTLSANOX(dane_vrfy_ctx->dane_vrfy_host, &s, + dane_vrfy_ctx->dane_vrfy_port); + if (NULL == s) + goto notfound; + dane_tlsa = s->s_tlsa; + if (NULL == dane_tlsa) + goto notfound; + if (0 == dane_tlsa->dane_tlsa_n) + goto notfound; + if (tTd(96, 4)) + sm_dprintf("dane_get_tlsa, chk=%d, host=%s, n=%d, stat=entry found\n", + dane_vrfy_ctx->dane_vrfy_chk, + dane_vrfy_ctx->dane_vrfy_host, dane_tlsa->dane_tlsa_n); + return dane_tlsa; + + notfound: + if (tTd(96, 4)) + sm_dprintf("dane_get_tlsa, chk=%d, host=%s, stat=no valid entry found\n", + dane_vrfy_ctx->dane_vrfy_chk, + dane_vrfy_ctx->dane_vrfy_host); + return NULL; +} + +/* +** DANE_VERIFY -- verify callback for TLS certificates +** +** Parameters: +** ctx -- X509 context +** dane_vrfy_ctx -- callback context +** +** Returns: +** DANE_VRFY_{OK,NONE,FAIL} +*/ + +/* NOTE: this only works because the "matching type" is 0, 1, 2 for these! */ +static const char *dane_mdalgs[] = { "", "sha256", "sha512" }; + +static int +dane_verify(ctx, dane_vrfy_ctx) + X509_STORE_CTX *ctx; + dane_vrfy_ctx_P dane_vrfy_ctx; +{ + int r, i, ok, mdalg; + X509 *cert; + dane_tlsa_P dane_tlsa; + char *fp; + + dane_tlsa = dane_get_tlsa(dane_vrfy_ctx); + if (dane_tlsa == NULL) + return DANE_VRFY_NONE; + + dane_vrfy_ctx->dane_vrfy_fp[0] = '\0'; + cert = X509_STORE_CTX_get0_cert(ctx); + if (tTd(96, 8)) + sm_dprintf("dane_verify, cert=%p\n", (void *)cert); + if (cert == NULL) + return DANE_VRFY_FAIL; + + ok = DANE_VRFY_NONE; + fp = NULL; + + /* + ** If the TLSA RRs would be sorted the two loops below could + ** be merged into one and simply change mdalg when it changes + ** in dane_tlsa->dane_tlsa_rr. + */ + + /* use a different order? */ + for (mdalg = 0; mdalg < SM_ARRAY_SIZE(dane_mdalgs); mdalg++) + { + SM_FREE(fp); + r = 0; + for (i = 0; i < dane_tlsa->dane_tlsa_n; i++) + { + char *p; + int alg; + + p = dane_tlsa->dane_tlsa_rr[i]; + + /* ignore bogus/unsupported TLSA RRs */ + alg = dane_tlsa_chk(p, dane_tlsa->dane_tlsa_len[i], + dane_vrfy_ctx->dane_vrfy_host, false); + if (tTd(96, 8)) + sm_dprintf("dane_verify, alg=%d, mdalg=%d\n", + alg, mdalg); + if (alg != mdalg) + continue; + + if (NULL == fp) + { + r = pubkey_fp(cert, dane_mdalgs[mdalg], &fp); + if (NULL == fp) + return DANE_VRFY_FAIL; + /* or continue? */ + } + + /* just for logging */ + if (r > 0 && fp != NULL) + { + (void) data2hex((unsigned char *)fp, r, + (unsigned char *)dane_vrfy_ctx->dane_vrfy_fp, + sizeof(dane_vrfy_ctx->dane_vrfy_fp)); + } + + if (tTd(96, 4)) + sm_dprintf("dane_verify, alg=%d, r=%d, len=%d\n", + alg, r, dane_tlsa->dane_tlsa_len[i]); + if (r != dane_tlsa->dane_tlsa_len[i] - 3) + continue; + ok = DANE_VRFY_FAIL; + + /* + ** Note: Type is NOT checked because only 3-1-x + ** is supported. + */ + + if (memcmp(p + 3, fp, r) == 0) + { + if (tTd(96, 2)) + sm_dprintf("dane_verify, status=match\n"); + if (tTd(96, 8)) + { + unsigned char hex[256]; + + data2hex((unsigned char *)p, + dane_tlsa->dane_tlsa_len[i], + hex, sizeof(hex)); + sm_dprintf("dane_verify, pubkey_fp=%s\n" + , hex); + } + dane_vrfy_ctx->dane_vrfy_res = DANE_VRFY_OK; + SM_FREE(fp); + return DANE_VRFY_OK; + } + } + } + + SM_FREE(fp); + dane_vrfy_ctx->dane_vrfy_res = ok; + return ok; +} +# endif /* DANE */ + /* ** TLS_VERIFY_CB -- verify callback for TLS certificates ** ** Parameters: -** ctx -- x509 context +** ctx -- X509 context +** cb_ctx -- callback context ** ** Returns: ** accept connection? @@ -1890,36 +2422,54 @@ tls_verify_log(ok, ctx, name) */ static int -# if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x00907000L -tls_verify_cb(ctx) +tls_verify_cb(ctx, cb_ctx) X509_STORE_CTX *ctx; -# else /* !defined() || OPENSSL_VERSION_NUMBER < 0x00907000L */ -tls_verify_cb(ctx, unused) - X509_STORE_CTX *ctx; - void *unused; -# endif /* !defined() || OPENSSL_VERSION_NUMBER < 0x00907000L */ + void *cb_ctx; { int ok; +# if DANE + SM_DECTLSI; +# endif /* - ** man SSL_CTX_set_cert_verify_callback(): + ** SSL_CTX_set_cert_verify_callback(3): ** callback should return 1 to indicate verification success ** and 0 to indicate verification failure. */ +# if DANE + SM_GETTLSI; + if (tlsi_ctx != NULL) + { + dane_vrfy_ctx_P dane_vrfy_ctx; + + dane_vrfy_ctx = &(tlsi_ctx->tlsi_dvc); + ok = dane_verify(ctx, dane_vrfy_ctx); + if (tTd(96, 2)) + sm_dprintf("dane_verify=%d, res=%d\n", ok, + dane_vrfy_ctx->dane_vrfy_res); + if (ok != DANE_VRFY_NONE) + return 1; + } +# endif /* DANE */ + ok = X509_verify_cert(ctx); if (ok <= 0) { if (LogLevel > 13) return tls_verify_log(ok, ctx, "TLS"); } + else if (LogLevel > 14) + (void) tls_verify_log(ok, ctx, "TLS"); return 1; } + /* ** TLSLOGERR -- log the errors from the TLS error stack ** ** Parameters: -** level -- syslog level +** priority -- syslog priority +** ll -- loglevel ** who -- server/client (for logging). ** ** Returns: @@ -1927,35 +2477,36 @@ tls_verify_cb(ctx, unused) */ void -tlslogerr(level, who) - int level; +tlslogerr(priority, ll, who) + int priority; + int ll; const char *who; { unsigned long l; int line, flags; - unsigned long es; char *file, *data; char buf[256]; - es = CRYPTO_thread_id(); + if (LogLevel <= ll) + return; while ((l = ERR_get_error_line_data((const char **) &file, &line, (const char **) &data, &flags)) != 0) { - sm_syslog(level, NOQID, - "STARTTLS=%s: %lu:%s:%s:%d:%s", who, es, + sm_syslog(priority, NOQID, + "STARTTLS=%s: %s:%s:%d:%s", who, ERR_error_string(l, buf), file, line, bitset(ERR_TXT_STRING, flags) ? data : ""); } } -# if OPENSSL_VERSION_NUMBER > 0x00907000L /* ** X509_VERIFY_CB -- verify callback ** ** Parameters: -** ctx -- x509 context +** ok -- current result +** ctx -- X509 context ** ** Returns: ** accept connection? @@ -1967,17 +2518,141 @@ x509_verify_cb(ok, ctx) int ok; X509_STORE_CTX *ctx; { - if (ok == 0) + SM_DECTLSI; + + if (ok != 0) + return ok; + + SM_GETTLSI; + if (LogLevel > 13) + tls_verify_log(ok, ctx, "X509"); + if (X509_STORE_CTX_get_error(ctx) == X509_V_ERR_UNABLE_TO_GET_CRL && + !SM_TLSI_IS(tlsi_ctx, TLSI_FL_CRLREQ)) { - if (LogLevel > 13) - tls_verify_log(ok, ctx, "x509"); - if (ctx->error == X509_V_ERR_UNABLE_TO_GET_CRL) - { - ctx->error = 0; - return 1; /* override it */ - } + X509_STORE_CTX_set_error(ctx, 0); + return 1; /* override it */ } return ok; } -# endif /* OPENSSL_VERSION_NUMBER > 0x00907000L */ + +# if !USE_OPENSSL_ENGINE +/* +** TLS_SET_ENGINE -- set up ENGINE if needed +** +** Parameters: +** id -- id for ENGINE +** isprefork -- called before fork()? +** +** Returns: (OpenSSL "semantics", reverse it to allow returning error codes) +** 0: failure +** !=0: ok +*/ + +int +TLS_set_engine(id, isprefork) + const char *id; + bool isprefork; +{ + static bool TLSEngineInitialized = false; + ENGINE *e; + char enginepath[MAXPATHLEN]; + + /* + ** Todo: put error for logging into a string and log it in error: + */ + + if (LogLevel > 13) + sm_syslog(LOG_DEBUG, NOQID, + "engine=%s, path=%s, ispre=%d, pre=%d, initialized=%d", + id, SSLEnginePath, isprefork, SSLEngineprefork, + TLSEngineInitialized); + if (TLSEngineInitialized) + return 1; + if (id == NULL || *id == '\0') + return 1; + + /* is this the "right time" to initialize the engine? */ + if (isprefork != SSLEngineprefork) + return 1; + + e = NULL; + ENGINE_load_builtin_engines(); + + if (SSLEnginePath != NULL && *SSLEnginePath != '\0') + { + if ((e = ENGINE_by_id("dynamic")) == NULL) + { + if (LogLevel > 1) + sm_syslog(LOG_ERR, NOQID, + "engine=%s, by_id=failed", "dynamic"); + goto error; + } + (void) sm_snprintf(enginepath, sizeof(enginepath), + "%s/lib%s.so", SSLEnginePath, id); + + if (!ENGINE_ctrl_cmd_string(e, "SO_PATH", enginepath, 0)) + { + if (LogLevel > 1) + sm_syslog(LOG_ERR, NOQID, + "engine=%s, SO_PATH=%s, status=failed", + id, enginepath); + goto error; + } + + if (!ENGINE_ctrl_cmd_string(e, "ID", id, 0)) + { + if (LogLevel > 1) + sm_syslog(LOG_ERR, NOQID, + "engine=%s, ID=failed", id); + goto error; + } + + if (!ENGINE_ctrl_cmd_string(e, "LOAD", NULL, 0)) + { + if (LogLevel > 1) + sm_syslog(LOG_ERR, NOQID, + "engine=%s, LOAD=failed", id); + goto error; + } + } + else if ((e = ENGINE_by_id(id)) == NULL) + { + if (LogLevel > 1) + sm_syslog(LOG_ERR, NOQID, "engine=%s, by_id=failed", + id); + return 0; + } + + if (!ENGINE_init(e)) + { + if (LogLevel > 1) + sm_syslog(LOG_ERR, NOQID, "engine=%s, init=failed", id); + goto error; + } + if (!ENGINE_set_default(e, ENGINE_METHOD_ALL)) + { + if (LogLevel > 1) + sm_syslog(LOG_ERR, NOQID, + "engine=%s, set_default=failed", id); + goto error; + } +# ifdef ENGINE_CTRL_CHIL_SET_FORKCHECK + if (strcmp(id, "chil") == 0) + ENGINE_ctrl(e, ENGINE_CTRL_CHIL_SET_FORKCHECK, 1, 0, 0); +# endif + + /* Free our "structural" reference. */ + ENGINE_free(e); + if (LogLevel > 10) + sm_syslog(LOG_INFO, NOQID, "engine=%s, loaded=ok", id); + TLSEngineInitialized = true; + return 1; + + error: + tlslogerr(LOG_WARNING, 7, "init"); + if (e != NULL) + ENGINE_free(e); + return 0; +} +# endif /* !USE_OPENSSL_ENGINE */ #endif /* STARTTLS */ diff --git a/src/tls.h b/src/tls.h new file mode 100644 index 000000000000..0e03b81933a9 --- /dev/null +++ b/src/tls.h @@ -0,0 +1,237 @@ +/* + * Copyright (c) 2015 Proofpoint, 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. + */ + + +#ifndef _TLS_H +# define _TLS_H 1 + + +#if STARTTLS +# include +# if !TLS_NO_RSA +# if _FFR_FIPSMODE +# define RSA_KEYLENGTH 1024 +# else +# define RSA_KEYLENGTH 512 +# endif +# endif /* !TLS_NO_RSA */ + +# if OPENSSL_VERSION_NUMBER >= 0x10100000L && OPENSSL_VERSION_NUMBER < 0x20000000L +# define TLS_version_num OpenSSL_version_num +# else +# define TLS_version_num SSLeay +# endif + +#ifdef _DEFINE +# define EXTERN +#else +# define EXTERN extern +#endif + +#if _FFR_TLS_EC && !defined(TLS_EC) +# define TLS_EC _FFR_TLS_EC +#endif + +#if DANE +extern int gettlsa __P((char *, char *, STAB **, unsigned long, unsigned int, unsigned int)); +# define MAX_TLSA_RR 8 + +# define DANE_VRFY_NONE 0 /* no TLSAs */ +# define DANE_VRFY_OK 1 /* TLSA check was ok */ +# define DANE_VRFY_FAIL (-1) /* TLSA check failed */ + +/* return values for dane_tlsa_chk() */ +# define TLSA_BOGUS (-10) +# define TLSA_UNSUPP (-1) +/* note: anything >= 0 is ok and refers to the hash algorithm */ +# define TLSA_IS_KNOWN(r) ((r) >= 0) +# define TLSA_IS_VALID(r) ((r) >= TLSA_UNSUPP) + +struct dane_tlsa_S +{ + time_t dane_tlsa_exp; + int dane_tlsa_n; + int dane_tlsa_dnsrc; + unsigned long dane_tlsa_flags; + unsigned char dane_tlsa_usage[MAX_TLSA_RR]; + unsigned char dane_tlsa_selector[MAX_TLSA_RR]; + unsigned char dane_tlsa_digest[MAX_TLSA_RR]; + void *dane_tlsa_rr[MAX_TLSA_RR]; + int dane_tlsa_len[MAX_TLSA_RR]; + char *dane_tlsa_sni; +}; + +# define TLSAFLNONE 0x00000000 /* currently unused */ +/* Dane Mode */ +# define TLSAFLALWAYS 0x00000001 +# define TLSAFLSECURE 0x00000002 +# define DANEMODE(fl) ((fl) & 0x3) +# define TLSAFLNOEXP 0x00000010 /* do not check expiration */ + +# define TLSAFLADMX 0x00000100 +# define TLSAFLADTLSA 0x00000200 /* currently unused */ + +/* could be used to replace DNSRC */ +# define TLSAFLTEMP 0x00001000 +/* no TLSA? -- _n == 0 */ +# define TLSAFLNOTLSA 0x00002000 /* currently unused */ + +/* +** Do not use this record, and do not look up new TLSA RRs because +** the MX/host lookup was not secure. +** XXX: to determine: interaction with DANE=always +*/ + +# define TLSAFLNOADMX 0x00010000 +# define TLSAFLNOADTLSA 0x00020000 /* TLSA: no AD - for DANE=always? */ + +# define TLSA_SET_FL(dane_tlsa, fl) (dane_tlsa)->dane_tlsa_flags |= (fl) +# define TLSA_CLR_FL(dane_tlsa, fl) (dane_tlsa)->dane_tlsa_flags &= ~(fl) +# define TLSA_IS_FL(dane_tlsa, fl) ((dane_tlsa)->dane_tlsa_flags & (fl)) +# define TLSA_STORE_FL(fl) ((fl) >= TLSAFLTEMP) + +# define GETTLSA(host, pste, port) gettlsa(host, NULL, pste, TLSAFLNONE, 0, port) +# define GETTLSANOX(host, pste, port) gettlsa(host, NULL, pste, TLSAFLNOEXP, 0, port) + +/* values for DANE option and dane_vrfy_chk */ +# define DANE_NEVER TLSAFLNONE +# define DANE_ALWAYS TLSAFLALWAYS /* NOT documented, testing... */ +# define DANE_SECURE TLSAFLSECURE +# define CHK_DANE(dane) ((dane) != DANE_NEVER) + +/* temp fails? others? */ +# define TLSA_RR_TEMPFAIL(dane_tlsa) (((dane_tlsa) != NULL) && (dane_tlsa)->dane_tlsa_dnsrc == TRY_AGAIN) + +#endif /* DANE */ + +/* +** TLS +*/ + +/* what to do in the TLS initialization */ +#define TLS_I_NONE 0x00000000 /* no requirements... */ +#define TLS_I_CERT_EX 0x00000001 /* cert must exist */ +#define TLS_I_CERT_UNR 0x00000002 /* cert must be g/o unreadable */ +#define TLS_I_KEY_EX 0x00000004 /* key must exist */ +#define TLS_I_KEY_UNR 0x00000008 /* key must be g/o unreadable */ +#define TLS_I_CERTP_EX 0x00000010 /* CA cert path must exist */ +#define TLS_I_CERTP_UNR 0x00000020 /* CA cert path must be g/o unreadable */ +#define TLS_I_CERTF_EX 0x00000040 /* CA cert file must exist */ +#define TLS_I_CERTF_UNR 0x00000080 /* CA cert file must be g/o unreadable */ +#define TLS_I_RSA_TMP 0x00000100 /* RSA TMP must be generated */ +#define TLS_I_USE_KEY 0x00000200 /* private key must usable */ +#define TLS_I_USE_CERT 0x00000400 /* certificate must be usable */ +#define TLS_I_VRFY_PATH 0x00000800 /* load verify path must succeed */ +#define TLS_I_VRFY_LOC 0x00001000 /* load verify default must succeed */ +#define TLS_I_CACHE 0x00002000 /* require cache */ +#define TLS_I_TRY_DH 0x00004000 /* try DH certificate */ +#define TLS_I_REQ_DH 0x00008000 /* require DH certificate */ +#define TLS_I_DHPAR_EX 0x00010000 /* require DH parameters */ +#define TLS_I_DHPAR_UNR 0x00020000 /* DH param. must be g/o unreadable */ +#define TLS_I_DH512 0x00040000 /* generate 512bit DH param */ +#define TLS_I_DH1024 0x00080000 /* generate 1024bit DH param */ +#define TLS_I_DH2048 0x00100000 /* generate 2048bit DH param */ +#define TLS_I_NO_VRFY 0x00200000 /* do not require authentication */ +#define TLS_I_KEY_OUNR 0x00400000 /* Key must be other unreadable */ +#define TLS_I_CRLF_EX 0x00800000 /* CRL file must exist */ +#define TLS_I_CRLF_UNR 0x01000000 /* CRL file must be g/o unreadable */ +#define TLS_I_DHFIXED 0x02000000 /* use fixed DH param */ + +/* require server cert */ +#define TLS_I_SRV_CERT (TLS_I_CERT_EX | TLS_I_KEY_EX | \ + TLS_I_KEY_UNR | TLS_I_KEY_OUNR | \ + TLS_I_CERTP_EX | TLS_I_CERTF_EX | \ + TLS_I_USE_KEY | TLS_I_USE_CERT | TLS_I_CACHE) + +/* server requirements */ +#define TLS_I_SRV (TLS_I_SRV_CERT | TLS_I_RSA_TMP | TLS_I_VRFY_PATH | \ + TLS_I_VRFY_LOC | TLS_I_TRY_DH | TLS_I_CACHE) + +/* client requirements */ +#define TLS_I_CLT (TLS_I_KEY_UNR | TLS_I_KEY_OUNR) + +#define TLS_AUTH_OK 0 +#define TLS_AUTH_NO 1 +#define TLS_AUTH_FAIL (-1) + +# ifndef TLS_VRFY_PER_CTX +# define TLS_VRFY_PER_CTX 1 +# endif + +#define SM_SSL_FREE(ssl) \ + do { \ + if (ssl != NULL) \ + { \ + SSL_free(ssl); \ + ssl = NULL; \ + } \ + } while (0) + +/* functions */ +extern int endtls __P((SSL **, const char *)); +extern int get_tls_se_options __P((ENVELOPE *, SSL *, tlsi_ctx_T *, bool)); +extern int init_tls_library __P((bool _fipsmode)); +extern bool inittls __P((SSL_CTX **, unsigned long, unsigned long, bool, char *, char *, char *, char *, char *)); +extern bool initclttls __P((bool)); +extern bool initsrvtls __P((bool)); +extern bool load_certkey __P((SSL *, bool, char *, char *)); +/* extern bool load_crlpath __P((SSL_CTX *, bool , char *)); */ +extern void setclttls __P((bool)); +extern int tls_get_info __P((SSL *, bool, char *, MACROS_T *, bool)); +extern void tlslogerr __P((int, int, const char *)); +extern void tls_set_verify __P((SSL_CTX *, SSL *, bool)); +# if DANE +extern int dane_tlsa_chk __P((const char *, int, const char *, bool)); +extern int dane_tlsa_clr __P((dane_tlsa_P)); +extern int dane_tlsa_free __P((dane_tlsa_P)); +# endif + +EXTERN char *CACertPath; /* path to CA certificates (dir. with hashes) */ +EXTERN char *CACertFile; /* file with CA certificate */ +#if _FFR_CLIENTCA +EXTERN char *CltCACertPath; /* path to CA certificates (dir. with hashes) */ +EXTERN char *CltCACertFile; /* file with CA certificate */ +#endif +EXTERN char *CltCertFile; /* file with client certificate */ +EXTERN char *CltKeyFile; /* file with client private key */ +EXTERN char *CipherList; /* list of ciphers */ +EXTERN char *CertFingerprintAlgorithm; /* name of fingerprint alg */ +EXTERN const EVP_MD *EVP_digest; /* digest for cert fp */ +EXTERN char *DHParams; /* file with DH parameters */ +EXTERN char *RandFile; /* source of random data */ +EXTERN char *SrvCertFile; /* file with server certificate */ +EXTERN char *SrvKeyFile; /* file with server private key */ +EXTERN char *CRLFile; /* file CRLs */ +EXTERN char *CRLPath; /* path to CRLs (dir. with hashes) */ +EXTERN unsigned long TLS_Srv_Opts; /* TLS server options */ +EXTERN unsigned long Srv_SSL_Options, Clt_SSL_Options; /* SSL options */ +EXTERN bool TLSFallbacktoClear; + +EXTERN char *SSLEngine; +EXTERN char *SSLEnginePath; +EXTERN bool SSLEngineprefork; + +# if USE_OPENSSL_ENGINE +#define TLS_set_engine(id, prefork) SSL_set_engine(id) +# else +int TLS_set_engine __P((const char *, bool)); +# endif + +extern int set_tls_rd_tmo __P((int)); +extern int data2hex __P((unsigned char *, int, unsigned char *, int)); +# if DANE +extern int pubkey_fp __P((X509 *, const char*, char **)); +extern dane_tlsa_P dane_get_tlsa __P((dane_vrfy_ctx_P)); +# endif + +#else /* STARTTLS */ +# define set_tls_rd_tmo(rd_tmo) 0 +#endif /* STARTTLS */ +#undef EXTERN +#endif /* ! _TLS_H */ diff --git a/src/tlsh.c b/src/tlsh.c new file mode 100644 index 000000000000..4b968268cca0 --- /dev/null +++ b/src/tlsh.c @@ -0,0 +1,263 @@ +/* + * Copyright (c) 2015 Proofpoint, 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. + * + */ + +#include + +SM_RCSID("@(#)$Id: tls.c,v 8.127 2013-11-27 02:51:11 gshapiro Exp $") + +#if STARTTLS +# include + +/* +** DATA2HEX -- create a printable hex string from binary data ("%02X:") +** +** Parameters: +** buf -- data +** len -- length of data +** hex -- output buffer +** hlen -- length of output buffer +** +** Returns: +** <0: errno +** >0: length of data in hex +*/ + +int +data2hex(buf, blen, hex, hlen) + unsigned char *buf; + int blen; + unsigned char *hex; + int hlen; +{ + int r, h; + static const char hexcodes[] = "0123456789ABCDEF"; + + SM_REQUIRE(buf != NULL); + SM_REQUIRE(hex != NULL); + if (blen * 3 + 2 > hlen) + return -ERANGE; + + for (r = 0, h = 0; r < blen && h + 3 < hlen; r++) + { + hex[h++] = hexcodes[(buf[r] & 0xf0) >> 4]; + hex[h++] = hexcodes[(buf[r] & 0x0f)]; + if (r + 1 < blen) + hex[h++] = ':'; + } + if (h >= hlen) + return -ERANGE; + hex[h] = '\0'; + return h; +} + +/* +** TLS_DATA_MD -- calculate MD for data +** +** Parameters: +** buf -- data (in and out!) +** len -- length of data +** md -- digest algorithm +** +** Returns: +** <=0: cert fp calculation failed +** >0: len of fp +** +** Side Effects: +** writes digest to buf +*/ + +static int +tls_data_md(buf, len, md) + unsigned char *buf; + int len; + const EVP_MD *md; +{ + unsigned int md_len; + EVP_MD_CTX *mdctx; + unsigned char md_buf[EVP_MAX_MD_SIZE]; + + SM_REQUIRE(buf != NULL); + SM_REQUIRE(md != NULL); + SM_REQUIRE(len >= EVP_MAX_MD_SIZE); + + mdctx = EVP_MD_CTX_create(); + if (EVP_DigestInit_ex(mdctx, md, NULL) != 1) + return -EINVAL; + if (EVP_DigestUpdate(mdctx, (void *)buf, len) != 1) + return -EINVAL; + if (EVP_DigestFinal_ex(mdctx, md_buf, &md_len) != 1) + return -EINVAL; + EVP_MD_CTX_destroy(mdctx); + + if (md_len > len) + return -ERANGE; + (void) memcpy(buf, md_buf, md_len); + return (int)md_len; +} + +#if DANE + +/* +** PUBKEY_FP -- get public key fingerprint +** +** Parameters: +** cert -- TLS cert +** mdalg -- name of digest algorithm +** fp -- (pointer to) fingerprint buffer +** +** Returns: +** <=0: cert fp calculation failed +** >0: len of fp +*/ + +int +pubkey_fp(cert, mdalg, fp) + X509 *cert; + const char *mdalg; + char **fp; +{ + int len, r; + unsigned char *buf, *end; + const EVP_MD *md; + + SM_ASSERT(cert != NULL); + SM_ASSERT(fp != NULL); + SM_ASSERT(mdalg != NULL); + + len = i2d_X509_PUBKEY(X509_get_X509_PUBKEY(cert), NULL); + + /* what's an acceptable upper limit? */ + if (len <= 0 || len >= 8192) + return -EINVAL; + if (len < EVP_MAX_MD_SIZE) + len = EVP_MAX_MD_SIZE; + end = buf = sm_malloc(len); + if (NULL == buf) + return -ENOMEM; + + if ('\0' == mdalg[0]) + { + r = i2d_X509_PUBKEY(X509_get_X509_PUBKEY(cert), &end); + if (r <= 0 || r != len) + return -EINVAL; + *fp = (char *)buf; + return len; + } + + md = EVP_get_digestbyname(mdalg); + if (NULL == md) + return DANE_VRFY_FAIL; + len = i2d_X509_PUBKEY(X509_get_X509_PUBKEY(cert), &end); + r = tls_data_md(buf, len, md); + if (r < 0) + sm_free(buf); + else + *fp = (char *)buf; + return r; +} + +/* +** DANE_TLSA_CHK -- check whether a TLSA RR is ok to use +** +** Parameters: +** rr -- RR +** len -- length of RR +** host -- name of host for RR (only for logging) +** log -- whether to log problems +** +** Returns: +** TLSA_*, see tls.h +*/ + +int +dane_tlsa_chk(rr, len, host, log) + const char *rr; + int len; + const char *host; + bool log; +{ + int alg; + + if (len < 4) + { + if (log && LogLevel > 8) + sm_syslog(LOG_WARNING, NOQID, + "TLSA=%s, len=%d, status=bogus", + host, len); + return TLSA_BOGUS; + } + SM_ASSERT(rr != NULL); + + alg = (int)rr[2]; + if ((int)rr[0] == 3 && (int)rr[1] == 1 && (alg >= 0 || alg <= 2)) + return alg; + if (log && LogLevel > 9) + sm_syslog(LOG_NOTICE, NOQID, + "TLSA=%s, type=%d-%d-%d:%02x, status=unsupported", + host, (int)rr[0], (int)rr[1], (int)rr[2], + (int)rr[3]); + return TLSA_UNSUPP; +} + +/* +** DANE_TLSA_CLR -- clear data in a dane_tlsa structure (for use) +** +** Parameters: +** dane_tlsa -- dane_tlsa to clear +** +** Returns: +** 1 if NULL +** 0 if ok +*/ + +int +dane_tlsa_clr(dane_tlsa) + dane_tlsa_P dane_tlsa; +{ + int i; + + if (dane_tlsa == NULL) + return 1; + for (i = 0; i < dane_tlsa->dane_tlsa_n; i++) + { + SM_FREE(dane_tlsa->dane_tlsa_rr[i]); + dane_tlsa->dane_tlsa_len[i] = 0; + } + SM_FREE(dane_tlsa->dane_tlsa_sni); + memset(dane_tlsa, '\0', sizeof(*dane_tlsa)); + return 0; + +} + +/* +** DANE_TLSA_FREE -- free a dane_tlsa structure +** +** Parameters: +** dane_tlsa -- dane_tlsa to free +** +** Returns: +** 0 if ok +** 1 if NULL +*/ + +int +dane_tlsa_free(dane_tlsa) + dane_tlsa_P dane_tlsa; +{ + if (dane_tlsa == NULL) + return 1; + dane_tlsa_clr(dane_tlsa); + SM_FREE(dane_tlsa); + return 0; + +} +#endif /* DANE */ + +#endif /* STARTTLS */ diff --git a/src/udb.c b/src/udb.c index b2372b766169..00ee857ffe40 100644 --- a/src/udb.c +++ b/src/udb.c @@ -16,9 +16,9 @@ #if USERDB SM_RCSID("@(#)$Id: udb.c,v 8.166 2013-11-22 20:51:57 ca Exp $ (with USERDB)") -#else /* USERDB */ +#else SM_RCSID("@(#)$Id: udb.c,v 8.166 2013-11-22 20:51:57 ca Exp $ (without USERDB)") -#endif /* USERDB */ +#endif #if USERDB @@ -98,7 +98,7 @@ struct udb_option # if HESIOD static int hes_udb_get __P((DBT *, DBT *)); -# endif /* HESIOD */ +# endif static char *udbmatch __P((char *, char *, SM_RPOOL_T *)); static int _udbx_init __P((ENVELOPE *)); static int _udb_parsespec __P((char *, struct udb_option [], int)); @@ -187,19 +187,23 @@ udbexpand(a, sendq, aliaslevel, e) for (up = UdbEnts; !breakout; up++) { int usersize; +# if NEWDB int userleft; +# endif char userbuf[MEMCHUNKSIZE]; # if HESIOD && HES_GETMAILHOST char pobuf[MAXNAME]; -# endif /* HESIOD && HES_GETMAILHOST */ +# endif # if defined(NEWDB) && DB_VERSION_MAJOR > 1 DBC *dbc = NULL; -# endif /* defined(NEWDB) && DB_VERSION_MAJOR > 1 */ +# endif user = userbuf; userbuf[0] = '\0'; usersize = sizeof(userbuf); +# if NEWDB userleft = sizeof(userbuf) - 1; +# endif /* ** Select action based on entry type. @@ -362,10 +366,10 @@ udbexpand(a, sendq, aliaslevel, e) # if DB_VERSION_MAJOR < 2 i = (*up->udb_dbp->get)(up->udb_dbp, &key, &info, 0); -# else /* DB_VERSION_MAJOR < 2 */ +# else i = errno = (*up->udb_dbp->get)(up->udb_dbp, NULL, &key, &info, 0); -# endif /* DB_VERSION_MAJOR < 2 */ +# endif if (i != 0 || info.size <= 0) break; a->q_owner = sm_rpool_malloc_x(e->e_rpool, @@ -404,7 +408,7 @@ udbexpand(a, sendq, aliaslevel, e) { # if HES_GETMAILHOST struct hes_postoffice *hp; -# endif /* HES_GETMAILHOST */ +# endif if (tTd(28, 2)) sm_dprintf("udbexpand: no match on %s (%d)\n", @@ -649,10 +653,10 @@ udbmatch(user, field, rpool) key.size = keylen; # if DB_VERSION_MAJOR < 2 i = (*up->udb_dbp->get)(up->udb_dbp, &key, &info, 0); -# else /* DB_VERSION_MAJOR < 2 */ +# else i = errno = (*up->udb_dbp->get)(up->udb_dbp, NULL, &key, &info, 0); -# endif /* DB_VERSION_MAJOR < 2 */ +# endif if (i != 0 || info.size <= 0) { if (tTd(28, 2)) @@ -748,10 +752,10 @@ udbmatch(user, field, rpool) key.size = keylen; # if DB_VERSION_MAJOR < 2 i = (*up->udb_dbp->get)(up->udb_dbp, &key, &info, 0); -# else /* DB_VERSION_MAJOR < 2 */ +# else i = errno = (*up->udb_dbp->get)(up->udb_dbp, NULL, &key, &info, 0); -# endif /* DB_VERSION_MAJOR < 2 */ +# endif if (i != 0 || info.size <= 0) { /* nope -- no aliasing for this user */ @@ -906,14 +910,16 @@ _udbx_init(e) # ifdef UDB_DEFAULT_SPEC if (UdbSpec == NULL) UdbSpec = UDB_DEFAULT_SPEC; -# endif /* UDB_DEFAULT_SPEC */ +# endif p = UdbSpec; up = UdbEnts; while (p != NULL) { char *spec; +# if NEWDB int l; +# endif struct udb_option opts[MAXUDBOPTS + 1]; while (*p == ' ' || *p == '\t' || *p == ',') @@ -1019,7 +1025,7 @@ _udbx_init(e) #ifdef DB_OLD_VERSION if (ret == DB_OLD_VERSION) ret = EINVAL; -#endif /* DB_OLD_VERSION */ +#endif (void) up->udb_dbp->close(up->udb_dbp, 0); up->udb_dbp = NULL; } @@ -1086,7 +1092,7 @@ _udbx_init(e) default: # if HESIOD badspec: -# endif /* HESIOD */ +# endif syserr("Unknown UDB spec %s", spec); break; } @@ -1107,11 +1113,10 @@ _udbx_init(e) case UDB_DBFETCH: # if NEWDB - sm_dprintf("FETCH: file %s\n", - up->udb_dbname); -# else /* NEWDB */ + sm_dprintf("FETCH: file %s\n", up->udb_dbname); +# else sm_dprintf("FETCH\n"); -# endif /* NEWDB */ +# endif break; case UDB_FORWARD: @@ -1138,17 +1143,17 @@ _udbx_init(e) ** On temporary failure, back out anything we've already done */ - tempfail: # if NEWDB + tempfail: for (up = UdbEnts; up->udb_type != UDB_EOLIST; up++) { if (up->udb_type == UDB_DBFETCH) { # if DB_VERSION_MAJOR < 2 (*up->udb_dbp->close)(up->udb_dbp); -# else /* DB_VERSION_MAJOR < 2 */ +# else errno = (*up->udb_dbp->close)(up->udb_dbp, 0); -# endif /* DB_VERSION_MAJOR < 2 */ +# endif if (tTd(28, 1)) sm_dprintf("_udbx_init: db->close(%s)\n", up->udb_dbname); @@ -1173,7 +1178,7 @@ _udb_parsespec(udbspec, opt, maxopts) { register char *p; - while (isascii(*spec) && isspace(*spec)) + while (SM_ISSPACE(*spec)) spec++; spec_end = strchr(spec, ':'); if (spec_end != NULL) @@ -1214,9 +1219,9 @@ _udbx_close() { # if DB_VERSION_MAJOR < 2 (*up->udb_dbp->close)(up->udb_dbp); -# else /* DB_VERSION_MAJOR < 2 */ +# else errno = (*up->udb_dbp->close)(up->udb_dbp, 0); -# endif /* DB_VERSION_MAJOR < 2 */ +# endif } if (tTd(28, 1)) sm_dprintf("_udbx_close: db->close(%s)\n", @@ -1254,9 +1259,9 @@ hes_udb_get(key, info) if (HesiodContext == NULL && hesiod_init(&HesiodContext) != 0) return -1; hp = hesiod_resolve(HesiodContext, name, type); -# else /* HESIOD_INIT */ +# else hp = hes_resolve(name, type); -# endif /* HESIOD_INIT */ +# endif *--type = ':'; # ifdef HESIOD_INIT if (hp == NULL) diff --git a/src/usersmtp.c b/src/usersmtp.c index 24d38ee4f945..b4ff5ccbc80a 100644 --- a/src/usersmtp.c +++ b/src/usersmtp.c @@ -25,7 +25,7 @@ static int smtprcptstat __P((ADDRESS *, MAILER *, MCI *, ENVELOPE *)); #if SASL extern void *sm_sasl_malloc __P((unsigned long)); extern void sm_sasl_free __P((void *)); -#endif /* SASL */ +#endif /* ** USERSMTP -- run SMTP protocol from the user end. @@ -72,6 +72,9 @@ smtpinit(m, mci, e, onlyhelo) int state; register char *p; register char *hn; +#if _FFR_EXPAND_HELONAME + char hnbuf[MAXNAME + 1]; +#endif char *enhsc; enhsc = NULL; @@ -92,11 +95,9 @@ smtpinit(m, mci, e, onlyhelo) CurHostName = MyHostName; SmtpNeedIntro = true; state = mci->mci_state; -#if _FFR_ERRCODE e->e_rcode = 0; e->e_renhsc[0] = '\0'; e->e_text = NULL; -#endif /* _FFR_ERRCODE */ switch (state) { case MCIS_MAIL: @@ -156,12 +157,22 @@ smtpinit(m, mci, e, onlyhelo) helo: if (bitnset(M_ESMTP, m->m_flags) || bitnset(M_LMTP, m->m_flags)) mci->mci_flags |= MCIF_ESMTP; - hn = mci->mci_heloname ? mci->mci_heloname : MyHostName; + if (mci->mci_heloname != NULL) + { +#if _FFR_EXPAND_HELONAME + expand(mci->mci_heloname, hnbuf, sizeof(hnbuf), e); + hn = hnbuf; +#else + hn = mci->mci_heloname; +#endif + } + else + hn = MyHostName; tryhelo: #if _FFR_IGNORE_EXT_ON_HELO mci->mci_flags &= ~MCIF_HELO; -#endif /* _FFR_IGNORE_EXT_ON_HELO */ +#endif if (bitnset(M_LMTP, m->m_flags)) { smtpmessage("LHLO %s", m, mci, hn); @@ -179,7 +190,7 @@ smtpinit(m, mci, e, onlyhelo) SmtpPhase = mci->mci_phase = "client HELO"; #if _FFR_IGNORE_EXT_ON_HELO mci->mci_flags |= MCIF_HELO; -#endif /* _FFR_IGNORE_EXT_ON_HELO */ +#endif } sm_setproctitle(true, e, "%s %s: %s", qid_printname(e), CurHostName, mci->mci_phase); @@ -413,14 +424,14 @@ helo_options(line, firstline, m, mci, e) register char *p; #if _FFR_IGNORE_EXT_ON_HELO static bool logged = false; -#endif /* _FFR_IGNORE_EXT_ON_HELO */ +#endif if (firstline) { mci_clr_extensions(mci); #if _FFR_IGNORE_EXT_ON_HELO logged = false; -#endif /* _FFR_IGNORE_EXT_ON_HELO */ +#endif return; } #if _FFR_IGNORE_EXT_ON_HELO @@ -465,10 +476,14 @@ helo_options(line, firstline, m, mci, e) mci->mci_flags |= MCIF_PIPELINED; else if (sm_strcasecmp(line, "verb") == 0) mci->mci_flags |= MCIF_VERB; +#if _FFR_EAI + else if (sm_strcasecmp(line, "smtputf8") == 0) + mci->mci_flags |= MCIF_EAI; +#endif /* _FFR_EAI */ #if STARTTLS else if (sm_strcasecmp(line, "starttls") == 0) mci->mci_flags |= MCIF_TLS; -#endif /* STARTTLS */ +#endif else if (sm_strcasecmp(line, "deliverby") == 0) { mci->mci_flags |= MCIF_DLVR_BY; @@ -625,7 +640,7 @@ getsasldata(line, firstline, m, mci, e) int result; # if SASL < 20000 char *out; -# endif /* SASL < 20000 */ +# endif /* if not a continue we don't care about it */ len = strlen(line); @@ -634,7 +649,7 @@ getsasldata(line, firstline, m, mci, e) !isascii(line[1]) || !isdigit(line[1]) || !isascii(line[2]) || !isdigit(line[2])) { - SM_FREE_CLR(mci->mci_sasl_string); + SM_FREE(mci->mci_sasl_string); return; } @@ -703,7 +718,7 @@ getsasldata(line, firstline, m, mci, e) ** rpool -- resource pool for sai. ** ** Returns: -** EX_OK -- data succesfully read. +** EX_OK -- data successfully read. ** EX_UNAVAILABLE -- no valid filename. ** EX_TEMPFAIL -- temporary failure. */ @@ -736,7 +751,7 @@ readauth(filename, safe, sai, rpool) #if !_FFR_ALLOW_SASLINFO /* ** make sure we don't use a program that is not - ** accesible to the user who specified a different authinfo file. + ** accessible to the user who specified a different authinfo file. ** However, currently we don't pass this info (authinfo file ** specified by user) around, so we just turn off program access. */ @@ -778,7 +793,7 @@ readauth(filename, safe, sai, rpool) #if _FFR_ALLOW_SASLINFO /* ** XXX: make sure we don't read or open files that are not - ** accesible to the user who specified a different authinfo + ** accessible to the user who specified a different authinfo ** file. */ @@ -837,7 +852,7 @@ readauth(filename, safe, sai, rpool) ** sai -- pointer to authinfo (result). ** ** Returns: -** EX_OK -- ruleset was succesfully called, data may not +** EX_OK -- ruleset was successfully called, data may not ** be available, sai must be checked. ** EX_UNAVAILABLE -- ruleset unavailable (or failed). ** EX_TEMPFAIL -- temporary failure (from ruleset). @@ -1125,7 +1140,7 @@ getsimple(context, id, result, len) char *h, *s; # if SASL > 10509 bool addrealm; -# endif /* SASL > 10509 */ +# endif size_t l; SASL_AI_T *sai; char *authid = NULL; @@ -1312,32 +1327,34 @@ getsecret(conn, context, id, psecret) int #if SASL > 10515 safesaslfile(context, file, type) -#else /* SASL > 10515 */ +#else safesaslfile(context, file) -#endif /* SASL > 10515 */ +#endif void *context; # if SASL >= 20000 const char *file; -# else /* SASL >= 20000 */ +# else char *file; -# endif /* SASL >= 20000 */ +# endif #if SASL > 10515 # if SASL >= 20000 sasl_verify_type_t type; -# else /* SASL >= 20000 */ +# else int type; -# endif /* SASL >= 20000 */ -#endif /* SASL > 10515 */ +# endif +#endif { long sff; int r; #if SASL <= 10515 size_t len; -#endif /* SASL <= 10515 */ +#endif char *p; if (file == NULL || *file == '\0') return SASL_OK; + if (tTd(95, 16)) + sm_dprintf("safesaslfile=%s\n", file); sff = SFF_SAFEDIRPATH|SFF_NOWLINK|SFF_NOWWFILES|SFF_ROOTOK; #if SASL <= 10515 if ((p = strrchr(file, '/')) == NULL) @@ -1581,7 +1598,7 @@ attemptauth(m, mci, e, sai) char in64[MAXOUTLEN + 1]; #if NETINET || (NETINET6 && SASL >= 20000) extern SOCKADDR CurHostAddr; -#endif /* NETINET || (NETINET6 && SASL >= 20000) */ +#endif /* no mechanism selected (yet) */ (*sai)[SASL_MECH] = NULL; @@ -1618,7 +1635,7 @@ attemptauth(m, mci, e, sai) ssp.maxbufsize = MAXOUTLEN; # if 0 ssp.security_flags = SASL_SEC_NOPLAINTEXT; -# endif /* 0 */ +# endif saslresult = sasl_setprop(mci->mci_conn, SASL_SEC_PROPS, &ssp); if (saslresult != SASL_OK) return EX_TEMPFAIL; @@ -1647,7 +1664,7 @@ attemptauth(m, mci, e, sai) if (mci->mci_out != NULL && ( # if NETINET6 CurHostAddr.sa.sa_family == AF_INET6 || -# endif /* NETINET6 */ +# endif CurHostAddr.sa.sa_family == AF_INET)) { SOCKADDR_LEN_T addrsize; @@ -1663,7 +1680,7 @@ attemptauth(m, mci, e, sai) case AF_INET6: addrsize = sizeof(struct sockaddr_in6); break; -# endif /* NETINET6 */ +# endif default: break; } @@ -1747,7 +1764,7 @@ attemptauth(m, mci, e, sai) if (saslresult == SASL_NOMECH && LogLevel > 8) { sm_syslog(LOG_NOTICE, e->e_id, - "AUTH=client, available mechanisms do not fulfill requirements"); + "AUTH=client, available mechanisms=%s do not fulfill requirements", mci->mci_saslcap); } return EX_TEMPFAIL; } @@ -1791,7 +1808,7 @@ attemptauth(m, mci, e, sai) } # if SASL < 20000 sm_sasl_free(out); /* XXX only if no rpool is used */ -# endif /* SASL < 20000 */ +# endif /* get the reply */ smtpresult = reply(m, mci, e, TimeOuts.to_auth, getsasldata, NULL, @@ -1858,7 +1875,7 @@ attemptauth(m, mci, e, sai) in64[0] = '\0'; # if SASL < 20000 sm_sasl_free(out); /* XXX only if no rpool is used */ -# endif /* SASL < 20000 */ +# endif smtpmessage("%s", m, mci, in64); smtpresult = reply(m, mci, e, TimeOuts.to_auth, getsasldata, NULL, XS_AUTH); @@ -1939,15 +1956,15 @@ smtpauth(m, mci, e) /* set the context for the callback function to sai */ # if SASL >= 20000 callbacks[CB_PASS_IDX].context = (void *) mci; -# else /* SASL >= 20000 */ +# else callbacks[CB_PASS_IDX].context = (void *) &mci->mci_sai; -# endif /* SASL >= 20000 */ +# endif callbacks[CB_USER_IDX].context = (void *) &mci->mci_sai; callbacks[CB_AUTHNAME_IDX].context = (void *) &mci->mci_sai; callbacks[CB_GETREALM_IDX].context = (void *) &mci->mci_sai; #if 0 callbacks[CB_SAFESASL_IDX].context = (void *) &mci->mci_sai; -#endif /* 0 */ +#endif /* set default value for realm */ if ((mci->mci_sai)[SASL_DEFREALM] == NULL) @@ -2027,6 +2044,19 @@ smtpmailfrom(m, mci, e) return EX_TEMPFAIL; } +#if _FFR_EAI + /* + ** Abort right away if the message needs SMTPUTF8 and the + ** server does not advertise SMTPUTF8. + */ + + if (e->e_smtputf8 && !bitset(MCIF_EAI, mci->mci_flags)) { + usrerrenh("5.6.7", "%s does not support SMTPUTF8", CurHostName); + mci_setstat(mci, EX_NOTSTICKY, "5.6.7", NULL); + return EX_DATAERR; + } +#endif /* _FFR_EAI */ + /* set up appropriate options to include */ if (bitset(MCIF_SIZE, mci->mci_flags) && e->e_msgsize > 0) { @@ -2040,6 +2070,14 @@ smtpmailfrom(m, mci, e) bufp = optbuf; } +#if _FFR_EAI + if (e->e_smtputf8) { + (void) sm_snprintf(bufp, SPACELEFT(optbuf, bufp), + " SMTPUTF8"); + bufp += strlen(bufp); + } +#endif /* _FFR_EAI */ + bodytype = e->e_bodytype; if (bitset(MCIF_8BITMIME, mci->mci_flags)) { @@ -2110,7 +2148,7 @@ smtpmailfrom(m, mci, e) SPACELEFT(optbuf, bufp) > strlen(e->e_auth_param) + 7 #if SASL && (!bitset(SASL_AUTH_AUTH, SASLOpts) || mci->mci_sasl_auth) -#endif /* SASL */ +#endif ) { (void) sm_snprintf(bufp, SPACELEFT(optbuf, bufp), @@ -2461,7 +2499,7 @@ smtprcptstat(to, m, mci, e) } #if PIPELINING mci->mci_okrcpts++; -#endif /* PIPELINING */ +#endif return EX_OK; } else if (r == 550) @@ -2555,8 +2593,6 @@ smtpdata(m, mci, e, ctladdr, xstart) /* pick up any pending RCPT responses for SMTP pipelining */ while (mci->mci_nextaddr != NULL) { - int r; - e->e_to = mci->mci_nextaddr->q_paddr; r = smtprcptstat(mci->mci_nextaddr, m, mci, e); if (r != EX_OK) @@ -2609,7 +2645,7 @@ smtpdata(m, mci, e, ctladdr, xstart) if (mci->mci_okrcpts <= 0) return mci->mci_retryrcpt ? EX_TEMPFAIL : EX_UNAVAILABLE; -#endif /* PIPELINING */ +#endif return EX_UNAVAILABLE; } else if (REPLYTYPE(r) != 3) @@ -2628,14 +2664,14 @@ smtpdata(m, mci, e, ctladdr, xstart) if (mci->mci_okrcpts <= 0) return mci->mci_retryrcpt ? EX_TEMPFAIL : EX_PROTOCOL; -#endif /* PIPELINING */ +#endif return EX_PROTOCOL; } #if PIPELINING if (mci->mci_okrcpts > 0) { -#endif /* PIPELINING */ +#endif /* ** Set timeout around data writes. Make it at least large @@ -2676,7 +2712,7 @@ smtpdata(m, mci, e, ctladdr, xstart) #if PIPELINING } -#endif /* PIPELINING */ +#endif #if _FFR_CATCH_BROKEN_MTAS if (sm_io_getinfo(mci->mci_in, SM_IO_IS_READABLE, NULL) > 0) @@ -2884,7 +2920,7 @@ smtpquit(m, mci, e) #if PIPELINING mci->mci_okrcpts = 0; -#endif /* PIPELINING */ +#endif /* ** Suppress errors here -- we may be processing a different @@ -2961,7 +2997,7 @@ smtprset(m, mci, e) #if PIPELINING mci->mci_okrcpts = 0; -#endif /* PIPELINING */ +#endif /* ** Check if connection is gone, if so @@ -3081,7 +3117,19 @@ reply(m, mci, e, timeout, pfunc, enhstat, rtype) (void) sm_io_flush(mci->mci_out, SM_TIME_DEFAULT); if (tTd(18, 1)) - sm_dprintf("reply\n"); + { + char *what; + + if (SmtpMsgBuffer[0] != '\0') + what = SmtpMsgBuffer; + else if (SmtpPhase != NULL && SmtpPhase[0] != '\0') + what = SmtpPhase; + else if (XS_GREET == rtype) + what = "greeting"; + else + what = "unknown"; + sm_dprintf("reply to %s\n", what); + } /* ** Read the input line, being careful not to hang. @@ -3150,9 +3198,9 @@ reply(m, mci, e, timeout, pfunc, enhstat, rtype) CURHOSTNAME); #ifdef ECONNRESET errno = ECONNRESET; -#else /* ECONNRESET */ +#else errno = EPIPE; -#endif /* ECONNRESET */ +#endif } mci->mci_errno = errno; @@ -3250,14 +3298,15 @@ reply(m, mci, e, timeout, pfunc, enhstat, rtype) firstline = false; continue; } -#if _FFR_ERRCODE + if (REPLYTYPE(r) > 3 && firstline # if _FFR_PROXY - if ((e->e_rcode == 0 || REPLYTYPE(e->e_rcode) < 5) - && REPLYTYPE(r) > 3 && firstline) -# endif -# if _FFR_LOGREPLY - if (REPLYTYPE(r) > 3 && firstline) + && + (e->e_sendmode != SM_PROXY + || (e->e_sendmode == SM_PROXY + && (e->e_rcode == 0 || REPLYTYPE(e->e_rcode) < 5)) + ) # endif + ) { int o = -1; # if PIPELINING @@ -3281,17 +3330,28 @@ reply(m, mci, e, timeout, pfunc, enhstat, rtype) } else o = 4; - e->e_rcode = r; - e->e_text = sm_rpool_strdup_x(e->e_rpool, - bufp + o); + + /* + ** Don't use this for reply= logging + ** if it was for QUIT. + ** (Note: use the debug option to + ** reproduce the original error.) + */ + + if (rtype != XS_QUIT || tTd(87, 101)) + { + e->e_rcode = r; + e->e_text = sm_rpool_strdup_x( + e->e_rpool, bufp + o); + } } if (tTd(87, 2)) { - sm_dprintf("user: offset=%d, bufp=%s, rcode=%d, enhstat=%s, text=%s\n", - o, bufp, r, e->e_renhsc, e->e_text); + sm_dprintf("user: e=%p, offset=%d, bufp=%s, rcode=%d, enhstat=%s, rtype=%d, text=%s\n" + , (void *)e, o, bufp, r, e->e_renhsc + , rtype, e->e_text); } } -#endif /* _FFR_ERRCODE */ firstline = false; diff --git a/src/util.c b/src/util.c index 9775915d6260..1cf6ddd811e7 100644 --- a/src/util.c +++ b/src/util.c @@ -1318,7 +1318,7 @@ sfgets(buf, siz, fp, timeout, during) buf[0] = '\0'; #if XDEBUG checkfd012(during); -#endif /* XDEBUG */ +#endif if (TrafficLogFile != NULL) (void) sm_io_fprintf(TrafficLogFile, SM_TIME_DEFAULT, @@ -1386,6 +1386,7 @@ sfgets(buf, siz, fp, timeout, during) ** buf gets lines from f, with continuation lines (lines ** with leading white space) appended. CRLF's are mapped ** into single newlines. Any trailing NL is stripped. +** Increases LineNumber for each line. */ char * @@ -1752,7 +1753,7 @@ checkfds(where) #if NETINET || NETINET6 # include -#endif /* NETINET || NETINET6 */ +#endif void printopenfds(logit) @@ -1788,14 +1789,14 @@ dumpfd(fd, printclosed, logit) char *hp; #ifdef S_IFSOCK SOCKADDR sa; -#endif /* S_IFSOCK */ +#endif auto SOCKADDR_LEN_T slen; int i; #if STAT64 > 0 struct stat64 st; -#else /* STAT64 > 0 */ +#else struct stat st; -#endif /* STAT64 > 0 */ +#endif char buf[200]; p = buf; @@ -1805,9 +1806,9 @@ dumpfd(fd, printclosed, logit) if ( #if STAT64 > 0 fstat64(fd, &st) -#else /* STAT64 > 0 */ +#else fstat(fd, &st) -#endif /* STAT64 > 0 */ +#endif < 0) { if (errno != EBADF) @@ -1858,12 +1859,12 @@ dumpfd(fd, printclosed, logit) else if (sa.sa.sa_family == AF_INET) (void) sm_snprintf(p, SPACELEFT(buf, p), "%s/%d", hp, ntohs(sa.sin.sin_port)); -# endif /* NETINET */ +# endif # if NETINET6 else if (sa.sa.sa_family == AF_INET6) (void) sm_snprintf(p, SPACELEFT(buf, p), "%s/%d", hp, ntohs(sa.sin6.sin6_port)); -# endif /* NETINET6 */ +# endif else (void) sm_snprintf(p, SPACELEFT(buf, p), "%s", hp); @@ -1887,12 +1888,12 @@ dumpfd(fd, printclosed, logit) else if (sa.sa.sa_family == AF_INET) (void) sm_snprintf(p, SPACELEFT(buf, p), "%s/%d", hp, ntohs(sa.sin.sin_port)); -# endif /* NETINET */ +# endif # if NETINET6 else if (sa.sa.sa_family == AF_INET6) (void) sm_snprintf(p, SPACELEFT(buf, p), "%s/%d", hp, ntohs(sa.sin6.sin6_port)); -# endif /* NETINET6 */ +# endif else (void) sm_snprintf(p, SPACELEFT(buf, p), "%s", hp); @@ -1910,28 +1911,28 @@ dumpfd(fd, printclosed, logit) (void) sm_snprintf(p, SPACELEFT(buf, p), "BLK: "); p += strlen(p); goto defprint; -#endif /* S_IFBLK */ +#endif #if defined(S_IFIFO) && (!defined(S_IFSOCK) || S_IFIFO != S_IFSOCK) case S_IFIFO: (void) sm_snprintf(p, SPACELEFT(buf, p), "FIFO: "); p += strlen(p); goto defprint; -#endif /* defined(S_IFIFO) && (!defined(S_IFSOCK) || S_IFIFO != S_IFSOCK) */ +#endif #ifdef S_IFDIR case S_IFDIR: (void) sm_snprintf(p, SPACELEFT(buf, p), "DIR: "); p += strlen(p); goto defprint; -#endif /* S_IFDIR */ +#endif #ifdef S_IFLNK case S_IFLNK: (void) sm_snprintf(p, SPACELEFT(buf, p), "LNK: "); p += strlen(p); goto defprint; -#endif /* S_IFLNK */ +#endif default: defprint: @@ -2123,7 +2124,7 @@ prog_open(argv, pfd, e) sm_mbdb_terminate(); #if _FFR_MEMSTAT (void) sm_memstat_close(); -#endif /* _FFR_MEMSTAT */ +#endif if (setgid(DefGid) < 0 && geteuid() == 0) { syserr("prog_open: setgid(%ld) failed", (long) DefGid); @@ -2234,7 +2235,7 @@ get_column(line, col, delim, buf, buflen) if (col == 0 && (char) delim == '\0') { - while (*begin != '\0' && isascii(*begin) && isspace(*begin)) + while (*begin != '\0' && SM_ISSPACE(*begin)) begin++; } @@ -2245,7 +2246,7 @@ get_column(line, col, delim, buf, buflen) begin++; if ((char) delim == '\0') { - while (*begin != '\0' && isascii(*begin) && isspace(*begin)) + while (*begin != '\0' && SM_ISSPACE(*begin)) begin++; } } @@ -2414,9 +2415,9 @@ path_is_dir(pathname, createflag) #if HASLSTAT if (lstat(pathname, &statbuf) < 0) -#else /* HASLSTAT */ +#else if (stat(pathname, &statbuf) < 0) -#endif /* HASLSTAT */ +#endif { if (errno != ENOENT || !createflag) return false; @@ -2706,7 +2707,7 @@ proc_list_probe() "proc_list_probe: lost pid %d", (int) ProcListVec[i].proc_pid); ProcListVec[i].proc_pid = NO_PID; - SM_FREE_CLR(ProcListVec[i].proc_task); + SM_FREE(ProcListVec[i].proc_task); if (ProcListVec[i].proc_type == PROC_QUEUE) { @@ -2855,13 +2856,13 @@ count_open_connections(hostaddr) (hostaddr->sin.sin_addr.s_addr == ProcListVec[i].proc_hostaddr.sin.sin_addr.s_addr)) n++; -#endif /* NETINET */ +#endif #if NETINET6 if (hostaddr->sa.sa_family == AF_INET6 && IN6_ARE_ADDR_EQUAL(&(hostaddr->sin6.sin6_addr), &(ProcListVec[i].proc_hostaddr.sin6.sin6_addr))) n++; -#endif /* NETINET6 */ +#endif } return n; } @@ -2920,13 +2921,28 @@ xconnect(inchannel) return 0; } +# if _FFR_XCNCT > 1 + if (pvp != NULL && pvp[0] != NULL && + pvp[0][0] == '2' && pvp[0][1] == '2' && pvp[0][2] == '0') + { + char *hostname; /* my hostname ($j) */ + + hostname = macvalue('j', &BlankEnvelope); + if (tTd(75, 7)) + sm_syslog(LOG_INFO, NOQID, "x-connect=%s", pvp[0]); + message("220-%s %s", hostname != NULL ? hostname : "xconnect", + pvp[1] != NULL ? pvp[1] : "waiting for xconnect"); + sm_io_flush(OutChannel, SM_TIME_DEFAULT); + } +# endif + p = sfgets(inp, sizeof(inp), InChannel, TimeOuts.to_nextcommand, "pre"); if (tTd(75, 6)) sm_syslog(LOG_INFO, NOQID, "x-connect: input=%s", p); if (p == NULL || strncasecmp(p, XCONNECT, XCNNCTLEN) != 0) return -1; p += XCNNCTLEN; - while (isascii(*p) && isspace(*p)) + while (SM_ISSPACE(*p)) p++; /* parameters: IPAddress [Hostname[ M]] */ @@ -2953,15 +2969,13 @@ xconnect(inchannel) addr.sa.sa_family = AF_INET6; memcpy(&RealHostAddr, &addr, sizeof(addr)); } -# endif /* NETINET6 */ +# endif else return -1; /* more parameters? */ if (delim != ' ') return D_XCNCT; - while (*p != '\0' && isascii(*p) && isspace(*p)) - p++; for (b = ++p, i = 0; *p != '\0' && isascii(*p) && (isalnum(*p) || *p == '.' || *p == '-'); @@ -2974,7 +2988,7 @@ xconnect(inchannel) b[MAXNAME] = '\0'; else b[i] = '\0'; - SM_FREE_CLR(RealHostName); + SM_FREE(RealHostName); RealHostName = newstr(b); if (tTd(75, 2)) sm_syslog(LOG_INFO, NOQID, "x-connect: host=%s", b); @@ -2984,7 +2998,7 @@ xconnect(inchannel) if (*p != ' ') return D_XCNCT; - while (*p != '\0' && isascii(*p) && isspace(*p)) + while (*p != '\0' && SM_ISSPACE(*p)) p++; if (tTd(75, 4)) diff --git a/src/version.c b/src/version.c index 7145ce219840..1cb5140b0521 100644 --- a/src/version.c +++ b/src/version.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998-2015 Proofpoint, Inc. and its suppliers. + * Copyright (c) 1998-2016 Proofpoint, Inc. and its suppliers. * All rights reserved. * Copyright (c) 1983 Eric P. Allman. All rights reserved. * Copyright (c) 1988, 1993 @@ -15,4 +15,4 @@ SM_RCSID("@(#)$Id: version.c,v 8.250 2014-01-27 12:55:16 ca Exp $") -char Version[] = "8.15.2"; +char Version[] = "8.16.1"; diff --git a/test/Results b/test/Results index 508427b3708c..b1ad0050a9c2 100644 --- a/test/Results +++ b/test/Results @@ -11,7 +11,7 @@ SunOS 4.1 OK 93.07.19 eric SunOS 4.1.2 OK 93.07.19 eric SunOS 4.1.3 OK 93.09.25 Robert Elz -BSD 4.4 OK 93.07.19 eric (wierd results, but functional) +BSD 4.4 OK 93.07.19 eric (weird results, but functional) BSD 4.3Utah OK 93.07.19 eric FreeBSD 2.1-sta OK 96.04.14 Jaye Mathisen diff --git a/vacation/Makefile b/vacation/Makefile index 68f48c394f8b..b670f863b537 100644 --- a/vacation/Makefile +++ b/vacation/Makefile @@ -8,6 +8,8 @@ all: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ clean: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ +check: FRC + $(SHELL) $(BUILD) $(OPTIONS) $@ install: FRC $(SHELL) $(BUILD) $(OPTIONS) $@ diff --git a/vacation/vacation.0 b/vacation/vacation.0 index 64f98f4b6665..c3138e6b69d2 100644 --- a/vacation/vacation.0 +++ b/vacation/vacation.0 @@ -2,20 +2,20 @@ VACATION(1) VACATION(1) -NNAAMMEE +NAME vacation - E-mail auto-responder -SSYYNNOOPPSSIISS - vvaaccaattiioonn [--aa _a_l_i_a_s] [--CC _c_f_f_i_l_e] [--dd] [--ff _d_a_t_a_b_a_s_e] [--ii] [--II] [--jj] [--ll] - [--mm _m_e_s_s_a_g_e] [--RR _r_e_t_u_r_n_a_d_d_r] [--rr _i_n_t_e_r_v_a_l] [--ss _a_d_d_r_e_s_s] [--tt _t_i_m_e] [--UU] - [--xx] [--zz] _l_o_g_i_n +SYNOPSIS + vacation [-a alias] [-C cffile] [-d] [-f database] [-i] [-I] [-j] [-l] + [-m message] [-R returnaddr] [-r interval] [-s address] [-t time] [-U] + [-x] [-z] login -DDEESSCCRRIIPPTTIIOONN - VVaaccaattiioonn returns a message, _~_/_._v_a_c_a_t_i_o_n_._m_s_g by default, to the sender +DESCRIPTION + Vacation returns a message, ~/.vacation.msg by default, to the sender informing them that you are currently not reading your mail. The mes- - sage is only sent to each sender once per reply interval (see --rr - below). The intended use is in a _._f_o_r_w_a_r_d file. For example, your - _._f_o_r_w_a_r_d file might have: + sage is only sent to each sender once per reply interval (see -r + below). The intended use is in a .forward file. For example, your + .forward file might have: \eric, "|/usr/bin/vacation -a allman eric" @@ -24,90 +24,90 @@ DDEESSCCRRIIPPTTIIOONN Available options: - --aa _a_l_i_a_s - Handle messages for _a_l_i_a_s in the same manner as those received + -a alias + Handle messages for alias in the same manner as those received for the user's login name. - --CC _c_f_p_a_t_h + -C cfpath Specify pathname of the sendmail configuration file. This - option is ignored if --UU is specified. This option defaults to + option is ignored if -U is specified. This option defaults to the standard sendmail configuration file, located at /etc/mail/sendmail.cf on most systems. - --dd Send error/debug messages to stderr instead of syslog. Other- - wise, fatal errors, such as calling vvaaccaattiioonn with incorrect - arguments, or with non-existent _l_o_g_i_ns, are logged in the system + -d Send error/debug messages to stderr instead of syslog. Other- + wise, fatal errors, such as calling vacation with incorrect + arguments, or with non-existent logins, are logged in the system log file, using syslog(8). This should only be used on the com- - mand line, not in your _._f_o_r_w_a_r_d file. + mand line, not in your .forward file. - --ff _f_i_l_e_n_a_m_e - Use _f_i_l_e_n_a_m_e as name of the database instead of _~_/_._v_a_c_a_t_i_o_n_._d_b - or _~_/_._v_a_c_a_t_i_o_n_._{_d_i_r_,_p_a_g_}. Unless the _f_i_l_e_n_a_m_e starts with / it + -f filename + Use filename as name of the database instead of ~/.vacation.db + or ~/.vacation.{dir,pag}. Unless the filename starts with / it is relative to ~. - --ii Initialize the vacation database files. It should be used - before you modify your _._f_o_r_w_a_r_d file. This should only be used - on the command line, not in your _._f_o_r_w_a_r_d file. + -i Initialize the vacation database files. It should be used + before you modify your .forward file. This should only be used + on the command line, not in your .forward file. - --II Same as --ii (for backwards compatibility). This should only be - used on the command line, not in your _._f_o_r_w_a_r_d file. + -I Same as -i (for backwards compatibility). This should only be + used on the command line, not in your .forward file. - --jj Respond to the message regardless of whether the login is listed + -j Respond to the message regardless of whether the login is listed as a recipient for the message. Do not use this flag unless you are sure of the consequences. For example, this will cause to reply to mailing list messages which may result in removing you from the list. - --ll List the content of the vacation database file including the + -l List the content of the vacation database file including the address and the associated time of the last auto-response to that address. This should only be used on the command line, not - in your _._f_o_r_w_a_r_d file. + in your .forward file. - --mm _f_i_l_e_n_a_m_e - Use _f_i_l_e_n_a_m_e as name of the file containing the message to send - instead of _~_/_._v_a_c_a_t_i_o_n_._m_s_g. Unless the _f_i_l_e_n_a_m_e starts with / + -m filename + Use filename as name of the file containing the message to send + instead of ~/.vacation.msg. Unless the filename starts with / it is relative to ~. - --RR _r_e_t_u_r_n_a_d_d_r + -R returnaddr Set the reply envelope sender address - --rr _i_n_t_e_r_v_a_l - Set the reply interval to _i_n_t_e_r_v_a_l days. The default is one + -r interval + Set the reply interval to interval days. The default is one week. An interval of ``0'' or ``infinite'' (actually, any non- - numeric character) will never send more than one reply. The --rr + numeric character) will never send more than one reply. The -r option should only be used when the vacation database is ini- - tialized (see --ii above). + tialized (see -i above). - --ss _a_d_d_r_e_s_s - Use _a_d_d_r_e_s_s instead of the incoming message sender address on - the _F_r_o_m line as the recipient for the vacation message. + -s address + Use address instead of the incoming message sender address on + the From line as the recipient for the vacation message. - --tt _t_i_m_e + -t time Ignored, available only for compatibility with Sun's vacation program. - --UU Do not attempt to lookup _l_o_g_i_n in the password file. The -f and + -U Do not attempt to lookup login in the password file. The -f and -m options must be used to specify the database and message file since there is no home directory for the default settings for these options. - --xx Reads an exclusion list from stdin (one address per line). + -x Reads an exclusion list from stdin (one address per line). Mails coming from an address in this exclusion list won't get a - reply by vvaaccaattiioonn. It is possible to exclude complete domains + reply by vacation. It is possible to exclude complete domains by specifying ``@domain'' as element of the exclusion list. - This should only be used on the command line, not in your _._f_o_r_- - _w_a_r_d file. + This should only be used on the command line, not in your .for- + ward file. - --zz Set the sender of the vacation message to ``<>'' instead of the + -z Set the sender of the vacation message to ``<>'' instead of the user. This probably violates the RFCs since vacation messages are not required by a standards-track RFC to have a null reverse-path. - VVaaccaattiioonn reads the first line from the standard input for a UNIX + Vacation reads the first line from the standard input for a UNIX ``From'' line to determine the sender. Sendmail(8) includes this ``From'' line automatically. - No message will be sent unless _l_o_g_i_n (or an _a_l_i_a_s supplied using the --aa + No message will be sent unless login (or an alias supplied using the -a option) is part of either the ``To:'' or ``Cc:'' headers of the mail. No messages from ``???-REQUEST'', ``???-RELAY'', ``???-OWNER'', ``OWNER-???'', ``Postmaster'', ``UUCP'', ``MAILER'', or ``MAILER-DAE- @@ -115,9 +115,9 @@ DDEESSCCRRIIPPTTIIOONN is a notification sent if a ``Precedence: bulk'' or ``Precedence: junk'' line is included in the mail headers. The people who have sent you messages are maintained as a db(3) or dbm(3) database in the file - _._v_a_c_a_t_i_o_n_._d_b or _._v_a_c_a_t_i_o_n_._{_d_i_r_,_p_a_g_} in your home directory. + .vacation.db or .vacation.{dir,pag} in your home directory. - VVaaccaattiioonn expects a file _._v_a_c_a_t_i_o_n_._m_s_g, in your home directory, contain- + Vacation expects a file .vacation.msg, in your home directory, contain- ing a message to be sent back to each sender. It should be an entire message (including headers). For example, it might contain: @@ -130,7 +130,7 @@ DDEESSCCRRIIPPTTIIOONN please contact Keith Bostic . --eric -FFIILLEESS +FILES ~/.vacation.db default database file for db(3) ~/.vacation.{dir,pag} @@ -138,11 +138,11 @@ FFIILLEESS ~/.vacation.msg default message to send -SSEEEE AALLSSOO +SEE ALSO sendmail(8), syslog(8) -HHIISSTTOORRYY - The vvaaccaattiioonn command appeared in 4.3BSD. +HISTORY + The vacation command appeared in 4.3BSD. diff --git a/vacation/vacation.c b/vacation/vacation.c index 1196464e72d2..72032748d624 100644 --- a/vacation/vacation.c +++ b/vacation/vacation.c @@ -30,7 +30,7 @@ SM_IDSTR(id, "@(#)$Id: vacation.c,v 8.148 2013-11-22 20:52:02 ca Exp $") #include #ifdef EX_OK # undef EX_OK /* unistd.h may have another use for this */ -#endif /* EX_OK */ +#endif #include #include @@ -93,16 +93,16 @@ bool CloseMBDB = false; #if defined(__hpux) || defined(__osf__) # ifndef SM_CONF_SYSLOG_INT # define SM_CONF_SYSLOG_INT 1 -# endif /* SM_CONF_SYSLOG_INT */ +# endif #endif /* defined(__hpux) || defined(__osf__) */ #if SM_CONF_SYSLOG_INT # define SYSLOG_RET_T int # define SYSLOG_RET return 0 -#else /* SM_CONF_SYSLOG_INT */ +#else # define SYSLOG_RET_T void # define SYSLOG_RET -#endif /* SM_CONF_SYSLOG_INT */ +#endif typedef SYSLOG_RET_T SYSLOG_T __P((int, const char *, ...)); SYSLOG_T *msglog = syslog; @@ -178,9 +178,9 @@ main(argc, argv) # ifdef LOG_MAIL openlog("vacation", LOG_PID, LOG_MAIL); -# else /* LOG_MAIL */ +# else openlog("vacation", LOG_PID); -# endif /* LOG_MAIL */ +# endif opterr = 0; initdb = false; @@ -767,7 +767,7 @@ junkmail(from) #if 0 if (quot) return false; /* syntax error... */ -#endif /* 0 */ +#endif /* test prefixes */ for (cur = ignorepre; cur->name != NULL; ++cur) @@ -1041,9 +1041,9 @@ sendmessage(myname, msgfn, sender) #if _FFR_VAC_WAIT4SM # ifdef WAITUNION union wait st; -# else /* WAITUNION */ +# else auto int st; -# endif /* WAITUNION */ +# endif #endif /* _FFR_VAC_WAIT4SM */ (void) sm_io_fprintf(sfp, SM_TIME_DEFAULT, "To: %s\n", From); @@ -1055,7 +1055,7 @@ sendmessage(myname, msgfn, sender) (void) sm_io_close(sfp, SM_TIME_DEFAULT); #if _FFR_VAC_WAIT4SM (void) wait(&st); -#endif /* _FFR_VAC_WAIT4SM */ +#endif } else {